繁体   English   中英

如何使用 wave-transaction JS 库签署和发送转账交易?

[英]How to sign and send transfer transaction using waves-transaction JS library?

请帮助我理解https://testnodes.wavesnodes.com/api-docs/index.html我使用这个 api 和这个库https://github.com/wavesplatform/waves-transactions我无法使用手册发送交易库或直接通过 POST 请求获取 api。

常见错误:

  • 错误:状态检查失败。 原因:脚本不存在并证明

  • 错误:状态检查失败。 原因:来自非脚本账户的交易必须恰好有 1 个证明

对 url / 地址的 POST 请求也会出错。 提供的 API 密钥不正确。 这是我的代码:

const { transfer, broadcast } = require("@waves/waves-transactions");
const seed =
  "ride flee tenant tuna share buyer work west amateur review time kick";
const signedTranserTx = transfer(
  {
    amount: 1,
    recipient: "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8"
  },
  seed
);
const nodeUrl = "http://testnodes.wavesnodes.com";

broadcast(signedTranserTx , nodeUrl)
  .then(resp => console.log(resp))
  .catch(err => console.error(err));

如果您使用 Waves 交易 api,则该请求应该已经签名,您可以将其发布到 /transactions/broadcast。 那么你不需要自己的节点,也不需要自己的 API Key。 在您的代码中,我在这里看到了几个错误:

  1. 您正在使用 testnet 节点转移到 MAINNET 地址。 您应该改用 TESTNET 地址。 在 reciepent 中将地址更改为 testnet 中的地址,如果您仍然遇到任何错误,请告诉我。 您可以在https://testnet.ide.wavesplatform.com/在右上角的选项卡帐户中创建新帐户。
  2. 使用 https 代替 http, const nodeUrl = "https://testnodes.wavesnodes.com/";
  3. 添加链 id('T' 代表测试网,'W' 代表主网)

这是代码:

const { transfer, broadcast } = require("@waves/waves-transactions");
const seed =
"ride flee tenant tuna share buyer work west amateur review time kick";
const signedTranserTx = transfer(
  {
    amount: 100,
    recipient: "3N3pJ8xAnbaSBFdAbnaKe4yu4ZXbYkatMcN"
  },
  seed
);
const nodeUrl = "https://testnodes.wavesnodes.com";
broadcast({ ...signedTranserTx, chainId: "T" }, nodeUrl)
  .then(resp => console.log(resp))
  .catch(err => console.error(err));

[更新]

上面的代码运行良好。 只是一个快速更新,因为我看到新的 testnet URI 在链接下面:

https://nodes-testnet.wavesnodes.com

我的意思是我已经从https://testnodes.wavesnodes.com替换为https://nodes-testnet.wavesnodes.com然后它可以工作,也许是因为我们从不同的地方创建了帐户。

所以这是最终的代码:

const { transfer, broadcast } = require("@waves/waves-transactions");
const seed =
"ride flee tenant tuna share buyer work west amateur review time kick";
const signedTranserTx = transfer(
  {
    amount: 100,
    recipient: "3N3pJ8xAnbaSBFdAbnaKe4yu4ZXbYkatMcN"
  },
  seed
);
const nodeUrl = "https://nodes-testnet.wavesnodes.com";
broadcast({ ...signedTranserTx, chainId: "T" }, nodeUrl)
  .then(resp => console.log(resp))
  .catch(err => console.error(err));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM