星雲鏈智能合約開發(三):運行星雲鏈
阿新 • • 發佈:2018-05-07
星雲鏈智能合約開發 安裝星雲鏈 創世區塊配置
在項目根目錄下的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才出一個塊。你可以啟動更多的礦工節點,填補的空缺。但是需要註意,多個節點間的端口號不要相互沖突了。
星雲鏈智能合約開發(三):運行星雲鏈