捕蛇者說

前幾天,laike9m 路過紐約的時候來看我,b1 帶我們跑去吃了紐約唐人街傳說中的西安名吃,席間我們接著 之前在推上的話題,我提到我想在 2020 年 host 一個自己的 Podcast,來廣播一些自己的所見所思,為此或許我需要先參加一些 Podcast 來了解如何工作。

laike9m 是我之前 在上海的同事,恰好他目前正在經營著一個叫做「捕蛇者說」的 Python Only 的 Podcast「捕蛇者說」是唐宋八大家之一的柳宗元所寫的一篇文章,大意是「苛政猛於虎」。(當然其實並沒什麼聯繫,大概就跟「康熙來了」差不多~)

說到 Python,我們在生產環境中的確實有使用 Vyper —— 一種 Pythonic 的 Solidity 替代品,除此之外,Ontology 的智能合約也是直接使用 Python 的。之後 laike9m 又提到,他們現在的 bottleneck 主要是剪輯,而且 queue 很慢,所以可能遙遙無期,我就乾脆寫出來好了。。。

智能合約和形式驗證

簡單來說,智能合約就是跑在區塊鏈上的一段會自動執行的代碼。合約和用戶的錢包賬戶一樣,都是一個具有地址的賬號,所不同的是,錢包用私鑰控制,合約用預先定義好的代碼控制。舉例來說,最簡單的生產環境中的智能合約可能是分錢(escrow),每當有人往這個合約中打錢時,他就會自動把錢按照一定的比率,分給 A 和 B 兩個錢包賬戶。

去年的時候,垠王 寫過一篇有趣的文章,討論過以太坊和智能合約。

奢望過多的功能其實是一種過度工程(over-engineering)。花費精力去折騰智能合約系統,可能會大大的延緩數字貨幣真正被世界接受。
—— 垠王,智能合約和形式驗證

可以看到王垠的觀點相當之保守,與 我的觀點 截然相反,我認為表達力才是語言的生命所在,哪怕不那麼安全,不那麼規範(論綜合語的優勢),畢竟「問渠哪得清如許,為有源頭活水來」嘛。

但是在智能合約開發的領域,安全性是至關重要的(因為你在跟用戶的錢打交道)。智能合約的安全性問題也確實層出不窮,其中,最著名的兩個例子,或許就是 The DAO Hack 以及 Parity Multisig Wallet Hack 了。

Story of DeFi, How it Started, Where It Stands Now, DeFi Definition Revisited 中,Felix Feng 提到了 DeFi 領域的四個挑戰,分別是:

一,是用戶增長的瓶頸。
二,價值捕獲的迷思。
三,未驗證的去中心化路徑。
四,智能合約相關的潛在風險。

其中最後一個就是安全性問題。而 Vyper 語言正是在這種背景下誕生的。簡而言之,Vyper 是在犧牲 Solidity 表達力的前提下,儘可能的增加安全性上的考量,畢竟 Complexity is the enemy of security.

最著名 在生產環境中 Vyper 的例子大概就是 Uniswap 了。Uniswap 是一個以太坊上運行的去中心化交易所,是 DeFi 領域增長最快的項目之一,參見 DefiPulse。令人驚訝的是,他的核心代碼大概只有 20 行左右。

除此之外,PlasmaSharding1.0Casper FFG 也都使用 Vyper 進行了開發。

(WIP)