創世區塊配置
在項目根目錄下的conf/default/genesis.conf,爲創世區塊配置文件。
meta {
# 每條鏈的唯一標識
# 每個區塊和交易只會屬於一條唯一的鏈,保證安全性
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 ]
},
...
]
在此,我們使用默認配置即可,暫不用修改。
星雲節點配置
在項目根目錄下的conf/default/config.conf,爲星雲節點配置文件
# 網絡配置
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: "n1XkoVVjswb5Gek3rRufqjKNpwrDdsnQ7Hq"
# Coinbase地址,該地址用於接收礦工的挖礦獎勵,可以和礦工地址一致
# 該地址的keystore無需暴露,不用放置在配置的keydir下
coinbase: "n1FF1nz6tarkDVwWQkMnnwFPuPKUaQTdptE"
# 礦工地址的密碼
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"
}
}
在此,我們使用默認配置即可,暫不用修改。
礦工節點配置
在項目根目錄下的conf/example/miner.conf,爲礦工節點配置文件
network {
# seed: "UNCOMMENT_AND_SET_SEED_NODE_ADDRESS"
seed: ["/ip4/127.0.0.1/tcp/8680/ipfs/QmP7HDFcYmJL12Ez4ZNVCKjKedfE7f48f1LAkUc3Whz4jP"]
listen: ["0.0.0.0:8780"]
network_id: 1
}
chain {
chain_id: 100
datadir: "miner.1.db"
keydir: "keydir"
genesis: "conf/default/genesis.conf"
start_mine: true
# 總共21個礦工,在我們目前的測試環境中,由於我們只啓動了21個礦工中的一個,就是coinbase,挖礦獎勵將放入該賬戶
coinbase: "n1XkoVVjswb5Gek3rRufqjKNpwrDdsnQ7Hq"
miner: "n1FF1nz6tarkDVwWQkMnnwFPuPKUaQTdptE"
# 密碼
passphrase: "passphrase"
# 加密算法
signature_ciphers: ["ECC_SECP256K1"]
}
rpc {
rpc_listen: ["127.0.0.1:8784"]
http_listen: ["127.0.0.1:8785"]
http_module: ["api","admin"]
# http_cors: []
}
app {
log_level: "debug"
log_file: "logs/miner.1"
enable_crash_report: true
}
stats {
enable_metrics: false
influxdb: {
host: "http://localhost:8086"
db: "nebulas"
user: "admin"
password: "admin"
}
}
啓動星雲鏈
此時啓動的星雲鏈是本地的私有鏈,和官方的測試網和主網沒有任何相互關聯
第一步:啓動你的第一個星雲節點。
cd $GOPATH/src/github.com/nebulasio/go-nebulas
./neb -c conf/default/config.conf
啓動成功的話,將會看到如下信息
第二步:啓動你的第一個礦工節點,它的seed節點即我們剛剛啓動的第一個節點。
cd $GOPATH/src/github.com/nebulasio/go-nebulas
./neb -c conf/example/miner.conf
在這個節點啓動後,你會先看到如下信息,表示當前節點正在找種子節點同步。
等待一會兒,將會看到如下信息,表示當前節點已經連上了seed節點完成了同步。
再等待幾分鐘,你會看到如下信息,表示當前礦工節點挖出了第一個區塊。
由於我們只啓動了21個礦工節點中的一個礦工節點,所以每隔15*21s纔出一個塊。你可以啓動更多的礦工節點,填補的空缺。但是需要注意,多個節點間的端口號不要相互衝突了。