关于ethereumjs-tx在私链签名报错问题

首先要先了解一下以太坊的chainid

 

 

CHAIN_ID Chain(s)
1 Ethereum mainnet
2 Morden (disused), Expanse mainnet
3 Ropsten
4 Rinkeby
30 Rootstock mainnet
31 Rootstock testnet
42 Kovan
61 Ethereum Classic mainnet
62 Ethereum Classic testnet
1337 Geth private chains (default)

 特别是在直接开启dev的情况下,默认id为1337

但是,要是你按web3的写法直接写(在tx为2.0版本的情况下)

let account = '0x8e5761C0eeB594daF316161aFdc55914D8aB40DC'
	let user2 = '0xB7BEA2D94f06353a15CCE8ab4AF5e98b2F3b87a3'
	let strdata = '0x' + Buffer.from('asd').toString('hex')
	var rawTx = {
		from: account,
		to: user2,
		//gasPrice: "20000000000",	//可以默认,有需要可以查下如何设置gas节省旷工费
		gas: 27052,	//如果报错gas过小,请把值调大
		nonce:21,	//每次交易不能重复,不然会报错{"code":-32000,"message":"nonce too low"}
		value:4052500000,	//单位转换web3.utils.toWei('0.1', 'ether')
		data: strdata	//十六进制数据
    }; 
  var tx=new Tx(rawTx)
	//开发节点其实可以直接使用web3.eth.sendTransaction,正式节点会报错,可能需要解锁,所以直接使用私
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用ethereumjs-tx库实现钥加密,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了ethereumjs-tx库。你可以使用npm命令进行安装: ``` npm install ethereumjs-tx ``` 2. 导入所需的模块: ```javascript const Tx = require('ethereumjs-tx').Transaction; const { Buffer } = require('buffer'); ``` 3. 创建一个钥,并将其转换为Buffer类型: ```javascript const privateKey = 'YOUR_PRIVATE_KEY'; const privateKeyBuffer = Buffer.from(privateKey, 'hex'); ``` 请将'YOUR_PRIVATE_KEY'替换为你自己的钥。 4. 构建交易对象,并使用钥对其进行签名: ```javascript const txParams = { nonce: '0x0', // 交易发送者的nonce值 gasPrice: '0x4a817c800', // gas价格,这里是20000000000 wei gasLimit: '0x5208', // gas限制,这里是21000 to: '0x...', // 接收方的以太坊地址 value: '0x...', // 交易金额,如果是0则表示不发送ETH data: '0x...', // 如果有合约交易,填写合约数据 }; const tx = new Tx(txParams, { chain: 'ropsten' }); //根据你所在的以太坊网络选择相应的chain ID tx.sign(privateKeyBuffer); ``` 请将'to'、'value'和'data'字段替换为你自己的值。 5. 获取签名后的交易数据: ```javascript const serializedTx = tx.serialize(); const rawTx = '0x' + serializedTx.toString('hex'); ``` 现在,你可以将rawTx发送到以太坊网络上进行广播。 这样,你就使用ethereumjs-tx库实现了钥加密。请记得保护好钥,不要泄露给他人。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值