有没有一种方法可以从外部监听(合同调用?…)对合同的调用



我有两个Clarity合约(让我们称它们为AB(,还有一个应用程序使用@stacks API客户端在A上侦听函数调用。

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

但是,如果我从合同B中调用a的函数,如下所示:

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

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

这是成功的,但在合同A中没有单独的tx/事件可供监听。这可能是有意的行为,但我的问题是:有没有办法知道contract-a的函数何时被这样调用

没错,调用函数时没有报告事件,但您可以找到打印的事件。您可以查询事件并得到如下响应:

{
"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))))))"
}
}
}

最新更新