ソートAPIを使用したUNISWAPトランザクションでのトレードの解析


UNISWAP契約、および契約の背後のメカニズムはinteresting contract to study . 我々はすべてを通過しないUniswap contracts , しかし、どのようにトランザクションが動作し、トランザクションを完了するために交換された様々なコインを視覚化.
我々が興味を持っている契約アドレスから始めましょう.0x7a250d5630b4cf539739df2c5dacb4c659f2488d
を使用していくつかのサンプルuniswapトランザクションを取得しましょうSort API 我々が学ぶことができるものを見ること
POST https://api.sort.xyz/v0/transaction/
ボディ
{
  "contract_address" : "0x7a250d5630b4cf539739df2c5dacb4c659f2488d",
  "limit": 5
}
上記のAPI呼び出しは、最新の5つのUNISWAPトランザクションを返します.5つの主要なUNISWAP取引機能がトランザクションにあることに注意してください.
  • スワップ演算子
  • swapacttethfortokens
  • スワップエクストラトゥンフォレス
  • スワップトークン
  • swapethforactttokens
  • ' swapdexttokensfortokens 'に集中しましょう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 "フィールドにあります.
    "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"
          }
      ]
    }
    
    関数呼び出しを見ると、要求されているトランザクションのアイデアを得ることができます.
  • Robert Tokens(数字が非常に大きいように見えます.これは契約値に基づいてXの小数点を移動していないためです).
  • さて、実際に何が起こったかを見るために、ログを見てみましょう.ログはトップレベルの「ログ」フィールドにあります.
    "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
    }
    
    いくつかのメモ
  • “Status”フィールドは1または0であり、トランザクションが成功したかどうかを示します.
  • 「機能的なアドレス」フィールドはどの機能が実行されたかについて我々に話します.
  • 8機能コールを見ることができます.イニシエータ(転送/承認)からの契約に「Kiro」の移動があり、「Kiro」から「Eeth」までスワップし、「ETH」から「RND」への最終スワップ.「RND」はそれから要求の開始者に送り返される.
    私たちは、より深く、各機能を通過するより多くの時間を過ごすことができる、このチュートリアルでは、トランザクションを使用して歩いて開始し、使用して、入門書になることを意図されてSort API .
    私たちの質問にもっと気軽にDiscord , またはSort API documentation .