什么是区块链?
简而言之,区块链就是数据库。 这是一个不断增长的包含某些数据的数据库,并且具有非常出色的性能:
数据一旦存储在数据库中,就永远无法修改或删除。 区块链上的每条记录都是永恒的。
没有任何个人或组织维护数据库; 有数千个人这样做,每个人都拥有自己的数据库副本。
要了解几个人如何使他们的数据库副本与其他所有人保持同步,可以想象一个网络中有十个人。 每个人都坐在一个空的文件夹和他们前面的空白页。 每当有人在网络中做一些重要的事情(例如转移资金)时,他们都会向网络中的所有人宣布。

每个人都会在纸上记录这件事,直到填满这张纸。这个时候,每个人都必须通过解决一个数学难题来封装这页纸。通过解决数学难题,保证了每个人手中的纸都有着同样的内容,并且无法被修改。谁第一个解出了题,谁就会得到一定数量的加密货币的奖励。
在每一个账本后添加一个特殊数字,对账本的所有字符使用SHA256函数处理,我们要求这个特殊数字可以使得SAH256函数输出值的开头有30个零。这就意味着,所有的工作量证明就对应了账本,如果你修改了一个交易,哪怕只是其中一个字符,就会完全改变哈希值,就得重做工作量证明。规定,允许世界上的每一个人建造区块。每一个新建区块的人(找到了这个特殊数字 - SHA256值有30个零)都能获得奖励,这个奖励就是数字货币的发放,而寻找这个数字的人成为矿工,这个过程称为挖矿。形成新的区块后链到已有的区块上,形成区块链。

区块链存储什么?
区块链可以用来存储任何类型的数据,而区块链存储的数据类型可以赋予其价值。 因此,比特币的区块链存储金融交易记录,使其类似于美元或英镑之类的货币。 比特币除了提供美元服务外,没有其他目的。 以太坊是不同的。
以太坊实际是一个巨型电脑!但是,它是一个非常慢的电脑 – 大概比今天的普通电脑慢上 100 倍,并且非常昂贵。“以太坊电脑” 有着跟 90 年代智能手机 类似的境遇。除了一些非常简单的事情以外,它几乎做不了任何事情。那么,为什么以太坊还有这么多人趋之若鹜呢?这是一个非常好的问题。不夸张的说,以太坊正在席卷整个世界,因为它是一个完全去中心化的电脑,分布在世界各地。理解以太坊区块链是如何工作的,就会看出它是如何承担了一个世界电脑的角色。
以太坊如何工作?
像其他任何区块链一样,以太坊需要数千人在其计算机上运行软件来为网络供电。 网络中的每个节点(计算机)都运行称为以太坊虚拟机(EVM)的东西。 可以将EVM视为能够理解并执行以太坊专用编程语言编写的软件的操作系统。 以太坊虚拟机执行的软件/应用称为“智能合约”。
建立智能合约的两种方式https://blog.csdn.net/Keith003/article/details/81873154
要在这台世界计算机上完成任何事情,您需要付出代价。 但是,您不必以美元或英镑等常规货币付款。 取而代之的是,一切都必须使用网络固有的一种称为以太币的加密货币支付。 以太币与比特币完全一样,除了它还可以用来支付在以太坊上执行智能合约的费用。
人类和智能合约都被视为以太坊的用户。 无论人类用户可以做什么,智能合约都可以做到,有些则可以。智能合约的行为与网络中任何其他人类用户完全一样。 它们都可以像其他货币一样发送和接收以太币。但是与人类用户不同,智能合约还可以执行预定义的计算机程序,以在触发时执行各种操作。 为了了解智能合约的力量,我们来看一个例子。
智能合约的力量
想象您和我押注明天的天气。我敢打赌明天会晴,而你打赌会下雨。我们同意,输家必须给赢家$ 100。我们如何做到这一点并确保失败者遵守诺言?我可以想到三种不同的方式:
-
互相信任
做到这一点最简单的方法就是互相信任。如果我们已经很长一段时间成为朋友了,那么相互信任就很容易。我知道你住在哪里,并且你知道关于我的各种令人尴尬的事情。但是,如果我们是完全陌生的人,事情就会变得更加困难。您没有理由相信我,我也没有理由相信您。 -
签署法律协议
另一种可行的方式是将我们的投注公式化为法律协议。我们俩都将签署一项协议,详细定义我们的所有赌注条款,包括失败者违反协议时会发生的情况。
该协议使我们在法律上有义务向获胜者付款,但这并没有任何实际目的,因为通过合法途径强制执行该协议比下注的价值更高。
- 获得共同朋友的帮助
我们可以找到一个我们都信任的共同朋友,我们都会分别给他/她100美元作为保管费。第二天,他/她将检查天气情况,并向赢得该投注的任何人提供总计$ 200的奖励。简单而又容易,除了不是:如果可信赖的朋友以200美元的价格逃走怎么办?
现在,我们有三种不同的下注方式,但是每种选择都有其缺点。因为我们是陌生人,所以我们不能互相信任。强制签订法律协议的费用太高,以至于实际上不可行。从共同的朋友那里获得帮助会再次提出信任问题。
在这种情况下,以太坊的智能合约可以节省一天的时间。智能合约就像可信赖的共同朋友,但是用代码编写。以太坊允许我们编写一个接受双方价值100美元的以太币的软件,然后在第二天,使用开放天气API来检查天气并将总价值200美元的以太币转移给获胜者。

编写智能合约后,就无法以任何方式对其进行编辑或更改。 因此,您可以确保无论合同规定了什么,无论什么合同都将执行。
但是如何执行智能合约? 以及它与区块链有何关系?
智能合约与区块链有何关系?
每当执行智能合约时,它都会将有关执行的信息记录在一个块上作为事务。 在非常高的水平上,以太坊区块链上的交易如下所示:

除了最后一个字段,这些字段不言自明。 “数据”字段赋予了以太坊独特的力量。 “Data”字段用于记录智能合约作为交易的创建和执行。 以太坊区块链上的任何给定区块可以包含三种交易:
-
从一个人转移到另一个人的普通交易
这些普通交易,就像是比特币交易。如果你直接发送以太给你的朋友,那么 data 字段就是空的,这样的交易就是普通交易。
image.png
-
只有发送方却没有接收方
如果一笔交易中没有接收方,这意味着此次交易是用 data 字段的内容在网络中创建一个智能合约。data 字段包含了代码,这些代码就像是网络中的其他用户一样。
image.png
-
将以太转到一个智能合约
无论何时,只要一个用户(或是一个智能合约)想要执行一个智能合约,他/她/它 都会创建一个智能合约的交易,并在 data 字段放置执行指令。
image.png
与其他区块链一样,无论上面提到的三种事件何时发生,都会被公布到网络中,并且网络中的每个人都会对它进行记录。除了记录,每个节点还会执行智能合约,来使得他们的 EVM 状态与网络的其他部分同步。
每个节点都执行软件的一部分,因此,使得整个网络像一个巨大(但是缓慢)的分布式电脑。每次无论多么小的执行,都会被记录到区块链上,永久存在。
Gas 是什么东西?
如果用户想要使用和执行智能合约,就必须要为执行该智能合约付出一定费用。这笔费用是给了实际花费了内存,存储,计算和电力等资源来执行合约的节点。
为了计算智能合约的费用,合约中的每条语句都有收费标准。比如,如果执行的语句用到了节点的内存,这个语句会有一个价格。如果执行一个语句用到了节点的硬盘存储,这些语句又是另一个价格。在这里,定义成本的单位就叫做 Gas。最终,Gas 会通过汇率转换成以太(ETH)。
无论何时执行一个智能合约,你都必须要定义一个可以花费的 Gas 的最大值。当智能合约执行完成,或是达到了 Gas 的限额,就会停止执行。这是为了避免在智能合约中出现无限循环,防止出现一些反复执行的语句导致程序停滞。
因为程序员的一些错误,很可能会导致这样的事情发生。所以每次重复执行时,都会消耗掉一些分配的 Gas,因此使得不会出现无限循环这样的事情。没有必要因为程序员的错误,导致一个节点在执行时崩溃。使用 Gas 就解决了这个问题。
网友评论