75 lines
1.7 KiB
Go
75 lines
1.7 KiB
Go
package ethereum
|
|
|
|
import (
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
// Minimal ABIs for Uniswap V2 Router02 and ERC20 — only the methods we call.
|
|
|
|
func mustRouterABI() io.Reader {
|
|
return strings.NewReader(`[
|
|
{
|
|
"name": "swapExactTokensForETH",
|
|
"type": "function",
|
|
"stateMutability": "nonpayable",
|
|
"inputs": [
|
|
{"name": "amountIn", "type": "uint256"},
|
|
{"name": "amountOutMin", "type": "uint256"},
|
|
{"name": "path", "type": "address[]"},
|
|
{"name": "to", "type": "address"},
|
|
{"name": "deadline", "type": "uint256"}
|
|
],
|
|
"outputs": [
|
|
{"name": "amounts", "type": "uint256[]"}
|
|
]
|
|
},
|
|
{
|
|
"name": "swapExactETHForTokens",
|
|
"type": "function",
|
|
"stateMutability": "payable",
|
|
"inputs": [
|
|
{"name": "amountOutMin", "type": "uint256"},
|
|
{"name": "path", "type": "address[]"},
|
|
{"name": "to", "type": "address"},
|
|
{"name": "deadline", "type": "uint256"}
|
|
],
|
|
"outputs": [
|
|
{"name": "amounts", "type": "uint256[]"}
|
|
]
|
|
}
|
|
]`)
|
|
}
|
|
|
|
func mustERC20ABI() io.Reader {
|
|
return strings.NewReader(`[
|
|
{
|
|
"name": "balanceOf",
|
|
"type": "function",
|
|
"stateMutability": "view",
|
|
"inputs": [{"name": "_owner", "type": "address"}],
|
|
"outputs": [{"name": "balance", "type": "uint256"}]
|
|
},
|
|
{
|
|
"name": "allowance",
|
|
"type": "function",
|
|
"stateMutability": "view",
|
|
"inputs": [
|
|
{"name": "_owner", "type": "address"},
|
|
{"name": "_spender", "type": "address"}
|
|
],
|
|
"outputs": [{"name": "", "type": "uint256"}]
|
|
},
|
|
{
|
|
"name": "approve",
|
|
"type": "function",
|
|
"stateMutability": "nonpayable",
|
|
"inputs": [
|
|
{"name": "_spender", "type": "address"},
|
|
{"name": "_value", "type": "uint256"}
|
|
],
|
|
"outputs": [{"name": "", "type": "bool"}]
|
|
}
|
|
]`)
|
|
}
|