側(cè)鏈

1. ?概念

側(cè)鏈這一術(shù)語(yǔ)在Adam Back等人2014年左右的論文《用楔入式側(cè)鏈實(shí)現(xiàn)區(qū)塊鏈的創(chuàng)新》被首次討論蒜魄。論文描述了“雙向楔入側(cè)鏈”,這種機(jī)制通過(guò)證明你已經(jīng)“鎖定”了一些你擁有的貨幣,從而允許你在一個(gè)側(cè)鏈內(nèi)操作一些其他的貨幣驼唱。 這里要澄清一個(gè)誤解见擦。側(cè)鏈能增加規(guī)模簿透,但是這不意味著擴(kuò)展性沼头。側(cè)鏈在提升擴(kuò)展性上并不比增加區(qū)塊體積優(yōu)秀。側(cè)鏈帶來(lái)的是實(shí)驗(yàn)的能力书劝。能夠建立以不同的进倍,甚至可能更好的技術(shù)為基礎(chǔ)的網(wǎng)絡(luò)。

2. 術(shù)語(yǔ)

checkpoint檢查點(diǎn)购对,側(cè)鏈定期向主鏈發(fā)送merkle root

two-way-peg:雙向楔入猾昆,在主鏈鎖定一部分token,而允許在側(cè)鏈擁有其他的token

zk-SNARKs:零知識(shí)證明

3. ?plasma

Plasma是參考雷電網(wǎng)絡(luò)骡苞,并將其拓展到任何Tx的layer 2 擴(kuò)展方案垂蜗,目的是引導(dǎo)大家只將安全級(jí)別很高的部分放置在main chain上,其他低安全級(jí)別的部分放置在side chain/off-chain上面完成解幽,參考:https://www.bitrates.com/news/p/plasma-design-space-for-custom-blockchains-extending-off-the-ethereum-blockchain?

主鏈和側(cè)鏈的交互

通過(guò)smart contract交互

Plasma內(nèi)部是一個(gè)tree of blockchain



Plasma MVP

參考

http://www.reibang.com/p/b79eabd4e2a1

https://blog.csdn.net/ITleaks/article/details/82863285

https://ethresear.ch/t/minimal-viable-plasma/426


關(guān)鍵點(diǎn):

1. ?使用merkletree和 UTXO的存儲(chǔ)方式

2. ?Priority queue:提交exit的時(shí)候先放入鏈中贴见,先入的先處理,防止用戶退鏈的時(shí)候躲株,operator也提出退鏈

3. ? 利于攸關(guān)者的挑戰(zhàn):所有的退出請(qǐng)求都在隊(duì)列中保留7天片部,如果有人挑戰(zhàn)成功則退出失敗

數(shù)據(jù)結(jié)構(gòu)如下:

Block 只包含hash root和時(shí)間戳

struct PlasmaBlock {

? ? ?bytes32 root;

? ? uint256?timestamp;

}

transaction 是經(jīng)典的UTXO格式

class Transaction(rlp.Serializable): fields = [

('blknum1', big_endian_int),

('txindex1', big_endian_int),

('oindex1', big_endian_int),

('blknum2', big_endian_int),

('txindex2', big_endian_int),

('oindex2', big_endian_int),

('cur12', utils.address),

('newowner1', utils.address),

('amount1', big_endian_int),

('newowner2', utils.address),

('amount2', big_endian_int),

('sig1', binary),

('sig2', binary),]

SubmitBlock: 完成合約內(nèi)交易后,child chain(plasma contract作為root chain霜定, 其他區(qū)塊鏈作為child chain來(lái)實(shí)現(xiàn))調(diào)用該接口提交交易的hash root 和timestamp到plasma block chain档悠。

Deposit: 實(shí)現(xiàn)從主鏈向合約轉(zhuǎn)token的操作,計(jì)算操作的hash root望浩,寫入plasma block辖所,如下:

bytes32 root = keccak256(abi.encodePacked(msg.sender, address(0), msg.value));

startDepositExit:存款人從合約中提款到主鏈,輸入block index和amount后計(jì)算hash 和plasma block中的root比對(duì)磨德,如果一致加入到exit 鏈中缘回。

startExit:如果存款人轉(zhuǎn)賬給A,A提款到主鏈典挑,需要攜帶交易所在的block num和merkle proof切诀,合約計(jì)算后如果一致加入到exit鏈中

challengeExit:挑戰(zhàn)提款,如果之前A轉(zhuǎn)賬給B后搔弄,A就發(fā)起了startExit/startDepositExit,由于合約無(wú)法校驗(yàn)最終的token屬于誰(shuí)幅虑,所以需要先放入exitPriority queue,等待7天如果沒人挑戰(zhàn)就退出顾犹,否則B發(fā)現(xiàn)后(通過(guò)監(jiān)聽退出消息得知)使用該接口,輸入A轉(zhuǎn)賬B的交易信息后灯变,合約校驗(yàn)無(wú)誤后震贵,刪除A的退出請(qǐng)求。


Plasma CASH

參考

http://www.reibang.com/p/a1c53795ae20?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

https://blog.csdn.net/ITleaks/article/details/83106336

https://ethresear.ch/t/plasma-cash-plasma-with-much-less-per-user-data-checking/1298

關(guān)鍵點(diǎn):

用戶調(diào)用deposit將主鏈的ETH, ERC20, ERC721代幣生成coin郁妈,coin類似房產(chǎn),只能整體交易绍申,沒法分割噩咪,用戶在子鏈通過(guò)交易修改coin的所有權(quán)(更改coin的owner),可以簡(jiǎn)化驗(yàn)證极阅,因?yàn)橹荒茯?yàn)證交易是否存在胃碾,沒有每個(gè)用戶的余額信息,所以視為整體筋搏,不把這個(gè)依賴challenge來(lái)保證仆百。

使用sparse merkle-tree(相比標(biāo)準(zhǔn)的merkletree主要的優(yōu)勢(shì)是除了可以證明存在,還可以證明不存在奔脐,這樣可以防止operator 構(gòu)造假的block):https://medium.com/@kelvinfichter/whats-a-sparse-merkle-tree-acda70aeb837 和coin的存儲(chǔ)方式


數(shù)據(jù)結(jié)構(gòu)如下:

struct Coin {

Mode mode;

State state;

address?owner; // who owns that nft

address contractAddress; // which contract does the coin belong to

Exit exit;

uint256?uid;

uint256?denomination;

uint256?depositBlock;

}

類似MVP的PlasmaBlock

struct ChildBlock {

bytes32 root;

uint256?createdAt;

}

transaction結(jié)構(gòu)不同于MVP俄周,包含了coin的索引slot

struct TX {

uint64 slot;

address?owner;

bytes32?hash;

uint256?prevBlock;

uint256?denomination;

}

submitBlock(bytes32 root):完成合約內(nèi)交易后,child chain(plasma contract作為root chain髓迎, 其他區(qū)塊鏈作為child chain來(lái)實(shí)現(xiàn))調(diào)用該接口提交交易的hash root 和timestamp到plasma block chain峦朗。

deposit:實(shí)現(xiàn)從主鏈向合約轉(zhuǎn)token的操作,相比較MVP增加了uid的參數(shù)用來(lái)標(biāo)識(shí)token的類型排龄,需要將該種coin保存在合約中甚垦,并計(jì)算操作的hash root,寫入child block

startExit:不同于MVP涣雕,需要攜帶之前的該coin的交易和現(xiàn)在的交易艰亮,校驗(yàn)這兩個(gè)交易都存在后,將其放入隊(duì)列當(dāng)中挣郭,等待7天迄埃,如果沒有挑戰(zhàn),就可以通過(guò)下面的withdraw方法取出兑障,如果有挑戰(zhàn)且成功侄非,則將獎(jiǎng)勵(lì)發(fā)放給揭發(fā)者。相比MVP安全性更高一些

withdraw:在startExit之后沒有挑戰(zhàn)或挑戰(zhàn)失敗后流译,將token取出到主鏈逞怨,?

challengeBefore:提出一個(gè)比退出區(qū)塊早的證據(jù),只能證明提出者的來(lái)源的來(lái)源是自己福澡。


respondChallengeBefore:針對(duì)challenge叠赦,如果可以證明之后又轉(zhuǎn)給了自己就是勝利。

challengeBetween:可以證明提出者的來(lái)源有問題革砸。直接懲罰


challengeAfter:可以證明提出者后面已經(jīng)消費(fèi)除秀。直接懲罰


關(guān)于 RootStock


參考

https://github.com/rsksmart/rskj/wiki


采用側(cè)鏈+公證人的方式實(shí)現(xiàn)糯累,流程如下:

用戶A轉(zhuǎn)賬到federator賬戶(多簽賬戶)

Federation賬戶通過(guò)錢包內(nèi)置功能調(diào)用rsk-chain的bridge的智能合約的方法(receiveHeaders和registerBtcTransaction)將SPV證明發(fā)送過(guò)去

Rsk-chain,收到receiveHeaders之后保存header信息册踩,建立一個(gè)BTC的header鏈(類似錢包)泳姐,收到registerBtcTransaction后解鎖對(duì)應(yīng)固定匯率(1:10)的SBTC,并使用用戶A的公鑰生成賬戶(這樣用戶A可以直接控制)暂吉,將SBTC存入到該賬戶下

用戶A想要從rsk-chain取回BTC胖秒,需要調(diào)用智能合約方法releaseBtc,銷毀對(duì)應(yīng)數(shù)量的SBTC

在federator的BTC賬戶下投票(錢包是通過(guò)注冊(cè)的消息得知)慕的,確定將對(duì)應(yīng)余額返回給用戶A的BTC賬戶阎肝。

可以看出通信的關(guān)鍵在于federator賬戶的錢包。


關(guān)于BTC Relay

請(qǐng)參考

https://github.com/ethereum/btcrelay

BTC Relay是帶有Bitcoin SPV錢包功能的以太坊智能合約业稼,包括 Relayers社區(qū)成員:Relayers為BTC Relay提供新的比特幣區(qū)塊頭(header)盗痒,當(dāng)交易在區(qū)塊鏈進(jìn)行驗(yàn)證或者區(qū)塊頭被檢索的時(shí)候蚂蕴,Relayer會(huì)獲得一筆手續(xù)費(fèi)作為獎(jiǎng)勵(lì)低散,Relayer提交區(qū)塊頭的這種循環(huán)——然后處理比特幣支付和獎(jiǎng)勵(lì)Relayer手續(xù)費(fèi)的應(yīng)用程序——使系統(tǒng)能夠自立和自治,如下圖:



BTC-Relay使用場(chǎng)景舉例

1. Alice和Bob同意使用在以太坊上的BTCSwap合約來(lái)進(jìn)行交易骡楼,Alice要買Bob的eth熔号,Bob先把他的 eth發(fā)送到BTCSwap合約?

2. Alice向Bob發(fā)送bitcoin,?

3. Alice通過(guò)bitcoin的交易信息以及BTCSwap合約地址來(lái)調(diào)用btcrelay.relayTx()鸟整,btcrelay通過(guò)verifyTx接口驗(yàn)證這筆交易通過(guò)后就觸發(fā)BTCSwap合約里面的processTransaction方法

4. BTCSwap合約在被觸發(fā)后確認(rèn)這個(gè)btcrelay地址是一個(gè)合法地址引镊,然后釋放之前Bob的eth

大致流程圖如下:



可以看出該方案中,bitcoin和ethereum的通信時(shí)依靠轉(zhuǎn)帳者調(diào)用合約實(shí)現(xiàn)的篮条,并且嚴(yán)重依賴relayer不斷通過(guò)bitcoin的header弟头。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市涉茧,隨后出現(xiàn)的幾起案子赴恨,更是在濱河造成了極大的恐慌,老刑警劉巖伴栓,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伦连,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡钳垮,警方通過(guò)查閱死者的電腦和手機(jī)惑淳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)饺窿,“玉大人歧焦,你說(shuō)我怎么就攤上這事《且剑” “怎么了倚舀?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵叹哭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我痕貌,道長(zhǎng)风罩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任舵稠,我火速辦了婚禮超升,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哺徊。我一直安慰自己室琢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布落追。 她就那樣靜靜地躺著盈滴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪轿钠。 梳的紋絲不亂的頭發(fā)上巢钓,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音疗垛,去河邊找鬼症汹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贷腕,可吹牛的內(nèi)容都是我干的背镇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泽裳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瞒斩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涮总,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胸囱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后妹卿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旺矾,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年夺克,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了箕宙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铺纽,死狀恐怖柬帕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤陷寝,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布锅很,位于F島的核電站,受9級(jí)特大地震影響凤跑,放射性物質(zhì)發(fā)生泄漏爆安。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一仔引、第九天 我趴在偏房一處隱蔽的房頂上張望扔仓。 院中可真熱鬧,春花似錦咖耘、人聲如沸翘簇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)版保。三九已至,卻和暖如春夫否,著一層夾襖步出監(jiān)牢的瞬間彻犁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工慷吊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留袖裕,地道東北人曹抬。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓溉瓶,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親谤民。 傳聞我的和親對(duì)象是個(gè)殘疾皇子堰酿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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