TRUECHAIN雙鏈結構的瞭解

 

打造承載未來商用去中心化應用的公鏈,是時代的需求,也是初鏈的夢想。基於混合共識機制設計的初鏈,旨在爲社會提供高速點對點通信、價值傳輸以及智能合約基礎設施。

區塊鏈生態系統和TrueChain的產品網格可以輕鬆授權個人或企業與區塊鏈交互,發佈和管理智能契約生命週期。TrueChain的

資組合包括:

Steller是TrueChain智能合約全生命週期管理平臺

Dapp倉庫是TrueChain中不集中的Dapp下載平臺

TrueScan Explorer是TrueChain的瀏覽器。

 

內容:

:雙鏈結構 :

 “初鏈”採用雙鏈結構設計,目的是爲了分離交易確認和算力保護。快鏈區塊直接打包交易,交易打包成區塊後經過拜占庭委員會(PBFT)的共識即被確認,此過程很快。慢鏈區塊包含快鏈區塊的內容,通過挖礦完成慢鏈區塊的打包,慢鏈採用工作量證明(POW)機制,旨在通過算力保護整個區塊鏈和拜占庭委員會的安全。

快鏈區塊結構(FastBlockcode/types/block.go

在快鏈區塊結構中,最重要的兩個屬性就是"transactions"和"signs",在區塊頭中也可以看到有“TxHash”、“GasLimit”和“GasUsed”這三個屬性,這表明了快鏈區塊的主要作用是執行交易、收集交易和收集拜占庭委員會成員的簽名。

慢鏈區塊結構(FastBlockcode/types/block.go

 

快鏈區塊的驗證(VerifyFastBlocketrue/pbft_agent.go

部分代碼爲:

 

慢鏈區塊的驗證(ValidateFruitcore/snailchain/block_validator.goVerifySnailHeaderconsensus/minerva/consensus.go

部分代碼爲:

快鏈收集所有的快鏈區塊,每一個快鏈都包含交易信息和拜占庭委員會簽名信息,這些數據越快被快鏈區塊打包並收納進快鏈中,則交易的確認速度越快,但這個過程只經過了一次拜占庭委員會之間的共識,並沒有任何挖礦操作,所以快鏈上的信息很容易被串改。爲了保護快鏈的安全,“初鏈”引入了慢鏈,該鏈採用POW共識,從快鏈中收集委員會簽名信息放入慢鏈區塊,然後通過挖礦操作向區塊注入算力以保護區塊的安全,慢鏈區塊的安全被保護了起來那其中拜占庭委員會的簽名數據也被保護了起來,在簽名數據中包含了快鏈區塊的區塊號和區塊哈希值,即也意味着快鏈被保護了起來。該過程與中本聰區塊鏈最大的不同就是“初鏈”引入了拜占庭委員會,這樣交易的確認就從全網範圍縮小到了1~40個節點的範圍。雖然交易的確認速度大幅度提升,但由於PBFT協議的引入,區塊鏈的容錯率從原本的50%降至33%,這就意味着“初鏈”對PBFT拜占庭共識委員會的要求就必須是作惡委員會節點數量不能超過全體委員會成員數量的1/3。由於拜占庭委員會成員每1440個慢鏈區塊完成一次換屆(1440個區塊的慢鏈出塊時間差不多3個月的樣子),期間只要有勢力能佔領1440個區塊中超過1/3的區塊,那麼就很有可能造成委員會成員的污染。會造成這種情況目前有兩個方式,一個是算力集中(比如礦池),另一個就是女巫攻擊。由於中本聰POW共識算法天生能防女巫攻擊但卻防不了算力集中,所以只要出現形成礦池的情況,那就會威脅到區塊鏈的安全。礦池的形成可以從兩方面瓦解,一個是設計反ASIC芯片的挖礦算法(運用大內存的內存困難型算法),另一個就是降低形成礦池的動力。“初鏈”提出“水果”的方式就是爲了降低形成礦池的動力,從最初的“中本聰鏈”轉變爲目前的“水果鏈”。水果的挖礦難度是正常區塊挖礦難度的1/600,這個難度值是很小的,普通CPU都能輕鬆挖到,所以傳統的慢鏈區塊就被拆成兩部分,一部分爲包含委員會簽名的水果塊,另一部分爲包含水果的正常區塊。包含水果的正常區塊的挖礦獎勵會分別分攤給拜占庭委員會節點、水果礦工和區塊礦工,所以挖出的水果在被打包後其背後的礦工也能獲得獎勵。通過降低挖礦難度但卻不影響挖礦收益的方式降低礦池的形成動力是一個非常聰明的做法,並且由於仍然存在挖礦過程,所以女巫攻擊也能避免。慢鏈區塊計算哈希的POW過程沒有本質改變,其對整個區塊鏈提供的算力保護不會因爲水果的引入而受到影響。由此,“初鏈”的快慢雙鏈交互機制被確定爲:

拜占庭委員會成員收集交易構建FastBlock,收納執行交易後產生的交易費

FastBlock在委員會成員之間完成PBFT共識收集委員會成員的簽名數據Sign並廣播

節點持續收集P2P網絡中的FastBlock和Fruit

節點通過組裝FastBlock中的簽名數據Sign和Fruit來形成挖礦區塊開始挖礦,同時挖取區塊和水果

如果挖出SnailBlock則去掉其中的拜占庭委員會簽名部分然後全網廣播

如果挖出Fruit則去掉其中的水果部分然後全網廣播

拜占庭委員會在構建FastBlock時檢測已經經過12個區塊確認的SnailBlock並分發其區塊獎勵

全球首家實現無許可(Permissionless)環境下的混合共識公鏈,科學採用雙鏈結構,並已在美國獲得先行專利

.區塊挖掘的過程大致是:

run node's auto-mining process

run mining command, select below stpes depend on your command.

mine as the committee election node

1.enter truechain folder, run auto-mining process case by case.

1)only mine fruit

  docker run -v $PWD:/truechain-engineering-code -it -p 30311:30311 -p 30310:30310 -p 30303:30303 -p 9215:9215 getrue --datadir /truechain-engineering-code/data --config /truechain-engineering-code/config --testnet --mine  --minefruit --election console

2)mine fruit and block

docker run -v $PWD:/truechain-engineering-code -it -p 30311:30311 -p 30310:30310 -p 30303:30303 -p 9215:9215 getrue --datadir /truechain-engineering-code/data --config /truechain-engineering-code/config --testnet --mine --election console

2.command analysis

-p : mapping the container's port to the host

--datadir : data storage folder

--minefruit : specify mining fruit only

--election : this node participate in committee election

mining as the node which not participate in committee election

1.enter truechain folder, run auto-mining process with different mining parameters.

1)only mining fruit

mining fruit and block

docker run -v $PWD:/truechain-engineering-code -it -p 30311:30311 -p 30310:30310 -p 30303:30303 -p 9215:9215 getrue --datadir /truechain-engineering-code/data --config /truechain-engineering-code/config --testnet --mine console

2.command analysis

-p : mapping the container's port to the host

--datadir : data storage folder

--minefruit : specify mining fruit only

--election : this node participate in committee election

node console

1.query mining's coinbase address : etrue.coinbase

2.query account's balance : etrue.getBalance("account address")//account address is your own mining address

3.stop mining : miner.stop()

4.console restart mining, you can add number in the bracket, which means the number of the threads: miner.start()

5.exit console and exit program:exit

下爲翻譯:

運行節點的自動挖掘過程

運行挖掘命令,根據命令選擇下面的stpes。

我作爲委員會選舉節點

1。輸入truechain文件夾,逐例運行自動挖掘過程。1)只有我的水果

gtrue——datadir /truechain-engineering-code/config /truechain-engineering-code/config——testnet——mine——minefruit——選舉控制檯

2)我的水果和塊

gtrue—datadir /truechain-engineering-code/config /truechain-engineering-code/config -testnet -mine -election控制檯

2.命令分析

-p:將容器的端口映射到主機

——datadir:數據存儲文件夾

—地雷:只指定採礦水果

——選舉:該節點參與委員會選舉

挖掘作爲不參加委員會選舉的節點

1。進入truechain文件夾,運行不同挖掘參數的自動挖掘過程。

1)只有礦業水果

採果塊

docker運行-v $PWD: - p30311:30311 - p30310:30310 - p30303:30303 - p9215:9215 getrue—datadir /truechain-engineering-code/config /truechain-engineering- config -testnet -mine控制檯

2.命令分析

-p:將容器的端口映射到主機

——datadir:數據存儲文件夾

—地雷:只指定採礦水果

——選舉:該節點參與委員會選舉

節點控制檯

1。查詢挖掘的coinbase地址:etrue.coinbase

2。查詢帳戶的餘額:etrue。getBalance(“帳戶地址”)//帳戶地址是您自己的挖掘地址

3.停止採礦:礦

4所示。控制檯重啓挖掘,您可以在括號中添加數字,這意味着線程的數量:miner.start()

5。退出控制檯和退出程序:退出

 

初鏈TrueChain採用PBFT+PoW混合共識,起初預設將PBFT和PoW揉合到一條鏈上,但卻發現這樣的設計從數據結構的搭建和共識的驗證上非常難以實現。經過反覆的論證,初鏈最終決定變更爲雙鏈結構,將PBFT作爲快鏈,而將PoW作爲慢鏈,快鏈用於存儲賬本和達成交易,慢鏈用於挖礦和委員會選舉,從而實現了公平和效率的有效融合,並使得數據結構變得更加清晰,使兩種共識之間的通信變得更加容易。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章