基于比特幣的智能合約是怎樣的
本文由 Lumi Blockchain Wallet 團(tuán)隊(duì)撰寫,詳細(xì)介紹了基于BTC的智能合約,具體內(nèi)容包括其發(fā)展現(xiàn)狀及現(xiàn)存的改進(jìn)方法。
以下為原文譯文:
人們常常將智能合約和以太坊聯(lián)系起來(lái)。的確,以太坊的成功主要便是建立在為各種Dapp開發(fā)和實(shí)施智能合約之上的。但并非所有人都意識(shí)到,其實(shí)在BTC上,我們也可以使用智能合約。
在了解基于BTC的智能合約之前,我們首先必須明白一個(gè)問(wèn)題,那就是既然我們已經(jīng)有了像以太坊這樣成熟的智能合約平臺(tái),為什么還要去使用BTC呢?
原因
拋開與生俱來(lái)的好奇心不說(shuō),相較于ETH,使用BTC作為交換對(duì)象可能對(duì)于我們中的某些人來(lái)說(shuō)已經(jīng)是一種優(yōu)勢(shì)了(幣種優(yōu)勢(shì))。另一方面,ETH作為一個(gè)智能合約平臺(tái),其Solidity代碼中的錯(cuò)誤很難被找到,再加之臭名昭著的DAO事件(2016年6月18日,黑客利用ETH智能合約漏洞,成功盜取并轉(zhuǎn)移了超過(guò)360萬(wàn)個(gè)ETH),因此在很多方面ETH還有改進(jìn)的空間。
而反觀BTC,黑客們能發(fā)現(xiàn)漏洞并攻擊的可能性非常之小,因?yàn)锽TC區(qū)塊鏈提供更高安全級(jí)別的操作環(huán)境。說(shuō)到底,安全性才是最重要的事情,畢竟,誰(shuí)會(huì)需要一個(gè)可以輕易被黑客入侵的多功能智能合約?
發(fā)展現(xiàn)狀&現(xiàn)存改進(jìn)方案
BTC交易中包含一種腳本語(yǔ)言,在你需要獲取一定數(shù)量BTC的時(shí)候,這種腳本語(yǔ)言可以定義所需的條件。當(dāng)下執(zhí)行大多數(shù)BTC交易時(shí)設(shè)置的條件是交易人能證明其擁有正確的私鑰,這也正是智能合約的基本工作方式。但是,它的作用遠(yuǎn)不止于此,它其實(shí)可以輸入很多更為復(fù)雜的腳本。
例如,你可以設(shè)置一個(gè)時(shí)間條件,來(lái)限制他人需要在規(guī)定時(shí)間內(nèi)才能獲取BTC,或者需要多個(gè)簽名,又或者將它們組合起來(lái)以制定更加復(fù)雜的編程合同。
如果要向基于BTC的智能合約添加更加高級(jí)的功能,則將會(huì)涉及到其他各種改進(jìn)措施。讓我們一起來(lái)看看哪些改進(jìn)措施已經(jīng)被使用了。
時(shí)間鎖
如果以常規(guī)方式進(jìn)行BTC轉(zhuǎn)賬,接收者可以在收到BTC之后立即花掉這些數(shù)字資產(chǎn)。但是如果你想讓接收者在某個(gè)日期之后才可以使用這些資產(chǎn),那你要怎么做?比如說(shuō),你想為你的下個(gè)假期攢一些錢,因此你決定將這些錢鎖起來(lái),直到你旅行的第一天才能解鎖。在這個(gè)例子中,一個(gè)特定的智能合約可以發(fā)揮很大的作用。但是這要如何實(shí)現(xiàn)呢?2015年,在BTC的某次軟分叉中,人們通過(guò)一個(gè)叫做CheckLockTimeVerify的操作碼引入了時(shí)間鎖的概念。這個(gè)操作碼允許轉(zhuǎn)賬資產(chǎn)受到時(shí)間鎖的限制。當(dāng)存在時(shí)間鎖時(shí),特定的資產(chǎn)就只能在某個(gè)特定時(shí)間之后才能被使用。
側(cè)鏈
側(cè)鏈能解決很多即存的問(wèn)題,比如可擴(kuò)展性和交易速度等問(wèn)題,事實(shí)上側(cè)鏈也可以幫助來(lái)實(shí)現(xiàn)基于BTC的智能合約。
簡(jiǎn)單來(lái)說(shuō),當(dāng)你想執(zhí)行側(cè)鏈上的BTC智能合約時(shí),你需要把BTC轉(zhuǎn)到一個(gè)特定的地址上,這些BTC會(huì)被自動(dòng)鎖定。而與此同時(shí),你將會(huì)得到同等數(shù)量的側(cè)鏈通證,你可以使用這些通證來(lái)執(zhí)行智能合約。操作完成后,你可以通過(guò)雙向綁定把這些通證發(fā)送回去,以此解鎖主網(wǎng)上的BTC。
MimbleWimble 協(xié)議
神秘的MimbleWimble協(xié)議建議實(shí)現(xiàn)一個(gè)值為0的、不能被花費(fèi)的輸出內(nèi)核。這樣你就不能對(duì)轉(zhuǎn)賬產(chǎn)生任何危害,因?yàn)槟惚仨氈揽苫ㄙM(fèi)輸出的數(shù)量。加上多重簽名之后,這個(gè)協(xié)議變得幾乎不可能被攻克。在早期探索MimbleWimble協(xié)議的時(shí)候,我們提到,不儲(chǔ)存轉(zhuǎn)賬輸入會(huì)使節(jié)點(diǎn)體積更小,從而更加的去中心化。這意味著更好的隱私性,因?yàn)槟悴荒軐⑥D(zhuǎn)賬的輸入和輸出對(duì)應(yīng)起來(lái)。這在執(zhí)行智能合約的時(shí)候極其重要。
Schnorr 簽名
在確認(rèn)轉(zhuǎn)賬的時(shí)候使用多重簽名而不是單個(gè)簽名很顯然會(huì)安全很多。使用Schnorr簽名替代當(dāng)前在BTC上使用的簽名模型會(huì)減小區(qū)塊的體積,并解決兩個(gè)主要問(wèn)題:轉(zhuǎn)賬積壓和高轉(zhuǎn)賬費(fèi)。這也能擴(kuò)展BTC智能合約的邊界,因?yàn)檫@可以讓多個(gè)權(quán)益相關(guān)者使用同一個(gè)通用簽名。想象一下,在一個(gè)智能合約執(zhí)行過(guò)程中,每個(gè)參與者都有各自獨(dú)立的公鑰。這些公鑰彼此關(guān)聯(lián),而每把公鑰也都被單獨(dú)創(chuàng)建的私人簽名保護(hù)著。
Schnorr簽名的一個(gè)優(yōu)勢(shì)是這些簽名體積更小,大多數(shù)計(jì)算其實(shí)在執(zhí)行轉(zhuǎn)賬前就完成了,從而大大增加了實(shí)際轉(zhuǎn)賬的速度。
轉(zhuǎn)賬的體積也取決于簽名數(shù)據(jù)的大小。所以如果簽名數(shù)據(jù)更多,區(qū)塊里能包含的轉(zhuǎn)賬就越少,轉(zhuǎn)賬速度也就更慢,費(fèi)用更高。使用ECDSA(BTC公鑰與私鑰背后的密碼學(xué)算法)的時(shí)候,如果你要從幾個(gè)不同來(lái)源給朋友發(fā)送1個(gè)BTC,每個(gè)來(lái)源都要有各自的簽名,合起來(lái)就會(huì)占用很多寶貴的區(qū)塊空間。如果使用Schnorr算法,你就只需要一個(gè)通用簽名,只占用很少空間。
結(jié)語(yǔ)
以上是關(guān)于BTC智能合約發(fā)展現(xiàn)狀的陳述,以及列舉了一些已經(jīng)將智能合約帶入BTC生態(tài)環(huán)境中的應(yīng)用實(shí)例?;贐TC的智能合約總的來(lái)說(shuō)是一個(gè)非常有趣,非常值得深入探索的領(lǐng)域。