前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web3.js常用API:发送交易

Web3.js常用API:发送交易

作者头像
孟斯特
发布2024-05-09 16:54:44
1440
发布2024-05-09 16:54:44
举报
文章被收录于专栏:code人生code人生

1. 使用本地钱包进行转账

代码语言:javascript
复制
import { Web3 } from 'web3';

const web3 = new Web3('https://sepolia.infura.io/v3/YOUR_INFURA_ID')
// 从私钥导入账户
const account = web3.eth.accounts.wallet.add('YOUR_PRIVATE_KEY')

// 查询当前账户余额
const balance = await web3.eth.getBalance(account[0].address)
const balanceEth = await web3.utils.fromWei(balance,'ether');
console.log('余额:',balanceEth,'ETH')

// 构造交易
const transaction = {
    nonce: await web3.eth.getBlockTransactionCount(account[0].address), // 代表从特定地址发送的交易数量。每次交易被成功地打包进区块后,从该地址发出交易的nonce就会增加。防止同一笔交易因意外导致执行多次。
    from:account[0].address,                                            // 发送地址
    to:'0x668E1d61eB2872D4bF6dd17D32DC5f1FD993A6AD',                    // 接收地址
    value: web3.utils.toWei('0.000045', 'ether'),                       // 转账金额
    gasPrice:gasPrice,                                                  // 当前gas价格
}
// 预估gas
const gas = await web3.eth.estimateGas(transaction)
console.log('预计耗费gas:', gas)
transaction.gas = gas                                                   // 最大gas,交易完成如有剩余会返还,不足会导致交易回滚
web3.eth.sendTransaction(transaction).then(console.log);

2. 发送原始交易

代码语言:javascript
复制
import { Web3 } from 'web3';

const web3 = new Web3('https://ethereum-sepolia.publicnode.com');
// 创建账户
const account = web3.eth.accounts.privateKeyToAccount('0x3afbb985211d17b9cdb5b3e7fd9f1017952d19275b4f6d31ed9f15bffb2e6185')
// 构建原始交易
const rawTransaction = {
    from: account.address,
    to:'0x668E1d61eB2872D4bF6dd17D32DC5f1FD993A6AD',
    nonce: await web3.eth.getTransactionCount(account.address),
    value:10,
    gasPrice:gasPrice,
    data: "0x0" 
}
// 预估gas
const gas = await web3.eth.estimateGas(rawTransaction)
console.log('预计耗费gas:', gas)
rawTransaction.gas = gas 

// 使用私钥对交易进行签名
const signedTransaction = await web3.eth.accounts.signTransaction(rawTransaction, account.privateKey);
// 发送交易
const txReceipt = await web3.eth.sendSignedTransaction(signedTransaction.rawTransaction);
console.log('Transaction Receipt:', txReceipt);

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)[1]进行许可,使用时请注明出处。 Author: mengbin[2] blog: mengbin[3] Github: mengbin92[4] cnblogs: 恋水无意[5] 腾讯云开发者社区:孟斯特[6]

References

[1] 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh [2] mengbin: mengbin1992@outlook.com [3] mengbin: https://mengbin.top [4] mengbin92: https://mengbin92.github.io/ [5] 恋水无意: https://www.cnblogs.com/lianshuiwuyi/ [6] 孟斯特: https://cloud.tencent.com/developer/user/6649301

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 孟斯特 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 使用本地钱包进行转账
  • 2. 发送原始交易
    • References
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档