Uniswap 简史_CAL:IBC

2018年11月2日,Uniswap公开发布并部署到以太坊主网。在一个激动人心、令人紧张的时刻,我向我的大约200多名粉丝发布了公告推文。

对于许多人来说,这是他们第一次听说这个项目。但对我来说,这是我多年以来的工作成果,并且这一路走来,我不经获得了许多的帮助,也收获了许多朋友。

Uniswap不仅改变了我的生活,而且今天也是它的生日。为了庆祝这一天,我想在Uniswap生日博客系列的V0中从头开始讲述它的故事。

请大家继续关注V1和V2,届时我将与大家共同探讨Uniswap上线以太坊主网的第一年经历,以及分享我们对Uniswap未来的计划。

接受以太坊

2017年7月6日,我从大学毕业后的第一份工作中被解雇。那段时间我感十分到沮丧,也没有任何方向,于是我将我的情况告知了我的朋友?KarlFloersch,他当时正在以太坊基金会从事CasperFFG的工作。我们谈话的内容是这样的:

Hayden:我刚刚被解雇了:(Karl:恭喜你,这是发生在你身上最好的事情!!!机械工程已经是一个垂死的领域了。但以太坊是未来,并且你还处在该行业的早期阶段。现在,编写智能合约将是你的新命运!Hayden:难道我不需要知道该如何编码吗?Karl:不是的,编码很容易的。而且,反正现在还没有多少人了解如何写智能合约。不管是以太坊,股权证明,还是无信任计算,等等,都还是新兴领域。Hayden:好吧......Karl抓住了我的低谷期,说服了我接受以太坊,并使之进入我的生活。我决定给它一个机会,并在接下来的两个月里学习了以太坊、Solidity和JavaScript的基础知识。

为了扩大我的技能范围,我决定是时候在一个"真正的"项目上工作了。在Karl的建议下,我决定实现一个自动做市商,正如Vitalik在这个reddit帖子和这个博文中描述的那样。

XX证明

从十月到十一月,我建立了一个概念证明,包括一个智能合约和我的第一个网站。该合约有一个单一的流动性提供者,并允许进行简单的交换。而这就是它的全部魅力:

Disclosure:该演示版与原始版本保持不变,只是我添加了一行代码'window.ethereum.enable()',以使其与2019年MetaMask一起工作。建立POC是我在可编程货币的兔子洞里迈出的第一步。这是我一生中从事的最有趣的事情。而且,我甚至都不觉得这是工作。

慢慢的,我也发现了自动做市商的用户体验问题。当时,EtherDelta是唯一一个具有吸引力的去中心化交易所,但它的用户体验感混乱且不直观。但是使用了我的演示后,不知为何感觉好了点。

Devcon3

在Devcon3的演讲中,Karl用我的Uniswap演示作为例子,说明了加密经济和以太坊上开源金融应用的力量。

到现在,我已经失业五个月了,但幸好在今年早些时候购买了一些加密货币,靠着它们,还能继续维持我的生活。如果按照我当时唯一的衡量标准来看的话,Uniswap是成功的。现在也许是时候继续前进,找一份工作了。

然而,在Karl的Devcon演讲中的一位与会者联系到了我。他一直在密切关注着以太坊上自动做市商的进展,并表示有兴趣支持我的努力成果。他甚至给了我一笔钱,资助我接下来一个月的研究。然后我们就开始每周通话讨论进展。

Pascal给我们带来了新的想法。然而,更重要的是,我们的通话给我的工作带来了一种结构感和责任感。Uniswap有两个未解决的主要问题,对此,我是用的工程思维来解决:

它只适用于单一的ETH/ERC20对它只适用于单一的流动性供应商以太坊价值

至此,我已经完全被以太坊的无限潜力所吸引。以下这些也是我所关心的重要属性:

它是抗审查的——没有人可以阻止它。

它是去中心化的——没有人控制它。

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

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

然而,在以太坊中有些东西却感觉不对劲。以太坊上的主要项目体现了它的一些特性,但很少有人会完全接受它们。中央故障点,可审查的应用程序,以及过于复杂的架构。DAPPs的设计完全围绕着为那些显然不需要代币的用例提供代币的想法。

NYCMesh

12月,在?NYCMesh?的创始人发表了一篇反加密的文章后,我和Karl一起参加了NYCMesh聚会。现在以太坊出名了,Karl被Coindesk的记者认出,并向他询问了关于Meshnets和加密货币之间的交叉点的事情。但Karl不想接受采访,所以他把记者引向了我。我喋喋不休地讲述了我几乎不理解的第二层解决方案,而这段采访也在一篇文章中被引用了:

B计划?以太坊创新者正在重新为网络中立性而战—CoinDesk在纽约市一家灯光昏暗的酒吧举行的科技聚会。但这次聚会的特殊之处在于,整个东村的其他地点都被连接到了该酒吧的Wi-Fi节点上,允许该地区的任何人不仅可以利用所有的信号,还可以访问只有网络上的其他人才能访问的网站。CallilCapuozzo,一个从小学到高中的朋友,我已经有6年没有见到他了,他看到了这篇文章后联系了我。从那时起,他就在微软和谷歌担任设计师,最近在为?FOAM?做网站时,又深入研究了以太坊。

UniswapPre-alpha

到2018年1月下旬,所有主要的智能合约问题都得到了解决。交易所合约可以通过使用内部流动性代币来跟踪每个LP的生成费用份额和基础抵押品,从而支持多个流动性供应商。一个工厂合约允许任何人添加对代币的支持。所有的代币都与ETH配对,允许它在一次交易中被用作任何东西的交换的中介。

在Uniswap智能合约完成更新后,我再次与Callil进行了联系并详细讨论了这个项目。他提出要帮助我做前端。围绕着他的其他项目,在我那令人难以置信的糟糕的React代码库上,Callil为Uniswap重新设计并建立了一个光滑的新界面。

几个星期以来,我的React代码已经十分糟糕了。幸运的是,我最近和一个大学时的朋友?UcielVilchis?重新联系上了。Uciel刚从一个编码训练营出来。

你应该学习代码——KarlFloersch

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

到2018年3月,我们三个人已经建立了一个功能齐全的Uniswap的演示。是的,当然,我把它挖了出来,并托管了它。它就在这里:

Disclosure:该演示与原始版本保持不变,除了我加入的一行代码'*window.ethereum.enable()*',使其与2019年MetaMask一起工作。认识Vitalik

到2018年4月,我已经失业了10个月。我赖以生存的加密货币已经下跌了75%以上,极大地缩减了我的个人跑道。尽管如此,我还是在最后一分钟买了一张去韩国首尔的机票。这是我24年来的第一次离开北美洲。部分是个人旅行,因为它的时间与?2018年的Deconomy?相吻合。

我试图在没有票的情况下进入会场,但被坚决拒绝。然而,Karl才刚刚和以太坊基金会的其他成员一起到达。Karl把我拉到一边,把我介绍给Vitalik,他在过去已经和他讨论过了Uniswap。我们的谈话是这样的:

Karl:这是我的朋友Hayden,就是他制作了Uniswap!Vitalik:你好,很高兴认识你!它是开源的吗?我:当然!Vitalik:URL是什么?我:https://github.com/haydenadams/uniswapVitalik在他的手机上阅读我的整个智能合约Vitalik:你考虑过用Vyper来写吗?另外,你应该申请以太坊基金会的资助。Vitalik的想法没有让我失望。从首尔回来后,我立即花了两个星期来使用Vyper重新编写合约。当时没有像Solidity那样的指南或开发者工具,但我能够使用原始的CasperFFG?合约作为参考。当时,这是我能找到的唯一的Vyper合约,除了核心Vyperrepo中的简单例子。

交一些朋友

到此为止,Karl是我在加密世界中唯一的好朋友,但这很快就被改变了。就在离开之前,Karl邀请我参加一个小型社交聚会。在那里,我认识了?PhilipDaian、DanRobinson?和?AndyMilenius,并和他们成为了朋友。除了是优秀的人之外,他们都将成为Uniswap成功的关键,并影响其未来的方向。

两周后,在5月,我飞往多伦多参加Edcon2018。这是我第一次参加以太坊会议,并通过了安全审查。我花了3天时间参加讲座,认识朋友,并演示了Uniswap。我在加密世界的四个朋友都在那里,他们把我介绍给了其他很多人。我的加密世界社交网络也在不断扩大。

在我在Edcon结识的朋友中,JinglanWang?是十分值得一提的,因为她从那时起就是一个出色的顾问。

我第一次见到了DavidKnott,一个前Vyper的开发者。我告诉他,我在Vyper中重新编写了Uniswap。第二天早上8点,我被他的电话吵醒了。他告诉我,他将在两小时后发表关于Vyper的演讲,包括现场演示。Uniswap是唯一一个用Vyper编写的DAPP,他问我是否有兴趣代替他做这个演讲。

我解释说,我在两周前才刚刚学会Vyper,并且从来没有在公开场合发言过,而且我也不知道自己通常在做什么。David向我保证,这没有问题,在Vyper上学习两周,就足以公开发表权威性的讲话了。于是我做了第一次演讲:

我和Dan坐同一班飞机回纽约。在整个行程中我们都在对Uniswap进行gas优化。当飞机降落的时候,Uniswap的效率被提高了30%。它现在是以太坊上gas效率最高的交易所,与之前相差很大。

2018年的Edcon大会非常令人振奋。在我的Uniswap演示后,人们的反应不仅仅只是轻微的兴趣,更是理所当然的对它感到兴奋。他们似乎理解并分享了我想让它成为一个例子的价值观。我意识到以太坊的社区远远超出了ICO的范围。有一些人真正关心它的愿景,即一个无需许可、去中心化的金融系统。

2018年NYC区块链周

我从Edcon回家的飞机直接降落在NYC区块链周上。在接下来的一周里,我参加了无数的活动和派对。一条推特出现在我的信源中。

他就住在离我步行15分钟的地方,我决定去看看。

RichardBurton?是一家以太坊钱包初创公司Balance的创始人。我给他看了我的演示后,他当即就想了解它是如何工作的。随后我们就进行了长时间的交谈。

在这之前,我认为我在Uniswap的角色主要是技术人员。当有人问起它是如何工作的时候,我常常先告诉他们背后的数学公式。但许多人都对此感到困惑。

Richard帮助我理解这种现象,让我知道人们不理解Uniswap是我的问题,而不是他们的问题。开发人员只是大环境中的一小部分。如果我想让人们使用我的项目,我需要以他们的方式,或是以他们能理解的方式来谈论它。因此,社会问题将是Uniswap最大的挑战。

事情开始变得真实

正是在这个时候,我决定了,Uniswap就是我想要完成的事情,于是我规划了推出主网所需要的东西:

最终确定的、可投入生产的智能合约反应灵敏、用户友好的交易界面智能合约的安全审计完成白皮书开发者文档我之前提到的朋友Phil是一位区块链安全专家。在他的建议下,我收到了?RuntimeVerification?公司关于Uniswap的正式模型的报价,高水平的代码审查,以及智能合约的部分正式化验证。考虑到所有这些,我申请了以太坊基金会的资助,金额为50,000美元+RV的报价费用。

Balance

2018年夏天拉开序幕,我痴迷于重构Uniswap的智能合约,编写白皮书,并在业余时间参加加密活动。然后在接下来的两个月里,我进行了面试,并等待基金会的回音。

我每天都在Balance办公室工作,Richard和Balance的其他团队成员,ChristianBaroni、JinChing?和?MikeDemerais?都对我很友好。在知道我的资金不足后,Richard甚至慷慨地给了我一笔个人资助来支持我的努力。

我开始参加每周一次的聚会,称为"白板星期三",地点在Balance办公室。每周三的两个小时里,所有从事加密项目的人都被邀请来分享他们每周的进展。

我几乎每周都参加,不停地向不同的人群解释和再解释Uniswap。我学会了如何在不同的场合谈论Uniswap,并且很快就能向几乎所有人解释它。我甚至开始涉足加密推特。

同我和Pascal的通话类似,白板星期三给我的生活带来了一定程度的责任感。我不想连续两周没有进展地出现在大家面前。

Maker

随着夏天的到来,我花了越来越多的时间在NYC?MakerDAO?办公室,我之前提到的朋友Andy就是这里的CTO。Maker是一个去中心化的稳定币项目,读这篇文章的人都已经知道了,但为什么我还是要讲述它。我和Maker的一些人成了朋友,包括?AshleighSchapp。

在Balance和Maker的办公室里工作,这里不仅遇到了许多有趣的人,还为我提供了源源不断的项目和学习的机会。夏天很快就过去了。我的智能合约也已经优化到了我自己能做的程度。最后,在七月底,我收到了一封电子邮件。Uniswap将获得以太坊基金会的资助!

以太坊基金会资助更新——第三波以太坊基金会资助更新;我们一直在努力工作,从而能够了解许多令人惊叹的人和项目,并非常兴奋地宣布以太坊基金会捐赠计划第三波的获奖者,我们以一篇博文拉开了2018年的序幕,以激发可扩展性研究的第一...正式模型

赠款到手后,我立即与RuntimeVerification公司签订合同,对合约进行正式化和审计。并在与RV的?DaejunPark、YiZhang?和XiaohongCheng进行的一系列通话中,我详细介绍了Uniswap的机制和最重要的属性。

他们首先创建了一个正式的Uniswap模型。接下来,他们创建了一个代码规范,重新进行了数学运算,以尽量减少四舍五入的误差,并始终有利于流动性提供者而不是交易者。这项工作的结果可以在这里找到。

我修改了合约以适应该规范。接下来,RV进行了一次高水平的代码审查,他们建议进行一些安全检查,并修复与一致性有关的问题,以及其他小的改动。这些改进的清单可以在这里找到。

最后,Uniswap合约代码被冻结,RV开始正式验证合约的实施是否符合规范的理想属性。这是整个过程中最漫长的一步。

在审计工作进行的同时,我聘请了Callil作为承包商,开始设计Uniswap交易界面的生产版本。演示界面运行良好,但对于成品来说感觉太混乱了。

RECIPEINT

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:15ms0-3:127ms