通过METAMASK调试和发布智能合约指南(转载)
本文主要是针对有兴趣进行以太坊智能合约开发的技术爱好者,进行开发调试工具使用方面的指导。
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调试和发布智能合约指南(转载)的更多相关文章
- truffle 发布 智能合约
参考 这篇https://www.codeooze.com/blockchain/ethereum-geth-private-blockchain/ 说的已经很详细了 genesis.json 过时了 ...
- c#实战开发:以太坊Geth 命令发布智能合约 (五)
Token的合约代码我们参考Token-Factory的代码. 打开 https://remix.ethereum.org/#optimize=false&version=soljson-v ...
- 使用 Browser-solidity 在 Go-Ethereum1.7.2 上进行简单的智能合约部署
目录 目录 1.基本概念 1.1.什么是智能合约? 1.2.什么是Solidity? 1.2.1.Solidity的语言特性 1.3.什么是 Browser-solidity? 2.Browser-s ...
- eos智能合约开发最佳实践
安全问题 1.可能的错误 智能合约终止 限制转账限额 限制速率 有效途径来进行bug修复和提升 2.谨慎发布智能合约 对智能合约进行彻底的测试 并在任何新的攻击手法被发现后及时制止 赏金计划和审计合约 ...
- 使用remix发布部署 发币 智能合约
Remix是一个基于浏览器的编译器和IDE,使用户能够使用Solidity语言构建以太坊合约并调试事务. 在上一篇文章已经成功的使用代码讲智能合约编译并且发布部署到了链上,可是在部署 发币的智能合约 ...
- 五一劳动节,讲讲NEO智能合约的调试
之前我们说过NEO智能合约的调试问题,过去了一段时间,有很多东西都发生了比较大的变化.让我们重新再来探讨一下这个话题. 先说日期,2018年4月27日,马上迎来劳动节. 以后可能还会再次谈论这个话 ...
- EOS智能合约开发(四):智能合约部署及调试(附编程示例)
EOS智能合约开发(一):EOS环境搭建和创建节点 EOS智能合约开发(二):EOS创建和管理钱包 EOS智能合约开发(三):EOS创建和管理账号 部署智能合约的示例代码如下: $ cleos set ...
- 使用web3+solc编译发布以太坊智能合约
一.环境安装: 1.安装web3工程:npm install web3 2.安装solc工程:npm install solc二.在node环境中使用 先引用所需环境: var fs = requir ...
- java 调用区块链 发布和调用智能合约
java连接区块链 很简单 ,调用智能合约要麻烦一些. 先说连接 区块链查询数据. 1 maven 项目导入 web3j 的依赖. <dependency> <groupId> ...
随机推荐
- xml文件中 xmlns xmlns:xsi 等解释
http://bbs.csdn.NET/topics/390751819 maven 的 pom.xml 开头是下面这样的 <project xmlns="http://maven.a ...
- Factory Kit【其他模式】
Factory Kit public class FactoryKit { /** * Factory Kit:它定义了一个包含不可变内容的工厂,并使用独立的构建器和工厂接口来处理对象的创建. */ ...
- 细数EDM营销中存在的两大盲点
国庆节了,祝大家国庆快乐,转眼博客至今已有三年了.下面博主为大家介绍EDM营销中存在的两大盲点,供大家参考. 一是忽略用户友好.用户友好策略是Email营销成功的关键要素,具体包括内容友好策略.方式友 ...
- ES6对象的拓展
属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. const foo = 'bar'; const baz = {foo}; //允许直接写入变量和函数作为 ...
- hdu 4758 (AC自动机)
除了走到哪里,还要加状态表示当前节点和已经匹配的串 #include<iostream> #include<cstdio> #include<string> #in ...
- eslint 修改规则 函数形参不使用报错
函数再定义形参以后未使用就会出现报错的问题,需要设置一项eslint 规则 再.eslintrc.js rules里面添加 "no-unused-vars": "of ...
- 获取win10壁纸
执行命令会将所有壁纸拷贝到桌面上的wallpaper文件夹内 bat xcopy %LOCALAPPDATA%\Packages\Microsoft.Windows.ContentDeliveryMa ...
- vue仿阿里云后台管理(附加阿里巴巴图标使用)
先看下页面截图,在线演示地址http://aliadmin.zengjielin.top 下面有开源的代码 页面分成三大部分头部,头部菜单栏,侧边菜单栏,右侧内容栏. 现在我们担心的是怎么使用侧边栏. ...
- Express中间件body-parser
在http请求种,POST.PUT.PATCH三种请求方法中包含着请求体,也就是所谓的request,在Nodejs原生的http模块中,请求体是要基于流的方式来接受和解析. body-parser是 ...
- CentOS 7.6 RPM 方式安装Oracle19c 后 使用 systemd 的方式设置开机自动启动Oracle数据库
1. 方法简介: 使用systemd 来进行 oracle数据库的启动和关闭操作. 使用的脚本为 lsnrctl和dbstart 2. 修改事项. 需要先修改一下 oracle 的启动脚本配置: vi ...