1. 程式人生 > >基於星雲鏈的智慧合約與Dapp(二)——執行星雲鏈

基於星雲鏈的智慧合約與Dapp(二)——執行星雲鏈

上一篇文章講了搭建星雲私鏈的基本環境,接著我們來講講如何配置和執行星雲鏈。這裡講的只是一些基礎的介紹,為智慧合約和Dapp做準備,後期我們分析星雲鏈原始碼的時候再詳細講解。

創世區塊

在啟動星雲鏈之前,我們必須定義創世區塊的配置檔案。

創世區塊配置

我們可以在原始碼根目錄conf/default/genesis.conf下,找到一個完整的創世區塊配置例項。

meta {
  # 每條鏈的唯一標識
  # 每個區塊和交易只會屬於一條唯一的鏈,保證安全性
  # 對於主網,chain_id=1;對於測試網,chain_id=1001
  chain_id: 100
}

consensus {
  # 在貢獻度證明(PoD)被充分驗證前,星雲鏈採用DPoS共識演算法
# DPoS共識中,21個人組成一個朝代 # 每隔一段時間都會切換朝代,每個朝代內,21個礦工輪流出塊 # 由於DPoS只是過渡方案,所以暫時不開放給公眾挖礦,即當前版本朝代不會發生變更 dpos { # 初始朝代,包含21個初始礦工地址 dynasty: [ [ miner address ], ... ] } } # 預分配的代幣 token_distribution [ { address: [ allocation address ] value: [ amount of allocation tokens ] }, ...
]
配置檔案

我們在啟動一個星雲節點前,需要定義好該節點的配置檔案。

星雲節點配置檔案
# 網路配置
network {
  # 對於全網第一個節點,不需要配置seed
  # 否則,其他節點啟動時需要配置seed,seed節點將會把網路中其他節點的路由資訊同步給剛啟動的節點
  # 可以配置多個seed, ["...", "..."]
  seed: ["/ip4/127.0.0.1/tcp/8680/ipfs/QmP7HDFcYmJL12Ez4ZNVCKjKedfE7f48f1LAkUc3Whz4jP"]

  # 節點監聽網路訊息埠,可以配置多個
  listen: ["0.0.0.0:8680"
] # 網路私鑰,用於確認身份節點 # private_key: "conf/network/id_ed25519" } # 鏈配置 chain { # 鏈的唯一標識 chain_id: 100 # 資料儲存地址 datadir: "data.db" # 賬戶keystore檔案儲存地址 keydir: "keydir" # 創世區塊配置 genesis: "conf/default/genesis.conf" # 簽名演算法,請勿修改 signature_ciphers: ["ECC_SECP256K1"] # 礦工地址,礦工的keystore檔案需要放置在配置的keydir下 miner: "n1FF1nz6tarkDVwWQkMnnwFPuPKUaQTdptE" # Coinbase地址,該地址用於接收礦工的挖礦獎勵,可以和礦工地址一致 # 該地址的keystore無需暴露,不用放置在配置的keydir下 coinbase: "n1XkoVVjswb5Gek3rRufqjKNpwrDdsnQ7Hq" # 礦工地址的密碼 passphrase: "passphrase" } # API配置 rpc { # GRPC服務埠 rpc_listen: ["127.0.0.1:8684"] # HTTP服務埠 http_listen: ["127.0.0.1:8685"] # 開放的API模組 # API模組包含所有和使用者私鑰無關的介面 # Admin模組包含所有和使用者私鑰相關的介面,需要慎重考慮該模組的訪問許可權 http_module: ["api", "admin"] } # 日誌配置 app { # 日誌級別: 支援[debug, info, warn, error, fatal] log_level: "info" # 日誌存放位置 log_file: "logs" # 是否開啟crash report服務 enable_crash_report: false } # 監控服務配置 stats { # 是否開啟監控服務 enable_metrics: false # 監控服務將資料上傳到Influxdb # 配置Influxdb的訪問資訊 influxdb: { host: "http://localhost:8086" db: "nebulas" user: "admin" password: "admin" } }

提示:我們可以通過修改監聽埠號、資料儲存地址、礦工地址、Coinbase地址和日誌存放地址來配置更多的曠工

啟動星雲鏈
cd $GOPATH/src/github.com/nebulasio/go-nebulas
./neb -c conf/default/config.conf

啟動成功的話,我們將會看到如下資訊,
啟動成功預設情況下,使用配置檔案conf/default/config.conf啟動的節點並不是曠工節點。
接下來,啟動我們的第一個曠工節點,它的seed節點即我們剛剛啟動的第一個節點。

cd $GOPATH/src/github.com/nebulasio/go-nebulas
./neb -c conf/example/miner.conf

節點啟動後,我們會看到如下資訊,表示當前節點正在找種子節點同步。
同步中等待一會兒,我們將看到如下資訊,表示當前節點已經連上了seed節點完成了同步同步完成在等待幾分鐘,我們會看到如下資訊,表示當前礦工節點挖出了第一個區塊。挖礦成功

提示: 目前的DPoS共識演算法,會有21個節點輪流出塊。由於我們只啟動了21個礦工節點中的一個礦工節點,所以每隔15*21s才出一個塊。你可以啟動更多的礦工節點,填補空缺。但是需要注意,多個節點間的埠號不要相互衝突。

下一章
在星雲鏈上傳送交易