以太坊/实体-查询交易

Ale*_*ezy 5 transactions ethereum solidity

坚固性是否能够基于交易中的数据查询它放在区块链上的交易?通过查询,我的意思是在智能合约内部运行的坚固性代码内(而不是在智能合约外部运行的web3.js)

因此,昨天我的合同执行了预付款交易,今天我想查询该交易类型为“ dp”或预付款的智能合约的任何/所有区块链交易?我希望此查询代码在我的智能合约中运行或执行。

我不是在进行tx哈希运算之后,我想要一个或多个特定交易的整个tx数据,这些交易基于参数,例如交易类型,地址或日期/时间等。

注意:我想通过在智能合约内执行实体代码来查询这些交易。不想使用web3.js- 请,请不要提供web3.js的答案---查询必须在智能合约中以坚固性代码完成。感谢您的帮助-但如果您的答案是web3.js,那么您真的没有帮助

请-如果有人看到了以坚固性代码查询区块链交易的示例,请发布链接或提及。您可以将交易过帐到BC,这似乎很奇怪,但是solidity中没有内置的get或检索或查询功能。坦白地说,这似乎很基础。

我发现,虽然solidity可以进行事件日志记录,但是所有tx都记录到了BC中的一个特殊区域中— SADLY —智能合约中执行的solidity代码无法读取这些日志 https://www.bitdegree.org / learn / solidity-events /

我只是不明白……为什么,为什么,为什么您要使用一种语言创建交易但无法读取或查询交易。这对我来说毫无意义。

我非常感谢那些知识渊博的人的回答!!谢谢Vmusic

Rag*_*ood 4

这不可能。合约无法查询区块链历史记录中的任意状态。

您唯一的选择是:

  1. 维护合约中任何状态更改的记录,并检查这些状态以确定先前的交易是否已发生/当前的交易是否有效
  2. 使用 web3 检索链下详细信息并将其作为参数传递给您的合约
  3. 使用 oraclize 等服务从智能合约中查询外部数据。这最终也将使查询脱离链,但您可以在智能合约中启动它并读回结果。