浅谈智能合约

2018-12-10  本文已影响184人  夜阑风声

作者  上手区块链  夜阑风声

智能合约这个概念是在1994年,被一个叫做尼克萨博的人首次提出。尼克萨博在当时自己的网站上发表了几篇文章,文章中提到了智能合约这个理念。

他认为:智能合约是一套以数字形式定义的承诺,包括合约参与方以及可以在合约上面执行承诺的协议。

随着人们的认知迭代和科学技术的发展,智能合约这个概念也越来越受到人们的关注。

智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。

智能合约的工作原理

下面我们来说一下智能合约的工作原理:

数字形式的智能合约意味着合约是通过计算机代码实现的。在智能合约中,只要参与方达成协定,智能合约就会建立起各方的权利和义务。然后通过计算机网络实行合约。

在这个过程中,我们可以把过程抽象成:合约的构建、合约的储存以及合约的执行,三个部分。

第一部分,合约的构建

智能合约由多个用户共同参与制定,可用于解决用户之间的交易行为。在智能合约中可以明确各参与方的权利和义务,程序开发人员会把这些权利和义务编入系统,在系统中,开发人员一般会把触发合约自动执行的条件全都编辑进去。

转换成实际操作就是。用户首先在网络里注册成为用户,注册成功后,用户会得到一个公钥和一个私钥。公钥对于用户来说就是用户在区块链上的账户地址,私钥呢就是作为操作该账户的唯一钥匙。

用户根据需要,制定一份为了满足双方需求的承诺,承诺包含了双方的权利和义务;这些权利和义务将会以电子化的方式,被程序员编译成为机器语言。参与承诺的用户分别用各自的私钥对合约进行签名,以确保合约真实有效。签名后的智能合约,将会根据其中的承诺内容,被传入区块链网络中。

第二就是合约的储存

一般情况下,智能合约会通过P2P的方式在区块链网络中扩散,网络里的每个节点都会收到一份合约;网络中的验证节点会将收到的合约先保存到内存中,然后等待新一轮的共识时间,触发对该份合同的共识和处理。

等共识时间到了,验证节点就会把内存中保存的合约打包成一个合约集合(set),然后计算出合约集合的Hash值,并将这个合约集合的Hash值组装成一个区块,扩散到网络里面。

其它验证节点收到这个区块结构后,会把里面包含的合约集合的Hash取出来,与自己保存的合约集合进行比较;同时发送一份自己认可的合约集合给其它的验证节点;通过这种多轮的发送和比较;所有的验证节点最终在规定的时间内对最新的合约集合达成一致。

第三是合约的执行

智能合约会定期检查自动机状态,逐条遍历每个合约内包含的自动机状态、事务以及触发条件。(这里面的自动机是计算机科学的重要基石,它在软件开发领域内通常被称作有限状态机,是一种应用非常广泛的软件设计模式。)

将条件满足的事务推送到待验证的队列中,等待共识。未满足触发条件的事务将继续存放在区块链上。

进入最新轮验证的事务,会扩散到每一个验证节点,与普通区块链交易或事务一样,验证节点首先进行签名验证,确保事务的有效性;验证通过的事务会进入待共识集合,等大多数验证节点达成共识后,事务会成功执行并通知用户。

事务执行成功后,智能合约会自动判断所属合约的状态,当合约包括的所有事务都按顺序执行完后,智能合约将会把状态标记为完成,并从最新的区块中移除该合约。

整个事务和状态的处理都由区块链底层内置的智能合约系统自动完成,全程透明、不可攥改。

——————————————————————————

 我和我的小伙伴组建了“上手区块链”社群。目的是为了帮助区块链小白们了解区块链相关知识,并通过写作实现价值变现。如果您对区块链有什么困惑,欢迎加入我们。  

上一篇下一篇

猜你喜欢

热点阅读