分享下web3j 常见用法

转账

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/

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业相机选型

工业相机选型 一、工业相机分类二、相机的主要参数2.1 分辨率2.2 速度2.3 光学接口 / 接口类型2.4 相机靶面尺寸2.5 像元尺寸2.6 精度 三、镜头介绍及选型方法3.1 工作距离(WD)3.2 视场角(FOV)3.3 (镜头)靶面尺寸3.4 帧率3.5 光圈…

eFish-SBC-RK3576 工业相机(IMX系列)方案设计

一、核心硬件架构 1. ‌图像传感器配置‌ ‌IMX系列选型‌: IMX678(1/1.8" CMOS,2000万像素,全局快门,HDR 120dB)IMX541(2/3" CMOS,1200万像素,12bit ADC&…

网络华为HCIA+HCIP 广域网技术

目录 PPP协议 PPP链路建立流程 PPP链路接口状态机 LCP报文格式 LCP协商过程-正常协商 LCP协商过程-参数不匹配(MRU) LCP协商过程-参数不识别 PPP认证模式 - PAP PPP认证模式 - CHAP NCP协商 - 静态IP地址协商 NCP协商 - 动态IP地址协商 P…

B站pwn教程笔记-5

复习和回顾 首先复习一下ELF文件在内存和磁盘中的不同。内存只关注读写这权限,会合并一些代码段。 动态链接库只在内存中单独装在一份 因为很多软件都要用动态链接库了,不可能一个个单独复制一份。但是在有的调试环境下会单独显示出来各一份。 ld.so是装…

Vue Router 的核心实现原理是什么?

文章目录 一、路由模式实现原理1. Hash 模式2. History 模式 二、响应式路由系统1. 路由对象响应化2. 路由映射解析 三、组件渲染机制1. RouterView 实现2. 路由匹配流程 四、导航守卫系统1. 守卫执行流程2. 守卫类型对比 五、核心源码结构六、设计亮点分析七、性能优化策略总结…

CherryStudio + 火山引擎DeepSeek R1 告别服务器繁忙

CherryStudio 火山引擎DeepSeek R1 告别服务器繁忙 一、下载CherryStudio并安装 CherryStudio是功能强大的多模型桌面客户端,支持Windows、macOS和Linux系统。集成了多种主流的大语言模型(如OpenAI、DeepSeek、Gemini等)以及本地模型运行功…

Hessian 矩阵是什么

Hessian 矩阵是什么 目录 Hessian 矩阵是什么Hessian 矩阵的性质及举例说明**1. 对称性****2. 正定性决定极值类型****特征值为 2(正),因此原点 ( 0 , 0 ) (0, 0) (0,0) 是极小值点。****3. 牛顿法中的应用****4. 特征值与曲率方向****5. 机器学习中的实际意义**一、定义与…

C#从入门到精通(1)

目录 第一章 C#与VS介绍 第二章 第一个C#程序 (1)C#程序基本组成 1.命名空间 2.类 3.Main方法 4.注释 5.语句 6.标识符及关键字 (2)程序编写规范 1.代码编写规则 2.程序命名方法 3.元素命名规范 第三章 变量 &…

【LINUX操作系统】 动静态库的链接原理

初识linux(16) 动静态库(手搓动静态库!)-CSDN博客 完成了对动静态库使用的学习,现在浅显理解下动态库加载的原理。 1. 宏观认知 磁盘中的应用程序main和动态库libmystdio.so先加载到内存中 加载到内存后&am…

广东启动“跨境电商+产业带”系列活动 三年打造30个产业振兴样板

大湾区经济网湾区财经快讯,近日,2025年广东省“跨境电商+产业带”助力“百千万工程”系列活动在中山市古镇镇启动。作为外贸领域新质生产力的重要载体,跨境电商将通过赋能县域特色产业带转型升级,为城乡融合与乡村振兴…

穿透递归的本质:从无限梦境到可控魔法的蜕变之路

穿透递归的本质:从无限梦境到可控魔法的蜕变之路(C实现) 一、递归:程序员的盗梦空间 在计算机科学的宇宙中,递归是最接近魔法本质的编程范式。它像一面镜子中的镜子,引导我们通过自我相似性破解复杂问题。…

基于django+vue的购物商城系统

开发语言:Python框架:djangoPython版本:python3.8数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统首页 热卖商品 优惠资讯 个人中心 后台登录 管理员功能界面 用户管理 商品分类管理…

WordPress靶场攻略

后台修改模板 修改404.php为一句话木马 访问404.php,验证有没有成功 http://47.122.51.245:8080/wp-content/themes/twentyfifteen/404.php?cmdphpinfo(); 上传主题 创建6.php,写入图中代码 自己随便下载一个主题包,将1.php和主题包压缩在一起,提交上…

JVM常用概念之对象对齐

问题 对象对齐有什么规范吗?对象对齐是8个字节吗? 基础知识 许多硬件实现要求对数据的访问是对齐的,即确保所有 N 字节宽度的访问都在 N 的整数倍的地址上完成。即使对于普通的数据访问没有特别要求,特殊操作(特别是原子操作&#xff09…

K8S学习之基础三十七:prometheus监控node资源

Prometheus v2.2.1 ​ 编写yaml文件,包含创建ns、configmap、deployment、service # 创建monitoring空间 vi prometheus-ns.yaml apiVersion: v1 kind: Namespace metadata:name: monitor-sa# 创建SA并绑定权限 kubectl create serviceaccount monitor -n monito…

leetcode127.单词接龙

本题的思路就是将所有可转换的序列相连,构成图,然后选择起始词作为广度优先遍历的起点,那么就能找到转换的最小步骤数 而这里的两个单词是否相连不是真的把他们弄成一张图,而是采用暴力枚举,逐个尝试替换字母&#xf…

Tr0ll2靶机详解

一、主机发现 arp-scan -l靶机ip:192.168.55.164 二、端口扫描、漏洞扫描、目录枚举、指纹识别 2.1端口扫描 nmap --min-rate 10000 -p- 192.168.55.164发现21端口的ftp服务开启 以UDP协议进行扫描 使用参数-sU进行UDP扫描 nmap -sU --min-rate 10000 -p- 19…

Pycharm接入DeepSeek,提升自动化脚本的写作效率

一.效果展示: 二.实施步骤: 1.DeepSeek官网创建API key: 创建成功后,会生成一个API key: 2. PyCharm工具,打开文件->设置->插件,搜索“Continue”,点击安装 3.安装完成后&…

如何在 Node.js 中使用 .env 文件管理环境变量 ?

Node.js 应用程序通常依赖于环境变量来管理敏感信息或配置设置。.env 文件已经成为一种流行的本地管理这些变量的方法,而无需在代码存储库中公开它们。本文将探讨 .env 文件为什么重要,以及如何在 Node.js 应用程序中有效的使用它。 为什么使用 .env 文…