• 0

  • 91

Hayden Adams:Uniswap 改变了我的人生

Unitimes_Louis

Unitimes翻译&以太坊技术爱好者

6个月前

作者 | Uniswap 创始人 Hayden Adams

编译 | Charles@Unitimes

2018年11月2日,Uniswap 公开宣布并部署到以太坊主网。在那个激动人心的,有些不安的时刻,我向大约200名关注者发布了推文公告:

对很多人来讲,这是他们首次听说该项目。对我来说,是一年的工作以及一路走来受到大量帮助的结晶。

Uniswap 改变了我的人生,而今天 (2019年11月3日) 又是它的生日。为了庆祝,本文将作为 Uniswap 生日博客系列的V0 (开篇) 开始讲述它的故事。

请继续关注今后的第V1和V2篇博文,那时我将介绍 Uniswap 在以太坊主网上的第一年表现以及我们关于它的未来规划。

接受以太坊

2017年7月6号,我被大学毕业后的第一份工作单位解雇,当时在西门子担任机械工程师。 我感到沮丧而且毫无方向,向我的朋友 Karl Floersch 请教,当时他正在以太坊基金会从事 Casper FFG 的研究。我们的对话大致像这样:

Hayden: 我刚刚被辞退了:(

Karl: 恭喜,这可能是你身上发生的最好的事!!! 机械工程是一个夕阳行业。 以太坊是未来,你还处于早期阶段。你的新使命是编写智能合约!

Hayden: 我不需要懂编程吗?

Karl:不尽然,编程很容易。 而且还没有人知道如何编写智能合约。 以太坊权益证明无需信任计算等

Hayden:好吧...

Karl 在我低谷的时候拉了我一把,说服我接受以太坊。我下定决心要尝试一下,并在接下来的两个月中学习了以太坊Solidity Javascript 的基础知识。

为了提升编程技能,我认为是时候开发“实际”项目了。 在 Karl 的建议下,我决定实现一个自动做市商,正如 Vitalik 这篇reddit帖子这篇博客文章中描述的那样。

一些事情证明 (Proof-of-Something)

2017年十月到十一月,我开发了一个概念证明 (PoC),包括一个智能合约和一个初版网站。该合约有一个流动性提供者,并允许进行简单的兑换。这就是它的全部荣光:

https://haydenadams.github.io/uniswap-retro/

声明:此演示版与其原始版本保持不变,除了我添加的一行代码 window.ethereum.enable () 使其与2019版 MetaMask 一起使用。

建立 PoC 是我迈出可编程货币这个“兔子洞”的第一步。这是我一生中最有趣的事情。 甚至感觉都不像工作。

我也开始看到自动化做市商用户体验方面产生的影响。当时,EtherDelta 是唯一具有吸引力的去中心化交易所,但用户页面显得凌乱且不直观。使用我的演示某种程度感觉更好。

EtherDelta.com — 2017年10月

Devcon 3

Devcon 3 的一次演讲中,Karl 以我的 Uniswap 演示为例,演示了以太坊上加密经济学和开源金融应用的强大之处

那时候,我已经失业了五个月,靠我有幸在年早些时候购买的加密货币为生。Uniswap 是我当时唯一成功的指标我知道如何编写智能合约。也许是时候继续去找一份工作了(如果有任何需要 Solidity 原生开发人员的工作)。

不过 KarlDevcon 演讲的一名参与者 Pascal Van Hecke 联系上了我。他一直密切关注以太坊上自动做市商的进展,并表示有兴趣支持我的工作。他甚至还捐赠资助我下个月的研究。我们开始每周通话讨论进度。

Pascal 提出了新想法。不过更重要的是,我们的通话给我的工作带来了结构感和责任感。 Uniswap 以下两个主要未解决的问题,我打算以工程学的思维方式解决:

  • 它仅适用于单一 ETH/ERC20 交易对。
  • 它仅适用于单一流动性提供者。

以太坊价值

至此,我完全被以太坊的无限潜力所吸引。这些是我关心的以太坊特性:

  • 它是抗审查的。没有人能阻止它。
  • 它是去中心化的。没有人能控制它。
  • 它是无需授权的。任何人都可以使用它。
  • 它是安全的。任何人都可以验证执行。

然而,在 ETH 中感觉少了什么。以太坊上的一些主要项目体现了它的一些特性,但是几乎没有项目完全涵盖这些特性。中心故障点、可审查的应用以及过于复杂的架构。DAPP 的设计完全围绕着这样一个想法:为那些明显不需要 token 的用例提供 token。

我开始考虑将 Uniswap 不仅仅当作为自己的学习工具,也为别人。我无法想象这样一个Uniswap 与那些在2017年夏天筹集了2千万到1.5亿美元资金的项目相竞争的世界。但也许它可以作为一款真正体现以太坊特点的应用示例。

NYC Mesh 交流会

在12月份,我与 Karl 参加了一场 NYC Mesh 交流会,紧接着发起人发表一篇有关反对将网状网络与加密货币相结合的文章当时已经是以太坊领域的名人 Karl 被一位 Coindesk 记者认出了,并向他询问了网状网 (meshnets) 加密货币之间的交集。Karl 不想接受采访,所以他指引记者找我。我对几乎不了解的 Layer2 解决方案一通胡扯,结果在一篇文章中被引用。

我的从小学到高中的一个朋友 Callil Capuozzo,我大概6年没见过他。他看到了这篇文章然后联系到了我。他曾在微软谷歌担任设计师,最近在 FOAM 网站上工作的同时钻研以太坊。

Uniswap 预发版

到2018年1月下旬,所有 Uniswap 主要的智能合约问题均已解决。交易所合约可以通过使用内部流动性代币来跟踪每个流动性提供者所产生的费用份额和基础抵押品中,从而支持多个流动性提供者。合约允许任何人添加对某种代币的支持,所有代币都与 ETH 构建交易对,从而可以将 ETH 用作单笔交易中任何代币之间交换的中介

刚完成更新的 Uniswap 智能合约,我就重新联系了 Callil,我们对项目进行了详尽的讨论。他提出要提供前端方面的帮助,因为前端的进度没能跟得上合约的开发。Callil 一边做他的其他项目,一边为 Uniswap 设计并构建了一个时髦的新界面,它建立在我那非常蹩脚的 React 代码库之上。

几周后,很显然我的 React 代码非常糟糕。幸运的是,我重新联系上大学时代的朋友 Uciel Vilchis。Uciel 刚从一个编程训练营中结业(他同样在 Karl Floersch 的建议下进入该训练营)。

你应该学习编程 — Karl Floersch

为了打造自己的简历和经验,Uciel 同意重构 Uniswap 前端代码库。

到2018年3月,我们三个人已经开发了 Uniswap 的全功能演示版。是的,当然我深入其中并部署一个页面。就是这个

https://haydenadams.github.io/uniswap-prealpha/

声明:此演示版与其原始版本保持不变,除了我添加的一行代码 window.ethereum.enable () 使其与2019版 MetaMask一起使用。

邂逅 Vitalik

2018年4月,我已经失业10个月。我赖以为生的加密货币跌超75%,极大地减少了我的个人持仓价值。尽管如此,我还是最后一分钟买了飞往韩国首尔的航班。这是我24年以来第一次离开北美。在一定程度上这是一次个人旅行,特意安排在 Deconomy 2018 会议期间

我试图不用票参加会议,但遭到坚决拒绝。但是,Karl 刚好与以太坊基金会的其他成员一起抵达。Karl 将我拉到一边,并向 Vitalik 介绍了我,他过去曾与 Vitalik 一起讨论过 Uniswap。我们的对话是这样的:

Karl:这是我的朋友 Hayden,他开发的 Uniswap!

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

我:当然!

Vitalik:URL 是多少?

https://github.com/haydenadams/uniswap

Vitalik *在他的手机上查看我的整个智能合约*

Vitalik:你是否考虑过用 Vyper 实现?你还应该申请以太坊基金会资助。

Vitalik 的想法没有使我失望。首尔返回后,我立即花了两周使用 Vyper 重新编写合约。没有像 Solidity 提供的指导或开发者工具,但我能够使用 原始的Casper FFG 合约作为参考。当时,这是我在核心 Vyper 中的简单示例之外可以找到的唯一Vyper 合约。

交了一些朋友

那时为止,Karl 是我在加密货币世界中唯一的密友,但这很快就会改变。在离开首尔之前 Karl 邀请我参加一个小型社交聚会。我在那里与 Philip DaianDan Robinson 和 Andy Milenius 成为朋友。他们是很出色的人,将对 Uniswap 的成功至关重要,并影响其未来的发展方向。

两个星期后的5月,我飞往多伦多参加 Edcon2018。这是首次我通过了安检的以太坊会议。我花了三天的时间参加讲座会面和演示 Uniswap。我的四个加密货币朋友都在那里,并把我介绍给很多人。我的加密圈社交网络正在扩展。

我在 Edcon 结识的朋友中,Jinglan Wang 特别值得一说,因为从那时起她一直是出色的顾问。

我第一次当面见到了前 Vyper 开发者 David Knott。我告诉他我已经使用 Vyper 重写了Uniswap。第二天早上8点,我被他的电话叫醒。他告诉我,他被安排两小时后就 Vyper 进行演讲,包括现场演示。Uniswap 是唯一用 Vyper 编写的 DAPP,他问我是否有兴趣代替他发表演讲。

我表示两周前才刚刚学习 Vyper,我从未在公共场合发言,而且我不知道自己在做什么。  David 向我保证这没什么要紧, Vyper 上进行两周的开发足以对它进行公开和权威的发言。 所以我进行了首次演讲

我和 Dan 乘同样的航班返回纽约。在飞机上,我们一直在优化 Uniswap gas。飞机降落时,Uniswap 的效率提高了30%。它现在是以太坊上最省 gas 的交易所。

Edcon 2018 非常鼓舞人心。大家对我的 Uniswap 演示的反应不仅是简单的兴趣人们对此感到非常兴奋。他们似乎理解并分享了我希望以此为示例的价值观。我意识到以太坊的社区远不止ICO。有些人真正关注它无需许可、去中心化金融系统的愿景。

2018纽约区块链周

My plane home from Edcon landed me directly in NYC Blockchain Week. I spent the next week attending an endless spew of events and parties. A tweet made its way onto my feed.

我从 Edcon 回来的飞机直接将我降落在纽约区块链周。接下来的一周我参加各种活动和聚会上。这条推文吸引了我的眼球

区块链周低点距离我有15分钟的步行路程,所以我决定去看看。

Richard Burton 是以太坊钱包初创公司 Balance 的创始人。我向他展示了我的演示,他立即想了解它是如何工作的。随后我们促膝长谈。

那时为止,我认为我在 Uniswap 中的角色主要是技术性的。当有人问起它是如何工作时,我通常会先告诉他们背后的数学公式。许多人困惑地走开了。

Richard 帮我认识到人们不理解 Uniswap,这是我的问题,而不是他们的问题。开发人员只是大局的一小部分。如果我希望人们使用我的项目,则需要以他们理解的方式用他们的术语来谈论它。 Uniswap 最大的未解决挑战是社交挑战。

事情变得有些真实了

大约在这个时候,我认为 Uniswap 是我想要完成的事情。我列出了主网上线所需的工作。

  1. 敲定的、准备就绪的智能合约
  2. 响应式,用户友好的交易界面
  3. 智能合约安全审计
  4. 完成白皮书
  5. 开发者文档

我之前提到的朋友 Phil 是区块链安全专家。根据他的建议(以及他的介绍),我收到了 Runtime Verification 的报价,内容涉及 Uniswap 的形式模型高水平代码审查以及对智能合约的部分形式化验证。考虑到所有这些因素,我向以太坊基金会申请了50,000美元+ Runtime Verificaiton 报价的资助。

Balance

我从2018年夏季开始就开始沉 Uniswap 的智能合约重构,编写白皮书并在业余时间参加加密货币活动。在接下来的两个月中,我进行了采访,然后等待有关资助的反馈消息。

我每天在 Balance 办公室工作,Richard Balance 团队的其他成员 — Christian BaroniJin Ching 和 Mike Demerais 都非常友善,让我使用办公室。Richard 知道我的资金不足,甚至慷慨地给了我一笔私人赠款,以支持我的工作。

我开始在 Balance 办公室参加每周一次的 Whiteboard Wednesday 交流会。每周三花2小时,邀请每个从事加密项目的人都分享他们的每周进度。

我几乎每个星期都参加,向不同人群解释和反复解释 Uniswap。我学会了如何在不同的环境下谈论 Uniswap,很快就可以向几乎任何人解释。我甚至开始将涉足加密 twitter。

与我同 Pascal 的通话类似, Whiteboard Wednesday 交流会给我的生活带来了一定程度的责任感。我不想连续两个星期没有报告进展出现在大家面前。

Maker

随着夏天的推进,我在纽约 MakerDAO 办公室工作的时间越来越长,我之前提到的朋友 Andy是 MakerDAO 的 CTO。Maker 是一个去中心化的稳定币项目,每个阅读本文的人都已经知道,所以我没必要再谈一遍了。我在 Maker 与很多人成为朋友,包括 Ashleigh Schapp,这是另一个对 Uniswap重要的朋友。

Balance Maker 办公室进行工作让我认识源源不断的有趣的人,学习有趣的项目。夏天很快过去了。我的智能合约已尽我所能进行了优化。最后,在7月底,我收到了一封电子邮件。 Uniswap 将获得以太坊基金会的资助

形式化模型

拿到资助,我立即联系 Runtime Verification 进行合约的形式化验证及审计。在与 Runtime Verification 的 Daejun ParkYi Zhang Cheng Xiaohong 进行的一系列通话中,我详细介绍了 Uniswap 的机制和最重要的特性。

他们从创建 Uniswap 的形式化模型开始。接下来,他们创建了一个代码规范,该规范重新设计了数学运算以最小化舍入误差,使其总是有利于流动性提供者而不是交易者。这项工作的结果可以在这里找到

我修改了合约以适应规范。 接下来, Runtime Verification 进行了高级代码审查,在该审查中,他们建议了大量的安全校验,进行一致性相关的修复以及其他较小的更改。这些改进的列表可以在这里找到

最后,Uniswap 合约代码被冻结,Runtime Verification 开始形式化验证合约的实现是否符合规范的期望特性。这是该过程中耗时最长的一步。

在审计进行期间,我聘请 Callil 作为外包,开始设计 Uniswap 交易界面的生产版本。演示界面运行良好,但距离最终产品还是太乱了

RECIPEINT 拼写错误🤦

那时,Uniswap 尚未正式宣布,但也再是个秘密。9月,我应邀在 ETHIS 香港区块链会议的一个 panel 中发言。从技术上讲,这不是我第一次在会议上发言,但这是我第一次被邀请发言!

在香港,我遇上了 Vitalik,他查看了我终版 Uniswap 的代码。他发现了一处连 Runtime Verification 都忽视的错误。我将“recipient”误拼成“ recipeint”约20次。

我也无意间撞到了对以太坊基金会关于 ETH 2.0 进行的采访,并第一次成为了 meme (表情包)主题。

随着ETH跌到200刀以下,2018年9月这种类型的幽默十分常见

这里有原版素材,如果其他人想试着制作表情包的话。

香港会议之后,返回纽约之前,我凭着通行签证在上海区块链周度过了3天。

准备上线

回到纽约,如果决定如果条件允许的话,我将在布拉格 Devcon 4 上发布 Uniswap。那时还有5周的时间,那是我一生中最繁忙的5周

随着形式验证的进行,最大的尚未处理的工作是在生产就绪的代码库之上实现 Callil 的最新前端设计。我寻找一家可以在一个月内实现的外包公司,有人向我介绍了 Kyokan 公司CEO Dan Tsui感谢 Rick Dudley 牵线

代码库几乎完全是从头开始重写。我之所以雇用了一家外包公司,是因为我认为能在如此短的时间内按照我希望的标准来完成功能齐全的 Uniswap 前端,需要整个团队。事情比我想象的还好多亏 Kyokan 工程副总裁 Jacky Chan

Jacky 接手时对 Uniswap 几乎没有任何概念,我写了一份详实的前端说明来帮助加快进度,而 Callil 为界面的每个部分都提供了非常详细的设计。在一个月的时间里,Jacky 几乎完全靠自己搭建了 Uniswap 启动界面。对于一些较小的细节,Kyokan Kenny Tram 入了进来帮忙。

大约在 Devcon 4一周前,我完成了这个文白皮书。此外 Runtime Verification 的形式化验证工作结果也出来了。未发现任何问题!然而 Runtime Verification 团队提出了一种担忧。尚未对 Uniswap 重入攻击进行充分的研究,该攻击是 the DAO遇到的问题。我找到 Phil Daian 寻求建议。

他忙着准备在 Devcon 4 展示他的最新研究成果,但是答应在 Uniswap 发布之前研究其内智能合约的重入攻击。由于是最后一刻的性质,这当然是一场内部审计没有有任何书面记录,并且结果也不会公开。

V0 UniT恤— Devcon 4 限量版

与此同时,我与 Callil 签约,为 Uniswap 设计准备在会议上发放的T恤衫。我想把发布做成一次重要的时刻。人们可以参加的时刻。这件T恤衫质量要高 —,一件大家实际上想穿的T恤衫。

大约在 Devcon 4 一周前,Callil 与他的兄弟 Leander 合作,将这令人难以置信的酷炫设计融合在一起:

UniT恤设计样版

为了准时完工,T恤丝网印刷的过程必须手工制作。进行丝印大约需要一周,而制作恤大约需要8个小时。

我于会议开始前一天飞往布拉格,开始确保所有部分都准备就绪。 我同Phil联系了一下,他已检查了大部分代码,但想再检查一遍。

Callil 购买了一趟在会议第一天降落的航班,以留出尽可能多的时间制造T恤。他和 Leander 一起通宵制T恤

UniT恤

文化衫一完成,他就将它们装箱,直接去机场,然后飞往布拉格。他从机场乘坐出租车直达会议中心,和我一起分发这些文化衫。

Devcon 4

第1天

Devcon开始了!我在会议中心溜达,发放文化衫,与听我讲话的任何人谈论 Uniswap,暗示Uniswap 马上要发布。

Uni文化衫背面有数学公式和图,这使文化衫成为理解自动做市商极好的工具

下午,我和 Callil 第一次与 Jacky 见面。经过一些社交反馈后,我们开始修复突出的 bug,并改善 UX 体验。

第2天

我花了第二天的一半时间在会议上溜达并观看演讲。下午,我再次与 Jacky 和 Callil 在一起。 我们意识到Uniswap 作为一个项目应该具有与交易页面分开的登录页面。那天我们从头开始搭建uniswap.io

第3天

最终,在 Devcon 的第三天,我收到了 Phil 的回音。据他所知,除非专门设计代币转化函数允许重新进入 Uniswap,否则无法对 Uniswap 交易合约进行重入攻击 (re-entrancy attack)

这感觉像是一个可以接受的结果—如果代币被设计来攻击 Uniswap,则该特定代币的流动可能被盗。所有常规 ERC20 代币都可以防止攻击

第4天

2018年11月2日(Devcon 4 的最后一天),Uniswap 智能合约部署到以太坊主网。接下来,部署了uniswap.iouniswap.exchange。 最后,我联系了对 Uniswap 上线后提供流动性感兴趣的每个人。

单个提供者将约30,000美元的代币存入合约,分成3种代币。 这样可以进行大约100美元的兑换。没有别的要做的了。

我花了大约一个小时独自坐在一个豆袋椅上,编辑并重复编辑 Uniswap发布推文。幸运的是,我的朋友 Ashleigh 走过并帮助审查我的推文。

我点击发送键,对接下来的事既紧张又兴奋。随之而来的是大量的支持想法和协作,远超我的最大期望。

不过对本系列下篇博客V1来说,这只是个开胃菜。

🦄 福利 #1 — 谁为 Uniswap 起的名字?

Vitalik 起的。我最初将其称为 Unipeg-独角兽和飞马的联合体。

Unipeg标志

Karl 首次告诉 Vitalik 这个项目的时,他说:

“Unipeg? 它听起来更像是Uniswap”

福利 #2 — 谁发明了Uniswap?

Gnosis Alan Lu 是首位在以太坊上提出 x*y=k 做市商的人

Gnosis Martin Koppleman 告诉 Vitalik 这个想法

Vitalik 看到了它潜力开始公开发文讨论它。在他的网站上 Reddit 以及在 Phil Daian 写的这篇文章下面评论

我创建了 Uniswap,现存在以太坊上的一个 x*y=k 做市商特别实现版。

 

原文链接:

https://medium.com/uniswap/uniswap-birthday-blog-v0-7a91f3f6a1ba

【文章版权归原作者所有,其内容与观点不代表Unitimes立场,亦不构成任何投资意见或建议。发布文章仅为传播更有价值的信息,合作或授权联系请发邮件至contact@unitimes.io或添加微信unitimes2018】

以太坊

91

相关文章推荐

未登录头像

暂无评论