前言
相信看到这篇文章的筒子们,已经知道怎么在本地搭建一个geth的以太坊测试私有链环境,但我们有时候需要去验证下,如何在一个真实的环境中运行智能合约。查了些资料,终于在本地搭建了个以太坊测试网络ropsten的全节点,并部署了一个测试智能合约。可以参考Medium里的这篇文章Full Stack Hello World Voting Ethereum Dapp Tutorial-Part 2(需翻墙),跟我的稍微有些不同。请注意!本文是基于以太坊golang项目的!
一、环境准备
1、Ethereum的安装
可以参考这篇文章Building Ethereum.
其实就是有个可执行的geth就行了,当然你首先得要有go的运行环境,可以去网上搜下go的安装教程,这里就不赘述了。
2、nodeJS
下载和安装 node,找到对应你系统版本的。安装好以后进入命令行测试npm -v和node -v,测试node是否已经正确安装;
node安装3、安装Truffle Framework
安装truffle,我们可以利用npm工具。打开命令行终端:
npm install -g truffle
二、以太坊测试网络Ropsten的搭建
打开命令行终端,输入:
geth --testnet --syncmode "fast" --rpc --rpcapi db,eth,net,web3,personal --cache=1024 --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain "*" --bootnodes "enode://20c9ad97c081d63397d7b685a412227a40e23c8bdc6688c6f37e97cfbc22d2b4d1db1510d8f61e6a8866ad7f0e17c02b14182d37ea7c3c8b9c2683aeb6b733a1@52.169.14.227:30303,enode://6ce05930c72abc632c58e2e4324f7c7ea478cec0ed4fa2528982cf34483094e9cbc9216e7aa349691242576d552a2a56aaeae426c5303ded677ce455ba1acd9d@13.84.180.240:30303"
这是同步ropsten的区块,不知道为啥,我这边花了一个星期才同步好,看别人明明一天妥妥的可以同步好呀,尴尬 ̄□ ̄||
同步完成后,应该是如下图所示,图中的number应该是接近最新的区块,可查阅https://ropsten.etherscan.io/。
Ropsten测试网络区块同步三、智能合约的安装和部署
1、智能合约的安装
命令行打开一个文件目录,就是你要放智能合约测试代码的地方。执行命令:
npm install -g webpack
truffle unbox webpack
安装好以后,该目录下应该有类似下图的文件目录:
webpack智能合约项目目录打开truffle.js文件,修改如下:
truffle.js文件2、智能合约的部署
a、创建一个测试账户
打开一个新的命令行终端,输入命令:
truffle console
进入truffle控制台,输入命令
web3.eth.accounts
可以看到当前没有任何账户,我们需要创建一个新的测试账户,输入命令:
web3.personal.newAccount('这里输入你的密码')
//执行后你会看到系统给你创建了类似下面的账户
//0xac3cb439751fa6bf0618f2f9ae3ed5cb7b8cf893
web3.eth.getBalance(‘0xac3cb439751fa6bf0618f2f9ae3ed5cb7b8cf893’).toString()
//显示为0,后面会告诉你如何获取这个测试以太币
web3.personal.unlockAccount('0xac3cb439751fa6bf0618f2f9ae3ed5cb7b8cf893','前面你输入的密码',15000)
//true
b、获取ETH
打开火狐浏览器,下载MetaMask插件,网上的安装和使用教程都有,如下图,左上角选择Ropsten Test Net网络,点击BUY,就可以直接索取1eth,很方便的,如果实在嫌麻烦,联系我,我直接转给你。
MetaMaskc、智能合约的编译和部署
再打开一个终端命令行窗口,执行命令:
truffle compile
truffle migrate
如果没有报错,基本就成功的部署在以太坊测试链上了,如果有什么问题可以随时给我留言。
d、智能合约的运行
输入命令:
npm run dev
现在你应该就可以在localhost:8080上看到你的webpack智能合约项目。
注意
对了!智能合约的部署必须要等全部区块同步完毕,而且你的测试账户里必须得有eth!
网友评论