解析 ETH 区块数据交易input

这篇具有很好参考价值的文章主要介绍了解析 ETH 区块数据交易input。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里使用了一个开源项目:https://github.com/rvullriede/evm-abi-decoder

在pom中添加依赖即可:

    <dependency>
      <groupId>net.osslabz.evm</groupId>
      <artifactId>evm-abi-decoder</artifactId>
      <version>0.0.6</version>
    </dependency>

这个jar需要jdk11,想使用jdk8的同学可以把项目中net.osslabz.evm.abi.definition.AbiDefinition#fromJson(java.lang.String) 的入参 Files.readString(Path.of(abiFilePath)) 改一下,这个Files.readString(Path.of(abiFilePath)) 方法只有jdk11有,是读取文件中所有内容为一个string,可以自己实现下。

示例:

package com.mathieu.blockchain;

import com.alibaba.fastjson.JSONObject;
import net.osslabz.evm.abi.decoder.AbiDecoder;
import net.osslabz.evm.abi.decoder.DecodedFunctionCall;

import java.io.IOException;

/**
 * 解析不同的input需要使用其对应的abi
 * abi查询网址 : https://www.smartcontracttoolkit.com/abi
 * <p>
 * 一条input对应的api类型可以通过txn的token去查询tokenMeta获取,tokenMeta中的 tokenType就是abi类型
 * https://docs.nodereal.io/reference/nr_gettokenmeta#example
 * <p>
 * curl https://bsc-mainnet.nodereal.io/v1/your-api-key \
 * -X POST \
 * -H "Content-Type: application/json" \
 * -d '{"jsonrpc":"2.0","method":"nr_getTokenMeta","params":["0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"],"id": 0 }'
 * <p>
 * {
 *   "id": "0",
 *   "jsonrpc": "2.0",
 *   "result": {
 *     "name": "USD Coin",
 *     "symbol": "USDC",
 *     "decimails": 18,
 *     "tokenType": "erc20"
 *   }
 * }
 *
 * @author wangxianghu
 */
public class AbiDecodeDemo {
  public static void main(String[] args) throws IOException {
    AbiDecoder abiDecoder = new AbiDecoder("abiFiles/ERC20.json");
    String input = "0xa9059cbb0000000000000000000000006eba81f430ff5ab8daee861832c015701db87b2400000000000000000000000000000000000000000000001ffbe5120bc8780000";
    // 解析input
    DecodedFunctionCall decodedFunctionCall = abiDecoder.decodeFunctionCall(input);
    System.out.println(JSONObject.toJSONString(decodedFunctionCall.getParams()));
    // 结果
    // [{"name":"_to","type":"address","value":"0x6eba81f430ff5ab8daee861832c015701db87b24"},{"name":"_value","type":"uint256","value":590000000000000000000}]
  }
}

:https://github.com/wangxianghu/learn-blockchain/blob/main/src/main/java/com/mathieu/blockchain/AbiDecodeDemo.java文章来源地址https://www.toymoban.com/news/detail-836015.html

到了这里,关于解析 ETH 区块数据交易input的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 区块链交易隐私如何保证?华为零知识证明技术实战解析

    区块链交易隐私如何保证?华为零知识证明技术实战解析

    【摘要】 零知识证明技术不管应用于金融还是其他领域,都可以对隐私保护,性能提升,或者安全性等场景带来很多帮助。本文通过介绍华为如何在同态加密及零知识证明框架的集成介绍来介绍了一些对金融领域交易隐私保护的思路,通过代码结和应用场景描述了zksnark如何

    2024年01月19日
    浏览(14)
  • 对于EVM系链交易缓冲池txpool的理解

    对于EVM系链交易缓冲池txpool的理解

    区块链就是和交易打交道,我们今天就介绍下,交易处理过程中的一个重要组成部分:txpool。这篇文章主要从功能角度介绍,通过这篇文章会了解: txpool的在交易中的位置和作用。 txpool的功能,核心组成部分queued和pending。 txpool如何实现它的功能。 txpool源码的重要关注点。

    2024年02月05日
    浏览(10)
  • 使用MetaMask实现转账交易时附带Input Data数据

    使用MetaMask实现转账交易时附带Input Data数据

    进入如下页面,点击View Assert in Explorer进入Etherscan网站,就可以看到本账户先前所有的交易信息。  Txn Hash 是交易的Hash Method:交易的类型,一般是两种,如果是Transfer指定的是合约部署;如果是Transfer则代表账户转账 Block:表示当前交易存储在的区块 From:交易的发起方 To:交

    2023年04月11日
    浏览(8)
  • 【区块链 | EVM】深入理解学习EVM - 深入了解 Solidity:堆栈

    【区块链 | EVM】深入理解学习EVM - 深入了解 Solidity:堆栈

    探讨 EVM 堆栈机器,以及如何在堆栈中推入和弹出数据 原文链接: https://betterprogramming.pub/solidity-tutorial-all-about-stack-c1ec6070fe60 探讨 EVM 堆栈机器,以及如何在堆栈中推入和弹出数据 图片来源:Iva Rajović on Unsplash 这是\\\"深入Solidity数据存储位置\\\"系列的第四篇,其他三篇: 深入

    2024年02月09日
    浏览(29)
  • 区块链知识系列 - 系统学习EVM(四)-zkEVM

    区块链知识系列 - 系统学习EVM(四)-zkEVM

    区块链知识系列 - 系统学习EVM(一) 区块链知识系列 - 系统学习EVM(二) 区块链知识系列 - 系统学习EVM(三) 今天我们来聊聊 zkEVM、EVM 兼容性 和 Rollup 是什么? rollup顾名思义,就是把一堆交易卷(rollup)起来变成一个rollup交易,所有节点接收到这个rollup交易之后,不去执行被卷起

    2023年04月09日
    浏览(9)
  • java通过web3j获取ETH交易明细

        我们在项目里面如果想要得到用户的ETH交易明细怎么做呢?有两种方式:    1、直接获取ETH最新块的交易明细。    2、通过块获取用户的交易明细。 废话不多说,直接贴代码看了          下面是项目的相关依赖:

    2024年02月05日
    浏览(12)
  • 区块链知识系列 - 系统学习EVM(二)-存储与安全

    区块链知识系列 - 系统学习EVM(二)-存储与安全

    区块链知识系列 - 系统学习EVM(一) EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数。 不支持浮点数 缺乏标准库支持,例如字符串拼接、切割、查找等等都需要开发者自己实现 给合约打补丁或是部分升级合约代码在EVM中是完全不可能的 Code code 部署合约时储存

    2024年02月02日
    浏览(11)
  • web3j的基础用法-3ETH交易监听器

    web3j的基础用法-3ETH交易监听器

    demo简单实现了4种 监听区块 监听所有交易 监听待上链的交易 监听指定合约的交易事件(例如监控大户流转,实现跟单,抛售等后续逻辑) github 地址 https://github.com/jambestwick/we3jdemo

    2024年02月11日
    浏览(13)
  • 区块链知识系列 - 系统学习EVM(一)-架构与执行流程

    区块链知识系列 - 系统学习EVM(一)-架构与执行流程

    EVM有一个基于栈的架构,在一个栈中保存了所有内存数值。EVM的数据处理单位被定义为256位的“字”( 这主要是为了方便处理哈希运算和椭圆曲线运算操作 ) 这里所说的内存数值是指那些EVM字节码运行所需要的输入、输出参数数据和智能合约程序运行中所需要的局部变量等

    2024年02月02日
    浏览(12)
  • 如何从区块链上数据识别出套利行为或者抢跑三明治交易

    如何从区块链上数据识别出套利行为或者抢跑三明治交易

    如何识别链上套利行为或者抢跑夹子三明治行为或交易 鉴于交易可以任意复杂并且可以有无数未知交易模式,使用特定交易模式匹配的方法无法应对新的 MEV 模式。为了确定交易中是否发生套利,我们需要对交易进行通用抽象。 以下是我们为认可设立的原则。 我们将交易视

    2024年03月25日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包