8

web3.js调用合约方法 send 报错 Returned error: unknown account | 登链社区 | 技术...

 2 years ago
source link: https://learnblockchain.cn/question/2836
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

web3.js调用合约方法 send 报错 Returned error: unknown account

10 web3.js调用合约方法 send 报错 Returned error: unknown account

image.png
合约代码

image.png
调用合约方法代码

web3.js版本 ^1.6.1

第一个retreive 可以正常调用
第二个store报错
完整报错信息 Error: Returned error: unknown account

看到有回答是需要签名 查询了文档 没有查询到调用合约方法如何签名

最佳答案 2021-12-01 20:43

你是在哪里调用的合约代码?前端页面还是后端程序?

如果是前端页面, 你应该先连接 metamask钱包才对,你代码中的 from 的账号,应该是metamask的账号。

如果是后端, 应该用私钥对交易签名。

是在后端 我去查了下私钥对交易签名 还是没有试成功 可以麻烦大佬讲下私钥对交易签名怎么弄吗?

  • 2021-12-01 20:43
Tiny熊 - 布道者
擅长:智能合约,以太坊 | 采纳率 40% | 回答于 2021-12-01 20:00

其它 2 个回答

test123 6天前

记一下后续把 也算是踩的最深的坑了
ethereumjs-tx ^2.1.2
node v14.14.0
web3 ^1.6.1

进行到签名这步的时候 一直报错invalid sender

我就觉得我签名肯定是没问题的 是链的问题
所以我就将我签名好的数据放到https://testnet.bscscan.com/pushTx上面去广播 发现还是会报错 所以我就怀疑是我签名错误的问题

查了很多资料发现是 我这是需要设置链的(我自己是这样认为的)
设置链的代码为

var Common = require('ethereumjs-common').default;
var BSC_FORK = Common.forCustomChain(
  'mainnet',
  {
      name: 'Smart Chain - Testnet',
      networkId: 97,
      chainId: 97,
      url: 'https://data-seed-prebsc-1-s1.binance.org:8545/'
  },
  'istanbul',
);
var tx = new Tx(rawTx, { 'common': BSC_FORK })

后面又遇到两个报错 一个是
Returned error: transaction underpriced
我的代码一开始没有设置gasPrice 和 gas 我看文档说是会自己填...

然后我就填上了gasPrice 没有填gas 按了个5 闭着眼睛按0(真希望我银行卡余额能这样改)

然后继续报错"Unhandled rejection Error: Returned error: intrinsic gas too low"

然后继续baidu stackoverflow找问题 最后gas设为50000 gasPrice为

web3.utils.toWei('300', 'gwei')

最后成功发起了store方法
终于踩完坑了 开心 感谢熊大佬

static 3天前

老哥我也想问一下这个怎么去解决

你先看看上面采纳的回答 你是前端代码还是后端代码 前端的我也还没踩完坑 后端的node我已经把总结放在我回答里了 你可以描述一下你是什么流程出现这个问题的

您需要登录后才可以回答问题,登录 或者 注册

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK