Windows下以太坊集成开发环境(Remix-IDE)搭建与智能合约
的简单应⽤
前⾯我们介绍了在以太坊平台下开发区块链私有链的过程,以及在私有链下进⾏挖矿的操作,⽽随着区块链技术的发展,区块链技术已不仅限于⽐特币的应⽤,未来将重在着眼于向其他领域的扩展推⼴,以此开启区块链2.0以智能合约为代表的时代。本⽂选⽤remix作为开发应⽤平台,配合geth客户端实现与以太坊⽹络的交互,下⼀篇⽂章则改⽤truffle和ganache搭建开发框架(这是后话)。
本⽂分为remix-ide搭建和智能合约部署应⽤两部分。
⼀、remix-ide搭建
【准备⼯作】
1.安装Node.js。Node提供了JavaScript的运⾏环境,并且包含⼤量扩展模块划分不同功能简化应⽤的开发。
①由以下⽹址下载node.js,并根据指令⼀步⼀步安装到⾃⼰指定的⽂件夹:
②安装结束后,打开运⾏环境,输⼊cmd进⼊DOS环境,指令输⼊:
node --version
即表⽰node安装成功。
可见node已包含npm管理⼯具,我们在这⾥⽤到的是npm服务器下载第三⽅包⾄本地使⽤的功能。
【remix搭建】
做好前期准备后,开始着⼿搭建remix环境。
1.下载remix到本机:
(建⽴单独的⽂件夹,这样下载的⽂件可追溯)进⼊到新⽂件夹下,指令输⼊:
2.下载成功后会在⽂件夹中⽣成多个⽂件夹,其中包括remix-ide⽂件夹,进⼊到该⽂件夹下:
cd remix-ide
接着安装所需⼯具包:
npm install
执⾏启动命令:
npm start
(因为我在搭建环境时这⾥没有遇到过难以解决的问题,所以⼀些细⼩的问题已经记不清了,但总归是可以解决的)
3.该装的装好了,并且启动本地服务器,这时可以尝试打开浏览器:
【我遇到的问题在这⾥】
⼀切都看上去那么美好,别⼈遇到的问题我遇到并且解决了,别⼈没有遇到的问题我遇到并且也解决了,然⽽就是⽆法打开浏览器,始终显⽰连接失败,⽆法打开。在各种琢磨寻解决⽅案近三天后,⽆意中到了应对措施:
输⼊指令:
npm install http-server
利⽤node.js中的http-server开启本地服务,浏览器才能打开。最后的实现效果是这样的:
⼆、智能合约部署与简单应⽤
以上是基于remix浏览器开发环境的搭建过程,接下来就要借助开发平台编写智能合约并部署在私有链上,通过⼀步⼀步操作执⾏对智能合约的运⾏细节有更加深刻的体会。
1.编写智能合约
①输⼊智能合约内容:
②sol⽂件编译
如果编译遇到问题会在页⾯左下⽅显⽰,根据⾃⼰编写的错误点进⾏对应修正即可。
③获取相应参数
编译成功后会有如下显⽰:
注意左下⽅红⾊框⾥的内容,点开弹出如下详情:
点击“BYTECODE”旁边的记事板,便将BYTECODE的内容复制了,然后打开⼀个记事本将内容保存;
点击“ABI”旁边的记事板,同理保存。
以上两个参数在后⾯智能合约的部署中会⽤到。
2.智能合约的部署
智能合约的部署分为两个⽅⾯:geth控制台,remix-ide
【geth控制台】
①在前⾯私有链的搭建中介绍过创世区块的初始化和进⼊geth控制台的操作,如果装有区块信息的.json⽂件没有更改那么⽆需初始化操作,直接进⼊控制台即可:
geth --datadir ./data/00 --networkid xxxxx --port xxxx --rpc --rpcport xxxx --rpccorsdomain "*" console --allow-insecure-unlock
⼀项⼀项解释:
这句明显和之前的进⼊控制台的指令有所不同:
--networkid 还是和之前的⼀样,创世区块.json⽂件⾥的id是什么这⾥就是什么
--port 端⼝号,可以⾃⾏设定,避开固定设备端⼝号即可
--rpcport 本地rpc端⼝号,⽤于与remix浏览器链接,后⾯会提到
--allow-insecure-unlock 这是在后⾯进⾏合约部署时会要求解锁主账户,在进⼊控制台之前设定好允许不安全解锁⽅便后⾯⽤户解锁
②成功进⼊geth控制台
③进⼊控制台后,⾸先建⽴⼀个新账号:
④并对该账号解锁,因为后⾯remix的操作是针对该账号进⾏:
括号⾥第⼀个参数是解锁对象,由于当前只拥有⼀个账号,所以该账号即为基础账号可以直接⽤coinbase代替,如果拥有多个账号想要选择的话可以如下操作:
windows开发平台输⼊指令:eth.accounts 显⽰当前所有账号
输⼊指令:personal.unlockAccount(eth.account[i],"xxxx",1000*60*30) 即解锁第i+1个账号,其密码为xxxx,解锁时间为1000*60*30毫秒(换算⼀下就是30分钟)
【remix-ide】
①选择“environment”为“web3 provider”
②如果上⾯按照⽂中指⽰⼀步步做的话这⾥不会出现连接失败的问题,否则如果在geth没有按照上⾯要求进⼊控制台就会出现下⾯的错误提⽰:
not possible to connect to the web3 provider
(⼀旦出现该提⽰记得重新回头按上述说明操作⼀遍)
③点击web3 provider会出现提⽰框:
注意端⼝号,是不是很眼熟,这个就是前⾯提到的--rpcport,按照这⾥指⽰的端⼝号填写当初进⼊控制台时的参数就不会报错,否则就会出现连接失败的错误提⽰。
④点击OK,如果⼀切顺利就会发现页⾯左侧的相关参数已如geth控制台下的内容⾃动填⼊:
然后点击“Deploy”部署该智能合约helloworld.sol到对应的networkid 为314590的以太坊⽹络上去。
⑤如果按照上⾯geth的操作执⾏了,那么这⾥就会正常显⽰pending,否则还会出现账号未解锁的错误:
pending表⽰该合约待解决。什么意思?意思就是合约还没有经过全⽹认可,还不能被部署。
怎么办?我们知道合约的部署是通过交易的⽅式实现的,所以需要执⾏⼀步挖矿操作,使得合约被全⽹验证。于是我们回到geth控制台下,输⼊指令:
miner.start()
发现geth在挖矿的同时remix也有相应反响:
表⽰挖矿成功,合约验证通过,接下来该部署到私有链上去了。
⑥还记得我们上⾯保存在记事本⾥的两个参数吗?BYTECODE和ABI
geth控制台下输⼊:
code="BYTECODE的内容"
abi=ABI⾥的内容
(code的内容待双引号,abi不带,看仔细哟)
⑦输⼊指令:
act(abi)
w({inbase,data:code,gas:1000000})
⑧合约创建完成,但是还需要挖矿来部署:
miner.start()
⑨尝试调⽤智能合约:
contract.函数名.call(合约中该函数对应的参数内容)
如果顺利的话应该会出现对应的结果,但是我⼀直没成功,始终显⽰:
gas required exceeds allowance xxx
所以如果⼤家看到这篇⽂章有对应的解决⽅案欢迎指导,感激不尽。
由于这⾥我并没有成功实现,只是在Windows环境下将对应步骤进⾏展⽰说明,不太具有说服性,下⼀篇⽂章将使⽤truffle搭配ganache的⽅式重新尝试部署智能合约。(这个成功实现了,不⽤担⼼~)
over,欢迎指正
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论