FISCO BCOS代码分析

2018-08-11  本文已影响0人  谢鹏Nevin

FISCO BCOS源代码目录

FISCO BCOS的代码大量参考了以太坊C++的代码

================================

目录

UTXO

以太坊使用账户管理余额,比特币则使用UTXO模型。以太坊的账户模型主要有两点限制:

因此FISCO BCOS增加了对于UTXO的支持,可以使用带有Token的资产,这些资产有明确的金额和所有权。

具体内容请参考以下链接:以太坊上基于UTXO模型的转账交易方案使用手册
返回目录

abi

CNS(合约命名服务)模块代码

cert

CA认证生成脚本。和以太坊不同,所有的节点都必须持有CA认证才允许加入网络。

cmake

deps

doc

docker

Docker镜像示例

eth

主入口目录,其中main.cpp包含main函数入口

evmjit

VM JIT is a library for just-in-time compilation of Ethereum EVM code. It can be used to substitute classic interpreter-like EVM Virtual Machine in Ethereum client.

homebrew

Mac OS包管理软件

libchannelserver

AMOP(链上链下通信协议)实现目录

libcontact

libdevcore

基础通用组件实现目录,如工具类函数、基础数据类型结构定义、IO操作函数、读写锁、内存DB、TrieDB、SHA3实现、RLP编解码实现、Worker模型等等

libdevcrypto

加密算法包,相对于以太坊源代码,FISCO BCOS添加了对于国产密码学标准的支持。

算法类型 国密版FISCO BCOS 非国密版FISCO BCOS
签名算法 SM2 (公私钥长度:512 bits, 256 bits) ECDSA (公私钥长度: 512 bits, 256 bits)
哈希算法 SM3 (哈希串长度: 256 bits) SHA3 (哈希串长度: 256 bits)
对称加解密算法 SM4 (对称密钥长度: 128 bits) AES (加密秘钥长度: 256 bits)

请参考FISCO BCOS国密特性
回到目录

libdiskencryption

存储层面上的加密, 落盘存储加密实现目录

libethcore

区块链核心数据结构目录。如ABI、秘钥管理、区块头、预编译、交易结构等等

libethereum

区块链主框架逻辑目录。如交易池、系统合约、节点管理、块链、块、链参数等等

libevm

虚拟机主目录。如解释器、JIT等等

libevmcore

OPCODE指令集定义、定价

libodbc

支持数据库分布式存储

libp2p

p2p包实现了通用的p2p网络协议。包括节点的查找,节点状态的维护,节点连接的建立等p2p的功能。p2p 包实现的是通用的p2p协议。 某一种具体的协议(比如eth协议。 whisper协议。 swarm协议)被封装成特定的接口注入p2p包。所以p2p内部不包含具体协议的实现。 只完成了p2p网络应该做的事情。FISCO BCOS添加了节点SSL校验,用于节点介入控制和认证。
和以太坊一样,FISCO BCOS也支持RPLx。RLPx协议属于会话层的协议,主要功能是在节点之间建立并维持通信,节点的发现和节点之间数据流的传输主要是由传输层的UDP和TCP协议完成.
RLPx协议实现了完备的前向安全性(Perfect Forward Secrecy),即现有的密钥泄漏不会导致之前信道上的信息被破解,因为RLPx协议每次建立的连接都使用了不同的密钥.
实现过程是通过了一次Diffie–Hellman密钥交换,连接的双方各随机生成一个私钥,然后将算出的公钥发送给对方,最后双方通过手中的密钥和对方的公钥生成了一个共享密钥,此次连接的信道上将会使用此共享密钥加密传输信息.
回到目录

libpaillier

FISCO BCOS支持加法同态,可以在不解密的情况下,对于加密数据进行加法操作,而不泄露参与加法的具体数字。
回到目录

libpbftseal

不同于比特币的PoW,和以太坊的PoS,PBFT(拜占庭容错)是FISCO BCOS的共识算法之一。
回到目录

libraftseal

RAFT是FISCO BCOS支持的另外一种共识算法,相比于PBFT的1/3,RAFT可以提供1/2的容错率。RAFT本质上是一种同步算法,不解决容错的作恶的问题。
回到目录

libsinglepoint

共识算法插件

libstatistic

访问频率统计与控制实现目录

libweb3jsonrpc

web3 RPC实现目录

libwebthree

libwhisper

Whisper协议——Whisper协议是DApp间通信的通信协议。Whisper是为需要大规模的多对多数据发现、信号谈判和最少的传输通信、完全的隐私保护的下一代DApp而设计的。此功能为以太坊基础通讯协议。
Whisper(低语者)是以太坊的一个功能扩展。它是以太坊生态中的一个重要一环(以太坊的智能合约smart contract实现了分布式逻辑,以太坊的Swarm实现了分布式存储,以太坊的Whisper实现了分布式消息)。
Whisper将实现智能合约间的消息互通,届时可以实现功能更加复杂的DApp。

sample

一键安装与部署

script

与安装相关的脚本

smartcontract

系统合约实现目录

tool

utils

web3lib

web3 是一个通过RPC 调用 和本地节点进行通信的js库。web3可以与任何暴露了RPC接口的以太坊节点连接。

上一篇下一篇

猜你喜欢

热点阅读