以太坊(Ethereum)创世揭秘

以太坊(Ethereum)创世揭秘

封面中的这个年轻人名叫维塔里克·布特林(Vitalik Buterin),以太坊创始人。我谨以这种方式向他表达我的崇敬之意。

什么是以太坊(Ethereum)

以太坊(Ethereum)是一个基于区块链技术,允许任何人构建和使用去中心化应用的区块链平台。像比特币一样,以太坊是开源的,并由来自全世界的支持者们共同维护。与比特币仅提供了有限功能的脚本不同,以太坊提供了一个“图灵完备”的虚拟机,称为以太坊虚拟机(Ethereum Virtual Machine),简称EVM,用户可以在EVM上创建智能合约(Smart Contract)。以太坊平台中的通用货币为以太币(Ether),简称ETH,以太币可用于账号间的转账交易或者为EVM上运行的合约消耗的资源付费。

以太坊的创始人

维塔里克·布特林(Vitalik Buterin),1994年1月31日生于俄罗斯,后移居加拿大,拥有俄罗斯和加拿大双国籍。2011年,通过比特币,他了解到了区块链和加密货币技术,并被区块链技术深深的吸引。2011年9月,作为联合创史人之一,创办了旨在向读者提供及时准确的区块链相关资讯的网站:Bitcoin Magazine

此后的两年半里,布特林一直在思考区块链技术的更多创新应用,并最终在2013年9月,发布了以太坊白皮书(Ethereum White Paper),当时他只有19岁。

现在,作为以太坊的灵魂人物,他正领导着以太坊团队,致力于以太坊的开发和推广。


众筹计划

为了筹措开发以太坊需要的资金,布特林发起了一次众筹。与一般的众筹不同,这次众筹只接受比特币支付,并会在以太坊正式发布后,使用以太坊中的通用货币以太币作为回报。这次众筹的简要情况如下:

  • 时间:2014年7月22日-2014年9月2日,共42天。
  • 兑换比例:前14天每1BTC兑换2000ETH,之后每天1BTC兑换的ETH数额减少30,直到1337ETH后不再减少。
  • 分配:众筹发行的ETH数额的19.8%将由以太坊基金会拥有,也就是说,初始发行的以太坊中,有1 / ( 1 + 19.8% ) = 83.47%属于参与众筹的人,剩下的16.53%由以太坊基金会所有。
  • 用于接收众筹比特币的地址为:36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2

这种形式的众筹,在今天我们一般称为首次公开电子币众筹(Initial Coin Offering),也就是大家常说的ICO。


技术细节

要想成功的完成这次众筹,要解决几个问题:

  • 证明众筹的地址是以太坊团队能够控制的
  • 众筹过程公开透明,筹到了多少BTC要对大家公开
  • 要能够及时准确的发放以太币给相应的参与众筹的人

以太坊团队在众筹开始的前一天,花费了这个地址的一个UTXO,从而证明了他们持有这个地址的私钥,证明了是他们在控制这个地址。可以在这里看到这个交易:592eaf32d83a7db47321642c4b3837d38edfbe57910f4f6abd548e578f51f80a

公开透明,这不难做到,筹到了多少BTC,只要看一看比特币区块链中地址36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2在众筹期间收到了多少BTC就可以了。

最后一点比较麻烦,新生的以太坊和比特币根本就是两个区块链,完全没有任何交集,怎么能够建立起关系呢?以太坊的开发者们想到了一个办法,甚至为了方便小白,还提供了一个脚本ethereum/pyethsaletool

步骤如下:

  1. 用户自己生成一个随机数seed
  2. 使用seed生成一个以太坊的公私钥对(pub , priv)
  3. 将公钥pub使用SHA-3摘要算法转换成Hash值,也就是以太坊中的钱包地址eth_address
  4. 将eth_address使用SHA256摘要算法生成Hash值,并转换成一个比特币地址btc_address
  5. 最后,参与者将想要支付给众筹项目的金额分为三部分,0.0002BTC的交易费,0.0001BTC支付到btc_address,剩下的金额支付到众筹地址36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2
  6. 把eth_address发送给以太坊项目组,eth_address将被写入创世区块,从而使参与者获得以太币。
  7. 保管好eth_address对应的公私钥对(pub , priv),以太坊正式发布后,就可以拥有和消费以太币了。

支付给步骤4中生成的btc_address的0.0001BTC将被销毁,为什么这么说呢?比特币的地址其实是一个公钥的Hash值,当你想花费输出到某个地址的比特币时,你要提供两个东西,你的公钥和你使用对应私钥对交易的签名。当接收者验证一个交易时,先检查你提供的公钥的Hash值是不是和你要花费的地址相符,如果相符,再检查签名是不是这个公钥对应的私钥生成的。这个btc_address不是使用公钥生成的,如果想花费它,要从Hash反推出公钥,再从公钥反推出对应的私钥,这都是不可能的。因而这些比特币永远的被销毁了,好在0.0001BTC并不多。

那么为什么要这么做呢?为了解决众筹的比特币和未来产生的以太币的关联问题,以太坊项目组只要扫描以自己的地址36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2为输出的所有交易,再使用同样的方法用你提供的eth_address生成一个btc_address,就可以证明,某笔包含btc_address为输出的交易是你支付的,也就可以把eth_address和众筹金额关联起来了。


举个例子

区块链最大的好处就是永恒和公开,我们可以任意挖掘历史。让我们看看当年的参与者留下了什么吧。

我们随意从以太坊创世区块中找一位众筹参与者出来,看看他是怎么参与众筹的。

  1. 生成eth_address:9c9de44724a4054da0eaa605abcc802668778bea
  2. 生成btc_address:1FH7ZSAiBqeJExWZ7ZWZyqDrK2ehF1g9xz
  3. 创建一个比特币交易,支付0.0002BTC的交易费,支付0.0001BTC到btc_address,剩下的金额支付到众筹地址36PrZ1KHYMpqSyAQXSG8VwbUiq2EogxLo2
  4. 把自己的eth_address告知以太坊项目组

完成这些后,他在比特币区块链中留下了一个交易:37324fd32620179fd1b2746d13981680067deeb0fbb5055f06cec507208f1260

因为上面讲过的原因,1FH7ZSAiBqeJExWZ7ZWZyqDrK2ehF1g9xz上的0.0001BTC永远不可能被花费,可以在图中看到,三年过去了,它仍然是未使用状态,如果有一天这0.0001BTC被花费了,那么就将是比特币毁灭的一天。


下面以太坊项目组上场:

以太坊项目组收到参与者用邮件或者其他方式发来的eth_address(9c9de44724a4054da0eaa605abcc802668778bea),使用相同的算法转换成btc_address(1FH7ZSAiBqeJExWZ7ZWZyqDrK2ehF1g9xz),然后到比特币区块链中去找这个地址,发现了这个地址和交易37324fd32620179fd1b2746d13981680067deeb0fbb5055f06cec507208f1260相关联,这个交易中有支付给众筹地址的比特币,从而证明了eth_address的主人确实支付了众筹款项0.146BTC。

这位众筹参与者于2014年8月26日支付了0.146BTC,按当时的比率,1BTC=1370ETH,最终他获得了0.146 * 1370 = 200.02ETH。

如果你对这个eth_address转换成btc_address的过程感兴趣,我准备了个python脚本,有兴趣的朋友可以去github查看:eth_address_to_btc_address.py


众筹结果

众筹地址共收到8,947个交易,来自8,892个不重复的地址,有两个地址是在众筹时间段之外支付的,所以这两个地址不能获得以太币。通过此次众筹,以太坊项目组筹得31,529.356,395,51BTC,当时价值约1800w美元,0.8945BTC被销毁,1.7898BTC用于支付比特币交易的矿工手续费。

同时,以太坊发布后,需要支付给众筹参与者共计60,108,506.26以太币。

毫无疑问,这次众筹是极为成功的,正是这次成功的众筹,为以太坊项目组筹集了足够的启动经费。


创世区块

在众筹成功一年后的2015年7月30日,以太坊正式发布。项目组兑现了承诺,创世区块中包含了8893个交易。

为什么是8893个交易呢?这其中包含8890个众筹参与者,他们获得了用BTC兑换的以太币,共计60,108,506.26以太币,2个没能在规定时间参与的地址,虽然没有得到以太币,但是也被记录在区块链中。

另有11,901,484.239480以太币被支付给了以太坊基金会0x5abfec25f74cd88437631a7731906932776356f9

所以,从创世那一刻起,以太坊中就有了72,009,990.49948以太币。

通常创世区块都是预先生成好的,以太坊的创世区块就是使用这个脚本genesis_block_generator.py生成的。这个生成好的创世区块的Hash(0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3)会被写进钱包软件中,从那一刻起,以太坊便正式宣告诞生。如果你想看看它在哪儿,这个Hash在params/config.go中。


以太币的来源

与比特币不同,以太坊中的以太币并不全是矿工挖掘出来的,有大约7200w以太币是在创世时就已经创造出来了。到本文写作时,已经存在94,418,166.44以太币,其中76.3%是创世区块中包含的,挖矿产生的2100w以太币仅占到不足四分之一。

数据来源:Ethereum Market Capitalization and Supply Statistics

严谨的说,以太币的来源有两个,创世区块中包含的7200w和大约每年挖矿产生的1872W,并且目前为止,总量无上限。


关于ICO的看法

众筹时均价0.3美元的以太币,而今已经超过300美元,升值1000倍。然而,以太坊的成功不是偶然,也不是暴利,更不是圈钱。以太坊实现了图灵完备的EVM,这是区块链技术领域划时代的创新,为智能合约提供了基础。短短两年时间,以太币市值不断上升,成为仅次于比特币的第二大电子币,并被新的ICO项目用来筹集资金。

ICO仅仅是一种融资手段,不应该被妖魔化。

IPO是用美元、人民币等法币换股权证书,ICO是用有一定价值的数字资产换代币,二者如果都在合理的监管下,确保资金不被挪用,都是利国利民的好事儿。

然而,现在ICO已经被曲解和利用,成为了投机者手中圈钱的工具。看过《华尔街之狼》的人可能知道,主角贝尔福特利用了未公开上市的低价股,也被称为仙股,或者垃圾股,电影中称之为“粉红单”来骗取投资人的资金。如果缺乏监管,股票和ICO都可以用来圈钱,都可以扰乱市场。违法、欺骗、圈钱,这不应该是ICO的原罪。

ICO本无罪,有罪的是贪婪的人性和小白的愚蠢,只要监管得当,技术原理为更多人所了解,我相信它终会有所作为。


如果你喜欢这篇文章,就请收藏或点赞吧。

如果有任何问题或指正,包括不同的看法和观点,欢迎留言讨论。

编辑于 2017-09-05

文章被以下专栏收录