初学使用web3.js提交事务到以太坊时,会遇到:Error: Returned error: invalid sender
以太坊返回提示:发送者无效。
产生此问题的根本原因是事务提交操作的链信息没有指定,或者指定的不对。看下面例子
const Web3 = require('web3')
const web3 = new Web3("http://localhost:8545")
// 智能合约地址部署地址
let contractAddr = '0x......'
// 操作智能合约的账户,也就是要发送事务的账户
const accountAddress = '0x.....'
// 交易接收账户
const accountReceiveAddr = '0x....'
// 事务要执行的方法,取自abi中
const fs = require('fs')
// 通过remix编译得到的metadata文件
const meta = JSON.parse(fs.readFileSync('artifacts/MyToken_metadata.json').toString())
const abi = meta.output.abi;
// 根据智能合约接口定义文件abi和部署地址,实例化智能合约
const contract = new web3.eth.Contract(abi, contractAddr)
// 构造要执行的智能合约方法
let transferFn = contract.methods.transfer(accountReceiveAddr, 11)
// 将要执行的方法编码为16进制数据,该数据包含方法签名16进制值+参数16进制编码值
let transHexData = transferFn.encodeABI()
console.log('transHexData =>', transHexData)
// gas预估消耗
le

最低0.47元/天 解锁文章
1338

被折叠的 条评论
为什么被折叠?



