使用pw-core进行转账的过程中遇到的2个问题

代码已经提交:payhub。测试很方便。下载代码后,直接浏览器打开/test/index.html即可,不需要编译。:grinning_face_with_smiling_eyes:
image

1、如果收款地址是ckb开始的,控制台会报错。

提示地址应该是ckt开头,而实际上是ckb开头。
image

image

点击这个utils.js:webpack://PayHub/node_modules/@lay2/pw-core/build/module/utils.js
就是parseAddress
image

(后面,我直接换了一个ckt开始的地址)

2、转账时,没反应

调用pw.send后,GET https://cellapitest.ckb.pw/cell/unSpent 后没反应
控制台没有提示信息。

// bank.worker就是pw,整体参考的pay.lay.dev/Index.vue
async transfer(bank: PWCoreBank, tokenName: string, toAddress: Address, amount: Amount): Promise<Array<any>>{
      const activityDialog = Metro.activity.open({
        type: "cycle"
      });
      try {
        const txs = [];
        let txHash;
        if(tokenName === 'CKB'){
          txHash = await bank.worker.send(toAddress, amount);
        }
        // else{
        //   /**
        //    when createAcp is true, pw-core will create a acp cell for receiver.
        //    when createAcp is false, pw-core will not create acp cell for receiver. sudt will be transfered only if receiver already has acp cell.
        //    */
        //   const createAcp = true;
        //   txHash = await this.pw.sendSUDT(new SUDT(PWBTC_ISSURER_LOCKHASH), toAddress, amount, createAcp);
        // }
        txs.unshift(txHash);
        Metro.activity.close(activityDialog);
        return txs;
      } catch(err) {
        Metro.activity.close(activityDialog);
        UIHelper.ToastError("Error! Please view the console log.");
        console.error('send tx error', err);
      }
    }

通过查看控制台的网络请求,点击转账之后,只发出了一个GET请求:
https://cellapitest.ckb.pw/cell/unSpent?lockHash=0x76a29cbf20e3ac3495872d229543472fac99fdd20d1b3b2dd584a9280492dd7e&capacity=0x3b9aca000

响应结果:

{"code":200,
"msg":"success",
"data":[{"id":3339582,
"blockHash":"0x38511e30d62c2e16f3eed898e139d5294a0ad23127fb9a5f0aa24413c21efa3e",
"lock":{"codeHash":"0x58c5f491aba6d61678b7cf7edf4910b1f5e00ec0cde2f42e0abb4fd9aff25a63",
"hashType":"type","args":"0x309ddffb87f07afba6b69cfed4bdfaea774f6abb"},
"outPoint":{"txHash":"0x9a0c122922af73219f04a4949d5fefa0453e917d347e8e3f64ce02a3ff54bce7",
"index":"0xf"},
"outputDataLen":"0","capacity":"0x1ead638780","cellbase":true,"type":null,
"dataHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"status":"live","sudtAmount":"0x0","data":"0x"}]}

然后就没反应了,后面的网络请求都是infura的:

PS. 转账之前,请求余额是对的(接收地址已经换成了ckt开始的):
image

image

pw-core中针对mainnet/testnet的地址格式做了限制,在测试网中只能使用ckt开头的地址,在正式网中只能使用ckb开头的地址。

进深入调研,发现是由于在浏览器中直接打开本地文件index.html导致的,改为本地启动web服务器并通过服务器访问index.html页面后,该问题已解决。

4 Likes