0

我正在使用 Polkadot JS API 在 Westend 上发送交易。为此,片段是这样的:

const hash = await api.tx.balances
      .transfer(to, amount)
      .signAndSend(from, { tip, nonce: -1 })
      .catch(e => {
        throw e;
      });

我得到了一个很好的哈希值,并且余额正在按预期更新。但是在 Subscan 上找不到我得到的哈希值。当我获取账户的交易历史时,我看到了一个不同的哈希值,而不是我执行上述函数得到的哈希值。我从直接查询 Subscan(在https://westend.subscan.io/api/scan/transfers)得到的那个哈希是正确的。它可以通过 API 和使用 Subscan 的 UI 在 Subscan 上找到。

示例:我刚刚在 Westend 发送了一笔新交易。我得到了哈希0xdc2605ef0f21c77aa09f4e2df762a729bb2ecb5bb5602fe7a0858be2515c085c

如果我在 Subscan 上搜索该哈希,它不存在。

现在,我获取了账户的交易历史,发现我的最后一笔交易是:

{
  "from": "5Ec2BnQhmoM7anBrXi2wvgPKBUrTDS1ELmcR3j68cgXZxCuo",
  "to": "5HeRXojbvrsgk3x37haUJgxZhFZy8hvsBo9zDGsEsU8XhRRh",
  "extrinsic_index": "6089109-2",
  "success": true,
  "hash": "0xf026f07bf8736e7b9a664d08529ef88466f5d52a7237d202560cad680865c5a5",
  "block_num": 6089109,
  "block_timestamp": 1623872502,
  "module": "balances",
  "amount": "0.000000010014",
  "fee": "15700001585",
  "nonce": 20,
  "asset_symbol": "",
  "from_account_display": {
    "address": "5Ec2BnQhmoM7anBrXi2wvgPKBUrTDS1ELmcR3j68cgXZxCuo",
    "display": "",
    "judgements": null,
    "account_index": "",
    "identity": false,
    "parent": null
  },
  "to_account_display": {
    "address": "5HeRXojbvrsgk3x37haUJgxZhFZy8hvsBo9zDGsEsU8XhRRh",
    "display": "",
    "judgements": null,
    "account_index": "",
    "identity": false,
    "parent": null
  }
}

我们在那里看到的哈希 ( 0xf026f07bf8736e7b9a664d08529ef88466f5d52a7237d202560cad680865c5a5) 是正确的。而且之前的 hash ( 0xdc2605ef0f21c77aa09f4e2df762a729bb2ecb5bb5602fe7a0858be2515c085c) 甚至没有被引用,我不知道它是什么,也不知道函数为什么signAndSend返回它。我正在尝试获取给定 tx 有多少确认,但我不能,因为我在进行交易时得到的哈希(显然)是无用的 - 我正在我的数据库中存储我的哈希当我进行交易时得到。

任何人都可以在这里阐明一下吗?

谢谢!

4

1 回答 1

0

找到了!

该变量hash不是十六进制格式 - 实际上它是,但不是系统想要的方式。我不明白为什么,但事实是你必须做 ahash.toHex()才能获得正确的价值。所以,解决方案是这样的:

const hash = await api.tx.balances
      .transfer(to, amount)
      .signAndSend(from, { tip, nonce: -1 })
      .catch(e => {
        throw e;
      });

return hash.toHex();

它在文档中,我没有注意它:https ://polkadot.js.org/docs/api/examples/promise/make-transfer

于 2021-06-17T13:25:37.040 回答