- 支持通用智能合约
- 多种加密算法支持
- 极高的交易处理速度
- p2p链路加密
- 可选的区块生成时间
- DBFT共识容错
require:
- golang version 1.9+
- 正确的Go开发环境配置
ann账户是用户发送普通转账交易或部署合约使用的账户
./anntool account geneth
份额账户用于发送交易存储节点share份额相关的交易,包括抵押,参选,赎回等
./anntool account gen
配置新的链网络,需要配置链的创世信息 ( genesis.json ),主要有初始验证节点、初始token分配、初始share分配三项。
初始搭建一个新的链网络时,需要配置链初始节点信息。genesis.json 文件中有一个 validators 数组,表示链的初始状态下,有哪些验证节点。假设我们初始有4个验证节点,则需要将这4个节点的信息填写进validators数组。像下边这样:
"validators": [
{
"pub_key": [
1,
"BEED23BC7F3427809FACB27A2A15AA4929FE30AE44C4523A70A261299F52AAE9"
],
"amount": 100,
"is_ca": true
},
{
"pub_key": [
1,
"4485349A302B4F08B08D0602B6E205B587127DECF1C326C0D1038612E8966E1A"
],
"amount": 100,
"is_ca": true
},
...
],
如果单节点运行,数组中配置自己就可以了。
token是链网络中用于价值交互以及用作交易手续费的数字信息,在这里可以配置新的链网络中,token的初始分配情况,像下边这样:
"init_token": [
{"address":"B9A383673C09366D05A97323F682624DC11670CC","amount":"100000000000","extra":"hello11111"},
{"address":"9F403EC1C16317683961BEA249FEFCE88CE619D1","amount":"100000000000","extra":"hello22222"}
],
share是链网络中用于参与共识的份额信息,在这里可以配置新的链网络中,share的初始分配情况,像下边这样:
"init_share": [
{"pubkey":"9946622A1233E31BBE09CC439D8C217D98D78BC94A436C6E34CA997C8253C009","amount":"10000000","extra":"hello22222"},
{"pubkey":"59923B75050F05BBBF789781965760038A4E4C048A050B8A9CE7ABF3D70D3F11","amount":"10000000","extra":"hello22222"},
],
genesis.json 配置文件中 chain_id 参数表示当前链的 ID,需要加入同一个链网络的节点,需保持 chain_id 一致。
在 config.toml 配置文件中 seeds 参数表示节点接入链网络的入口,在这里我们统一填写其中一个节点的地址即可:
seeds = "172.28.228.75:46656"
这里的端口默认为 46656,如有冲突,可以修改参数 p2p_laddr
配置单节点网络与配置多节点网络步骤基本相同,只是在步骤1.1中,validators数组只配置自己即可。
接入已有的链网络,跟配置新的链网络相比,区别在于不需要步骤1,配置区块链ID为目标网络的区块链ID,配置链接seeds之后即可。
environment = "development" // 日志级别,支持development和production
p2p_laddr = "tcp://0.0.0.0:46656" // P2P 监听端口
rpc_laddr = "tcp://0.0.0.0:46657" // 本地RPC命令监听端口
log_path = "" // 日志路径
seeds = "172.28.228.75:46656" // 加入链网络的入口地址
auth_by_ca = false // 加入链网络时是否使用CA认证
enable_incentive = true // 是否启用激励
db_backend = "leveldb" // 底层数据库,暂不可改
moniker = "anonymous" // 暂不支持修改
signbyca = "" // auth_by_ca=true 时有效,CA节点给当前节点的签名
{
"genesis_time": "0001-01-01T00:00:00Z", // 无需配置
"chain_id": "ann", // 区块链ID
"validators": null, // 初始验证节点数组
"app_hash": "", // 无需配置
"plugins": "specialop,suspect,querycache", // 插件
"init_token": null, // 初始token分配数组
"init_share": null // 初始share分配数组
}
{
"pub_key": [ // 节点公钥
1, // 公钥加密算法,代表ED25519,暂不支持修改
"5BE3622901BA3A93F81119C262EAB3B8321180FBD9CE49B00D05A1335F8BD14F"
],
"last_height": 0, // 共识状态,无需修改
"last_round": 0, // 共识状态,无需修改
"last_step": 0, // 共识状态,无需修改
"last_signature": null, // 共识状态,无需修改
"last_signbytes": "", // 共识状态,无需修改
"priv_key": [ // 节点私钥
1,
"8A0F79C3434808CADF184000649E368C0C0A53206BC84066A6437BDE39E493595BE3622901BA3A93F81119C262EAB3B8321180FBD9CE49B00D05A1335F8BD14F"
]
}
./ann run
anntool是一款命令行工具,具体使用规则请使用 -h 参数查询,如果节点配置时修改了默认的rpc端口参数,使用anntool时请使用 -backend 指定IP及端口
./anntool tx send --privkey 0FEE866780A89438DADEEC512B522D02E95125775471A61C179B69E81C362B1C --to C7038C9F5FDE83EB3A6341EA8AC95D05BCB3BBAB --value 999 --nonce 0
./anntool query balance --address C7038C9F5FDE83EB3A6341EA8AC95D05BCB3BBAB
annchain遵守Apache License 2.0,。 详细信息请查看项目根目录下的LICENSE文件