首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查web3应用程序流量?

如何检查web3应用程序流量?
EN

Stack Overflow用户
提问于 2021-05-14 12:50:22
回答 1查看 84关注 0票数 1

我正在尝试理解使用web3的web应用程序是如何提取数据的,以及我如何检查它。

示例:

https://charts.bogged.finance/?token=0xD2602dBB063627B80D5ae671007900F558c49E35

如果您查看网络选项卡,它将包含以下请求:

代码语言:javascript
复制
{
    "id": 19,
    "jsonrpc": "2.0",
    "method": "eth_call",
    "params": [
        {
            "data": "0x0eb22982000000000000000000000000d2602dbb06362000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c",
            "to": "0x0bd91f45fca6428680c02a79a2496d6f97bdf24a"
        },
        "latest"
    ]
}

和响应,例如:

代码语言:javascript
复制
{
    "id": 19,
    "jsonrpc": "2.0",
    "result": "0x000000000000000000000000000000000000000000000000b0020ad7e5d55dc9"
}

两者都不是特别有用。

据我所知,to是合同地址。

EN

回答 1

Stack Overflow用户

发布于 2021-05-14 19:41:21

请求转到https://bsc-dataseed.binance.org/,这是Binance Smart Chain的JSON-RPC endpoint。这个特殊的节点似乎是由Binance直接操作的。

eth_call是JSON-RPC的只读方法。

params.data包含传递给函数的ABI-encoded函数签名(0x后的前4个字节或8个十六进制字符)和参数(签名后)。

不幸的是,目标契约的创建者拥有not published其源代码,并且decompiled字节码有点混乱(反编译器返回一些伪代码)。但是它显示了带有签名0eb22982的函数(在伪代码的line 99上)使用两个地址作为参数:

代码语言:javascript
复制
def unknown0eb22982(addr _param1, addr _param2) payable: 
  require calldata.size - 4 >= 64
  require ext_code.size(stor2)
  static call stor2.0x8fc06c02 with:
          gas gas_remaining wei
         args addr(_param1), _param2

,调用一个external contract (通过查询storage slot找到它的地址,也没有发布源代码),转换结果并返回转换。

如果他们发布了源代码,那么您可以通过实例性函数定义找到一个可以转换为已知签名的函数。

您可以在my other answer中找到有关将定义(例如transferOwnership(address))转换为签名(例如f2fde38b)的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67529199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档