星云链智能合约开发:运行星云链
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了星云链智能合约开发:运行星云链相关的知识,希望对你有一定的参考价值。
创世区块配置
在项目根目录下的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才出一个块。你可以启动更多的矿工节点,填补的空缺。但是需要注意,多个节点间的端口号不要相互冲突了。
以上是关于星云链智能合约开发:运行星云链的主要内容,如果未能解决你的问题,请参考以下文章