基於星雲鏈的智慧合約與Dapp(二)——執行星雲鏈
阿新 • • 發佈:2019-01-29
上一篇文章講了搭建星雲私鏈的基本環境,接著我們來講講如何配置和執行星雲鏈。這裡講的只是一些基礎的介紹,為智慧合約和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才出一個塊。你可以啟動更多的礦工節點,填補空缺。但是需要注意,多個節點間的埠號不要相互衝突。