基于區(qū)塊鏈技術(shù)的商業(yè)級(jí)基礎(chǔ)設(shè)施RubyChain路鏈介紹
無論比特幣、以太坊還是其他公共區(qū)塊鏈項(xiàng)目,為了業(yè)務(wù)邏輯、技術(shù)實(shí)現(xiàn)的簡(jiǎn)單,對(duì)于生成的區(qū)塊都只有一種類型區(qū)塊,首尾相鏈,形成區(qū)塊鏈,于是帶來幾個(gè)普遍而又難以回避和解決的問題:
· 數(shù)據(jù)臃腫:數(shù)據(jù)量越來越大,到最后會(huì)達(dá)到無比的龐大,目前比特幣的區(qū)塊大約180G,以太坊的區(qū)塊已超過200G,同步需要數(shù)周甚至數(shù)月的時(shí)間,目前的解決辦法是采用輕錢包,可是輕錢包的問題是向輕錢包的提供商的服務(wù)器端請(qǐng)求數(shù)據(jù),失去了去中心化的意義,不可避免的會(huì)帶來安全隱患,由于同步問題的存在,對(duì)于個(gè)體而言,區(qū)塊鏈系統(tǒng)設(shè)計(jì)的再快的交易確認(rèn)機(jī)制,都變的沒有意義。
· 存儲(chǔ)瓶頸:目前的區(qū)塊鏈設(shè)計(jì)只能實(shí)現(xiàn)同一(唯一)數(shù)據(jù)的全備份存儲(chǔ),不能用于分布式的碎片化存儲(chǔ),不能實(shí)現(xiàn)真正意義上的分布式存儲(chǔ),只是將一份數(shù)據(jù)分別放在了很多地方,將一份數(shù)據(jù)存儲(chǔ)在了多個(gè)區(qū)塊鏈用戶的硬盤上而已,對(duì)于大型應(yīng)用系統(tǒng)至關(guān)重要的存儲(chǔ)而言,不可避免的成為瓶頸,由于只能扁平化的疊加,存儲(chǔ)解決不了,大型行業(yè)應(yīng)用就沒有可能遷移到區(qū)塊鏈上。
· 審核機(jī)制不健全:智能合約交互部署在主鏈上,因此主鏈會(huì)變的越來越臃腫,對(duì)于分布式計(jì)算的實(shí)時(shí)計(jì)算和應(yīng)用變的效率也會(huì)越來越低,同時(shí)應(yīng)用缺乏審核機(jī)制或者說審核機(jī)制不健全,不可避免的會(huì)影響主鏈的安全性,最終會(huì)限制應(yīng)用范圍和發(fā)展。
· 遷移難度高:針對(duì)行業(yè)、企業(yè)級(jí)應(yīng)用遷移至區(qū)塊鏈平臺(tái)難度大。
Ruby特性簡(jiǎn)述
基于現(xiàn)有區(qū)塊鏈體系所遇到的問題,我們重新思考并設(shè)計(jì)了 Ruby,在提升傳統(tǒng)公共區(qū)塊鏈所有技術(shù)性能的同時(shí)推出了大數(shù)據(jù)模塊、智能事物合約引擎、類 N*RAID5 鏈外應(yīng)用擴(kuò)展存儲(chǔ)等技術(shù)概念,使大量 DAPP 基于 Ruby 公共區(qū)塊鏈開發(fā)落地變?yōu)楝F(xiàn)實(shí),Ruby 主要技術(shù)特性如下:
特性一:底層 1080 筆/秒交易速度,添加節(jié)點(diǎn)與分片,可支持百萬筆/秒交易速度。
特性二:快速自由發(fā)行數(shù)字資產(chǎn)、快速開發(fā) Dapp。
特性三:完全去中心化原子交易和鏈上資產(chǎn)交換。
特性四:成塊時(shí)間 15 秒,單筆數(shù)據(jù)交易量可達(dá) 2M,單塊可達(dá) 16M。
特性五:獨(dú)有的數(shù)據(jù)模塊,原生支持場(chǎng)景化智能合約,直接開放鏈上數(shù)據(jù)接口,可基于
所有已知成熟開發(fā)工具自由定制開發(fā) Ruby Dapp。
特性六:支持跨鏈資產(chǎn)轉(zhuǎn)移與交換,支持鏈外幣種的數(shù)據(jù)同步,同步后可在 RubyChain中直接進(jìn)行所有幣種的交易。
特性七:首個(gè)商用級(jí)別的完全去中心化的類 N*RAID5 鏈外應(yīng)用擴(kuò)展存儲(chǔ),性能優(yōu)異,鏈外應(yīng)用過程無感。
特性八:首個(gè)線上 Dapp 軟件商店,完善的生態(tài)發(fā)展體系。
生態(tài)體系的架構(gòu)與建設(shè)
1. 安全可信賴的生態(tài)架構(gòu)
Ruby根據(jù)交易過程中不同環(huán)節(jié)的功能,在邏輯上將節(jié)點(diǎn)角色分為四種,讓不同類型節(jié)點(diǎn)可以關(guān)注處理不同類型的工作負(fù)載。
· 孵化節(jié)點(diǎn):孵化 Dapp 項(xiàng)目,提供項(xiàng)目孵化服務(wù),發(fā)展 Ruby 生態(tài)。
· 共識(shí)節(jié)點(diǎn):采用 Ruby working 共識(shí)機(jī)制,參與共識(shí)。
· 存儲(chǔ)節(jié)點(diǎn):為所有應(yīng)用的鏈外數(shù)據(jù)(鏈外應(yīng)用塊)提供全節(jié)點(diǎn)存儲(chǔ)服務(wù)。
· 交易節(jié)點(diǎn):為鏈上原子交易(幣幣兌換)提供交易確認(rèn)服務(wù)。
· 普通節(jié)點(diǎn):普通錢包用戶即為一個(gè)普通節(jié)點(diǎn),具有發(fā)送、查詢交易、資產(chǎn)兌換等基本功能,同步全部區(qū)塊;
· 輕節(jié)點(diǎn):不同步全部區(qū)塊數(shù)據(jù),具有轉(zhuǎn)賬、接收交易等基本功能。
2. 生態(tài)體系內(nèi)的多元化原子交易
在 Ruby 的整體生態(tài)中,流通將是整個(gè)經(jīng)濟(jì)體永恒不變追溯的主題,一個(gè)世界中,只有資產(chǎn)快速自由的流動(dòng),才會(huì)有無盡的生命力,而非一潭死水。
在過去的幾年中,區(qū)塊鏈+金融主要解決的是單一資產(chǎn)在自身體系內(nèi)流動(dòng)的問題,這并不能解決整個(gè)區(qū)塊鏈生態(tài)發(fā)展的需要。賦予數(shù)字資產(chǎn)價(jià)值,而不是僅僅簡(jiǎn)單的記錄,是 Ruby要打造的多元化原子交易體系,最終實(shí)現(xiàn)大流通的效果。
Ruby原子交易支持原生資產(chǎn)、通證資產(chǎn)和跨鏈轉(zhuǎn)移資產(chǎn),支持鏈上資產(chǎn)直接兌換,原子交易時(shí)需要扣除手續(xù)費(fèi),手續(xù)費(fèi)使用原生資產(chǎn)。
未來,Ruby 將推動(dòng)萬物數(shù)字化,萬物皆資產(chǎn)的生態(tài)目標(biāo),例如將某 A 的數(shù)字資產(chǎn)哈?;鎯?chǔ)在數(shù)據(jù)模塊中,某 B 的電影版權(quán)哈?;鎯?chǔ)在數(shù)據(jù)模塊中,雙方調(diào)用智能合約直接進(jìn)行原子交易,發(fā)生資產(chǎn)兌換。
3. 分布式商業(yè)生態(tài),互聯(lián)網(wǎng)到區(qū)塊鏈的快速遷移
為實(shí)現(xiàn)互聯(lián)網(wǎng)時(shí)代向區(qū)塊鏈時(shí)代的快速轉(zhuǎn)化,完善擴(kuò)充 Ruby 的生態(tài)體系,快速遷移將顯得尤為重要,在眾多公共區(qū)塊鏈還在打磨自身技術(shù)的時(shí)候,Ruby 率先實(shí)現(xiàn)了快速遷移的可能,利用大數(shù)據(jù)模塊+多語(yǔ)言支持+模塊化接口調(diào)用的方式,使得傳統(tǒng)互聯(lián)網(wǎng)的普通開發(fā)者也可以基于 Ruby 進(jìn)行開發(fā),同時(shí)可以快速的將以往的產(chǎn)品接入 Ruby 生態(tài)。
4. 商業(yè)級(jí)智能物聯(lián)網(wǎng)嘗試,打造海量用戶入口
RubyBox 是 Ruby 嘗試研發(fā)的第一款基礎(chǔ)設(shè)施硬件,這次智能物聯(lián)網(wǎng)硬件的嘗試將不會(huì)在短時(shí)間內(nèi)發(fā)布,但 Ruby 團(tuán)隊(duì)將會(huì)對(duì)智能物聯(lián)領(lǐng)域持續(xù)的深耕。
Ruby 在企業(yè)級(jí)用戶端將借助 RubyBox 商用版搭建區(qū)塊鏈高速公路,未來 Ruby 可以為任何區(qū)塊鏈系統(tǒng)提供加速服務(wù),包括但不限于 CDN 加速、節(jié)點(diǎn)加速、鏈盤等。同時(shí)基于Ruby 生態(tài)進(jìn)行開發(fā)的 Dapp 也會(huì)享受到加速服務(wù)。
RubyBox 在用戶級(jí)端將提供以下服務(wù):
私人家庭安全云盤:通過 RubyBox,可以將終端設(shè)備(PC、MAC、手機(jī))上的私人文件安全存儲(chǔ)在 RubyBox 上,在世界任何的位置安全自由的訪問自己的私人文件。
私人家庭媒體中心:通過 RubyBox,可以將影音文件安全下載存儲(chǔ)在 RubyBox 上,隨時(shí)隨地可以通過終端(PC、手機(jī)、MAC、智能電視)欣賞大片。
無限延展智能硬件:RubyBox 是開放的、共享的、互聯(lián)的。未來,會(huì)有更多的區(qū)塊鏈應(yīng)用系統(tǒng)登錄 Ruby,RubyBox 將成為充滿無限想象的智能硬件中心,通過 RubyBox 獲得的資產(chǎn)將成為生態(tài)內(nèi)的專屬融合支付手段。
RubyBox 未來或?qū)⑹?Ruby 發(fā)布的首款智能物聯(lián)設(shè)備,以此開啟線下大用戶流量入口時(shí)代。
Ruby 技術(shù)現(xiàn)狀
1. Ruby 網(wǎng)絡(luò)構(gòu)成
Ruby 的網(wǎng)絡(luò)構(gòu)成分為以下幾個(gè)方面:
· 底層核心層的區(qū)塊鏈網(wǎng)絡(luò)構(gòu)成包括:基于 UTXO 模型的賬戶體系、原子交易、共識(shí)機(jī)制、數(shù)據(jù)模塊、跨鏈協(xié)議等。保證整個(gè) Ruby 生態(tài)的消息廣播一致性、數(shù)據(jù)安全與存儲(chǔ),同時(shí)保證整個(gè)經(jīng)濟(jì)體的高度自治與流通。
· 中層服務(wù)層的區(qū)塊鏈網(wǎng)絡(luò)構(gòu)成包括:CLI、RPC 調(diào)用接口,保證任何語(yǔ)言的開發(fā)者可以調(diào)用 Ruby 提供的模塊化功能進(jìn)行開發(fā),普通的開發(fā)者無需過多的了解區(qū)塊鏈技術(shù)即可進(jìn)行大型應(yīng)用的開發(fā)與遷移,享受區(qū)塊鏈帶來的便捷與改變。
· 最高層是應(yīng)用層:其中包含 Ruby 提供的官方應(yīng)用及未來生態(tài)開發(fā)者自主開發(fā)的Dapp,應(yīng)用層將是未來 Ruby 運(yùn)營(yíng)的核心重點(diǎn),海量的落地應(yīng)用會(huì)使得 Ruby 的生態(tài)更健康茁壯的發(fā)展。
2. Ruby working 共識(shí)機(jī)制
傳統(tǒng) POW 共識(shí)機(jī)制對(duì)算力及網(wǎng)絡(luò)環(huán)境要求較高,資源消耗嚴(yán)重,且存在高算力對(duì)網(wǎng)絡(luò)攻擊的威脅。對(duì)此 Ruby 針對(duì) POW 算法機(jī)制進(jìn)行改善處理,形成 Ruby working 共識(shí)機(jī)制。
在 Ruby working 共識(shí)機(jī)制中,保留傳統(tǒng) POW 工作量證明函數(shù) SHA256:
在 Ruby 系統(tǒng)中,基于尋找給定前綴的 SHA256 哈希值,設(shè)計(jì)了工作量證明的共識(shí)機(jī)制; SHA256 也被用于構(gòu)造地址,即用來識(shí)別不同的用戶。
相對(duì)傳統(tǒng) POW 共識(shí)算法,Ruby working 共識(shí)機(jī)制中添加了 Rotation 工作輪換證明算法以及 Contribute 系統(tǒng)貢獻(xiàn)算法。其中 RotaTIon 工作輪換證明算法是在網(wǎng)絡(luò)共識(shí)節(jié)點(diǎn)中隨機(jī)輪轉(zhuǎn)部分共識(shí)節(jié)點(diǎn)進(jìn)行批準(zhǔn)交易,并在下一輪輪轉(zhuǎn)時(shí)提出一個(gè)采礦難度,認(rèn)可此采礦難度的節(jié)點(diǎn)成為下一輪次確認(rèn)節(jié)點(diǎn)并進(jìn)行記錄,同時(shí)設(shè)置采礦限制,同一節(jié)點(diǎn)不可連續(xù)參與多次輪換采礦。這種結(jié)構(gòu)允許更多的礦工參與交易批準(zhǔn),在確保沒有固定的可能被破壞的驗(yàn)證順序的同時(shí)也節(jié)省了資源的消耗。
下圖為 RotaTIon 工作輪換證明算法流程圖,其中 N 為當(dāng)前批次,n 為根據(jù)當(dāng)前共識(shí)節(jié)點(diǎn)總量劃分的輪換批次:
Contribute 系統(tǒng)貢獻(xiàn)算法是在共識(shí)機(jī)制中,對(duì)于參與共識(shí)的節(jié)點(diǎn)所貢獻(xiàn)的帶寬、硬盤等資源進(jìn)行數(shù)字量化,并根據(jù)貢獻(xiàn)的多少,系統(tǒng)給予一定數(shù)量的獎(jiǎng)勵(lì)。Contribute 系統(tǒng)貢獻(xiàn)算法公式如下:
Ruby 將增加孵化節(jié)點(diǎn)機(jī)制,孵化節(jié)點(diǎn)與傳統(tǒng)意義的超級(jí)節(jié)點(diǎn)相比有本質(zhì)的不同,傳統(tǒng)的超級(jí)節(jié)點(diǎn)多采用 DPOS 機(jī)制,相當(dāng)于競(jìng)選機(jī)制,于是會(huì)在過程中出現(xiàn)很多灰色手段,這些毫無意義的競(jìng)爭(zhēng)和攻擊其實(shí)是對(duì)公共區(qū)塊鏈最大的傷害,最終也會(huì)成為超級(jí)節(jié)點(diǎn)垮掉的因素。
而孵化節(jié)點(diǎn)則是為了 Ruby 生態(tài)的發(fā)展,把人性最善的一面服務(wù)于 Ruby,服務(wù)于 Ruby開發(fā)者和生態(tài),孵化優(yōu)質(zhì)區(qū)塊鏈項(xiàng)目越多,獲得收益越多。
孵化節(jié)點(diǎn)是復(fù)合節(jié)點(diǎn),承擔(dān)四種角色,未來根據(jù)發(fā)展可能會(huì)進(jìn)行分類架設(shè),超級(jí)孵化節(jié)點(diǎn)的選擇將從社群規(guī)模、地區(qū)資源、技術(shù)水平、資歷經(jīng)驗(yàn)等四個(gè)方面綜合評(píng)估后選擇,超級(jí)孵化節(jié)點(diǎn)不設(shè)數(shù)量限制,將根據(jù)發(fā)展情況適時(shí)增加,超級(jí)孵化節(jié)點(diǎn)不以硬件比拼作為主要競(jìng)爭(zhēng)因素,原則上規(guī)定統(tǒng)一的硬件配置和定期統(tǒng)一升級(jí)策略,其項(xiàng)目孵化能力將是其獲得收益的最大依據(jù)——“孵化即挖礦”模式。
3. 多鏈并行
Ruby 網(wǎng)絡(luò)設(shè)計(jì)多鏈并行:(主鏈)公共區(qū)塊鏈、(側(cè)鏈)私有鏈、(側(cè)鏈)聯(lián)盟鏈、測(cè)試鏈。側(cè)鏈借助雙向掛鉤及混合挖礦技術(shù),代幣可在主鏈和側(cè)鏈間以特定形式流轉(zhuǎn),采用UTXO 模型。側(cè)鏈分擔(dān)主鏈的負(fù)擔(dān),大部分的應(yīng)用運(yùn)行于側(cè)鏈。
3.1 主鏈
Ruby 的核心,維持代幣運(yùn)行,去中心化,共識(shí)機(jī)制采用 Ruby working 算法,主鏈的各個(gè)節(jié)點(diǎn)可以自由加入及退出網(wǎng)絡(luò),并參加鏈上數(shù)據(jù)讀寫,運(yùn)行時(shí)節(jié)點(diǎn)以扁平的拓?fù)浣Y(jié)構(gòu)互聯(lián)互通,網(wǎng)絡(luò)中不存在任何中心化的服務(wù)端節(jié)點(diǎn)。智能合約是主鏈的核心應(yīng)用,同時(shí)也是自動(dòng)化,智能化的基礎(chǔ)。
3.2 側(cè)鏈
側(cè)鏈分為私有鏈和聯(lián)盟鏈,私有鏈和聯(lián)盟鏈并非完全去中心化,私有鏈應(yīng)用和聯(lián)盟鏈應(yīng)用可以設(shè)有區(qū)域中心,應(yīng)用開發(fā)者可以將應(yīng)用運(yùn)行在側(cè)鏈上。
聯(lián)盟鏈:聯(lián)盟鏈各個(gè)節(jié)點(diǎn)通常有與之對(duì)應(yīng)的實(shí)體機(jī)構(gòu)組織,通過授權(quán)后才有資格加入或退出網(wǎng)絡(luò)。各機(jī)構(gòu)組織組成利益相關(guān)的聯(lián)盟,共同維護(hù)網(wǎng)絡(luò)健康運(yùn)轉(zhuǎn),采用優(yōu)化的 POS 機(jī)制。
私有鏈:私有鏈各個(gè)節(jié)點(diǎn)的寫入權(quán)限歸內(nèi)部控制,讀取權(quán)限視需求有選擇性地對(duì)外開放。私有鏈仍然具備區(qū)塊鏈多節(jié)點(diǎn)運(yùn)行的通用結(jié)構(gòu),適用于特定機(jī)構(gòu)的內(nèi)部數(shù)據(jù)管理與審計(jì),其共識(shí)機(jī)制采用優(yōu)化的 POS 機(jī)制。
測(cè)試鏈:測(cè)試鏈承擔(dān)開發(fā)應(yīng)用上線前的測(cè)試。
4. 創(chuàng)新的碎片化存儲(chǔ)模式
4.1 雙螺旋分子結(jié)構(gòu)區(qū)塊鏈
主鏈、側(cè)鏈均采用類 DNA 雙螺旋分子結(jié)構(gòu)區(qū)塊鏈,將區(qū)塊鏈的底層成鏈技術(shù)由單一扁平區(qū)塊鏈向雙螺旋分子結(jié)構(gòu)區(qū)塊鏈轉(zhuǎn)變。
在各個(gè)區(qū)塊以及雙螺旋鏈中的鏈接溝通中, 我們將所有區(qū)塊想象成人類的 DNA,則雙螺旋結(jié)構(gòu)中左旋鏈與右旋鏈數(shù)據(jù)交互的 RUB 計(jì)算數(shù)學(xué)模型如下:
偏置的更新算法:
偏置介紹:
若每次計(jì)算從第一個(gè)區(qū)塊開始算起,則運(yùn)算速度過慢。例如,存在點(diǎn)(1,1),點(diǎn)(2,2),無法從原點(diǎn)畫一條直線將其成兩類,需要偏置值使得線段不從(0,0)點(diǎn)出發(fā)而是從更適合的點(diǎn)出發(fā)。
偏置的更新公式:
權(quán)值更新公式的由來:
橋接塊到右旋鏈的權(quán)值更新
4.2 數(shù)據(jù)模塊
數(shù)據(jù)模塊體系將賬戶交易和數(shù)據(jù)分離,以此保證在大容量數(shù)據(jù)上鏈的前提下維持 TPS效率,數(shù)據(jù)模塊作為 Ruby 的通用數(shù)據(jù)存儲(chǔ)提供了高級(jí)抽象和 API,可實(shí)現(xiàn)鏈上三種不同類型數(shù)據(jù)庫(kù):
· NoSQL 型鍵值數(shù)據(jù)庫(kù);
· 身份驅(qū)動(dòng)型數(shù)據(jù)庫(kù),根據(jù)具體發(fā)送者和接受者查詢,分類;
· 采取平穩(wěn)序列模型數(shù)據(jù)庫(kù),平穩(wěn)數(shù)據(jù)變化,消除長(zhǎng)期趨勢(shì)和差分化,可用于條目排序。
Ruby 數(shù)據(jù)模塊允許區(qū)塊鏈用作通用附加數(shù)據(jù)庫(kù),區(qū)塊鏈提供時(shí)間戳,公正和不變性。
可以創(chuàng)建任意數(shù)量的數(shù)據(jù)模塊,每個(gè)數(shù)據(jù)模塊發(fā)布的數(shù)據(jù)由創(chuàng)建者存儲(chǔ),其中每一個(gè)都可以向所有人開放以供寫入,或者只能從特定地址寫入。如果一個(gè)節(jié)點(diǎn)選擇訂閱數(shù)據(jù)模塊,它將索引該數(shù)據(jù)模塊的內(nèi)容以便以各種方式進(jìn)行高效檢索,若未訂閱數(shù)據(jù)模塊,則無需為其付出算力。
每個(gè)數(shù)據(jù)模塊中的每條數(shù)據(jù)都是有序的項(xiàng)目列表,其中每條數(shù)據(jù)的格式如下:
{“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
}
每條數(shù)據(jù)具有如下特征:
· 一個(gè)或多個(gè) senditemers 已完成數(shù)字簽名的項(xiàng)目;
· 一個(gè)或多個(gè)長(zhǎng)度在 0-256 字節(jié)之間的 key 值,可以利用 key 值進(jìn)行索引;
· data,可存放幾 M 的數(shù)據(jù);
· 支持存放結(jié)構(gòu)化的 JSON 對(duì)象,易寫易讀。
如果一個(gè)節(jié)點(diǎn)訂閱了該數(shù)據(jù)模塊,可以通過以下幾種方式來進(jìn)行索引查詢:
· 根據(jù) key 值索引;
· 根據(jù) senditemers,也就是創(chuàng)建者索引;
· 根據(jù) txid,blockindex,blockhash 等進(jìn)行索引。
數(shù)據(jù)模塊的設(shè)計(jì)使得鏈與鏈之間交互變得簡(jiǎn)單、高效,將會(huì)解決鏈上幣幣交易、跨鏈資產(chǎn)兌換以及場(chǎng)景化智能合約等固有問題。
4.3 無感鏈外擴(kuò)展存儲(chǔ)
區(qū)塊鏈應(yīng)用程序開發(fā)實(shí)現(xiàn)分散式鏈外數(shù)據(jù)傳輸,一個(gè)常見的選擇是采用現(xiàn)有的對(duì)等文件共享平臺(tái),例如 IPFS,并將其與區(qū)塊鏈結(jié)合使用。但 IPFS 具有以下幾個(gè)缺點(diǎn),并不能高效便捷的與區(qū)塊鏈進(jìn)行結(jié)合:
· 每個(gè)參與者必須安裝,維護(hù)和更新三個(gè)獨(dú)立的軟件(區(qū)塊鏈節(jié)點(diǎn),IPFS 節(jié)點(diǎn)和中間件),每個(gè)軟件都將其數(shù)據(jù)存儲(chǔ)在不同的位置。
· 兩個(gè)獨(dú)立的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)都有其配置,網(wǎng)絡(luò)端口,身份系統(tǒng)和許可。
· 將 IPFS 和區(qū)塊鏈緊密結(jié)合在一起會(huì)使中間件變得越來越復(fù)雜,同時(shí)面臨中心化的風(fēng)險(xiǎn)。
針對(duì) IPFS 與區(qū)塊鏈結(jié)合的缺點(diǎn)和風(fēng)險(xiǎn),Ruby 通過以下便捷高效的方式完成了與鏈外數(shù)據(jù)的交互同步,同時(shí)規(guī)避了可能出現(xiàn)的中心化風(fēng)險(xiǎn):
發(fā)布節(jié)點(diǎn)將新數(shù)據(jù)寫入其本地存儲(chǔ),將大型項(xiàng)目分塊,自動(dòng)構(gòu)建發(fā)布鏈外數(shù)據(jù)的事務(wù),該事務(wù)被簽名并廣播到網(wǎng)絡(luò),在節(jié)點(diǎn)之間傳播并以通常的方式進(jìn)入?yún)^(qū)塊鏈。當(dāng)數(shù)據(jù)需求節(jié)點(diǎn)對(duì)鏈外數(shù)據(jù)引用時(shí),會(huì)將該數(shù)據(jù)的 HASH 請(qǐng)求添加到其檢索隊(duì)列中,并作為后臺(tái)進(jìn)程。如果節(jié)點(diǎn)的檢索隊(duì)列中有此 HASH,則將查詢發(fā)送到網(wǎng)絡(luò)以查找有此 HASH 標(biāo)識(shí)的區(qū)塊。這些查詢以點(diǎn)對(duì)點(diǎn)的方式傳播到網(wǎng)絡(luò)中的其他節(jié)點(diǎn)。具有數(shù)據(jù)的任何節(jié)點(diǎn)都可以響應(yīng),并且該響應(yīng)沿著與查詢相同的路徑被中繼給用戶。如果沒有節(jié)點(diǎn)應(yīng)答查詢,則該 HASH 查詢請(qǐng)求將返回到隊(duì)列以供稍后重試。如果長(zhǎng)時(shí)間無節(jié)點(diǎn)響應(yīng),需求節(jié)點(diǎn)將再次向網(wǎng)絡(luò)發(fā)送請(qǐng)求。如果有節(jié)點(diǎn)接收請(qǐng)求,接收節(jié)點(diǎn)根據(jù)請(qǐng)求驗(yàn)證數(shù)據(jù)的大小和 HASH 值,發(fā)送相應(yīng)數(shù)據(jù),數(shù)據(jù)檢出完畢后,接收節(jié)點(diǎn)將數(shù)據(jù)寫入本地存儲(chǔ),使其立即可用于通過 API 進(jìn)行檢索。如果請(qǐng)求的內(nèi)容沒有接收到,或者與所需的 HASH 或大小不匹配,則將該請(qǐng)求返回到隊(duì)列中,以便需求節(jié)點(diǎn)從其他源中檢索。
在延遲較短的網(wǎng)絡(luò)中,體量較小的離線數(shù)據(jù)將在引用交易的瞬間傳輸完成。對(duì)于高負(fù)載應(yīng)用,Ruby 支持超過 1200 個(gè)鏈外項(xiàng)目時(shí),保持每秒檢索 30 MB 的鏈外數(shù)據(jù)網(wǎng)絡(luò)連接,并且最大 1000MB 的脫鏈數(shù)據(jù)都可以正常傳輸,不會(huì)影響 Ruby 網(wǎng)絡(luò)效率。
數(shù)據(jù)模塊可以設(shè)定其存儲(chǔ)為普通數(shù)據(jù)模塊(僅可存儲(chǔ)鏈內(nèi)應(yīng)用塊)、應(yīng)用數(shù)據(jù)模塊、混合數(shù)據(jù)模塊,后兩者可存儲(chǔ)鏈外數(shù)據(jù)塊的 HASH、發(fā)布者、索引等信息,可以實(shí)現(xiàn)快速檢索、分發(fā)鏈外數(shù)據(jù)塊。
鏈內(nèi)數(shù)據(jù)大小單塊限制為 16M,超出 16M 可以存為鏈外數(shù)據(jù)塊(原則上 Ruby 允許無限大的鏈外數(shù)據(jù)塊,出于性能考慮,不建議單個(gè)鏈外數(shù)據(jù)塊超過 1000M)。
5. 跨鏈協(xié)議(Cross-chain Asset Trading)
為支持?jǐn)?shù)字資產(chǎn)跨鏈價(jià)值傳輸,Ruby 設(shè)計(jì)出跨鏈協(xié)議 CCAT(Cross-chain Asset Trading)。針對(duì)目標(biāo)鏈上的每一種需要跨鏈傳輸?shù)馁Y產(chǎn),在 Ruby 中均需發(fā)行一個(gè)與之對(duì)應(yīng)的通證,作為目標(biāo)資產(chǎn)在 Ruby 內(nèi)部流通的憑證,這種通證記為 TAT(Third-party Asset Token)。
6. 場(chǎng)景化智能合約
Ruby 場(chǎng)景化智能合約,我們稱之為智能合約 2.0,給開發(fā)者足夠的自由度,開發(fā)者可以選擇使用自己熟悉的開發(fā)語(yǔ)言,Ruby 提供與鏈進(jìn)行交換的智能合約接口。
對(duì)外提供的與鏈交互的智能合約主要通過 JSON API 提供,所有的 API 都可作為與鏈進(jìn)行數(shù)據(jù)交互的方法。
額外提供兩個(gè)關(guān)鍵的方法,確保開發(fā)者能夠高效開發(fā) Dapp。這兩個(gè)方法是:創(chuàng)建資產(chǎn)方法、創(chuàng)建數(shù)據(jù)模塊方法。開發(fā)者在開發(fā) Dapp 時(shí)可通過網(wǎng)站下載私有鏈開發(fā)測(cè)試版進(jìn)行開發(fā),也可申請(qǐng)相應(yīng)資產(chǎn)和相應(yīng)數(shù)據(jù)模塊在測(cè)試鏈開發(fā),開發(fā)完成后可移植到公鏈。
6.1 代幣融資智能合約參考
主要目標(biāo):設(shè)置自動(dòng)化的幣幣兌換,實(shí)現(xiàn)代幣融資智能合約的底層技術(shù)框架。
場(chǎng)景描述:創(chuàng)建一種待融資的資產(chǎn)(代幣代碼 FBC,最小單位 0.01,總量 10000000,融資額 5000000,兌換 500 RUB(系統(tǒng)中已存在的資產(chǎn)或原生貨幣))
具體實(shí)現(xiàn)詳見 Ruby 開發(fā)者文檔,希望有興趣的開發(fā)者或組織與我們聯(lián)絡(luò),基于此開發(fā)代幣融資 Dapp,Ruby 非常歡迎將其納入 Ruby 軟件商店。
6.2 版權(quán)保護(hù)智能合約
(1)創(chuàng)作過程,對(duì)稱加密,寫鏈;
(2)成品加密存儲(chǔ);
(3)1/n 多簽分發(fā)。
6.3 游戲場(chǎng)景智能合約
以養(yǎng)貓為例
(1) 生成小貓
創(chuàng)建地址
生成對(duì)應(yīng)數(shù)據(jù)模塊:記錄小貓?zhí)匦?/p>
(2) 喂養(yǎng)小貓
幣幣交易,過程記入數(shù)據(jù)模塊
(3) 繁殖后代
數(shù)據(jù)模塊特性疊加計(jì)入新貓數(shù)據(jù)模塊
6.4 RubyVM(Ruby Virtual Machine)
Ruby 借鑒了開源 QEMU 模擬處理器,QEMU 是一套由虛擬化天才程序員法布里斯·貝拉(Fabrice Bellard)所編寫的開源模擬處理器,在 GNU/Linux 平臺(tái)上使用廣泛。默認(rèn)支持多種架構(gòu)??梢阅M IA-32 (x86)個(gè)人電腦,AMD 64 個(gè)人電腦,MIPS R4000, 升陽(yáng)的SPARCsun3 與 PowerPC(PReP 及 Power Macintosh)架構(gòu),由于采用 Ruby 虛擬機(jī)方式,Ruby 使現(xiàn)有應(yīng)用遷移也變得非常方便,可以用最小的代碼量實(shí)現(xiàn)現(xiàn)有應(yīng)用的遷移。幾乎對(duì)所有現(xiàn)有應(yīng)用提供遷移支持,同時(shí) Ruby 將在適當(dāng)時(shí)機(jī)完成開發(fā)兼容以太坊虛擬機(jī) EVM。
Ruby 在設(shè)計(jì)上采用基于數(shù)據(jù)模塊的底層 Ruby 虛擬機(jī),使在平臺(tái)上開發(fā)變得非常簡(jiǎn)單,開發(fā)人員無需改變現(xiàn)有編程語(yǔ)言習(xí)慣和編程方式就可以在 Ruby 上完成區(qū)塊鏈應(yīng)用開發(fā)。
7. Ruby TPS 提升
7.1 傳統(tǒng) POW 機(jī)制下的 TPS 無法提升的原因
傳統(tǒng)理論認(rèn)為 POW 無法做到大幅度的 TPS 提升,其實(shí)不然,Ruby 認(rèn)為在 POW 機(jī)制下 TPS 無法大幅度提升主要是因?yàn)橐韵聨c(diǎn):
· 所有的錢包交易都保存在內(nèi)存中。這樣啟動(dòng)時(shí)間會(huì)縮短,但內(nèi)存使用量迅速增加;
· 由于采用 UTXO 模型,許多操作對(duì)錢包中的每筆交易執(zhí)行效率低下的“全面掃描”,無論是舊的還是新的。
· 錢包中的每筆交易都被完整存儲(chǔ),包括任何從節(jié)點(diǎn)的角度來看沒有意義的任意“元數(shù)據(jù)”,雖然其已經(jīng)存儲(chǔ)在磁盤上的區(qū)塊鏈中。其結(jié)果是,節(jié)點(diǎn)如果存儲(chǔ)了 2 萬筆交易,錢包會(huì)變得非常緩慢。在 20 萬筆左右后,它實(shí)際上陷入停頓。
7.2 從比特幣和以太坊看無法提高 TPS 的原因
比特幣節(jié)點(diǎn)不能提高 TPS 的主要原因并不是因?yàn)?POW 共識(shí)機(jī)制(POW 從本質(zhì)上說基本上都會(huì)在成塊時(shí)間內(nèi)完成共識(shí)),而是因?yàn)樯衔奶岬降娜c(diǎn)原因,雖然比特幣網(wǎng)絡(luò)可以輕松處理和存儲(chǔ)數(shù)百萬甚至更大與自己無關(guān)的事務(wù),這些事務(wù)是在磁盤中而不是內(nèi)存中進(jìn)行的。但在具體到單一節(jié)點(diǎn)時(shí),在處理跟自己有關(guān)的事務(wù)時(shí),因?yàn)椴捎?UTXO 模型,需要遍歷全部區(qū)塊文件,執(zhí)行效率低下的“全面掃描”,來獲得未花費(fèi)的輸出作為輸入。而這些全面掃描包括內(nèi)存中的交易及元數(shù)據(jù)和區(qū)塊文件都是非結(jié)構(gòu)化的數(shù)據(jù),檢索速度會(huì)很低效,所以到單一節(jié)點(diǎn),其 TPS 僅能達(dá)到 3 TPS。
以太坊節(jié)點(diǎn)的處理機(jī)制:以太坊在設(shè)計(jì)時(shí)考慮到了 UTXO 模型的弊端,所以在設(shè)計(jì)上以犧牲可靠性為代價(jià),沒有采用 UTXO 模型,但其相關(guān)事務(wù)依然是非結(jié)構(gòu)化數(shù)據(jù),除此之外由于智能合約的設(shè)計(jì)是全局存在的,需要所有的節(jié)點(diǎn)去區(qū)塊文件遍歷執(zhí)行,所以其 TPS雖然較比特幣有所提高,但依然無法得到大幅度提升,其 TPS 為 20-30 之間。
7.3 Ruby TPS 提升方法
Ruby 通過以下幾種方式,使得 TPS 有了顯著提升:
· 變內(nèi)存驅(qū)動(dòng)為數(shù)據(jù)庫(kù)驅(qū)動(dòng),實(shí)現(xiàn)結(jié)構(gòu)化存儲(chǔ)和快速檢索;
Ruby 核心錢包采用本地雙數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)(雙螺旋分子結(jié)構(gòu)區(qū)塊鏈),將原先節(jié)點(diǎn)單一數(shù)據(jù)庫(kù)劃分為區(qū)塊數(shù)據(jù)庫(kù)和錢包事務(wù)數(shù)據(jù)庫(kù)。區(qū)塊數(shù)據(jù)庫(kù)采用了 UTXO 模型的安全可靠,同時(shí)結(jié)合了錢包事務(wù)數(shù)據(jù)庫(kù)賬戶余額模型的靈活高效。區(qū)塊數(shù)據(jù)庫(kù)仍然存儲(chǔ)全部區(qū)塊數(shù)據(jù),錢包事務(wù)數(shù)據(jù)庫(kù)存儲(chǔ)本地錢包地址相關(guān)的交易和事務(wù)信息,而任何大于 256 字節(jié)的交易元數(shù)據(jù)都不會(huì)存儲(chǔ)在錢包事務(wù)數(shù)據(jù)庫(kù)中,而是在錢包事務(wù)數(shù)據(jù)庫(kù)中包含一個(gè)指向區(qū)塊鏈本身的數(shù)據(jù)位置的指針,錢包交易時(shí)通過指針或者索引直接查找區(qū)塊數(shù)據(jù)庫(kù),可迅速定位符合特定標(biāo)準(zhǔn)的交易,而不是執(zhí)行完整的錢包掃描,可顯著節(jié)省查詢時(shí)間并提高交易速度。 ?
· 設(shè)計(jì)獨(dú)有的數(shù)據(jù)模塊,在保證性能的前提下,提升大容量上鏈數(shù)據(jù);
Ruby 數(shù)據(jù)模塊允許區(qū)塊鏈用作通用附加數(shù)據(jù)庫(kù),區(qū)塊鏈提供時(shí)間戳,公證和不變性。Ruby 可以包含任意數(shù)量的數(shù)據(jù)模塊,每個(gè)數(shù)據(jù)模塊發(fā)布的數(shù)據(jù)由每個(gè)節(jié)點(diǎn)存儲(chǔ),其中每一個(gè)數(shù)據(jù)模塊都可以向所有人開放以供寫入,或者只能從特定地址寫入。如果一個(gè)節(jié)點(diǎn)選擇訂閱數(shù)據(jù)模塊,它將在錢包事務(wù)數(shù)據(jù)庫(kù)中為此數(shù)據(jù)模塊建立內(nèi)容索引,以便以各種方式進(jìn)行高效的檢索。
· 采用 Ruby working 共識(shí)算法,作為輔助提升 TPS 的手段
Ruby working 共識(shí)算法在降低資源消耗的同時(shí),加快了網(wǎng)絡(luò)共識(shí)的達(dá)成,更快的成塊時(shí)間以及更大的區(qū)塊容量都為 TPS 的提升提供了幫助。
綜上,通過以上三種主要方法(另外還有自動(dòng)歸集未花費(fèi)輸出從而提高檢索效率等方法),Ruby 能夠做到在安全可靠前提下,采用 POW 機(jī)制和支持大容量上鏈數(shù)據(jù)的情況下依然可以實(shí)現(xiàn)較高的 TPS。在中端設(shè)備單節(jié)點(diǎn)下,TPS 可以達(dá)到每秒 1080 筆,在高端設(shè)備連接的局域網(wǎng)或者借助部分中心化手段(如超級(jí)節(jié)點(diǎn))的情況下可以支持每秒十萬到百萬筆的交易速度。但在廣域網(wǎng)環(huán)境下,受到帶寬及其他網(wǎng)絡(luò)因素影響,實(shí)際的 TPS 可能會(huì)有所下降。
8. 運(yùn)行環(huán)境與開發(fā)工具
8.1 運(yùn)行環(huán)境
Ruby 已開發(fā)完成廣范支持當(dāng)前主流的運(yùn)行環(huán)境,包括但不限于 Windows、Linux、Mac、安卓、IOS 等各種家用、商用及工業(yè)運(yùn)行環(huán)境。系統(tǒng)要求:
操作系統(tǒng)環(huán)境:
Mac:OS X 10.11+
Linux:64 位,Debian 7+,Ubuntu 14.04 +,CentOS 7 +,F(xiàn)edora 20 +,RHEL 7+
Windows:64 位,Win7+
Andriod:7.0+
IOS:9.0+
硬件環(huán)境:
RAM:1G
Disk:2G
8.2 底層代碼
Ruby 底層由 C++編寫實(shí)現(xiàn),命令行工具由底層源碼使用 gcc/g++直接編譯生成,提供各版本命令行工具,支持 Ruby 全部 RPC 命令,包括 Windows、Linux、Mac 等多種版本。
8.3 錢包客戶端
Ruby 的錢包客戶端,支持基于 Ruby 的所有數(shù)字資產(chǎn),包括 Windows、Linux、Mac、Andriod、IOS 等多種版本。其中,適用于 Windows、Linux、Mac 的桌面級(jí)錢包應(yīng)用采用跨平臺(tái)語(yǔ)言 java 開發(fā),使用 javafx 進(jìn)行頁(yè)面設(shè)計(jì)。Java 具有簡(jiǎn)單性、面向?qū)ο?、分布式、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn)。java 的存儲(chǔ)分配模型是它防御惡意代碼的主要方法之一;Java 沒有指針,所以程序員不能得到隱蔽起來的內(nèi)幕和偽造指針去指向存儲(chǔ)器。更重要的是,Java 編譯程序不處理存儲(chǔ)安排決策,所以程序員不能通過查看聲明去猜測(cè)類的實(shí)際存儲(chǔ)安排。編譯的 Java 代碼中的存儲(chǔ)引用在運(yùn)行時(shí)由 Java解釋程序決定實(shí)際存儲(chǔ)地址?;谝陨?java 語(yǔ)言的特性,保證錢包客戶端在各平臺(tái)的安全及平穩(wěn)運(yùn)行。
8.5 Ruby 區(qū)塊瀏覽器
Ruby 區(qū)塊瀏覽器為 Ruby 原始幣種及基于 Ruby 發(fā)行的各種資產(chǎn)提供區(qū)塊、交易查詢、數(shù)據(jù)模塊的數(shù)據(jù)查詢以及原子交易掛單查詢。Ruby區(qū)塊瀏覽器使用python結(jié)合bootstrap開發(fā),python 語(yǔ)言的面向?qū)ο?、解釋性、可擴(kuò)展性、可嵌入性等特性,以及 python 自帶的豐富的庫(kù),可以很好的幫助 Ruby 區(qū)塊瀏覽器的優(yōu)化及開發(fā),而 bootstrap 前端框架為Ruby 區(qū)塊瀏覽器提供了方便簡(jiǎn)潔的頁(yè)面效果。
8.6 其他 Dapp
Ruby 支持用戶使用通用語(yǔ)言編寫開發(fā) Dapp,開發(fā)用戶自己的場(chǎng)景化智能合約,Ruby提供標(biāo)準(zhǔn)的 RPC 服務(wù)接口和近 150 條 API 供開發(fā)者使用。
9. 安全
51%算力攻擊:51%攻擊是指掌握了全網(wǎng)的 51%算力之后,用這些算力來重新計(jì)算已經(jīng)確認(rèn)過的區(qū)塊,使塊鏈產(chǎn)生分叉并且獲得利益的行為。
對(duì)于存在的 51%算力攻擊,Ruby 通過 Rotation 工作輪換證明算法,再次降低 51%算力攻擊的可能性。由于 Rotation 工作輪換證明算法對(duì)于參與共識(shí)的節(jié)點(diǎn)分批次進(jìn)行共識(shí)確認(rèn),使得 51%算力攻擊出現(xiàn)的可能性大大降低,并且在出現(xiàn) 51%算力攻擊時(shí),由于 Rotation工作輪換證明算法對(duì)于共識(shí)節(jié)點(diǎn)的隨機(jī)性,使得在 51%算力攻擊出現(xiàn)后并不能一直維持51%算力攻擊,因此在被攻擊后等待幾次確認(rèn)后,可以回滾至原塊鏈。
10. 服務(wù)層指令
10.1 CLI 調(diào)用
Ruby 提供如下常用 CLI 指令:
(1)節(jié)點(diǎn)基本操作指令
help 幫助
stop 停止節(jié)點(diǎn)
pause 暫停節(jié)點(diǎn)
resume 恢復(fù)節(jié)點(diǎn)
emptymem 清除內(nèi)存池
showmem 查看內(nèi)存池
shownet 查看網(wǎng)絡(luò)信息
showpeer 查看連接節(jié)點(diǎn)信息
showchain 查看區(qū)塊信息
showblock 查看區(qū)塊
showblocks 查看區(qū)塊
showblockhash 查看區(qū)塊哈希值
signmessage 消息簽名
checkmessage 消息驗(yàn)證
(2)錢包基本操作指令
addnewaddr 增加一個(gè)普通地址
addmultiaddr 增加一個(gè)多簽地址
setupmulti 創(chuàng)建多簽地址
setupkeypairs 創(chuàng)建地址對(duì)(不導(dǎo)入錢包)
showaddrs 顯示地址及詳細(xì)
dumpprivkey 導(dǎo)出私鑰
importprivkey 導(dǎo)入私鑰
importaddr 導(dǎo)入地址
backupwallet 備份錢包文件
dumpwallet 導(dǎo)出全部私鑰到文本文件
importwallet 導(dǎo)入錢包文件
encryptwallet 加密錢包文件
changepass 更改錢包密碼
walletpass 輸入錢包密碼
showassets 顯示資產(chǎn)
showbal 顯示 RUB
showaddrbals 列出特定地址的所有資產(chǎn)余額(含 RUB)
showallbals 列出此錢包(地址)所有資產(chǎn)余額信息(含 RUB)
showaddrdeal 顯示特定地址的特定交易信息
showaddrdeals 顯示特定地址交易信息
showwalletdeals 顯示錢包交易信息
send 發(fā)送 RUB 或資產(chǎn)
sendfrom 從特定地址發(fā)送 RUB 或資產(chǎn)
sendasset 發(fā)送資產(chǎn)
sendassetfrom 從特定地址發(fā)送資產(chǎn)
senddata 發(fā)送 RUB 或資產(chǎn)并附加數(shù)據(jù)信息
senddatafrom 從特定地址發(fā)送 RUB 或資產(chǎn)并附加數(shù)據(jù)信息
(3)創(chuàng)建發(fā)行數(shù)字資產(chǎn) /數(shù)據(jù)模塊指令(受限)
sell 發(fā)行數(shù)字資產(chǎn)
sellfrom 從特定地址發(fā)行數(shù)字資產(chǎn)
sellasset 追加發(fā)行數(shù)字資產(chǎn)
sellassetfrom 從特定地址追加發(fā)行數(shù)字資產(chǎn)
setupdatamod 創(chuàng)建數(shù)據(jù)模塊
setupdatamodfrom 從特定地址創(chuàng)建數(shù)據(jù)模塊
senditem 向數(shù)據(jù)模塊發(fā)布數(shù)據(jù)
senditemfrom 從特定地址向數(shù)據(jù)模塊發(fā)送數(shù)據(jù)
showdatas 列出數(shù)據(jù)模塊
order 訂閱數(shù)據(jù)/資產(chǎn)模塊
noorder 取消訂閱數(shù)據(jù)/資產(chǎn)模塊
showdataitem 顯示單一數(shù)據(jù)條目
showdataitems 列出數(shù)據(jù)模塊下數(shù)據(jù)條目
showdatakeys 列出某數(shù)據(jù)模塊關(guān)鍵字
showdatakeyitems 列出某數(shù)據(jù)模塊關(guān)鍵字的條目
showdatasenderitems 列出數(shù)據(jù)模塊特定發(fā)送者的數(shù)據(jù)條目信息
showdatasenders 列出數(shù)據(jù)模塊發(fā)送者信息
(4)幣兌換及原子交易(事務(wù))指令
prelock 預(yù)先鎖定輸出
prelockfrom 從特定地址預(yù)先鎖定輸出
setuprawex 創(chuàng)建原子交換(幣幣兌換)
decoderawex 解碼原子交換(幣幣兌換)
addrawex 附加原子交換(幣幣兌換)
completerawex 完成原子交換(幣幣兌換)
sendrawdeal 提交原子交易至區(qū)塊鏈
disrawdeal 取消特定原子交易
gatherunspent 歸集未花費(fèi)輸出
showunspent 顯示未花費(fèi)輸出
showlock 顯示鎖定的未花費(fèi)輸出
lock 鎖定(解鎖)未花費(fèi)輸出
setuprawdeal 創(chuàng)建原子交易(事務(wù))
setuprawsendfrom 從特定地址創(chuàng)建原子交易(事務(wù))
decoderawdeal 解碼原子交易(事務(wù))
addrawdeal 附加原子交易(事務(wù))
addrawchange 附加原子花費(fèi)
addrawdata 附加原子數(shù)據(jù)
signrawdeal 簽署原子交易(事務(wù))
10.2 JSON-RPC API 指令集
RPC 用 戶 名 密 碼 存 儲(chǔ) 在 ~/.ruby/ruby/ruby.conf ( linux/MAC ) 或者 %APPDATA%RUby uby/ruby.conf 文 件 中 , 可 以 使 用 rubyi 命 令 行 工 具 或 者RUbyTool 工具內(nèi)置的 CLI 界面連接,這些工具會(huì)自動(dòng)讀取 RPC 用戶名密碼并連接已運(yùn)行區(qū)塊鏈。