所有語言
比特元是一種簡單穩定、拓展性強的公有鏈網絡。2013年12月,比特元誕生,初始為預挖空投+POW共識機制產出,2015年,比特元共識機制更新為POS。經過四年多的設計與研究,2018年5月17日,比特元區塊鏈3.0開發公測、主網上線,並升級成:SPOS(Safe POS),即:優化了隨機數的安全POS共識機制。6個多月後,2018年12月07日,比特元(BTY)在Github上正式開源。
比特元的研發採用了杭州複雜美Chain33的底層技術,是實現並落地的多鏈(平行公鏈)架構的公有鏈項目。在比特元區塊鏈上可開發多條平行公鏈,各條平行公鏈既具備多樣又獨立的區塊鏈生態建設和DAPP開發,又可實現多鏈間的跨鏈互換功能。平行公鏈項目應用領域有:穩定幣、紅包、社交、电子商務、資產上鏈、債權上鏈、存證、遊戲。
比特元區塊鏈率先創新實現了 MVCCKVDB(多版本 KV 數據存儲),傳統的區塊鏈是以 merkle 樹或是 MPT 樹的形式來存儲數據,每次數據的改變,
樹都會做一次重構,效率比較低下。 例如,對於一顆 20 層的默克爾樹,查詢一個恭弘=叶 恭弘子節點的數據需要進行 20 次讀操作來完成,導致數據查詢的效率僅為普通數據庫的查詢效率的 1/20,對於每秒能完成 10 萬次讀操作的系統,每秒僅能讀取 5000 筆交易的數據,大幅限制了系統的讀取性能。寫數據時,同樣要加載樹型分支上的多個節點數據,並最終要在更新以後寫入到磁盤,這裏面的操作消耗也是比較大的。比特元借鑒了數據庫設計中的 MVCC 理念(Multi-Version Concurrency Control 多版本併發控制),設計了獨創的 KVMVCC 的數據存儲格式,用於改善 MAVL 或者 MPT 結構中存在的低效的問題,更好的滿足區塊鏈數據增長到一定規模后的保持較高的數據讀寫性能。
Hash 計算:
statehash=hash(prevstatehash,KVSet,height),包含了前一區塊的狀態 Hash 信息,本區塊的狀態數據 KVSet 信息,本區塊的高度信息(也就是版本信息)。
有以下對應關係會被存儲到每個節點的數據庫中:
hash->height(version)
height(version)->hash
key:height(version)->value
lastest:key->value
數據查詢:
根據 statehash 可以查找到對應的 height(version),根據 height 可以查找到對應高度時,具體 key 值對應的 value 值。
數據驗證:
對 於 特 定 高 度 height 的 KVSet , 可 以 根 據 前 一 區 塊 的 hash 值prevstatehash、KVSet、height 進行 Hash 運算,如果 hash 值相符,則數據未被篡改,否則,數據被改動或者數據有誤(高度有誤,或者 KVSet 數據有誤)。
對於最新版本數據的維護:
特別的,當對於最新區塊的 key、value 值進行存儲時,同時保留(新增key)或者更新(已經有歷史版本的 key)key:latest->value 的映射關係到本地 key-value 數據庫中存儲。當需要獲得最新的批量數據時,可以根據 latest前綴(可以自定義)來批量查詢最新數據。由於通常的 key-value 數據庫可以很好的支持前綴匹配查詢,查詢效率會比較高,遠高於默克爾樹存儲結構的查詢。
為了提升區塊鏈的性能,平行公鏈一般採用 DPOS(股份授權證明機制)共識,即在鏈上選拔出數個付出算力和寬帶支持的超級節點,這些超級節點必
須將交易信息打包進區塊,並且區塊信息廣播給其他節點,將交易信息儲存在區塊上,發揮共同治理社區的功能。
一條公鏈成功與否,其中一個重點衡量指標就是其鏈上的節點數。超級節點機制可以幫助平行公鏈快速建立鏈上生態,並依靠各個超級節點的運營、維
護,促使平行公鏈生態變得更加繁榮,實現一個更加穩定、強大、去中心化的區塊鏈系統。
同時,平行公鏈運營方可設立平行鏈基金會,通過基金會對超級節點的各類token 激勵機制、運營手段,促進超級節點的能動性和积極性,並通過 token的回購,交易手續費等方式,促進平行公鏈健康且可持續的發展。
預言機實現了區塊鏈和真實世界的鏈接,預言機是一種可信任的實體,它通過簽名引入關於外部世界狀態的信息,從而允許確定的智能合約對不確定的
外部世界做出反應。預言機具有不可篡改、服務穩定、可審計的特點。
預言機合約發布數據分為三個步驟:
(1) 發布數據發布事件(告知全網,將有某個事件的結果於未來公布,並分配唯一的事件 ID,如果事件未發生,可以進行撤銷)。
(2) 預發布結果(數據提供者預發布時間結果,如果被審計發現結果有問題,可以撤銷)。
(3) 發布結果(預發布結果經過審計后,最終全網發布,不可篡改,可審計追溯)。
其他合約(比如競猜合約)可以使用上述步驟1中的事件 ID 和具體事件來開展(競猜)活動,當步驟3結果公布后,競猜合約根據事件 ID 對應的結果來觸發合約完成競猜結算,實現了無人干預的客觀、可信、可審計、可追溯的公平競猜。