如何创建自己的私有以太坊区块链

第一行代码:

创建自己的私有区块链

你好,Testnet

以太坊(英文Ethereum)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币提供去中心化的虚拟机来处理点对点合约。本文是在自己的电脑上启动自定义以太坊区块链的指南。

请不要与在主要的以太坊区块链上启动节点相混淆,在这里,我们开始一个全新的独立区块链,这个区块链无法与太坊主网进行交互。

启动您自己的以太坊区块链比公共测试网络更有用,更有教育意义,也更安全。学习建立私有测试网可以提供其他抽象概念的有形性,例如挖掘,网络对等,甚至geth datadir。

开始的第一步

第一步你需要安装Geth,这是一个通过go语言书写的以太坊客户端。本文使用的是ubuntu系统,其他系统请参考官方主页:

https://geth.ethereum.org/install/

首先添加版本库

sudo add-apt-repository -y ppa:ethereum/ethereum

之后,您可以安装Go Ethereum的稳定版本:

sudo apt-get update

sudo apt-get install ethereum

创建创世块

Genesis 块是链中的第一个块,Genesis 文件是一个JSON文件,它定义了该初始块的特征,随后定义了区块链的其余部分。

1.创建一个目录来保存您的网络文件

mkdir my-eth-chain

cd my-eth-chain

2.创建创世块文件

gedit myGenesis.json

3.复制一下内容到你的创世块中

{

"config": {

"chainId": 1994,

"homesteadBlock": 0,

"eip155Block": 0,

"eip158Block": 0,

"byzantiumBlock": 0

},

"difficulty": "400",

"gasLimit": "2000000",

"alloc": {

"7b684d27167d208c66584ece7f09d8bc8f86ffff": {

"balance": "100000000000000000000000"

},

"ae13d41d66af28380c7af6d825ab557eb271ffff": {

"balance": "120000000000000000000000"

}

}

}

其中:

chainId - 这是您链的标识符,用于重放保护。

homesteadBlock,eip155Block,eip158Block,byzantiumBlock - 这些与链式分叉和版本控制有关,所以在我们的例子中,让我们从0开始新的区块链。

difficulty:这决定了挖掘区块的难度。将此值设置为低(~10-10000)对于私有区块链很有用,因为它可以让您快速挖掘块,这等同于快速交易,以及大量要测试的ETH。为了比较,以太坊主网Genesis文件定义了难度17179869184。

gasLimit:这是每个区块中可以使用的总气体量。如此低的挖掘难度,块将移动得非常快,但您仍应将此值设置得相当高,以避免达到限制并减慢网络速度。

alloc:在这里,您可以将ETH分配给特定地址。这不会为您创建帐户,因此请确保您已经控制了该帐户。您需要将帐户添加到您的专用链才能使用它,为此,您需要访问keystore / utc文件。例如,Geth和MyEtherWallet允许您在创建帐户时访问此文件,但Metamask和Coinbase不允许。提供的地址不是真实地址,它们只是示例。这里我们分别分配100,000和120,000 ETH。

现在开始你的节点

现在开始,真正的乐趣开始了,让我们开启我们新的以太坊区块链

1.实例化你的数据目录

geth --dadadir ./myDataDir init ./myGenesis.json

2.启动你的对等节点

geth --datadir ./myDataDir --networkid 1114 console 2 >> myEth.log

输出应如下所示:

这是geth JavaScript控制台。任何带符号的命令>都应在此处键入。

3.显示您的以太坊日志

打开另一个终端窗口

cd到 my-eth-chain

输入 tail -f myEth.log

4.导入/创建帐户

如果您在Genesis文件中分配了ETH,请通过将UTC文件拖到myDataDir/keystore目录中导入相应的帐户并跳到步骤5。

在geth JavaScript控制台中,创建一个帐户:

> personal.newAccount("")

不要忘记这个密码!您将输入很多内容,因此对于此测试网络,您可以保持简单。

5.开始采矿

检查你的余额

> eth.getBalance(eth.coinbase)

跑开始挖矿

> miner.start()

查看您的其他终端窗口,您应该在日志中看到一些挖掘操作。再次检查你的余额,它应该更高。

要结束采矿,请输入

> miner.stop()

转一笔账把

首先通过命令查询一下当前账号的钱:账户1和账户2

转一笔钱,1500,先解锁账户,输入账户和钱数,可以看到生成了交易的摘要(绿字所示)

通过完成一个区块后进行在进行查询

可以看到1500+441=1941不等于1935

相差6

这个是由于对账户1挖出的这个区块,所以有它的奖励在里面。

本次教程到此结束。更多信息请查询

以太坊user guide

https://ethereum.gitbooks.io/frontier-guide/content/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181031B0NCVU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券