以太坊智能合约开发指南6(命令行客户端geth)

以太坊的命令行客户端挺多,不同语言的实现,有python的pyethapp,有c++的cpp-ethereum,还有我们这里要说的go语言实现的geth。
geth是官方客户端,也是目前最流行的以太坊命令行客户端。还有适合普通用户使用的图形化客户端,Ethereum Wallet 和 Mist。
上一节中我们的智能合约是部署在javascript模拟的区块链节点中。我们现在准备把它部署到真正的以太坊节点上,当然我们是部署在开发环境中,正式环境的部署是需要花费以太币的。

安装go语言环境

官方下载页面 https://golang.org/dl/
官方安装说明 https://golang.org/doc/install
也可以网上搜索下go语言安装,安装完成后测试下

$ go version

正常的话,会返回go的版本号,类似这样

go version go1.9.3 darwin/amd64

安装geth

有很多安装方式,官方安装说明 https://ethereum.github.io/go-ethereum/install
这里使用源码安装方式

git clone https://github.com/ethereum/go-ethereum.git
cd go-ethereum
make geth

编译完成后找到可执行文件 geth (或者 geth.exe windows下),文件在源码目录下 /build/bin/ 。这个文件是可以单独执行的,不需要任何其它文件的依赖,你可以随意将它拷贝到其它目录,或者将它添加到你的PATH环境变量中。

启动geth

geth可以有很多不同的启动方式,可以连接以太坊主网络、以太坊测试网络,或者搭建以太坊私有链,这些启动方式我们以后再谈到,现在我们启动以太坊开发环境。

geth --ipcpath <test-chain-directory>/geth.ipc --datadir <test-chain-directory> --dev console
geth --datadir <data directory> --dev --rpc  --rpccorsdomain "*" console

参数说明
--datadir 数据库和秘钥存储路径
--dev 开发环境,采用权威证明(PoA),开发帐号有预存金额,自动封装交易数据到区块链
--rpc 开启HTTP-RPC服务,默认8545端口
--rpccorsdomain 允许连接到rpc的url匹配模式 *代表任意
console 启动一个交互式的JavaScript环境
``

控制台命令

> web3.eth.accounts
["0xe698356a50e71bade22e1a324d5c815f0631df2c"]
> user1 = web3.eth.accounts[0]
"0xe698356a50e71bade22e1a324d5c815f0631df2c"
> user1_balance = web3.eth.getBalance(user1)
1.15792089237316195423570985008687907853269984665640564039457584007913129639927e+77
> web3.fromWei(user1_balance,'ether')
1.15792089237316195423570985008687907853269984665640564039457584007913129639927e+59

解释下这几个命令:

  • web3.eth.accounts 获取当前节点控制的帐号列表,这里可以看到已经有一个帐号了,这是 --dev参数帮我们创建的帐号。
  • web3.eth.getBalance(user1) 获取帐号余额,我们看到返回了一个很大的数字,77次方的一个值。这也是 --dev参数帮我们给这个帐号预存的余额,方便我们做测试。
  • web3.fromWei(user1_balance,'ether') 把这个余额做单位转换。以太币有一套货币单位,最大的是ether,最小的是wei,1ether = 10^18wei。我们查询余额默认给出的是wei为单位的表示,这里是把单位转换成ether为单位的表示。

这里使用的web3对象,是以太坊开发的一套javascript库,目的是让应用程序能够与以太坊节点进行通信。注意,这里有两层,geth启动了一个以太坊节点,console参数开启了一个javascript的控制台,这个控制台注入了web3.js这个库,以使我们可以通过web3对象与以太坊节点做交互。

web3命令的完整文档 https://github.com/ethereum/wiki/wiki/JavaScript-API
以太币单位说明 http://ethdocs.org/en/latest/ether.html

remix与geth绑定

启动完成geth后,我们需要将我们的remix IDE与geth绑定。remix的安装和使用前面有介绍。
在右侧功能项中 Run -> Environment 选择 Web3 Provider,使用默认的连接地址。


image.png

绑定完成后,现在我们的Account 列表中就是我们刚刚在控制台中查询到的帐号,后面还有很长一个数值,是它的余额。
在remix的命令行终端中输入命令


image.png

这里与我们之前的控制台是一样的。我们看到现在块高(blockNumber)是0。

部署代币合约

现在与我们之前的合约部署是一样的,点击Create就可以了。部署完成后我们再次查询

> web3.eth.blockNumber
1

现在块高已经是1了,就是说我们刚刚的代币合约已经写入区块链了。

在remix下做方法调用

现在我们需要再创建一个帐号用来做测试

> web3.personal.newAccount("123456")
"0xc710711af7f890ecef56bb38bde1eade2e5d0ab8"

注意,这个命令在remix的控制台不能使用,提示personal_newAccount方法不存在,我猜应该是web3的版本问题。所以我是在命令行窗口下进行的。

transfer "0xc710...ab8",2000 这里地址我省略了,实际调用需要完整地址。调用完成后我们在控制台再查询块高,现在是2了。同时我们发现所有蓝色按钮(只读)的方法,是不会增加块高的,只有红色按钮(有写入操作)的方法会增加块高度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容