【问题标题】:Is there a way to externally listen to (contract-call? ...) calls on a contract?有没有办法从外部收听(合同调用?...)对合同的调用?
【发布时间】:2022-10-12 23:31:34
【问题描述】:

我有两个 Clarity 合同(让我们称之为一个),以及一个监听函数调用的应用程序一个,使用@stacks API 客户端。

当我手动调用任何函数时,这很好用一个(使用脚本或沙盒,启动transaction)。

但是如果我调用一个函数一个从合同像这样:

(as-contract (contract-call? .contract-A contract-A-function-name param1 param2)) 

假设contract-A-function-name 是一个只有(打印)事件的简单函数。

这是成功的,但是在合约上没有单独的 tx/event 来监听一个.这可能是预期的行为,但我的问题仍然是:有没有办法知道何时以这种方式调用合约 A 的函数?

【问题讨论】:

    标签: blockchain smartcontracts clarity clarity-lang


    【解决方案1】:

    没错,调用函数时没有报告事件,但是可以找到打印的事件。你可以query for events 得到这样的回复:

    {
      "event_index": 1,
      "event_type": "smart_contract_log",
      "tx_id": "0x05ccc123db703a2808afaaf88b6b3240f14391d14fde701bd20d7206c9133af6",
      "contract_log": {
        "contract_id": "ST000000000000000000002AMW42H.bns",
        "topic": "print",
        "value": {
          "hex": "0x0c000000010a6174746163686d656e740c00000003106174746163686d656e742d696e646578010000000000000000000000000000028304686173680200000014b472a266d0bd89c13706a4132ccfb16f7c3b9fcb086d657461646174610c00000004046e616d65020000000a62696c616c7465737435096e616d6573706163650200000003627463026f700d0000000d6e616d652d7472616e736665720974782d73656e646572051a27b6e19aaa1880e842bc709b4130b347b1f2d7f2",
          "repr": "(tuple (attachment (tuple (attachment-index u643) (hash 0xb472a266d0bd89c13706a4132ccfb16f7c3b9fcb) (metadata (tuple (name 0x62696c616c7465737435) (namespace 0x627463) (op "name-transfer") (tx-sender STKVDRCTN8C81T22QHR9PG9GPD3V3WPQYBYFHPT4))))))"
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 2011-04-27
      • 2012-02-06
      • 2018-06-26
      • 2021-03-26
      • 2014-12-09
      • 2022-11-29
      • 1970-01-01
      • 2020-10-23
      相关资源
      最近更新 更多