欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于以太坊的测试链发布一个智能合约

程序员文章站 2024-01-27 14:17:58
...

1,创建账户

  • 使用METAMASK钱包来进行操作,具体的创建过程请自行查阅。创建好的账户如下图所示,账户余额显示为0
  • 详情下面显示对应账户的地址,这个是最关键的信息
  • 首先选择左上角头像旁边的按键,切换网络,此处选择Ropsten测试网络
  • 然后点击存入,向水管智能合约申请以太币进行测试

基于以太坊的测试链发布一个智能合约

  • 选择测试水管这一条目选项,点击获取Ether 

基于以太坊的测试链发布一个智能合约 2,转账

进入如下的页面

  • 首先查看user里面的地址是是否和先前创建的账户一致,如果一致代表没有问题
  • 点击faucet的绿色按键,request 1 ether from faucet,点击一下申请一个比特币

基于以太坊的测试链发布一个智能合约

  • 如果网络状况良好,只需要10多秒以内,就可以看到transactions显示的一串哈希序列的交易信息,理论上只需要点击这个哈希序列就可以看到这笔交易的具体信息,但是由于不可抗力原因,查询网站是访问不了的

基于以太坊的测试链发布一个智能合约

3,查看交易

  • 点开查询网址,输入账户的地址(点击账户地址就可以自动复制),最下面显示的是刚才交易的具体信息,上面以546d757结尾的哈希序列就是交易信息,下一行的以397647结尾的字符串是合约账户的地址,后面是账户地址。表示一笔交易从合约账户转到用户的账户地址。

基于以太坊的测试链发布一个智能合约

  • 这次点击交易的哈希序列,就可以查看更加具体的信息,截屏如下

基于以太坊的测试链发布一个智能合约

相关信息介绍如下

  • Time 区块创建的时间
  • Block 交易信息所处的高度
  • Confirmations确认数 
  • Nonce 防止重放攻击/双花攻击
  • Value 交易的钱数
  • Fee费用
  • Gas limit消耗gas的上限,
  • Gas used用了多少gas
  • gas price指gas的价格
  • Input data相当于微信的转账说明,转账添加input data少见,一般用在智能合约中

4,编写合约

写一个智能合约,实现水管合约的功能

  • 进入Remix Ethereum IDE网站,这是一个智能合约的在线编写运行的网站
  • 整体的界面如下图所示

基于以太坊的测试链发布一个智能合约

  • 首先,在COMPLIER里面选择和程序代码相互匹配的编译器,比如代码写的是编译器版本大于0.4.17,那么我选择的编译器版本是0.4.26
  • 可以勾选Auto compline开启自动编译或者不勾选,手动编译
  • 如果编译成功的界面如上图所示,如果不成功,会显示出错的信息,对应修改代码即可

程序代码如下

pragma solidity ^0.4.17;

contract Faucet{
    function withdraw(uint amount) public{
        require(amount <= 100000000000000000);
        msg.sender.transfer(amount);
    }
    function () public payable{}
}

5,部署合约

  • 参考如下界面
  • 首先切换ENVIROMNMENT为Injected Web3环境下
  • 如果正确无误的情况下,ACCOUNT会显示账户地址
  • 剩余选项选择默认值
  • 点击Deploy进行合约部署

基于以太坊的测试链发布一个智能合约

  • 点击后,需要回到METAMASK钱包对于合约的创建和发布进行确认,确认成功之后,会显示如下界面

基于以太坊的测试链发布一个智能合约

  • 回到remix Ethereum IDE,就可以看到我们发布的合约的地址,点击复制地址,我们需要给合约地址转账

基于以太坊的测试链发布一个智能合约

  • 给合约地址转账,注意,需要将数量填写转账的钱数

基于以太坊的测试链发布一个智能合约

  • 查询相关信息,将智能合约的地址复制、粘贴到搜索框中,显示相关信息如下
  • 可以看到,可以将该地址识别为以太坊 合约,也可以看到先前的转账信息

基于以太坊的测试链发布一个智能合约

6,测试水管合约的功能

  • 输入10000000,点击withdraw,向智能合约发起请求

基于以太坊的测试链发布一个智能合约 

  • 查询合约的交易记录
  • 如下图所展现的样子,合约地址向我们的账户转了一笔钱(微乎其微的一笔钱????????)

基于以太坊的测试链发布一个智能合约

  • 详细的交易信息
  • 补充知识
  • 如果单纯的转账,一般gas used都是21000,提升交易费的目的只是为了加快打包的速度
  • 一般智能合约会存在input data,这一部分也会造成gas的花费

基于以太坊的测试链发布一个智能合约 难点 nonce 可以查看我先前的文章

  • nonce是为了防止双重支付而诞生的,记录从此合约产生的每一笔交易数,这个是唯一的

基于以太坊的测试链发布一个智能合约

基于以太坊的测试链发布一个智能合约 

 

相关标签: 区块链