Solidity是否有HTTP请求功能?

9

我正在使用以太坊制作一个项目。

在这个项目中,我正在创建一个名为“ A”的合约。

当我发送消息到“ A”时,我希望“ A”发出一个网络请求。

是否可以使用Solidity通过http(GET / POST方法)发出请求?


如何创建一个最小化、可复现的示例 - Jorengarenar
1
Solidity 无法与外部服务进行交互。您需要使用 Oracle 与外部 API 进行交互。您可以查看 https://docs.provable.xyz/#ethereum-quick-start。 - Stephen S
1个回答

16
以太坊区块链无法与外部世界互动,否则它将不再是确定性的,数万个以太坊节点得到不同的HTTP返回值后将无法就区块链状态达成共识。
将外部世界数据输入以太坊的唯一方法是拥有一个向区块链推送数据的以太坊账户。这种设置被称为预言机
预言机是一个服务器端工作进程
预言机执行HTTP GET/POST
预言机使用普通的以太坊智能合约交易将数据写入智能合约

3
额外信息:Oracle 用于其他共识目的。例如,随机值。区块链节点无法随机生成相同的值,更不用说在以后需要验证数据时再次生成了。此外,随机化可能是可预测的,并且如果您可以访问硬件,则可以进行操纵。因此,他们使用可信赖的 Oracle。 - toraman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接