优擎区块链数据库拥有一般区块链应用拥有的所有部件,除此之外,额外增加了具备映射、索引、验证功能的数据库映射层。
数据库映射层中包含以下功能组件:
- 映射:将存储在区块链上不可修改的数据库变更记录映射成——类似于传统关系型数据库,可供开发人员直接操作修改的数据库产品;
- 索引:通过索引技术可以保障数据库中数据查询的效率,避免区块链带来的低效;
- 验证:使用区块链独有的密码学机制,实时保障数据未被篡改、伪造,以及历史变更记录的正确性和一致性;
各组件使用的技术栈如下:
- 全节点:使用DotNet Core开发,可全平台部署;
- 轻量节点:分别提供DotNet Core与JavaScript的源代码,方便集成至任意客户端;
- 接口:使用Json RPC的方式调用,为二次开发做好了准备;
- 安全:按照《NIST安全框架》进行安全考虑
- 区块:使用经典的区块链式结构;
- 状态:区块链上的状态保存使用Patricia Merkle Trie进行保存,实现数据的快速查找和信息确认;
- 执行环境:使用最基础的栈虚拟机,虚拟机支持的命令见虚拟机指令;
- 共识:使用标准的PBFT共识算法,在私链、联盟链的环境里高效、安全;
- 持久化:系统内部数据以键值对的方式存储,可接入任意支持键值对的数据库(几乎所有传统数据库及NoSql数据库均支持);
- P2P:服务器之间使用可信名单及其证书签名进行沟通联系,未授权的服务器服务器无法接入P2P网络实现投票;
优擎区块链数据库设计为受限指令集的栈虚拟机,不过用户可以根据自身业务的需求进行指令集订制
| 指令 | 编码 | 输入 | 输出 | 描述 |
|---|---|---|---|---|
| CheckSignature | 59 | pk sig | 布尔 | 检查签名是否符合锁定的公钥 |
| CheckOneOfMultiSignature | 60 | n pkn ... pk2 pk1 sig | 布尔 | 检查一系列的签名中是否含有符合锁定的公钥 |

