区块链:以太坊基础之第一个智能合约

1.什么是以太坊

以太坊是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供去中心化的以太虚拟机(Ethereum Virtual Machine)来处理点对点合约。(来自百度百科)

其实最主要的就是其支持智能合约,这是与比特币最大的不同。比特币是区块链1.0,以太坊则是2.0。其他概念不再赘述。

2.安装钱包MetaMask

2.1.在线安装

打开谷歌浏览器,找到扩展程序,搜索MetaMask,直接安装即可。(需要翻墙)

 

2.2.离线安装

打开链接:https://github.com/MetaMask/metamask-extension/releases

找到chrome的插件,下载压缩包,解压。

 

 

 

 

 打开谷歌,输入chrome://extensions/,进入扩展插件页,打开开发者模式,加载已解压的扩展程序,选择刚刚解压的文件即可

 

 

 2.3.开始使用

安装好插件后,就需要注册我们的账号,这里有一个12个单词的助记词,需要保存好,等同于账户。然后设置密码,一步步来就行了。

注册好之后,就可以直接使用了。

在右上角咱们可以选择网络,默认进入的是主网络。主网络的ETH是有价值的,其他网络的就是测试用的。

 

 

 3.测试前准备

测试前,咱们得拿到一些以太币,方便测试,主网络的是不现实的,得花钱买。

选择测试网络,如Ropsten,点击存入,咱们就可以选择去水管获取测试用的ETH

 

 

 选择从水管获取后,我们就会跳转到水管的页面

 

 

 点击绿色按钮,我们就能每次从水管获取一个ETH,每个账户限制5个。下面的黄色按钮就将我们的ETH贡献给水管。

这里有可能经常出问题,多试几次就可以了。

4.编写简单的智能合约--水管

4.1.代码编写

打开在线编辑器。http://remix.ethereum.org(需要翻墙)

 

 

 进入主页,选择环境,点击Solidity按钮,初始化环境。

点击browser旁边的加号,新建一个,命名为Faucet,编写一个简单的智能合约,如下:

 

 

 代码及注释如下:

///指定编译器版本
pragma solidity ^0.4.26;

///定义一个合约体,类似于Java的Class,类名需要跟文件名一致
contract Faucet {
    ///定义一个公共方法,withDraw
    function withDraw(uint amount) public{
          ///require表示该判断必须为真,才能向下执行
         require(amount <= 1000000000);
          ///msg.sender指定一个调用者地址,transfer发币,单位为wei
        msg.sender.transfer(amount);
    }
      ///function () 意为回退函数,payable意味可支付的
      function () public payable {}
}

这里需要说明的是,回退函数是必须的,不然不能进行转账。

4.2.编辑合约

我们要运行我们的合约,就必须要上链。

首先进行编译,点击第二个按钮,进入编译界面。点击Compile Faucet.sol,编译我们的合约。

 

 出现如下界面,表示编辑完成。

 

 4.3.发布合约

点击第三个按钮,环境选择第二个,这一步会关联我们的账户(测试环境)

 

 账户关联后,这里我们就可以看到我们的余额等,点击Deploy,进行发布。

发布的时候相当于也是一笔交易,需要我们支付燃气费gas。

 

 点击确认,即可发布新合约。此时我们可以在钱包里面看到该次交易的信息。

 

 合约发布成功后,待处理会变为绿色的确认。我们的编辑器也会出现如下界面:

 

 灰色部分的Faucet at 0x........即表示我们的合约地址(等同于一个账户,我们可以给他进行转账)

下面就是我们的方法名,红色的为默认的回退函数。

下面withDraw就是我们刚刚写的方法了:输入金额大小,点击按钮即可向我们的账户进行转账。

当然这个时候是会失败的,因为合约地址上并没有ETH。

4.4.给合约地址转账

复制合约地址,返回我们的钱包,选择发送,给合约转账,输入刚刚复制的合约地址,取一个别名。

 

 我们给他转两个,点击下一步。

 

 点击确认。然后返回钱包,等待转账完成。我们的ETH也少了两个。

 

4.5.测试合约

回到在线编辑器,在withDraw输入10000000000,点击withDraw,即可从合约水管取出ETH到我们的账号。

这里还是需要我们支付一次燃气费的。等待完成之后,我们回到钱包查看。

 

 这里已经多了1ETH了,表明我们编写的合约生效了。

至此,我们就完成了一个简单的智能合约的编写。

posted @ 2020-01-04 15:06  市井俗人  阅读(314)  评论(0编辑  收藏