【LongHash專欄】如何在比特幣上打造高級智能合約?

tsai
分享
【LongHash專欄】如何在比特幣上打造高級智能合約?

比特幣是目前為止世界上最流行的加密貨幣。無論是從流動性、鏈上交易量、還是其他任意指標看,比特幣的主導地位都不言而喻。

然而由於技術原因,開發人員常常更偏愛以太坊。因為以太坊在搭建各類應用和智能合約方面更加靈活。多年來,有許多平台都專注於開發高級智能合約功能,但顯然以太坊才是這個特定領域的領頭人。

就在這些技術在以太坊上如火如荼地開發的時候,比特幣逐漸成為價值存儲工具。有人試圖通過兼容以太坊的 RSK 側鏈TBTC ERC-20 代幣等技術,縮小比特幣與它的差距。

廣告 - 內文未完請往下捲動

但是另一種選擇是讓比特幣本身去升級腳本功能。這裡就需要用到Simplicity 語言。

什麼是Simplicity?

Simplicity 是一種全新的比特幣編程語言,在構建智能合約方面比當今的比特幣網路更加地靈活。而這個低級語言是由Blockstream 基礎架構的開發人員Russell O’Connor 創建的。

Blockstream的CEO Adam Back在近期關於這一話題的網路研討會上解釋道:「這是面向比特幣和包含Elements、Liquid (側鏈)等網路的新一代腳本語言。」

比特幣創建者中本聰在項目早期出於安全原因限制了比特幣腳本,而Simplicity 則是在保證安全性的同時讓比特幣腳本更加靈活的一次嘗試。

雖然並非圖靈完備,但對那些想要搭建以太坊上現有的大部分同類應用程序的開發者來說,Simplicity的表達能力已足夠豐富。

此外,Simplicity 的目標是讓開發者和用戶能夠更簡單地驗證智能合約部署是否到位、安全以及成本如何。

「處於安全考慮,我們確實希望在運行程序前先進行分析」,致力於撰寫開源軟件文獻的技術寫手David Harding在  Noded Bitcoin一期博客中說道,「對比特幣來說,我們不允許圖靈完備,這樣我們就可以靜態分析程序。Simplicity也不會達到圖靈完備,這樣你就可以靜態地分析程序。」

值得注意的是,上面提到的TBTC近期在以太坊主網發布沒多久就被創建者關掉了,因為他們在支持ERC-20代幣的智能合約裡發現了一個漏洞。這幾年來,以太坊智能合約已經爆出了不少安全問題,比如  Parity錢包的多簽漏洞以及臭名昭著的DAO事件

對比特幣來說Simplicity意味著什麼?

為了探索Simplicity 對比特幣的實質意義,LongHash 聯繫了Paradigm Research Partner 的Dan Robinson ,他對Simplicity 和以太坊都有研究。

Robinson 告訴我們:「Simplicity 將會是比特幣腳本功能的廣泛升級,而不是比特幣歷史上每次腳本升級的集合。作為一個’功能完備’的指令集,未來基本不再需要對比特幣腳本功能再次升級,當然為了提高一些功能的效率,有些升級還是需要的。」

可以從軟分叉的角度來看待這個問題。在過去,比特幣腳本的升級是通過軟分叉實現的,這需要達成社區共識才能在網路激活。如果啟用了Simplicity ,任何人都可以通過這個語言有效地實現一些常用的軟分叉變動,而無需網路節點更新比特幣共識規則。

這個方案有兩大作用:比特幣開發速度會比之前快,且對潛在的比特幣協議僵化( Ossification )問題也有一定的幫助作用。不過,最終比特幣協議僵化也是可取的,因為它有效反映了網路的基本規則,例如代幣政策等,這些是不會變的,所以能夠阻斷潛在的社會攻擊矢量對這個賦予比特幣價值的首要因素產生影響。

有趣的含義:「如果今天的比特幣部署了Simplicity這個腳本,那麼它將可以進行自我擴展」, Adam Back在Reddit上寫道,「Schnorr/Taproot 以及SIGHASH_NOINPUT等改進方案將可以直接實現。」

這裡Back 例舉的就是軟分叉方案,是啟用Simplicity 後,在不改變比特幣共識規則的前提下能夠做出的添加種類的一種。當問他對此怎麼看時,他澄清道:「我認為從技術上看,Taproot 擴展方案並不能如Pieter Wuille 所說的那樣在Simplicity 語言下實現——但Schnorr 可以。」

就Robinson 而言,如果Simplicity 真的添加到了比特幣上,那麼首先奏效的會是開發者們現在正在研究的一些改進,比如Eltoo 這類支付通道的設計、新的簽名算法、可能還有一些隱私方面的提升方案。

Robinson 補充道:「我比較期望看到的是能開發出一種代幣標準,類似以太坊的ERC-20 ,這樣就能見到一些新的應用,比如穩定幣、去中心化交易所以及槓桿交易等。」

Simplicity在以太坊和比特幣上的區別

如果比特幣主網上添加了 Simplicity 語言,那麼顯然會有人下這樣的結論:我們沒有理由繼續使用以太坊了。但是,即使比特幣有了 Simplicity ,它和以太坊之間還是會存在明顯差異的。

Robinson 表示,「我之所以對Simplicity 感興趣,並不是因為它能讓比特幣變得更’以太坊’,而是能讓比特幣變得更’比特幣’。」

儘管使用了Simplicity ,但與以太坊以帳戶為基礎的設置相反,比特幣依舊會在UTXO (未花費交易輸出)模式下運行。

Robinson 解釋道:「UTXO 模型對於驗證人效率而言是絕佳的選擇,但它的權衡之處在於,它很難搭建出應用來滿足多人與合約交互的需求。」

此外,以太坊在開發平台網路效應方面已經取得了很大的進步,至少在智能合約方面如此。

「圍繞Simplicity 的工具和開發者生態系統可能要很長時間才能成型」,Robinson 說:「 Simplicity 並不是一種人類可讀的語言,因此可能需要有人去開發一種語言對其進行編譯,然後再供普通的開發者使用。此外,開發與UTXO 模式兼容的智能合約設計平台也需要進行大量的研究。」

從開發角度看,以太坊的網路效應正解釋了為什麼RSK (以太坊風格的比特幣側鏈)會將平台設計成與以太坊虛擬機兼容的原因。

但最終比特幣用戶是否還需要一些類似於以太坊網路上的加密貨幣應用,目前還不得而知。

Robinson 表示,「比特幣區塊容量的溢出比以太坊要大,其10 分鐘出一塊的速度可能也會將一些應用拒之門外。相應的,現在似乎並不清楚比特幣社區是否真的希望在比特幣上搭建這些應用(而不是把比特幣作為簡單的支付通道或金庫),因為這樣的應用可能會造成區塊鏈擁堵,甚至是提高51% 攻擊的收益率——要是引入了新的礦工挖礦價值的話。」

就Robinson的觀點而言,由於預言機問題尚存,很多比特幣用戶很早開始就對以太坊持批評態度。預言機問題在開發各類去中心化應用程序( DeFi )中已經成為人們越來越關注的問題。

Simplicity什麼時候可以落實?

需要注意的是,距離Simplicity 登陸比特幣主網可能還有很長一段路要走。但據預計,今年晚些時候或許能先看到這個腳本語言添加到Liquid 側鏈上。

這是壓上現實世界資產開始使用Simplicity語言的重要一步,但有些開發者,比如致力於比特幣隱私錢包的開發者,已經因為Liquid側鏈的聯邦模型而表現的興趣乏乏。

我們問Robinson 對此怎麼看,他表示:「我不認為Liquid 的聯邦本質會破壞交易。但這確實是會讓收穫大量開發者或用戶變得更艱難。」

根據比特幣核心長期貢獻者兼Blockstream聯合創始人Greg Maxwell (也就是Reddit上的nullc )的觀點,由於通過隔離見證( SegWit )升級引入了腳本多版本系統,Simplicity可以通過軟分叉的形式添加到比特幣上。當然,這是建立在能夠圍繞比特幣共識規則的更改建立起社區共識的假設上。

在Blockstream 工作的Grubles (化名)告訴我們,「我不確定如何通過軟分叉來部署它,但它不會代替主網以及Liquid 側鏈上的任何東西。它只會是一個能夠與現有地址類型(比如Legacy、P2SH、Bech32 )一起使用的新的地址類型。」

Grubles 補充道,他認為以太坊已經損害了「智能合約」的風評,因為有很多有問題的智能合約已經在該平台部署了很多年。因此,他們覺得一直關注著以太坊的比特幣用戶不太會願意看到智能合約在Liquid 上靈活運用。

「我認為這會是一個很有趣的議題,但還需要個幾年」,Back 補充道,「先例可以先在側鏈上驗證一下。」

本文來自合作夥伴LONGHASH