區(qū)塊鏈中的跨鏈詳細(xì)介紹
第0章 引言
跨鏈?zhǔn)墙衲陞^(qū)塊鏈里最火爆的技術(shù),主打跨鏈技術(shù)的項(xiàng)目多的很,超級(jí)明星cosmos和polkadot主戰(zhàn)場都是跨鏈。
但跨鏈到底是什么意思???
第1章 資產(chǎn)跨鏈
跨鏈技術(shù)很早就出現(xiàn)了,在2013年就大量出技術(shù)在討論比特幣的跨鏈。主要有三大跨鏈技術(shù),閃電網(wǎng)絡(luò)、側(cè)鏈和中繼。
在以太坊出現(xiàn)之前,區(qū)塊鏈很少談及“合約”,當(dāng)時(shí)只談“幣”,當(dāng)時(shí)的跨鏈技術(shù)都是指的是“資產(chǎn)(幣)的跨鏈”。資產(chǎn)跨鏈,或許應(yīng)該稱為幣跨鏈。
資產(chǎn)跨鏈簡單來說是兩條鏈的幣相互發(fā)給對(duì)方。但這怎么發(fā)?幣的跨鏈技術(shù)有很多,有雙向錨定(two-way-peg),哈希時(shí)間鎖,原子交換,資產(chǎn)質(zhì)押轉(zhuǎn)移,網(wǎng)關(guān),聯(lián)邦簽名等等。
雙向錨定是比特幣側(cè)鏈技術(shù)中非常重要的概念,用來實(shí)現(xiàn)比特幣主鏈幣和側(cè)鏈幣之間的跨鏈。雙向錨定能夠讓側(cè)鏈“知道”主鏈上的特定幣是否處于鎖定狀態(tài),并且依此鎖定狀態(tài)來解鎖或銷毀對(duì)應(yīng)數(shù)量的側(cè)鏈幣。這就好像BTC“跨”到了側(cè)鏈,或者反過,側(cè)鏈幣“跨”回了主鏈。
比特股是一個(gè)去中心化的交易所,里面可以交易比特幣,哎,這里面的比特幣是怎么出現(xiàn)的呢?用的就是網(wǎng)關(guān)技術(shù)。原理很簡單,就是用戶將比特幣發(fā)給一個(gè)叫“網(wǎng)關(guān)”的地方,然后“網(wǎng)關(guān)”會(huì)生成一個(gè)比特幣穩(wěn)定幣在比特股流通。用戶要提比特幣時(shí),就反過來,網(wǎng)關(guān)會(huì)銷毀比特幣穩(wěn)定幣,然后將相同數(shù)量的比特幣發(fā)給用戶。
幣的跨鏈有一個(gè)非常重要的概念叫“原子交換”。所謂的原子交換是指:A鏈上的一筆交易,和B鏈上的一筆交易,要么同時(shí)成立,要么同時(shí)不成立。
比如BTC和LTC,兩個(gè)人,張三愿意拿1BTC換李四的100LTC,為了防止毀約,雙方使用原子交換技術(shù)來完成幣的互換。
張三給李四一個(gè)LTC地址;李四給張三一個(gè)BTC地址。
張三使用原子交換協(xié)議構(gòu)建了一筆BTC交易,將1BTC發(fā)到李四的BTC地址。這筆交易成立的條件是張三的LTC地址收到李四發(fā)來的100LTC。
李四使用原子交換協(xié)議構(gòu)建了一筆LTC交易,將100LTC發(fā)到張三的LTC地址。這筆LTC交易成立的條件是李四的BTC地址收到了張三發(fā)來的1BTC。
上述兩筆交易要么同時(shí)成立,要么同時(shí)不成立,沒有任何一方可以做到在收到對(duì)方的幣后,不給幣就跑路。
這就是幣的跨鏈。本質(zhì)上幣的跨鏈并沒有真實(shí)的幣從一條鏈跑到另外一條鏈,只是幣在各自鏈上相互糾纏一樣鎖定和解鎖的狀態(tài)。
第2章 合約跨鏈
以太坊誕生后,區(qū)塊鏈開始大量討論智能合約。智能合約本質(zhì)上就是代碼,這些代碼可以依據(jù)區(qū)塊鏈上的特定數(shù)據(jù)來觸發(fā)執(zhí)行。
智能合約我們可以簡化理解成為一個(gè)函數(shù),輸入特定的參數(shù),代碼就會(huì)自動(dòng)觸發(fā)執(zhí)行,就能得出特定的結(jié)果,并且給出穩(wěn)定的輸出結(jié)果。
f(x)=y
f()就是合約代碼
x就是激活的代碼的條件
y就是合約執(zhí)行結(jié)果。
不跨鏈的智能合約,f(),x,和y都是在一條鏈上,不會(huì)出現(xiàn)在多條鏈上。
舉一個(gè)例子說明。
EOS的眾籌就是一個(gè)智能合約,這個(gè)合約有一個(gè)合約地址。
用戶可以將從自己控制私鑰的以太坊地址將ETH轉(zhuǎn)入這個(gè)合約地址。
EOS的眾籌合約每隔23小時(shí)就會(huì)計(jì)算合約地址一共收到多少ETH,并且計(jì)算出每個(gè)用戶的地址將獲得多少EOS代幣。
過了23小時(shí)后,用戶就可以向這個(gè)合約地址發(fā)起一次調(diào)用函數(shù),要求合約返回計(jì)算好的EOS代幣。
這個(gè)EOS的眾籌合約就會(huì)將相應(yīng)的EOS代幣發(fā)送到用戶的以太坊地址。
但以太坊上的智能合約,代碼是在以太坊區(qū)塊鏈上,要激活合約也需要在以太坊區(qū)塊鏈上發(fā)送特定的交易。
以太坊誕生后,整個(gè)區(qū)塊鏈社區(qū)又搞出了非常非常多的鏈,很多都帶有智能合約的功能。然后就有人提出來,我們能不能在一條鏈上發(fā)布一個(gè)智能合約,然后依據(jù)另外一條鏈的特定信息,來觸發(fā)這個(gè)智能合約來執(zhí)行特定的操作呢?
這就是合約(調(diào)用)跨鏈。
就比如,如果有人做發(fā)一個(gè)ICO,目標(biāo)是眾籌穩(wěn)定幣USDT(為了舉例,我們只考慮這是Omni版本的USDT),穩(wěn)定幣可以規(guī)避波動(dòng)性風(fēng)險(xiǎn)。項(xiàng)目方向外界公布收幣的BTC地址。
又因?yàn)楸忍貛派喜环奖銟?gòu)建代幣。項(xiàng)目方就在以太坊構(gòu)建ERC20代幣。項(xiàng)目方通過構(gòu)建一個(gè)支持跨鏈的智能合約來分發(fā)這些ERC20代幣。
用戶使用自己控制私鑰的BTC地址將USDT轉(zhuǎn)入項(xiàng)目方公布的BTC地址上。
智能合約可以讀取項(xiàng)目方公布的BTC地址的收幣狀態(tài),合約能夠讀取到用戶的付款地址,并且計(jì)算相應(yīng)的代幣數(shù)量。
用戶通過以太坊錢包,和自己的比特幣地址特定簽名向合約發(fā)起調(diào)用函數(shù)。
合約依據(jù)調(diào)用函數(shù)和計(jì)算結(jié)果,向用戶支付ERC20代幣。
你看,這種的合約就涉及到兩條鏈,這就是合約跨鏈。一條鏈上的智能合約,能夠讀取另外一條鏈上的特定信息,來執(zhí)行合約代碼,并給出確定性的結(jié)果。
第3章 跨鏈的應(yīng)用舉例
跨鏈有什么用呢?
第一場景是做去中心化的交易所。依賴幣可以跨鏈,支持用戶掛單,通過跨鏈合約來提供撮合,撮合成交后使用幣的跨鏈來完成幣的轉(zhuǎn)移。理論上是可以做到完成不依賴于特定的服務(wù)器的。
現(xiàn)在的去中心化交易所,以太坊和EOS上的交易所,并不是嚴(yán)格意義上的跨鏈去中心化交易所。都是ETH和ERC20之間的交易,和EOS和EOS上的代幣的交易。比特股是一個(gè)去中心化的交易所,通過網(wǎng)關(guān)發(fā)行穩(wěn)定幣的方式來將BTC等遷移到BTS內(nèi)網(wǎng)來交易。
第二個(gè)場景是資產(chǎn)抵押。某條鏈上的幣是否解鎖,取決于另一條鏈上的特定信息。
第三個(gè)場景是讀取鏈外數(shù)據(jù)(預(yù)言機(jī))的智能合約。比如賭球,有專門的鏈外數(shù)據(jù),即預(yù)言機(jī),提供球賽結(jié)果。然后用戶在以太坊上通過合約來對(duì)賭,雙方押幣進(jìn)合約,合約采集預(yù)言機(jī)的特定數(shù)據(jù)來判決賭資歸誰。
第4章 實(shí)現(xiàn)跨鏈生態(tài)
跨鏈這個(gè)概念的提出,會(huì)出現(xiàn)兩種情況。第一種情況是,在現(xiàn)有鏈之間相互跨。比如讓以太坊和比特幣相互跨。第二種情況是,我造一個(gè)標(biāo)準(zhǔn),以后大家按這個(gè)標(biāo)準(zhǔn)來設(shè)計(jì)新的鏈,所有這些新鏈就可以非常方便相互跨。
在跨鏈概念的早期,大家都想著第一種情況。最著名的就是閃電網(wǎng)絡(luò),中繼和側(cè)鏈三大技術(shù)。這種在現(xiàn)有鏈相互跨的生態(tài)里,是不會(huì)發(fā)一個(gè)叫“跨鏈幣”的幣的??珂溂夹g(shù)本生是不會(huì)發(fā)幣。比如閃電網(wǎng)絡(luò)就不是一種幣,只是一種技術(shù)。
但在現(xiàn)有的鏈之間相互跨,因?yàn)楦髯枣溤O(shè)計(jì)之處就沒有考慮過要你跨我我跨你的場景,所以跨鏈還是很難的。你看側(cè)鏈,中繼,閃電網(wǎng)絡(luò)等發(fā)展了那么多年,你有實(shí)際做過跨鏈嗎?沒有。
因?yàn)樵缙诘逆?,很多基本上就是?fù)制比特幣技術(shù)。比如LTC基本上就是復(fù)制了BTC。代碼都是復(fù)制的嘛,所以相互跨就有了理論上的依據(jù)。
在第一種情況發(fā)展了那么多年后,大家發(fā)明,哎呀,這玩意也搞不成啊。然后說,算了算了,看來我們還得想辦法搞點(diǎn)別的事。這就誕生了今年的跨鏈熱門。
現(xiàn)在的跨鏈熱門,其實(shí)都包含了造鏈技術(shù)。就是我自己設(shè)計(jì)一條區(qū)塊鏈,如cosmos,polkadot,vsystem。這些區(qū)塊鏈里都包含了一組造鏈協(xié)議,就是按照特定的標(biāo)準(zhǔn)來設(shè)計(jì)一條新的鏈。只要在這個(gè)標(biāo)準(zhǔn)下設(shè)計(jì)出來的鏈,那相互跨就非常容易了。這些標(biāo)準(zhǔn)協(xié)議就是跨鏈的基礎(chǔ)設(shè)施。
當(dāng)然,在第二種情況下,并不是只有新造出來的鏈能相互跨,他們也會(huì)想辦法讓現(xiàn)有的鏈也加入到跨鏈生態(tài)中。也就是說,在第二種情況下往往是包含了第一種情況的。其中cosmos和polkadot都是使用類似于中繼的技術(shù)來實(shí)現(xiàn)和現(xiàn)有的鏈跨。
polkadot就將跨現(xiàn)有的鏈叫著中繼鏈。原理就是將原有鏈上的資產(chǎn)通過多重簽名來鎖定,然后在中繼鏈上發(fā)行對(duì)應(yīng)的穩(wěn)定幣。
第5章 結(jié)束語
未來是萬鏈互跨呢?還是萬鏈歸一呢?