6DGS云,本质上是一套的区块链云帐本
帐本的意思是交易双方转帐,数据结构可表达为:token_x send token_y money extra_data timestamp
token_x是扣款帐户,token_y是收款帐户,send字段是转帐指令,money是转帐金额,extra_data可以附带订单信息(可以是json或者文本,例如:支付宝充值、会员付款等),timestamp为付款时间戳。
6DGS云帐本的扩展需求
1、不仅仅是转帐,能不能在交易双方之单发送消息(如微信、邮箱一样)。
2、不仅仅是数值,能不能存储文本信息甚至是JSON表单信息(就如数据库或者MongoDB一样)。
3、既然是区块链云帐本,要考虑创建一个子帐户,这个子帐户的交易纪录要能被父帐户查询,以便监管帐户使用。
6DGS云帐本-基础数据结构定义
一行交易纪录:token_x opcode token_y opval extra_data timestamp;
其中:
1、opcode是包含了send(转帐)等更多的指令字段,例如fork指令可分叉token子帐户等
2、opval是操作的值(如果转帐的时候,opval就是一个数值;如是发送消息,opval就是一段短文本等)。
经过上述的opcode字段与opval字段的抽象,opcode字段包含了send指令,也引入了新的指令如fork;opval字段当转帐时可以是数值,不是转帐时可以是更多的内容(如文字,JSON等)。从而大大扩展了区块链云帐本的功能。
6DGS云帐本-FORK/无限分叉的万向树
前面提到,为了考虑到子帐户是由父帐户分叉(fork指令)分叉出来的,以提供子帐户的交易纪录的同步至父节点的功能。
故定义:所有的token帐户,都是由父帐户分叉而来(fork),在发生其他操作之前(如send转帐,发送消息),必须先fork创建一个合规的token-id帐户。
根节点:标记为token-root({token-name}_0000000000000000 ),下划线之后的16个0是token-id(16位数字或者英文构成,根结点的token-id全部为0
万向树:所有的token-ID(token帐户),都是由token-root({token-name}_0000000000000000 )分叉出来的,或者由token-root的子帐户或者子孙帐户分叉出来的。
由此,形成了一个万向树(一个节点,可以fork无限的子帐户子节点,子帐户子节点也可以继续fork新的帐户/节点)。
六度共识同步:
1、token_x给token_y转帐,先在x与y自身帐本完成记帐
2、向token_x的父链递归同步该交易纪录
3、向token_y的父链递归同步该交易纪录
完成上述同步过程之后,该交易纪录完全实现写同步,然后进行读同步(订阅者同步)。
故:六度共识算法,是基于fork指令而形成了区块链帐户同步过程,从而实现一般情况下,完成一次记帐,可以在6个节点(token-ID)之内完成帐本同步,从而大大提升了帐户同步的效率,同时不降低记帐安全性(依赖于博弈论)
6DGS云帐本-每一个token-id就是一条链
fork指令不仅仅是形成万向树,也构建了六度共识算法同步的路径。并且让每一个token-id(token帐户)都形成自己的一条链。
数据结构定义为:token height txid txjson hash sign timestamp;
其中:
1、token:当前链的token-id(token帐户)
2、height:当前token子链的高度
3、txid:当前height链高度所对应的唯一交易纪录ID
4、txjson:链纪录,即一条交易纪录(token_x opcode token_y opval extra_data timestamp)的json文本
5、hash:链纪录的文本hash值(sha256)
6、sign:链纪录的文本hash值的数字签名(采用secp256k1椭圆加密签名算法)
7、timestamp:链纪录在该token子链上完成校验并且记录上链的时间戳
所以,上述谈到的fork以及send等指令产生的交易纪录,都会在万向树实现六度共识同步,从而在所有与token_x和token_y相关的父链节点形成多节点-多链同步(从G节点的数据管理,可以看到每一个txid交易纪录都会实现六度共识同步)。
至此,关于6DGS云的基础数据结构已经介绍完全。下面还有关于合约组件、指令组件、关系组件等更深入和详细的介绍。