1. 主页 > 百科

15分钟建立你的私人区块链

okex欧意交易所

okex欧意交易所

okex欧意交易所是全球顶尖的数字货币交易平台,提供币币交易和合约交易。

APP下载  官网地址

本次将会为大家详细介绍15分钟建立你的私人区块链的内容,供大家参考品鉴,希望可以帮助到有需要的朋友。

[标签:标题]

大家也许还对节点如何挖矿运作、如何执行交易…等等,感到难以理解。身体力行也许是可以让人最快理解的方式,就让我们来试着建立一个私人以太坊,更进一步了解这个生态圈的运作方式

看完这篇文章你可以了解到以下几点: 1)如何建立一个私人的以太坊(建立于AWS linux) 2)如何用挖矿赚取回报 3)帐号之间如何进行汇款交易

*了解以上项目只需要花你15分钟的时间*

第一步:登入AWS帐号,并启动一台EC2主机

重点1:选择Ubuntu OS 作为安装的linux 版本

重点2:Instance Type选择至少t2.medium以上规格(相关文章指出此规格以上比较能让以太坊正常运作,在这里先不讨论主机规格会对节点造成的影响)

重点3:设置正确的TCP port(节点之间预设互相Peering的Port是30303,故要设定一port range或单一port皆可)

重点4:储存好key pair 并launch instance

第二步:安装以太坊节点

重点1:开启你电脑里的Terminal软体(中文是”终端机”)并使用上一步骤产生的key pair登入aws主机(本登入步骤只适用Mac使用者,如果你是Windows使用者,建议使用PuTTY软体)

使用Terminal进入存放key pair的指令可用: cd 以我自己为例:cd /Users/ryanhu/Documents/Ethereum

重点2:安装节点所需的相关软体

输入以下4个指令

*此处安装的是PPA(Personal Package Archive) 版本以太坊节点。有开发测试所需要的软体,且预设不会与整个以太坊同步,可大大降低安装时间*

$ sudo apt-get install software-properties-common $ sudo add-apt-repository -y ppa:ethereum/ethereum $ sudo apt-get update $ sudo apt-get install ethereum

输入以下指令以产生一Genesis.json 档案(此档案用于初始化节点)

$ sudo vim Genesis.json

复制贴上下方json 文字于Genesis.json 里并存档(相关设定参数暂不讨论,会再另起文章详细说明,此时只需先记住此节点chainId 设定是885(你可变更为任意数字) )

*复制好json 文字后可用:i 指令(分号+i+enter)让vim 模式变成编辑模式,此时再用ctrl + v 即可贴上*

*贴上后再用:wq 指令(分号+w+q+enter)存档并离开vim 编辑模式*

{ "config": { "chainId": 885 , "homesteadBlock": 0 , "eip155Block": 0 , "eip158Block": 0 }, "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "difficulty" : "0x200", "alloc": {},"coinbase": "0x0000000000000000000000000000000000000000", "timestamp": "0x00", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "gasLimit": "0xffffffff", "alloc": { } }

使用geth 指令及Genesis.json 档案,开始初始化节点

$ sudo geth init Genesis.json

第三步:开始测试节点

重点1:进入geth console 模式

如果此时你不是管理者身份,无法使用指令,会出现permission denied 的错误讯息,所以请先用以下指令切换成管理者身份

$ sudo -s

用geth console 指令进入节点的指令模式。nodiscover 表示不搜寻其它节点与不与其它节点沟通

$ geth --nodiscover console

重点2:替此节点新增第一个帐号

> personal.newAccount()

输入此指令后,会被要求替此帐号设定密码。密码设定完成后,即会产生第一组的public address,也就是所谓的创始帐号

用此指令查看一下第一组address 里有多少ether

> web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")

虽然一开始创始帐号里是没有钱的,但是我们仍然还是有2种方式可以让此帐号里有ether:

  1. 在设定Genesis.json 时,指定一笔金额给创始帐号(之后的文章会详细解说)
  2. 自己挖矿(本教学的其中一个目的,故我们一开始先不给创始帐号任何ether)

重点3:开始挖矿啦!

为了让挖矿过程中的每个步骤都一目了然,我们先用以下指令离开指令模式

> exit

然后使用以下指令重新进入指令模式。此指令的用意在于让geth 的每一步骤都输出到process.log 这个档案里

$ geth --nodiscover console 2>> process.log

这时侯再请打开另一个Terminal 视窗,然后同样登入此aws instance,并输入以下指令。此指令可让你随时查看最新的log

$ tail -f process.log

于指令视窗输入以下指令,开始挖矿!

> miner.start()

此时可于log 视窗看出正在为创世区块产生DAG(Directed Acyclic Graph 算法,也就是以太坊目前所使用的按术)

不是工程师也可以10分钟写出智能合约(Smart Contract)

区块链议题这两年打得火热,人人都被新技术、ICO爆富话题吸引目光,而其中最关键的核心莫过于智能合约的撰写,智能合约的好坏甚至也被纳为评断ICO的标准之一。 讲起来阿杂、作起

等待几分钟后,节点就会开始进行挖矿

经过几分钟的挖矿,一但有区块被挖取完毕,此时用指令再次查看帐号余额会发现已经有ether 在内

挖矿测试完毕。此时可用以下指令让节点停止挖矿

> miner.stop()

第四步:新增另一个节点,用于测试帐号之间的交易

重点1:重覆以上的第一步(登入AWS帐号,并启动一台EC2主机)及第二步(安装以太坊节点)

*于第二步安装节点时,Genesis.json 里的chain id 仍需指定为885。故于此教学,直接复制第一个节点的Genesis.json 的内容即可*

重点2:也在第2个节点里创立一个新的帐号

重点3:让此2节点互相关联(Peering)

可以分别在两个节点视窗输入以下指令,查看目前有哪些节点与自己Peering

> admin.peers

可以看得出来2个节点的结果均显示为空,没有任何的节点与之相关联

开始关联2个节点

用以下指令在“第1个节点”取得节点资料

> admin.nodeInfo.enode

*enode 指的就是Ethereum node*

以我的例子来说,第1个节点的资料长这样

“enode://ddbae8da7bbcc5002341e919d05a88707dc15ea13ed5638c1297d8c6f744bb2232f7e0900833f0f2646ee7a97db011af83e8df3203fadec550779813dcb3a102@[::]:30303?discport=0”

此时请打开“第2个节点”的视窗,并依照你自己的节点资料,输入如下指令

> admin.addPeer("enode://ddbae8da7bbcc5002341e919d05a88707dc15ea13ed5638c1297d8c6f744bb2232f7e0900833f0f2646ee7a97db011af83e8df3203fadec550779813dcb3a102@123.456.789.888:30303?discport=0")

*把[::] 换成第1个节点的IP,port 用30303。此处范例我的IP是123.456.789.888*

*此指令的用意,是要告诉第2个节点让它去Peering 第1个节点*

*可以在aws instance 的页面找到第1个节点的IP*

此时再分别去2个节点视窗输入以下指令,可以看出目前2个节点已互相关联(只需要作1次,让Node 2 peering Node 1 即可)

> admin.peers

重点4:开始让2个节点互相转帐吧

目前只有第1个节点有ether 所以我们先打开节点1 的视窗,然后再次输入以下指令确认一下ether 金额

> web3.fromWei(eth.getBalance(eth.coinbase), "ether")

输入以下指令解锁创始帐号(需先输入密码解锁帐号,否则无法转帐)

> personal.unlockAccount(eth.coinbase)

输入以下指令让Node 1 的创始帐号转帐400 ether 给Node 2 的创始帐号(请更换成你自己Node 2的创始帐号)

> eth.sendTransaction({from: eth.coinbase, to: "0x504008e1d457B7DAa4F247F51e7Bcc1F209E017e", value: web3.toWei(400, "ether")})

忘了自己Node 2的创始帐号是什么吗?进到节点2 后,可以输入以下指令查询

> eth.coinbase

还记得我们刚才有开了个可以监看所有步骤的log 视窗吗?打开它,你可以看到转帐的指令有确实送出

但此时仍然尚未转帐成功,可以到节点2 去查看ether 余额,仍然是为0

为什么呢?因为目前2个节点都没有启动矿工挖矿,所以交易转帐不会被确认,节点2 自然也就收不到应该有的ether

再次用以下指令让节点开始挖矿吧(此时不论用节点1或节点2启动挖矿都能够确认完成交易,但为了证明ether是由节点1转帐过去,故我们仍然是由节点1来进行挖矿)

> miner.start()

过一点时间后(我大概等不到30秒) 再去查看节点2 的余额

以上就是本次的教学文章,有任何问题欢迎提出批评指教

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

马克思主义与比特币的价值

什么是比特币价值?这似乎是一个相当容易的问题, 但是什么赋予它这个价值呢?这取决于你问的是谁。 工作量证明(Proof of work) 即使这个问题看起来简单,但还是有非常多不同的答

币安Binance

币安Binance

币安交易所app是全球顶尖的虚拟货币交易平台。

APP下载  官网地址

本文由某某资讯网发布,不代表某某资讯网立场,转载联系作者并注明出处:https://www.yuhuajia.cn/baike/jk8d3859.html