我订阅了Uniswap V2和V3的挂起事务,并正在通过解码事务的input来检查它们。我得到的数据如下:
//1
data: {
method: 'swapExactETHForTokens',
types: [ 'uint256', 'address[]', 'address', 'uint256' ],
inputs: [
BigNumber { _hex: '0x010c3ff3bae4bd84', _isBigNumber: true },
[
'C02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
'3a1311B8C404629E38f61D566cefEFed083B9670'
],
'463ceb903480827E1d4140aE1df007eA44DfAc10',
BigNumber { _hex: '0x6187bb69', _isBigNumber: true }
],
names: [ 'amountOutMin', 'path', 'to', 'deadline' ]
}和
//2
data: {
method: 'swapExactTokensForTokens',
types: [ 'uint256', 'uint256', 'address[]', 'address', 'uint256' ],
inputs: [
BigNumber { _hex: '0x0b1a2bc2ec500000', _isBigNumber: true },
BigNumber { _hex: '0x2a967f2b8cb4b4c043', _isBigNumber: true },
[
'8B3192f5eEBD8579568A2Ed41E6FEB402f93f73F',
'C02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
'4da08a1Bff50BE96bdeD5C7019227164b49C2bFc'
],
'A07503510F3A09DA0513e1040F7869a52E2b052D',
BigNumber { _hex: '0x619cb502', _isBigNumber: true }
],
names: [ 'amountIn', 'amountOutMin', 'path', 'to', 'deadline' ]
}还有一些我没有包括的multicall方法。
请帮我弄清楚(1)和(2)的意思。我感兴趣的是:
原木在哪里?
总的来说,我还需要:
怎么把这些也弄到手?通过其他电话?多么?
发布于 2022-09-02 12:54:14
都已经在那里了。您有没有研究过实际的路由器契约,看看它是如何执行交换方法的?
如果方法名是swapExactTokensForTokens,就像在您的示例中一样,我非常清楚地看到,正在发生令牌令牌交换,而不是ETH令牌交换。否则,该方法将被称为swapExactEthForTokens。
在amountIn的输入中,这笔交易的金额也在那里。如果要计算amountOut,必须执行基本常量乘积数学。我建议您阅读执行这些计算的Uniswap Library合同。
同样,也可以从您已经拥有的数据中派生出滑移。简单地说,以amountOutMin输入和以前计算的amountOut的百分比变化为例,就会有您的滑动。
费用是协议规定的常数,在Uniswap的情况下是0.3%。要计算费用的数值,必须在路径内循环,计算每对的amountOut,乘以0.3%并将它们相加。考虑到费用是在每一个路径步骤减去,因此对amountIn N+1将是amountOut *(1-0.3%)对N。
最后,你认为这笔交易的钱包是什么意思?听筒?在这种情况下,将是to tx输入。
https://ethereum.stackexchange.com/questions/132162
复制相似问题