比特幣有了智能合約以后會(huì)怎么樣
11 月 16 日,波卡生態(tài)技術(shù)流項(xiàng)目 ChainX 即將發(fā)布全球首個(gè)比特幣智能合約平臺(tái)。這將帶來(lái)什么樣的改變?比特幣的智能合約可以做什么呢?PolkaWorld 特地請(qǐng)到了 ChainX 核心開(kāi)發(fā) Aten 來(lái)為大家解答。
1、比特幣作為一種加密貨幣,為什么需要合約功能?簡(jiǎn)單交易它不就可以嗎?
這是個(gè)好問(wèn)題,其實(shí)我們可以來(lái)回顧一下比特幣的交易和普通轉(zhuǎn)賬交易有什么區(qū)別。
實(shí)際上比特幣的交易并不是A轉(zhuǎn)賬給B這一條記錄這么簡(jiǎn)單,比如銀行,支付寶轉(zhuǎn)賬,就是A-》B的轉(zhuǎn)賬記錄。但是實(shí)際上比特幣在A和B之間的轉(zhuǎn)移,本質(zhì)上是達(dá)成了一個(gè)條件才轉(zhuǎn)移的。這個(gè)條件可以設(shè)置成多種多樣。稍微對(duì)比特幣技術(shù)有了解的人應(yīng)該知道,比特幣交易的構(gòu)成要由上一筆交易的txout和這筆交易的txin匹配后才是合法的,因此這里的txout中含有的可以相當(dāng)于是一個(gè)問(wèn)題的謎面,而txin含有的就是這個(gè)問(wèn)題的謎底。
只是大部分情況下txout中的謎面會(huì)設(shè)置成公鑰(或地址),而轉(zhuǎn)賬提供的txin的謎底是簽名。
顯然,這里的謎面和謎底可以設(shè)計(jì)成多種多樣,比如設(shè)計(jì)成一個(gè)問(wèn)題的答案,或者某種特殊的條件,亦或者存在一定邏輯的代碼。
這實(shí)際上在我看來(lái)是比特幣給交易系統(tǒng)所帶來(lái)的一個(gè)革新,也就是比特幣腳本。更詳細(xì)可參考我寫的這篇文章:
https://zhuanlan.zhihu.com/p/27512347
這種比特幣的腳本“自動(dòng)化”地執(zhí)行著一段代碼,使得交易的過(guò)程能夠去第三方的自動(dòng)化處理一些邏輯。但是由于比特幣腳本過(guò)于簡(jiǎn)單且底層,并且在utxo模型下,所以大家目前看到比特幣腳本并非這么廣為人知,也沒(méi)有產(chǎn)生很多奇妙的運(yùn)用。
因此從以太坊開(kāi)始提出了在狀態(tài)模型下的圖靈完備智能合約體系。在這個(gè)體系下,utxo模型的腳本在功能實(shí)現(xiàn)上屬于狀態(tài)模型智能合約體系的一個(gè)子集,因此通過(guò)智能合約體系可以完成遠(yuǎn)超比特幣模型下可以完成的事,也是目前Defi、通證經(jīng)濟(jì)等概念的基石。正是由于智能合約的能力,可以給比特幣帶來(lái)新的運(yùn)用場(chǎng)景,能在去中心化的體系下做到更廣泛的事情。
2、智能合約可以給比特幣帶來(lái)什么?
我認(rèn)為有以下兩點(diǎn):
1. 使得比特幣更智能化
正如剛才提到的,若只能交易,則只能完成價(jià)值轉(zhuǎn)移,但是沒(méi)法 “智能地” 完成價(jià)值轉(zhuǎn)移。但是比特幣腳本功能有限,現(xiàn)在用的稍微復(fù)雜一些的場(chǎng)景就是多重簽名,或者設(shè)計(jì)一些謎題。要是想實(shí)現(xiàn)抵押借貸、投票、拍賣等等一系列在以太坊中出現(xiàn)的場(chǎng)景是不可能的。
2. 更好的發(fā)揮出比特幣的價(jià)值屬性
一個(gè)東西的真正的價(jià)值要體現(xiàn)在流通上,只有流動(dòng)才能帶來(lái)真正的價(jià)值。正如假設(shè)你有100塊錢人民幣,如果你不花出去,只是拿在手上,那它就是一張廢紙。只要當(dāng)他真正交換給其他人,流動(dòng)出去的那一瞬間,才會(huì)產(chǎn)生它真正的價(jià)值。也就是說(shuō)錢這個(gè)東西,只有花的(流通的)時(shí)候才是錢。而智能合約就是提升流通性很重要的一種手段,因?yàn)橹悄芎霞s比起比特幣腳本能夠賦予的功能不是一個(gè)級(jí)別的。對(duì)于已有的,可以把以太坊上實(shí)現(xiàn)的東西拿過(guò)來(lái)在比特幣這邊再實(shí)現(xiàn)一遍,對(duì)于未來(lái),可以設(shè)計(jì)出更豐富的Dapp應(yīng)用。
3、我們已經(jīng)有以太坊的智能合約,為什么還需要比特幣的智能合約?
共識(shí)是一個(gè)很神奇的東西,它代表著大部分人的意志。正如目前雖然以太坊比起比特幣能做更多的事情,但是比特幣的市值就是遠(yuǎn)超以太坊。因此比特幣和以太坊兩者所代表的價(jià)值符號(hào)是完全不一樣的,在“共識(shí)”未發(fā)生顯著變化的情況下,其背后代表的價(jià)值的符號(hào)就是顯然不同的。這就是為什么比特幣才是“真正的共識(shí)”,而以太坊從未持有過(guò)這一名聲。因此我的第一個(gè)觀點(diǎn)就是,以太坊和比特幣其在共識(shí)上的價(jià)值是完全不一樣的,但是以太坊有比特幣沒(méi)有的東西,而區(qū)塊鏈又是一個(gè)個(gè)價(jià)值孤島,因此就要把以太坊好的東西拿過(guò)來(lái)在比特幣上用。
第二個(gè)觀點(diǎn)是當(dāng)前鏈之間分工越來(lái)越明確,譬如BTC發(fā)揮數(shù)字黃金作用,流入其他鏈作為基礎(chǔ)貨幣發(fā)揮價(jià)值存儲(chǔ)作用,Libra可以進(jìn)入其他鏈平臺(tái)發(fā)揮交易媒介作用,Zec可以幫助其他鏈增強(qiáng)隱私功能,以太坊提供了智能合約,鏈和鏈之間可以有所分工,各自專注于專業(yè)化和垂直化。但是作為本幣的價(jià)值在流動(dòng)到別的鏈上時(shí)要經(jīng)過(guò)交易所,總歸是會(huì)帶來(lái)各種麻煩的。因此若直接給比特幣賦予了智能合約,則跳過(guò)了中間價(jià)值轉(zhuǎn)換的過(guò)程。從商業(yè)角度,比特幣依然擁有最大的商業(yè)慣性力量。它在加密生態(tài)中的市場(chǎng)價(jià)值、流動(dòng)價(jià)值、商業(yè)價(jià)值、用戶基礎(chǔ)等方面依然無(wú)法替代。
我的第三個(gè)觀點(diǎn)是比特幣模型截止目前為止沒(méi)有太大的變化,因此需要給比特幣注入新興的力量。而智能合約正是給比特幣賦予新的力量的一種方式。這要是調(diào)動(dòng)起比特幣圈子用戶的方式。
4、比特幣的智能合約跟以太坊的智能合約有什么區(qū)別?
如果是模型上的話,我們ChainX這邊實(shí)現(xiàn)的智能合約在模型上和以太坊沒(méi)有特別大的差距,都是基于狀態(tài)模型的智能合約。不過(guò)在實(shí)現(xiàn)上以太坊的EVM使用的是以太坊的指令集,在效率上有一定折損,我們使用的WASM。在合約編寫上solidity限制很多,稍微復(fù)雜的合約就不是很好編寫。目前我們這邊使用的是Rust編寫合約,整體情況好得多。
5、ChainX 是怎么實(shí)現(xiàn)比特幣的智能合約功能?跟 Substrate 有什么關(guān)系嗎?
要分以下幾步說(shuō)明
1. 比特幣到ChainX鏈上
2. ChainX上具備合約的功能
3. 把比特幣引入到合約模塊中
其中我們ChainX已經(jīng)通過(guò)輕節(jié)點(diǎn)加信托托管的方式實(shí)現(xiàn)了第一步,也就是ChainX鏈上的X-BTC。因此實(shí)際上ChainX通過(guò)比特幣跨鏈的方式已經(jīng)把比特幣Relay到了ChainX上,也就是把比特幣的價(jià)值流通到了ChainX上。ChainX已經(jīng)能讓比特幣2s轉(zhuǎn)賬而不是等到10分鐘成為了現(xiàn)實(shí),實(shí)現(xiàn)了秒級(jí)轉(zhuǎn)賬。
第二步是在ChainX上增加智能合約的功能。我們的智能合約采用的是的Substrate的WASM合約模塊,并在其基礎(chǔ)上進(jìn)行更改裁剪,增加一些功能。Substrate的合約模塊設(shè)計(jì)了一個(gè)rent的存儲(chǔ)租賃模型,但是這個(gè)模型使用起來(lái)有很多困難,而且對(duì)用戶很不友好。我們移除了它。其余部分,我們更改了一些Substrate的底層,使得在ChainX鏈上能夠與Substrate合約模塊很好地兼容。
第三步我們考慮了很多,本身Substrate的合約模型就是只支持單資產(chǎn),而ChainX主打的是多資產(chǎn)方案。因?yàn)槲覀兙C合考慮開(kāi)發(fā)者的接收度、修改合約模塊的難度、工具的成熟度等方面,目前提出使用將ChainX的資產(chǎn)轉(zhuǎn)換為ERC20資產(chǎn)的方案。也就是說(shuō)我們將會(huì)在合約平臺(tái)中設(shè)立一個(gè)ERC20 Token,代表比特幣,用戶可以將自己的比特幣和ERC20 Token 比特幣互相轉(zhuǎn)換。
用戶持有X-BTC,可以發(fā)起一個(gè)交易,將自己的X-BTC轉(zhuǎn)換為合約模型中的ERC20的BTC。而只要向ERC20合約發(fā)起一個(gè)合約調(diào)用,就可以把ERC20的Token置換為X-BTC。
這里采用ERC20的方案主要還是考慮開(kāi)發(fā)者的便捷。因?yàn)橹耙蕴缓霞s的開(kāi)發(fā)者很多,他們操控資產(chǎn)的方式都是與ERC20的Token進(jìn)行對(duì)接,因此我們將合約中的比特幣設(shè)計(jì)成ERC20的接口,就可以讓開(kāi)發(fā)者以比較低的學(xué)習(xí)成本接入我們的合約平臺(tái)。
6、閃電網(wǎng)絡(luò)也是比特幣上的一種智能合約,跟 ChainX 提出來(lái)的智能合約有什么區(qū)別?
呃首先閃電網(wǎng)絡(luò)不是比特幣上的智能合約,它是把比特幣質(zhì)押到近似中心化系統(tǒng)中交換,以達(dá)到快速轉(zhuǎn)賬。相當(dāng)于剛才我提到的第一步。
而像RSK(rootstock)、WBTC、TBTC這些和我們才比較像。這些項(xiàng)目有一些和我們相似,一些差別比較大。RSK的智能合約看起來(lái)像是EVM改過(guò)來(lái)的,然后是pow挖礦,而我們用的是wasm,是pos,出塊速度也比它快;TBTC設(shè)計(jì)上高度復(fù)雜,探索了資產(chǎn)跨鏈技術(shù)在去中心化和安全上維度上新高度,但易用性上極其反人性;WBTC是雙向托管方案,而我剛才介紹過(guò),我們是單向輕節(jié)點(diǎn)Relay,單向托管,性質(zhì)也不一樣。
具體而言,對(duì)于他們之間的比較可以看這篇文章:
https://github.com/toxotguo/thinking/blob/master/%E6%B5%85%E8%B0%88%E8%B5%84%E4%BA%A7%E8%B7%A8%E9%93%BE.md
7、哪些應(yīng)用可以基于比特幣智能合約來(lái)開(kāi)發(fā)?
第一個(gè)是目前以太坊上開(kāi)發(fā)過(guò)的合約都可以移動(dòng)到ChainX上做一次,因此比如游戲、拍賣、競(jìng)猜等都可以,這些參照以太坊的合約應(yīng)用發(fā)展即可。另一方面,Defi也是一個(gè)非常熱門的點(diǎn)。因?yàn)楸旧砣绻皇荄efi在其他平臺(tái)上話,沒(méi)有很好的價(jià)值屬性,而在ChainX上,一方面可以使用pcx的價(jià)值,而另一方面就可以使用上比特幣的價(jià)值,會(huì)能給Defi的很多方案帶來(lái)真正的價(jià)值。比如新興的借貸、質(zhì)押等等。
8、ChainX 比特幣智能合約測(cè)試網(wǎng)大概什么時(shí)間發(fā)布?接下來(lái)怎么幫助開(kāi)發(fā)者來(lái)進(jìn)行比特幣智能合約的開(kāi)發(fā)?
我們目前將會(huì)在11月16日發(fā)布ChainX的合約測(cè)試網(wǎng),這個(gè)測(cè)試網(wǎng)預(yù)期將會(huì)集成好ERC20的比特幣方案。當(dāng)然后續(xù)根據(jù)開(kāi)發(fā)者的反饋我們也可能采取其他的比特幣集成方案。但是總之ChainX上有比特幣,然后ChainX上有合約,那么只要結(jié)合起來(lái)就可以。
我們?cè)?1月16日將會(huì)展示一些合約開(kāi)發(fā)的細(xì)節(jié),同時(shí)在發(fā)布會(huì)上會(huì)展示幾個(gè)用ChainX合約開(kāi)發(fā)的Dapp應(yīng)用作為案例,并放出相應(yīng)的文檔,包含調(diào)試節(jié)點(diǎn),合約開(kāi)發(fā),合約開(kāi)發(fā)案例,合約部署工具等等,對(duì)于這個(gè)新的測(cè)試網(wǎng),我們也會(huì)提供對(duì)應(yīng)的瀏覽器,api,錢包等。同時(shí)我們ChainX版的MetaMask也會(huì)在不久后放出,與合約開(kāi)發(fā)者聯(lián)動(dòng)。