Sort API를 사용하여 Uniswap 거래에서 거래 분석
14851 단어 blockchainweb3webdevethereum
관심 있는 계약 주소부터 시작하겠습니다: 0x7a250d5630b4cf539739df2c5dacb4c659f2488d
Sort API을 사용하여 몇 가지 샘플 Uniswap 거래를 살펴보고 무엇을 배울 수 있는지 살펴보겠습니다.
POST https://api.sort.xyz/v0/transaction/
신체:
{
"contract_address" : "0x7a250d5630b4cf539739df2c5dacb4c659f2488d",
"limit": 5
}
위의 API 호출은 날짜 내림차순으로 정렬된 최근 5개의 Uniswap 트랜잭션을 반환합니다. 트랜잭션에는 5가지 기본 Uniswap 거래 기능이 있음을 알 수 있습니다.
'swapExactTokensForTokens'에 집중하고 API call을 수정해 보겠습니다.
POST https://api.sort.xyz/v0/transaction/
신체:
{
"contract_address" : "0x7a250d5630b4cf539739df2c5dacb4c659f2488d",
"contract_function" : "swapExactTokensForTokens",
"limit": 10
}
이 트랜잭션을 살펴보겠습니다(트랜잭션 해시에 대해 this link에 액세스하여 웹 브라우저에서 따라갈 수 있음).
0xb5f32cd7524fc4f33fd656625bb98dfed5d1396f9c6580b82a9501a89c5569f5
View transaction information :
GET https://api.sort.xyz/v0/transaction/0xb5f32cd7524fc4f33fd656625bb98dfed5d1396f9c6580b82a9501a89c5569f5
가장 먼저 살펴볼 것은 함수 이름과 함수에 전달된 매개변수입니다. 이는 최상위 수준의 "함수"필드에 있습니다.
"function": {
"name": "swapExactTokensForTokens",
"params": [
{
"name": "amountIn",
"value": "100000000000000000000",
"type": "uint256"
},
{
"name": "amountOutMin",
"value": "37541924376765909332716544",
"type": "uint256"
},
{
"name": "path",
"value": [
{
"raw": "0xb1191f691a355b43542bea9b8847bc73e7abb137",
"name": "Kirobo",
"symbol": "KIRO"
},
{
"raw": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"name": "ETH",
"symbol": "ETH"
},
{
"raw": "0x1c7e83f8c581a967940dbfa7984744646ae46b29",
"name": "random",
"symbol": "RND"
}
],
"type": "address[]"
},
{
"name": "to",
"value": "0xeb9fbacfac3dceded5dc45daa3b319a9a1593dc7",
"type": "address"
},
{
"name": "deadline",
"value": "1647875834",
"type": "uint256"
}
]
}
함수 호출을 보면 요청 중인 트랜잭션에 대한 아이디어를 얻을 수 있습니다.
이제 실제로 무슨 일이 일어났는지 로그를 살펴보겠습니다. 로그는 최상위 "logs"필드에서 찾을 수 있습니다.
"logs": {
"functions": [
{
"name": "Transfer",
"type": "event",
"params": [
{
"value": "0xeb9fbacfac3dceded5dc45daa3b319a9a1593dc7",
"name": "from",
"symbol": null,
"type": "address"
},
{
"value": "0x5cd136e8197be513b06d39730dc674b1e0f6b7da",
"name": "to",
"symbol": "UNI-V2",
"type": "address"
},
{
"value": "100000000000000000000",
"type": "uint256",
"name": "value"
}
],
"function_address": {
"value": "0xb1191f691a355b43542bea9b8847bc73e7abb137",
"name": "Kirobo",
"symbol": "KIRO"
}
},
{
"name": "Approval",
"type": "event",
"params": [
{
"value": "0xeb9fbacfac3dceded5dc45daa3b319a9a1593dc7",
"name": "owner",
"symbol": null,
"type": "address"
},
{
"value": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d",
"name": "spender",
"symbol": null,
"type": "address"
},
{
"value": "115792089237316195423570985008687907853269984665640564039357584007913129639935",
"type": "uint256",
"name": "value"
}
],
"function_address": {
"value": "0xb1191f691a355b43542bea9b8847bc73e7abb137",
"name": "Kirobo",
"symbol": "KIRO"
}
},
{
"name": "Transfer",
"type": "event",
"params": [
{
"value": "0x5cd136e8197be513b06d39730dc674b1e0f6b7da",
"name": "src",
"symbol": "UNI-V2",
"type": "address"
},
{
"value": "0x5449bd1a97296125252db2d9cf23d5d6e30ca3c1",
"name": "dst",
"symbol": "UNI-V2",
"type": "address"
},
{
"value": "4305548873194210",
"type": "uint256",
"name": "wad"
}
],
"function_address": {
"value": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"name": "ETH",
"symbol": "ETH"
}
},
{
"name": "Sync",
"type": "event",
"params": [
{
"value": "5340477822266522423654997",
"type": "uint112",
"name": "reserve0"
},
{
"value": "230624450502417018204",
"type": "uint112",
"name": "reserve1"
}
],
"function_address": {
"value": "0x5cd136e8197be513b06d39730dc674b1e0f6b7da",
"name": "Uniswap V2",
"symbol": "UNI-V2"
}
},
{
"name": "Swap",
"type": "event",
"params": [
{
"value": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d",
"name": "sender",
"symbol": null,
"type": "address"
},
{
"value": "100000000000000000000",
"type": "uint256",
"name": "amount0In"
},
{
"value": "0",
"type": "uint256",
"name": "amount1In"
},
{
"value": "0",
"type": "uint256",
"name": "amount0Out"
},
{
"value": "4305548873194210",
"type": "uint256",
"name": "amount1Out"
},
{
"value": "0x5449bd1a97296125252db2d9cf23d5d6e30ca3c1",
"name": "to",
"symbol": "UNI-V2",
"type": "address"
}
],
"function_address": {
"value": "0x5cd136e8197be513b06d39730dc674b1e0f6b7da",
"name": "Uniswap V2",
"symbol": "UNI-V2"
}
},
{
"name": "Transfer",
"type": "event",
"params": [
{
"value": "0x5449bd1a97296125252db2d9cf23d5d6e30ca3c1",
"name": "from",
"symbol": "UNI-V2",
"type": "address"
},
{
"value": "0xeb9fbacfac3dceded5dc45daa3b319a9a1593dc7",
"name": "to",
"symbol": null,
"type": "address"
},
{
"value": "37579466301142675242049261",
"type": "uint256",
"name": "value"
}
],
"function_address": {
"value": "0x1c7e83f8c581a967940dbfa7984744646ae46b29",
"name": "random",
"symbol": "RND"
}
},
{
"name": "Sync",
"type": "event",
"params": [
{
"value": "18139246877011718508631881984",
"type": "uint112",
"name": "reserve0"
},
{
"value": "2076317830422973219",
"type": "uint112",
"name": "reserve1"
}
],
"function_address": {
"value": "0x5449bd1a97296125252db2d9cf23d5d6e30ca3c1",
"name": "Uniswap V2",
"symbol": "UNI-V2"
}
},
{
"name": "Swap",
"type": "event",
"params": [
{
"value": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d",
"name": "sender",
"symbol": null,
"type": "address"
},
{
"value": "0",
"type": "uint256",
"name": "amount0In"
},
{
"value": "4305548873194210",
"type": "uint256",
"name": "amount1In"
},
{
"value": "37579466301142675242049261",
"type": "uint256",
"name": "amount0Out"
},
{
"value": "0",
"type": "uint256",
"name": "amount1Out"
},
{
"value": "0xeb9fbacfac3dceded5dc45daa3b319a9a1593dc7",
"name": "to",
"symbol": null,
"type": "address"
}
],
"function_address": {
"value": "0x5449bd1a97296125252db2d9cf23d5d6e30ca3c1",
"name": "Uniswap V2",
"symbol": "UNI-V2"
}
}
],
"num_logs": 8,
"status": 1
}
몇 가지 참고 사항:
8개의 함수 호출을 볼 수 있습니다. 이니시에이터에서 컨트랙트로 "KIRO"를 전송(이전/승인)한 다음 "KIRO"에서 "ETH"로 스왑한 다음 "ETH"에서 "RND"로 최종 스왑합니다. 그런 다음 "RND"는 요청 개시자에게 다시 전송됩니다.
각 기능을 자세히 살펴보는 데 더 많은 시간을 할애할 수 있습니다. 이 자습서는 트랜잭션을 살펴보고 Sort API 을 사용하는 데 도움이 되는 입문서입니다.
Discord 에 더 많은 질문을 하거나 Sort API documentation 로 계속 진행하십시오.
Reference
이 문제에 관하여(Sort API를 사용하여 Uniswap 거래에서 거래 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sort_xyz/dissecting-trades-in-a-uniswap-transaction-with-the-sort-api-52jl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)