Cosmos白皮書

Table of Contents

介紹

開源的生態(tài)系統(tǒng)养叛、去中心化的文件共享思杯、以及公共的加密貨幣,這一系列技術(shù)的成功使人們啟發(fā)和理解劫窒,去中心化的互聯(lián)網(wǎng)協(xié)議是可以從根本上改善社會經(jīng)濟基礎(chǔ)架構(gòu)的扳碍。我們已經(jīng)見識過個有專長的區(qū)塊鏈應(yīng)用提岔,諸如比特幣[1](加密貨幣),ZCASH [2] (隱私加密貨幣)笋敞,也看到了例如以太坊 [3] 的大眾智能合約平臺碱蒙,還有無數(shù)基于 EVM (以太坊虛擬機)開發(fā)的分布式應(yīng)用,例如 Augur(預(yù)測市場)和 TheDAO [4] (投資俱樂部)

然而夯巷,迄今為止赛惩,這些區(qū)塊鏈已經(jīng)暴露了各種缺陷,包括總體能效低下趁餐,性能不佳或受到限制和缺乏成熟的治理機制喷兼。為了擴大比特幣交易吞吐量,已經(jīng)研發(fā)了許多諸如隔離見證 [5](Segregated-Witness)和BitcoinNG [6](一種新的可擴展協(xié)議)這樣的解決方案澎怒,但這些垂直擴展解決方案仍然受到單一物理機容量的限制蜀肘,以確保完整的可審計性。閃電網(wǎng)絡(luò) [7]可以通過部分交易完全記錄在主鏈賬本外來擴展比特幣的交易容量亏拉,這種方法十分適用于微支付和隱私保護支付通道,但是無法適用于更通用的擴展需求走孽。

理想的解決方案是允許多個并行的區(qū)塊鏈交互操作的同時保持其安全特性。事實證明琳状,采用工作量證明很難做到這一點磕瓷,但也并非不可能。例如合并挖礦念逞,允許在工作完成的同時困食,確保母鏈在子鏈上被重復(fù)使用,但交易必須通過每個節(jié)點依次進行驗證翎承,而且如果母鏈上的大多數(shù)哈希算力沒有積極地對子鏈進行合并挖礦硕盹,那么就容易遭受到攻擊。關(guān)于可替代區(qū)塊鏈網(wǎng)絡(luò)架構(gòu)的學術(shù)回顧 將在附件中展示叨咖,我們也會在相關(guān)工作中對其他(技術(shù))方案和缺陷進行概括瘩例。

這里我們要介紹的 Cosmos,一個全新的區(qū)塊鏈網(wǎng)絡(luò)架構(gòu)甸各,能夠解決所有這些問題垛贤。Cosmos 是由許多被稱之為“分區(qū)”的獨立區(qū)塊鏈組成的網(wǎng)絡(luò)。分區(qū)在 Tendermint Core [8]的支持下運行趣倾,Tendermint Core 是一個類似拜占庭容錯安全共識引擎聘惦,具有高性能、一致性的特性儒恋,并且在嚴格的分叉追責 機制下能夠制止惡意破壞者的行為善绎。Tendermint Core 的拜占庭容錯共識算法十分適合用于擴展權(quán)益證明(PoS)機制下的公共區(qū)塊鏈。使用其他共識模型的區(qū)塊鏈, 包括類似基于權(quán)益證明(PoS)的以太坊碧浊,以及比特幣也能夠通過使用適配分區(qū)被 Cosmos 網(wǎng)絡(luò)連接涂邀。

Cosmos 的第一個分區(qū)稱之為 Cosmos 樞紐瘟仿。Cosmos 樞紐是一種多資產(chǎn)權(quán)益證明加密貨幣網(wǎng)絡(luò)箱锐,它通過簡單的治理機制能夠?qū)W(wǎng)絡(luò)進行適配和升級。此外劳较,Cosmos 樞紐可以通過鏈接其他分區(qū)來實現(xiàn)擴展驹止。

Cosmos 網(wǎng)絡(luò)的樞紐及各個分區(qū)可以通過區(qū)塊鏈間通信(IBC)協(xié)議進行通信,這種協(xié)議就是針對區(qū)塊鏈的虛擬用戶數(shù)據(jù)報協(xié)議(UDP)或者傳輸控制協(xié)議(TCP)观蜗。代幣可以安全臊恋、快速地從一個分區(qū)轉(zhuǎn)到其他分區(qū),而無需在兩個分區(qū)之間擁具有匯兌流動性墓捻。相反抖仅,所有跨分區(qū)的代幣轉(zhuǎn)移都會通過 Cosmos 樞紐,以此來追蹤記錄每個分區(qū)持有代幣的總量。這個樞紐會將每個分區(qū)與其他故障分區(qū)隔離開撤卢。因為每個人都可以將新的分區(qū)連接到 Cosmos 樞紐环凿,所以分區(qū)將可以向后兼容新的區(qū)塊鏈技術(shù)。

利用 Cosmos 可以實現(xiàn)區(qū)塊鏈間的互操作放吩。這是一個具有潛力的有價值的互聯(lián)網(wǎng)絡(luò)智听,其中的資產(chǎn)由不同的驗證人發(fā)布和控制,并可以在不依靠需要信任的第三方的情況下實現(xiàn)跨鏈資產(chǎn)無縫的轉(zhuǎn)移和交易渡紫。

Tendermint

在這一部分我們將闡述Tendermint共識協(xié)議和用于建立其應(yīng)用程序的接口到推。 更多信息,請參見附錄

驗證人

在經(jīng)典的拜占庭容錯算法中惕澎,每個節(jié)點有相同的權(quán)重莉测。在 Tendermint,節(jié)點有著不同數(shù)量(非負)的 投票權(quán)唧喉,而那些擁有相當數(shù)量投票權(quán)的節(jié)點稱之為 驗證人悔雹。驗證人通過廣播加密簽名、投票或者對下一個區(qū)塊表決同意來參與共識協(xié)議欣喧。

驗證者的投票權(quán)是一開始就確定好了腌零,或者根據(jù)應(yīng)用程序由區(qū)塊鏈來決定修改投票權(quán)。例如唆阿,在像Cosmos 樞紐的權(quán)益證明應(yīng)用里益涧,投票權(quán)可由綁定為押金的代幣數(shù)量來決定。

注意:像?和?這樣的分數(shù)指的是占總投票權(quán)的分數(shù)驯鳖,而不是總驗證人闲询,除非所有驗證人擁有相同權(quán)重。而>? 的意思是”超過? “浅辙,≥?則是”?或者更多”的意思扭弧。

共識

Tendermint 是部分同步運作的拜占庭容錯共識協(xié)議,這種協(xié)議源自DLS共識算法 [20]记舆。Tendermint以簡易性鸽捻、高性能以及分叉問責制而著稱。協(xié)議要求這組驗證人固定且被熟知泽腮,并且每個驗證人都有其公鑰驗證身份御蒲。這些驗證人試圖同時在一個區(qū)塊上達成共識,這些區(qū)塊是一系列的交易記錄诊赊。每個區(qū)塊的共識輪流進行厚满,每一輪都會有個領(lǐng)頭人,或者提議人碧磅,由他們來發(fā)起區(qū)塊碘箍。之后驗證人分階段對是否接受該區(qū)塊遵馆,或者是否進入下一輪做出投票。每輪的提議人會從驗證人順序列表中按照其投票權(quán)比例來選擇確定丰榴。

更多協(xié)議的全部細節(jié)团搞,請點擊這里.

Tendermint 采用了使用大多數(shù)投票(超過三分之二)和鎖定機制的最優(yōu)拜占庭容錯,來確保其安全性多艇。這些能夠保證:

  • 蓄意破壞者想要造成安全性問題逻恐,必須有三分之一以上的投票權(quán),并且要提交超過兩份以上的值峻黍。
  • 如果有一組驗證人成功破壞了安全性复隆,或者曾試圖這么做,他們會被協(xié)議識別姆涩。協(xié)議包括對有沖突的區(qū)塊進行投票和廣播那些有問題的投票挽拂。

除了其超強的安全性外,Tendermint還具備杰出的性能骨饿。以商用型云平臺為例亏栈,Tendermint共識以分布在五大洲七個數(shù)據(jù)中心的64位節(jié)點為基準,其每秒可以處理成千上萬筆交易宏赘,訂單提交延遲時間為1-2秒绒北。而值得關(guān)注的是,即使是在極其惡劣的敵對環(huán)境中察署,比如驗證人崩潰了或者是廣播惡意破壞的投票闷游,也能維持這種每秒超過千筆交易的較高性能。詳見下圖贴汪。

Figure of Tendermint throughput performance

輕客戶端

Tendermint 共識算法的主要好處是具有安全簡易的客戶端脐往,使其成為手機和物聯(lián)網(wǎng)用例的理想選擇。比特幣輕客戶端必須同步運行區(qū)塊頭組成的鏈扳埂,并且找到工作量證明最多的那一條鏈业簿,而Tendermint輕客戸端只需和驗證組的變化保持一致,然后簡單地驗證最新區(qū)塊中預(yù)先提交的>?阳懂,來確定最新情況梅尤。

這種簡單的輕客戸端證明機制也可以實現(xiàn)區(qū)塊鏈之間的通信

防止攻擊

Tendermint 有各種各樣的防御措施來防止一些明顯的攻擊希太,比如遠程無利害關(guān)系雙花攻擊審查制度克饶。 這些在附錄中有更詳細的討論。

ABCI

Tendermint共識算法是在叫做 Tendermint Core 的程序中實現(xiàn)的誊辉。這個程序是獨立于應(yīng)用的“共識引擎”,可以將任何已經(jīng)確定的黑盒應(yīng)用轉(zhuǎn)變?yōu)榉植际酵瞿浴⒖蓮?fù)制的區(qū)塊鏈堕澄。Tendermint Core 可以通過應(yīng)用區(qū)塊鏈接口(ABCI) [17]與其他區(qū)塊鏈應(yīng)用連接邀跃。而且,應(yīng)用區(qū)塊鏈接口(ABCI) 接口允許區(qū)塊鏈應(yīng)用以任何語言編程實現(xiàn)蛙紫,而不僅僅是寫這個共識引擎所使用的語言拍屑。此外,應(yīng)用區(qū)塊鏈接口(ABCI) 也讓交換任何現(xiàn)有區(qū)塊鏈棧的共識層成為可能坑傅。

我們將其與知名加密貨幣比特幣進行了類比僵驰。在比特幣這種加密幣區(qū)塊鏈中,每個節(jié)點都維持著完整的審核過的 UTXO(未使用交易輸出)數(shù)據(jù)庫唁毒。如果您想要在應(yīng)用區(qū)塊鏈接口(ABCI)基礎(chǔ)上蒜茴,創(chuàng)建出類似比特幣的系統(tǒng),那么 Tendermint Core 可以做到:

  • 在節(jié)點間共享區(qū)塊及交易
  • 創(chuàng)建規(guī)范或不可改變的交易順序(區(qū)塊鏈)

同時浆西,ABCI應(yīng)用也可以做到:

  • 維護 UTXO 數(shù)據(jù)庫
  • 驗證交易的加密簽名
  • 防止出現(xiàn)不存在的余額被交易
  • 允許客戶訪問UTXO數(shù)據(jù)庫

Cosmos 概述

Cosmos是一個獨立平行的區(qū)塊鏈網(wǎng)絡(luò)粉私,其中每條區(qū)塊鏈通過 Tendermint1這樣的經(jīng)典拜占庭容錯共識算法來運行。

網(wǎng)絡(luò)中第一條區(qū)塊鏈將會是 Cosmos 樞紐近零。Cosmos 樞紐通過全新的區(qū)塊鏈間通信協(xié)議來連接其他眾多區(qū)塊鏈(或?qū)⑵浞Q之為 分區(qū))诺核。Cosmos 樞紐可以追蹤無數(shù)代幣的種類,并且在各個連接的分區(qū)里記錄各種代幣總數(shù)久信。代幣可以安全快速地從一個分區(qū)轉(zhuǎn)移到另一個分區(qū)窖杀,兩者之間無需體現(xiàn)匯兌流動性,因為所有分區(qū)之間的代幣傳輸都會經(jīng)過 Cosmos 樞紐裙士。

這一架構(gòu)解決了當今區(qū)塊鏈領(lǐng)域面臨的許多問題陈瘦,包括應(yīng)用程序互操作性、可擴展性潮售、以及可無縫升級的能力痊项。比如,從Bitcoind酥诽、Go-Ethereum鞍泉、CryptoNote、ZCash或其他區(qū)塊鏈系統(tǒng)中衍生出來的分區(qū)肮帐,都能被錨定接入 Cosmos 樞紐咖驮。這些分區(qū)允許 Cosmos 實現(xiàn)無限擴展训枢,從而滿足全球交易的需求恒界。此外,分區(qū)也完全適用于分布式交易所涩拙,反之交易所也支持分區(qū)運行际长。

Cosmos 不僅僅是單一的分布式賬本,而 Cosmos 樞紐也不是封閉式庭院或宇宙的中心。我們正在為分布式賬本的開放網(wǎng)絡(luò)設(shè)計一套協(xié)議怔接,這套協(xié)議將基于密碼學、穩(wěn)健經(jīng)濟學、共識理論脏榆、透明性及可追責制的原則,成為未來金融系統(tǒng)的全新基礎(chǔ)坞生。

Tendermint-拜占庭容錯

Cosmos 樞紐是 Cosmos 網(wǎng)絡(luò)中第一條公共區(qū)塊鏈,通過 Tendermint 的拜占庭共識算法運行。Tendermint 開源項目創(chuàng)立于2014年,旨在解決比特幣工作量證明共識算法的速度参袱、可擴展性以及造成的環(huán)境問題风纠。通過采用并提高已經(jīng)過驗證的拜占庭算法(1988年在麻省理工學院開發(fā))[20]镐捧,Tendermint 成為了首個在概念論證了權(quán)益證明加密貨幣的團隊誊抛,這種機制可以解決 NXT 和 BitShares 這些第一代權(quán)益證明加密幣面臨的”無利害關(guān)系”的問題瞎领。

如今宾毒,實際上所有比特幣移動錢包都要使用可靠的服務(wù)器來進行交易驗證乙各。這是因為工作量證明機制需要在交易被認定為無法逆轉(zhuǎn)前進行多次確認。而在 Coinbase 之類的服務(wù)中也已經(jīng)出現(xiàn)雙重支付攻擊。

和其他區(qū)塊鏈共識系統(tǒng)不同,Tendermint 提供的是即時、可證明安全的移動客戶端支付驗證方式丐重。因為 Tendermint 被設(shè)計為完全不分叉,所以移動錢包就可以實時接收交易確認,從而在智能手機上真正實現(xiàn)去信任的支付方式。這一點也大大影響了物聯(lián)網(wǎng)應(yīng)用程序。

Cosmos 中的驗證人角色類似比特幣礦工课蔬,但是他們采用加密簽名來進行投票虚循。驗證人是專門用來提交區(qū)塊的安全機器。非驗證人可以將權(quán)益代幣(也叫做”atom”幣)委托給任何驗證人來賺取一定的區(qū)塊費用以及atom獎勵,但是如果驗證人被黑客攻擊或者違反協(xié)議規(guī)定粮坞,那么代幣就會面臨被懲罰(削減)的風險奢入。Tendermint 拜占庭共識的可證明安全機制糊秆,以及利益相關(guān)方(驗證人和委托人)的抵押品保證,為節(jié)點甚至是輕客戶端提供了可證明界睁、可量化的安全性。

治理

分布式公共賬本應(yīng)該要有一套章程與治理體系。比特幣依靠比特幣基金會以及挖礦來協(xié)作更新,但是這是一個反應(yīng)緩慢的治理制度。以太坊在采用硬分叉成 ETH 和 ETC 來解決 The DAO 黑客,這主要是因為之前沒有設(shè)定社會契約或機制來進行這類決定。

Cosmos 樞紐的驗證人與委托人可以對提案進行投票,從而改變預(yù)先默認設(shè)置好的系統(tǒng)參數(shù)(比如區(qū)塊轉(zhuǎn)賬費用限制)梧油,協(xié)作更新,并對可讀性的章程進行修訂投票,從而治理 Cosmos 樞紐制度。這個章程允許權(quán)益相關(guān)者聚集到一起,來解決盜竊及漏洞等相關(guān)問題(比如The DAO事件),并得出更快更明確的解決方案。

每個分區(qū)也可以制定自己的一套章程及治理機制。比如,Cosmos 樞紐的章程可以設(shè)置為強制實現(xiàn)樞紐的不可改變性(不能回滾,除了 Cosmos 樞紐節(jié)點產(chǎn)生的漏洞),而每個分區(qū)則可設(shè)置自己的回滾政策。

Cosmos 網(wǎng)絡(luò)能夠在制度不同的分區(qū)間實現(xiàn)互操作性,這一點給客戶極高的自由度和潛力而無需許可即可實驗(新技術(shù))。

樞紐與分區(qū)

這里我們將描述一個全新的去中心化與可擴展性模型沉删。Cosmos 網(wǎng)絡(luò)通過 Tendermint 機制來運行眾多的區(qū)塊鏈隘擎。雖然現(xiàn)存提案的目標是創(chuàng)建一個包含全球所有交易訂單的”單一區(qū)塊鏈”,但是 Cosmos 允許眾多區(qū)塊鏈在并行運行的同時,保持可互操作性。

在這個基礎(chǔ)上顷扩,Cosmos樞紐負責管理稱之為“分區(qū)”的眾多獨立區(qū)塊鏈(有時也叫做”分片”,參考自眾所周知的數(shù)據(jù)庫擴展技術(shù)”分片”)。樞紐上的分片會源源不斷地提交最新區(qū)塊呵哨,這一點可以讓樞紐同步每一個分區(qū)的狀態(tài)。同樣地玉组,每個分區(qū)也會和樞紐的狀態(tài)保持一致(不過分區(qū)之間不會同彼此的同步耸峭,除非間接通過樞紐來實現(xiàn))户辱。通過發(fā)布默克爾證明來證明消息被接受和發(fā)送,來讓消息從一個分區(qū)傳遞到另一個分區(qū)。這種機制叫做”區(qū)塊鏈間通信”,或者簡稱為”IBC”機制。

Figure of hub and zones acknowledgement

任何分區(qū)都可以自行成為樞紐來建立非循環(huán)圖表荆姆,但為了清楚起見,我們只描述這種只有一個樞紐和許多非樞紐的分區(qū)這樣簡單的配置

樞紐

Cosmos樞紐是承載多種分布式賬本資產(chǎn)的區(qū)塊鏈,其中代幣可以由個人或分區(qū)自己持有。這些代幣能夠通過特殊的IBC數(shù)據(jù)包,即”代幣數(shù)據(jù)包”(coin packet)從一個分區(qū)轉(zhuǎn)移到另一個分區(qū)。樞紐負責保持各個分區(qū)中各類代幣總量不變。IBC代幣數(shù)據(jù)包交易必須由發(fā)送人、樞紐及區(qū)塊接受者執(zhí)行。

因為Cosmos樞紐在整個系統(tǒng)中扮演著中央代幣賬本的角色发乔,其安全性極其重要。雖然每個分區(qū)可能都是一個Tendermint區(qū)塊鏈——只需通過4個坤次,(或者在無需拜占庭容錯共識的情況下更少的驗證人來保證安全)滑绒,但是Cosmos樞紐必須通過全球去中心化驗證組來保證安全,而且這個驗證組要能夠承受最嚴重的攻擊管钳,比如區(qū)域網(wǎng)絡(luò)分裂或者由國家發(fā)起的攻擊醇滥。

分區(qū)

Cosmos分區(qū)是獨立的區(qū)塊鏈糟描,能夠和Cosmos樞紐進行IBC消息交換见间。從樞紐的角度上看,分區(qū)是一種多重資產(chǎn)拴泌、動態(tài)會員制的多重簽名賬戶,可以通過IBC數(shù)據(jù)包用來發(fā)送和接受代幣惊橱。就像加密幣賬戶一樣蚪腐,分區(qū)不能轉(zhuǎn)移超出其持有量的代幣税朴,不過可以從其他擁有代幣的人那里接收代幣回季。分區(qū)可能會被指定為一種或多種代幣的”來源”,從而賦予其增加代幣供應(yīng)量的權(quán)力正林。

Cosmos 樞紐的 Atom 或可作為分區(qū)驗證人連接到樞紐的籌碼泡一。雖然在Tendermint分叉責任制下,分區(qū)出現(xiàn)雙重支付攻擊會導(dǎo)致atom數(shù)量減少觅廓,但是如果分區(qū)中有超過?的選票都出現(xiàn)拜占庭問題的話鼻忠,那這個分區(qū)就可以提交無效狀態(tài)。Cosmos 樞紐不會驗證或執(zhí)行提交到其他分區(qū)的交易哪亿,因此將代幣發(fā)送到可靠的分區(qū)間就是用戶的責任了粥烁。未來 Cosmos 樞紐的管理系統(tǒng)可能會通過改善提案贤笆,來解決分區(qū)故障問題。比如讨阻,在檢測到襲擊時芥永,可以將有些分區(qū)(或全部分區(qū))發(fā)起的代幣轉(zhuǎn)賬將被暫停,實現(xiàn)緊急斷路(即暫時中止代幣轉(zhuǎn)賬)钝吮。

跨鏈通信-IBC

現(xiàn)在我們來介紹下樞紐與分區(qū)之間通信的方法埋涧。假如現(xiàn)在有三個區(qū)塊鏈,分別是”分區(qū)1″奇瘦、“分區(qū)2″以及”樞紐”棘催,我們想要”分區(qū)1″生成一個數(shù)據(jù)包,通過”樞紐”發(fā)送給”分區(qū)2″耳标。為了讓數(shù)據(jù)包從一個區(qū)塊鏈轉(zhuǎn)移到另一個區(qū)塊鏈醇坝,需要在接收方區(qū)塊鏈上發(fā)布一個證明,來明確發(fā)送方已經(jīng)發(fā)起了一個數(shù)據(jù)包到指定目的地次坡。接收方要驗證的這個證明呼猪,必須和發(fā)送方區(qū)塊頭保持一致。這種機制就類似與側(cè)鏈采用的機制砸琅,它需要兩個相互作用的鏈宋距,通過雙向傳送存在證明數(shù)據(jù)元(交易),來”知曉”另一方的情況症脂。

IBC協(xié)議可以自然定義為兩種交易的使用:一種是IBCBlockCommitTx 交易谚赎,這種交易可以讓區(qū)塊鏈向任何觀察員證明其最新區(qū)塊哈希值;另一種是IBCPacketTx 交易诱篷,這種交易則可以證明某個數(shù)據(jù)包確實由發(fā)送者的應(yīng)用程序壶唤,通過默克爾證明機制(Merkle-proof)傳送到了最新區(qū)塊的哈希值上。

通過將IBC機制分離成兩個單獨的交易棕所,即IBCBlockCommitTx 交易與 IBCPacketTx 交易笑撞,我們可以讓接收方鏈的本地費用市場機制瓤狐,來決定承認哪個數(shù)據(jù)包,與此同時還能確保發(fā)送方的完全自由,讓其自行決定能夠傳出的數(shù)據(jù)包數(shù)量。

Figure of Zone1, Zone2, and Hub IBC without acknowledgement

在上述案例中,為了更新”樞紐”上”分區(qū)1″的區(qū)塊哈希(或者說”分區(qū)2″上”樞紐”的區(qū)塊哈希),必須將IBCBlockCommitTx交易的”分區(qū)1″區(qū)塊哈希值發(fā)布到”樞紐”上(或者將該交易的”樞紐”區(qū)塊哈希值發(fā)布到”分區(qū)2″中)。

_關(guān)于兩種IBC交易類型杭煎,詳細請參見 IBCBlockCommitTxIBCPacketTx

用例

分布式交易所

比特幣借助大量復(fù)制來增加分布式賬本的安全性扑媚。用類似的方式旬痹,我們可以在區(qū)塊鏈上運行交易所,來降低其受內(nèi)部及外部攻擊的可能性两残。我們稱之為去中心化交易所。

現(xiàn)今沼死,加密貨幣社區(qū)認為的去中心化交易所基于”跨鏈原子事務(wù)”交易( AXC 交易)。通過AXC交易漫雕,兩條不同鏈上的兩個用戶可以發(fā)起兩筆轉(zhuǎn)賬交易,交易在兩個賬本上要么一起提交執(zhí)行狭瞎,或者兩個賬本都不執(zhí)行(即交易的原子性)细移。比如,兩位用戶可以通過AXC交易來實現(xiàn)比特幣和以太幣之間的交易(或是在不同賬本上的任意兩種代幣)熊锭,即使比特幣和以太坊的區(qū)塊鏈之間并沒有彼此連接弧轧。AXC 交易模式下的交易所用戶雙方不需要彼此信任,也不用依賴交易匹配服務(wù)碗殷。其弊端是精绎,交易雙方必須同時在線才能進行交易。

另一種去中心化交易所是進行大量復(fù)制的具有獨立區(qū)塊鏈的分布式交易所锌妻。該種交易所的用戶可以提交限價訂單并關(guān)閉他們的計算機代乃,交易可以在用戶離線狀態(tài)下執(zhí)行。區(qū)塊鏈將會代表交易者去完成匹配和交易仿粹。

一個中心化的交易所可以構(gòu)建一個有大交易量的限價交易的買賣盤賬目搁吓,以此來吸引更多的交易者。在交易所領(lǐng)域吭历,流動性會引發(fā)更多流動性擎浴,因此在交易所業(yè)務(wù)中,其具有的網(wǎng)絡(luò)效應(yīng)也愈發(fā)明顯(或者說至少產(chǎn)生了”贏家通吃”效應(yīng))毒涧。目前加密貨幣交易所 Poloniex 以每24小時2,000萬美元的交易量排名第一, Bitfinex 則每24小時500萬美元的交易額位列第二。在這種強大的網(wǎng)絡(luò)效應(yīng)之下契讲,基于AXC的去中心化交易所的成交量是不太可能超過中心化交易所仿吞。去中心化交易所要想和中心化交易所一爭高下,就需要支持以限價訂單構(gòu)成的具有深度的交易買賣盤賬目的運行捡偏。而只有基于區(qū)塊鏈的去中心化交易所可以實現(xiàn)這一點唤冈。

Tendermint提供的快速交易執(zhí)行是另一大優(yōu)勢。Cosmos的內(nèi)部網(wǎng)絡(luò)可以在不犧牲一致性的前提下優(yōu)先快速的確定最終性银伟,來實現(xiàn)交易的快速完成 —— 同時針對交易訂單交易你虹,以及IBC(跨區(qū)塊鏈通信)代幣與其他網(wǎng)絡(luò)的交易。

綜上彤避,根據(jù)現(xiàn)有加密貨幣交易所的情況傅物,Cosmos的一項重大應(yīng)用就是去中心化交易所(稱為 Cosmos DEX)。其交易吞吐能量和委托延時可以與那些中心化交易所媲美琉预。交易者可以在各方離線的狀態(tài)下提交限價訂單董饰。并且,基于Tendermint圆米,Cosmos樞紐以及IBC的情況下卒暂,交易者可以快速地完成在交易所及其他網(wǎng)絡(luò)的資金進出。

作為其他加密貨幣的紐帶

特權(quán)分區(qū)可以作為和其他加密貨幣掛鉤的代幣來源娄帖。這種掛鉤類似Cosmos樞紐與分區(qū)之間的關(guān)系也祠,兩者都必須及時更新彼此最新的區(qū)塊鏈,從而驗證代幣已經(jīng)從一方轉(zhuǎn)移到另一方近速。Cosmos網(wǎng)絡(luò)上掛鉤的”橋接分區(qū)“要和中心以及其他加密幣保持同步诈嘿。這種間接通過”橋接分區(qū)“可以保持樞紐邏輯的簡潔。并且不必要了解其他的鏈上共識戰(zhàn)略数焊,如比特幣工作量證明挖礦機制永淌。

向Cosmos樞紐發(fā)送代幣

每個掛鉤橋接分區(qū)的驗證人都會在基于Tendermint公式的區(qū)塊鏈之上,運行帶有特殊的ABCI橋接應(yīng)用程序佩耳,但同時也會運行一個原有區(qū)塊鏈的“全節(jié)點”遂蛀。

在原有區(qū)塊鏈挖出新區(qū)塊時,橋接分區(qū)驗證人員將通過簽署和分享起始點區(qū)塊鏈的提示干厚,各自局部視角可以達成一致李滴。當一個橋接分區(qū)收到原有區(qū)塊鏈的支付時(如在以太坊或比特幣等PoW機制的鏈上有足夠數(shù)目的確認),則在該橋接分區(qū)上創(chuàng)建具有該對應(yīng)賬戶的余額蛮瞄。

就以太坊而言所坯,橋接分區(qū)可以和Cosmos樞紐共享相同的驗證人。以太坊方面(原本區(qū)塊鏈)挂捅,一個橋接合約將允許以太擁有者通過將以太幣發(fā)送到以太坊的橋接分區(qū)的橋接合約上芹助。一旦掛橋接合約接收到以太幣,以太幣就不能被撤回,除非從橋接分區(qū)接收到對應(yīng)的IBC數(shù)據(jù)包状土。橋接合約跟隨橋接分區(qū)的驗證組无蜂,它可能與Cosmos樞紐的驗證人組相同。

就比特幣而言蒙谓,概念是相似斥季,除了代替一個橋接合約,每個UTXO將由一個門限多重簽名P2SH數(shù)據(jù)庫限制累驮。由于P2SH系統(tǒng)的限制酣倾,簽名者不能與Cosmos樞紐的驗證人組相同。

從Cosmos樞紐提出代幣

橋接分區(qū)上的以太幣(“橋接以太幣”)可以在樞紐間轉(zhuǎn)進谤专,轉(zhuǎn)出躁锡,完成傳送到特定以太坊提取地址后,轉(zhuǎn)出的“橋接以太幣”被徹底刪除毒租。一個IBC消息可以證明橋接分區(qū)上的交易稚铣,這個消息將被公布到以太坊橋接合約中,以便以太幣被取出墅垮。

就比特幣而言惕医,嚴謹?shù)慕灰啄_本系統(tǒng)讓IBC幣的鏡像轉(zhuǎn)換機制很難實現(xiàn)。每個UTXO都有自己的特定的腳本算色,所以當比特幣履約簽名者發(fā)生變化時抬伺,每個UTXO都必須遷移到新的UTXO。一個解決方案是根據(jù)需要灾梦,壓縮和解壓縮UTXO-set峡钓,以保持UTXO的總數(shù)量下降。

掛鉤區(qū)完全責任制

這類掛鉤合約存在風險的風險是若河,可能會出現(xiàn)惡意的驗證人組能岩。如果拜占庭投票權(quán)超過?,就會造成分叉萧福,即從以太坊橋接合約中提取以太幣的同時拉鹃,還能保持橋接分區(qū)中的掛鉤以太幣不變。甚至鲫忍,如果拜占庭投票權(quán)超過?膏燕,可能會有人直接通過脫離原始橋接分區(qū)的橋接邏輯,對發(fā)送以太幣發(fā)到橋接合約中的帳戶下手悟民,盜取以太幣坝辫。

如果將這個橋接方法完全設(shè)計成責任制,就有可能解決這一問題射亏。比如近忙,樞紐及起始點的全部IBC包裹可能需要先通過橋接分區(qū)的認可竭业,即讓樞紐或起始點中的橋接合約對橋接分區(qū)的所有狀態(tài)轉(zhuǎn)換進行有效驗證。樞紐及起始點要允許橋接分區(qū)的驗證人提供抵押物银锻,而僑界合約的代幣轉(zhuǎn)出需要延時(且抵押品解綁時間也要足夠長)永品,從而讓單獨的審計人有時間發(fā)起任何的質(zhì)詢。我們會把這一系統(tǒng)的設(shè)計說明以及執(zhí)行方式開放击纬,作為未來Cosmos改善的提議,以待Cosmos樞紐的管理系統(tǒng)審批通過钾麸。

以太坊的擴展

眾所周知更振,擴展問題是一直困擾著以太坊的問題。目前以太坊節(jié)點會處理節(jié)點上每筆交易饭尝,并且存儲所有的狀態(tài)參考.肯腕。

Tendermint提交區(qū)塊的速度比以太坊工作量證明要快,所以由Tendermint共識推動且使用橋接以太幣運行的以太坊虛擬機分區(qū)能夠強化太坊區(qū)塊鏈的性能钥平。此外实撒,雖然Cosmos樞紐及IBC包裹機制不能實現(xiàn)每秒合約邏輯的執(zhí)行,但是它可以用來協(xié)調(diào)不同分區(qū)中以太坊合約之間的代幣流通涉瘾,通過分片方式為以代幣為中心的以太坊擴展奠定基礎(chǔ)知态。

多用一體化

Cosmos分區(qū)可以運行任意的應(yīng)用邏輯,應(yīng)用在分區(qū)創(chuàng)建時設(shè)定好立叛,可通過管理者可以不斷更新负敏。這種靈活度使得Cosmos分區(qū)可以作為其他加密幣的掛鉤載體,比如以太坊或比特幣秘蛇,并且它還能和這些區(qū)塊鏈的衍生品掛鉤其做,利用同樣的代碼庫,而在驗證程序及初始分配有所區(qū)分赁还。這樣就允許多種現(xiàn)有加密幣框架得以運行妖泄,如以太坊、Zerocash艘策、比特幣蹈胡、CryptoNote等等,將其同Tendermint Core結(jié)合柬焕,成為通用網(wǎng)絡(luò)中性能更優(yōu)的共識引擎审残,為平臺之間提供更多的交互機會。此外斑举,作為多資產(chǎn)區(qū)塊鏈搅轿,每筆交易都有可能包含多個輸入輸出項,其中每個輸入項都可以是任意代幣富玷,使Cosmos直接成為去中心化交易所璧坟,當然這里假設(shè)交易訂單通過其他平臺進行匹配既穆。替代方案是,讓分區(qū)作為分布式容錯交易所(包含買賣盤賬目)雀鹃,這算是對中心化加密幣交易所之上的嚴格改進——現(xiàn)行交易所在過去時常發(fā)生被攻擊的事件幻工。

分區(qū)也可以作為區(qū)塊鏈版的企業(yè)及政府系統(tǒng),其原本由一個或多個組織運行的特定服務(wù),現(xiàn)在作為ABCI應(yīng)用在某個分區(qū)上運行棺亭,從而在不放棄對底層服務(wù)控制的前提下复颈,維持公共Cosmos網(wǎng)絡(luò)的安全性及交互性。所以踢代,Cosmos或可為那些既想使用區(qū)塊鏈技術(shù),又不愿徹底放棄控制權(quán)給分布式第三方的人嗅骄,提供絕佳的運行環(huán)境胳挎。

緩解網(wǎng)絡(luò)分區(qū)問題

有人認為像Tendermint這種支持一致性的共識算法有一個重大問題,就是網(wǎng)絡(luò)分區(qū)會導(dǎo)致沒有任何一個分區(qū)會擁有超過?的投票權(quán)(比如超過?投票權(quán)在線下)溺森,這會中斷共識慕爬。而Cosmos架構(gòu)可以緩解這個問題,它可以使用全球中心屏积,同時医窿,各分區(qū)實行地區(qū)自治,然后讓每個分區(qū)的投票權(quán)按照正常的地域位置進行分配肾请。如留搔,一般范例就有可能是針對個別城市或地區(qū)的,讓他們各自運行自己分區(qū)的同時铛铁,還能共享共同的樞紐(比如Cosmos樞紐)隔显,并且在臨時的網(wǎng)絡(luò)分區(qū)導(dǎo)致的中斷期間,也可以繼續(xù)維持地區(qū)自治活動饵逐。注意括眠,這樣一來在設(shè)計穩(wěn)健的聯(lián)邦式容錯系統(tǒng)過程中,就可以去考慮真實的地理倍权、政治及網(wǎng)絡(luò)拓撲的特征了掷豺。

聯(lián)邦式名稱解析系統(tǒng)

NameCoin是首批試圖通過比特幣技術(shù)解決名稱解析問題的區(qū)塊鏈之一。不過薄声,這個方案存在一些不足当船。

例如,我們可以通過Namecoin來驗證@satoshi(聰)這個號是在過去某個時間點用特定公鑰進行注冊的默辨。但是德频,該公鑰是否更新過我們就不得而知了,除非將該名稱最后一次更新之前的所有全部下載缩幸。這一點是比特幣UTXO交易模式中默克爾化模型的局限性導(dǎo)致的壹置,這類模型中只有交易(而非可變的應(yīng)用狀態(tài))會以默克爾化加入到區(qū)塊哈希中竞思。它讓我們得在之后用更新證明名稱的存在,而非不存在钞护。因此盖喷,我們必須依靠全節(jié)點才能明確這個名稱的最近的值,或者花費大量資源下載整個區(qū)塊鏈难咕。

即使在NameCoin上運用默克爾化的搜索樹课梳,其工作量證明的獨立性還是會導(dǎo)致輕客戸端的驗證出現(xiàn)問題。輕客戸端必須下載區(qū)塊鏈中所有區(qū)塊頭的完整備份(或者至少是自其最后的名稱更新的所有區(qū)塊頭)余佃。這意味著帶寬需要隨著時間做線性的擴展惦界。 21此外,在工作量證明制度使區(qū)塊鏈上的名稱更改需要等額外的工作量證明驗證確認才能進行咙冗,它在比特幣上可能要花費一個小時。

有了Tendermint漂彤,我們只需用到由法定數(shù)量驗證人簽署(通過投票權(quán))的區(qū)塊哈希雾消,以及與名稱相關(guān)的當前值的默克爾證明。這點讓簡易挫望、快速立润、安全的輕客戸端名稱值驗證成為可能。

在Cosmos中媳板,我們可以利用這個概念并延伸桑腮。每一個在Cosmos上的名稱注冊都能有一個相關(guān)的最高級別域名(TLD),比如”.com”或者”.org”等蛉幸,而且每個名稱注冊分區(qū)都有自己的管理和登記規(guī)則破讨。

發(fā)行與激勵

Atom 代幣

Cosmos 樞紐是多資產(chǎn)分布式賬本,它有自己的代幣奕纫,是 Atom 提陶。Atom 是 Cosmos 樞紐唯一的權(quán)益代幣。Atom是持有人投票匹层、驗證或委托給其他驗證人的許可證明隙笆,就像以太坊上的以太幣一樣,Atom也可以用來支付交易費以減少電子垃圾升筏。額外的通脹 Atom 和區(qū)塊交易費用就作為激勵分給驗證人及委托驗證人撑柔。

BurnAtomTx交易可以用來恢復(fù)儲蓄池中任意比例的代幣。

眾籌

創(chuàng)世塊上的 Atom 代幣及驗證人的初次分發(fā)是 Cosmos 眾售參與者持有75%您访,預(yù)售參與者持有5%铅忿,Cosmos網(wǎng)絡(luò)基金會持有10%,ALL IN BITS, 集團持有10%洋只。從創(chuàng)世塊開始辆沦,Atom 總量的1/3將作為獎勵發(fā)放給每年擔保持有的驗證人以及委托人昼捍。

更多細節(jié)見 Cosmos Plan

驗證人的數(shù)量限制

與比特幣或其他工作量證明區(qū)塊鏈不同的是, 由于通信的復(fù)雜性增加, Tendermint 區(qū)塊鏈會隨著驗證人的增加而變慢。幸運的是, 我們可以支持足夠多的驗證人來實現(xiàn)可靠的全球化分布式區(qū)塊鏈肢扯, 并具有非扯什纾快的交易確認時間。 而且隨著帶寬蔚晨、存儲和并行計算容量的增加, 我們將來能夠支持更多的驗證人乍钻。

在創(chuàng)世日, 驗證人的最大數(shù)量將設(shè)置為 100, 這個數(shù)字將以13% 的速度增長10年, 最終達到300位。

Year 0: 100Year 1: 113Year 2: 127Year 3: 144Year 4: 163Year 5: 184Year 6: 208Year 7: 235Year 8: 265Year 9: 300Year 10: 300...

成為創(chuàng)世日后的驗證人

Atom 持有者可以通過簽署和提交 BondTx 交易成為驗證人铭腕。抵押的 atom 數(shù)量不能為零银择。任何人任何時候都成為驗證人, 除非當前驗證人組的數(shù)量超過了最大值。在這種情況下, 只有當持有 atom 的數(shù)量大于現(xiàn)有驗證人中持有有效 atom 數(shù)量的最少者, 該交易才有效, 其中有效 atom 包括受委托的 atom累舷。當一個新的驗證人以這種方式替換現(xiàn)有的驗證人時, 現(xiàn)有的驗證人將離線浩考, 其所有的 atom 和受委托的 atom 進入解綁狀態(tài)。

對驗證人的懲罰

對于任何有意或無意的偏離認可協(xié)議的驗證人, 必須對其施加一定的懲罰被盈。有些證據(jù)立即可予受理, 比如在同樣高度和回合的雙重簽名, 或違反 “預(yù)投票鎖定” (Tendermint 協(xié)商一致議定書的規(guī)則)析孽。這樣的證據(jù)將導(dǎo)致驗證人失去其良好的聲譽, 其綁定的 atom 以及在儲備池中的比例份額 – 統(tǒng)稱為 “權(quán)益” – 將被大幅削減。

有時, 由于區(qū)域網(wǎng)絡(luò)中斷只怎、電源故障或其他原因, 驗證人將不可用袜瞬。如果在過去任意時間點的 ValidatorTimeoutWindow 塊中, 驗證人的提交投票不包括在區(qū)塊鏈中超過ValidatorTimeoutMaxAbsent 次, 該驗證人將離線, 并減少 ValidatorTimeoutPenalty (默認 1%) 的權(quán)益。

一些 “惡意” 行為在區(qū)塊鏈上并沒有產(chǎn)生明顯的證據(jù)身堡。在這些情況下, 如果存在多數(shù)的協(xié)商一致, 則驗證人可以在帶外協(xié)調(diào),強制將這些惡意驗證人超時邓尤。

如果 Cosmos 樞紐 因為超過?的投票權(quán)離線而出現(xiàn)了中止情況,或者說超過?的投票權(quán)審查到進入?yún)^(qū)塊鏈的惡意行為贴谎,這時候樞紐就必須借助硬分叉重組協(xié)議來恢復(fù)汞扎。(詳見“分叉與審查攻擊”)

交易費用

Cosmos 樞紐驗證人可以接受任何種類的代幣或組合作為處理交易的費用。每個驗證人可自行設(shè)置兌換率赴精, 并選擇其想要的交易, 只要不超過 BlockGasLimit, 每隔 ValidatorPayoutPeriod (默認為1小時) 時間會根據(jù)權(quán)益相關(guān)人綁定的 Atom 比例進行分配佩捞。

在所收取的交易費用中, ReserveTax (默認 2%) 將存入儲備池來增加儲備量, 增加 Cosmos 樞紐的安全性和價值。這些資金也可以按照治理系統(tǒng)的決策進行分配蕾哟。

將投票權(quán)委托給其他驗證人的 Atom 持有人會支付一定傭金給委托方一忱,而這筆費用可以由每個驗證人進行設(shè)置。

激勵黑客

Cosmos 樞紐的安全取決于底層驗證人的安全性和委托人的委托選擇谭确。為了鼓勵發(fā)現(xiàn)和早期報告發(fā)現(xiàn)的漏洞, Cosmos 樞紐鼓勵黑客通過 ReportHackTx 交易發(fā)布成功的漏洞, 說, “這個驗證人被入侵了帘营,請把賞金發(fā)送到這個地址”。這種情況下, 驗證人和委托人將掛起閑置, 每個人 HackPunishmentRatio (默認 5%) 的 atom 將被削減, HackRewardRatio (默認 5%) 的 atom 將發(fā)送到黑客的賞金地址作為獎勵逐哈。驗證人必須使用其備份密鑰來恢復(fù)剩余的 atom芬迄。

為了防止這一特性被濫用于轉(zhuǎn)移未授權(quán)的 atom, 在 ReportHackTx 前后,Atom的比例(授權(quán)的與未授權(quán)的) 將保持不變, 而黑客的賞金將包括一些未授權(quán)的 atom (如果有的話)昂秃。

治理規(guī)范

Cosmos 樞紐是由一個分布式組織管理的, 需要一個明確的治理機制, 以協(xié)調(diào)對區(qū)塊鏈的各種變化, 如系統(tǒng)的參數(shù)變量, 以及軟件升級和憲法修訂.

所有驗證人負責對所有提案進行表決禀梳。如果未能及時對提案進行表決, 將導(dǎo)致驗證人被自動停用一段時間杜窄。 這段時間被稱為 AbsenteeismPenaltyPeriod (默認1周)。

委托人自動繼承其委托的驗證人的投票權(quán)算途。這一投票可以被手動覆蓋掉塞耕。而未綁定的 Atom 是沒有投票權(quán)的。

每個提案都需要 MinimumProposalDeposit 代幣的保證金, 這可能是一個或多個代幣 (包括atom) 的組合嘴瓤。對于每項提案, 投票者可以投票表決取走保證金扫外。如果超過半數(shù)的投票者選擇取走保證金 (例如, 因為提案是垃圾信息), 那么保證金就會存入儲備池, 除了被燃燒的 atoms。

對于每項提案, 投票人可以選擇下列方案:

  • 同意
  • 強烈同意
  • 反對
  • 強烈反對
  • 棄權(quán)

決定采納(或不采納)提案需要嚴格的多數(shù)投“同意”或“強烈同意”(或者“反對”及“強烈反對”)筛谚,但是超過1/3的人投“強烈反對”或“強烈支持”的話就可以否決大多數(shù)人的決定。如果大多數(shù)人票被否決停忿,那么他們每個人都會失去 VetoPenaltyFeeBlocks (默認是一天的區(qū)塊值 驾讲,稅費除外) 作為懲罰,而否決大多數(shù)決定的那一方還將額外失去 VetoPenaltyAtoms 默認為0.1%)的 Atom 作為懲罰席赂。

參數(shù)變更提案

這里定義的任何參數(shù)都可在 ParameterChangeProposal 通過后改變蝎毡。

賞金提案

通過 BountyProposal 后, Atom 可以增發(fā)和預(yù)留儲備池資金作為賞金氧枣。

文本提案

所有其他提案,比如用來更新協(xié)議的提案别垮,都會通過通用的 TextProposal 來協(xié)調(diào)便监。

路線圖

詳見計劃.

相關(guān)工作

過去幾年涌現(xiàn)了很多區(qū)塊鏈共識及擴展性方面的創(chuàng)新。在這一部分中將挑選一些重要的創(chuàng)新進行簡單分析碳想。

共識系統(tǒng)

經(jīng)典拜占庭容錯

二十世紀八十年代早期就開始研究存在惡意參與者的共識機制烧董,當時Leslie Lamport創(chuàng)造了”拜占庭容錯”這個詞,用來指那些圖謀不軌參與者做出的惡意的行為胧奔,與”死機故障”不同逊移,后者只是處理過程崩潰而已。早期針對同步網(wǎng)絡(luò)也探索出了一些解決方案龙填,網(wǎng)絡(luò)信息滯后有一個上限胳泉,但實際使用是在高度受控的環(huán)境下進行,比如精密飛行儀器以及使用原子鐘同步的數(shù)據(jù)中心岩遗。直到九十年代后期扇商,實用拜占庭容錯( Practical Byzantine Fault Tolerance ,PBFT)[11]才作為有效的、部分同步的共識算法被逐步推廣宿礁。它可以容忍?參與者有惡意行為案铺。PBFT成為標準算法,催生了各種版本梆靖,包括最近由IBM提出并使用于Hyperledger超級賬本中的算法控汉。

和PBFT相比笔诵,Tendermint共識的主要好處在于其改善且簡化了的底層結(jié)構(gòu),其中有些是遵循了區(qū)塊鏈典范的結(jié)果姑子。Tendermint中乎婿,區(qū)塊必須按順序提交,這就消除復(fù)雜性壁酬,節(jié)省PBFT中狀態(tài)變化相關(guān)的通信開支次酌。在Cosmos和眾多加密幣中,如果區(qū)塊N本身沒有提交舆乔,那么就不能讓它之后的區(qū)塊N+i(i>=1)提交岳服。如果是通信帶寬限制導(dǎo)致了區(qū)塊N未提交到Cosmos Zone上,那么將通信帶寬用于分享選票給區(qū)塊N+i是一種浪費希俩。如果由于網(wǎng)絡(luò)分區(qū)或者節(jié)點掉線導(dǎo)致的區(qū)塊N未提交吊宋,那么N+i就無論如何也不能提交。

此外颜武,將交易打包成塊可以用默克爾哈希紀錄應(yīng)用程序的狀態(tài)璃搜,而不是用PBFT檢查機制進行定時摘要。這可以讓輕客戸端更快的提交交易證明鳞上,以及更快的跨鏈通信这吻。

Tendermint Core中也優(yōu)化了很多PBFT特性以外的功能。比如篙议,驗證人提交的區(qū)塊被分割多個部分唾糯,對其默克爾化后,然后在節(jié)點間廣播鬼贱。這種方式可以提高其廣播性能(具體請查看LibSwift 19)移怯。而且,Tendermint Core不會對點對點連接做任何假設(shè)这难,只要點對點間的網(wǎng)絡(luò)不斷開舟误,那么它就能正常運行。

BitShare委托權(quán)益

BitShares [12]不是第一個采用權(quán)益證明機制(proof-of-stake,PoS)的區(qū)塊鏈姻乓,但是其對PoS在區(qū)塊鏈上的研究與推進做出了巨大的貢獻嵌溢,尤其是在DPoS,即受委托權(quán)益證明方面蹋岩。在BitShares中堵腹,相關(guān)方選擇”見證者”負責提交交易順序并提交;相關(guān)方選擇”委托人”負責協(xié)調(diào)軟件更新與參數(shù)變化星澳。盡管BitShare在理想環(huán)境下能達到很高的性能:100k tx/s疚顷,1秒的滯后。每一塊只有一個單獨的簽名,得到交易的最終性的時間比區(qū)塊時間略長腿堤。一個標準的協(xié)議仍在開發(fā)中阀坏。利益相關(guān)者可以每天去除或者替換有惡意行為的驗證人,但是不同于Tendermint PoS的保證金機制笆檀,BitShares沒有要求驗證人或者代理人的提交押金忌堂,如果發(fā)生雙花攻擊的話,押金不會被削減酗洒。

Stellar

Stellar [13]是以Ripple推行的解決方案為基礎(chǔ)士修,它優(yōu)化了聯(lián)邦拜占庭協(xié)議模型,其中參與共識過程的并不構(gòu)成一個固定的全局過程樱衷。 相反棋嘲,每個進程節(jié)點組織一個或多個“仲裁片”,每個“仲裁片”構(gòu)成一組可信進程矩桂。 Stellar中的“法定人數(shù)”被定義為一組包含至少個個節(jié)點的一個仲裁片沸移。從而可達成一致。

恒星機制的安全性依賴于任何兩個仲裁的交集都是非空的假設(shè)侄榴,同時雹锣,節(jié)點的可用性要求至少一個“仲裁片”完全由誠實節(jié)點組成。這就需要在“法定人數(shù)”的大小上作出妥協(xié):人數(shù)過少難以獲得共識癞蚕,人數(shù)過多則難以信任所有人蕊爵。可能難以平衡而不對信任做出重大假設(shè)桦山。 除此之外在辆,節(jié)點必須維護一定數(shù)量的仲裁片以獲得足夠的容錯能力(或者任何“完整節(jié)點”,大部分結(jié)果的依賴)度苔,并且提供一種層級化的配置策略,類似于邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol,BGP)浑度。BGP被互聯(lián)網(wǎng)服務(wù)供應(yīng)商(Internet Service Provider寇窑,ISP)用來建立全球路由表,也被瀏覽器用來管理傳輸層安全協(xié)議(Transport Layer Security箩张,TLS)證書甩骏。他們都因為不安全而臭名昭著。

對于Stellar論文中基于Tendermint的PoS批評可以通過本文描述的代幣策略來緩解先慷。本文提出了名為 atom 的新的代幣饮笛,它代表未來交易過程中產(chǎn)生的費用和獎勵。 基于Tendermint PoS的優(yōu)勢在于其原理相對簡單论熙,同時仍可充分保證和證明安全性福青。

BitcoinNG

BitcoinNG是對比特幣的改進,允許垂直擴展,比如增加塊的大小而避免帶來負面的經(jīng)濟后果无午,例如對礦工造成的影響嚴重不成比例媒役。 這種改進是通過將leader選舉與交易廣播分開來實現(xiàn)的:leader首先通過“微塊micro-blocks”的PoW選舉,然后leader能夠廣播交易直至下一個新的“微塊”宪迟。 這減少了贏得PoW比賽所需的帶寬要求酣衷,使礦主競爭更公平,并通過允許最后一名礦工提交微塊以加快交易提交頻率次泽。

Casper

Casper [16]是以太坊提出的PoS共識算法穿仪。 它的主要操作模式是“預(yù)測押注”的一致观堂。 通過讓驗證者基于他們目前看到的其他投注來迭代地下注他們認為哪個塊將提交入?yún)^(qū)塊鏈缰泡。最終性可以立即實現(xiàn)早像。

鏈接. 這是Casper團隊研究的一個熱點領(lǐng)域檩互。 挑戰(zhàn)在于構(gòu)建一個可以證明是一個演化穩(wěn)定策略的投注機制竞滓。 與Tendermint相比搅吁,Casper的主要優(yōu)勢可能在于提供“可用性超越一致性”?—?達成共識不需要超過50%的投票權(quán)?—?可能是以提交速度或?qū)崿F(xiàn)復(fù)雜性為代價的蝗拿。

水平擴展

Interledger協(xié)議

Interledger協(xié)議(The Interledger Protocol额港,ILP)[14]不是一種嚴格的擴展方案御铃。 它通過一個松散耦合的雙邊關(guān)系網(wǎng)絡(luò)碴里,提供一種指定的跨不同賬本系統(tǒng)交互操作。像閃電網(wǎng)絡(luò)一樣上真,ILP的目的是實現(xiàn)支付咬腋,但是它特別關(guān)注跨賬本類型的支付,并擴展原子事務(wù)的處理機制睡互,使得事務(wù)的處理不僅支持哈希鎖根竿,而且還包括法定人數(shù)的公證人(稱為原子運輸協(xié)議)。 后者在賬本間交易中實施原子性的機制與Tendermint的輕客戶SPV機制類似就珠,因此比較ILP和Cosmos / IBC之間的區(qū)別是有必要的寇壳,具體見下文。

1.ILP不支持連接器公證員的變更妻怎,也不允許公證員之間有靈活的權(quán)重壳炎。 另一方面,IBC是專門為區(qū)塊鏈設(shè)計的逼侦,驗證人可以擁有不同的權(quán)重匿辩,并且隨著區(qū)塊鏈的發(fā)展,成員可以隨時更改榛丢。

2.與閃電網(wǎng)絡(luò)一樣铲球,ILP中的接收人必須在線才能向發(fā)起人發(fā)送確認。 在IBC代幣傳輸中晰赞,接收者所在區(qū)塊鏈的驗證人集合負責提供確認稼病,而不是接收用戶本人选侨。

3.最大的不同在于ILP連接器不需要負責對支付狀態(tài)保持權(quán)威性,然而在Cosmos中溯饵,hub的驗證人負責IBC代幣傳輸狀態(tài)和每個zone內(nèi)持有代幣數(shù)量的權(quán)威性侵俗。允許從zone之間的安全地不對稱地交換代幣是本質(zhì)的創(chuàng)新。在cosmos中的ILP連接器可以看作是一個持久和最安全的區(qū)塊鏈分類賬:cosmos hub丰刊。

4.ILP內(nèi)的跨賬本支付需要一個交易所的指令集的支持隘谣。因為不存在從一個分類賬到另一個分類賬不對稱的代幣轉(zhuǎn)移,只能做到市場等價物的轉(zhuǎn)移啄巧。

側(cè)鏈

Sidechains [15]是一種通過使用與比特幣區(qū)塊鏈“雙向掛鉤”替代區(qū)塊鏈來擴展比特幣網(wǎng)絡(luò)性能的機制寻歧。(雙向掛鉤相當于橋接,在cosmos中被稱為“橋接”與市場掛鉤區(qū)分)秩仆。側(cè)鏈使得比特幣可以方便的在比特幣區(qū)塊鏈和側(cè)鏈間移動码泛,并允許在側(cè)鏈上實驗新功能。在Cosmos Hub中澄耍,側(cè)鏈和比特幣是彼此的輕客戶端噪珊,在比特幣區(qū)塊鏈和側(cè)鏈間移動時使用SPV證明。當然齐莲,由于比特幣使用PoW痢站,以比特幣為中心的側(cè)鏈遭受許多由于PoW作為共識機制的引起的問題和風險。而且选酗,這是一個比特幣利益最大化的解決方案阵难,并不像Cosmos那樣本地支持各種代幣和zone間網(wǎng)絡(luò)拓撲結(jié)構(gòu)。但是芒填,雙向掛鉤的核心機制原則上與Cosmos所采用的機制相同呜叫。

以太坊擴展性的努力

以太坊目前正在研究許多不同的戰(zhàn)略,將以太坊區(qū)塊鏈的狀態(tài)分區(qū)化殿衰,以解決可擴展性的需求朱庆。 這些努力的目標是在共享狀態(tài)空間之上,維持當前以太坊虛擬機提供抽象層闷祥。 目前娱颊,多項研究工作正在進行。[18] [22]

Cosmos vs Ethereum 2.0 Mauve

Cosmos 和 Ethereum 2.0 Mauve [[22]][22 有不同的設(shè)計理念蜀踏。

  • Cosmos是針對代幣兒 Mauve 是關(guān)于擴大計算能力。
  • Cosmos不僅限于 EVM, 所以即使不同的VM也可以交互掰吕。
  • Cosmos 讓zone的創(chuàng)建者決定驗證人果覆。
  • 任何人都可以在Cosmos中建立新的zone(除非管理者另做決定)。
  • hub與zone的失效隔離殖熟,所以全局的代幣不變量可以保持局待。

普遍擴展

閃電網(wǎng)絡(luò)

閃電網(wǎng)絡(luò)被設(shè)計成一種代幣傳輸網(wǎng)絡(luò),在比特幣區(qū)塊鏈(及其他公有區(qū)塊鏈)上一層運行,通過把大部分交易從共識分類賬之外轉(zhuǎn)移到所謂的“ 付款渠道“钳榨。 這通過鏈上加密貨幣腳本來實現(xiàn)舰罚,這些腳本使雙方能夠進入雙方持有的狀態(tài)化合同,通過共享數(shù)字簽名來更新狀態(tài)薛耻,并且在合同結(jié)束后最終通過在區(qū)塊鏈上發(fā)布證據(jù)营罢,這種機制首先受到跨鏈原子互換交易的歡迎。 通過與多方開通支付渠道饼齿,閃電網(wǎng)絡(luò)的參與者可以成為集中點饲漾,為其他人的支付提供路由,從而導(dǎo)致支付渠道網(wǎng)絡(luò)的完全聯(lián)通缕溉,其代價是綁定在支付渠道上的資金考传。

雖然閃電網(wǎng)絡(luò)也可以輕松地跨越多個獨立的區(qū)塊鏈,并借助交易市場實現(xiàn)價值轉(zhuǎn)移证鸥,但它不能實現(xiàn)從一個區(qū)塊鏈到另一個區(qū)塊鏈的非對稱代幣交易僚楞。 這里描述的Cosmos網(wǎng)絡(luò)的主要優(yōu)點是實現(xiàn)直接的代幣交換。 也就是說枉层,我們希望支付渠道和閃電網(wǎng)絡(luò)將會與我們的代幣傳輸機制一起被廣泛采用泉褐,從而節(jié)省成本和保護隱私。

隔離驗證人

隔離見證是一個比特幣改進建議BIP返干,鏈接 旨在將每塊交易吞吐量提高2倍或3倍兴枯,同時使新節(jié)點能更快同步區(qū)塊。 這個解決方案的亮點在于它如何在比特幣當前協(xié)議的局限下矩欠,允許軟分叉升級(例如财剖,具有舊版本軟件的客戶端將在升級后仍可繼續(xù)運行)。 Tendermint作為一個新的協(xié)議沒有設(shè)計的限制癌淮,所以它具有不同的擴展優(yōu)先級躺坟。 TendermintBFT的循環(huán)算法,主要基于加密簽名而不是采礦乳蓄,這種算法允許通過多個并行區(qū)塊鏈進行水平擴展咪橙,而更常規(guī)、更頻繁的區(qū)塊提交也允許垂直擴展虚倒。

附錄

分叉問責制

經(jīng)過精心設(shè)計的共識協(xié)議應(yīng)該能夠在超出容錯能力或者共識出錯的情況下為系統(tǒng)提供一定的保障美侦。這在能夠通過拜占庭行為獲取實質(zhì)經(jīng)濟回報的金融系統(tǒng)中顯得尤為必要。分叉問責制就屬于這種非常重要的保障機制魂奥,這種制度會使一個導(dǎo)致共識出錯的進程(例如使協(xié)議客戶端開始接受不同值——即分叉)被識別出來菠剩,并且根據(jù)協(xié)議規(guī)則對其進行懲罰,甚至將其移送至司法系統(tǒng)處置耻煤。但當司法系統(tǒng)不可靠或者訴訟費極其昂貴時具壮,為了讓驗證人們都參與到這個機制當中准颓,該制度會強制要求他們建立安全保證金,一旦檢測到惡意行為棺妓,那么這些保證金將會被罰沒或者削減[10].

注意這與比特幣有所不同攘已,由于網(wǎng)絡(luò)非同步與局部哈希碰撞的概率特性,比特幣的分叉是定期出現(xiàn)的怜跑。因為在很多情況下样勃,惡意分叉與非同步引起的分叉是無法分辨的,除非讓礦工為挖到的孤立區(qū)塊支付隱性的機會成本妆艘,否則比特幣就很難準確地執(zhí)行分叉問責制彤灶。

Tendermint共識

我們把投票階段分為 預(yù)投票預(yù)提交 兩個階段。一個投票可以是用于特定區(qū)塊批旺,也可以用于 Nil幌陕。我們把同一輪超過?的單個區(qū)塊的預(yù)投票總和稱為 Polka ,把同一輪超過?的單個區(qū)塊的預(yù)提交總和稱為 Commit汽煮。如果在同一輪中對Nil的預(yù)提交超過?搏熄,他們就進入到下一輪中。

注意到協(xié)議中的嚴格的確定性會引發(fā)一個弱同步假設(shè)暇赤,因為錯誤的發(fā)起者必須被檢測到并將其略過心例。驗證人們在為Nil預(yù)投票之前會等待一段時間,稱之為超時提議鞋囊,這個超時提議的hi等待時間也會隨著每一輪的進行而遞增止后。每一輪的進行都是完全不同步的,在這個過程中溜腐,只有當驗證人收聽到超過?的網(wǎng)絡(luò)投票才能進入到下一輪中译株。實際上,它需要極其強大的阻礙才能阻撓這個弱同步假設(shè)(導(dǎo)致無達成共識挺益,無法提交區(qū)塊)歉糜,而且通過每個驗證人超時提議(TimeoutPropose)的隨機值還可更加提高這么做的難度。

另一個附加的約束條件望众,或者叫鎖定條例匪补,它能確保網(wǎng)絡(luò)最終在每個高度只提交一個區(qū)塊。任何試圖在給定高度提交超過一個區(qū)塊的惡意行為都會被識別出來烂翰。首先夯缺,一個區(qū)塊的預(yù)提交必須被認為是正當?shù)模⑶乙訮olka的形式提交甘耿。如果驗證人已經(jīng)準備在R_1輪中預(yù)提交一個區(qū)塊踊兜,我們稱他們鎖定了這個區(qū)塊,并且然后用于驗證R_2輪新預(yù)提交動作的Polka必須進入R_polka輪棵里,其中 R_1 < R_polka <= R_2润文。其次,驗證人們必須為他們鎖定的區(qū)塊提議并且(或者)預(yù)投票殿怜。這兩個條件共同作用典蝌,確保了驗證人在對其正當性沒有充分論證的情況下不能進行預(yù)提交操作,并且保證已經(jīng)完成預(yù)提交的驗證人不能再為其他東西的預(yù)提交貢獻證明投票头谜。這樣不但可以保證共識算法的安全性骏掀,還能保證它的活躍度。

關(guān)于這一協(xié)議的全部細節(jié)參考這里.

Tendermint輕客戶端

因為生成側(cè)鏈(一個分叉)意味著至少?的擔保權(quán)益被罰沒柱告,Tendermint權(quán)益證明(Tendermint-PoS)取消了同步所有區(qū)塊頭的要求截驮。當然,罰沒保證金也是需要有人共享分叉證據(jù)的际度,所以輕客戸端就要存儲任何它見證的區(qū)塊哈希提交葵袭。另外,輕客戸端可以定期地與驗證人組的改變保持同步乖菱,以避免出現(xiàn)遠程攻擊(但是其他解決方案也具有可能性)坡锡。

與以太坊類似,Tendermint能夠讓應(yīng)用程序在每個區(qū)塊中嵌入一個全局默克爾根的哈希值窒所,可以簡單方便的驗證的狀態(tài)查詢鹉勒,比如查詢賬戶余額、在智能合約中的值吵取,或者未使用交易輸出(UTXO)的存在禽额,具體由應(yīng)用程序的特性決定。

遠程攻擊的防御

假設(shè)有一個足夠有彈性的廣播網(wǎng)絡(luò)采集與一組靜態(tài)驗證人組存在皮官,那么任何區(qū)塊鏈分叉都可以被檢測到脯倒,而且發(fā)起攻擊的驗證人提交的保證金會被罰沒。這個由Vitalik Buterin在2014年首次提出的新方法臣疑,解決了其他權(quán)益證明加密貨幣的”沒有任何相關(guān)權(quán)益”問題(詳見 相關(guān)工作部分)盔憨。但由于驗證人組必須是能夠變化的,在較長的時間段內(nèi)最初的一些驗證人會解除j押金綁定讯沈,這就使他們可以自由地從創(chuàng)世區(qū)塊中創(chuàng)建新鏈郁岩,并且因為他們不再有被鎖定的保證金,他們將不需要為這個行為支付任何費用缺狠。這類攻擊被稱為遠程攻擊(LRA)问慎,與短程攻擊相比,后者對處在押金綁定中的驗證人發(fā)起的分叉是可以對其進行懲罰的(假設(shè)有類似Tendermint共識這樣的分叉問責制拜占庭容錯算法)挤茄。所以遠程攻擊經(jīng)常被認為是對權(quán)益證明機制的一種危險打擊如叼。

幸運的是,遠程攻擊(LRA)可以用以下的途徑來緩解穷劈。第一笼恰,對于解除綁定的驗證人而言(取回抵押保證金并且不再從參與共識中獲取費用)踊沸,保證金在一定時間內(nèi)不能轉(zhuǎn)移,也可以稱其為”解綁周期”社证,這個周期可能長達數(shù)周或數(shù)月。第二匀钧,對于輕客戶端的安全性而言,其首次連接到網(wǎng)絡(luò)時必須根據(jù)可信源驗證最新的一個區(qū)塊哈狭翰祝或者多個最好的區(qū)塊哈希。這種情況有時被稱為”弱主觀性”僵娃。最后济竹,為了保證安全碍岔,必須與最新的驗證人組進行頻繁的同步鸵赫,時長與解綁周期一致。這樣就確保了輕客戸端在因驗證人解綁資金而失去任何權(quán)益之前染坯,知道驗證人組的變化情況,否則解綁的驗證人就會在其綁定的高度后面開始創(chuàng)建新區(qū)塊來實施遠程攻擊儒喊,以此來欺騙客戶端(假設(shè)它可以控制足夠多的早期私鑰)哈垢。

注意到用這樣的方式來對抗遠程攻擊(LRA)需要對工作量證明(proof-of-work)的原始安全模塊進行徹底檢查北启。在工作量證明中(PoW)聊替,一個輕客戶端可以通過在每一個區(qū)塊頭中運行工作量證明,以此簡便地在任何時候與可信任的創(chuàng)始區(qū)塊的當前高度進行同步培廓。但是惹悄,為了對抗遠程攻擊(LRA),我們需要輕客戸端定期上線追蹤驗證人組的變動肩钠,其中在首次上線時必須格外仔細地根據(jù)可靠源來驗證從網(wǎng)絡(luò)采集的信息泣港。誠然,后面這個要求和比特幣類似价匠,其協(xié)議和軟件也必須從可靠源獲得当纱。

以上這些為了防止遠程攻擊的方法,比較好地適用于由Tendermint驅(qū)動下的區(qū)塊鏈驗證人節(jié)點以及全節(jié)點踩窖,因為這些節(jié)點需要保持與網(wǎng)絡(luò)的連接坡氯。這些方法同樣適用于希望頻繁地與網(wǎng)絡(luò)同步的輕客戶端。但是,對于那些不希望頻繁接入互聯(lián)網(wǎng)或者區(qū)塊鏈網(wǎng)絡(luò)的輕客戶端來說箫柳,還有另一種方法可以解決遠程攻擊的問題手形。非驗證人節(jié)點可以在很長的解綁期內(nèi)(比如比驗證人的解綁期更久)使用代幣作為保證金,并且為輕客戸端提供二級證明當前有效性以及過去區(qū)塊哈希的解決方案悯恍。雖然這些代幣對于區(qū)塊鏈共識的安全性并沒有價值库糠,不過他們還是可以為輕客戸端提供強大的保障。如果在以太坊中支持歷史區(qū)塊哈希查詢涮毫,那么任何人都可以用特定的智能合約來綁定他們的代幣瞬欧,并且提供付費證明服務(wù),從而有效地針對輕客戸端LRA安全問題開發(fā)出一個市場罢防。

克服分叉與審查攻擊

由于提交區(qū)塊流程的定義艘虎,任何聯(lián)合后不少于?的投票權(quán)的節(jié)點都可以通過下線或者不廣播選票來中止區(qū)塊鏈運行。這樣的聯(lián)合也可以通過拒絕包含這些交易的區(qū)塊來審查特定的交易篙梢,盡管這將導(dǎo)致大多數(shù)區(qū)塊提案被拒絕,致使區(qū)塊提交速率減緩美旧,降低了它的實用性與價值渤滞。惡意的聯(lián)合或許仍然會陸陸續(xù)續(xù)地廣播選票,用阻撓區(qū)塊鏈的區(qū)塊提交來將其逼停榴嗅,或者使用任何這些攻擊的組合攻擊妄呕。最終,它會通過雙重簽名或者違反鎖定規(guī)則來造成區(qū)塊鏈分叉嗽测。

如果一個全球活躍的作惡者也參與進來绪励,就會用可能出現(xiàn)錯誤的驗證組人子集導(dǎo)致速度降低的方法來分割網(wǎng)絡(luò)。這不只是Tendermint面臨的局限性唠粥,更確切地說是所有被活躍敵對者控制了網(wǎng)絡(luò)的共識協(xié)議所面臨的局限性1疏魏。

對于這些類型的攻擊,驗證人的子集應(yīng)該通過外部的方式進行協(xié)調(diào)夏块,以簽署選擇一個分叉(及關(guān)系到的所有證據(jù))與帶有簽名的驗證人的初始子集的重組提案即舌。簽署了這樣一份重組提案的驗證者烈炭,將放棄在所有其他分叉上屬于他們的保證金≈焕澹客戶端應(yīng)在重組提案中驗證簽名以及任何相關(guān)的證據(jù),并作出判斷或提示終端用戶作出決定舅巷。例如羔味,一個手機錢包app應(yīng)該在可能接受任何由一半以上的初始驗證人們通過投票權(quán)利簽署的重組提案時,給予用戶安全警告提示钠右。

當多于?的投票權(quán)益是不誠實的時候赋元,一個非同步的拜占庭容錯算法步能夠達成共識,然而,分叉假設(shè)不少于?的投票權(quán)益已經(jīng)因不正當?shù)碾p重簽名或者鎖定改變而成為不誠實的们陆。因此寒瓦,簽署重組提案是一個協(xié)調(diào)問題,任何非同步協(xié)議都無法解決這個問題(也就是自動的坪仇,并且不考慮底層網(wǎng)絡(luò)的可靠性)杂腰。目前,我們通過互聯(lián)網(wǎng)媒體的社會共識椅文,把重組提案的協(xié)調(diào)問題留給了用戶去協(xié)調(diào)喂很。驗證人必須在簽署重組提案之前就確保沒有出現(xiàn)網(wǎng)絡(luò)分割的問題,以此來避免簽署兩個相沖突的重組提議的情況發(fā)生皆刺。

假設(shè)外部協(xié)調(diào)媒介和協(xié)議是可靠的少辣,對于分叉的擔心會比審查攻擊要少許多。

除了需要大于?的拜占庭投票權(quán)益才能啟動的分叉和審查制度以外羡蛾,超過?的聯(lián)合投票權(quán)益可能會提交任意漓帅、無效的狀態(tài)。這是任何拜占庭容錯算法的共識系統(tǒng)所特有的問題痴怨。與利用簡單可驗證證明來創(chuàng)建分叉的雙重簽名不同忙干,檢測無效狀態(tài)的提交需要非驗證節(jié)點來驗證整個區(qū)塊,這意味著非驗證節(jié)點會保留一份本地的狀態(tài)副本并執(zhí)行每一筆交易浪藻,然后為他們自己獨立計算出狀態(tài)的根源捐迫。一旦檢測出來,處理這類故障的唯一方法就是社會共識爱葵。打一個比方施戴,在比特幣出現(xiàn)問題的情況下,無論是由于軟件漏洞造成的分叉(正如2013年3月)萌丈,還是由于礦工拜占庭行為提交的無效狀態(tài)(正如2015年7月)赞哗,由商戶、開發(fā)者辆雾、礦工和其他組織組成的聯(lián)系緊密的社區(qū)所建立起來的社會共識會讓他們按照分工來參與到修復(fù)網(wǎng)絡(luò)的工作當中去懈玻。此外,由于Tendermint區(qū)塊鏈的驗證人身份是可識別的乾颁,那么如果需要的話涂乌,無效狀態(tài)的提交實際上是可以被法律或其他外部法律體系懲治的。

ABCI說明

ABCI由3種主要的信息類型組成英岭,這三類信息從共識引擎?zhèn)鬟f到應(yīng)用程序上湾盒,然后應(yīng)用程序用相應(yīng)回復(fù)信息做出應(yīng)答。

AppendTx 信息是應(yīng)用程序的主要傳遞媒介诅妹。區(qū)塊鏈中的每一筆交易都通過這個信息來傳遞罚勾。應(yīng)用程序需要驗證每筆交易毅人,這將通過接收針對當前狀態(tài)、應(yīng)用協(xié)議和交易密碼證書的AppendTx信息來實現(xiàn)尖殃。驗證過的交易將需要通過添加數(shù)值到鍵值存儲或者更新UTXO數(shù)據(jù)庫的方式來更新應(yīng)用狀態(tài)丈莺。

CheckTx信息與AppendTx信息類似,但它只是為了交易驗證送丰。Tendermint Core的內(nèi)存池會先用CheckTx驗證交易有效性缔俄,并且只會將有效的交易傳遞給其他的節(jié)點。應(yīng)用程序會檢查交易序列號器躏,如果序列號過期就會根據(jù)CheckTx返回一個錯誤俐载。

Commit信息是用來計算之后會存入到下一區(qū)塊頭中的當前應(yīng)用狀態(tài)的加密提交項。這具有便利的特性登失。狀態(tài)的前后矛盾性將會像引起程序錯誤遏佣,從而導(dǎo)致區(qū)塊鏈分叉。這也簡化了安全輕客戸端的開發(fā)揽浙,因為默克爾哈希證明可以通過檢查區(qū)塊哈希來加以驗證状婶,而區(qū)塊哈希是由規(guī)定人數(shù)的驗證人們簽署的(通過投票權(quán)益)。

此外馅巷,ABCI信息允許應(yīng)用程序保持追蹤驗證人組的改變膛虫,并讓應(yīng)用程序接收諸如高度和提交選票之類的區(qū)塊信息。

ABCI請求/響應(yīng)是簡單的Protobuf信息令杈。請參考這里的模式文件走敌。

AppendTx

  • 命令行參數(shù):
    • Data ([]byte): 交易請求信息
  • Returns:
    • Code (uint32): 回復(fù)代碼
    • Data ([]byte): 結(jié)果字節(jié)碴倾,如果有的話
    • Log (string): 錯誤信息
  • 使用:
    提交并執(zhí)行一筆交易逗噩,如果交易有效,那返回CodeType.OK

CheckTx

  • 命令行參數(shù):
    • Data ([]byte): 交易請求信息
  • Returns:
    • Code (uint32): 回復(fù)代碼
    • Data ([]byte): 結(jié)果字節(jié)跌榔,如果有的話
    • Log (string): 錯誤信息
  • 使用:
    驗證一筆交易异雁。這個信息不應(yīng)該改變應(yīng)用狀態(tài)。交易在廣播給其他節(jié)點前僧须,首先通過CheckTx運行纲刀。你可以發(fā)起半狀態(tài)化CheckTx,并在Commit or BeginBlock上清算狀態(tài)担平,以允許序列執(zhí)行同一區(qū)塊中相關(guān)的交易示绊。

Commit

  • 返回值:
    • Data ([]byte): 默克爾根值
    • Log (string): 調(diào)試或出錯信息
  • 使用:
    返回當前應(yīng)用狀態(tài)。

Query

  • 命令行參數(shù):
    • Data ([]byte): 請求數(shù)據(jù)
  • 返回值:
    • Code (uint32): 回復(fù)代碼
    • Data ([]byte): 查詢回復(fù)字節(jié)
    • Log (string): 調(diào)試或出錯信息

Flush

  • 使用:
    刷新回復(fù)隊列暂论。應(yīng)用types.Application的應(yīng)用程序無需實施這條信息——這個由項目進行處理面褐。

Info

  • 返回值:
    • Data ([]byte): 信息字節(jié)串
  • 使用:
    返回關(guān)于應(yīng)用程序狀態(tài)的信息. 應(yīng)用指定。

SetOption

  • 參數(shù):
    • Key (string): 設(shè)置參數(shù)
    • Value (string): 參數(shù)值
  • 返回值:
    • Log (string): Debug or error message
  • 使用:
    比如取胎,針對內(nèi)存池的連接可以將鍵設(shè)置為”mode”(模式)展哭,值為”mempool”(內(nèi)存池)湃窍。或者針對共識連接匪傍,將鍵設(shè)置為”mode”您市,值設(shè)置為”consensus”(共識)。其他選項根據(jù)可具體應(yīng)用進行專門設(shè)置役衡。

InitChain

  • 參數(shù):
    • Validators ([]Validator): 初始化創(chuàng)世驗證人
  • 使用:
    在創(chuàng)世區(qū)塊創(chuàng)建時調(diào)用

BeginBlock

  • 參數(shù):
    • Height (uint64): 區(qū)塊剛開始的高度
  • 使用:
    為新區(qū)塊的開始提供信號茵休。在附加交易(AppendTxs)前進行調(diào)用。

EndBlock

  • 參數(shù):
    • Height (uint64): 結(jié)束時的區(qū)塊高度
  • 返回值:
    • Validators ([]Validator): 具有新選票的變動后的驗證人(歸零就去除)
  • 使用:
    為區(qū)塊結(jié)束提供信號映挂。在每次提交前所有交易后調(diào)用泽篮。

See the ABCI repository for more details

更多細節(jié)請參考 ABCI知識庫

IBC數(shù)據(jù)包交付確認

發(fā)送者有很多需要接收鏈提供數(shù)據(jù)包交付確認的原因柑船。比如帽撑,如果預(yù)計目的鏈會出錯,那發(fā)送者就可能無法了解目的鏈的狀態(tài)鞍时】骼或者,當目的鏈可能遇到因接收數(shù)據(jù)包猛烈增多而形成的拒絕服務(wù)攻擊時逆巍,發(fā)送者會想要設(shè)定數(shù)據(jù)包超時時限(借助MaxHeight 即最大值包域)及塘。

在這些案例中,發(fā)送人可以通過在AckPending上設(shè)置初始數(shù)據(jù)包狀態(tài)來要求提供交付確認锐极。然后就由接收鏈通過包含一個簡化的IBCPacket的應(yīng)用默克爾哈希來確認交付。

Figure of Zone1, Zone2, and Hub IBC with acknowledgement

首先肋层,一個IBCBlockCommitIBCPacketTx是被上傳到“樞紐”上用來證明”分區(qū)1″上的IBCPacket的存在的栋猖。假設(shè)IBCPacketTx的值如下:

  • FromChainID: “Zone1”
  • FromBlockHeight: 100 (假設(shè))
  • Packet: an IBCPacket:
    • Header: an IBCPacketHeader:
    • SrcChainID: “Zone1”
    • DstChainID: “Zone2”
    • Number: 200 (say)
    • Status: AckPending
    • Type: “coin”
    • MaxHeight: 350 (假設(shè) “樞紐” 當前高度為 300)
    • Payload: <一個”代幣”的有效負荷字節(jié)>
  • FromChainID: “Zone1”
  • FromBlockHeight: 100 (假設(shè))
  • Packet: an IBCPacket:
    • Header: an IBCPacketHeader:
    • SrcChainID: “Zone1”
    • DstChainID: “Zone2”
    • Number: 200 (假設(shè))
    • Status: AckPending
    • Type: “coin”
    • MaxHeight: 350 (假設(shè)”樞紐”目前的高度是300)
    • Payload: <一個”代幣”的有效負荷字節(jié)>

其次汪榔,一個IBCBlockCommitIBCPacketTx被傳輸都“分區(qū)2”上用來證明IBCPacket在“樞紐”上的存在蒲拉。假設(shè)IBCPacketTx的值如下:

  • FromChainID: “Hub”
  • FromBlockHeight: 300
  • Packet: an IBCPacket:
    • Header: an IBCPacketHeader:
    • SrcChainID: “Zone1”
    • DstChainID: “Zone2”
    • Number: 200
    • Status: AckPending
    • Type: “coin”
    • MaxHeight: 350
    • Payload: <一個”代幣”相同的有效負荷字節(jié)>
  • FromChainID: “Hub”
  • FromBlockHeight: 300
  • Packet: an IBCPacket:
    • Header: an IBCPacketHeader:
    • SrcChainID: “Zone1”
    • DstChainID: “Zone2”
    • Number: 200
    • Status: AckPending
    • Type: “coin”
    • MaxHeight: 350
    • Payload: <一個”代幣”相同的有效負荷字節(jié)>

接下來,”Zone2″必須將縮寫的來顯示AckSent的最新狀態(tài)包添加到應(yīng)用程序狀態(tài)哈希中痴腌。
IBCBlockCommitandIBCPacketTx 會傳輸?shù)健皹屑~”上來證明簡化的IBCPacket 存在于”分區(qū)2″上雌团。假設(shè)IBCPacketTx 的值如下:

  • FromChainID: “Zone2”
  • FromBlockHeight: 400 (假設(shè))
  • Packet: an IBCPacket:
    • Header: an IBCPacketHeader:
    • SrcChainID: “Zone1”
    • DstChainID: “Zone2”
    • Number: 200
    • Status: AckSent
    • Type: “coin”
    • MaxHeight: 350
    • PayloadHash: <一個”代幣”相同的有效負荷字節(jié)的哈希值>
  • FromChainID: “Zone2”
  • FromBlockHeight: 400 (假設(shè))
  • Packet: an IBCPacket:
    • Header: an IBCPacketHeader:
    • SrcChainID: “Zone1”
    • DstChainID: “Zone2”
    • Number: 200
    • Status: AckSent
    • Type: “coin”
    • MaxHeight: 350
    • PayloadHash: <一個”代幣”相同的有效負荷字節(jié)的哈希值>

最后,“樞紐”必須更新從AckPendingAckReceived的數(shù)據(jù)包狀態(tài)士聪。這個新完成狀態(tài)的證明應(yīng)該返回到“分區(qū)2”上锦援。假設(shè)IBCPacketTx的值如下:

  • FromChainID: “Hub”
  • FromBlockHeight: 301
  • Packet: an IBCPacket:
    • Header: an IBCPacketHeader:
    • SrcChainID: “Zone1”
    • DstChainID: “Zone2”
    • Number: 200
    • Status: AckReceived
    • Type: “coin”
    • MaxHeight: 350
    • PayloadHash: <The hash bytes of the same “coin” payload>
  • FromChainID: “Hub”
  • FromBlockHeight: 301
  • Packet: an IBCPacket:
    • Header: an IBCPacketHeader:
    • SrcChainID: “Zone1”
    • DstChainID: “Zone2”
    • Number: 200
    • Status: AckReceived
    • Type: “coin”
    • MaxHeight: 350
    • PayloadHash: <相同”代幣”有效負荷的哈希字節(jié)>

與此同時,“分區(qū)1”會假設(shè)“代幣”包的交付已經(jīng)成功戚嗅,除非”樞紐”上有證據(jù)給出相反的證明雨涛。在上述例子中枢舶,如果”樞紐”沒有從”分區(qū)2″接收到第350個區(qū)塊的AckSent 狀態(tài),那么它就會自動將其設(shè)置為Timeout(超時)替久。這個超時的證據(jù)可以貼回到”Zone1″上凉泄,然后所有代幣都會被返還蚯根。

Figure of Zone1, Zone2, and Hub IBC with acknowledgement and timeout

默克爾樹及默克爾證明的說明

Tendermint/Cosmos生態(tài)支持的兩種默克爾樹:簡單樹和IAVL+樹。

簡易版默克爾樹

簡易版默克爾樹針對基礎(chǔ)的靜態(tài)列表右锨。如果項目的數(shù)量不是2的次方,那么有些樹葉就會在不同的層上。簡易樹試圖讓樹的兩側(cè)在同一高度瞬测,但是左邊可能會稍大一點。這種默克爾樹就是用于一個區(qū)塊交易的默克爾化的绽乔,而頂層元素就是應(yīng)用狀態(tài)的根看疗。

                *               / \             /     \           /         \         /             \        *               *       / \             / \      /   \           /   \     /     \         /     \    *       *       *       h6   / \     / \     / \  h0  h1  h2  h3  h4  h5   A SimpleTree with 7 elements

IAVL+樹

IAVL+數(shù)據(jù)結(jié)構(gòu)的目的是永久儲存應(yīng)用狀態(tài)中的密鑰對去枷,這樣就可以對確定的默克爾根哈希進行高效的運算竖螃。這個樹的平衡通過 AVL算法的變體來實現(xiàn),所有運行都是O(log(n))画拾。

在AVL樹中,任意節(jié)點的兩個子樹的高度至多有一處不同。無論在什么時候這種情況都是與更新相違背的蚕钦,這個樹都會通過創(chuàng)造O(log(n))新節(jié)點(指向舊樹上未修改的節(jié)點)來再次達到平衡促煮。在初始的AVL算法中佑吝,內(nèi)部節(jié)點也可以保留密鑰值對疾棵。AVL+算法(注意這里有個”+”號)對AVL算法進行了修改殉了,來維持所有數(shù)值都在樹葉節(jié)點上,同時還只需采用分支-節(jié)點來存儲密鑰田轧。這樣在維持較短的默克爾哈希軌跡對的同時,還簡化了算法。

AVL+樹類似于以太坊的帕氏樹稽莉。其中也有一定的折中。密鑰不需要在嵌入到IAVL+樹之前生成哈希,所以這就為密鑰空間提供了較快的命令迭代庸推,這會為很多應(yīng)用程序帶來好處肘习。邏輯實現(xiàn)更簡單脖含,只需要內(nèi)部節(jié)點和樹葉節(jié)點這兩種節(jié)點類型墓拜。作為一個平衡的二叉樹夏醉,其默克爾證明平均更短。而另一方面,IAVL+樹的默克爾根有取決于命令的更新玄捕。
我們將支持額外有效的默克爾樹,比如當二元變量可用時的以太坊帕氏樹。

交易類型

在標準的執(zhí)行中攀圈,交易通過ABCI界面涌入Cosmos Hub的應(yīng)用程序中穴店。

Cosmos Hub將接收幾類主要的交易類型忧风,包括SendTx, BondTx, UnbondTx, ReportHackTx, SlashTx, BurnAtomTx,
ProposalCreateTx缘厢,以及ProposalVoteTx(發(fā)送交易英遭、綁定交易、解綁交易痴突、攻擊報告交易、削減交易如迟、Atom燃燒交易,創(chuàng)建提案交易贤斜、以及提案投票交易)带族,這些都不需要加以說明,會在未來版本的文檔中加以備案恬总。這里我們主要列舉兩個主要的IBC交易類型: IBCBlockCommitTx 以及IBCPacketTx(即IBC區(qū)塊提交交易以及IBC數(shù)據(jù)包交易)

IBCBlockCommitTx

IBCBlockCommitTx 交易主要由這些組成:

  • ChainID (string): 區(qū)塊鏈ID
  • BlockHash ([]byte): 區(qū)塊哈希字節(jié)缀旁,就是包括應(yīng)用程序哈希默克爾根
  • BlockPartsHeader (PartSetHeader): 區(qū)塊部分設(shè)置的頭字節(jié)懊渡,只用于驗證投票簽名
  • BlockHeight (int): 提交高度
  • BlockRound (int): 提交回合
  • Commit ([]Vote): 超過?的包括區(qū)塊提交的Tendermint預(yù)提交投票
  • ValidatorsHash ([]byte): 新驗證組的默克爾樹根哈希
  • ValidatorsHashProof (SimpleProof): 在區(qū)塊哈希中證明驗證人哈希的簡易樹默克爾證明
  • AppHash ([]byte): IAVL樹,應(yīng)用程序狀態(tài)的默克爾樹根哈希
  • AppHashProof (SimpleProof): 在區(qū)塊哈希中驗證應(yīng)用程序哈希的簡易版默克爾樹證明AppHash against the BlockHash

IBCPacketTx

IBCPacket 由下列項組成:

  • Header (IBCPacketHeader): 數(shù)據(jù)包頭
  • Payload ([]byte): 數(shù)據(jù)包有效負荷字節(jié)。可選擇遣耍。
  • PayloadHash ([]byte): 數(shù)據(jù)包字節(jié)哈希纪隙◆镏簦可選擇。

有效負荷Payload或有效負荷哈希PayloadHash必須存在一個。IBCPacket 的哈希就是兩個項的簡易版默克爾根泻拦,即頭和有效負荷。沒有完整有效負荷的IBCPacket 被稱作 縮寫版包

IBCPacketHeader由下列項組成:

SrcChainID (string): 源區(qū)塊鏈 ID
DstChainID (string): 目標區(qū)塊鏈ID Number (int): 所有數(shù)據(jù)包的唯一數(shù)字
Status (enum):可以是AckPending奥邮,AckSent脚粟,AckReceived,NoAck厕宗,或Timeout任意一個 Type (string): 種類根據(jù)應(yīng)用程序決定佑惠。Cosmos保留”coin”(幣)包種類贞奋。
MaxHeight (int): 如果狀態(tài)不是這個高度給出的NoAckWanted 或者AckReceived 仲墨,那么狀態(tài)就算超時。可選擇匈勋。

An IBCPacketTx transaction is composed of:

  • FromChainID (string): The ID of the blockchain which is providing this
    packet; not necessarily the source
  • FromBlockHeight (int): The blockchain height in which the following packet
    is included (Merkle-ized) in the block-hash of the source chain
  • Packet (IBCPacket): A packet of data, whose status may be one of
    AckPending, AckSent, AckReceived, NoAck, or Timeout
  • PacketProof (IAVLProof): A IAVLTree Merkle-proof for proving the packet’s
    hash against the AppHash of the source chain at given height

IBCPacketTx 交易有下列項組成:
FromChainID (string): 提供給這個數(shù)據(jù)包的區(qū)塊鏈ID汰翠,不是源所必須的
FromBlockHeight (int): 區(qū)塊鏈高度,其中接下來的包會包含在(默克爾化的)源鏈的區(qū)塊哈希中
Packet (IBCPacket):數(shù)據(jù)包, 其狀態(tài)可能是AckPending, AckSent, AckReceived, NoAck, 或者 Timeout其中的一個
PacketProof (IAVLProof): IAVL樹默克爾證明妓局,用于驗證在給定高度下的源鏈應(yīng)用哈希中的數(shù)據(jù)包哈希

通過”Hub”甥啄,將數(shù)據(jù)包從”Zone1″發(fā)送到”Zone2″的序列穆桂,描述在{Figure X}函數(shù)中。首先姿鸿,一個IBCPacketTx會向”Hub”證明數(shù)據(jù)包是包含在”Zone1″的應(yīng)用程序狀態(tài)中。然后,另一個IBCPacketTx 會向”Zone2″證明數(shù)據(jù)包包含在”Hub”的應(yīng)用程序狀態(tài)中。在這個過程中秘遏,IBCPacketTx 的字段是相同的:SrcChainID永遠是”Zone1″舍扰,而DstChainID 永遠是”Zone2″。

The PacketProof must have the correct Merkle-proof path, as follows:

PacketProof 必須有正確的默克爾證明路徑,如下:

IBC/<SrcChainID>/<DstChainID>/<Number> 

當“Zone1”要通過“Hub”將數(shù)據(jù)包傳送到“Zone2”中脓钾,無論數(shù)據(jù)包是否在“Zone1”捶枢、“Hub”谨胞、或者“Zone2”中默克爾化了,IBCPacket數(shù)據(jù)都是相同的。唯一易變的字段是為追蹤交付的Status

鳴謝

我們?yōu)樗信笥延袀冊诟拍畛尚团c檢查方面給予的幫助,以及對我們在Tendermint與Cosmos工作中的大力支持晌畅,表示衷心地感謝。

引用

未分類鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市捎稚,隨后出現(xiàn)的幾起案子宰睡,更是在濱河造成了極大的恐慌孩等,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機居暖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讽膏,“玉大人逢勾,你說我怎么就攤上這事“攀牛” “怎么了舀凛?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵乙帮,是天一觀的道長。 經(jīng)常有香客問我摔刁,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任十嘿,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己捉撮,他們只是感情好献丑,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著罗捎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剩彬。 梳的紋絲不亂的頭發(fā)上酷麦,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機與錄音喉恋,去河邊找鬼。 笑死母廷,一個胖子當著我的面吹牛轻黑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琴昆,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼氓鄙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了献雅?” 一聲冷哼從身側(cè)響起邪媳,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤久又,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后态罪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡下面,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年复颈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沥割。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耗啦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出机杜,到底是詐尸還是另有隱情帜讲,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布椒拗,位于F島的核電站似将,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陡叠。R本人自食惡果不足惜玩郊,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望枉阵。 院中可真熱鬧译红,春花似錦、人聲如沸兴溜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刨沦,卻和暖如春诗宣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背想诅。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工召庞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人来破。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓篮灼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親徘禁。 傳聞我的和親對象是個殘疾皇子诅诱,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容

  • (2) 山垣之上的苦行廟,也就是一個主堂放著僧佛之像送朱,側(cè)堂有兩間木屋的一進院娘荡,院子里還有個朝陽的石亭,亭中掛著一鼎...
    熱心市民大臉破破閱讀 444評論 0 1
  • 其實情緒體它本來只是感受的驶沼,而我們的心智體對情緒體進行了錯誤的評判炮沐,心智體善于思考也主宰著念頭,因此對情緒賦予了自...
    忎染閱讀 115評論 0 0
  • 再有一天商乎,我們的悅寶寶就要一周歲了央拖,起碼對于身份證號碼來說,本寶寶馬上就一歲+了鹉戚;可是媽媽真的覺得時光怎么那么快鲜戒,...
    樂知章閱讀 286評論 0 1
  • 聽說愛是貧窮的。 我信了抹凳。 深夜聽著歌遏餐,想起青春時的自己,還是會淚流滿面赢底。 事情都過去那么久了失都,想起來還是喜歡存在...
    趙糖包閱讀 1,331評論 0 0