美文网首页
FISCO BCOS代码分析

FISCO BCOS代码分析

作者: 谢鹏Nevin | 来源:发表于2018-08-11 17:44 被阅读0次

    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接口的以太坊节点连接。

    相关文章

      网友评论

          本文标题:FISCO BCOS代码分析

          本文链接:https://www.haomeiwen.com/subject/ruidbftx.html