1. 架设区块链网络系统,网络节点数总数不能少于4,验证节点数不能小于4,各个节点分布在不同的IP主机上。
1> 启动初始节点:./chainsqld.exe--conf="./chainsqld.cfg"
2> 启动其它节点:./chainsqld.exe--conf="./chainsqld.cfg"--net
2. 配置本地数据库:打开数据库,手动创建一个数据库连接,连接的名称为chainsqld.cfg文件中sync_db配置项中db字段对应的内容。
3. 配置本地需要同步的表信息。
4. 启动本地普通节点:./chainsqld.exe--conf="./chainsqld.cfg"--net
5. 通过API接口连接本地普通节点实现数据库操作的写入。
修改配置文件chainsqld.cfg
1. 基础配置:
[node_db]: 存储metadata数据库的类型,windows下设置为NuDB,ubuntu下设置为RocksDB
2. 普通节点的配置:
1> 根据需要配置[port_ws_admin_local]或[port_ws_public]。
2> 修改[ledger_history],全记录节点设置为full; 默认为256(保存最近256个区块)。
3> 修改[ips],填入连接的对端IP地址和端口号。端口号为对端节点配置文件中[port_peer]中的端口。
4> 修改[validators],填写信任节点的public key。
5> 修改[validation_quorum],大于或者等于 ([validators]中信任节点个数 + 1 )/ 2
3. 验证节点的配置:
1> 普通节点的全部设置
2> 运行以下命令获取验证节点公钥和私钥(seed)
# chainsqld -q validation_create { "status": "success", "validation_key": "TUCK NUDE CORD BERN LARD COCK ENDS ETC GLUM GALE CASK KEG", "validation_public_key": "n9KHn8NfbBsZV5q8bLfS72XyGqwFt5mgoPbcTV4c6qKiuPTAtXYk", "validation_seed": "xxJb6eTShB6bLpx3ZVuc6TFfCtZ6b" }
3> 将validation_seed和validation_public_key分别添加到validation_seed与validation_public_key字段中
[validation_seed] xxJb6eTShB6bLpx3ZVuc6TFfCtZ6b [validation_public_key] n9KHn8NfbBsZV5q8bLfS72XyGqwFt5mgoPbcTV4c6qKiuPTAtXYk
4> 添加信任其它的验证节点:在validators字段添加其它验证节点的public key。
[validators] n949f75evCHwgyP4fPVgaHqNHxUVN15PsJEZ3B3HnXPcPjcZAoy7 n9MD5h24qrQqiyBC8aeqqCWvpiBiYQ3jxSr91uiDvmrkyHRdYLUj n9KiYM9CgngLvtRCQHZwgC2gjpdaZcCcbt3VboxiNFcKuwFVujzS
4. 本地所需同步表的配置:
1> [sync_db]:本地数据库的连接,目前支持MySQL、PostgreSQL、SQLite3等。
type=mysql //对应使用的数据库类型 host=localhost //对应使用的数据库IP地址 port=3306 //对应使用的数据库端口 user=root //对应使用的数据库用户名 pass=root //对应使用的数据库密码 chainsql //对应使用的数据库名称 first_storage=0 //关闭先入库后共识的功能
2> [sync_tables]: 所需同步表信息的设置
账户名称、需要同步的表格、需要同步到的时间点或区块索引(LedgerIndex),以空格分隔,如: #持续同步table1 zP8Mum8xaGSkypRgDHKRbN8otJSzwgiJ9M table1 #同步table2到某个时间点 zP8Mum8xaGSkypRgDHKRbN8otJSzwgiJ9M table2 2016-11-18_10:30:10 #同步table3到区块索引20000 zP8Mum8xaGSkypRgDHKRbN8otJSzwgiJ9M table3 20000
3> [auto_sync] 1:节点启动后所有的新创建表格都会自动同步。 0:仅同步sync_tables中描述的表格
4> # 跳过某个ledger同步
zP8Mum8xaGSkypRgDHKRbN8otJSzwgiJ9M table3 ~20000 #同步加密表 zP8Mum8xaGSkypRgDHKRbN8otJSzwgiJ9M table3 xxJb6eTShB6bLpx3ZVuc6TFfCtZ6b #跳过hash同步 zP8Mum8xaGSkypRgDHKRbN8otJSzwgiJ9M table3 ~hash