1

在 Near 中,由受 2FA 保护的钱包签名的交易以特殊方式(合同确认)完成,与常规交易不同。签名者和接收者 id 相同的钱包。示例交易: https ://explorer.near.org/transactions/9uPvkdmcL4iNnWrHXZocf7NLAJUUVa4zSMrtFtJhrjcY

如何正确使用它们,在 Indexer 中哪里可以找到它们?如何正确获取数据,用户签署什么合同和方法?

4

2 回答 2

1

NEAR Indexer for Explorer 核心贡献者和维护者在这里。

查看您在问题中提供的交易https://explorer.near.org/transactions/9uPvkdmcL4iNnWrHXZocf7NLAJUUVa4zSMrtFtJhrjcY这是一种FUNCTION CALL方法confirm

而且我相信您担心的是,您无法通过使用哈希查询表来查看公共NEAR Indexer for Explorer 数据库中的事务结果。transactions

并且说 2FA 交易“不像常规交易”是指涉及的跨合约调用的性质。

这是找出正在发生的事情的方法

  1. 首先,让我们查找您的初始交易及其转换为的收据 ID。
SELECT transaction_hash, converted_into_receipt_id FROM transactions WHERE transaction_hash = '9uPvkdmcL4iNnWrHXZocf7NLAJUUVa4zSMrtFtJhrjcY';

               transaction_hash               |          converted_into_receipt_id
----------------------------------------------+----------------------------------------------
 9uPvkdmcL4iNnWrHXZocf7NLAJUUVa4zSMrtFtJhrjcY | FP5UmXxdDBBicGkzgXXdhS28hxgBWVByFcqbwh25qHzN

根据您发送的这笔交易是对某个ft_transfer调用的确认这一事实,我们预计会发生对合约的跨合约调用gems.l2e.near

我们要查找执行收据 id 后产生的所有收据FP5UmXxdDBBicGkzgXXdhS28hxgBWVByFcqbwh25qHzN(我们在步骤 1 中找到了)

  1. 搜索在执行初始收据期间创建的所有收据
SELECT produced_receipt_id FROM execution_outcome_receipts WHERE executed_receipt_id = 'FP5UmXxdDBBicGkzgXXdhS28hxgBWVByFcqbwh25qHzN';
             produced_receipt_id
----------------------------------------------
 9zem8CxJvdTHKkZKCc1pFhg4Ky4st6TBrQmE19gv4sAU
 3mtnLaGFYpXXzZ4H9vYczSXz9JbdS7XueSobDjQDAYb3
(2 rows)
  1. 所以我们还有另外两张收据,但我们实际上并不知道它们包含什么动作。让我们找出来。
SELECT receipt_id, action_kind, receipt_predecessor_account_id, receipt_receiver_account_id, args FROM action_receipt_actions WHERE receipt_id IN ('9zem8CxJvdTHKkZKCc1pFhg4Ky4st6TBrQmE19gv4sAU', '3mtnLaGFYpXXzZ4H9vYczSXz9JbdS7XueSobDjQDAYb3');
                  receipt_id                  |  action_kind  | receipt_predecessor_account_id | receipt_receiver_account_id |                                                                                                               args
----------------------------------------------+---------------+--------------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 3mtnLaGFYpXXzZ4H9vYczSXz9JbdS7XueSobDjQDAYb3 | TRANSFER      | system                         | shishkerin.near             | {"deposit": "12306467158537048105440"}
 9zem8CxJvdTHKkZKCc1pFhg4Ky4st6TBrQmE19gv4sAU | FUNCTION_CALL | shishkerin.near                | gems.l2e.near               | {"gas": 220000000000000, "deposit": "1", "args_json": {"amount": "2970000", "receiver_id": "hot1.l2e.near"}, "args_base64": "eyJyZWNlaXZlcl9pZCI6ImhvdDEubDJlLm5lYXIiLCJhbW91bnQiOiIyOTcwMDAwIn0=", "method_name": "ft_transfer"}
(2 rows)

在这里我们可以看到 Receipt9zem8CxJvdTHKkZKCc1pFhg4Ky4st6TBrQmE19gv4sAU实际上是在做一个FUNCTION_CALLtogems.l2e.near签名的shishkerin.near

我们还可以查看 args 并发现方法是调用是ft_transfer,参数是{"amount": "2970000", "receiver_id": "hot1.l2e.near"}

(另一张收据3mtnLaGFYpXXzZ4H9vYczSXz9JbdS7XueSobDjQDAYb3是签字的转账system,基本上是附加gas的现金返还)

  1. 为了理智,我们想知道收据的执行状态
SELECT receipt_id, status FROM execution_outcomes WHERE receipt_id = '9zem8CxJvdTHKkZKCc1pFhg4Ky4st6TBrQmE19gv4sAU';
                  receipt_id                  |    status
----------------------------------------------+---------------
 9zem8CxJvdTHKkZKCc1pFhg4Ky4st6TBrQmE19gv4sAU | SUCCESS_VALUE

我希望这能回答你的问题。


于 2022-02-08T18:09:53.490 回答
0

除了@khorolets 已经提到的内容之外,receipts表格还有originated_from_transaction_hash一列可以帮助您获取归因于交易的所有收据:

SELECT * FROM receipts WHERE originated_from_transaction_hash = '9uPvkdmcL4iNnWrHXZocf7NLAJUUVa4zSMrtFtJhrjcY';
                  receipt_id                  |            included_in_block_hash            |            included_in_chunk_hash            | index_in_chunk | included_in_block_timestamp | predecessor_account_id | receiver_account_id | receipt_kind |       originated_from_transaction_hash
----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------+-----------------------------+------------------------+---------------------+--------------+----------------------------------------------
 DiL4YA5iyKpsgkwdjdZkuiCatvKHmbVKPGAKpYJV1qS7 | AyX7umWGpR3RgQGnz4LAgTRnRGbF42krvAAjmXo4s4EV | 9VkhZdALu1EY6D2czKaKSV7qQZsLR6vxfAPXqBkgmAGg |              2 |         1644263681934508460 | system                 | shishkerin.near     | ACTION       | 9uPvkdmcL4iNnWrHXZocf7NLAJUUVa4zSMrtFtJhrjcY
 3mtnLaGFYpXXzZ4H9vYczSXz9JbdS7XueSobDjQDAYb3 | CyDT5XdZK8pKZM4VP559KxEXvUXTKaZbGVN3mVfoc5TX | FbfPdNLhYZEH3AncDiPa5qQZsaxCL8kfAtEaTV2geDi6 |              3 |         1644263680552610497 | system                 | shishkerin.near     | ACTION       | 9uPvkdmcL4iNnWrHXZocf7NLAJUUVa4zSMrtFtJhrjcY
 9zem8CxJvdTHKkZKCc1pFhg4Ky4st6TBrQmE19gv4sAU | CyDT5XdZK8pKZM4VP559KxEXvUXTKaZbGVN3mVfoc5TX | FbfPdNLhYZEH3AncDiPa5qQZsaxCL8kfAtEaTV2geDi6 |              2 |         1644263680552610497 | shishkerin.near        | gems.l2e.near       | ACTION       | 9uPvkdmcL4iNnWrHXZocf7NLAJUUVa4zSMrtFtJhrjcY
 FP5UmXxdDBBicGkzgXXdhS28hxgBWVByFcqbwh25qHzN | 5zvPFNeVytBNWfTzvmBaeCQtDrLuHfujKQqZ7qHhY4di | 4JngM4mhJnM9em6x8e7kJhyiSdPj1A9ZBzze9ZqJM8DP |              0 |         1644263679256841002 | shishkerin.near        | shishkerin.near     | ACTION       | 9uPvkdmcL4iNnWrHXZocf7NLAJUUVa4zSMrtFtJhrjcY
(4 rows)
于 2022-02-09T21:03:45.733 回答