主页 > imtoken钱包 > 基于以太坊网络的智能合约开发、部署和测试(入门)

基于以太坊网络的智能合约开发、部署和测试(入门)

imtoken钱包 2023-04-02 06:32:32

基本概念:

更多资源信息请关注前两天刚写的文章(关于以太坊的一些学习资源)。 初学者会遇到很多各种各样的概念,网上的一些资料也比较陈旧。 学习它会看起来很乱。 主要把握以下几点就行了。

准备:

启用后,客户端会显示当前的私网:

购买以太坊秒合约_以太坊智能合约代码_以太坊合约地址查询

启动网络并开始挖矿。 因为部署智能合约需要资金和旷工,所以我们搭建了一个单节点的以太坊网络。 该节点也是矿工,需要工作。

购买以太坊秒合约_以太坊智能合约代码_以太坊合约地址查询

挖矿开始后,创世区块和以太币不断产生。 所有数字货币都将自行开采。

购买以太坊秒合约_以太坊合约地址查询_以太坊智能合约代码

可惜不是真的以太坊,不然就贴出来了! o(* ̄︶ ̄*)o.

至此,个人以太坊网络即开发运行环境已经搭建完成购买以太坊秒合约,可以创建多个账户进行后续测试。

智能合约应用示例:

为了开发、部署和测试智能合约(DAPP),我们列出一个简单的应用场景。 开发一个应用程序,可以在我的控制下发行虚拟货币,并可以将货币发送给其他人。 就这么简单。 (当然以太坊平台很强大,这只是万里长征的第一步,类似于HelloWorld)

代码开发和解释:

我们用来开发智能合约的IDE是基于浏览器的Remix,访问这个工具如下图所示:

以太坊智能合约代码_以太坊合约地址查询_购买以太坊秒合约

代码解释如下:

以太坊合约地址查询_购买以太坊秒合约_以太坊智能合约代码

pragma solidity ^0.4.0;
  contract Coin{
    
    // 声明 一个 address 类型 变量   256 bits,  用于 存储启动该智能合约的账户地址。
    address public minter; 
    
    //  声明 mapping 类型 变量    类似于 java map ,用于存储账户的资产信息
    mapping(address => uint) public balances;
     
     // 声明 一个事件 ,客户端可以来监听该事件
     event Sent(address from, address to , uint value);
     
   //构造函数,在合约启动的时候执行一次,因此minter保存的是启动该智能合约的账户地址
    function Coin() public{
         minter = msg.sender;

以太坊智能合约代码_购买以太坊秒合约_以太坊合约地址查询

} //为当前启动合约账号 ,也就是自己发币。每次加20 function go() public{ //如果不是启动合约的账号 则返回,即别人无法给自己发币 if(msg.sender != minter) return; balances[msg.sender] += 20; } //为指定账号发币 function mint(address receiver) public{ //只有自己可以发币 其他账号调用无效 if(msg.sender != minter) return; balances[receiver] += 15; }

以太坊智能合约代码_购买以太坊秒合约_以太坊合约地址查询

//账号之间发送货币 function send(address receiver) public{ uint amount = 15; if(balances[msg.sender]

代码编译:

使用 Remix 编译代码

以太坊智能合约代码_以太坊合约地址查询_购买以太坊秒合约

代码调试和测试:

购买以太坊秒合约_以太坊智能合约代码_以太坊合约地址查询

选择右上角的运行选项卡,模拟参数全部默认(默认会生成一个账户)购买以太坊秒合约,点击创建,模拟部署智能合约代码。 创建成功后,右下角会出现已部署的合约(包括合约地址和合约方法)

购买以太坊秒合约_以太坊智能合约代码_以太坊合约地址查询

自己测试发币:

点击go方法按钮,控制端会显示调用成功

购买以太坊秒合约_以太坊智能合约代码_以太坊合约地址查询

为了验证自己是否给自己发币成功,可以查询balances变量,在balances按钮右侧输入我的账户地址,查询如下图,因为我点了八次(20每次都是硬币),所以我的账户余额是160。

以太坊智能合约代码_购买以太坊秒合约_以太坊合约地址查询

注意这里需要知道如何获取账号。 个人账号其实是有的,如下图: 点击右边的复制按钮,获取账号字符串。 该账户也是部署合约的账户。 当时复制的账户信息只有20个字节,地址类型需要32个字节(因为地址的地址是256bits),那么我们需要完成地址查询,在地址的前端加上24一个0表示最终用于查询的账户地址为0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733c

购买以太坊秒合约_以太坊合约地址查询_以太坊智能合约代码

测试为他人发币:

点击铸币按钮,随便写一个别人的账号,比如0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733b

以太坊合约地址查询_以太坊智能合约代码_购买以太坊秒合约

验证发币结果:

在balances右边输入别人的账号0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733b,点击查询,如下图,发行15个币。

购买以太坊秒合约_以太坊合约地址查询_以太坊智能合约代码

以太坊合约地址查询_以太坊智能合约代码_购买以太坊秒合约

测试发送数字货币:

当前合约部署者(自己)给别人转币,在发送按钮中输入账号0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733b,点击发送按钮,转15个币。

购买以太坊秒合约_以太坊智能合约代码_以太坊合约地址查询

验证货币转移的结果。 在那之前,我有160个硬币,其他人有15个硬币。 转了15个币后,我有145个,别人有30个。如下图。

以太坊合约地址查询_以太坊智能合约代码_购买以太坊秒合约

部署到以太坊平台(搭建的单点开发环境):

打开MIST平台,创建A、B两个模拟账户,其中A账户用于部署智能合约,B账户为他人账户。 用于测试货币发行和转账。打开MIST智能合约界面

以太坊智能合约代码_购买以太坊秒合约_以太坊合约地址查询

点击 DEPLOY NEW CONTRACT 创建一个新的智能合约:

购买以太坊秒合约_以太坊智能合约代码_以太坊合约地址查询

复制代码后,会自动编译并生成合约,如下图,合约名称为Coin:

购买以太坊秒合约_以太坊智能合约代码_以太坊合约地址查询

选择合约,然后在页面底部点击部署,部署时需要输入账户密码:

购买以太坊秒合约_以太坊合约地址查询_以太坊智能合约代码

部署成功后,点击智能合约界面查看:

以太坊智能合约代码_购买以太坊秒合约_以太坊合约地址查询

测试部分没做,和Remix很像。