编者按:以下为Vitalik Buterin在Ethereum Devcon3上的演讲《Ethereum in 25 minutes, vision 2017》的上半部分。以下中文皆直接从视频中听写并译出,如有错失,请不吝赐教。
好的,那么,这个演讲希望成为一种尽可能简洁的介绍,与此同时,能够涵盖重要的部分,比如,最基本的,从技术角度来说以太坊(Ethereum)协议在实际上看起来是什么样的。
那么,我将直接切入,下沉到以太坊之所是,以背景,亦即以太坊存在的理由,来开始基础介绍。回到我在2013年末写出初始白皮书的时候,公众、区块链技术、尤其是那些致力于使区块链技术超越仅仅是比特币(Bitcoin)货币的人们,已经表现出大量的兴趣。现在,人们正致力于开发以太坊应用、发行资产到区块链上、众筹、域名注册、域名币(Namecoin)这样的项目、产权登记、投机、预测市场、物联网(loT)应用、医疗应用。区块链上有许多的应用,超越了像“我有50个比特币,我发20个比特币给你,然后你就有了20个比特币”这样。
问题在于,那时候大多数存在的区块链都是像这样设计的。我的意思是,这种豆豆计算器有何意义呢?它可以做到这件事,它也可以把这件事做得很棒,但这也是它唯一能做到的事。诚然,如果你有一台超级棒的TI-80(译者注:德州仪器发行的一款学生用科学计算器)或是别的,你或许能够通过某种方式在上面编写一个视频游戏,但没有人会真的想这么做。普遍地来说,它最后变成了能用来做一件事情的一个工具。
但是,如果我们想让它做不止一件事情呢?当然,你可以为5个不同的目的买5种不同的设备,但这很快就会(回到原点)。下一步是,人们开始创造像瑞士军刀一样的协议。你可能会想象,一群人走进一个房间,他们头脑风暴了一个钟,然后他们写出了25个不同的区块链应用,然后,他们达成了25种不同的交易类型。交易类型一,创建一个共筹;交易类型二,参与一个众筹;交易类型三,创建一个保险合约;交易类型四,开一个双人房;交易类型五,注册一个域名;等等,乃至他们可以想到的每一种应用。这就是我使用“瑞士军刀”的含义。
但问题又在于,如果你有了一个瑞士军刀协议,你拥有这个在一个房间里孵化出25种不同项目的协议,他们创建这一协议,放出这个协议,一个星期以后,一个芬兰的小伙子写出了第26个区块链应用,然后,你必须更改整个协议。
所以,为什么不创建一个像这个一样的协议?(屏幕上是一台Windows Phone,屏幕下方有一行字:特别感谢微软(Microsoft)赞助本次大会。听众大笑)
为什么不做一个基本上像一台智能手机一样的区块链协议,来取代那些仅支持很少一些应用、你能做的也仅仅是这些应用的协议?因此,我们做了一个区块链协议,它支持编程语言,因此也给了你技能来创建应用。一个应用是什么呢?其实,任何人都可以写一些代码,打包这些代码并上传它,然后你就有一个app!如果任何其他人想使用你的app,他们下载这个app,然后它就会出现在他们的手机上,他们可以使用它,可以运行它。对,就是这样,基本上这就是为什么一个手机可以打电话、浏览网页、听音乐、用文字与其他人会话、玩游戏;只是因为我们将数以千计的东西集成到一个设备上。这就是通用计算的力量。这也是我想带给区块链世界的一种精神。
概念
先来谈谈概念,对吧?首先,以太坊是一个区块链!耶~!(听众笑)
加法
但是,你知道,我们还增加了一些东西。首先,以太坊拥有一个内置的通用编程语言,允许你在其中编写非常多的应用。
在一个目的只是支持货币转移的区块链上,那里将只有一种类型的账户。这种类型的账户将成为这样的一个账户:它被某些用户所控制、它将保存货币。你将能够从一个账户发送这些货币到另一个。但在以太坊上我们有两种类型的账户。
1. 第一种类型的账户是被用户控制的,所以你拥有一个加密私钥,你可以用它来代表你的地址、为执行操作的信息打上电子签名。这些操作被称为交易,它们可以被广播到整个网络;如果它们被包含到了一个区块中,这些操作就会生效。
2. 另一种类型的账户在根本上由一段运行在区块链自身的代码来控制。所以,你可以拥有一个被一个计算机程序控制的账户,这个计算机程序有一些规则,它可能说的是:如果A发生了,那就发一些币给X;如果B发生了,那就发一些币给Y;如果C发生了,就仅仅保持现状。如果你发送一些币给这个账户,这个账户的代码就仅仅是这样一个东西:它在那时候起有能力将这些币转移到别的地方去。
从字面上来讲,这些就是被一个计算机程序直接控制的电子资产。当然,这些合约可以被用来做更多事情,不止于仅仅控制电子资产。它们可以被用来表示区块链应用里面任意复杂的商业逻辑。这也包括了像ENS,以太坊域名系统(Ethereum Name System)这样的东西,它可以被用来跟踪一些区块链上的正在投票的方案;它也可以被用来跟踪链上多种多样的发行人背书资产,还有很多不同的用例。基本上,任何人都可以通过定义一个合约来创建一个应用或者任何规则。
DNS, the Hello World of Ethereum
DNS,这个以太坊的Hello World,就是其中一个你可以写出来,并且客观来说仍然很有用的、最简单的应用。关键在这儿,这是一段代码,我的意思是,你也许已经注意到了,从去年开始代码已经发生了某种程度的变化。根本上来说,这是因为在去年,你的代码是用Serpent写的,而现在我们有了优于Serpent的Viper,待会可能还会有人来谈这个话题。所以,你有两种函数,而这两种函数代表了通过合约你可以做的事情。