帮助你快速了解什么是以太坊
Ethereum (以太坊)
什么是以太坊
以太坊是一个开源的区块链平台,用户可以在以太坊平台上随意的开发属于自己的去中心化智能合约。与比特币一样,以太坊是完全去中心化的,也就是说没有任何机构、政府、组织可以对其进行控制及干预。其代码是完全开源的,由来自全球不同的确的开发者联合开发的。任何人都可以对其代码进行查看。但以太坊的设计方向却与比特币完全不同,它的设计目标是让任何人都能轻松并安全的在其平台上搭建属于自己的智能合约。
下一代区块链技术
区块链这个概念,是2008年由中本聪在其著名的比特币白皮书"Bitcoin: A Peer-to-Peer Electronic Cash System"中提出的。区块链是一种分布式的计算机结构,网络上的每个节点都会对链上的每笔交易进行记录及执行,并把交易数据打包成一个数据块(block)。打包好的数据块,会按照顺序依次被添加到这个数据链条上,所有数据块环环相扣,互相验证,并受到密码学的严格保障其内容的真实性,针对数据链上任何数据的篡改,都会导致整条链上的所有其他数据的变动,从而将会被所有节点发现,并受到所有节点的拒绝。负责验证、打包交易的节点(我们称之为矿工),会得到相应的区块奖励及交易手续费,以保证全网有足够的节点运行,确保整个区块链上数据的安全。
比特币,就像一个分布式的超级账簿,里面记录着整个比特币网络里产生过的每一笔交易,无需第三方就可以实现人与人之间的点对点价值传输。就在比特币吸引着更多开发者和使用者的同时,一些基于区块链技术的新型数字货币也在酝酿着产生,这些新型的数字币都有其各自不同的优点,也在不同程度上解决了许多在比特币上的“痛点“,并实现了许多新的功能。而以太坊就是其中的一份子,2014年以太坊的创始人Vitalik Buterin,Gavin Wood,Jeffrey Wilcke就开始着手设计这样一个去中心化的智能合约平台。
以太坊虚拟机 (EVM - Ethereum Virtual Machine)
以太坊是一个可编程的区块链。它提供给用户的,并不是预先编写好的程序或应用,而是允许用户去创造属于他们自己的去中心化程序。
它的核心,就是以太坊虚拟机EVM,它可以执行任意复杂度的程序代码,也就是所谓的“图灵完备”。有Javascript及Python基础的开发者,可以很方便的在EVM上进行应用的开发。与其他的区块链一样,以太坊也包含一套点对点的网络协议,网络上的节点利用这个网络来维护及更新以太坊的数据内容,同时每个节点也同样运行着EVM并执行着同一套指令。
在整个以太坊网络,有许多在并行计算的节点,其设计初衷并不是让程序的效率变得更加高效,而实际情况,它的运行效率远及成本远低于现在的个人电脑。但是这带来的好处也是非常明显的,依靠这些运行着EVM的节点,以太坊有着非常好的容错性,从不死机,数据不会被任何人篡改,也不会有任何人可以对其进行屏蔽及干预。
以太坊这个平台,就如编程的语言一样,本身是中性的,并不提供任何特殊的功能及价值。其价值及用途是由企业及开发者所赋予的。基于以太坊的属性,一些特定的类型的应用,会非常适合采用该技术。例如,它特别适合那些需要进行点对点自动化交互的应用,比如说点对点的市场交易、自动执行的金融合约等等。比特币,实现了去中心化的,点对点的现金交易,而以太坊的影响可以能更为深远,它可以为金融交易、财产登记、投票、众筹等一系列活动提供一个安全、可靠、可信任的去中心化平台。
以太坊是如何工作的?
以太坊所采用的许多技术原理,对于了解比特币的朋友可能并不陌生,但是以太坊上也有许多技术上的创新及进化。
比特币网络本质上是一个巨大的超级网络账簿,上面记录了币特币网络上曾经发生过的每一笔交易,任何人可以轻松的透过区块浏览器查看到每个地址上的余额是多少,这些币来自哪笔交易,比特币网络里的基本单位就是这些交易记录(Transactions)。而以太坊的基本单位则是账户(Account)。以太坊的区块链网络跟踪并记录着每个账户的状态,账户之间的价值转移及互动会造成每个账户状态的改变。在以太坊里,包含两种不同的账号,它们分别为:
EOA账户 (External Owned Account,即外部账户),由私钥控制
合约账户,由合约内的代码所控制,而且合约账户只能被EOA账户所“激活”
对于大多数用户来说,这两个账户的主要区别为,EOA为由持有私钥的用户所控制的账户,而合约账户则为被内部代码所控制的账户。如果一个合约账户可以被用户“控制”,那是由于这个合约账户的内部代码,接受来自特定EOA的控制,而不是直接受控于持有EOA私钥的用户。以太坊里智能合约指就是存在于合约账户里的那些代码。当有交易指向这些合约账户时,里面的程序代码就将被激活并执行。合约账户,只有接受到EOA的指令(交易)时,才会执行相应的预设程序,所以在合约账户里面的代码无法自发的执行任何程序,如随机数的生成,或者建立与外部API的连接,除非它们接受到了来自EOA的指令。因为以太坊要求所有节点需要对执行结果进行验证,以保证结果的正确性。
与比特币一样,在以太坊内进行的每一个交易(合约的执行),都需要向网络支付一定的小额手续费,这些手续费会被用来奖励那些维护以太坊安全、负责交易验证等工作的矿工(网络节点)。用于支付这些费用的数字货币我们称之为以太币(Ether,交易所里的代码是ETH)。
但是,在整个以太坊网络里,有许多的节点在负责相同的工作,但是每次成功的打包到一个数据块并将它添加到区块链上的只能由一个节点完成,那么到底这些交易费应该奖励给哪个矿工(节点)呢?这就涉及到区块链里面一个重要的概念 - 共识机制,共识机制的作用就是解决奖励应该给谁的问题。现在主流的共识机制分为两种,分别为PoW (Proof of Work,计算量证明)以及PoS(权益证明)。以太坊现阶段采用的就是前者PoW(以后可能会转换到PoS),这点与比特币相同。
关于共识机制的内容,如果展开来讲,篇幅会非常大,所以我简单的说一下PoW。PoW主要就是让所有的节点都进行一些非常复杂的数学问题计算,而且复杂程度逐渐加大,要解决这些数学问题,会消耗大量的计算机资源,换句话说,就是需要付出很大的经济成本(电费,硬件设备费)才能解决这个数学问题。一旦成功的解决了这个数学问题,就获得了把包好的区块数据(Block)添加到区块链里的权利。同时获得相应的区块奖励(以太币的奖励)。
比特币网络需要解决的数学问题,可以用专用的ASIC矿机进行计算,这样就导致了大型矿场、矿池的出现,这就相当于出现了小型的中心化节点,与去中心化的理想状态背道而驰了。而以太坊所需要解决的数学问题,需要结合CPU和内存进行计算,而最适合挖矿的硬件便是个人电脑了(虽然现在也出现了以太币的专用矿机),这样就可以避免算力过度的集中。
资料来源
http://www.ethdocs.org/en/latest/introduction/what-is-ethereum.html#learn-about-ethereum
微博: NIKING3 翻译、整理及编辑
如果以上内容对您有所帮助,希望你能请我喝杯咖啡!
写的不错,赞