RubyChain(路鏈)一個商業級區塊鏈基礎設施

買賣虛擬貨幣
無論比特幣、以太坊還是其他公共區塊鏈專案,為了業務邏輯、技術實現的簡單,對於生成的區塊都只有一種型別區塊,首尾相鏈,形成區塊鏈,於是帶來幾個普遍而又難以迴避和解決的問題:· 資料臃腫:資料量越來越大,到最後會達到無比的龐大,目前比特幣的區塊大約180G,以太坊的區塊已超過200G,同步需要數週甚至數月的時間,目前的解決辦法是採用輕錢包,可是輕錢包的問題是向輕錢包的提供商的伺服器端請求資料,失去了去中心化的意義,不可避免的會帶來安全隱患,由於同步問題的存在,對於個體而言,區塊鏈系統設計的再快的交易確認機制,都變的沒有意義。· 儲存瓶頸:目前的區塊鏈設計只能實現同一(唯一)資料的全備份儲存,不能用於分散式的碎片化儲存,不能實現真正意義上的分散式儲存,只是將一份資料分別放在了很多地方,將一份資料儲存在了多個區塊鏈使用者的硬碟上而已,對於大型應用系統至關重要的儲存而言,不可避免的成為瓶頸,由於只能扁平化的疊加,儲存解決不了,大型行業應用就沒有可能遷移到區塊鏈上。· 稽覈機制不健全:智慧合約互動部署在主鏈上,因此主鏈會變的越來越臃腫,對於分散式計算的實時計算和應用變的效率也會越來越低,同時應用缺乏稽覈機制或者說稽覈機制不健全,不可避免的會影響主鏈的安全性,最終會限制應用範圍和發展。· 遷移難度高:針對行業、企業級應用遷移至區塊鏈平臺難度大。Ruby 特性簡述
基於現有區塊鏈體系所遇到的問題,我們重新思考並設計了 Ruby,在提升傳統公共區塊鏈所有技術效能的同時推出了大資料模組、智慧事物合約引擎、類 N*RAID5 鏈外應用擴充套件儲存等技術概念,使大量 DAPP 基於 Ruby 公共區塊鏈開發落地變為現實,Ruby 主要技術特性如下:特性一:底層 1080 筆/秒交易速度,新增節點與分片,可支援百萬筆/秒交易速度。特性二:快速自由發行數字資產、快速開發 Dapp。特性三:完全去中心化原子交易和鏈上資產交換。特性四:成塊時間 15 秒,單筆資料交易量可達 2M,單塊可達 16M。特性五:獨有的資料模組,原生支援場景化智慧合約,直接開放鏈上資料介面,可基於
所有已知成熟開發工具自由定製開發 Ruby Dapp。特性六:支援跨鏈資產轉移與交換,支援鏈外幣種的資料同步,同步後可在 RubyChain中直接進行所有幣種的交易。特性七:首個商用級別的完全去中心化的類 N*RAID5 鏈外應用擴充套件儲存,效能優異,鏈外應用過程無感。特性八:首個線上 Dapp 軟體商店,完善的生態發展體系。生態體系的架構與建設1. 安全可信賴的生態架構
Ruby 根據交易過程中不同環節的功能,在邏輯上將節點角色分為四種,讓不同型別節點可以關注處理不同型別的工作負載。· 孵化節點:孵化 Dapp 專案,提供專案孵化服務,發展 Ruby 生態。· 共識節點:採用 Ruby working 共識機制,參與共識。· 儲存節點:為所有應用的鏈外資料(鏈外應用塊)提供全節點儲存服務。· 交易節點:為鏈上原子交易(幣幣兌換)提供交易確認服務。· 普通節點:普通錢包使用者即為一個普通節點,具有傳送、查詢交易、資產兌換等基本功能,同步全部區塊;
· 輕節點:不同步全部區塊資料,具有轉賬、接收交易等基本功能。2. 生態體系內的多元化原子交易在 Ruby 的整體生態中,流通將是整個經濟體永恆不變追溯的主題,一個世界中,只有資產快速自由的流動,才會有無盡的生命力,而非一潭死水。在過去的幾年中,區塊鏈+金融主要解決的是單一資產在自身體系內流動的問題,這並不能解決整個區塊鏈生態發展的需要。賦予數字資產價值,而不是僅僅簡單的記錄,是 Ruby要打造的多元化原子交易體系,最終實現大流通的效果。Ruby 原子交易支援原生資產、通證資產和跨鏈轉移資產,支援鏈上資產直接兌換,原子交易時需要扣除手續費,手續費使用原生資產。未來,Ruby 將推動萬物數字化,萬物皆資產的生態目標,例如將某 A 的數字資產雜湊化儲存在資料模組中,某 B 的電影版權雜湊化儲存在資料模組中,雙方呼叫智慧合約直接進行原子交易,發生資產兌換。
3. 分散式商業生態,網際網路到區塊鏈的快速遷移為實現網際網路時代向區塊鏈時代的快速轉化,完善擴充 Ruby 的生態體系,快速遷移將顯得尤為重要,在眾多公共區塊鏈還在打磨自身技術的時候,Ruby 率先實現了快速遷移的可能,利用大資料模組+多語言支援+模組化介面呼叫的方式,使得傳統網際網路的普通開發者也可以基於 Ruby 進行開發,同時可以快速的將以往的產品接入 Ruby 生態。4. 商業級智慧物聯網嘗試,打造海量使用者入口RubyBox 是 Ruby 嘗試研發的第一款基礎設施硬體,這次智慧物聯網硬體的嘗試將不會在短時間內釋出,但 Ruby 團隊將會對智慧物聯領域持續的深耕。Ruby 在企業級使用者端將藉助 RubyBox 商用版搭建區塊鏈高速公路,未來 Ruby 可以為任何區塊鏈系統提供加速服務,包括但不限於 CDN 加速、節點加速、鏈盤等。同時基於Ruby 生態進行開發的 Dapp 也會享受到加速服務。RubyBox 在使用者級端將提供以下服務:
私人家庭安全雲盤:透過 RubyBox,可以將終端裝置(PC、MAC、手機)上的私人檔案安全儲存在 RubyBox 上,在世界任何的位置安全自由的訪問自己的私人檔案。私人家庭媒體中心:透過 RubyBox,可以將影音檔案安全下載儲存在 RubyBox 上,隨時隨地可以透過終端(PC、手機、MAC、智慧電視)欣賞大片。無限延展智慧硬體:RubyBox 是開放的、共享的、互聯的。未來,會有更多的區塊鏈應用系統登入 Ruby,RubyBox 將成為充滿無限想象的智慧硬體中心,透過 RubyBox 獲得的資產將成為生態內的專屬融合支付手段。RubyBox 未來或將是 Ruby 釋出的首款智慧物聯裝置,以此開啟線下大使用者流量入口時代。Ruby 技術現狀

1. Ruby 網路構成

Ruby 的網路構成分為以下幾個方面:

· 底層核心層的區塊鏈網路構成包括:基於 UTXO 模型的賬戶體系、原子交易、共識機制、資料模組、跨鏈協議等。保證整個 Ruby 生態的訊息廣播一致性、資料安全與儲存,同時保證整個經濟體的高度自治與流通。

· 中層服務層的區塊鏈網路構成包括:CLI、RPC 呼叫介面,保證任何語言的開發者可以呼叫 Ruby 提供的模組化功能進行開發,普通的開發者無需過多的瞭解區塊鏈技術即可進行大型應用的開發與遷移,享受區塊鏈帶來的便捷與改變。

· 最高層是應用層:其中包含 Ruby 提供的官方應用及未來生態開發者自主開發的Dapp,應用層將是未來 Ruby 運營的核心重點,海量的落地應用會使得 Ruby 的生態更健康茁壯的發展。

2. Ruby working 共識機制

傳統 POW 共識機制對算力及網路環境要求較高,資源消耗嚴重,且存在高算力對網路攻擊的威脅。對此 Ruby 針對 POW 演算法機制進行改善處理,形成 Ruby working 共識機制。

在 Ruby working 共識機制中,保留傳統 POW 工作量證明函式 SHA256:

在 Ruby 系統中,基於尋找給定字首的 SHA256 雜湊值,設計了工作量證明的共識機制; SHA256 也被用於構造地址,即用來識別不同的使用者。

相對傳統 POW 共識演算法,Ruby working 共識機制中新增了 Rotation 工作輪換證明演算法以及 Contribute 系統貢獻演算法。其中 Rotation 工作輪換證明演算法是在網路共識節點中隨機輪轉部分共識節點進行批准交易,並在下一輪輪轉時提出一個採礦難度,認可此採礦難度的節點成為下一輪次確認節點並進行記錄,同時設定採礦限制,同一節點不可連續參與多次輪換採礦。這種結構允許更多的礦工參與交易批准,在確保沒有固定的可能被破壞的驗證順序的同時也節省了資源的消耗。

下圖為 Rotation 工作輪換證明演算法流程圖,其中 N 為當前批次,n 為根據當前共識節點總量劃分的輪換批次:

Contribute 系統貢獻演算法是在共識機制中,對於參與共識的節點所貢獻的頻寬、硬碟等資源進行數字量化,並根據貢獻的多少,系統給予一定數量的獎勵。Contribute 系統貢獻演算法公式如下:

Ruby 將增加孵化節點機制,孵化節點與傳統意義的超級節點相比有本質的不同,傳統的超級節點多采用 DPOS 機制,相當於競選機制,於是會在過程中出現很多灰色手段,這些毫無意義的競爭和攻擊其實是對公共區塊鏈最大的傷害,最終也會成為超級節點垮掉的因素。

而孵化節點則是為了 Ruby 生態的發展,把人性最善的一面服務於 Ruby,服務於 Ruby開發者和生態,孵化優質區塊鏈專案越多,獲得收益越多。

孵化節點是複合節點,承擔四種角色,未來根據發展可能會進行分類架設,超級孵化節點的選擇將從社群規模、地區資源、技術水平、資歷經驗等四個方面綜合評估後選擇,超級孵化節點不設數量限制,將根據發展情況適時增加,超級孵化節點不以硬體比拼作為主要競爭因素,原則上規定統一的硬體配置和定期統一升級策略,其專案孵化能力將是其獲得收益的最大依據——“孵化即挖礦”模式。

3. 多鏈並行

Ruby 網路設計多鏈並行:(主鏈)公共區塊鏈、(側鏈)私有鏈、(側鏈)聯盟鏈、測試鏈。側鏈藉助雙向掛鉤及混合挖礦技術,代幣可在主鏈和側鏈間以特定形式流轉,採用UTXO 模型。側鏈分擔主鏈的負擔,大部分的應用執行於側鏈。

3.1 主鏈

Ruby 的核心,維持代幣執行,去中心化,共識機制採用 Ruby working 演算法,主鏈的各個節點可以自由加入及退出網路,並參加鏈上資料讀寫,執行時節點以扁平的拓撲結構互聯互通,網路中不存在任何中心化的服務端節點。智慧合約是主鏈的核心應用,同時也是自動化,智慧化的基礎。

3.2 側鏈

側鏈分為私有鏈和聯盟鏈,私有鏈和聯盟鏈並非完全去中心化,私有鏈應用和聯盟鏈應用可以設有區域中心,應用開發者可以將應用執行在側鏈上。

聯盟鏈:聯盟鏈各個節點通常有與之對應的實體機構組織,透過授權後才有資格加入或退出網路。各機構組織組成利益相關的聯盟,共同維護網路健康運轉,採用最佳化的 POS 機制。

私有鏈:私有鏈各個節點的寫入許可權歸內部控制,讀取許可權視需求有選擇性地對外開放。私有鏈仍然具備區塊鏈多節點執行的通用結構,適用於特定機構的內部資料管理與審計,其共識機制採用最佳化的 POS 機制。

測試鏈:測試鏈承擔開發應用上線前的測試。

4. 創新的碎片化儲存模式

4.1 雙螺旋分子結構區塊鏈

主鏈、側鏈均採用類 DNA 雙螺旋分子結構區塊鏈,將區塊鏈的底層成鏈技術由單一扁平區塊鏈向雙螺旋分子結構區塊鏈轉變。

在各個區塊以及雙螺旋鏈中的連結溝通中, 我們將所有區塊想象成人類的 DNA,則雙螺旋結構中左旋鏈與右旋鏈資料互動的 RUB 計算數學模型如下:

偏置的更新演算法:

偏置介紹:

若每次計算從第一個區塊開始算起,則運算速度過慢。例如,存在點(1,1),點(2,2),無法從原點畫一條直線將其成兩類,需要偏置值使得線段不從(0,0)點出發而是從更適合的點出發。

偏置的更新公式:

權值更新公式的由來:
橋接塊到右旋鏈的權值更新

4.2 資料模組

資料模組體系將賬戶交易和資料分離,以此保證在大容量資料上鍊的前提下維持 TPS效率,資料模組作為 Ruby 的通用資料儲存提供了高階抽象和 API,可實現鏈上三種不同型別資料庫:

· NoSQL 型鍵值資料庫;
· 身份驅動型資料庫,根據具體傳送者和接受者查詢,分類;
· 採取平穩序列模型資料庫,平穩資料變化,消除長期趨勢和差分化,可用於條目排序。

Ruby 資料模組允許區塊鏈用作通用附加資料庫,區塊鏈提供時間戳,公正和不變性。

可以建立任意數量的資料模組,每個資料模組釋出的資料由建立者儲存,其中每一個都可以向所有人開放以供寫入,或者只能從特定地址寫入。如果一個節點選擇訂閱資料模組,它將索引該資料模組的內容以便以各種方式進行高效檢索,若未訂閱資料模組,則無需為其付出算力。

每個資料模組中的每條資料都是有序的專案列表,其中每條資料的格式如下:

{“senditemers”:[ “18q9dh...ptW43E”
],“keys”:[ “key1”, “key2”
],“data”:”data”, “confirmations”:11, “blockhash”:”00e9c6...2c513”, “blockindex”:1, “blocktime”:1528439220, “txid”:”acf36...9e2”, “vout”:0, “valid”:true,
“time”:1528439184, “timereceived”:1528439184
}

每條資料具有如下特徵:

· 一個或多個 senditemers 已完成數字簽名的專案;
· 一個或多個長度在 0-256 位元組之間的 key 值,可以利用 key 值進行索引;
· data,可存放幾 M 的資料;
· 支援存放結構化的 JSON 物件,易寫易讀。

如果一個節點訂閱了該資料模組,可以透過以下幾種方式來進行索引查詢:

· 根據 key 值索引;
· 根據 senditemers,也就是建立者索引;
· 根據 txid,blockindex,blockhash 等進行索引。

資料模組的設計使得鏈與鏈之間互動變得簡單、高效,將會解決鏈上幣幣交易、跨鏈資產兌換以及場景化智慧合約等固有問題。

4.3 無感鏈外擴充套件儲存

區塊鏈應用程式開發實現分散式鏈外資料傳輸,一個常見的選擇是採用現有的對等檔案共享平臺,例如 IPFS,並將其與區塊鏈結合使用。但 IPFS 具有以下幾個缺點,並不能高效便捷的與區塊鏈進行結合:

· 每個參與者必須安裝,維護和更新三個獨立的軟體(區塊鏈節點,IPFS 節點和中介軟體),每個軟體都將其資料儲存在不同的位置。
· 兩個獨立的點對點網路,每個網路都有其配置,網路埠,身份系統和許可。
· 將 IPFS 和區塊鏈緊密結合在一起會使中介軟體變得越來越複雜,同時面臨中心化的風險。

針對 IPFS 與區塊鏈結合的缺點和風險,Ruby 透過以下便捷高效的方式完成了與鏈外資料的互動同步,同時規避了可能出現的中心化風險:

釋出節點將新資料寫入其本地儲存,將大型專案分塊,自動構建釋出鏈外資料的事務,該事務被簽名並廣播到網路,在節點之間傳播並以通常的方式進入區塊鏈。當資料需求節點對鏈外資料引用時,會將該資料的 HASH 請求新增到其檢索佇列中,並作為後臺程序。如果節點的檢索佇列中有此 HASH,則將查詢傳送到網路以查詢有此 HASH 標識的區塊。這些查詢以點對點的方式傳播到網路中的其他節點。具有資料的任何節點都可以響應,並且該響應沿著與查詢相同的路徑被中繼給使用者。如果沒有節點應答查詢,則該 HASH 查詢請求將返回到佇列以供稍後重試。如果長時間無節點響應,需求節點將再次向網路傳送請求。如果有節點接收請求,接收節點根據請求驗證資料的大小和 HASH 值,傳送相應資料,資料檢出完畢後,接收節點將資料寫入本地儲存,使其立即可用於透過 API 進行檢索。如果請求的內容沒有接收到,或者與所需的 HASH 或大小不匹配,則將該請求返回到佇列中,以便需求節點從其他源中檢索。

在延遲較短的網路中,體量較小的離線資料將在引用交易的瞬間傳輸完成。對於高負載應用,Ruby 支援超過 1200 個鏈外專案時,保持每秒檢索 30 MB 的鏈外資料網路連線,並且最大 1000MB 的脫鏈資料都可以正常傳輸,不會影響 Ruby 網路效率。

資料模組可以設定其儲存為普通資料模組(僅可儲存鏈內應用塊)、應用資料模組、混合資料模組,後兩者可儲存鏈外資料塊的 HASH、釋出者、索引等資訊,可以實現快速檢索、分發鏈外資料塊。

鏈內資料大小單塊限制為 16M,超出 16M 可以存為鏈外資料塊(原則上 Ruby 允許無限大的鏈外資料塊,出於效能考慮,不建議單個鏈外資料塊超過 1000M)。

5. 跨鏈協議(Cross-chain Asset Trading)

為支援數字資產跨鏈價值傳輸,Ruby 設計出跨鏈協議 CCAT(Cross-chain Asset Trading)。針對目標鏈上的每一種需要跨鏈傳輸的資產,在 Ruby 中均需發行一個與之對應的通證,作為目標資產在 Ruby 內部流通的憑證,這種通證記為 TAT(Third-party Asset Token)。

6. 場景化智慧合約

Ruby 場景化智慧合約,我們稱之為智慧合約 2.0,給開發者足夠的自由度,開發者可以選擇使用自己熟悉的開發語言,Ruby 提供與鏈進行交換的智慧合約介面。

對外提供的與鏈互動的智慧合約主要透過 JSON API 提供,所有的 API 都可作為與鏈進行資料互動的方法。

額外提供兩個關鍵的方法,確保開發者能夠高效開發 Dapp。這兩個方法是:建立資產方法、建立資料模組方法。開發者在開發 Dapp 時可透過網站下載私有鏈開發測試版進行開發,也可申請相應資產和相應資料模組在測試鏈開發,開發完成後可移植到公鏈。

6.1 代幣融資智慧合約參考

主要目標:設定自動化的幣幣兌換,實現代幣融資智慧合約的底層技術框架。

場景描述:建立一種待融資的資產(代幣程式碼 FBC,最小單位 0.01,總量 10000000,融資額 5000000,兌換 500 RUB(系統中已存在的資產或原生貨幣))

具體實現詳見 Ruby 開發者文件,希望有興趣的開發者或組織與我們聯絡,基於此開發代幣融資 Dapp,Ruby 非常歡迎將其納入 Ruby 軟體商店。

6.2 版權保護智慧合約

(1)創作過程,對稱加密,寫鏈;
(2)成品加密儲存;
(3)1/n 多籤分發。

6.3 遊戲場景智慧合約

以養貓為例

(1) 生成小貓
建立地址
生成對應資料模組:記錄小貓特性

(2) 餵養小貓
幣幣交易,過程記入資料模組

(3) 繁殖後代
資料模組特性疊加計入新貓資料模組

6.4 RubyVM(Ruby Virtual Machine)

Ruby 借鑑了開源 QEMU 模擬處理器,QEMU 是一套由虛擬化天才程式設計師法布里斯·貝拉(Fabrice Bellard)所編寫的開源模擬處理器,在 GNU/Linux 平臺上使用廣泛。預設支援多種架構。可以模擬 IA-32 (x86)個人電腦,AMD 64 個人電腦,MIPS R4000, 昇陽的SPARCsun3 與 PowerPC(PReP 及 Power Macintosh)架構,由於採用 Ruby 虛擬機器方式,Ruby 使現有應用遷移也變得非常方便,可以用最小的程式碼量實現現有應用的遷移。幾乎對所有現有應用提供遷移支援,同時 Ruby 將在適當時機完成開發相容以太坊虛擬機器 EVM。

Ruby 在設計上採用基於資料模組的底層 Ruby 虛擬機器,使在平臺上開發變得非常簡單,開發人員無需改變現有程式語言習慣和程式設計方式就可以在 Ruby 上完成區塊鏈應用開發。

7. Ruby TPS 提升

7.1 傳統 POW 機制下的 TPS 無法提升的原因

傳統理論認為 POW 無法做到大幅度的 TPS 提升,其實不然,Ruby 認為在 POW 機制下 TPS 無法大幅度提升主要是因為以下幾點:

· 所有的錢包交易都儲存在記憶體中。這樣啟動時間會縮短,但記憶體使用量迅速增加;
· 由於採用 UTXO 模型,許多操作對錢包中的每筆交易執行效率低下的“全面掃描”,無論是舊的還是新的。
· 錢包中的每筆交易都被完整儲存,包括任何從節點的角度來看沒有意義的任意“後設資料”,雖然其已經儲存在磁碟上的區塊鏈中。其結果是,節點如果儲存了 2 萬筆交易,錢包會變得非常緩慢。在 20 萬筆左右後,它實際上陷入停頓。

7.2 從比特幣和以太坊看無法提高 TPS 的原因

比特幣節點不能提高 TPS 的主要原因並不是因為 POW 共識機制(POW 從本質上說基本上都會在成塊時間內完成共識),而是因為上文提到的三點原因,雖然比特幣網路可以輕鬆處理和儲存數百萬甚至更大與自己無關的事務,這些事務是在磁碟中而不是記憶體中進行的。但在具體到單一節點時,在處理跟自己有關的事務時,因為採用 UTXO 模型,需要遍歷全部區塊檔案,執行效率低下的“全面掃描”,來獲得未花費的輸出作為輸入。而這些全面掃描包括記憶體中的交易及後設資料和區塊檔案都是非結構化的資料,檢索速度會很低效,所以到單一節點,其 TPS 僅能達到 3 TPS。

以太坊節點的處理機制:以太坊在設計時考慮到了 UTXO 模型的弊端,所以在設計上以犧牲可靠性為代價,沒有采用 UTXO 模型,但其相關事務依然是非結構化資料,除此之外由於智慧合約的設計是全域性存在的,需要所有的節點去區塊檔案遍歷執行,所以其 TPS雖然較比特幣有所提高,但依然無法得到大幅度提升,其 TPS 為 20-30 之間。

7.3 Ruby TPS 提升方法

Ruby 透過以下幾種方式,使得 TPS 有了顯著提升:

· 變記憶體驅動為資料庫驅動,實現結構化儲存和快速檢索;

Ruby 核心錢包採用本地雙資料庫的結構設計(雙螺旋分子結構區塊鏈),將原先節點單一資料庫劃分為區塊資料庫和錢包事務資料庫。區塊資料庫採用了 UTXO 模型的安全可靠,同時結合了錢包事務資料庫賬戶餘額模型的靈活高效。區塊資料庫仍然儲存全部區塊資料,錢包事務資料庫儲存本地錢包地址相關的交易和事務資訊,而任何大於 256 位元組的交易後設資料都不會儲存在錢包事務資料庫中,而是在錢包事務資料庫中包含一個指向區塊鏈本身的資料位置的指標,錢包交易時透過指標或者索引直接查詢區塊資料庫,可迅速定位符合特定標準的交易,而不是執行完整的錢包掃描,可顯著節省查詢時間並提高交易速度。  

· 設計獨有的資料模組,在保證效能的前提下,提升大容量上鍊資料;

Ruby 資料模組允許區塊鏈用作通用附加資料庫,區塊鏈提供時間戳,公證和不變性。Ruby 可以包含任意數量的資料模組,每個資料模組釋出的資料由每個節點儲存,其中每一個資料模組都可以向所有人開放以供寫入,或者只能從特定地址寫入。如果一個節點選擇訂閱資料模組,它將在錢包事務資料庫中為此資料模組建立內容索引,以便以各種方式進行高效的檢索。

· 採用 Ruby working 共識演算法,作為輔助提升 TPS 的手段

Ruby working 共識演算法在降低資源消耗的同時,加快了網路共識的達成,更快的成塊時間以及更大的區塊容量都為 TPS 的提升提供了幫助。

綜上,透過以上三種主要方法(另外還有自動歸集未花費輸出從而提高檢索效率等方法),Ruby 能夠做到在安全可靠前提下,採用 POW 機制和支援大容量上鍊資料的情況下依然可以實現較高的 TPS。在中端裝置單節點下,TPS 可以達到每秒 1080 筆,在高階裝置連線的區域網或者藉助部分中心化手段(如超級節點)的情況下可以支援每秒十萬到百萬筆的交易速度。但在廣域網環境下,受到頻寬及其他網路因素影響,實際的 TPS 可能會有所下降。

8. 執行環境與開發工具

8.1 執行環境

Ruby 已開發完成廣範支援當前主流的執行環境,包括但不限於 Windows、Linux、Mac、安卓、IOS 等各種家用、商用及工業執行環境。系統要求:

作業系統環境:

Mac:OS X 10.11+
Linux:64 位,Debian 7+,Ubuntu 14.04 +,CentOS 7 +,Fedora 20 +,RHEL 7+
Windows:64 位,Win7+
Andriod:7.0+
IOS:9.0+

硬體環境:

RAM:1G
Disk:2G

8.2 底層程式碼

Ruby 底層由 C++編寫實現,命令列工具由底層原始碼使用 gcc/g++直接編譯生成,提供各版本命令列工具,支援 Ruby 全部 RPC 命令,包括 Windows、Linux、Mac 等多種版本。

8.3 錢包客戶端

Ruby 的錢包客戶端,支援基於 Ruby 的所有數字資產,包括 Windows、Linux、Mac、Andriod、IOS 等多種版本。其中,適用於 Windows、Linux、Mac 的桌面級錢包應用採用跨平臺語言 java 開發,使用 javafx 進行頁面設計。Java 具有簡單性、物件導向、分散式、健壯性、安全性、平臺獨立與可移植性、多執行緒、動態性等特點。java 的儲存分配模型是它防禦惡意程式碼的主要方法之一;Java 沒有指標,所以程式設計師不能得到隱蔽起來的內幕和偽造指標去指向儲存器。更重要的是,Java 編譯程式不處理儲存安排決策,所以程式設計師不能透過檢視宣告去猜測類的實際儲存安排。編譯的 Java 程式碼中的儲存引用在執行時由 Java解釋程式決定實際儲存地址。基於以上 java 語言的特性,保證錢包客戶端在各平臺的安全及平穩執行。

8.5 Ruby 區塊瀏覽器

Ruby 區塊瀏覽器為 Ruby 原始幣種及基於 Ruby 發行的各種資產提供區塊、交易查詢、資料模組的資料查詢以及原子交易掛單查詢。Ruby區塊瀏覽器使用python結合bootstrap開發,python 語言的物件導向、解釋性、可擴充套件性、可嵌入性等特性,以及 python 自帶的豐富的庫,可以很好的幫助 Ruby 區塊瀏覽器的最佳化及開發,而 bootstrap 前端框架為Ruby 區塊瀏覽器提供了方便簡潔的頁面效果。

8.6 其他 Dapp

Ruby 支援使用者使用通用語言編寫開發 Dapp,開發使用者自己的場景化智慧合約,Ruby提供標準的 RPC 服務介面和近 150 條 API 供開發者使用。

9. 安全

51%算力攻擊:51%攻擊是指掌握了全網的 51%算力之後,用這些算力來重新計算已經確認過的區塊,使塊鏈產生分叉並且獲得利益的行為。

對於存在的 51%算力攻擊,Ruby 透過 Rotation 工作輪換證明演算法,再次降低 51%算力攻擊的可能性。由於 Rotation 工作輪換證明演算法對於參與共識的節點分批次進行共識確認,使得 51%算力攻擊出現的可能性大大降低,並且在出現 51%算力攻擊時,由於 Rotation工作輪換證明演算法對於共識節點的隨機性,使得在 51%算力攻擊出現後並不能一直維持51%算力攻擊,因此在被攻擊後等待幾次確認後,可以回滾至原塊鏈。

10. 服務層指令

10.1 CLI 呼叫

Ruby 提供如下常用 CLI 指令:

(1)節點基本操作指令

help 幫助
stop 停止節點
pause 暫停節點
resume 恢復節點
emptymem 清除記憶體池
showmem 檢視記憶體池
shownet 檢視網路資訊
showpeer 檢視連線節點資訊
showchain 檢視區塊資訊
showblock 檢視區塊
showblocks 檢視區塊
showblockhash 檢視區塊雜湊值
signmessage 訊息簽名
checkmessage 訊息驗證

(2)錢包基本操作指令

addnewaddr 增加一個普通地址
addmultiaddr 增加一個多籤地址
setupmulti 建立多籤地址
setupkeypairs 建立地址對(不匯入錢包)
showaddrs 顯示地址及詳細
dumpprivkey 匯出私鑰
importprivkey 匯入私鑰
importaddr 匯入地址
backupwallet 備份錢包檔案
dumpwallet 匯出全部私鑰到文字檔案
importwallet 匯入錢包檔案
encryptwallet 加密錢包檔案
changepass 更改錢包密碼
walletpass 輸入錢包密碼
showassets 顯示資產
showbal 顯示 RUB
showaddrbals 列出特定地址的所有資產餘額(含 RUB)
showallbals 列出此錢包(地址)所有資產餘額資訊(含 RUB)
showaddrdeal 顯示特定地址的特定交易資訊
showaddrdeals 顯示特定地址交易資訊
showwalletdeals 顯示錢包交易資訊
send 傳送 RUB 或資產
sendfrom 從特定地址傳送 RUB 或資產
sendasset 傳送資產
sendassetfrom 從特定地址傳送資產
senddata 傳送 RUB 或資產並附加資料資訊
senddatafrom 從特定地址傳送 RUB 或資產並附加資料資訊

(3)建立發行數字資產 /資料模組指令(受限)

sell 發行數字資產
sellfrom 從特定地址發行數字資產
sellasset 追加發行數字資產
sellassetfrom 從特定地址追加發行數字資產
setupdatamod 建立資料模組
setupdatamodfrom 從特定地址建立資料模組
senditem 向資料模組釋出資料
senditemfrom 從特定地址向資料模組傳送資料
showdatas 列出資料模組
order 訂閱資料/資產模組
noorder 取消訂閱資料/資產模組
showdataitem 顯示單一資料條目
showdataitems 列出資料模組下資料條目
showdatakeys 列出某資料模組關鍵字
showdatakeyitems 列出某資料模組關鍵字的條目
showdatasenderitems 列出資料模組特定傳送者的資料條目資訊
showdatasenders 列出資料模組傳送者資訊

(4)幣兌換及原子交易(事務)指令

prelock 預先鎖定輸出
prelockfrom 從特定地址預先鎖定輸出
setuprawex 建立原子交換(幣幣兌換)
decoderawex 解碼原子交換(幣幣兌換)
addrawex 附加原子交換(幣幣兌換)
completerawex 完成原子交換(幣幣兌換)
sendrawdeal 提交原子交易至區塊鏈
disrawdeal 取消特定原子交易
gatherunspent 歸集未花費輸出
showunspent 顯示未花費輸出
showlock 顯示鎖定的未花費輸出
lock 鎖定(解鎖)未花費輸出
setuprawdeal 建立原子交易(事務)
setuprawsendfrom 從特定地址建立原子交易(事務)
decoderawdeal 解碼原子交易(事務)
addrawdeal 附加原子交易(事務)
addrawchange 附加原子花費
addrawdata 附加原子資料
signrawdeal 簽署原子交易(事務)

10.2 JSON-RPC API 指令集

RPC 用 戶 名 密 碼 存 儲 在 ~/.ruby/ruby/ruby.conf ( linux/MAC ) 或者 %APPDATA%\RUby\ruby/ruby.conf 文 件 中 , 可 以 使 用 rubyi 命 令 行 工 具 或 者RUbyTool 工具內建的 CLI 介面連線,這些工具會自動讀取 RPC 使用者名稱密碼並連線已執行區塊鏈。

關於更多RubyChain資訊:https://rubychain.org/
更多區塊鏈專案介紹:http://www.qukuaiwang.com.cn/news/xiangmu
風險提示:區塊鏈投資具有極大的風險,專案披露可能不完整或有欺騙。請在嘗試投資前確定自己承受以上風險的能力。區塊網只做專案介紹,專案真假和價值並未做任何稽覈。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;