本文转载自微信公众号《区块链研究实验室》,作者连三丰。转载本文请联系区块链研究实验室公众号。概述本文将简要概述有关区块链技术开发入门的所有知识,在这里您可以学习区块链应用程序开发的基础知识,去中心化的区块链驱动的应用程序(Dapps)。有许多不同的区块链为我们的Dapp提供动力,而最大的是我们所知道的以太坊。为了与以太坊生态系统互动,您需要一个以太坊钱包和一些以太币。Metamask,最受欢迎的以太坊钱包之一。以太坊钱包分为三个部分:以太坊账户-可以发送和接收以太坊的实体公钥-用户可以发送以太坊的地址私钥-使用以太坊钱包和以太坊网络访问你的以太坊要与Dapps交互,假设你想用以太坊换取另一种加密货币,你可以通过去中心化交易所Uniswap来实现。Uniswap由运行在智能合约上的以太坊区块链和区块链上的程序智能合约提供支持。智能合约由三个主要部分组成:用户——使用智能合约的人。代码——使用智能合约时会发生什么。存储-智能合约将更改的对象。Dapps是用许多智能合约编写的,例如:Uniswap是一个由许多智能合约提供支持的Dapp。Dapps类似于网络开发中的后端或服务器端,客户端将连接到以太坊虚拟机上的智能合约,而不是集中式服务器。那么,我们如何为Dapps创建智能合约呢?Solidity简介Solidity是一种用于EVM的高级编程语言,您可以在Solidity中编写智能合约。我们将探索智能合约的一些基本语法和一般结构,然后我们将为我们自己的代币编写一个简单的合约。如果你熟悉另一种编程语言,你会发现一些问题,Boolean-TrueorFalseUint-Integer(NumberdeterminesthesizeofXpower)Address-EthereumaddressString-Text这是你在SolidityBasicDataStructures中会用到的,Arrays-从零开始的项目列表(可以是固定或动态数字)Maps-存储具有键值对的数据结构-定义存储变量的新方法Enums-创建你自己的数据结构SettingsVisibilitySexuality是智能的重要组成部分合约开发,所以你的私有地址不会公开,这些关键字可以应用于变量和函数,public-任何人都可以调用这个函数private-只有合约才能调用这个函数view-这个函数返回数据,不修改数据Pure-该函数不会修改甚至读取合约的数据AccountsPayable-该函数可以接收Ethereum您将使用大量公共和私人资源,这些e,我们现在可以开始写一些代码了。先做一个MediumToken,我们用Pragma关键字声明solidity的版本,然后指定Solidity是编译器,是什么版本。我们来看一个例子:pragmasolidity>=0.4.22<0.6.0;这是开发过程中的重要一步,编写惊人的智能合约只是为了发现编译器不适用于您正在使用的Solidity版本。我们将为Medium创建一个令牌,我们称之为MediumToken。接下来,我们需要实际声明合约。pragmasolidity>=0.4.22<0.6.0;contractMediumToken{}这里只需要添加token的基本结构即可。智能合约需要有一个构造函数,当我们的代码部署到区块链时,它会运行一次。实用性>=0.4.22<0.6.0;contractMediumToken{constructor()public{addressowner=msg.sender;}}这里我们声明地址变量等于msg.sender,这是调用函数的人的地址。在这里,您又回到了构造函数中,我们需要做的另一件事是铸造MediumTokens,设置权力。pragmasolidity>=0.4.22<0.6.0;contractMediumToken{constructor()public{addressowner=msg.sender;balance[owner]=420;}}此时你已经铸造了420个MediumToken,这个数字是你想要的任何数字。构造函数运行后,我们需要创建所有余额的映射。实用性>=0.4.22<0.6.0;contractMediumToken{constructor()public{addressowner=msg.sender;balance[owner]=420;}mapping(address=>uint256)publicbalances;}这是一个公共映射,这意味着任何人都可以看到它并与之交互。接下来,我们需要编写一个允许用户发送他们的MediumToken的函数。pragmasolidity>=0.4.22<0.6.0;contractMediumToken{constructor()public{addressowner=msg.sender;balance[owner]=420;}mapping(address=>uint256)publicbalances;functionsend(uintamount,addressrecipient)public{require(余额[msg.sender]>=amount);require(balances[msg.sender]-amount<=balances[msg.sender]);require(balances[recipient]+amount>=balances[recipient]);balances[msg.sender]-=amount;//Alwayssubtractfirstbalances[recipient]+=amount;//Addamounttorecipient}}我们分解一下,我们的send函数会接受uint中的金额,它也可以接受收件人的地址,而这个功能会公开以便任何人都可以看到它。我们此时做的第一件事是创建一些require语句,这样我们就可以检查发件人的钱包中是否确实有代币数量。另外2个需求语句是安全措施,第一个是保证发送token后发送方的余额小于等于;二是保证收款人的地址大于等于交易前的地址。要求(余额[msg.sender]-金额<=余额[msg.sender]);如上,我们创建了420个MediumTokens,将它们分配给所有者,并创建了将它们发送出去的函数!如果您想再看一遍,这里是完整的代码。pragmasolidity>=0.4.22<0.6.0;contractMediumToken{constructor()public{addressowner=msg.sender;balance[owner]=420;}mapping(address=>uint256)publicbalances;functionsend(uintamount,addressrecipient)public{require(余额[msg.sender]>=amount);require(balances[msg.sender]-amount<=balances[msg.sender]);require(balances[recipient]+amount>=balances[recipient]);balances[msg.sender]-=amount;//Alwayssubtractfirstbalances[recipient]+=amount;//Addamounttorecipient}}一旦你完成了最终的合约,你就可以将它部署到区块链上。
