1. 底层网络描述

底层网络描述

本文描述了已经搭建好的区块链底层网络,后续所有的示例都基于这些网络。

目前,主要有四种网络:基于 PoA 共识算法的私有链、基于 PoW 共识算法的私有链、内存链 Ganache、和 Ganche 的命令行版本 ganache-cli。

这些私有链统一通过开放 RPC 接口的方式对外提供服务。

外部可以基于 JSON-RPC 协议访问这些私有链。

1. 私有链信息

1.1 PoA 私有链

PoA 网络目前有四个节点。两个普通节点,两个 Singer 节点。

  • 节点 Node1:通过 192.168.60.30:8100 提供 RPC 服务。
  • 节点 Node2:通过 192.168.60.30:8101 提供 RPC 服务。
  • 节点 Signer1:通过 192.168.60.30:8102 提供 RPC 服务。
  • 节点 Singer2:通过 192.168.60.30:8103 提供 RPC 服务。

1.2 PoW 私有链

PoW 网络目前有两个节点。两个都是挖矿节点。

  • 节点 Node1:通过 192.168.60.31:8100 提供 RPC 服务。
  • 节点 Node2:通过 192.168.60.31:8101 提供 RPC 服务。

1.3 Ganache

这是一个图形化客户端,在设置选项里面将地址调整为 0.0.0.0,端口设定为 7545,自动挖矿的时间调整为 15 秒一个区块。

  • 节点 Node1:通过 192.168.60.12:7545 提供 RPC 服务。

1.4 Ganache-cli

这是 Ganache 的命令界面,启动时将地址设定为 0.0.0.0,端口设定为 8545。

  • 节点 Node1:通过 192.168.60.12:8545 提供 RPC 服务。
ganache-cli -h 0.0.0.0 -p 8545

2. 本地远程访问网络

2.1 本地通过 geth attach 远程网络

可以通过 geth attach 从本地远程操作网络节点。

[furnace@localhost ~]$ geth attach http://192.168.60.30:8102
WARN [10-09|22:43:55.096] Sanitizing cache to Go's GC limits       provided=1024 updated=613
Welcome to the Geth JavaScript console!

instance: Geth/v1.8.11-stable-dea1ce05/linux-amd64/go1.10.3
coinbase: 0x99fcb46fccf902fb84e40546586542764f6e1214
at block: 252924 (Tue, 09 Oct 2018 22:43:52 EDT)
 modules: eth:1.0 net:1.0 personal:1.0 rpc:1.0 web3:1.0

> eth.accounts
["0x261fe7219b33a3e4aa91d2744825d7e4d4aed5ad", "0x430e67cd68e18ec3073da0c560c94528cae4131f"]
> acc0 = eth.accounts[0]
"0x261fe7219b33a3e4aa91d2744825d7e4d4aed5ad"
> web3.fromWei(web3.eth.getBalance(acc0), "ether")
10000000000.000378
> acc1 = eth.accounts[1]
"0x430e67cd68e18ec3073da0c560c94528cae4131f"
> web3.fromWei(web3.eth.getBalance(acc1), "ether")
10000000000
>

2.2 查询节点的账户信息

通过 geth attach 连接到远程节点之后,可以查看该节点的账户信息,及账户对应的以太币数量。

由于智能合约的运行需要消耗以太币,所以可以用具有以太币的账户部署智能合约。

2.2.1 PoA 网络

[furnace@localhost ~]$ geth attach http://192.168.60.30:8102
> eth.accounts
["0x261fe7219b33a3e4aa91d2744825d7e4d4aed5ad", "0x430e67cd68e18ec3073da0c560c94528cae4131f"]
> eth.coinbase
"0x261fe7219b33a3e4aa91d2744825d7e4d4aed5ad"
> web3.fromWei(web3.eth.getBalance(eth.coinbase), "ether")
10000000000.000378
>

可知,PoA 网络可以使用节点 Singer1(192.168.60.30:8102)中的账户 "0x430e67cd68e18ec3073da0c560c94528cae4131f" 部署智能合约。

2.2.2 PoW 网络

[furnace@localhost ~]$ geth attach http://192.168.60.31:8100
> eth.accounts
["0x99fcb46fccf902fb84e40546586542764f6e1214"]
> eth.coinbase
"0x99fcb46fccf902fb84e40546586542764f6e1214"
> web3.fromWei(web3.eth.getBalance(eth.coinbase), "ether")
150326.25
>

可知,PoW 网络可以使用节点 Node1(192.168.60.31:8100)中的账户 "0x99fcb46fccf902fb84e40546586542764f6e1214" 部署智能合约。

2.2.3 Ganache 网络

[furnace@localhost ~]$ geth attach http://192.168.60.12:7545
> eth.accounts
["0x1d31f7400ee8c6d4079d8dd9687d61bd28356610", "0x8846acfbca6cdb0e6c10ccb536b343361a26fe40", "0xc77653df2163bf145e367aa4613efb6d5a1ae4eb", "0xfa011cf50ee9b13ebba58ef74e1019c0966d1609", "0xc3fbd3c465c9eaf676c71b5046e7336c76281eb8", "0xeef8466d0d258394bee3d9d2fc0daf74e1b4f720", "0x12789569d1df377bb4ce17ba091ffea14bfc72ff", "0xd3d338b855f4421aeee5536773fa341a1c1a9767", "0x2c8a745cc111c40e8b0b0c62703ea4debfe9d251", "0xe24b0d69593193ad002a627a813bb7509b15ab4a"]
>

Ganache 通过 192.168.60.12:7545 提供服务。

需要注意的是,这是模拟以太坊的内存节点,重启后里面的数据会全部重置或丢失。

2.2.4 ganache-cli 网络

[furnace@localhost ~]$ geth attach http://192.168.60.12:8545
> eth.accounts
["0x0eab741eaa2637466fa92a9821720843c5fa904f", "0x33d90f2745cd679c61c0c2d4e947772b2880a9ac", "0x4581d96ed54e1da119fe68305c84573d45bf122c", "0xc50ef1c1135cfe91103d04f4523fd225ffdec1c0", "0xf2e3d1ff8ac8a28eb19d16a5dd4351d923d3bcf1", "0xfef1a4b74bbe3cc6e40778b4fffb8a4850862548", "0x1cacef06016aa79053fa2c9497871a79c3668d66", "0xddb1d44a1b88fbaa8dfcf1945b807712c01aef5e", "0xe6c77dc5f99d1c230854b9f45961f87bc8e32c0c", "0x6b50df8ff657b61ea524b472320acf4491e1a23e"]
>

ganache-cli 通过 192.168.60.12:8545 提供服务。

需要注意的是,这是模拟以太坊的内存节点,重启后里面的数据会全部重置或丢失。

3. 基于 JSON-RPC 访问网络

可通过上述网络提供的 RPC 地址和端口,基于 JSON-RPC 协议进行访问。

这里以访问 PoA 网络的节点 Singer1(192.168.60.30:8102) 为例,访问其它节点只要修改对应的 RPC 地址和端口即可。

3.1 基于 CURL 调用 JSON-RPC

可使用 curl 工具调用 JSON-RPC 接口访问网络,示例如下。

[furnace@localhost wiki]$ curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":1}' 192.168.80.30:8102
{"jsonrpc":"2.0","id":1,"result":"55661"}
[furnace@localhost wiki]$

更详细的示例可参考 JSON-RPC 目录。

3.2 基于 Python 调用 JSON-RPC

可使用 Python 脚本文件调用 JSON-RPC 接口访问网络,示例如下。

文件:python/raw/net_version.py

import requests

# create persistent HTTP connection
session = requests.Session()

# as defined in https://github.com/ethereum/wiki/wiki/JSON-RPC#net_version
method = 'net_version'
params = []
payload= {"jsonrpc":"2.0",
           "method":method,
           "params":params,
           "id":1}
headers = {'Content-type': 'application/json'}

response = session.post('http://192.168.60.30:8102', json=payload, headers=headers)
print('raw json response: {}'.format(response.json()))
print('result: {}'.format(response.json()['result']))

运行结果如下:

# [furnace@localhost wiki]$ python3.6 python/raw/net_version.py
# raw json response: {'jsonrpc': '2.0', 'id': 1, 'result': '55661'}
# result: 55661
# [furnace@localhost wiki]$

Contributor

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

推荐阅读更多精彩内容