EOSIO-Taurus:面向企业的区块链
Bullish在过去两年中开发、测试并实施了一个面向企业级性能的下一代EOSIO版本。我们现在准备将这些进展开源并与公众分享。欢迎了解EOSIO-Taurus。
概述
Bullish是全球每日现货交易总量前六的加密货币交易所之一,保护客户资产而不牺牲性能是我们的首要任务。我们从头开始精心构建了Bullish托管和交易系统,以提供:
- 客户资金的加密安全(所有交易都需要私钥)
- 交易的不可否认性(无超级用户,只有客户可以交易)
- 交易所操作的不可变性和可审计性,供监管机构检查
- 确保每笔交易后客户余额平衡的能力
我们对所有现有区块链进行了广泛调查,发现每个都提供了独特的能力子集,但并非所有必需功能。因此我们决定从EOSIO代码库开始,分叉它来构建满足我们单生产者私有区块链业务需求的独特功能集。
EOSIO-Taurus的独特功能
Bullish的一些关键需求包括:
- 安全处理大量交易的能力
- 支持生产者弹性、自动故障转移和灾难恢复
- 低延迟
- 从区块链向外部系统发布事件
- 高性能查询区块链数据
- 保留交易顺序
- 为开发人员提供单步调试智能合约执行的工具
支持生产者高可用性
为确保企业区块链部署的高可用性,producer_ha_plugin
基于RAFT共识协议提供块生产者高可用性解决方案。该解决方案还使区块链能够在极端情况下(如整个数据中心丢失)存活和恢复。
支持保留企业用例的交易输入顺序
amqp_trx_plugin
支持从AMQP队列(如RabbitMQ)消费交易,即使生产者节点在自动故障转移期间切换,交易也按先进先出顺序处理。
支持高性能查询和区块链流式传输
支持从智能合约到外部系统的流式传输
event_streamer_plugin
支持从智能合约流式传输消息。智能合约可以调用提供的push_event内在函数将消息发送到AMQP队列。
高性能多线程查询区块链状态
rodeos_plugin
提供高性能多线程查询引擎和接口,针对区块链状态运行并发只读查询。
能够调试和单步执行智能合约
EOSIO-Taurus提供生成合约的x86本地代码文件和测试工具在本地机器上执行和调试本地代码文件的解决方案,以及nodeos中加载本地代码文件的支持。
协议缓冲区支持合约操作和区块链数据
EOSIO-Taurus支持使用协议缓冲区作为区块链和交易数据的数据结构编码格式,包括操作数据、表数据和返回值。
支持高级签名提供者和签名算法
TPM签名支持提供更高安全性
EOSIO-Taurus包含新的TPM签名提供者,允许nodeos和cleos使用TPM设备中的不可提取密钥签署交易和/或区块。
合约中标准ECDSA密钥支持
EOSIO-Taurus在合约中添加对标准ECDSA密钥格式的支持。
合约中RSA签名支持
EOSIO-Taurus通过高性能内在函数在合约中添加对RSA签名验证的支持。
使用快照实现状态持久化的能力
EOSIO-Taurus以便携快照格式持久化状态,并确保状态文件创建具有容错性和崩溃安全性。
能够编辑快照并导入本地开发机器进行调试
EOSIO-Taurus区块链提供特殊调试功能支持,使开发人员能够从生产机器下载状态快照并对其进行更改(包括替换块签名密钥和账户密钥),然后在本地机器上继续生产。
支持大规模合约的长时间运行交易
EOSIO-Taurus生产者支持大型合约操作的长时间运行交易,允许交易执行时间超过块时间,由配置参数控制。
异步块签名以提高块生产性能
在EOSIO-Taurus中,块签名和块构建在不同的线程中发生。块构建完成后进行块签名,从而可以有效利用TPM签名提供者而不会减慢块生产。
结果与总结
EOSIO-Taurus区块链已被Bullish使用超过两年,正常运行时间超过99.9%,支持超过2000亿美元的交易量。它包含更新的创新,例如包括活跃块生产者节点在内的EOSIO-Taurus节点的零停机升级。