智能合约可以独立运行,但也可以与任何其他智能合约一起运行。当它们彼此依赖时,它们可以以某种方式被设置。例如,成功完成一个特定的智能合约可以触发另一个智能合约的启动,依此类推。从理论上讲,整个系统和组织完全可以依靠智能合约运行。
这只是智能合约潜在用途的一个例子。智能合约能够帮助货币、财产和其他任何有价值的东西的交易,确保交易过程完全透明,其不但无需中介服务及其附带费用,还消除了双方之间的信任问题。特定智能合约的代码包括了各方商定的所有条款和条件,有关交易本身的信息则被记录在区块链中,即去中心化的分布式公共账本。
尽管智能合约具有上述优势,但也有其自身无法获取链外数据的局限性。无法安全访问可验证和最新外部数据,意味着智能合约将无法普及。
可以安全获取数据并投喂给智能合约的外部组件-预言机则能帮助其打破信息束缚。由于预言机充当智能合约和外部数据之间的中间软件,它们对于智能合约的功能和互操作性至关重要。如果不适时加以去中心化和保护,损坏或陈旧的数据可能会触发智能合约的错误执行。单点故障会抵消区块链和智能合约去中心化带来的益处,而预言机便是这些故障潜在的克星。
function send(address receiver, uint amount) public { if (balances[msg.sender] < amount) return; balances[msg.sender] -= amount; balances[receiver] += amount; emit Sent(msg.sender, receiver, amount); } }
在确定部署智能合约前,需要定义业务逻辑和需求,即相关各方定义智能合约的具体业务条件,由开发人员作为最后的接收方。开发人员再来根据业务逻辑设计合约的体系结构,包含设计智能合约中数据的结构,以及合约中数据状态改变与之相关的方法代码。