ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Intern] Squid 브리지 api 연동 및 데이터 확인
    Intern/Project 2024. 12. 13. 20:32

    근무 내용

    • Potential Future Requirements 개발 시작
    • squid 브리지 api 연동 및 데이터 확인

     

    근무 결과

    개발 요구사항

    1. 목표:
      • 다중 체인 브릿지(Stargate, Squidrouter, Layerswap, Brid.gg 등)를 사용하는 트랜잭션을 추적.
      • 추적 대상: USDT, USDC, Ethereum의 브릿징 트랜잭션.
    2. 포함된 브릿지:
      • StargateFinance: 다중 체인 유동성 제공.
      • Squidrouter: 스왑 기반 브릿지.
      • Layerswap: Layer 2 및 메인넷 간 브릿지.
      • Brid.gg OP Mainnet: Optimism 메인넷에서의 브릿지.
    3. 추적 데이터:
      • 송신 체인 → 수신 체인으로의 자산 이동.
      • 자산 종류(USDT, USDC, ETH).
      • 트랜잭션 상태 및 세부 정보.

    구현해야 할 기능

    1. 브릿지 API 통합
      • 각 브릿지(Stargate, Squid, Layerswap, Brid.gg)의 API를 통합.
      • 트랜잭션 조회 및 상태를 확인하는 엔드포인트 구현.
    2. 데이터 추적 시스템
      • 트랜잭션 데이터 수집: 송신/수신 체인, 자산 종류, 트랜잭션 해시 등.
      • 상태 업데이트: 트랜잭션 완료 여부 및 실패 로그 기록.
    3. 프론트엔드
      • 브릿지 상태 및 트랜잭션 기록을 시각적으로 표시.
      • 예: 각 브릿지별 성공/실패한 트랜잭션 목록.
    4. 백엔드
      • 스케줄링 시스템: 정기적으로 각 브릿지에서 새로운 트랜잭션을 수집.
      • 데이터베이스 설계: 브릿지별 트랜잭션 기록 저장.
      • 알림 기능: 실패 트랜잭션이 발생했을 경우 경고 로그 생성.

    [API 찾기]

    • 현재 Stargate Finance는 트랜잭션 해시를 통해 직접 조회할 수 있는 공개 API를 제공하지 않습니다.
    • https://app.squidrouter.com/

    squid는 아래 api 사용 가능(해시값으로 데이터 조회 가능)

    https://api.0xsquid.com/v1/status?transactionId=0x09f6106db0dc8b387ad11c5cd87bee8590341c64b38dc80952742cea07961a5f

    {
      "id": "0x09f6106db0dc8b387ad11c5cd87bee8590341c64b38dc80952742cea07961a5f_94_108",
      "status": "destination_executed",
      "gasStatus": "gas_paid_enough_gas",
      "isGMPTransaction": true,
      "axelarTransactionUrl": "<https://axelarscan.io/gmp/0x09f6106db0dc8b387ad11c5cd87bee8590341c64b38dc80952742cea07961a5f>",
      "fromChain": {
        "transactionId": "0x09f6106db0dc8b387ad11c5cd87bee8590341c64b38dc80952742cea07961a5f",
        "blockNumber": 15983854,
        "callEventStatus": "",
        "callEventLog": [ ],
        "chainData": {
          "chainName": "Ethereum",
          "chainType": "evm",
          "rpc": "<https://ethereum.publicnode.com>",
          "networkName": "Ethereum",
          "chainId": 1,
          "nativeCurrency": {
            "name": "Ethereum",
            "symbol": "ETH",
            "decimals": 18,
            "icon": "<https://raw.githubusercontent.com/0xsquid/assets/main/images/master/tokens/eth.svg>"
          },
          "swapAmountForGas": "2000000",
          "chainIconURI": "<https://raw.githubusercontent.com/0xsquid/assets/main/images/master/tokens/eth.svg>",
          "blockExplorerUrls": [
            "<https://etherscan.io/>"
          ],
          "chainNativeContracts": {
            "wrappedNativeToken": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
            "ensRegistry": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
            "multicall": "0xcA11bde05977b3631167028862bE2a173976CA11",
            "usdcToken": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
          },
          "axelarContracts": {
            "gateway": "0x4F4495243837681061C4743b74B3eEdf548D56A5",
            "forecallable": ""
          },
          "squidContracts": {
            "squidRouter": "0xce16F69375520ab01377ce7B88f5BA8C48F8D666",
            "defaultCrosschainToken": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
            "squidMulticall": "0xaD6Cea45f98444a922a2b4fE96b8C90F0862D2F4",
            "squidFeeCollector": "0x19cd4F3820E7BBed45762a30BFA37dFC6c9C145b"
          },
          "estimatedRouteDuration": 960,
          "estimatedExpressRouteDuration": 20
        },
        "transactionUrl": "<https://etherscan.io/tx/0x09f6106db0dc8b387ad11c5cd87bee8590341c64b38dc80952742cea07961a5f>"
      },
      "toChain": {
        "transactionId": "0x59de433ff22b2b996c06bf21c3447e21d09ce1f828a697e581a07e37e3a055a5",
        "blockNumber": 22457112,
        "callEventStatus": "CrossMulticallFailed",
        "callEventLog": [
          {
            "contractAddress": "0xce16F69375520ab01377ce7B88f5BA8C48F8D666",
            "args": {
              "eventFragment": {
                "name": "CrossMulticallFailed",
                "anonymous": false,
                "inputs": [
                  {
                    "name": "payloadHash",
                    "type": "bytes32",
                    "indexed": true,
                    "components": null,
                    "arrayLength": null,
                    "arrayChildren": null,
                    "baseType": "bytes32",
                    "_isParamType": true
                  },
                  {
                    "name": "reason",
                    "type": "bytes",
                    "indexed": false,
                    "components": null,
                    "arrayLength": null,
                    "arrayChildren": null,
                    "baseType": "bytes",
                    "_isParamType": true
                  },
                  {
                    "name": "refundRecipient",
                    "type": "address",
                    "indexed": true,
                    "components": null,
                    "arrayLength": null,
                    "arrayChildren": null,
                    "baseType": "address",
                    "_isParamType": true
                  }
                ],
                "type": "event",
                "_isFragment": true
              },
              "name": "CrossMulticallFailed",
              "signature": "CrossMulticallFailed(bytes32,bytes,address)",
              "topic": "0xdd7b1484db8d21f4fbda2407f2920037dc379dd66e18b0851aa9d6c14ef493b9",
              "args": [
                "0xb1ef8224428b2204ba5ad551d1f87baecd6e1cc16a78b3f8dca6179148d37c5e",
                "0x5c0dee5d00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008408c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002a50616e676f6c696e526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                "0x661F947aad0916cf177E764C6fda2D4902F993F1"
              ]
            }
          }
        ],
        "chainData": {
          "chainName": "Avalanche",
          "chainType": "evm",
          "rpc": "<https://api.avax.network/ext/bc/C/rpc>",
          "networkName": "Avalanche",
          "chainId": 43114,
          "nativeCurrency": {
            "name": "Avalanche",
            "symbol": "AVAX",
            "decimals": 18,
            "icon": "<https://raw.githubusercontent.com/axelarnetwork/axelar-docs/main/public/images/chains/avalanche.svg>"
          },
          "swapAmountForGas": "2000000",
          "chainIconURI": "<https://raw.githubusercontent.com/axelarnetwork/axelar-docs/main/public/images/chains/avalanche.svg>",
          "blockExplorerUrls": [
            "<https://avascan.info/blockchain/c/>"
          ],
          "chainNativeContracts": {
            "wrappedNativeToken": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",
            "ensRegistry": "0xa7eebb2926d22d34588497769889cbc2be0a5d97",
            "multicall": "0xcA11bde05977b3631167028862bE2a173976CA11",
            "usdcToken": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
          },
          "axelarContracts": {
            "gateway": "0x5029C0EFf6C34351a0CEc334542cDb22c7928f78",
            "forecallable": ""
          },
          "squidContracts": {
            "squidRouter": "0xce16F69375520ab01377ce7B88f5BA8C48F8D666",
            "defaultCrosschainToken": "0xfaB550568C688d5D8A52C7d794cb93Edc26eC0eC",
            "squidMulticall": "0xaD6Cea45f98444a922a2b4fE96b8C90F0862D2F4",
            "squidFeeCollector": "0x19cd4F3820E7BBed45762a30BFA37dFC6c9C145b"
          },
          "estimatedRouteDuration": 90,
          "estimatedExpressRouteDuration": 20
        },
        "transactionUrl": "<https://avascan.info/blockchain/c/tx/0x59de433ff22b2b996c06bf21c3447e21d09ce1f828a697e581a07e37e3a055a5>"
      },
      "timeSpent": {
        "call_approved": 1087,
        "approved_executed": 17,
        "total": 1104
      },
      "routeStatus": [
        {
          "chainId": 1,
          "txHash": "0x09f6106db0dc8b387ad11c5cd87bee8590341c64b38dc80952742cea07961a5f",
          "status": "success",
          "action": "call"
        },
        {
          "chainId": 43114,
          "txHash": "0x59de433ff22b2b996c06bf21c3447e21d09ce1f828a697e581a07e37e3a055a5",
          "status": "success",
          "action": "executed"
        }
      ],
      "error": { },
      "squidTransactionStatus": "partial_success"
    }
    

    검색 예시 해시값 : 0x09f6106db0dc8b387ad11c5cd87bee8590341c64b38dc80952742cea07961a5f

    반응형
Designed by Tistory.