分享下web3j 常见用法

embedded/2025/4/1 11:42:08/

转账

fun sendEthTransaction(privateKey: String,toAddress: String,amount: BigDecimal) {//chainIdval chainId:Long = 1//url 可以从https://chainlist.org/里面获取可用节点//eth转账,bnb同理,但需发送到bnb对应节点val url = "https://xxx"val web3j = Web3j.build(HttpService(url))val credentials = Credentials.create(privateKey)val count =web3j.ethGetTransactionCount(credentials.address, DefaultBlockParameterName.LATEST).send()val nonce = count.transactionCountval gasPrice = Convert.toWei("20", Convert.Unit.GWEI).toBigInteger()val gasLimit = BigInteger.valueOf(21000)val value = Convert.toWei(amount, Convert.Unit.ETHER).toBigInteger()val rawTransaction = RawTransaction.createEtherTransaction(nonce, gasPrice, gasLimit, toAddress, value)val signedMessage = TransactionEncoder.signMessage(rawTransaction, chainId,credentials)val hexValue = Numeric.toHexString(signedMessage)logDebug("签名后的数据 $hexValue")val ethSendTransaction = web3j.ethSendRawTransaction(hexValue).send()if (ethSendTransaction.hasError()) {println("发送 ETH 交易时出错: ${ethSendTransaction.error.message}")} else {println("ETH 交易哈希: ${ethSendTransaction.transactionHash}")}}
    fun sendErc20USDTTransaction(privateKey: String,toAddress: String,amount: BigInteger) {//erc20 usdt 合约地址val contractAddress = "0xdAC17F958D2ee523a2206206994597C13D831ec7"val url = "https://xxx"val web3j = Web3j.build(HttpService(url))val credentials = Credentials.create(privateKey)val count = web3j.ethGetTransactionCount(credentials.address, DefaultBlockParameterName.LATEST).send()val nonce = count.transactionCountval gasPrice = Convert.toWei("20", Convert.Unit.GWEI).toBigInteger()val gasLimit = BigInteger.valueOf(200000)val function = Function("transfer",listOf(Address(toAddress), Uint256(amount)),emptyList())val data = FunctionEncoder.encode(function)val rawTransaction = RawTransaction.createTransaction(nonce, gasPrice, gasLimit, contractAddress, data)val signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials)val hexValue = Numeric.toHexString(signedMessage)val ethSendTransaction = web3j.ethSendRawTransaction(hexValue).send()if (ethSendTransaction.hasError()) {println("发送 ERC - 20 代币交易时出错: ${ethSendTransaction.error.message}")} else {println("ERC - 20 代币交易哈希: ${ethSendTransaction.transactionHash}")}}

更多:
https://chainlist.org/

文章来源:https://blog.csdn.net/zx_android/article/details/146375556
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/embedded/174369.html

相关文章

第J3周:DenseNet121算法实现01(Pytorch版)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标 具体实现 (一)环境 语言环境:Python 3.10 编 译 器: PyCharm 框 架: Pytorch (二)具体步骤…

word插入Mathtype公式居中和自动更新

word插入公式自动更新 前提:安装Mathtype 1.word中查看页的宽度 出现如下 2.设置样式 出现这个窗口 给样式随便起个名字 3.修改样式 3.1 设置两个制表位 第二个 3.2 修改公式字体 如下所示 4. 修改公式格式 4.1在word中打开 Mathtype 4.2 修改公式的格式 变成…

区块链(Blockchain)

区块链(Blockchain)是一种去中心化、分布式的账本技术,它通过密码学保证数据的安全性和不可篡改性。它的核心特点包括去中心化、不可篡改性、可追溯性、智能合约等。 区块链的关键概念 区块(Block):每个区…

数据分析的12个挑战及其解决方法

俗话说得好“说起来容易做起来难。”数据分析对于风险管理者是极为重要的。我们可以利用数据分析结论,来为企业决策做有效协助,帮助企业改善财务状况,提升企业业务销售水平,帮助员工预测可能发生的问题,并协助监控企业…

将 YOLO 格式的标注文件(.txt)转换为 VOC 格式的 XML 标注文件

1. 函数定义和注释 def makexml(picPath, txtPath, xmlPath): """此函数用于将yolo格式txt标注文件转换为voc格式xml标注文件 在自己的标注图片文件夹下建三个子文件夹,分别命名为picture、txt、xml """ 函数接收三个参数…

解决 SQL Server 日常使用中的疑难杂症,提供实用解决方案

SQL Server 作为企业级关系型数据库管理系统,因其强大的功能和稳定性被广泛应用于数据存储与管理。然而,在日常使用中,用户难免会遇到性能瓶颈、连接问题或数据异常等“疑难杂症”。本文将针对 SQL Server 常见的实际问题,深入剖析…

如何实现一个分布式单例对象?什么场景需要分布式单例?

单例模式确保一个类在同一个进程中只有一个实例,并提供一个全局访问点。这意味着无论在哪里调用该类的实例化方法,返回的都是同一个对象实例。 在分布式系统中,无论是单台机器多个实例,还是多台机器多个实例,每个实例…

数学建模之数学模型-3:动态规划

文章目录 动态规划基本概念阶段状态决策策略状态转移方程指标函数最优指标函数 动态规划的求解前向算法后向算法二者比较 应用案例 一种中文分词的动态规划模型摘要引言动态规划的分词模型问题的数学描述消除状态的后效性选择优化条件 算法描述和计算实例算法的效率分析和评价结…