2017-12-07 芯链团队 小明微思考
原文地址:https://mp.weixin.qq.com/s?__biz=MzA4Mzk2MzUzNg==&mid=2651223347&idx=1&sn=a243a8b171709fbcc8cbffda1190218d&chksm=841caeccb36b27da3cd5a36243c0b1846d77bd2d7f5f8d0ccf42f3532f4ac997fb544f909311&mpshare=1&scene=23&srcid=011796NXzw36h2Exc6IV97UW#rd
版权属于原作者。

本文主要是针对有兴趣进行以太坊智能合约开发的技术爱好者,进行开发调试工具使用方面的指导。

 

1.   安装METAMASK

MetaMask 是一款浏览器插件钱包,不需下载安装客户端,只需添加至浏览器扩展程序即可使用,非常方便,并且可以很方便的调试和测试以太坊的智能合约。

1.1   首先安装Google Chrome浏览器

Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

MetaMask是Chrome浏览器上的一种插件,所以必须先安装Chrome浏览器。直接在百度浏览器中搜索,可以直接进行下载。   

1.2   安装Chrome的METAMASK插件

这里先需要提醒下,MetaMask目前必须在Chrome浏览器的在线应用商店进行在线下载和安装,因为网络原因你需要使用VPN才能下载安装。

输入MetaMask官网地址,https://metamask.io/,在官网主页参考下图指引通过Chrome应用商店来安装该插件。

请选择“添加至CHROME”,系统会自动下载和安装。

安装完毕后,在浏览器上会显示该插件的小图标,点击下图中“小狐狸”图标,会出现MetaMask的主操作界面。

首先是提示界面,可以忽略,点击“Accept”,进入下一步,下一步也是声明,需要拉倒低才能点击“Accept”。

然后会看到此界面,请输入账号密码一定不能忘记(也可以导入先去已有的Metamask账号):

在创建账号的时候为了防止账号密码丢失,这里提供的找回的助记词功能,拷贝恢复账号的安全码,一共是12个单词,切记,这一步很重要,一定要把这安全码记录下来方便恢复账号。

然后系统会生成一个以太坊的账号,你可以进行以他操作:

  • 可以很方便的查看钱包地址

  • 将地址转换为二维码

  • 买入以太币

  • 发送以太币

1.3   配置MetaMask

MetaMask默认连接的是以太坊的Main Ethereum Network,为了方便我们测试智能合约,需要切换到Ropsten Test Network。

1.4   在测试网络中获取以太币

在测试网络中获取以太币不需要付费,直接点击“BUY”,进入获取测试网络以太币界面,点击“ROPSTEN TEST FAUCET”,进入挖矿界面,每次最多挖去13个测试网络以太币。

 

 

2.    智能合约发布

2.1   获取HPB智能合约源码

本章节的智能合约发布调试主要以发布在以太坊的HPB智能合约作为测试和调试的对象。

HPB的智能合约源码已提交到etherscan.io,并认证通过,大家可以从以下地址获取:

https://etherscan.io/address/0x38c6A68304cdEfb9BEc48BbFaABA5C5B47818bb2#code

2.2   在线智能合约编译器

通过MetaMask来发布校验代码,需要结合一款Solidity在线编译器,可以很方便的对智能合约的代码进行调试。

请在网页中输入在线Solidity的编辑器地址,直接在网页中打开:https://ethereum.github.io/browser-solidity/

2.3    编译智能合约

把从etherscan.io下载的HPB智能合约源码黏贴到编辑器中。HPB的源码技术爱好者可以自己分析理解下,这里为了后续能在MetaMask中进行调试测试和检查发布结果,这里需要对代码进行校验和编译。

请先在Chrome中登录MetaMask账号,在下图界面上选择“run”按钮,系统会自动把MetaMask中你的ETH账号同步到下图中的“Account”选项中,其他属性不用修改。

注意在下图中,选择智能合约的名称,名称和源码中的名称保持一致:

在Create按钮旁边的输入框输入构造参数,此参数是接受ETH转账地址的账号

例如本文中ETH测试网络中的账号:“0x2F89c15a7e52b00084e01Cc957C656fc53ceAc11”,注意一定要带有双引号。

同时请选择编译版本,和智能合约代码中指定的版本保持一致,同时后发布成功后也需要校验也需要选择和发布时候一致的编译版本。

2.4   发布智能合约

提示:发布智能合约的时候必须指定一个以太坊的账号进行发布。

校验完毕后点“Create”,在线编译器会自动的进行代码校验,如果校验通过会弹出MetaMask对话框。本文是通过创建的账户Account1来提交创建的合约。

2.5   查看智能合约产生的代币

智能合约发布成功后,会自动生成代币,HPB的代币总量是1亿枚。

2.6   查看创建智能合约交易

点击metamask查看最新的一笔发布智能合约的交易,点击跳转到网页显示详情。

通过下图可以找到智能合约的地址,以及ABI字符串,请复制ABI字符串后续校验智能合约的时候需要使用。

提示:注意ABI字符串是通用的截取规范是在下图中的“0029”数字之后。

2.7    校验已发布的智能合约

点击下图中的智能合约地址链接,进入智能合约详情页面。

跳转到此页面后,点击下图中的“Verify And Publish”,进入验证页面。

进入验证页面后,请注意一下几点:

  • Contract Name 务必保持和源码中的Contract Name保持一致。

  • Compiler选择的版本号务必和在MetaMask发布的版本保持一致。、

  • Optimization 请选择Disabled

还是在本页面,找到下图输入项,然后输入本次发布智能合约生成的ABI字符串,点击“Verify And Publish”验证智能合约。

发布过程如果没出现报错提示,会显示下列信息,表示验证通过。

2.8   查看校验通过的智能合约

校验通过后,可以在以太坊测试网络上查看校验通过智能合约详情。

测试网查询地址:https://ropsten.etherscan.io

可以很清晰的看到智能合约的相关属性,输入输出项。

通过METAMASK调试和发布智能合约指南(转载)的更多相关文章

  1. truffle 发布 智能合约

    参考 这篇https://www.codeooze.com/blockchain/ethereum-geth-private-blockchain/ 说的已经很详细了 genesis.json 过时了 ...

  2. c#实战开发:以太坊Geth 命令发布智能合约 (五)

    Token的合约代码我们参考Token-Factory的代码. 打开  https://remix.ethereum.org/#optimize=false&version=soljson-v ...

  3. 使用 Browser-solidity 在 Go-Ethereum1.7.2 上进行简单的智能合约部署

    目录 目录 1.基本概念 1.1.什么是智能合约? 1.2.什么是Solidity? 1.2.1.Solidity的语言特性 1.3.什么是 Browser-solidity? 2.Browser-s ...

  4. eos智能合约开发最佳实践

    安全问题 1.可能的错误 智能合约终止 限制转账限额 限制速率 有效途径来进行bug修复和提升 2.谨慎发布智能合约 对智能合约进行彻底的测试 并在任何新的攻击手法被发现后及时制止 赏金计划和审计合约 ...

  5. 使用remix发布部署 发币 智能合约

    Remix是一个基于浏览器的编译器和IDE,使用户能够使用Solidity语言构建以太坊合约并调试事务. 在上一篇文章已经成功的使用代码讲智能合约编译并且发布部署到了链上,可是在部署 发币的智能合约 ...

  6. 五一劳动节,讲讲NEO智能合约的调试

    之前我们说过NEO智能合约的调试问题,过去了一段时间,有很多东西都发生了比较大的变化.让我们重新再来探讨一下这个话题. 先说日期,2018年4月27日,马上迎来劳动节.   以后可能还会再次谈论这个话 ...

  7. EOS智能合约开发(四):智能合约部署及调试(附编程示例)

    EOS智能合约开发(一):EOS环境搭建和创建节点 EOS智能合约开发(二):EOS创建和管理钱包 EOS智能合约开发(三):EOS创建和管理账号 部署智能合约的示例代码如下: $ cleos set ...

  8. 使用web3+solc编译发布以太坊智能合约

    一.环境安装: 1.安装web3工程:npm install web3 2.安装solc工程:npm install solc二.在node环境中使用 先引用所需环境: var fs = requir ...

  9. java 调用区块链 发布和调用智能合约

    java连接区块链 很简单 ,调用智能合约要麻烦一些. 先说连接 区块链查询数据. 1 maven 项目导入 web3j 的依赖. <dependency> <groupId> ...

随机推荐

  1. 在vi vim中使用正则表达式与 普通perl正则的区别?

    参考这篇文章很好 vim中的正则表达式常用的命令有种, 即搜索和替换 /: 搜索 :s 替换 在vim中的正则表达式和perl编程的正则表达式还是有区别的: 正则表达式中的内容包括: 字面字符... ...

  2. oracle 查看并行sql语句的并行数量和如何开并行

    1.执行sql:select /*+ parallel(a,4) */ * from tf_f_user a where rownum<100000; 2.如何查看该sql语句的并行数量: se ...

  3. 139、TensorFlow Serving 实现模型的部署(二) TextCnn文本分类模型

    昨晚终于实现了Tensorflow模型的部署 使用TensorFlow Serving 1.使用Docker 获取Tensorflow Serving的镜像,Docker在国内的需要将镜像的Repos ...

  4. JavaScript判断 Radio 单选按钮是否为选中状态 并弹出 值信息

    今天在百度前端任务中遇到了一个以前没怎么注意的知识点,所以就准备记下来 <script type="text/javascript"> //判断个函数 以上 5 个Ra ...

  5. vue的组件通讯 父传子 -- 子传父-- 兄弟组件的传值 vue的组件传值

    首先文字简单撸一下 父子传子   -------首先在父组件上绑定一个属性,在子组件里用props接收,可以是数组或者是对象 子传父   ------在父组件升上自定义一个方法,在子组件里通过this ...

  6. fiddler之简单的接口性能测试(replay)

    在针对某一个/某一些接口,发送相同的请求,不考虑参数的变化时,可以使用fiddler进行简单的性能测试.(使用功能为:replay) 一.replay功能调用 (1.Reissue Requests: ...

  7. Windows命令集锦

    1.用于私网的IP地址段: 10.0.0.0/8: 10.0.0.0-10.255.255.255 172.16.0.0/12: 172.16.0.0-172.31.255.255 192.168.0 ...

  8. ContextLoader

    // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler ...

  9. 【SQL系列】深入浅出数据仓库中SQL性能优化之Hive篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SQL系列]深入浅出数据仓库中SQL性能优化之 ...

  10. 安装Git并关联

    下载git 打开git bash 生成key将 key绑定到帐号 输入命令 ssh-keygen -t rsa -C 'LoginName' 根据命令生成的地址找到对应文件复制密钥 打开github登 ...