首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我是以太坊,不是某个币!

虽然以太坊和比特币经常被拿在一起进行比较,但是它们几乎是完全不一样的。除了它们都是基于区块链技术的数字货币而已。但是不像比特币仅仅只是一个数字货币。以太坊独有的特性使它就像一个巨大的分布式计算机一样。

为了跟深入的了解以太坊,你必须先了解区块链。如果你已经对区块链很了解了,那么请继续阅读本文。如果你对区块链不了解的话,建议小主先阅读前两篇文章。

再次敲黑板强调:区块链就是一个去中心化的分布式数据存储技术

1.一旦被存进了数据库,数据是不能被篡改或者删除的。

2.该数据库不是被哪一个机构或者个人占有的,每个人都有一个数据库的拷贝。

为了能够更好地帮助大家理解,一群人如何一起同步记账,我们想象现在区块链是个用户。每个人都有一张空的纸,一个放纸的文件夹和一支记账的笔。当其中有人发起交易的时候,他会广而告之给区块链里面所有的用户。

其它的人会在纸上记录下这一笔交易,直到纸上没有剩余的空间来记录了。这个时候,大家会通过解一道数学谜题得到一个唯一的工作量证明,盖在这张纸上然后将这一页封存起来。工作量证明确保了这一页的内容不会被篡改。谁先算出这个工作量证明,谁就会得到一定量的数字货币的奖励。

当这一页被封存以后,这一页(一个区块)就顺序归档到我们准备好的文件夹(区块链)中。随着这个过程的不断进行,就形成了我们的区块链了。

区块链到底存储什么?

一个区块链可以用来存储各种类型的数据,这个区块链所存储的数据类型决定了这个区块链的特性和价值。比特币区块链存储的是一笔笔数字货币的交易,因此,比特币更像是美元或者英镑。除此之外,比特币跟美元也就没什么区别了。但是以太坊是完全不一样的。

以太坊不仅仅是数字货币,它存在的意义并不是用来像货币一般交易那么简单,它更像是:

以太坊就是一个超大的计算机!但是是一台非常慢的计算机——比今天我们用的电脑慢100倍——而且还非常的贵。毫不夸张的说,就跟90年代的手机一样,做不了太多的事情。

这听起来一点都不让人兴奋,甚至还有一点尴尬,那它为什么还是能在全球的范围内挂起一阵风暴呢?因为这台电脑不是固定放在一个地方的,而是分布在世界各地的,我们叫它世界电脑吧。那么接下来就让我们来探寻一下这个世界电脑背后的故事。

以太坊到底如何运作?

和其它的区块链一样,以太坊需要成千上万的人在他们的电脑上运行软件才能支撑起整个区块链的算力。每一台电脑都需要运行一个叫EVM(以太坊虚拟机)的软件。EVM就是一个能够理解以太坊独特编程语言的操作系统。EVM所运行的程序叫做“智能合约”。

为了让这台世界电脑完成你要它做的事情,你需要付费。但是你支付的不是人民币或者美元。而是以太坊专用的数字货币以太币(ether)。以太跟比特币一样可以在用户直接流通、交易。还可以用来支付让智能合约运行的费用。

在以太坊的世界里,用户和智能合约都会被看成是一个节点。用户能干的事情,智能合约也能干,甚至更多。

智能合约和用户一样,都可以接受以太币。除此之外,以太坊还可以在特定的条件下被触发以执行一段之前就预设好的程序。为了能够更好地理解智能合约,我们不妨来看一个例子。

智能合约的魔力

比如我和你现在来赌100块明天的天气是什么。我赌明天是晴天,你赌明天是下雨。那我们怎么来保障输的一方确实能够如约给钱呢,那么一般来说我们有以下的几个途径:

1.相互信任

互相信任是最简单方式了,比如我跟你是老朋友了,彼此知根知底。你肯定不会为了区区100块钱,失去了我对你以后的信任,甚至是我们共同的好友对你的信任。那么如果是两个陌生人事情又会如何呢?

2.签一个具有法律效力的协议

如果是陌生人的话,我们可以把刚才的赌约写到一个协议里面,两个人签字按手印,使这个协议具有法律效力。但是就为了这么小的一个赌约如此大动干戈也太夸张了,况且真的有一方违约了,打官司耗费的人力财力又无法估计,所以还是作罢了吧。

3.通过我们共同相信的人

既然这样,那我们就找第三个人来参与吧。打完赌以后,我们各自交100块给这个人,第二天这个人根据天气情况把总共的200块钱给赢得赌约的人。那么这样问题又来了,万一第三个人拿着钱跑了怎么办呢?

这个时候,以太坊的魔力就体现出来。智能合约是基于区块链技术的,这就决定了它是不能被篡改的。因此你大可放心,智能合约一定会按照你们当时打赌的时候预设的那样执行。

那么智能合约又是如何部署并且执行的呢?

当智能合约被执行的时候,这次执行的信息会被记录在区块上。每一次交易的数据结构如下图所示:

前四个参数非常好理解。最后一个“Data”这个参数赋予了以太坊不同于比特币的神奇能力。“Data”使区块每次记录的交易可以包含智能合约创建和执行时候的各种信息。总体来说,有三种类型的交易:

1.用户之间的交易

如果是普通用户之间的交易的话,那么Amount(数量)就足够了,所以这里Data就可以留空了。

2.只包含发起用户一端的交易

当一个交易只有发起用户没有接受用户的时候,那么就说明这次交易的目的是为了创建一个智能合约。那么这个时候,“Data”就会包含该合约里面的具体内容,比如在什么条件下执行什么程序 。

3.用户向智能合约发起的交易

当用户需要智能合约执行的时候,需要向该智能合约发起一笔交易,此时“Data”中便需要存储执行这段代码所需的参数值等。

和其它的区块链一样,以上任何类型的交易发生的时候,整个网络都会存储下这笔交易。并且在自己的终端执行这段智能合约的代码并且和其它的用户进行同步。

每一个参与到以太坊区块链节点都会执行代码,这就让这个以太坊看起来像是一个分布在世界的巨大的电脑(但是很慢)。每一次代码的执行都会被永久存储在区块链上。

等等,我还听说有一种叫gas的东西,那是什么?

之前我们说过了,如果用户希望智能合约运行,需要支付一定的费用。这笔费用的目的是为了弥补各个节点在记录交易和执行代码的时候,所耗费的内存,电力,硬盘等等。

以太坊会根据你所需要耗费的资源的类型和用量来计算这笔费用。比如如果你消耗了内存,那么就会加一笔内存相关的费用,如果你消耗了硬盘存储空间,那么就会再加一笔和硬盘相关的费用。这里的费用都是以gas作为单位的。但是最终gas会根据汇率被转成ether。

当你执行智能合约的时候,你会设置一个最大能消耗的gas的数量。当消耗量达到你设置的最大值的时候,智能合约就会停止执行。这是为了防止因为程序漏洞比如无限循环或者其它原因导致程序一直不停的执行从而大量耗费资源。

总结一下,以太坊不只是一个可以被用来交易的数字货币。它更大的目的是为了让用户能够有能力去让这台巨大的世界电脑为他们服务。

但是,目前来说,这台分布式电脑是又大又慢的而且还很贵。那么什么电脑快呢?当然是中心化的服务器了。

中心化的服务器让我们用很少的钱就可以得到很快很好的服务体验,但是与此同时,我们不得不让这些服务器的拥有者可以掌握我们的一切,而且一旦服务器瘫痪,我们就只能N脸懵逼了。而去中心化的电脑虽然很慢,但是确是always online的,除非所有的节点都下线了。有人的地方就有江湖,有网的地方就有以太坊。

终于码完字了,撒花,撒花!

关注我栈

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180510G1GZLD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券