zoukankan      html  css  js  c++  java
  • (转)以太坊(Ethereum)创世揭秘 以太坊(Ethereum)创世揭秘

    什么是以太坊(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本无罪,有罪的是贪婪的人性和小白的愚蠢,只要监管得当,技术原理为更多人所了解,我相信它终会有所作为。

    转自:https://zhuanlan.zhihu.com/p/29028693

  • 相关阅读:
    Linux的命令、用户、权限管理
    Java中快捷键
    数组的学习
    Java中方法定义和调用的学习
    java中的标识符、修饰符、关键字
    MYSQL的学习
    JavaScript小白教程2
    navicat中选择utf-8时的困惑
    python小白教程
    英语单词
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/8550497.html
Copyright © 2011-2022 走看看