说起区块链的应用大家第一反应可能会想到比特币,比特币经常被称之为“全球账簿”,这个账簿记录的仅仅是一种货币——比特币的全部账单。
但今天想要说的不是“比特币”而是“以太坊”一个任何人都可以上传和执行应用程序,并且程序的有效执行能得到保证的地方。这种保证依赖的正是以太坊系统中去中心化的,由全球成千上万的计算机组成的,鲁棒性极强的共识网络。
以太坊是什么样的一个平台?
Ethereum(以太坊)是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用。 Ethereum可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理, 合同和大部分的协议,知识产权,还有得益于硬件集成的智能资产。
简单地说,以太坊 = 区块链 + 智能合约。从平台的角度来讲,以太坊类似于苹果的应用商店;从技术角度来讲,以太坊类似于一个区块链操作系统。
∇以太坊的组成结构
以太坊中的智能合约是运行在虚拟机上的,也就是通常说的 EVM(Ethereum Virtual Machine,以太坊虚拟机)。这是一个智能合约的沙盒,合约存储在以太坊的区块链上,并被编译为以太坊虚拟机字节码,通过虚拟机来运行智能合约。
以太坊虚拟机EVM了解一下
好像所有区块链技术那样,以太坊会使用在自己计算机上运行的节点,来保证安全性同时也维持信任。每个参与到以太坊协议中的节点都会在各自电脑上运行软件,这就被称为以太坊虚拟机(EVM)。
首先,以太坊虚拟机会通过防止DOS攻击,来确保安全性,这个攻击是数字货币领域的挑战。其次,以太坊虚拟机会编译以太坊程序语言,并且保证这之间的通信不会有任何的干扰。
更详细地来看,以太坊虚拟机可以很容易就被理解,我们可以当作一个系统用来为以太坊智能合约创建运行环境。我们都知道,智能合约可以让世界各地的人们进行交互和交换价值,并且无需中心化的机构。并且毫无疑问,这个技术会在不远的未来,颠覆很多产业。
以太坊虚拟机和智能合约之间的关系
以太坊区块链 vs 以太坊虚拟机 vs 智能合约
以太坊区块链有三种转账方式: 首先,你可以将以太坊从一个转账转移到另一个。这些转账和比特币转账差不多。
其次,用户还可以不给特定对象转账。这类转账就是创建智能合约。
最后,从外部账户转账到智能合约。每次账户想要执行智能合约,转账就会根据智能合约完成,而且相关的执行规则会记录在数据中,来指导这个合约如何运行。
每次运行智能合约,都需要支付给以太坊虚拟机进行执行。这个费用是支付给特定的节点,它们是用来存储,计算,执行和验证智能合约。
每个智能合约的费用是基于每个状态成本来计算的。费用是通过燃料费用来支付的,然后会转换成以太坊。
转账过程中以太坊虚拟机会检测,发出者有足够的手续费用,不然转账就会退回。而且转账费用不会退回,这会支付给矿工。
如果转账失败是因为接受者地址有问题,以太坊虚拟机会把发出的资金数量以及相关的手续费,退还给发出者(没有矿工收到费用)。
但是,有了以太坊虚拟机和智能合约,你可以通过简单地点击按键,就可以在全球进行交易,而且还无需任何中介,因此也避免了多余的费用
以太坊的数据结构
在常规的互联网应用比如支付宝、微信中,用户数据和交易数据都存放在应用提供者的中心服务器上,通过IOE、MySQL集群等进行持久化的存储,当普通节点进行交易时,会向中心节点发出请求,中心节点进行各种增删改查的操作后,将结果返给用户节点。
在以太坊中并不存在中心服务器,取而代之的是多个通过p2p协议连接起来的平等节点,在众多节点中存储了所有的数据。当用户发起一笔交易,会通过p2p协议将交易广播出去,矿工节点对此进行验证、打包并进一步广播至全网,在区块链内确认后,此操作即认为是不可更改的。
以太坊兼具去中心化和分布式,或者说在一个分布式平台上运行了一个去中心化的程序。在单个节点中,数据是以区块链(BlockChain)的形式来存储的。区块链由一个个串在一起的块(Block)组成。以太坊大概每十几秒会生成一个新块,记录了这个段时间内的各种信息。
以太坊被描述为为一个交易驱动的状态机,它在某个状态下接受一些输入后,会确定的转移到一个新的状态。具体来说,在一个以太坊的状态下,每个账户上有确定的余额和存储信息,当接收到一组交易,被影响账户上的余额和存储信息会发生变动。从第一个创世块开始,不断的收到交易,由此能进入一连串新的状态。
按照这个思路,以太坊每隔一段时间把交易数据和验证信息打包在一个块里,依次串接起来,就成为一个链。块越新,块号(BlockNumber,或叫块高度)便越大。
每个块的块头里,保存了前一个块的块头哈希值。这样区块链里的块就彼此联系了起来。假如我们更改了前间某个块的内容,后面块的父块哈希就和它对应不上,这种块就不被大家认可。这就保证了区块链数据的不可篡改性。
∇块头的结构图
比特币 VS 以太坊:未来谁拥有更大的发展潜力?
在知乎上逛了一圈,发现对于这个问题可谓是众说纷纭。
比特币的设计只适合加密数字货币场景,不具备图灵完备性,也缺乏保存实时状态的账户概念,而且存在 PoW 机制带来的效率和资源浪费的问题。最关键的问题是,在商业环境下,需要有高效的共识机制、具有图灵完备性、支持智能合约等多应用场景,以太坊在这种情况下应运而生。
在这里相信每一个技术的存在都是有一定道理的,“比特币和以太坊未来谁拥有更大的发展潜力”这个问题相信不久的将来随着市场的发展自己给出答案。