如何获取Uniswap交易交易中etherscan提供的数据?

问题描述 投票:0回答:2

我尝试使用 web3.js,但是似乎很难获取 etherscan 提供的数据。

以本次交易为例: https://etherscan.io/tx/0x6ce8bbf5eca28a2a327b5f2b9f93ad5393c12bafe89f2cc379dd37ca9d1627b9

如何获取这些数据?

  • 比特币/WETH等配对信息
  • WETH 交易量
  • 比特币交易量
  • 价格
web3js ethers.js uniswap etherscan
2个回答
0
投票

Etherscan交易详情页面聚合了多个来源的信息。

一些数据存储在事件日志中。它们是交易收据的一部分,仅适用于已在区块中生成的交易。这是因为事件日志是在交易的实际执行过程中生成的,该交易由区块生产者(PoW 上的矿工,PoS 上的验证者)执行。

文档:https://web3js.readthedocs.io/en/v1.10.0/web3-eth.html#gettransactionreceipt

具体来说,当转移

ERC-20
代币时,会发出 Transfer 事件日志。它们由每个 ERC-20 代币合约发出,这意味着您可以查看代币合约地址,并查询它以获取代币名称等其他信息。

请注意,ERC-20 代币名称 name 只是一个由代币开发人员分配值的文本字段,未经网络验证。例如,可以有多个具有相同名称的令牌。在这种情况下,“比特币”只是 ERC-20 代币的名称,它可能代表以太坊网络上 BTC 的价值,也可能不代表。但这不是真正的 L1 比特币。

关于配对信息和价格,您还可以查询配对合约。

Swap
事件日志由特定的 Uniswap V2(相当广泛使用的去中心化交易所)配对合约发出,该合约允许在这两个特定的 ERC-20 代币之间进行交易。但是返回配对信息的函数 - 或者某些信息是否可用 - 取决于实际的交换合约。因此,实际上 Uniswap V3 或 dYdX 或任何其他去中心化交易所上的配对信息可能会以不同的方式检索。

const txReceipt = await web3.eth.getTransactionReceipt("0x6ce8bbf5eca28a2a327b5f2b9f93ad5393c12bafe89f2cc379dd37ca9d1627b9");
for (let log of txReceipt.logs) {
    switch (log.topics[0]) {
        case web3.utils.keccak256("Transfer(address,address,uint256)"):
            // TODO decode the 32byte hex representation to decimal numbers and addresses
            console.log(`Transfer ${log.data} tokens (token contract ${log.address}) from ${log.topics[1]} to ${log.topics[2]}`);
            break;
        case web3.utils.keccak256("Swap(address,uint256,uint256,uint256,uint256,address)"):
            console.log(`Swap on Uniswap V2 pair - pair contract address ${log.address}`);
            break;
    }
}

const pairContract = new web3.eth.Contract(ABI_JSON, CONTRACT_ADDRESS);
// Uniswap V2 doesn't return the price directly
// but since it's a liquidity pool
// you can simply divide their reserves of token0 by their reserves of token1
const reserves = await pairContract.methods.getReserves();

0
投票

如果我只想搜索所有交换日志,您能建议我该怎么做吗?谢谢(在这里提问是因为我这里没有足够的代表)。因为否则,我将不得不查看每笔交易和每条日志以找到我所需的交易哈希值

© www.soinside.com 2019 - 2024. All rights reserved.