以太坊(二)MAC搭建以太坊私有鏈多節(jié)點(diǎn)集群(同一臺電腦)

上一節(jié)中我們使用geth搭建了以太坊私有網(wǎng)絡(luò),這一次則要在私有網(wǎng)絡(luò)中建立多節(jié)點(diǎn)集群,并互相發(fā)現(xiàn),產(chǎn)生交易.

為了在本地網(wǎng)絡(luò)運(yùn)行多個以太坊節(jié)點(diǎn)的實(shí)例,必須確保以下兩點(diǎn):

  • 每個實(shí)例都有獨(dú)立的數(shù)據(jù)目錄--datadir
  • 每個實(shí)例運(yùn)行都有獨(dú)立的端口.

搭建多節(jié)點(diǎn)環(huán)境

啟動第一個節(jié)點(diǎn)

geth --datadir data0 --networkid 1108 console

運(yùn)行結(jié)果如下:

INFO [03-01|10:57:17] Starting peer-to-peer node               instance=Geth/v1.7.3-stable/darwin-amd64/go1.9.2
INFO [03-01|10:57:17] Allocated cache and file handles         database=/Users/wangsanjun/privatechain/data0/geth/chaindata cache=128 handles=1024
INFO [03-01|10:57:17] Initialised chain configuration          config="{ChainID: 10 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Engine: unknown}"
INFO [03-01|10:57:17] Disk storage enabled for ethash caches   dir=/Users/wangsanjun/privatechain/data0/geth/ethash count=3
INFO [03-01|10:57:17] Disk storage enabled for ethash DAGs     dir=/Users/wangsanjun/.ethash                        count=2
INFO [03-01|10:57:17] Initialising Ethereum protocol           versions="[63 62]" network=1108
INFO [03-01|10:57:17] Loaded most recent local header          number=72 hash=8df4da…335b9f td=9710147
INFO [03-01|10:57:17] Loaded most recent local full block      number=72 hash=8df4da…335b9f td=9710147
INFO [03-01|10:57:17] Loaded most recent local fast block      number=72 hash=8df4da…335b9f td=9710147
INFO [03-01|10:57:17] Loaded local transaction journal         transactions=0 dropped=0
INFO [03-01|10:57:17] Regenerated local transaction journal    transactions=0 accounts=0
WARN [03-01|10:57:17] Blockchain not empty, fast sync disabled 
INFO [03-01|10:57:17] Starting P2P networking 
INFO [03-01|10:57:19] UDP listener up                          self=enode://c1f6afa8c620b842b6ff36b9321ec2f7dd6a08037a31ee093e9acc4c5a13bcb93b5ce95b10768eedafe144f55c79858a8b8e59f121674dbe267d23dba1df3e7a@[::]:30303
INFO [03-01|10:57:19] RLPx listener up                         self=enode://c1f6afa8c620b842b6ff36b9321ec2f7dd6a08037a31ee093e9acc4c5a13bcb93b5ce95b10768eedafe144f55c79858a8b8e59f121674dbe267d23dba1df3e7a@[::]:30303
INFO [03-01|10:57:19] IPC endpoint opened: /Users/wangsanjun/privatechain/data0/geth.ipc 
Welcome to the Geth JavaScript console!

instance: Geth/v1.7.3-stable/darwin-amd64/go1.9.2
coinbase: 0x0416f04c403099184689990674f5b4259dc46bd8
at block: 72 (Wed, 28 Feb 2018 18:33:09 CST)
 datadir: /Users/wangsanjun/privatechain/data0
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

獲取節(jié)點(diǎn)實(shí)例的enode url:

> admin.nodeInfo.enode
"enode://c1f6afa8c620b842b6ff36b9321ec2f7dd6a08037a31ee093e9acc4c5a13bcb93b5ce95b10768eedafe144f55c79858a8b8e59f121674dbe267d23dba1df3e7a@[::]:30303"

再打開一個終端,初始化第二個節(jié)點(diǎn):

mkdir data1 //和上一個節(jié)點(diǎn)的data0同目錄痰驱,即在privatechain下面
geth --datadir data1 account new
geth --datadir data1 --networkid 1108 init genesis.json
geth --datadir data1 --networkid 1108 --port 30304 --bootnodes "enode://c1f6afa8c620b842b6ff36b9321ec2f7dd6a08037a31ee093e9acc4c5a13bcb93b5ce95b10768eedafe144f55c79858a8b8e59f121674dbe267d23dba1df3e7a@172.16.70.76:30303" console

上面的命令中,--bootndoes是設(shè)置當(dāng)前節(jié)點(diǎn)啟動后,直接通過設(shè)置--bootndoes的值來鏈接第一個節(jié)點(diǎn),--bootnoedes 的值可以通過在第一個節(jié)的命令行中,輸入admin.nodeInfo.enode命令打印出來碌廓,需要注意的是需要把@[::]換成實(shí)際電腦的IP地址
也可以不設(shè)置 --bootnodes, 直接啟動,啟動后進(jìn)入命令行, 通過命令admin.addPeer(enodeUrlOfFirst Instance)把它作為一個peer添加進(jìn)來.

為了確認(rèn)鏈接成功,第二個節(jié)點(diǎn)輸入:

> admin.nodeInfo
{
  enode: "enode://61eac7f7900bd17cac39ce506cd20c1f67a2a43fb5f5c7a46ace337922a9e325a63a7aa9cb18df12715550ffa0b66c44272132b93245d15825c2ac2c1ddb8cd8@[::]:30304",
  id: "61eac7f7900bd17cac39ce506cd20c1f67a2a43fb5f5c7a46ace337922a9e325a63a7aa9cb18df12715550ffa0b66c44272132b93245d15825c2ac2c1ddb8cd8",
  ip: "::",
  listenAddr: "[::]:30304",
  name: "Geth/v1.7.3-stable/darwin-amd64/go1.9.2",
  ports: {
    discovery: 30304,
    listener: 30304
  },
  protocols: {
    eth: {
      difficulty: 9972291,
      genesis: "0x5e1fc79cb4ffa4739177b5408045cd5d51c6cf766133f23f7cd72ee1f8d790e0",
      head: "0xbcc9172f244c3c86d15b04451d2d72dca6953cc1838910f35f486149a37ddc87",
      network: 1108
    }
  }
}

第一個節(jié)點(diǎn)輸入:

> net.peerCount
2
> admin.peers
[{
    caps: ["eth/63"],
    id: "61eac7f7900bd17cac39ce506cd20c1f67a2a43fb5f5c7a46ace337922a9e325a63a7aa9cb18df12715550ffa0b66c44272132b93245d15825c2ac2c1ddb8cd8",
    name: "Geth/v1.7.3-stable/darwin-amd64/go1.9.2",
    network: {
      localAddress: "172.16.70.76:30303",
      remoteAddress: "172.16.70.76:53634"
    },
    protocols: {
      eth: {
        difficulty: 131072,
        head: "0x5e1fc79cb4ffa4739177b5408045cd5d51c6cf766133f23f7cd72ee1f8d790e0",
        version: 63
      }
    }
}]

從得到的結(jié)果可以看出,第一個節(jié)點(diǎn)有1個peer鏈接, 鏈接的node id為:
"61eac7f7900bd17cac39ce506cd20c1f67a2a43fb5f5c7a46ace337922a9e325a63a7aa9cb18df12715550ffa0b66c44272132b93245d15825c2ac2c1ddb8cd8"
這個id,正好就是第二個節(jié)點(diǎn)的id.

鏈接成功后,使用第一個節(jié)點(diǎn)挖礦的賬戶,向第二個節(jié)點(diǎn)發(fā)送 "ether"

首先查看第二個節(jié)點(diǎn)的Wei數(shù)量和整個網(wǎng)絡(luò)的區(qū)塊號,還有接收貨幣的賬號id:


> eth.getBalance(eth.accounts[0])
0
> eth.blockNumber
73
> eth.accounts[0]
"0x0c7df03a68bd85ef3abcfc63a6b788a2faf8ef27"
>

在第一個節(jié)點(diǎn)命令行中,執(zhí)行下面的操作:

> personal.unlockAccount(eth.accounts[0])
Unlock account 0x0416f04c403099184689990674f5b4259dc46bd8
Passphrase: 
true
> eth.sendTransaction({from:"0x0416f04c403099184689990674f5b4259dc46bd8",to:"0x0c7df03a68bd85ef3abcfc63a6b788a2faf8ef27",value:web3.toWei(1, "ether")})
INFO [03-01|15:03:04] Submitted transaction                    fullhash=0xb92d256b66c336c9ffa5c1872bb5b20b6b704d7fbc4dd7aa3cdb97b8668d407d recipient=0x0C7dF03a68Bd85EF3abcfC63A6b788a2fAf8EF27
"0xb92d256b66c336c9ffa5c1872bb5b20b6b704d7fbc4dd7aa3cdb97b8668d407d"
> eth.pendingTransactions
[{
    blockHash: null,
    blockNumber: null,
    from: "0x0416f04c403099184689990674f5b4259dc46bd8",
    gas: 90000,
    gasPrice: 18000000000,
    hash: "0xb92d256b66c336c9ffa5c1872bb5b20b6b704d7fbc4dd7aa3cdb97b8668d407d",
    input: "0x",
    nonce: 5,
    r: "0xfd4d1b29e0ae3bce53599d4e0f89a093b1b483de2cf85f6acdb66c88dd594242",
    s: "0x60b4a92b9a2744b3c2f9cd5c5cd0d406c93b4b18877d4cb6357ec7946019bfe2",
    to: "0x0c7df03a68bd85ef3abcfc63a6b788a2faf8ef27",
    transactionIndex: 0,
    v: "0x37",
    value: 1000000000000000000
}]

eth.sendTransaction就是執(zhí)行發(fā)送以太幣的操作, 參數(shù)from, to分別是發(fā)送賬戶和接收賬戶, web3.toWei(1, "ether")是將1單位"ether"轉(zhuǎn)換為相應(yīng)的"Wei"數(shù)量.

然后執(zhí)行挖礦

>  miner.start(1);admin.sleepBlocks(1);miner.stop();
INFO [03-01|15:05:47] Updated mining threads                   threads=1
INFO [03-01|15:05:47] Transaction pool price threshold updated price=18000000000
INFO [03-01|15:05:47] Starting mining operation 
INFO [03-01|15:05:47] Commit new mining work                   number=74 txs=1 uncles=0 elapsed=388.33μs
INFO [03-01|15:06:23] Successfully sealed new block            number=74 hash=bcc917…7ddc87
INFO [03-01|15:06:23]  mined potential block                  number=74 hash=bcc917…7ddc87
INFO [03-01|15:06:23] Commit new mining work                   number=75 txs=0 uncles=0 elapsed=202.123μs
true

再在第二個節(jié)點(diǎn)的命令行輸入:

> eth.blockNumber
74
> eth.getBalance(eth.accounts[0])
1000000000000000000

可以看到第二個節(jié)點(diǎn)中的賬戶,已經(jīng)得有了1個"ether", 并且可以看出,以太坊中,1"ether"=1000000000000000000"Wei.
之前輸入eth.blockNumber,得到的值為73,現(xiàn)在增加了一個區(qū)塊變成了74

總結(jié)一下:

這次我們完成了以下內(nèi)容:
1)創(chuàng)建區(qū)塊鏈私有網(wǎng)絡(luò),并在網(wǎng)絡(luò)中建立多節(jié)點(diǎn)集群
2)在多節(jié)點(diǎn)環(huán)境中,通過一個節(jié)點(diǎn)的賬戶向網(wǎng)絡(luò)中的另外一個節(jié)點(diǎn)的賬戶轉(zhuǎn)了1個以太坊幣,交易成功.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末潭兽,一起剝皮案震驚了整個濱河市糟红,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棵逊,老刑警劉巖寝贡,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乐导,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)浸颓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門物臂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旺拉,“玉大人,你說我怎么就攤上這事鹦聪≌俗瑁” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵泽本,是天一觀的道長。 經(jīng)常有香客問我姻僧,道長规丽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任撇贺,我火速辦了婚禮赌莺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘松嘶。我一直安慰自己艘狭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布翠订。 她就那樣靜靜地躺著巢音,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尽超。 梳的紋絲不亂的頭發(fā)上官撼,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機(jī)與錄音似谁,去河邊找鬼傲绣。 笑死,一個胖子當(dāng)著我的面吹牛巩踏,可吹牛的內(nèi)容都是我干的秃诵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼塞琼,長吁一口氣:“原來是場噩夢啊……” “哼菠净!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起屈梁,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤嗤练,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后在讶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煞抬,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年构哺,在試婚紗的時候發(fā)現(xiàn)自己被綠了革答。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片战坤。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖残拐,靈堂內(nèi)的尸體忽然破棺而出途茫,到底是詐尸還是另有隱情,我是刑警寧澤溪食,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布囊卜,位于F島的核電站,受9級特大地震影響错沃,放射性物質(zhì)發(fā)生泄漏栅组。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一枢析、第九天 我趴在偏房一處隱蔽的房頂上張望玉掸。 院中可真熱鬧,春花似錦醒叁、人聲如沸司浪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啊易。三九已至,卻和暖如春智政,著一層夾襖步出監(jiān)牢的瞬間认罩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工续捂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留垦垂,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓牙瓢,卻偏偏與公主長得像劫拗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子矾克,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 【中文版】以太坊白皮書 翻譯:少平页慷、 Seven當(dāng)中本聰在 2009 年 1 月啟動比特幣區(qū)塊鏈時,他同時向世界引...
    __Seven__閱讀 4,156評論 0 10
  • 以太坊白皮書地址:https://github.com/ethereum/wiki/wiki/White-Pape...
    rectinajh閱讀 17,799評論 0 46
  • 以太坊(Ethereum ):下一代智能合約和去中心化應(yīng)用平臺 翻譯:巨蟹 胁附、少平 譯者注:中文讀者可以到以太坊愛...
    車圣閱讀 3,729評論 1 7
  • 「小王啊酒繁,好久不見了。最近怎么樣啊控妻≈萏唬」在上班的路上接到這么一個電話很是尷尬,一方面我手里拿著早餐著急吃掉弓候,一方面我...
    Superwyh閱讀 1,142評論 2 42
  • 一拍因喜 二拍緣愛 三拍更爽 四拍入迷 五拍陶醉 若無紅光點(diǎn)綴映襯郎哭,便是光影缺憾
    明白的石頭閱讀 209評論 0 0