Layer 2 概述

序言

如果我們仔細回顧一下今年區(qū)塊鏈技術的進展,就會發(fā)現(xiàn)各種有新的想法的公鏈團隊越來越少出現(xiàn)了戳鹅,大家談論以及關注的點也都不那么聚焦在公鏈上了搏屑。反倒是很多新的 Layer 2 項目在不斷涌現(xiàn),非撤鄢活躍。

要知道在這之前亮垫,尤其是 2017 年模软,大家無人不談公鏈,無人不做公鏈饮潦,各種 ICO 的項目宛如烈火烹油燃异,火的一塌糊涂。

為什么會有這樣的思潮轉變呢继蜡?

這里還是需要提到不可能三角問題

2017 的很多區(qū)塊鏈團隊都是野心勃勃回俐,說要顛覆比特幣,顛覆以太坊稀并,各種區(qū)塊鏈 3.0仅颇,甚至是區(qū)塊鏈 4.0。比特幣和以太坊所為人所詬病的 TPS 碘举,也成了區(qū)塊鏈團隊攻擊并且用來給自己 PR 的材料忘瓦,很多宣稱有百萬 TPS 的項目誕生。

而經(jīng)過一年的發(fā)展引颈,大家發(fā)現(xiàn)要純靠一套算法和共識來解決區(qū)塊鏈的不可能三角問題是不現(xiàn)實的耕皮,因為如果你要保證系統(tǒng)的去中心化和安全性,每一筆交易必須由網(wǎng)絡中每個節(jié)點進行處理蝙场,而這樣就注定了它的性能肯定是達不到我們要求的凌停。

于是大家的關注點開始轉變罚拟,越來越多人開始關注第一層的擴容方案。以太坊生態(tài)其實一直在研究相關的擴容方案拉庶,只是大家在做公鏈遇到瓶頸的時候秃励,很多人才反過來關注這些東西。

讓每個節(jié)點做更多的工作量皆尔?

公鏈吞吐量的根本限制來自于它不能高于我們對單個節(jié)點所要求的交易吞吐量慷蠕,由此突破的方向我們可以想到,是不是能夠讓每一個節(jié)點做更多的工作食呻?

我們確實可以讓每個節(jié)點做更多的工作流炕,比方說把擴大區(qū)塊大小擴大四倍,這個意味著每一個節(jié)點的工作量是之前的四倍仅胞,但是這樣它就提高了加入門檻和犧牲了部分去中心化每辟。

因為擴容之后,節(jié)點做的工作多了,計算量也需要擴展,這樣會把一批算力小的機器給淘汰鸡典,會導致算力變的更中心化疟暖。

而且說實話,這種擴容方式對提升到我們需要的區(qū)塊鏈性能還差的遠。

那么現(xiàn)在的問題是,我們怎么在不增加單個節(jié)點工作量的情況下做更多有用的事情?

每個節(jié)點不需要處理每個操作舔稀?

在我們慣常的思維中,每一個節(jié)點是需要并行處理每一個交易的掌测,那么如果每一個節(jié)點不需要處理每一個操作呢镶蹋?

設想一下,網(wǎng)絡分成了兩個部分赏半,每個部分可以半獨立運作贺归。A 部分處理一批交易,B 部分處理一批交易断箫,A 和 B 之間彼此獨立拂酣,目前的交易限制就變成了兩個節(jié)點同時處理的交易總量,區(qū)塊鏈的吞吐量是翻倍的仲义。

而如果我們把區(qū)塊鏈分成很多部分婶熬,盡可能的細分赵颅,我們就可以成倍的增加區(qū)塊鏈的 Tps捂刺。

這就是我們俗稱的分片技術( Sharding )

區(qū)塊鏈被分成不同的部分族展,稱為碎片,每個部分都可以單獨處理交易恰画,這個技術通常被稱為第一層的擴展方案,它是在以太坊本身的基礎協(xié)議中實現(xiàn)的。

分片從設想上來說是一個非常棒的想法树瞭,但是在技術實現(xiàn)上,還是遇到了很多挑戰(zhàn)和問題凉敲。

從現(xiàn)有的容量擠出更多有用的業(yè)務爷抓?

我們如果從相反的方向考慮,我們并不增加區(qū)塊鏈本身的容量渤昌,但是我們用已有的容量做更多的事情呢迈窟?

這個很自然聯(lián)想到的是壓縮計算狂秘。

目前區(qū)塊鏈上絕大多數(shù)的共識的達成其實并不需要經(jīng)過所有節(jié)點的確認破衔,有些東西只發(fā)生在你我之間读第,我們兩者之間清楚就好怜瞒。

那么我們可不可以考慮把這些東西放在鏈外去做,最后底層擔任一個 Crypto Court 的角色呢漾橙?這樣可以兼顧去中心化、安全性和性能淘捡。

我覺得是完全可以的,而且我認為這個才是正確的一個方向

這就是我們接下來要著重講述的「鏈下」技術险绘,它們包括狀態(tài)通道瓣距、Plasma蹈丸、Truebit 等奋岁,它們也叫做第二層解決方案,簡稱 Layer 2蓝翰。

狀態(tài)通道(State Channel)

我們先來談談狀態(tài)通道畜份,舉一個例子方便大家理解。

Alice 和 Bob 一起玩一個劃拳游戲钙态。

Alice 贏了可以從 Bob 那里得到 1 塊錢驯绎,而如果 Alice 輸了需要給 Bob 1 塊錢,反之亦然册着。

如果這個游戲是在以太坊主鏈上運行,我們通常的方法是 Alice 和 Bob 一起創(chuàng)建一個智能合約司顿,每當劃拳游戲開始的時候大溜,他們向智能合約發(fā)起一個交易座云,當其中一個玩家贏了的時候,智能合約會執(zhí)行規(guī)則付給贏家 1 塊錢璧帝。

這個很清晰,也很簡單理疙,但是在以太坊上還是效率太低了。因為這個只局限 Alice 和 Bob 之間的交易需要整個以太坊來處理。

而且每次玩家需要操作的時候,都必須支付 Gas 費用,他們必須等待幾個塊之后才能開始行動击蹲,這個對于來玩游戲是很不友好的。

那么我們在這里可以不可以設計出一種系統(tǒng)骗露,盡可能的減少 Alice 和 Bob 在鏈上的操作柿隙?

是可以的。

Alice 和 Bob 能在鏈下更新游戲的狀態(tài),同時有必要可以恢復到以太坊主鏈的狀態(tài)的這種系統(tǒng)狈究,就叫做狀態(tài)通道缕探,它實現(xiàn)的過程可以概括為以下幾個步驟。

  • 打開狀態(tài)通道
  1. 質押資產(chǎn)
  2. 建立一個去中心化的制衡機制
  • 在鏈下發(fā)送交易
  1. 對狀態(tài)簽名并發(fā)送
  2. 雙方確認狀態(tài)的改變
  • 關閉狀態(tài)通道

具體的過程如下:

首先鞋邑,我們在以太坊上創(chuàng)建一個智能合約,這個是一個類似法官的角色遵堵,Alice 和 Bob 為兩個參與游戲的玩家陌宿。

然后 Alice 和 Bob 開始玩游戲。

Alice 創(chuàng)建并簽署了一個描述她第一次操作的交易弥虐,并且把這個交易發(fā)給了 Bob,Bob 簽了名之后颖对,把簽名版本發(fā)了回去缤底,并且自己保留了一個副本,然后 Bob 創(chuàng)建并簽署了他第一次操作的交易魄梯,把這個發(fā)送給了 Alice 狭园,Alice 也對交易進行了簽名,再發(fā)回去,并且為自己保留了一個副本烘豹。

每次他們都能更新當前的游戲狀態(tài)构订,每個交易包含一個聲明,這意味著后面的交易總是能知道每個操作發(fā)生的順序挤渐。

這個其實暫時還沒有任何事情發(fā)生在鏈上或杠,他們只是在網(wǎng)站上互相發(fā)送交易覆享,沒有任何東西傳到區(qū)塊鏈上。但是所有的游戲交易都能發(fā)送到智能合約上厌衙,它們都是有效的區(qū)塊鏈交易瓷们。

我們可以把這個看成是兩個人互相寫在一系列區(qū)塊鏈認證的支票焕檬,實際上沒有錢存入銀行或者取出乎赴,但每個人都有一堆可以隨時存入的支票。

當 Alice 和 Bob 結束游戲之后丈冬,他們需要向法官提交最終的狀態(tài)來關閉這個通道蔑担,這樣只付一筆交易的費用届搁。

假設最后劃拳游戲經(jīng)過了很多輪,Alice 合計贏了 5 局瓶逃,那么 Bob 要給 Alice 5塊錢调违。法官合約保證這個最終的狀態(tài)是雙方都簽過名的虚婿,經(jīng)過一段時間挑戰(zhàn)期之后,確保沒有人能夠合法的修改這個結果屉符,合約就會向 Alice 付 5 塊錢唆香。

而需要「挑戰(zhàn)期」的原因是防止玩家作惡躬它。

如果 Bob 發(fā)送給法官的是更早的狀態(tài)倘待,沒有發(fā)送最終的真實狀態(tài)延柠,由于法官只是一個智能合約,它是無法知曉這個是不是最新的狀態(tài)的增热,那么 Alice 的資產(chǎn)就會受到損失。

所以我們有挑戰(zhàn)期摄咆,讓 Alice 有向法官合約證明 Bob 游戲狀態(tài)作惡的機會。

比方說涩金,如果 Bob 發(fā)送的是更早的狀態(tài),那么 Alice 是保留過這個狀態(tài)的副本的全度,她可以把這個狀態(tài)提交給法官合約。法官合約通過查看聲明就能判斷 Alice 發(fā)送的狀態(tài)是最新的咨堤,拒絕 Bob ,并且罰沒掉 Bob 的押金凸克。

再舉個例子咐容,不是很精確蚂维,但是方便大家簡單的理解狀態(tài)通道在做什么。

我們去賭場賭博苹祟,都要把現(xiàn)金換成籌碼,而賭場不管你在賭場游戲過程發(fā)生了什么砂轻,他們只看你結束游戲時候的籌碼曲初。

而每一次游戲結束你都可以離開賭場,你可以把你當時你的籌碼給到賭場官方杯聚,他們會把相應的籌碼兌換成現(xiàn)金給你臼婆。

就好比我們在狀態(tài)通道進行的交易是可以即使終結的

中間有很多不一樣的東西,例如在賭場是你一個人在執(zhí)行幌绍,而狀態(tài)通道需要兩個人甚至是多人等等颁褂,而且中間有很多博弈過程,我們不做詳細比較傀广,我只是想通過這個例子給大家描述清楚狀態(tài)通道大致在做什么颁独。

而通過描述過程,我們可以發(fā)現(xiàn)狀態(tài)通道有以下幾個特點。

優(yōu)點

  • 狀態(tài)通道具有良好的隱私性

不管在狀態(tài)通道上發(fā)生了多少的瞬時交易蕾各,這些交易都是在通道內部發(fā)生的内颗,并沒有廣播和記錄在鏈上糟袁,其他人不會知道仿耽,所以具有非常好的隱私性。

  • 即時終結性

只要狀態(tài)雙方都簽署了狀態(tài)更新砌滞,這個狀態(tài)就可以被認為是最終狀態(tài)打掘,大家可以隨時退出。

  • 適合長時間多狀態(tài)更新

狀態(tài)通道特別適合那些需要長時間里交換許多狀態(tài)更新的參與者粪牲,因為在部署合約的時候,創(chuàng)建的狀態(tài)通道有一個初始成本,而一旦部署完畢求妹,狀態(tài)通道的邊際成本就接近于零强挫。

缺點

  • 每打開和關閉一個狀態(tài)通道都需要一個鏈上交易

打開狀態(tài)通道如果只給發(fā) 1 筆交易,這樣會很不合算,因為還需要在鏈上做其他的兩筆交易便斥,它不適合低頻操作驶臊。

  • 狀態(tài)通道的參與者要保持隨時在線

由于挑戰(zhàn)期的存在,狀態(tài)通道的參與者需要一直在線窖逗,如果不在線词爬,資產(chǎn)就有可能損失掉,我們平常用 imToken 做轉賬恕洲,等待幾個區(qū)塊的確認就好了殊校,需要一直在線對于參與者來說確實是一件很不友好的事情蹂安。

  • 比較適合具有一組確定參與者的應用程序

因為狀態(tài)通道的法官合約始終需要知道作為通道的一部分的實體(地址)椭迎,當我們需要添加和刪除成員的時候,每次都需要更改合約田盈,重新建一條通道畜号,這個也是很麻煩的一個點。

接下來我們講講通過狀態(tài)通道實現(xiàn)的項目允瞧,幫助大家來理解其應用简软。

閃電網(wǎng)絡( Lighting network )

這個是比特幣網(wǎng)絡的微支付通道,已經(jīng)做了很多年了述暂,但是由于比特幣本身對于腳本和智能合約的支持非常的差痹升,它的解鎖和鎖定的流程設計的非常的復雜,所以這個項目一直發(fā)展很緩慢畦韭。

雷電網(wǎng)絡( Radien Network )

這個是以太坊上的微支付通道疼蛾,叫做雷電網(wǎng)絡,和閃電網(wǎng)絡類似廊驼。由于以太坊支持智能合約据过,所以它比閃電網(wǎng)絡要簡單很多,發(fā)展也快很多妒挎。

雷電網(wǎng)絡借鑒了閃電網(wǎng)絡的技術理念绳锅,關鍵技術也和閃電網(wǎng)絡一致,包括 RSMC酝掩、HTLC 等技術鳞芙。

它們出眾的地方在于,你不必與每個想要與之交易的特定人員都開通一個狀態(tài)通道期虾,你可以打開一個連接著更大的狀態(tài)通道網(wǎng)絡的通道原朝,這樣的話你可以向任何連接在這個狀態(tài)通道網(wǎng)絡上的人付款,并且不需與額外的費用镶苞。

參與者越多喳坠,網(wǎng)絡處理轉賬能力越高。但是在網(wǎng)絡建立初期茂蚓,由于支付通道很少壕鹉,所以需要有人多主動建立中介點,才能讓整個網(wǎng)絡更有價值聋涨。

Sprites

它引入了經(jīng)濟模型晾浴,給保持狀態(tài)通道的用戶提供經(jīng)濟激勵,以使他們能夠保持狀態(tài)通道牍白。

A 和 B 交易脊凰、B 和 C 交易時需要創(chuàng)立狀態(tài)通道,它們交易完之后都會把狀態(tài)通道關掉茂腥,而當下次 A 和 C 需要交易的時候狸涌,還需要另外建立狀態(tài)通道切省。

如果我們能通過經(jīng)濟激勵的模式把 A 和 B、B 和 C 之間的狀態(tài)通道給保持住杈抢,那么下次 A 和 C 交易数尿,就可以以 A 和 B仑性、B 和 C 的狀態(tài)通道作為跳板惶楼,進項交互。那么它們就不需要再建了诊杆。

這就是 Sprites 在做的事情 歼捐,提供了經(jīng)濟激勵鼓勵大家維護狀態(tài)通道,讓其能夠幫別人去做交互晨汹。

Counterfactual

它做的事情是 Generalize State Channel豹储。

我們之前提的都是 Payment 的狀態(tài)通道,如果是一個基于游戲的狀態(tài)通道淘这,像下五子棋剥扣、卡牌,它的退出的時候铝穷,法官的智能合約相對會寫的很復雜钠怯,工程實現(xiàn)方面更難。

而 Counterfactual 做的就是把法官這一層給 Generalize 了曙聂,只要你做完一次狀態(tài)通道的 Open晦炊,它就可以適應于各種應用,各種退出的方式宁脊。它抽象化了狀態(tài)通道的打開和退出機制断国,通過通用模塊化的實現(xiàn),允許大家更方便的使用狀態(tài)通道榆苞。

Liquidity Network

Liquidity Network 旨在解決以太坊支付速度的問題稳衬,它相對于閃電網(wǎng)絡和雷電網(wǎng)絡做了很多優(yōu)化。

雷電網(wǎng)絡是兩方之間的一個單向通道交易坐漏。而 Liquidity Network 采用了 Hub 的網(wǎng)絡拓撲結構薄疚,用戶可以加入到任意一個 Hub 中,通過 Hub 與其它用戶進行交易和支付轉賬仙畦,實現(xiàn)了多方之間的雙向通道交易输涕。

在之前的狀態(tài)方案當中,如果 A 要發(fā)給 C慨畸,他們之間沒有建立通道莱坎,但 A 和B、B 和 C 都有建立通道寸士,那 A 可以付費給 B 來「借道」完成與 C 的交易檐什,如果中間環(huán)節(jié)過多的話碴卧,“借道費”都也是一筆不小的開支。而由于 Liquidity Network 采用了 Hub 的結構乃正,所以 A 如果要發(fā)給 C住册,就不再需要通過 B 了,也就不存在「借道費」的概念了瓮具。

而且在 Liquidity 里面荧飞,利用 REVIVE 的押金再平衡算法,解決了雷電網(wǎng)絡通道之間資金獨立名党,不能自動平衡的問題叹阔。

比方說在雷電網(wǎng)絡中,如果 A 給 B 發(fā)交易传睹,然后 B 給 C 發(fā)交易耳幢,假設 B 的余額是 0,那么 A 發(fā)給 B 之后欧啤,B 不能直接發(fā)交易給 C睛藻,它必須跟 C 建立支付通道,并且充值足夠的錢(大于交易金額)邢隧,才能和 C 交易店印,顯得很麻煩。

而 Liquidity 通過 REVIVE 技術可以直接讓 B 和 A 交易完之后府框,立即和 C 交易 吱窝,大大增加了交易的效率。

FunFair

FunFair 是一個由以太坊智能合約支持的去中心化游戲平臺迫靖,其通過一對一的狀態(tài)通道( Fate Channel )建立了一個 P2P 的賭場院峡,旨在實現(xiàn)在線區(qū)塊鏈博弈的公平公正,解決「賭場」游戲高費用和低信任度的問題系宜。

SpankChain

SpankChain 是一個基于以太坊的照激,成人娛樂平臺,其現(xiàn)有產(chǎn)品包括 Vynos盹牧,一種點對點微支付處理錢包俩垃,它已經(jīng)為成人參與者建立了單向支付通道( 其 ICO 的時候使用的就是狀態(tài)通道)

Plasma

Plasma 是一個鏈下交易的技術,由 Vitalik Buterin 和 Joseph Poon 在2017 年 提出汰寓,它相當于貢獻了一條子鏈口柳,可以讓你在主鏈上質押資產(chǎn),然后在子鏈上產(chǎn)生資產(chǎn)有滑,而且它提供一個服務器跃闹,不需要點對點的交互,在服務器上就可以進行交互。

Plasma 子鏈可以更快地操作望艺,且交易費用更低苛秕,因為它的操作不需要在整個以太坊區(qū)塊鏈存留副本

它的基本流程和狀態(tài)流程也比較相似。

  • 主鏈上抵押資產(chǎn)

  • 在子鏈上交易

  • 提現(xiàn)退出

不過狀態(tài)通道更多的是針對你想交易的那幾個點找默,是兩個人之間的交互艇劫,而它想要在一個大的庫里面進行復雜的操作是一個很困難的事情。而 Plasma 可以在子鏈上進行各種形式的交易惩激,調動智能合約店煞,轉賬給多個人等等,非常靈活咧欣,不像 State Channel 一樣浅缸,只有打開通道的人能用,任何人都可以隨時進來魄咕。

Plasma 是一個大的框架,細分有好幾種不同的實現(xiàn)方式蚌父。

首先哮兰,讓我來詳細介紹一下整個過程,來幫助你理解 Plasma 的整個框架苟弛,如下圖所示喝滞。

Plasma 框架

我們在以太坊上創(chuàng)建一套智能合約,作為 Plasma 的 Root Chain膏秫,而 Root Chain 包含了子鏈的狀態(tài)交易規(guī)則右遭,記錄子鏈的哈希值,并且其作為一個橋梁缤削,讓用戶在以太坊主鏈和子鏈之間轉移資產(chǎn)窘哈。

然后我們創(chuàng)建子鏈,子鏈可以擁有它們自己的共識算法亭敢,假設這里我們使用 POA ( Proof of authority )共識機制滚婉。

這個是一個依賴可信區(qū)塊生產(chǎn)者的共識機制,每個驗證者都必須都是通過身份驗證的可信人帅刀,打個簡單的比方让腹,以前交易需要一群互不認識的人來比拼算力,艱難計算一道復雜的數(shù)學題扣溺,但是現(xiàn)在我們有一個可信的人做擔保骇窍,所以便可以快速通過交易,要是這個人使壞锥余,其他的人可以把他踢出網(wǎng)絡腹纳。

假設游戲公司是唯一一個創(chuàng)建區(qū)塊的實體,這個實體運行著幾個節(jié)點,而這些節(jié)點被當作子鏈的塊生產(chǎn)者只估。

而子鏈一旦創(chuàng)建開始工作志群,塊生產(chǎn)者將定期向根合同做出聲明,這個將被記錄在 Plasma 的鏈上蛔钙,作為子鏈發(fā)生計算的證據(jù)锌云。

而用戶要玩游戲的時候,他們得先在主鏈上抵押資產(chǎn)獲得在子鏈上的資產(chǎn)吁脱,然后在子鏈上交互桑涎。

因為不需要與主鏈交互,而且只有少數(shù)幾個節(jié)點必須處理交易兼贡,所以交易費會很低攻冷,而且操作會很快。

我們結束游戲之后遍希,可以選擇提現(xiàn)退出等曼。

下面我將通過幾個問題,幫你更加深入理解 Plasma 的細節(jié)凿蒜,包括周期性提交和安全退出機制禁谦。

當你在子鏈上宣布要退出,你有 100 個以太要提現(xiàn)時废封,由于主鏈不一定知道子鏈的情況州泊,它是不能相信你擁有這筆資產(chǎn)的。

此時你就得提交證明漂洋,像默克爾樹證明遥皂,而默克爾樹證明是要證明到一個默克爾樹的根哈希的,你也得證明你上傳的根哈希是真實的刽漂。

這個就要求 Plasma 的子鏈周期性的把它的狀態(tài)(默克爾數(shù)的根哈希) Commit 到主鏈上演训,讓主鏈清楚子鏈根哈希的狀態(tài)。這就是周期性提交

不過這樣會存在問題

如果記賬節(jié)點放出來的信息是假的呢爽冕,他提交的根哈希和這條鏈實際產(chǎn)生的根哈希是不對應的仇祭,因為主鏈其實也不清楚,這個時候怎么辦颈畸?

我們就需要提供一個數(shù)學證明乌奇,證明它在同一個區(qū)塊高度簽名的數(shù)據(jù)都是一樣的,比方說 Validator 如果在這個區(qū)塊高度發(fā)出的信息是 A 眯娱,而 Commit 到主鏈上的區(qū)塊信息是 B 礁苗,我能通過這種數(shù)學形式發(fā)現(xiàn)記賬節(jié)點是作惡了的,這樣就可以罰沒它主鏈上的押金徙缴。

但是如果子鏈壓根就不公布區(qū)塊信息试伙,這樣就沒有作惡證明提交到主鏈上嘁信,這個時候怎么辦?

這個時候 Plasma 提供了一種 Safe Exit 的機制疏叨。

每一個在子鏈上的節(jié)點潘靖,如果意識到子鏈有可能作惡,而且他自己沒辦法證明子鏈作惡的時候蚤蔓,這個機制能夠允許參與者退出卦溢。參與者提交他最后的一個的可信證明,有多少余額秀又,就把這個余額提現(xiàn)到主鏈上单寂,保證資金的安全

這個是 Plasma 的核心理念,Plasma 不會為了速度犧牲安全吐辙。你可以在子鏈上自由交易宣决,并且在子鏈作惡之前,把幣提走昏苏。

MVP ( MInimal Viable Plasma )

這個是 Plasma 最早的實現(xiàn)尊沸,它采了取一條 UTXO-Based 的鏈作為子鏈,由于它需要子鏈不是概率確認的鏈捷雕,所以它一般采用的是 PoA 共識算法(或者 BFT)

所有的 Plasma 的核心都是在退出和挑戰(zhàn)的機制上椒丧,我們這里也著重強調一下它的退出和挑戰(zhàn)機制。救巷。


MVP 機制

我們從圖可以很清楚的看到,用戶在主鏈上抵押了 Fungible Token 之后句柠,在子鏈上獲得了未花費的 UTXO浦译。

假設這個用戶花費掉了這筆 UTXO,分成了四筆輸出溯职,然后決定要退出精盅,要把這個錢提交到主鏈上,發(fā)起了一個 Start Exit谜酒。 同時他提交我擁有這個 UTXO 的證明叹俏,這個證明在默克爾樹的根哈希中,這個是由記賬節(jié)點定期的 Commit 到主鏈上的僻族。這兩個數(shù)值就可以證明這個用戶擁有這個 UTXO粘驰。

但是這樣就需要一個 Challenge 的過程,因為用戶提交的證明只能保證他在當前的區(qū)塊是擁有這個 UTXO 的述么,它并不能保證用戶之后不會花費這個 UTXO蝌数。

所以這里有一個比較長的挑戰(zhàn)期( Challenge Period),即一定的出塊時間度秘,讓別人去提交他作惡的證明 顶伞。

假設用戶在發(fā)起提現(xiàn)之后又給一個人轉了一筆賬,那么挑戰(zhàn)者是可以將這個轉賬交易記錄和這個默克爾樹哈希發(fā)送到主鏈上來證明用戶 Exit 是無效的,以此來罰沒用戶在主鏈上的押金唆貌,這個時候挑戰(zhàn)者就可以拿到這筆押金滑潘。

這里我們細化談談它的作惡和退出機制。

如果現(xiàn)在有一個密碼學證明锨咙,證明這個東西屬于張三语卤。因為這個交易打包在區(qū)塊里,這個區(qū)塊的默克爾樹哈希放在這個主鏈上蓖租。

但是如果一條線都是作惡的粱侣,出塊節(jié)點是作惡的,出塊節(jié)點做一個假的交易蓖宦,做了一個假的區(qū)塊和一個假的默克爾樹哈希齐婴,放到了根鏈上,這個時候根鏈實際是無法判斷的稠茂,如果我不把這個區(qū)塊公布出來柠偶,它是不知道我作惡的證據(jù)的。

這個時候用戶如果需要退出睬关,怎么才能保證用戶能夠正常退出呢诱担?

假設我作為一個作惡節(jié)點,知道你們要退出电爹,我可以先生成一批金額特別大的交易蔫仙,優(yōu)先你們退出,假設你要提現(xiàn) 100 個以太丐箩,我就可以偽造一個 101 以太的提現(xiàn)交易摇邦,這個等于說拿著你的錢就跑了。

因此 MVP 設置了一個優(yōu)先級的設計屎勘。每一筆進入 Plasma 的交易都會有一個優(yōu)先的序號施籍,高位是區(qū)塊高度,然后是交易在區(qū)塊里面的次序和這個 Output UTXO 在這個交易中的次序概漱。這樣就形成了一個全局唯一的序號丑慎,所有人按照這個序號退出遭殉。

如果某一個時刻大家開始發(fā)現(xiàn)節(jié)點開始作惡赶掖,要退出,一定是早期交易的區(qū)塊先退出剿涮,后期作惡的區(qū)塊后退出姻灶,我作惡區(qū)塊的意義不大铛绰。

但是這里還有一種作惡的方法。

如果誠實的交易被礦工打包到了作惡交易的后面产喉,因為礦工是可以選擇打包次序的捂掰。在這個錯誤的塊里面敢会,誠實的交易打包到錯誤的交易后面,導致誠實交易的退出優(yōu)先級低于作惡交易的優(yōu)先級这嚣。

1 個大戶把 1000 個以太打入到 Plasma 鏈上鸥昏,作惡礦工在存入的這個區(qū)塊里優(yōu)先造了一個假交易,然后放到區(qū)塊里面姐帚,先把 1000個 以太提走了吏垮,大戶是沒有辦法的

這里的解決辦法是對每個存款( Deposit )都做二次確認,第一次是存進去罐旗,確認這筆交易被打包在 Plasma 的區(qū)塊里膳汪,第二次是在用戶把幣存進去,確認存進去的區(qū)塊以及之前的區(qū)塊都是真實九秀、合法的情況下遗嗽,再發(fā)一筆交易,去確認這個交易是正確的鼓蜒。

在做了兩次確認痹换,證明交易都是真實之后,用戶再去退出就能夠安全退出了都弹。

More Viable PlasmA

不過 MVP 每一筆存儲交易多了一次簽名之后娇豫,對系統(tǒng)來說還是開銷很大的,所以有人提出了 More Viable Plasma畅厢。

它退出的次序不是以打包的次序為準冯痢,而是以退出的時候提交的 UTXO 的證據(jù),UTXO 輸入最早的一個 Input( Input 可能有四五個)框杜,哪個早就哪個先退出系羞。

這個的好處在于,早的 Input 一定是已經(jīng)被打包到交易區(qū)塊里面了霸琴,如果這個 Input 是假的,那么在 Input 發(fā)生的那一刻就已經(jīng)有人開始做退出了昭伸,這個是不可能的梧乘。

因此這個時候我可以假設這個 Input 是真實的,越早的 Input 它的真實性就越高庐杨,我退出的時候就按照 Youngest 的 Input 退出选调,它的保障性最高, 這個是 More VP灵份。

Plasma Cash

Plasma 還有一個實現(xiàn)叫做 Plasma Cash仁堪。

MVP 的缺點是,每一個人填渠,不光是礦工弦聂,都要時刻緊盯著這條鏈鸟辅,如果有人作惡,就趕緊退出莺葫。

而且一旦出現(xiàn)問題匪凉,退出還需要提供相應的數(shù)學證明。數(shù)學證明還得從本地同步的區(qū)塊中獲取捺檬,因為別人同步的可能都是假的再层,這就要求你還要同步區(qū)塊。

這一系列的過程對用戶是很不友好的堡纬。

這個時候有人就提出了 Plasma Cash聂受,它最大的特點是用戶只需要關注自己的數(shù)據(jù)就好了。

它采用的是 Non-Fungible Token 的存儲機制烤镐,它的 Deposit 進來之后是不分割的蛋济,每一筆存款,比方說 1號是 10 個以太职车,2 號是一只貓瘫俊,它們被打包成一個 Non-Fungible Token 放進來,系統(tǒng)給每一個打包的包裹一個序號悴灵,如圖所示扛芽,這個系統(tǒng)現(xiàn)在是有八個存款,每一個存款都是一個包裹积瞒。

Plasma Cash 機制

假設三號包裹原來的持有人是 A川尖,他把這個包裹轉給了 B,在這個區(qū)塊里茫孔,它就包含了一個 A 到 B 的交易來指向三號包裹叮喳,六號包裹是 D 到 B,把所有權轉向了 B缰贝,剩下的包裹沒有動作馍悟。

而用戶只需要關心和自己有關的數(shù)據(jù),像圖中的 A 剩晴,他只需要關注 3 號和 5 號包裹锣咒,不需要關注其他人,因為所有人的錢是自成體系的赞弥,不是像 Fungible Token 捆在一起的毅整,所以像 6、7绽左、8 該退就退悼嫉,因為不是 A 的東西。

不過這里有一個問題拼窥,比如說 Bob 擁有 7 號包裹戏蔑,要轉給 A蹋凝,但是由于 A之前沒有和 7 號包裹交易,他只關注自己辛臊,他是不了解 7 的歷史的仙粱,所以Bob 給 A 轉賬的時候其實 A 是不確定對方是否擁有 7 號包裹的所有權的。

而 Bob 要證明擁有 7 號包裹的所有權彻舰,就必須把 7 號資產(chǎn)從創(chuàng)生到現(xiàn)在所有的資產(chǎn)伐割、每一個默克爾樹和默克爾樹哈希都給 A,來證明這個塊是真實屬于 Bob 的刃唤。

所以 Plasma Cash 轉賬的時候數(shù)據(jù)量是很大的隔心。

Plasma Cash 要求退出的時候,需要把最后關于這個 Token 的兩筆交易上傳尚胞,比方說 A 轉給 B硬霍,B轉給 G,而G要退出笼裳,那么 G 就把這兩筆交易提交到子鏈上退出唯卖,退出其實不復雜,復雜的是 Challenge躬柬,其 Challenge 主要有三種拜轨。

  • 假設 A 退出之后又花費了資產(chǎn)

A 提出申請之后又把這個錢轉給了別人,這個時候 Challenger 可以把這個這個交易提交給主鏈允青,讓 A 退出失敗

  • 雙花交易

A 和礦工串通同時轉給 G 和 F橄碾,Challenger 可以采取和 1 相同的方式,讓 A 失敗颠锉。

  • 歷史的證明

因為退出的時候只提供最后的兩筆交易法牲,而它們可能都是假的,這個時候 Challenger 可以任意指定一個塊琼掠,要求對方證明是怎么到這個狀態(tài)的拒垃,以保證系統(tǒng)安全性。

Plasma Cash 的挑戰(zhàn)很復雜瓷蛙,轉賬證明也很復雜恶复,優(yōu)點是無需關心別人的狀態(tài),只需要關心自己速挑。

Plasma Debt

Plasma Debt 和 Plasma Cash 比較像,轉賬副硅、證明和挑戰(zhàn)都很類似姥宝,其區(qū)別是 Plasma Cash 里每一個包是一個 Non—Fungible 的資產(chǎn),而在 Debt 里每一個包是一個狀態(tài)通道恐疲,這意味著和狀態(tài)通道的交互可以不按整個包來交互腊满。

比如說我有 100 個以太套么,在 Plasma Cash 中,這 100 個以太我只能一起轉給張三或者一起轉給李四碳蛋,但是在 Debt 里面胚泌,這100個以太,我可以轉一部分給張三肃弟,轉一部分給李四玷室,不用全轉。

每一個 Token 都是使用者和 Plasma 鏈的運營者的一個小型狀態(tài)通道笤受,這個狀態(tài)通道也可以按照 Plasma Cash 的方式進行流轉穷缤,這樣可以讓用戶可以不需要把資產(chǎn)當成 Non-Fungible Token,還可以進行比較高效的運轉箩兽。

不過狀態(tài)通道按照 Cash 方式進行流轉還是會和 Cash 面臨一樣的問題津肛,轉賬證明很復雜,因為它依舊需要所有的歷史交易汗贫。

Plasma Leap

Plasma Leap 是在 MVP 的基礎上做的身坐,MVP 是一個類似比特幣的一個 UXTO 鏈,在比特幣里面是有一個解鎖腳本來做智能合約的落包,Plasma Leap 就把這種類似比特幣的智能合約的理念帶到了 Plasma 里部蛇,引入了 P2SH 加鎖腳本,對于存儲結構進行了提升妥色。

在每一個交易里面是可以加一個 EVM 的二進制代碼作解鎖腳本的搪花,這個代碼是對應一個智能合約,由智能合約來進行解鎖嘹害。

不過這個智能合約不像以太坊上的智能合約撮竿,那么完整完善,它做的事情很簡單笔呀,就是證明用戶能不能花費這個 UTXO幢踏,就像比特幣一樣,用戶能不能花費它许师,什么時候花費它房蝉,它不能做更復雜的智能合約。

鏈下計算( Off Chain Computation )

以太坊聲稱要做計算機微渠,EOS 要做全球操作系統(tǒng)搭幻,但無論是做計算機還是做操作系統(tǒng)都得正視計算這個問題,鏈上計算的開銷是非常大的逞盆,鏈上每一個 EVM 的 Code 計算需要全球計算機都算一遍檀蹋,才能得出結果,所以有人做了這么一個計算的擴展云芦,在鏈外做 Computation俯逾。

這個方式大致有兩種

TEE( Trusted Execution Environment )

第一種是在可信的執(zhí)行的環(huán)境中贸桶,把這個計算算出來,然后傳到鏈上去桌肴,再加上可信環(huán)境的一個證明皇筛。

這個證明不是計算結果的對和錯,而是證明這個計算是在安全的環(huán)境里運行的坠七。

可信的執(zhí)行環(huán)境在工業(yè)界相對來說還是比較成熟水醋,ARM 芯片是支持 TrustZone 方案的,我們用的蘋果和安卓手機的指紋灼捂,它的秘鑰信息都是存在 TrustZone 里面的离例。

它的優(yōu)缺點通過介紹其實也比較清楚了。
s
優(yōu)點

  • 隱私性很強悉稠,因為所有東西都是在黑箱子里面的宫蛆。
  • 性能也非常的高,單個機器執(zhí)行即可的猛,因為我信任的不是這臺機器耀盗,而是這個 Trust Zone。
  • 功能非常的靈活卦尊,不像 Plasma 比較單一叛拷,它可以做各種各樣的東西甚至是遠超過 EVM 的東西,因為 EVM 里面做一些加密運算是很難的

缺點

  • 黑箱計算引入了未知的風險

  • 依賴于硬件限制了它的擴展性岂却,因為不可能每個人都有一個符合硬件要求的設備來運行這套系統(tǒng)忿薇。

  • 系統(tǒng)的安全性是依賴于廠商的,廠商是可以在 Trustware 里面做任何的事情躏哩,這個也引入了風險.

所以這種依賴于安全執(zhí)行環(huán)境的 Layer 2 方案一般是由聯(lián)盟鏈或者是企業(yè)內部的鏈來使用的署浩。

Truebit

第二種叫 Trurbit,它解決的也是鏈外運算的問題扫尺,這個項目很有趣筋栋。

這里面有好幾個角色,包括用戶正驻、Solver 和 Challenger弊攘。


Truebit 機制

第一個是計算需求的提出者(用戶),這個計算需求是用 Truebit 的 VM 來描述的姑曙,在實際操作的時候襟交,Truebit 的 VM 是用 Rust 實現(xiàn)的

用戶可以選擇懸賞的方式找人來幫他做運算,運算的執(zhí)行人叫做 Solver伤靠。

Solver 把每一步的運算狀態(tài)都算成一個哈希折疊到默克爾樹里面婿着,在最后,Solver 把所有運算結果的默克爾樹的根哈希,以及運算的最終結果提交到區(qū)塊鏈上竟宋。

而 Challenger 需要自己算一遍生成結果,如果他發(fā)現(xiàn)算的結果和 Sovler 算的不一樣形纺,他就能根據(jù)錯誤信息找到哪一步或者是哪幾步錯了丘侠。Challenger 就能把這個狀態(tài)和狀態(tài)運行的指針上傳到區(qū)塊鏈上,挑戰(zhàn)這個 Solver逐样。

因為 Truebit 在鏈上擁有指令集蜗字,而且 State 可以證明它在原來的默克爾樹里面,于是鏈可以計算這個 State 加指令得到一個新的 State脂新,通過這個鏈可以開始判斷挪捕,這個 State 是 Solver 生成的 State 還是 Challenger 生成的 State,誰對誰錯争便。

Truebit 只需要鏈上的一步運算级零,就能夠證明所有運算是正確的還是錯誤的,它能把普通運算折疊成了最關鍵的計算滞乙,交給主鏈去運算奏纪,驗證。

鏈間通信( Interoperation )

跨鏈通信是一個跨鏈的技術斩启,它和 Plasma 不一樣序调,兩條鏈之間沒有特別強的主次關系,其子鏈和側鏈仍然有權利自己產(chǎn)生資產(chǎn)兔簇,自己運行发绢,然后通過某種協(xié)議和主鏈或者其他鏈進行跨鏈交互,大家進行數(shù)據(jù)互通垄琐。

它嚴格來說不是 Layer 1 的 Layer 2边酒,但是它對整個系統(tǒng) Scability 的提升是很有好處的。

接下來我簡單介紹兩個項目此虑,方便大家來理解甚纲。

Cosmos

Cosmos 的系統(tǒng)架構如圖所示,它中間有一個 Cosmos Hub朦前,周圍的叫做 Zone介杆,可以認為中間是一個交換鏈,周圍其他是子鏈韭寸。

Cosmos 機制

Zone 是用 Tendermint 來做的春哨,采用的是 BFT 共識以及區(qū)塊鏈框架,它也滿足 Instant Finality(即時終結性)恩伺,如果系統(tǒng)是少于三分之一的作惡節(jié)點赴背,它一定是正確的。

它引入了鏈間通訊協(xié)議( Inter-Blockchain Communication ,簡稱 IBC) 凰荚,這個是類似 Plasma 和 State Channel 的一個協(xié)議燃观。

它的簡單流程如下,A便瑟、B鏈都是 Zone缆毁。

  1. 用戶在 A 鏈上鎖了 10 個幣
  2. A 鏈10 個幣被鎖住的密碼學證明被提交到了 B 鏈上
  3. 如果被 2/3 的驗證者驗證通過,則它是有效的到涂。
  4. B 鏈上將會產(chǎn)生 10個幣

而之所以需要 Cosmos Hub 的原因是它能夠把 Zone 相互建立的IBC 的數(shù)量從 N^2 變成 N脊框,不過這個也是有前提的,即所有的 Zone 必須是 Instant Finality践啄,你給我一個證據(jù)浇雹,我就認為你的幣就鎖在那里,拿不出來了屿讽,它不能是概率確認的昭灵,不能這里生成,那里又推翻了聂儒。

但是由于比特幣和以太坊是概率確認的鏈虎锚,如果這樣 Cosmos 就連接不到它們上面了,所以它做一個Peg Zone衩婚,這是一個代理鏈窜护,給概率確認的鏈做了一個代理,這樣 Cosmos 就能和它們交互了非春。

Polkadot

相對 Cosmos 來說 柱徙,Polkadot 是非常完善的項目,但它的架構和 Cosmos 幾乎是一致的奇昙。

它的中間叫做 Relay Chain 护侮,是 Cosmos 中 Hub 的角色,周圍的 Para Chain 是 Cosmos 中 Zone 的角色储耐。

Para Chain 用的是 Parity Substrate 這么一個框架羊初,這個鏈是基于 BFT 的,所以也是 Instant Finality什湘,而這樣同樣會遇到連接概率確認的區(qū)塊鏈的問題长赞,所以它提了一個 Bridge Chain 這樣的概念,這個和 Cosmos 的 Peg Zone 是一樣的闽撤。

但是 Polkadot 的 Parity Substrate 相對 Cosmos 的 Tendermint 是做的是比較完善的得哆。

Polkadot 的創(chuàng)始人用 Rust 實現(xiàn)的 VM 以及 BFT 做了一個升級,增加了隨機選舉驗證節(jié)點的方式加速了共識協(xié)議哟旗,所以它的速度會非撤肪荩快栋操,而且它部署智能合約以及升級節(jié)點的能力也很強。而且 Substrate 上引入了相對其他鏈更完善的治理機制饱亮。

現(xiàn)在我們重點來說說它的安全機制矾芙,這個是和 Cosmos 區(qū)別非常大的。

它提了一個概念叫做共享安全池( Shared Pool Security )近上,在 Polkadot 里面蠕啄,它的記賬節(jié)點和出塊節(jié)點是混在一起的。

其中有幾個角色戈锻, Collator、Validator和媳、Fisherman 格遭、高階Validator、 Nominator留瞳。

其中 Collator 是做區(qū)塊的打包和收集和交易的驗證拒迅,但是它沒有權利把這個區(qū)塊給確認,即他不能把區(qū)塊寫到區(qū)塊鏈里面她倘,而把區(qū)塊寫到區(qū)塊鏈里是 Validator 來做的璧微。

Collator 是針對每一條鏈的,每條 Para Chain 都有一組有相對應的 Collator硬梁,但是 Validator 是整個全網(wǎng)公用前硫,是隨機選出來的。

假設 PareChain 有一組 Collator 生成了一個區(qū)塊荧止,這個區(qū)塊由哪些 Validator來驗證我們并不清楚屹电,它是隨機選的,而選出的 Validator 將會投票看區(qū)塊是否合法跃巡,只有合法才能寫到這個子鏈的區(qū)塊鏈里面危号。

而 Fisher Man 是用來監(jiān)督 Validator的,那些經(jīng)得起考驗的 Validator素邪,可以變成一個更高階的 Validator外莲,高階的 Validator 可以判斷這個 Fisherman 的監(jiān)督是正確還是錯誤,比方說 Fisherman 舉報這個 Validator 作惡兔朦,之后高階 Validator 會判斷它是不是真的作惡了偷线。

高階 Validator 的選舉需要滿足兩個要求,一方面 Fisher Man 沒有舉報過低階 Validator 烘绽,另外一方面 Nominator 會來提名誰能來當高階的 Validator淋昭,這是一個互相制衡的結果。

但是它是怎么制衡安接,它最新的設計里面還沒有公開翔忽,它只是大致實現(xiàn)了這樣的一個點英融。

通過以上,我大致介紹了一些 Layer 2 團隊和項目歇式,雖然有的嚴格意義上來說并不能稱作是 Layer 2驶悟,但是我也一并列了出來,方便大家理解材失。

目前的情況就是痕鳍,公鏈的創(chuàng)新和熱度已經(jīng)逐漸趨于平緩,各種 Layer 2 的新團隊在不斷地涌現(xiàn)龙巨,我覺得這也是一個正確的趨勢笼呆,Layer 1 本來就不需做這么多事情,做好去中心化和安全就可以了旨别。

這也是 Nervos 在做的事情诗赌,我們認為一個好的 Layer 1 只需要做好 Key State 的存儲, Key Computation 以及對 Layer 2 友好就夠了秸弛。

像 Turebit 只需要鏈上的一步運算就能夠證明所有運算是正確還是錯誤铭若,和我們認為 Layer 1 需要做好的 Key Computation 是非常一致的,而 State Channel 和 Plasma 中所強調的 State 也和我們的方案很契合递览。

希望文章對你有所啟發(fā)叼屠,以上。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末绞铃,一起剝皮案震驚了整個濱河市镜雨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌憎兽,老刑警劉巖冷离,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纯命,居然都是意外死亡西剥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門亿汞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞭空,“玉大人,你說我怎么就攤上這事疗我∨匚罚” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵吴裤,是天一觀的道長旧找。 經(jīng)常有香客問我,道長麦牺,這世上最難降的妖魔是什么钮蛛? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任鞭缭,我火速辦了婚禮,結果婚禮上魏颓,老公的妹妹穿的比我還像新娘岭辣。我一直安慰自己,他們只是感情好甸饱,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布沦童。 她就那樣靜靜地躺著,像睡著了一般叹话。 火紅的嫁衣襯著肌膚如雪偷遗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天驼壶,我揣著相機與錄音鹦肿,去河邊找鬼。 笑死辅柴,一個胖子當著我的面吹牛,可吹牛的內容都是我干的瞭吃。 我是一名探鬼主播碌嘀,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼歪架!你這毒婦竟也來了股冗?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤和蚪,失蹤者是張志新(化名)和其女友劉穎止状,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攒霹,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡怯疤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了催束。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片集峦。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抠刺,靈堂內的尸體忽然破棺而出塔淤,到底是詐尸還是另有隱情,我是刑警寧澤速妖,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布高蜂,位于F島的核電站,受9級特大地震影響罕容,放射性物質發(fā)生泄漏备恤。R本人自食惡果不足惜稿饰,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烘跺。 院中可真熱鬧湘纵,春花似錦、人聲如沸滤淳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脖咐。三九已至铺敌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屁擅,已是汗流浹背偿凭。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留派歌,地道東北人弯囊。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像胶果,于是被迫代替她去往敵國和親匾嘱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容