捕蛇者说

前几天,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)