5分钟内设置以太坊开发节点

节点是区块链社区和开发者、应用程序之间的入口。区块链本身就是一个节点社区,彼此协作。该节点提供了用于挖掘、管理帐户、发送交易、与智能合约交互的API。

开发节点在本文中的区块链假定是单节点。它为我们提供了最重要的社区区块链节点+采矿管理的所有选项。与发展社区的互动是直接相关的,最重要的是:free。在本文中,我将介绍在Linux(arch)系统上的jiffy中设置它的所有步骤。

以太坊节点

以太坊有两个主要节点实现: Paritygeth

根据https://www.ethernodes.org/community/1,geth是用户主要使用的节点。这些节点实现中的一些附加选项之间可能存在差异,但是我们可以确保它们中的每一个都将实现ethereum-json-rpc-api/API。

1.获取并设置GETH

https://geth.ethereum.org/downloads/通过这个超链接,任何geth可执行文件都将获得。在我的例子中,我下载了geth1.8.17,64位。如果你还没有清楚你的CPU架构,你可以用uname-m bash命令来测试它。解压:

1
~ tar zxvf .tar.gz

2.创建新的以太坊帐户

我们必须在更早的时候初始化新的以太坊账户,但要初始化区块链。为了勾勒出EtherBase帐户,接收Ethers进行挖掘的帐户,需要这样做。初始化空列表,你将构建区块链的位置。所有区块链信息(区块、账户)都应保存在那里。

1
~ mkdir FirstEthBlockchain

然后

1
.//geth --datadir ./FirstEthBlockchain account new

解压Geth的文件夹,里面有geth二进制文件。你将被要求输入密码。为了简单起见,你可以不提供它。在我的例子中,整个过程是:

1
./geth-linux-amd64–1.eight.17–8bbe7207/geth --datadir ./FirstEthBlockchain account new
1
2
3
4
5
INFO [10–23|19:41:25.141] Most peer rely ETH=25 LES=zero complete=25 
Your new account is locked with a password. Please give a password. Don't forget this password.
Passphrase:
Repeat passphrase:
Handle:

生成的交易是c7c7d647cf3e4f1b072422c0ab5120fe810ee3b2

3.创建Genesis文件,始化区块链。

Genesis文件是一个JSON结构文件,它描述了许多不同的初始设置想要初始化区块链。这是初始的第一个区块。我们将创建最少的gensis文件,它可以只包含必需的字段。在我们的例子中,文件必须在FirstethBlockchain文件夹中创建。Genesis.json的内容材料如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"config": {
"chainId": 0,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}

用步骤1中生成的账户交易的价值替换coinbase密钥。

运行区块链初始化命令:

1
.//geth --datadir ./FirstEthBlockchain init ./FirstEthBlockchain/genesis.json

在我的例子中,命令是:

1
./geth-linux-amd64–1.eight.17–8bbe7207/geth --datadir FirstEthBlockchain init FirstEthBlockchain/genesis.json

最终结果是:

1
2
3
4
5
6
7
8
9
INFO [10-23|19:11:48.764] Most peer rely                       ETH=25 LES=zero complete=25 
INFO [10-23|19:11:48.764] Allotted cache and file handles database=/house/w/Downloads/FirstEthBlockchain/geth/chaindata cache=16 handles=16
INFO [10-23|19:11:48.777] Writing customized genesis block
INFO [10-23|19:11:48.777] Endured trie from reminiscence database nodes=zero measurement=zero.00B time=four.777µs gcnodes=zero gcsize=zero.00B gctime=0s livenodes=1 livesize=zero.00B
INFO [10-23|19:11:48.777] Efficiently wrote genesis state database=chaindata hash=357b5e…1b20b9
INFO [10-23|19:11:48.778] Allotted cache and file handles database=/house/w/Downloads/FirstEthBlockchain/geth/lightchaindata cache=16 handles=16
INFO [10-23|19:11:48.795] Writing customized genesis block
INFO [10-23|19:11:48.795] Endured trie from reminiscence database nodes=zero measurement=zero.00B time=5.114µs gcnodes=zero gcsize=zero.00B gctime=0s livenodes=1 livesize=zero.00B
INFO [10-23|19:11:48.796] Efficiently wrote genesis state database=lightchaindata hash=357b5e…1b20b9

4.以太坊节点

我们的目标是运行以太坊节点,并使用RPC API与之交互。它只是一个主要基于HTTP的通信,大多数消息主要基于JSON。要在启用了RPC服务器的情况下启动以太坊:

1
.//geth --rpc --rpcaddr localhost --rpcport 6666 --rpcapi “private,eth,web3,internet” ---datadir ./FirstEthBlockchain console

命令主要是初始化区块链,让RPC服务器监听6666端口(我们要与节点对话的端口)。允许通过RPC API调用启用private、eth、web3和internet API。只需在以太坊节点开始后打开交互式控制台。在我的例子中,命令和最终结果是:

1
./geth-linux-amd64–1.eight.17–8bbe7207/geth --rpc --rpcaddr localhost --rpcport 6666 --rpcapi “private,eth,web3,internet” --datadir ./FirstEthBlockchain console
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
INFO [10-23|19:49:35.997] Most peer rely                       ETH=25 LES=zero complete=25 
INFO [10-23|19:49:35.998] Beginning peer-to-peer node occasion=Geth/v1.eight.17-stable-8bbe7207/linux-amd64/go1.11.1
INFO [10-23|19:49:35.998] Allotted cache and file handles database=/house/w/Downloads/FirstEthBlockchain/geth/chaindata cache=768 handles=1024
INFO [10-23|19:49:36.021] Initialised chain configuration config=""
INFO [10-23|19:49:36.022] Disk storage enabled for ethash caches dir=/house/w/Downloads/FirstEthBlockchain/geth/ethash rely=three
INFO [10-23|19:49:36.022] Disk storage enabled for ethash DAGs dir=/house/w/.ethash rely=2
INFO [10-23|19:49:36.022] Initialising Ethereum protocol variations="[63 62]" community=1
INFO [10-23|19:49:36.022] Loaded most up-to-date native header quantity=zero hash=357b5e…1b20b9 td=10 age=49y6mo1w
INFO [10-23|19:49:36.022] Loaded most up-to-date native full block quantity=zero hash=357b5e…1b20b9 td=10 age=49y6mo1w
INFO [10-23|19:49:36.022] Loaded most up-to-date native quick block quantity=zero hash=357b5e…1b20b9 td=10 age=49y6mo1w
INFO [10-23|19:49:36.022] Regenerated native transaction journal transactions=zero accounts=zero
INFO [10-23|19:49:36.022] Beginning P2P networking
INFO [10-23|19:49:38.188] UDP listener up self=enode://b9e92c81cc46c89924e7f46c23dc6f78a088a130cf1dd5806637af8b43c2c5dab6eb770139828c2a7c5fce5e4940772f9b3b1a95367c1cd43e672dc479678f16@62.87.191.226:30303
INFO [10-23|19:49:38.188] RLPx listener up self=enode://b9e92c81cc46c89924e7f46c23dc6f78a088a130cf1dd5806637af8b43c2c5dab6eb770139828c2a7c5fce5e4940772f9b3b1a95367c1cd43e672dc479678f16@62.87.191.226:30303
INFO [10-23|19:49:38.193] IPC endpoint opened url=/house/w/Downloads/FirstEthBlockchain/geth.ipc
INFO [10-23|19:49:38.195] HTTP endpoint opened url=http://localhost:6666 cors= vhosts=localhost
Welcome to the Geth JavaScript console!
occasion: Geth/v1.eight.17-stable-8bbe7207/linux-amd64/go1.11.1
INFO [10-23|19:49:38.290] Etherbase routinely configured deal with=0xc7c7D647CF3e4F1b072422c0AB5120fe810Ee3b2
coinbase: 0xc7c7d647cf3e4f1b072422c0ab5120fe810ee3b2
at block: zero (Thu, 01 Jan 1970 01:00:00 CET)
datadir: /house/w/Downloads/FirstEthBlockchain
modules: admin:1.zero debug:1.zero eth:1.zero ethash:1.zero miner:1.zero internet:1.zero private:1.zero rpc:1.zero txpool:1.zero web3:1.zero

有效实现了,服务器已启动,控制台已打开。

5.确认并查看区块链。

我们初始化了区块链!交互式控制台允许执行节点操作。让我们测试一下我们先前创建的主帐户的当前稳定性:

1
2
> eth.getBalance(eth.coinbase)
zero

余额为零。现在我们只有一个区块(Genesis,索引为零)。让我们开始挖掘:

1
> miner.begin()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
INFO [10-23|19:50:14.286] Up to date mining threads                   threads=eight 
INFO [10-23|19:50:14.286] Transaction pool value threshold up to date value=1000000000
null
> INFO [10-23|19:50:14.287] Commit new mining work quantity=1 sealhash=6a7718…cc09c0 uncles=zero txs=zero fuel=zero charges=zero elapsed=422.921µs
INFO [10-23|19:50:18.778] Efficiently sealed new block quantity=1 sealhash=6a7718…cc09c0 hash=3cbd10…192cbd elapsed=four.491s
INFO [10-23|19:50:18.778] ? mined potential block quantity=1 hash=3cbd10…192cbd
INFO [10-23|19:50:18.778] Commit new mining work quantity=2 sealhash=c46033…8e3acd uncles=zero txs=zero fuel=zero charges=zero elapsed=124.783µs
INFO [10-23|19:50:19.480] Efficiently sealed new block quantity=2 sealhash=c46033…8e3acd hash=2508d3…ef2775 elapsed=702.267ms
INFO [10-23|19:50:19.480] ? mined potential block quantity=2 hash=2508d3…ef2775
INFO [10-23|19:50:19.480] Commit new mining work quantity=three sealhash=32ed88…3efbfb uncles=zero txs=zero fuel=zero charges=zero elapsed=106.819µs
INFO [10-23|19:50:19.492] Efficiently sealed new block quantity=three sealhash=32ed88…3efbfb hash=616d95…ea81advert elapsed=11.744ms
INFO [10-23|19:50:19.492] ? mined potential block quantity=three hash=616d95…ea81advert
INFO [10-23|19:50:19.492] Commit new mining work quantity=four sealhash=25afba…e45d01 uncles=zero txs=zero fuel=zero charges=zero elapsed=142.264µs
INFO [10-23|19:50:20.028] Efficiently sealed new block quantity=four sealhash=25afba…e45d01 hash=ea8fa1…2ded23 elapsed=535.337ms
INFO [10-23|19:50:20.028] ? mined potential block quantity=four hash=ea8fa1…2ded23
INFO [10-23|19:50:20.028] Commit new mining work quantity=5 sealhash=1b2621…c0e459 uncles=zero txs=zero fuel=zero charges=zero elapsed=108.61µs

几秒钟后用以下方法停止:

1
> miner.cease()

测试稳定性:

1
2
> eth.getBalance(eth.coinbase) 
20000000000000000000

我们每1个区块开采5个以太坊。经过5个区块后,我有25个以太(价值在单位wei中给出)。可以使用单位转换器了解以太的数量。

6.看一看RPC API。

最后一部分是测试我们是否能够使用RPC API远程使用节点API。API必须可以在端口6666下访问(前面的步骤给出了值)。让我们确认使用curl的服务器:

1
~ curl --data-binary '' -H 'content-type:utility/json;' http://localhost:6666 -vvvv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
* Rebuilt URL to: http://localhost:6666/ 
* Attempting ::1...
* TCP_NODELAY set
* connect with ::1 port 6666 failed: Connection refused
* Attempting 127.zero.zero.1...
* TCP_NODELAY set
* Linked to localhost (127.zero.zero.1) port 6666 (#zero)
> POST / HTTP/1.1
> Host: localhost:6666
> Person-Agent: curl/7.60.zero
> Settle for: */*
> content-type:utility/json;
> Content material-Size: 124
>
* add fully despatched off: 124 out of 124 bytes
< HTTP/1.1 200 OK
< Content material-Sort: utility/json
< Date: Wed, 24 Oct 2018 07:11:17 GMT
< Content material-Size: 49
<

* Connection #zero to host localhost left intact

此名称检查最新开采区块中CoinBase账户的稳定性(与你的交易不同可能要更改0xc7c7d647cf3e4f1b072422c0ab5120fe810ee3b2)。结果的十六进制编码,你应该使用这个软件来解密它。在我的例子中,十进制结果是:550000000000000(wei),55个以太。

总结

我们对个人社区ethereum geth节点进行了最小的设置,它允许通过远程RPC API与节点一起工作。可以对社区有管理权,还有采矿权。

======================================================================

分享一些比特币、以太坊、EOS、Fabric等区块链相关的交互式在线编程实战教程:

  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • ERC721以太坊通证实战,课程以一个数字艺术品创作与分享DApp的实战开发为主线,深入讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • 深入浅出玩转EOS钱包开发,本课程以手机EOS钱包的完整开发过程为主线,深入学习EOS区块链应用开发,课程内容即涵盖账户、计算资源、智能合约、动作与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深入浅出,非常适合前端工程师深入学习EOS区块链应用开发。
  • Hyperledger Fabric 区块链开发详解,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操作实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
  • Hyperledger Fabric java 区块链开发详解,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操作实践,是java工程师学习Fabric区块链开发的最佳选择。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是5分钟内设置以太坊开发节点