TrueChain分析解讀

2021-08-28 23:01:27 字數 1977 閱讀 5918

truechain中文官網

truechain,中文名又譯為初鏈

truechain是使用區塊鏈為基礎技術,在以太坊的基礎上,開發團隊臆在打造一條實現快速,無中斷,安全可拓展的基礎公鏈,使用pbft-fpow混合共識無權區塊鏈。

拜占庭容錯,能夠容納將近1/3的錯誤節點誤差。

其思想淵源來自拜占庭將軍問題,是一種解決分布式系統容錯問題的通用方案。pbft演算法的核心理論是n>=3f+1,n是系統中的總節點數,f是允許出現故障的節點數。換句話說,如果這個系統允許出現f個故障,那麼這個系統必須包括n個節點,才能解決故障。

pow:

prove of work,簡單理解就是乙份證明,用來確認你做過一定量的工作。

混合共識機制:

為實現安全性與效能之間的平衡,採用的一種協調方法,pow 與 pbft 相結合的混合公式機制。保留 pbft 快速高效達成共識的特性的同時,將 pbft 節點的選舉、監督權交給 pow 節點,同時快速的驗證 pbft 給出的交易記錄集合,從而保證了整個網路的安全性。pbft 的通訊複雜度決定了參與決策的節點只能保持在極有限的範圍內。而利用 pow 可以接納無限節點的特性與之結合可以彌補這一弱勢。

fpow:

初鏈將fruitchain技術整合到原來混合共識底層的pow技術,由原來的pow變成了fpow。在區塊鏈原本使用的pow技術中,會出現下列幾個問題:

聯合挖礦(礦池):個人挖礦難道高,大家各自奉獻一部分計算能力挖礦,挖到後根據貢獻比例均分報酬,—影響公平

自私挖礦者攻擊(selfish mining attack - 即25%攻擊):所謂的「區塊鏈」,不但要有「區塊」,還要有鏈,也就是不但要」挖礦「,還要」接礦「。系統就會自動選擇相信較長的礦鏈。當壞人挖到礦,故意不把礦接到原來的礦鏈上,而是通過這個礦,繼續往下挖,試圖挖到更長的鏈。誠實的挖礦者,挖到礦接到原本的礦鏈上,此時壞人將較長的礦鏈結到原本的框鏈上去,使誠實的挖框者努力白費。

交易費不穩定:礦共會先將高的交易費的資料收入block中,但是每筆交易的交易費用都不一樣,一致交易費不穩定。

那麼fpow如何解決上面的問題呢?

1.能抵制聯合挖礦

水果(fruits)比區塊(blocks)挖礦難度低, 普通挖礦,個人平均兩年才能挖到乙個礦,但水果卻一天可以挖到兩個,這樣礦工形成的礦池的動力就變小了,從而抵制了聯合挖礦,使得pow更加公平。

2.能抵制自私挖礦

水果在被寫入區塊前都不穩定,而且存在一定的保質期,演算法規定包含最多水果的塊為主鏈,所以礦工挖礦需要盡快將水果收到區塊裡,而不能默不作聲地等著浪費別人的算力,從而抵制了自私挖礦; 而礦工將水果收入會先得到挖礦獎勵,再將一定獎勵分發給包涵進區塊的水果。

3.亂序挖礦:fpow協議使得水果的挖礦順序可以為任意順序,即可以並行挖礦,在sharding中非常有用。

分片優化:

初鏈思想是將區塊鏈世界觀分割成不同的「片」,在每個不同的「片」區域內,都有不同的pbft委員會處理,把序列處理變成並行處理,從而實現效能的大幅度的提公升。

ps:首先名字看起來非常霸氣,哈哈

建立在互相協作互相制約基礎上的社群自治架構。

開發者委員會

負責全球開發者招募,true 技術路線演進研發,評審**質量,並基於

每位開發者的貢獻度進行激勵等;

市場**委員會

負責制定 true**宣傳戰略,並且招募全球各地**加入對 true 進行宣傳,並制定相關激勵政策對貢獻**進行激勵;

token 社群委員會

負責制定社群擴充套件及維護戰略,並制定相關激勵方案為社群做出貢獻的 true 使用者。

去中心化組織,代表最廣泛的社群持幣者的利益。該組織行使選舉權、監督權、重大提案表決權,所有持幣使用者自動成為 dao 委員會成員。

github開源位址

AWR報告分析解讀

1 awr報告頭資訊 2 awr負載概要資訊 3 awr例項效率 4 共享池概要 5 awr top等待事件 顯示了系統中最嚴重的5個等待,按所佔等待時間的比例倒序列示。當我們調優時,總希望觀察到最顯著的效果,因此應當從這裡入手確定我們下一步做什麼。通常,在沒有問題的資料庫中,cpu time總是列...

RxJava 原始碼解讀分析 observeOn

observable.observeon 方法有點繞,我們一點一點看。從上圖中,我們可以看出,observeon主要作的工作是 1,通過指定的scheduler來切換執行緒,用來emit資料,這個資料就是onnext data 方法的引數。2,emit出來的資料,先非同步的快取到乙個buffer,實...

RxJava 原始碼解讀分析 from

我們繼續,看看observable.from 是怎麼回事,from原始碼如下圖。再來看看onsubscribefromarray這個類,如下圖 我們發現,onsubscribefromarray就是乙個onsubscribe,要實現了call 介面,call 方法中,只是設定了乙個新的fromarr...