智能合约[1]是一种代码,其中包含一组管理各方如何交互的规则。如果满足预定义的规则,协议将自动执行。
原则上,区块链网络和智能合约是确定性的,无法访问来自外部世界的数据。
预言机解决了这个看似主要的问题。
在区块链网络的背景下,“预言机”是将链下世界的相关数据带入智能合约的服务或数据源,反之亦然。
什么是预言机?
在我们的文化中,oracle被定义为提供明智和有见地的建议或做出卓越预测的人。
当谈到区块链网络时,它们并没有那么不同。
预言机是使智能合约能够与外界通信和交换数据的第三方服务。它们不是区块链共识机制的一部分。
例如,在您的代码中,您可以包含一个函数,以确保人们只能向智能合约发送大于当前以太币价格的金额。
调用该函数时,将执行两次。
1. 因为我们的合约没有该信息,智能合约将使用预言机从外部链下源检索当前的 ETH 价格。
2. 智能合约将执行检查以确保仅存入或接受大于当前以太币价格的金额。
下面的伪代码演示了执行是如何发生的。
function fund() public payable {
if (amountDeposited > currentETHPriceFromOracle) {
"Transfer is successful"
} else {
"You are not sending enough Ether
}
}