FISCO BCOS的代碼大量參考了以太坊C++的代碼
================================
目錄
- UTXO
- abi
- cert
- docker
- eth
- evmjit
- libdevcrypto
- libdiskencryption
- libpaillier
- libp2p
- libpbftseal
- libraftseal
- libsinglepoint
- homebrew
- libchannelserver
- libdevcore
- libethcore
- libethereum
- libevmcore
- libodbc
-
smartcontract
=================================
UTXO
以太坊使用賬戶管理余額,比特幣則使用UTXO模型森枪。以太坊的賬戶模型主要有兩點限制:
對于以太坊的賬戶模型挡育,來源賬戶在給去向賬戶進行轉賬時着茸,直接從本賬戶的余額中扣減轉賬數(shù)額资昧,但無法確定所扣減的數(shù)額全部/部分來源于先前哪一筆交易,有哪些前置的消費條件耘斩,從而無法進行轉賬前的業(yè)務邏輯校驗顺少。
當同一來源賬戶在給多個去向賬戶進行轉賬時,存在多個交易共同操作來源賬戶余額的情況倦始,基于以太坊數(shù)據(jù)一致性方案中交易列表及交易回執(zhí)的有序性要求斗遏,區(qū)塊鏈網(wǎng)絡無法對轉賬交易進行并行處理。
因此FISCO BCOS增加了對于UTXO的支持鞋邑,可以使用帶有Token的資產(chǎn)诵次,這些資產(chǎn)有明確的金額和所有權。
具體內容請參考以下鏈接:以太坊上基于UTXO模型的轉賬交易方案使用手冊
返回目錄
abi
CNS(合約命名服務)模塊代碼
cert
CA認證生成腳本枚碗。和以太坊不同逾一,所有的節(jié)點都必須持有CA認證才允許加入網(wǎng)絡。
cmake
deps
doc
docker
Docker鏡像示例
eth
主入口目錄肮雨,其中main.cpp包含main函數(shù)入口
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(鏈上鏈下通信協(xié)議)實現(xiàn)目錄
libcontact
libdevcore
基礎通用組件實現(xiàn)目錄遵堵,如工具類函數(shù)、基礎數(shù)據(jù)類型結構定義怨规、IO操作函數(shù)陌宿、讀寫鎖、內存DB椅亚、TrieDB限番、SHA3實現(xiàn)、RLP編解碼實現(xiàn)呀舔、Worker模型等等
libdevcrypto
加密算法包弥虐,相對于以太坊源代碼,F(xiàn)ISCO BCOS添加了對于國產(chǎn)密碼學標準的支持媚赖。
算法類型 | 國密版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) |
libdiskencryption
存儲層面上的加密, 落盤存儲加密實現(xiàn)目錄
libethcore
區(qū)塊鏈核心數(shù)據(jù)結構目錄霜瘪。如ABI、秘鑰管理惧磺、區(qū)塊頭颖对、預編譯、交易結構等等
libethereum
區(qū)塊鏈主框架邏輯目錄磨隘。如交易池缤底、系統(tǒng)合約、節(jié)點管理番捂、塊鏈个唧、塊、鏈參數(shù)等等
libevm
虛擬機主目錄设预。如解釋器徙歼、JIT等等
libevmcore
OPCODE指令集定義、定價
libodbc
支持數(shù)據(jù)庫分布式存儲
libp2p
p2p包實現(xiàn)了通用的p2p網(wǎng)絡協(xié)議。包括節(jié)點的查找魄梯,節(jié)點狀態(tài)的維護桨螺,節(jié)點連接的建立等p2p的功能。p2p 包實現(xiàn)的是通用的p2p協(xié)議酿秸。 某一種具體的協(xié)議(比如eth協(xié)議灭翔。 whisper協(xié)議。 swarm協(xié)議)被封裝成特定的接口注入p2p包允扇。所以p2p內部不包含具體協(xié)議的實現(xiàn)缠局。 只完成了p2p網(wǎng)絡應該做的事情。FISCO BCOS添加了節(jié)點SSL校驗考润,用于節(jié)點介入控制和認證狭园。
和以太坊一樣,F(xiàn)ISCO BCOS也支持RPLx糊治。RLPx協(xié)議屬于會話層的協(xié)議,主要功能是在節(jié)點之間建立并維持通信,節(jié)點的發(fā)現(xiàn)和節(jié)點之間數(shù)據(jù)流的傳輸主要是由傳輸層的UDP和TCP協(xié)議完成.
RLPx協(xié)議實現(xiàn)了完備的前向安全性(Perfect Forward Secrecy),即現(xiàn)有的密鑰泄漏不會導致之前信道上的信息被破解,因為RLPx協(xié)議每次建立的連接都使用了不同的密鑰.
實現(xiàn)過程是通過了一次Diffie–Hellman密鑰交換,連接的雙方各隨機生成一個私鑰,然后將算出的公鑰發(fā)送給對方,最后雙方通過手中的密鑰和對方的公鑰生成了一個共享密鑰,此次連接的信道上將會使用此共享密鑰加密傳輸信息.
回到目錄
libpaillier
FISCO BCOS支持加法同態(tài)唱矛,可以在不解密的情況下,對于加密數(shù)據(jù)進行加法操作井辜,而不泄露參與加法的具體數(shù)字绎谦。
回到目錄
libpbftseal
不同于比特幣的PoW,和以太坊的PoS粥脚,PBFT(拜占庭容錯)是FISCO BCOS的共識算法之一窃肠。
回到目錄
libraftseal
RAFT是FISCO BCOS支持的另外一種共識算法,相比于PBFT的1/3刷允,RAFT可以提供1/2的容錯率冤留。RAFT本質上是一種同步算法,不解決容錯的作惡的問題树灶。
回到目錄
libsinglepoint
共識算法插件
libstatistic
訪問頻率統(tǒng)計與控制實現(xiàn)目錄
libweb3jsonrpc
web3 RPC實現(xiàn)目錄
libwebthree
libwhisper
Whisper協(xié)議——Whisper協(xié)議是DApp間通信的通信協(xié)議纤怒。Whisper是為需要大規(guī)模的多對多數(shù)據(jù)發(fā)現(xiàn)、信號談判和最少的傳輸通信天通、完全的隱私保護的下一代DApp而設計的泊窘。此功能為以太坊基礎通訊協(xié)議。
Whisper(低語者)是以太坊的一個功能擴展像寒。它是以太坊生態(tài)中的一個重要一環(huán)(以太坊的智能合約smart contract實現(xiàn)了分布式邏輯烘豹,以太坊的Swarm實現(xiàn)了分布式存儲,以太坊的Whisper實現(xiàn)了分布式消息)诺祸。
Whisper將實現(xiàn)智能合約間的消息互通吴叶,屆時可以實現(xiàn)功能更加復雜的DApp。
sample
一鍵安裝與部署
script
與安裝相關的腳本
smartcontract
系統(tǒng)合約實現(xiàn)目錄
tool
utils
web3lib
web3 是一個通過RPC 調用 和本地節(jié)點進行通信的js庫序臂。web3可以與任何暴露了RPC接口的以太坊節(jié)點連接。