使用pw-core转账签名后遇到错误码-1

描述:

  1. 连接钱包:正常
  2. 查询账户余额:正常
  3. 转账时,弹出MetaMask的签名窗口:正常
  4. 点击签名授权后,转账失败。
  5. 该问题只出现于主网。
  6. Aggron网络:一切顺利。成功的tx
send tx error Error: JSONRPCError: 
server error {"code":-1,
"message":"CKBInternalError: Script(TransactionScriptError { source: Inputs[0].Lock, cause: ValidationFailure(-1): the exit code is per script specific, for system scripts, please check https://github.com/nervosnetwork/ckb-system-scripts/wiki/Error-codes })",
"data":"Error { kind: Script, inner: TransactionScriptError { source: Inputs[0].Lock, cause: ValidationFailure(-1): the exit code is per script specific, for system scripts, please check https://github.com/nervosnetwork/ckb-system-scripts/wiki/Error-codes } }"}

查看CKB中的错误码
-1的意思是:
Argument length error. If the script receives an invalid length of arguments, this would be returned. Typically this means the lock/type script structure constructed has a problem, or a signature has an incorrect length.

引用pw-core的版本信息

  "dependencies": {
    "@lay2/pw-core": "^0.4.0-alpha.6",
    "@nervosnetwork/ckb-sdk-core": "^0.40.0",
    "@nervosnetwork/ckb-sdk-rpc": "^0.40.0",
    "@nervosnetwork/ckb-sdk-utils": "^0.40.0",
    "assert": "^2.0.0",
    "axios": "^0.21.1",
    "buffer": "^5.7.1",
    "ckb-js-toolkit": "^0.10.2",
    "crypto-browserify": "^3.12.0",
    "https-browserify": "^1.0.0",
    "lodash": "^4.17.21",
    "os-browserify": "^0.3.0",
    "stream-browserify": "^3.0.0",
    "stream-http": "^3.1.1",
    "url": "^0.11.0"
  },

初始化Provider

// 1
const p = await this.web3Modal.connect();
this.provider = new Web3ModalProvider(new Web3(p));
// 2
//this.provider = new EthProvider();

相关代码

在线测试

  1. 地址
  2. 连接钱包:导航栏:Connect >> PW >> ETH
  3. 如果成功连接钱包:访客的人物卡片会更新;作者/站长的CKB卡片的底部中间,会出现转账按钮
  4. 转账时,可以把地址修改成您自己的另一个地址进行测试。

不知道有没有人遇到过类似的问题?
谢谢!

请提供一下在 mainnet 上生成的交易具体信息

pw-lock在aggron上的版本兼容了eos/tron等链的地址格式,在witness.lock的头部增加了一个flag,用来标识链的类型,如果想在aggron上尝试eos/tron等地址格式,可以使用pw-core的alpha版本依赖包。

ckb mainnet上的pw-lock脚本目前还未升级。需要使用pw-core的正式版依赖包 https://www.npmjs.com/package/@lay2/pw-core/v/0.3.22
正式版pw-core依赖包可以在aggron使用。

1 Like

谢谢!应该是这个原因。
我参考pay.lay2.dev的代码时,有些方法在0.3.22中找不着,就干脆切换到最新的alpha.6了。

请问什么时候发布最新版的pw-core?

直接调用的send,签名失败后,控制台没有打印tx信息。。。。。。我还没研究透怎么获取tx信息 :sweat_smile: