智能合约看上去就是一段计算机执行程序,满足条件时即可准确自动执行,那么为什么用传统的技术为何很难实现,而需要区块链等新技术呢?传统技术即使通过软件限制、性能优化等方法,也无法同时实现区块链的特性:一是数据无法删除、修改,只能新增,保证了历史的可追溯,同时作恶的成本将很高,因为其作恶行为将被远记录;二是去中心化,避免了中心化因素的影响。
基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明、可跟踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。
pragma solidity ^0.4.0; contract C { uint public data = 42; } contract Caller { C c = new C(); function f() { uint local = c.data(); } }
从区块链到智能合约
智能合约在分布式区块链中定义并执行。每笔交易和合约执行都必须在区块链内发生。有几个步骤来启用这个智能合约执行:
区块链开发人员使用编程语言将智能合约编写为脚本。在编码部分,开发人员实施合同背后的逻辑,以便在发生给定操作或事务时,脚本启用以下步骤。
一旦写好智能合约代码,脚本就会发送到区块链。分布式网络用于执行代码。通常情况下,每台可用于计算的计算机都可以执行合同,并且对于相同的输入,合同的输出应该相同,无论计算机在何处执行。
//use the ABI from your contract const abi = [ { "constant": true, "inputs": [], "name": "getHash", "outputs": [ { "name": "x", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [
区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
区块链的本质是一个分布式的公共账本,任何人都可以对这个账本进行核查,但不存在的单一用户可以对它进行控制,在区块链系统中的参与者共同维护账本的封信,它只能按照严格的规则和共识进行修改。