长安链的核心模块有哪些?
共识算法
共识算法是指在分布式场景中,多个节点为了达成相同的数据状态而运行的一种分布式算法。在分布式场景中,可能出现网络丢包、时间漂移、节点宕机、节点作恶等等故障情况共识算法需要能够容忍这些错误,保证多个节点取得相同的数据状态。
智能合约
在长安链上,用户可以通过高级语言C++、Go、Rust、JS来编写智能合约,经过编译后,以WASM、EVM字节码的形式存储在区块链中。用户可以通过发送交易来触发执行智能合约中的代码。
P2P网络
长安链的网络模块是基于libp2p的v0.6.4版本实现并改进的。为了满足长安链网络消息在多链场景下的数据隔离需求,修改了libp2p-gossip-pubsub模块源码,加入节点白名单机制,精确控制路由表,并让节点上的每条链都独享一个独立的Pubsub服务,保证了广播数据只会在链内的节点传播的确定性。
账本存储
存储模块负责持久化存储链上的区块、交易、状态、历史读写集等账本数据,并对外提供上述数据的查询功能。长安链支持常用的数据库来存储账本数据,如LevelDB、RocksDB、MySQL等数据库,业务可选择其中任意一种数据库来部署区块链。
并行调度
长安链支持块内通用交易的并行调度执行,以加速区块链整体处理性能。区块提议节点在提议过程中运行并行调度算法,产生块内交易并行执行顺序关系。执行顺序可利用有向无环图,也就是DAG表示,DAG中节点代表交易,边代表交易间happens-before关系。
身份权限管理
在长安链中,面向联盟链场景,实现了一种基于数字证书的用户标识体系、基于角色的权限控制体系。后续迭代中,将支持更为丰富的身份权限管理模型。