無論比特幣、以太坊還是其他公共區塊鏈項目,為了業務邏輯、技術實現的簡單,對于生成的區塊都只有一種類型區塊,首尾相鏈,形成區塊鏈,于是帶來幾個普遍而又難以回避和解決的問題:
· 數據臃腫:數據量越來越大,到最后會達到無比的龐大,目前比特幣的區塊大約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 用戶名密碼并連接已運行區塊鏈。
評論