国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

輕松搭建以太坊私有鏈

fizz / 1658人閱讀

摘要:更有甚者將年稱作區(qū)塊鏈元年。配置創(chuàng)世區(qū)塊搭建私有鏈前需要?jiǎng)?chuàng)建一個(gè)配置文件,用于初始化創(chuàng)世區(qū)塊。挖礦挖礦賺取以太比獎(jiǎng)勵(lì),由于創(chuàng)世區(qū)塊中難度值設(shè)置的很低因此不會(huì)很難挖。

0x00 序言

最近不論是幣圈還是技術(shù)圈,區(qū)塊鏈都這么火熱,17 年 9 月 ICO 在國(guó)內(nèi)被取締,沒(méi)過(guò)幾天國(guó)內(nèi)所有數(shù)字貨幣交易所都被叫停,消息一出無(wú)數(shù)韭菜被迫割肉。誰(shuí)料幣圈在脫離中國(guó)市場(chǎng)后一路高歌猛擊,比特幣為首的數(shù)字貨幣在此之后一路拉升再創(chuàng)新高。而 17 年一開(kāi)始數(shù)字貨幣的基石——區(qū)塊鏈技術(shù)更是被捧上天。更有甚者將 18 年稱作區(qū)塊鏈元年。這是繼人工智能之后的又一個(gè)被廣泛看好的技術(shù)。并且區(qū)塊鏈的應(yīng)用落地將比人工智能門檻更低,馬太效應(yīng)已經(jīng)顯現(xiàn),會(huì)有大量資本涌入,也隱藏著很多機(jī)會(huì)。

0x01 配置創(chuàng)世區(qū)塊

搭建私有鏈前需要?jiǎng)?chuàng)建一個(gè) json 配置文件,用于初始化創(chuàng)世區(qū)塊。這里作者將創(chuàng)建一個(gè)名為 genesis.json 的文件。

內(nèi)容如下:

{
  "config": {
        "chainId": 1000,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x400",
  "extraData"  : "Oh My God!",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00",
  "alloc": {}
}

配置說(shuō)明:
config.chainId // 區(qū)塊鏈的ID,在 geth 命令中的 --networkid 參數(shù)需要與 chainId 的值一致
config.homesteadBlock // Homestead 硬分叉區(qū)塊高度,不需要關(guān)注
config.eip155Block // EIP 155 硬分叉高度,不需要關(guān)注
config.eip158Block // EIP 158 硬分叉高度,不需要關(guān)注
coinbase // 礦工賬號(hào),第一個(gè)區(qū)塊挖出后將給這個(gè)礦工賬號(hào)發(fā)送獎(jiǎng)勵(lì)的以太幣
difficulty // 難度值,越大越難
extraData // 附加信息隨便填
gasLimit // gas 的消耗總量限制,用來(lái)限制區(qū)塊能包含的交易信息總和,因?yàn)槲覀兪撬接墟湥蕴钭畲?br>nonce // 一個(gè) 64 位隨機(jī)數(shù)
mixhash // 與 nonce 配合用于挖礦,由上一個(gè)區(qū)塊的一部分生成的 hash
parentHash // 上一個(gè)區(qū)塊的 hash 值
alloc // 預(yù)設(shè)賬號(hào)以及賬號(hào)的以太幣數(shù)量,私有鏈挖礦比較容易可以不配置

好啦~配置項(xiàng)解釋完畢可以開(kāi)始初始化創(chuàng)世區(qū)塊了!!!

0x02 初始化創(chuàng)世區(qū)塊

這里需要用到 geth 的 init 命令。

geth --datadir $HOME/privateNet/bootnode init genesis.json                                                     
...
INFO [01-13|20:07:29] Successfully wrote genesis state    database=lightchaindata                                           hash=49c2dd…aff051

參數(shù)解釋:
--datadir 指定數(shù)據(jù)存放的目錄

0x03 啟動(dòng)私鏈起始節(jié)點(diǎn)(boot node)
geth --datadir $HOME/privateNet/bootnode 
--networkid 1000 
--identity "bootnode" 
--port 30303 
--rpc 
--rpcport 8545 
--rpccorsdomain "*" 
--nodiscover 
--verbosity 4 
console
...
Welcome to the Geth JavaScript console!

instance: Geth/v1.7.2-stable/darwin-amd64/go1.9.2
 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

>

參數(shù)說(shuō)明:
--networkid 與 genesis.json 中的 chainId 一致
--identity 設(shè)置節(jié)點(diǎn)ID
--port geth 節(jié)點(diǎn)端口 default: 30303
--rpc 啟用 rpc 服務(wù) default: 8545
--rpcport rpc 服務(wù)端口
--rpccorsdomain 這里配置“*”是允許通過(guò)任意域名訪問(wèn),也可以指定具體的域名如:“http://yourdomain.com”
--nodiscover 關(guān)閉節(jié)點(diǎn)自動(dòng)發(fā)現(xiàn)
--verbosity 日志等級(jí):0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3)

提示:
在 geth console 模式下可以使用 eth.getBlock(區(qū)塊號(hào)) 查看區(qū)塊內(nèi)容

> eth.getBlock(0)
{
  difficulty: 16,
  extraData: "0x01010101",
  gasLimit: 3141592,
  gasUsed: 0,
  hash: "0xdd97c4469e8bf4054b7c756c1d620ee21d41e5ade129adfbb5ddce3937d6f66e",
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  miner: "0x0000000000000000000000000000000000000000",
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: "0x0000000000000042",
  number: 0,
  parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 508,
  stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  timestamp: 0,
  totalDifficulty: 16,
  transactions: [],
  transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  uncles: []
}

創(chuàng)世都搞定了接下來(lái)的事就更簡(jiǎn)單了~

0x04 創(chuàng)建新賬號(hào)

在 geth console 模式下實(shí)際是一個(gè) JavaScript 運(yùn)行環(huán)境,有點(diǎn)類似 Node.js 的命令行模式。可以使用一些預(yù)設(shè)的對(duì)象方法執(zhí)行一些操作。personal 對(duì)象下的 newAccount 方法可以創(chuàng)建新的賬號(hào),該方法返回一個(gè)賬號(hào)地址。

personal.newAccount("yourPassphrase")
"0xe6a8faf90ddc1ec0c335d0a83f660c5de9ec12d1"
0x05 挖礦

挖礦賺取以太比獎(jiǎng)勵(lì),由于創(chuàng)世區(qū)塊中難度值設(shè)置的很低因此不會(huì)很難挖。

miner.start()

挖礦同時(shí)可以用 geth attach 命令打開(kāi)另一個(gè)終端查看賬戶余額

geth attach $HOME/privateNet/bootnode/geth.ipc
...
> eth.getBalance(eth.accounts[0])
0x06 創(chuàng)建新節(jié)點(diǎn)

都說(shuō)區(qū)塊鏈?zhǔn)侨ブ行幕馁~本那么可以滿足于單機(jī)挖礦?說(shuō)干就干接下來(lái)創(chuàng)建一個(gè)新節(jié)點(diǎn)并將太接入我們的主節(jié)點(diǎn)。這里需要注意以下幾點(diǎn):

新節(jié)點(diǎn)的 networkid 要與 boot node 一致

需要與 boot node 使用同一個(gè)創(chuàng)世區(qū)塊

如果多個(gè)節(jié)點(diǎn)都在一臺(tái)機(jī)器上注意端口區(qū)分,避免端口沖突

--port 30304

--rpcport 9545

geth --datadir $HOME/privateNet/node2 init genesis.json
geth --datadir $HOME/privateNet/node2 
--fast 
--cache 512 
--port 30304 
--networkid 1000 
--identity "node2" 
--rpc 
--rpcport 9545 
--rpccorsdomain "*" 
--nodiscover 
--verbosity 4 
console

接來(lái)下需要建立節(jié)點(diǎn)間的聯(lián)系

這里有三種方式:

使用 admin.addPeer() 命令手動(dòng)添加 bootnode

在 boot node 上獲取 enode 信息:

admin.nodeInfo.enode
"enode://xxx"

將 boot node 的 enode 信息寫入 node2

admin.addPeer("enode://xxx");

geth console 中顯示

DEBUG[01-13|22:54:35] Ethereum peer connected                  id=b0ac9d91125e7a1b conn=inbound name=Geth/node2/v1.7.2-stable/darwin-amd64/go1.9.2

使用 admin.peers 命令可以看到兩個(gè)節(jié)點(diǎn)之間已經(jīng)取得聯(lián)系

# boot node
> admin.peers
[{
    caps: ["eth/63"],
    id: "b0ac9d91125e7a1bebff6d473cd3a9bcf41243060e52f97c3744053c060f24c9e2c36cc181e589d46ede5559509c7dd2c8528d9d039ee5cc900e0700f56c27e7",
    name: "Geth/node2/v1.7.2-stable/darwin-amd64/go1.9.2",
    network: {
      localAddress: "[::1]:30303",
      remoteAddress: "[::1]:64087"
    },
    protocols: {
      eth: {
        difficulty: 245728379,
        head: "0x65ae6da1d42ab4ea75bc468e47912cc61cd3a51b5d406482904c7d0c51785548",
        version: 63
      }
    }
}]
# node2
> admin.peers
[{
    caps: ["eth/62", "eth/63"],
    id: "8cc33dabb8f5fa2033cf646549e6988418439c8756d96e62f418ebb57ecd0cc2cfbf7ceab4450d262331d8d4fe68358200030e6a16988f2ebe393bf6214380fe",
    name: "Geth/bootnode/v1.7.2-stable/darwin-amd64/go1.9.2",
    network: {
      localAddress: "[::1]:64087",
      remoteAddress: "[::1]:30303"
    },
    protocols: {
      eth: {
        difficulty: 245728379,
        head: "0x65ae6da1d42ab4ea75bc468e47912cc61cd3a51b5d406482904c7d0c51785548",
        version: 63
      }
    }
}]

使用 static-nodes.json 文件

除了在 geth console 下使用 admin.addPeer() 也可在 --datadir 指定的目錄中添加 static-nodes.json 文件讓節(jié)點(diǎn)取得聯(lián)系

[
    "enode://xxx" // boot node 地址
]

使用命令行 --bootnodes 參數(shù)指定 enode

0x07 節(jié)點(diǎn)間服務(wù)自發(fā)現(xiàn)

// 假設(shè)有 node2,node3 都加入 bootnode,驗(yàn)證node2 node3 之間能否自動(dòng)服務(wù)發(fā)現(xiàn)

參考列表

Geth Commond Line Options

Geth Private network

What-does-each-genesis-json-parameter-mean

What-do-the-parameters-in-the-ropsten-genesis-file-mean

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/23951.html

相關(guān)文章

  • 以太是什么 - 以太開(kāi)發(fā)入門指南

    摘要:以太坊是什么以太坊是一個(gè)建立在區(qū)塊鏈技術(shù)之上,去中心化應(yīng)用平臺(tái)。運(yùn)行環(huán)境以太坊虛擬機(jī)是以太坊中智能合約的運(yùn)行環(huán)境。是由以太坊客戶端提供的是典型的開(kāi)發(fā)以太坊時(shí)使用的客戶端,基于語(yǔ)言開(kāi)發(fā)。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊是什么 - 以太坊開(kāi)發(fā)入門指南原文已更新,請(qǐng)讀者前往原文閱讀 很多同學(xué)已經(jīng)躍躍欲試投入到區(qū)塊鏈開(kāi)發(fā)隊(duì)伍當(dāng)中來(lái),可是又感覺(jué)無(wú)從下手,本文將基于以太坊平臺(tái),以通俗...

    tomlingtm 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.41 - 深入學(xué)習(xí)區(qū)塊

    摘要:和比特幣協(xié)議有所不同的是,以太坊的設(shè)計(jì)十分靈活,極具適應(yīng)性。超級(jí)賬本區(qū)塊鏈的商業(yè)應(yīng)用超級(jí)賬本超級(jí)賬本是基金會(huì)下的眾多項(xiàng)目中的一個(gè)。證書頒發(fā)機(jī)構(gòu)負(fù)責(zé)簽發(fā)撤 showImg(https://segmentfault.com/img/bV2ge9?w=900&h=385); 從比特幣開(kāi)始 一個(gè)故事告訴你比特幣的原理及運(yùn)作機(jī)制 這篇文章的定位會(huì)比較科普,盡量用類比的方法將比特幣的基本原理講出來(lái)...

    qianfeng 評(píng)論0 收藏0
  • 以太智能合約開(kāi)發(fā)第二篇:理解以太相關(guān)概念

    摘要:原文發(fā)表于以太坊智能合約開(kāi)發(fā)第二篇理解以太坊相關(guān)概念很多人都說(shuō)比特幣是區(qū)塊鏈,以太坊是區(qū)塊鏈。它是以太坊智能合約的運(yùn)行環(huán)境。是由以太坊節(jié)點(diǎn)提供。以太坊社區(qū)把基于智能合約的應(yīng)用稱為去中心化的應(yīng)用。 原文發(fā)表于:以太坊智能合約開(kāi)發(fā)第二篇:理解以太坊相關(guān)概念 很多人都說(shuō)比特幣是區(qū)塊鏈1.0,以太坊是區(qū)塊鏈2.0。在以太坊平臺(tái)上,可以開(kāi)發(fā)各種各樣的去中心化應(yīng)用,這些應(yīng)用構(gòu)成了以太坊的整個(gè)生態(tài)...

    yibinnn 評(píng)論0 收藏0
  • Mac環(huán)境搭建以太私有

    摘要:原文地址石匠的為了測(cè)試以太坊智能合約,最方便的是在本地搭建一個(gè)以太坊私有鏈。網(wǎng)絡(luò)在連接到其他節(jié)點(diǎn)的時(shí)候會(huì)用到,以太坊公網(wǎng)的網(wǎng)絡(luò)是,為了不與公有鏈網(wǎng)絡(luò)沖突,運(yùn)行私有鏈節(jié)點(diǎn)的時(shí)候要指定自己的網(wǎng)絡(luò)。當(dāng)設(shè)置為表示使用發(fā)布該鏈。 原文地址: 石匠的blog 為了測(cè)試以太坊智能合約,最方便的是在本地搭建一個(gè)以太坊私有鏈。在mac上搭建環(huán)境主要需要以下步驟。 geth安裝 geth是go-ether...

    張金寶 評(píng)論0 收藏0
  • 如何搭建以太私有

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接如何搭建以太坊私有鏈原文已更新,請(qǐng)讀者前往原文閱讀在開(kāi)發(fā)以太坊時(shí),很多時(shí)候需要搭建一條以太坊私有鏈,通過(guò)本文一起看看如何在上進(jìn)行搭建。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:如何搭建以太坊私有鏈原文已更新,請(qǐng)讀者前往原文閱讀 在開(kāi)發(fā)以太坊時(shí),很多時(shí)候需要搭建一條以太坊私有鏈,通過(guò)本文一起看看如何在Mac上進(jìn)行搭建。 寫在前面 閱讀本文前,你應(yīng)該對(duì)以太...

    J4ck_Chan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<