区块链和智能合约的基础知识介绍
扫描二维码
随时随地手机看文章
比特币的起源
区块链的历史起始于比特币,它是世界上第一个加密货币。它的创造者是一个被称为“中本聪”的神秘人。此人提出了一个愿景,就是创造一种完全去中心化的数字货币,也就是说,再也没有一个单一实体可以控制这种货币并且控制货币的转移、创造和存储。
这种数字货币将完全属于使用它的人。
为此,中本聪制定了一个对等计算机网络协议。当比特币网络上的某一用户A想要将比特币转移给另一个用户B时,A必须把要与B进行新交易的意图在同一时刻通知网络上的其他用户。
根据网络规则,所有网络内的计算机都必须存储所有比特币完整的交易历史。这就好比是每台电脑都有一个账本,记录着在网络上所有人比特币的交易情况。这种去中心化的过程使比特币不仅摆脱了由单一方控制的集中数据库,还能有效维持交易历史。
为了准确地跟踪加密货币的流动状态,这些比特币账本必须存储相同的信息。然而,网络是不可靠的。在用户可以随意进出网络的情况下,使每个人的账本都保持完全同步还存在一些困难。
这就需要引入区块链来帮助解决上述问题。
解决方案:区块链
用户将交易写入账本时,不是一次写一个,而是成批地写。这种批量写入的交易就被称为“块”。
一些被称为“矿工”的用户负责创建这些块。矿工们通过网络来监测用户们是否进行了比特币交易。一旦一个交易被抓取到并记录下来,那么发现此次交易的矿工就可以发布块,这个块包含了所有新交易。新发布的块中其实不仅包含新交易,也囊括了此前所有的交易。
在矿工将一个块发布到网络前,首先要确保每个用户的交易真实有效。判断标准是一组预定义的规则(这个规则指的是,比如不可以花费自己账户上没有的钱,以及钱不是凭空捏造的等等)。一旦确定新块真实有效,矿工就会把它添加到不断增长的交易列表中。由此,这些不断增多的交易块被称为区块链。用户可将交易历史存储在一个块链的数据库中。
区块链还有各种各样的奇妙之处,它允许通过网络安全发送加密货币。
如果你想了解更多关于如何开展挖掘工作、去中心化系统如何抵御攻击、比特币如何使用密码提供访问资金通道,或者想深入了解决策等内容,请阅读CertiK介绍比特币的系列文章。
在区块链上进行交易的流程:
· 区块链是一个数据库,它以相同的副本存在于世界各地的计算机中。
· 当用户想在区块链上进行或处理交易,就必须将此交易内容发送出去,等待矿工将其发布到新块中。要使一个块真实有效,就必须得到网络上所有用户的认可。
· 一旦发布了新块,用户的新交易就会被添加到区块链中。
· 交易不能被删除或者撤销,它们将永远被记录在区块链历史中。
区块链是我们记录交易的方式,也是比特币等去中心化加密货币的支柱。要让每个人都将所有交易记录下来,就必须要达成一个共识,而这个共识必须是不易被破解或改变的。
阅读到这里时,相信你已经了解了区块链的基础知识。
以太坊和智能合约
如果区块链系统不仅仅用于交易和付款呢?如果我们做到一组信息和规则达成一致后,再更改这些信息,结果会是如何?
在比特币中,被追踪的信息集是网络上每个用户的比特币资金。信息集的规则非常简单:没有人可以花别人的钱,没有人可以花自己没有的钱,区块链本身的框架也编码了一些其他的规则和限制。
然而,区块链不应该被限制在简单的资金转移领域。理论上讲,我们存储的信息可以是我们想要存储的任何东西,我们也应该凭借自己的想法去修改它的规则。
这是一个改变数字世界的发现。
设想一个标准计算机程序:它始于接受用户输入的某个存储状态,然后根据用户输入,通过一组预定的指令来运行及修改该状态。
那么任何像这样的程序都可以被“区块链化”。用户所输入的状态可以在区块链上表示出来,而任何交易都可以作为这个计算机程序的输入。代表这些计算机程序的指令可以与区块链网络上的每个矿工和用户进行交互,他们就可以根据最新的交易表来更新状态。
在比特币的领域中,我们更新的状态是账户余额集。虽然比特币交易是用户自己输入的,但账户余额其实是通过减去支出者的余额,再将交易金额加到接收者账户上计算出来的。
区块链本身只是一个交易列表,或者也可以说是交易状态本身。例如虽然所有的帐户余额并没有写到这个列表中,但是任何用户都可以使用已知的网络规则计算出当前的交易状态。
举个例子,以太坊是由比特币爱好者Vitalik Buterin发明的。他曾主张在比特币中使用“智能合约”,但是比特币社区拒绝了他的提议。于是他决定自己创建可以替代区块链的系统,而这个系统可以使用智能合约。
要理解为什么Vitalik要制造以太坊,我们首先要明白什么是智能合约,以及懂得智能合约的重要性。其实,智能合约只是一个程序,它允许我们以预定方式对货币流进行编程,但对区块链世界来说,智能合约的意义不止于此。
想象一下,在小区、小太和小币这三个人之间有一份真正的法律合同。这份合同是这样写的:“如果小太在8月13日前付给小区1000美元,那么小区将付给小币2000美元。否则小区不会付钱给小币。”
从某种意义上说,这是一种根据一定条件,由法律强制执行的转移资金的“程序”。智能合约的原理也是一样的,但它是由机器强制执行的。这台机器必须牢不可破,并且在没有中央权威的情况下自动执行。
智能合约可行的基础是区块链这项技术支持用户使用倾向的加密货币状态转移程序。以太坊允许用户在区块链上发布他们的智能合约,并根据这些合约指示未来货币的流向。
发布智能合约时,必须编写以太坊交易,而这个交易内必须含有合约代码。一旦交易成功,此合约将永远成为区块链状态的一部分。
在以太坊上,用户和上传的智能合约都有他们所引用的“地址”。任何人都可以将加密货币发送到他们所希望发送的地址,从而实现自由的去中心化交换。
用户可以决定要将货币发送到哪里。如果是智能合约发送了加密货币,那么加密货币流将由智能合约的代码确定。这段代码将决定这些加密货币最终是会支付给另一个用户,还是永远留在智能合约中。
在以太坊中,交易不止是简单的转账。这些“交易”包括发布新的智能合约或者与现有的智能合约进行交互。
智能合约的某些函数是公开的,允许终端用户与之交互。当其他用户在区块链上发布交易,并想要调用某些函数时,需要说明想要调用的函数名称及其参数。当带有函数调用的交易被挖掘和发布时,以太坊网络上的每台计算便以可预测的方式在应用程序中运行并执行该函数。这意味着可以根据代码所描述的状态变量来任意转移或修改货币。
顺便说一下,这些应用程序虽然被称为“合约”,但并不意味着它们与现实世界的合约功能等同。在区块链的世界里一切皆有可能,你可以编写任何想要的程序,在以太坊上发布包括游戏、拍卖、分散交换、代币销售等等各类应用程序。
智能合约只是区块链管家,它可以转移代码,并为了实现自动化、去中心化世界中的任何可能,不断升级。
来源: CerTIK