比特元是一种简单稳定、拓展性强的公有链网络。2013年12月,比特元诞生,初始为预挖空投+POW共识机制产出,2015年,比特元共识机制更新为POS。经过四年多的设计与研究,2018年5月17日,比特元区块链3.0开发公测、主网上线,并升级成:SPOS(Safe POS),即:优化了随机数的安全POS共识机制。6个多月后,2018年12月07日,比特元(BTY)在Github上正式开源。
比特元的研发采用了杭州复杂美Chain33的底层技术,是实现并落地的多链(平行公链)架构的公有链项目。在比特元区块链上可开发多条平行公链,各条平行公链既具备多样又独立的区块链生态建设和DAPP开发,又可实现多链间的跨链互换功能。平行公链项目应用领域有:稳定币、红包、社交、电子商务、资产上链、债权上链、存证、游戏。
项目支持的存储方式
比特元区块链率先创新实现了 MVCCKVDB(多版本 KV 数据存储),传统的区块链是以 merkle 树或是 MPT 树的形式来存储数据,每次数据的改变,
树都会做一次重构,效率比较低下。 例如,对于一颗 20 层的默克尔树,查询一个叶子节点的数据需要进行 20 次读操作来完成,导致数据查询的效率仅为普通数据库的查询效率的 1/20,对于每秒能完成 10 万次读操作的系统,每秒仅能读取 5000 笔交易的数据,大幅限制了系统的读取性能。写数据时,同样要加载树型分支上的多个节点数据,并最终要在更新以后写入到磁盘,这里面的操作消耗也是比较大的。比特元借鉴了数据库设计中的 MVCC 理念(Multi-Version Concurrency Control 多版本并发控制),设计了独创的 KVMVCC 的数据存储格式,用于改善 MAVL 或者 MPT 结构中存在的低效的问题,更好的满足区块链数据增长到一定规模后的保持较高的数据读写性能。
Hash 计算:
statehash=hash(prevstatehash,KVSet,height),包含了前一区块的状态 Hash 信息,本区块的状态数据 KVSet 信息,本区块的高度信息(也就是版本信息)。
有以下对应关系会被存储到每个节点的数据库中:
hash->height(version)
height(version)->hash
key:height(version)->value
lastest:key->value
数据查询:
根据 statehash 可以查找到对应的 height(version),根据 height 可以查找到对应高度时,具体 key 值对应的 value 值。
数据验证:
对 于 特 定 高 度 height 的 KVSet , 可 以 根 据 前 一 区 块 的 hash 值prevstatehash、KVSet、height 进行 Hash 运算,如果 hash 值相符,则数据未被篡改,否则,数据被改动或者数据有误(高度有误,或者 KVSet 数据有误)。
对于最新版本数据的维护:
特别的,当对于最新区块的 key、value 值进行存储时,同时保留(新增key)或者更新(已经有历史版本的 key)key:latest->value 的映射关系到本地 key-value 数据库中存储。当需要获得最新的批量数据时,可以根据 latest前缀(可以自定义)来批量查询最新数据。由于通常的 key-value 数据库可以很好的支持前缀匹配查询,查询效率会比较高,远高于默克尔树存储结构的查询。
项目超级节点
为了提升区块链的性能,平行公链一般采用 DPOS(股份授权证明机制)共识,即在链上选拔出数个付出算力和宽带支持的超级节点,这些超级节点必
须将交易信息打包进区块,并且区块信息广播给其他节点,将交易信息储存在区块上,发挥共同治理社区的功能。
一条公链成功与否,其中一个重点衡量指标就是其链上的节点数。超级节点机制可以帮助平行公链快速建立链上生态,并依靠各个超级节点的运营、维
护,促使平行公链生态变得更加繁荣,实现一个更加稳定、强大、去中心化的区块链系统。
同时,平行公链运营方可设立平行链基金会,通过基金会对超级节点的各类token 激励机制、运营手段,促进超级节点的能动性和积极性,并通过 token的回购,交易手续费等方式,促进平行公链健康且可持续的发展。
项目支持预言机功能
预言机实现了区块链和真实世界的链接,预言机是一种可信任的实体,它通过签名引入关于外部世界状态的信息,从而允许确定的智能合约对不确定的
外部世界做出反应。预言机具有不可篡改、服务稳定、可审计的特点。
预言机合约发布数据分为三个步骤:
(1) 发布数据发布事件(告知全网,将有某个事件的结果于未来公布,并分配唯一的事件 ID,如果事件未发生,可以进行撤销)。
(2) 预发布结果(数据提供者预发布时间结果,如果被审计发现结果有问题,可以撤销)。
(3) 发布结果(预发布结果经过审计后,最终全网发布,不可篡改,可审计追溯)。
其他合约(比如竞猜合约)可以使用上述步骤1中的事件 ID 和具体事件来开展(竞猜)活动,当步骤3结果公布后,竞猜合约根据事件 ID 对应的结果来触发合约完成竞猜结算,实现了无人干预的客观、可信、可审计、可追溯的公平竞猜。