首页  >  要闻 >  鲁克有约 >  Uniswap是如何诞生的?从编写智能合约到最终的发行……
Uniswap是如何诞生的?从编写智能合约到最终的发行……
 流动的沙    
2020年08月25日 10:25
  收藏
   

这是 Uniswap 的创造者海登·亚当斯(Hayden Adams)在2019年11月2日所写的一篇文章,正值 Uniswap 诞生一周年纪念日!Uniswap 是什么?它是如何诞生的?这篇文章给出了详细的解释……


Uniswap 的诞生

2018年11月2日,Uniswap 公开宣布并部署到以太坊主网。在激动人心、焦虑不安的时刻,我向我的200多名粉丝发布了声明。

Uniswap是如何诞生的?从编写智能合约到最终的发行-1

对很多人来说,这是他们第一次听说这个项目。但对我来说,这是我一年多努力的成果,并在此过程中提供了大量帮助。

Uniswap 改变了我的生活,今天(2019年11月2日)是它的生日。为了庆祝这一点,我想从 Uniswap 生日博客系列开始讲故事。

接受以太坊

2017年7月6日,我从大学毕业的第一份工作中被解雇了,当时我在西门子担任机械工程师。我感到沮丧和没有方向感,于是我告诉了我的朋友卡尔·弗洛尔施(Karl Floersch),当时他正在以太坊基金会(Ethereum Foundation)从事 Casper FFG 的研究。谈话内容大致是这样的:

海登:我刚刚被解雇了 :(

卡尔:恭喜,这是发生在你身上最好的事情了!机械工程是一个垂死的领域。以太坊是未来,而你还为时尚早。你的新命运是写智能合约!

海顿:我不需要知道如何编码吗?

卡尔:不是,编程很简单。无论如何,还没有人知道如何编写智能合约。以太坊、权益证明,可信计算等。

海顿:好吧……

卡尔抓住了我的低谷,说服我接受以太坊进入我的生活。我决定试一试,并在接下来的两个月里学习了以太坊、Solidity 和 Java 语言的基础知识。

为了扩大我的技能,我决定是时候做一个“真正的”项目了。在卡尔的建议下,我决定实现一个自动做市商,正如 Vitalik(V 神)在 reddit 上的文章和博客文章中所描述的那样。

事实证明

从10月到11月,我建立了一个概念证明,包括一个智能合约和我的第一个网站。该合约只有一个流动性提供者,允许简单的掉期交易。这就是它的全部荣耀:

Uniswap是如何诞生的?从编写智能合约到最终的发行-2

揭秘—该演示程序与它的原始版本保持不变,除了我添加了一行代码 window.ethereum.enable(),这是为了使它与2019 MetaMask 一起工作。

建立 POC 是我迈出可编程资金困境的第一步。这是我一生中做过的最有趣的事情。它甚至不像工作。

我也开始看到自动做市商对用户体验的影响。当时,EtherDelta 是唯一具有牵引力的分散式交换机,但用户体验让人感觉混乱和不直观。使用我的演示让我感觉更好。

Devcon 3

在 Devcon 3的一次演讲中,卡尔以我的 Uniswap 演示为例,演示了以太坊上加密经济学和开源金融应用程序的强大功能。

我失业了5个月,靠今年早些时候买的加密货币生活。根据我当时唯一的衡量标准——我知道如何编写智能合约——Uniswap 是成功的。如果有适合的 Solidity 本地开发人员的工作的话,也许是时候换个工作了。

这时,卡尔的 Devcon 演讲的参与者帕斯卡(Pascal Van Hecke)找到了我。他一直在密切关注以太坊上自动做市商的进展,并表示有兴趣支持我的努力。他甚至还给了我下个月的研究经费。我们开始每周打电话讨论进展。

帕斯卡提出了一些新想法。但是,更重要的是,我们的沟通给我的工作带来了一种结构感和责任感。Uniswap 有两大尚未解决的问题,我打算用工程思维来解决:

·它只适用于单对 ETH/ERC20

·它只适用于单一的流动性提供者

以太坊的价值

在这一点上,我完全被以太坊的无限潜力迷住了。这些是我关心的属性:

它抵制审查制度。没人能阻止它。

它是分散的。没有人控制它。

这是无需许可的。任何人都可以使用它。

它是安全的。任何人都可以验证执行。

然而,以太中还是有些不对劲。以太坊上的主要项目体现了它的一些特性,但很少有人完全接受它们。失效的中心点、可审查的应用程序,以及过于复杂的体系结构,DAPP 的设计完全围绕着为明显不需要的用例提供标记的想法。

我开始认为 Uniswap 不仅仅是我自己的一个学习工具,而是别人的一个学习工具。我无法想象一个与“真实”项目竞争的世界。你知道吗?在2017年夏天筹集了2000万至1.5亿美元的资金。但是也许它可以作为真实体现以太坊应用的一个例子。

NYC Mesh

去年12月,我和卡尔参加了 NYC Mesh 的一次聚会,当时卡尔刚刚发表了一篇反对加密的文章。现在,以太坊已经很出名了——卡尔被 CoinDesk 的一个记者认出来,他问他关于 meshnet 和加密货币之间的交集。卡尔不想接受采访,所以他指示记者去找我。我喋喋不休地谈论我几乎不懂的第2层解决方案,并被一篇文章引用。

B 计划吗?以太坊的革新者们正在重新开始为网络中立而战——CoinDesk

这是在纽约一家灯光昏暗的酒吧里的一次科技聚会——到目前为止,还没有什么特别的。不过,这次聚会的特别之处在于,整个 East Village 的其他地方都连接上了这家酒吧的 WiFi 节点,这让该地区的任何人不仅可以利用所有信号,还可以访问只有该网络上的其他人才能访问的网站。

我从小学到高中都是朋友的卡里尔·卡普佐(Callil Capuozzo),我已经有6年没见过他了。他看到了这篇文章,就伸出了援助之手。从那之前,他就在微软和谷歌担任设计师,最近他在为 FOAM 网站工作的同时也对以太坊进行了研究。

Uniswap 初期测试版

截至2018年1月底,所有主要的智能合约问题均已解决。交易所合约可以通过使用内部流动性代币,来跟踪每个有限合伙人在产生的费用和相关抵押品中所占的份额,从而为多个流动性提供者提供支持。工厂合同允许任何人添加对代币的支持。所有代币都与 ETH 配对,从而可以将其用作单个交易中任何东西交换的中介。

在完成更新的 Uniswap 智能合约之后,我与卡里尔重新建立了联系,我们对这个项目进行了详细的讨论。他主动提出帮助处理前端业务——目前该业务已落后于合同。围绕着他的其他项目,卡里尔在我那令人难以置信的 React 代码库上,为 Uniswap 设计并构建了一个时尚的新界面。

几个星期以来,我的 React 代码非常糟糕。幸运的是,我最近重新联系上了大学时代的朋友乌西尔·维尔奇斯(Uciel Vilchis)。乌西尔当时刚从一个编码训练营中出来(他是在我们共同的朋友卡尔的建议下加入的)。

你应该学会编码——卡尔·弗洛尔施

为了充实自己的履历和经验,乌西尔同意重构 Uniswap 前端代码库。

到2018年3月,我们三个人已经完成了一个功能齐全的 Uniswap 演示。是的,当然是我挖出来主持的。这里是:

Uniswap是如何诞生的?从编写智能合约到最终的发行-3

揭秘—该演示程序与它的原始版本保持不变,除了我添加了一行代码 window.ethereum.enable(),这是为了使它与2019 MetaMask 一起工作。

参加 Vitalik 的会议

到2018年4月,我已经失业10个月了。我所赖以生存的加密货币下跌了75%以上,极大地减少了我的个人表现。尽管如此,我还是最后一分钟买了飞往韩国首尔的机票。这是我24年人生中第一次离开北美。这在一定程度上是一次私人旅行,与 Deconomy 2018恰逢其时。

我试图不带票参加会议,但被坚决拒绝了。而这时,卡尔是与以太坊基金会的其他成员一起到达的。卡尔将我拉到一边,把我介绍给了 Vitalik,他以前已经和他讨论过 Uniswap。我们的谈话大致是这样的:

卡尔:这是我的朋友海登,他做出了 Uniswap!

Vitalik:嗨,很高兴认识你!它是开源的吗?

我:当然!

Vitalik:网址是什么?

我:https://github.com/haydenadams/uniswap

Vitalik:在手机上阅读我的整个智能合约……

Vitalik:您是否考虑过用 Vyper 编写它?当然,您还应该申请一个以太坊基金会的资助。

Vitalik 的想法并没有让我失望。从首尔返回后,我立即花了两个星期在 Vyper 上重新编写合约。虽然没有像 Solidity 这样的指南或开发工具,但我可以使用原始的 Casper FFG 合约作为参考。当时,除了核心 Vyper 回购协议中的简单示例外,这是我能找到的唯一一个 Vyper 合约。

结交朋友

到目前为止,卡尔是我在加密世界里唯一的好朋友,但这种情况很快就会改变。就在离开之前,卡尔邀请我参加一个小型社交聚会。在那里,我遇到了菲利普·戴安(Philip Daian)、丹·罗宾逊(Dan Robinson)和安迪·米勒纽斯(Andy Milenius),并成为了朋友。除了都是优秀的人之外,所有人都将成为 Uniswap 成功的关键,并影响其未来的发展方向。

两周后,也就是5月,我飞往多伦多参加2018年 Edcon 大会。这是我第一次参加以太坊安全会议。我花了3天的时间参加讲座、会面和演示 Uniswap。我的四个加密圈的朋友都在那里,并介绍我给许多其他人。我的加密社交网络正在扩大。

在我在 Edcon 结识的朋友中,王景兰(Jinglan Wang)值得赞扬,因为从那以后她一直是一位出色的顾问。

我第一次见到了曾是 Vyper 开发人员的戴维·诺特(David Knott)。我告诉他我已经用 Vyper 重写了 Uniswap。第二天早上8点,我被他的电话吵醒。他告诉我他计划在 Vyper 上做一个演讲,包括两个小时的现场演示。Uniswap 是唯一一个用 Vyper 编写的 DAPP,他问我是否有兴趣做这个演讲。

我解释说,我两周前才刚刚学习 Vyper,我从未在公共场合发表过演讲,而且我基本上不知道自己在做什么。戴维向我保证这很好——在 Vyper 上花两个星期的时间已经足够公开和权威地谈论它了。所以我做了第一次演讲。

我和丹坐同一架飞机回纽约。我们花了整个时间来优化 Uniswap。当飞机降落时,Uniswap 的效率提高了30%。现在,它是以太坊上最节能的交易模式。

2018年 Edcon 大会非常鼓舞人心。这次会议对我的 Uniswap 演示的反应不仅仅是轻微的兴趣。他们似乎理解并分享了我希望以此为榜样的价值观。我意识到以太坊社区远远超出了ICO。有些人真正关心它对无许可、分散式金融系统的愿景。

2018年纽约区块链周

我从 Edcon 回家的飞机直接把我送到了纽约区块链周。接下来的一周,我参加了没完没了的活动和派对。一条推文让我收到了信息源。

我住的地方离这里只有15分钟的路程,所以我决定去看看。

理查德·伯顿(Richard Burton)是一家名为 Balance 的以太坊钱包初创公司的创始人。我向他展示了我的演示,他马上就想了解它是如何工作的。接着是一段长时间的谈话。

到目前为止,我认为我在 Uniswap 的角色主要是技术性的。当有人问起它是如何工作时,我常常从告诉他们背后的数学公式开始。许多人因此困惑地走开了。

理查德让我明白,那些不理解 Uniswap 的人是我的问题,而不是他们的问题。开发人员只是整个蓝图的一小部分。如果我想让人们使用我的项目,我需要用他们理解的方式来谈论它。Uniswap 面临的最大挑战是社交挑战。

事情变得有点真实了

就在这个时候,我决定要完成 Uniswap。我制定了启动主网所需的内容:

1. 最后敲定可投入生产的智能合约

2. 响应用户友好的交易界面

3. 智能合约安全审核

4. 成品白皮书

5. 开发人员文档

我之前提到的朋友菲利普是区块链安全专家。根据他的建议(以及他的介绍),我收到了 Runtime Verification 的报价,内容涉及 Uniswap 的正式模型、高级代码审查,以及对智能合约的部分正式验证。考虑到所有这些因素,我申请了以太坊基金会5万美元的赠款加上 RV 的报价成本。

Balance

2018年夏天开始了,我着迷于重构 Uniswap 的智能合约、编写白皮书,并在业余时间参加加密活动。在接下来的两个月里,我接受了会面,然后等待关于资助的消息。

我每天都在 Balance 办公室工作,理查德和 Balance 团队的其他成员都非常友好地让我使用。理查德知道我的资金短缺,他甚至慷慨地给了我一笔个人资助,以支持我的努力。

我开始参加每周在 Balance 办公室召开的名为“Whiteboard”的周三聚会。每周三2小时,每个参与加密项目的人都被邀请分享他们每周的进展。

我几乎每周都参加,向不同的人群反复解释 Uniswap。我学会了如何在不同的场合谈论 Uniswap,并且很快就能向几乎所有人解释它了。我甚至开始尝试使用加密推特。

类似于我与帕斯卡的通话,周三的 Whiteboard 给我的生活带来了一定程度的责任感。我不想连续两周出现没有进展的报告。

Maker

随着夏天的推移,我在纽约 MakerDAO 办公室花了越来越多的时间,我前面提到的朋友安迪是那里的 CTO。Maker 是一个去中心化的稳定币项目。我在 Maker 和很多人成为了朋友,包括阿希利·夏普(Ashleigh Schapp)——另一个对 Uniswap 很重要的朋友。

在 Balance 和 Maker 办公室的工,让我有了源源不断的有趣的人可以见面,也有了需要了解的项目。夏天很快就过去了,我的智能合约已尽我所能进行了优化。最后,在7月底,我收到了一封电子邮件:Uniswap 将获得以太坊基金会的资助!

形式化模型

拿到资助后,我立即与 RV 签约,以对合约进行形式化和审核。在与 RV 的 Daejun Park、Yi Zhang 和 Xiaohong Cheng 的一系列通话中,我详细介绍了 Uniswap 的机理和最重要的特性。

他们首先创建了Uniswap的形式化模型。接下来,他们创建了一个代码规范,该规范重新设计了数学运算,以最大限度地减少四舍五入的误差,并且总是偏爱流动性提供者而不是交易员。

我修改了合同以符合规范。接下来,RV 执行了一个高级的代码审查。在这个审查中,他们推荐了一些安全检查、与一致性相关的修复和其他小的更改。

最后,Uniswap 合同代码被冻结,RV开始正式核查合同的执行是否符合规范的要求,这是整个过程中最长的一步。

在审核进行期间,我聘请卡里尔作为承包商,开始设计 Uniswap 交易接口的生产版本。演示界面工作得很好,但对于最终的产品来说,感觉太混乱了。

Recipeint

Uniswap 尚未公布,但也不完全是个秘密。9月,我应邀在 ETHIS(一个在香港举行的区块链会议)的一个小组发言。虽然从技术上讲,这不是我第一次在会议上发言,但这是我第一次被邀请这样做!

在香港,我赶上了 Vitalik,他看了我的 Uniswap 的最终代码。他发现了一个运行时验证都没有发现的错误。我把“收件人”拼成“recipeint”大约有20次了。

我还无意中进入了一个以太坊基金会关于 ETH 2.0的采访,第一次成为了 meme 的主题。

准备发行

回到纽约后,我决定如果可能的话,我将在布拉格的 Devcon 4 推出 Uniswap。只剩5周了,这是我一生中最忙的5周。

随着正式验证的进行,最大的未完成任务是在准备生产的代码基上实现卡里尔最新的前端设计。我去试探一家能在一个月内完成这个项目的承包公司,然后被介绍给 Kyokan 公司的首席执行官 Dan Tsui。

该代码库几乎要从头开始重写。我雇了一家承包公司,因为我相信在如此短的时间内完成一个功能完整的 Uniswap 前端,就能达到我所希望的标准,需要一个完整的团队。相反,我找到了更好的人选——Kyokan 的工程副总裁 Jacky Chan。

由于 Jacky 对 Uniswap 几乎一无所知,所以我编写了一份冗长而详细的前端规范,以帮助加快开发过程,而卡里尔则为界面的每个部分提供了非常详细的设计。在一个月内,Jacky 几乎完全靠自己完成了 Uniswap 的发行接口。Kyokan 公司的 Kenny Tram 也加入了进来,提供帮助。

大约在 Devcon 的前一周,我完成了文档和白皮书。同时,RV 正式核查工作的结果也已公布。没有发现问题!然而,运行时验证团队表达了一个担忧:未对 Uniswap 进行重新进入攻击的充分研究,这是 DAO hack 背后的问题。我向菲利普寻求建议。

他当时正忙着准备在 Devcon 4 上展示他的最新研究成果,但他还是承诺在发布前会查看智能合约中关于重新进入攻击的内容。由于最后一刻的性质,这当然会是一次内部审核——不会有任何记录,审核结果也不会公开。


相关文章:

Uniswap用户过去一个月花了近700万美元矿工费

Uniswap:“除掉”中心化交易所还有多远?

谷燕西:从Uniswap看未来的数字资产交易所

美房地产网络平台在以太坊项目Uniswap上正式发行交易对














编辑: 流动的沙
更多财经请关注 WX: Chaocaijing123456
币海财经: 全球财讯门儿清 https://www.bihai123.com/
声明: 本文由入驻币海编者上传,观点仅代表编者本人,不代表币海财经赞同其观点或证实其描述,请自行判断。

延伸阅读