-
[Intern] Squid 브리지 api 연동 및 데이터 확인Intern/Project 2024. 12. 13. 20:32
✏ 근무 내용
- Potential Future Requirements 개발 시작
- squid 브리지 api 연동 및 데이터 확인
⭐근무 결과
개발 요구사항
- 목표:
- 다중 체인 브릿지(Stargate, Squidrouter, Layerswap, Brid.gg 등)를 사용하는 트랜잭션을 추적.
- 추적 대상: USDT, USDC, Ethereum의 브릿징 트랜잭션.
- 포함된 브릿지:
- StargateFinance: 다중 체인 유동성 제공.
- Squidrouter: 스왑 기반 브릿지.
- Layerswap: Layer 2 및 메인넷 간 브릿지.
- Brid.gg OP Mainnet: Optimism 메인넷에서의 브릿지.
- 추적 데이터:
- 송신 체인 → 수신 체인으로의 자산 이동.
- 자산 종류(USDT, USDC, ETH).
- 트랜잭션 상태 및 세부 정보.
구현해야 할 기능
- 브릿지 API 통합
- 각 브릿지(Stargate, Squid, Layerswap, Brid.gg)의 API를 통합.
- 트랜잭션 조회 및 상태를 확인하는 엔드포인트 구현.
- 데이터 추적 시스템
- 트랜잭션 데이터 수집: 송신/수신 체인, 자산 종류, 트랜잭션 해시 등.
- 상태 업데이트: 트랜잭션 완료 여부 및 실패 로그 기록.
- 프론트엔드
- 브릿지 상태 및 트랜잭션 기록을 시각적으로 표시.
- 예: 각 브릿지별 성공/실패한 트랜잭션 목록.
- 백엔드
- 스케줄링 시스템: 정기적으로 각 브릿지에서 새로운 트랜잭션을 수집.
- 데이터베이스 설계: 브릿지별 트랜잭션 기록 저장.
- 알림 기능: 실패 트랜잭션이 발생했을 경우 경고 로그 생성.
[API 찾기]
- 현재 Stargate Finance는 트랜잭션 해시를 통해 직접 조회할 수 있는 공개 API를 제공하지 않습니다.
- https://app.squidrouter.com/
squid는 아래 api 사용 가능(해시값으로 데이터 조회 가능)
{ "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
반응형'Intern > Project' 카테고리의 다른 글
[Intern] Squid api 연동 출발 및 도착 체인 트랜잭션 정보 조회 개발 (0) 2024.12.18 [Intern] Squid router API 데이터 분석 (0) 2024.12.17 [Intern] 캐싱 및 redis 사용 검색 속도 향상 적용 (0) 2024.12.12 [Intern] Source 트랜잭션 value 값 확인 및 검증 (0) 2024.12.11 [Intern] Range api 트랜잭션 반환 데이터 확인 / 해시값 조회시 출발 및 도착 체인 정보 반환하도록 구현 (0) 2024.12.11