安装配置

此文档已停止更新,最新文档请参考 github wiki 文档

ChainSQL是一个基于区块链网络的数据库平台,先要创建区块链网络,再去进行数据库表的相关设置。
安装步骤

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