Ethereum(1)—— 基本介绍
1 環(huán)境安裝
安裝Ethereum 協(xié)議的Go語言的最新實現(xiàn)。
git clone https://github.com/ethereum/go-ethereum.git
make all
cd build/bin
sudo cp * /usr/local/bin/
2 Ethereum組成
Ethereum包含以下幾大模塊。
| 模塊 | 介紹 |
|---|---|
geth |
基于命令行的Ethereum客戶端。使用JSON RPC格式,基于HTTP、WebSocket或者IPC(Inter-process Communications )方式. |
abigen |
源代碼生成工具。將Ethereum 合約轉(zhuǎn)換為Go源碼包,供其它Go模塊調(diào)用. |
bootnode |
bootnode是一個超簡化版的Ethereum客戶端,相比正常的客戶端,它只運行節(jié)點發(fā)現(xiàn)協(xié)議,而不執(zhí)行任何其它更高級的協(xié)議。 |
evm |
開發(fā)環(huán)境下的Ethereum虛擬機(jī)。 |
gethrpctest |
支持RPC測試的一個模塊。 |
rlpdump |
RLP數(shù)據(jù)解析器,在開發(fā)環(huán)境中常用。 |
swarm |
一個分布式存儲平臺以及內(nèi)容分發(fā)服務(wù). |
puppeth |
基于命令行的向?qū)Вo助創(chuàng)建一個新得Ethereum網(wǎng)絡(luò). |
2.1 geth
基于命令行的Ethereum客戶端。使用JSON RPC格式,基于HTTP、WebSocket或者IPC(Inter-process Communications )方式.
這里能查詢geth命令參數(shù)信息
通過命令能夠進(jìn)入JavaScript 交互環(huán)境:
geth attach ipc:/home/testuser0/.ethereum/privatechain/geth.ipc
交互環(huán)境中,可以使用 web3 JavaScript Dapp API 和 the admin API。
2.2 abigen
源代碼生成工具。將Ethereum 合約轉(zhuǎn)換為Go源碼包,供其它Go模塊調(diào)用. 輸入為智能合約,輸出為Go源碼包。
使用示例:
$ abigen --abi token.abi --pkg main --type Token --out token.go
這里可以查詢智能合約與ABI定義。
這里可以查詢在Go環(huán)境中調(diào)用智能合約。
2.3 bootnode
bootnode是一個超簡化版的Ethereum客戶端,相比正常的客戶端,它只運行節(jié)點發(fā)現(xiàn)協(xié)議,而不執(zhí)行任何其它更高級的協(xié)議。
從用途上來講,** bootnode是一個節(jié)點發(fā)現(xiàn)工具 ** 。Ethereum節(jié)點在啟動時需要告之至少一個對等節(jié)點,這樣才能接入整個以太坊網(wǎng)絡(luò),bootnode相當(dāng)于一個第三方的中介,node在啟動時會將自己的信息注冊到bootnode的路由中,并且會從bootnode得到其它節(jié)點的路由信息,一旦有了對等節(jié)點信息后就可以不需要連接bootnode。
注意:公有鏈的節(jié)點硬編碼了一些bootnode節(jié)點地址;在私鏈中該模塊也常常用于引導(dǎo)發(fā)現(xiàn)p2p節(jié)點。
2.4 evm
開發(fā)環(huán)境下的Ethereum虛擬機(jī)。 該模塊可以隔離運行字節(jié)代碼,用于Ethereum字節(jié)代碼(EVM opcodes)調(diào)試。
例如調(diào)試字節(jié)代碼"60ff60ff",可以看到gas消耗和內(nèi)存變化。
testuser0@ubuntu:~/temp/testeth$ evm --code 60ff60ff --debug run
0x
#### TRACE ####
PUSH1 pc=00000000 gas=10000000000 cost=3
PUSH1 pc=00000002 gas=9999999997 cost=3
Stack:
00000000 00000000000000000000000000000000000000000000000000000000000000ff
STOP pc=00000004 gas=9999999994 cost=0
Stack:
00000000 00000000000000000000000000000000000000000000000000000000000000ff
00000001 00000000000000000000000000000000000000000000000000000000000000ff
#### LOGS ####
2.5 gethrpctest
支持RPC測試的一個模塊。
這里可以查詢ethereum RPC API.
2.6 rlpdump
RLP格式二進(jìn)制代碼的解析器。
這里可以查詢RLP格式.
因為通常環(huán)境下RLP數(shù)據(jù)長度都不太長,熟悉RLP格式的可以自行解析。
示例是解析一個RLP格式的交易數(shù)據(jù):
testuser0@ubuntu:~/temp/testeth$ rlpdump --hex f9016c827542843b9aca008344aa209407deced930a6a10ea7bd0b64519287cec8ada9a580b90104a1478ed0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004033323033383138346365346334356163393463353066343838336364336530383433616161653238353933333462626461336630633536613466633031303632000000000000000000000000000000000000000000000000000000000000002e516d5444374b57386f48686f6a554e3147477a3577766366656d415a547072706b6137615357796a4656467876420000000000000000000000000000000000001ba0a03389252c276ac036c8c392cfcc8dd1b26c28eeed4ea970e0a628cf151ccc51a067d49a382372b04b9d5dac3f00769f0e36dc3ebe7c9e1a4206710e7755c007bf
[
"uB",
3b9aca00,
44aa20,
07deced930a6a10ea7bd0b64519287cec8ada9a5,
"",
a1478ed0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004033323033383138346365346334356163393463353066343838336364336530383433616161653238353933333462626461336630633536613466633031303632000000000000000000000000000000000000000000000000000000000000002e516d5444374b57386f48686f6a554e3147477a3577766366656d415a547072706b6137615357796a465646787642000000000000000000000000000000000000,
1b,
a03389252c276ac036c8c392cfcc8dd1b26c28eeed4ea970e0a628cf151ccc51,
67d49a382372b04b9d5dac3f00769f0e36dc3ebe7c9e1a4206710e7755c007bf,
]
2.7 swarm
swarm是一個分布式存儲平臺以及內(nèi)容分發(fā)服務(wù),是一個以太坊Web3棧的一個本土服務(wù)層。swarm的最主要目標(biāo)是為以太坊公共記錄,尤其是Dapp代碼與數(shù)據(jù)以及區(qū)塊數(shù)據(jù)提供一個足夠去中心化以及足夠重復(fù)的存儲。
這里查詢Swarm 工程的更多信息.
這里有一個Swarm簡易教程.
2.8 puppeth
基于命令行的向?qū)Вo助創(chuàng)建一個新的Ethereum網(wǎng)絡(luò)。
3 引用
[1] geth命令參數(shù)信息
[2] web3 JavaScript Dapp API
[3] the admin API
[4] 智能合約與ABI定義
[5] 在Go環(huán)境中調(diào)用智能合約
[6] ethereum RPC API
[7] RLP格式
[8] Swarm 工程的更多信息
[9] 一個Swarm簡易教程
總結(jié)
以上是生活随笔為你收集整理的Ethereum(1)—— 基本介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .新能源汽车的电机既能将电能转换成,又能
- 下一篇: 没想到系统迁移这么简单系统迁移怎么用