멀티콜(multiCall)

김성진·2022년 8월 17일
0

블록체인 네트워크 상에서 한번의 tx로 여러지갑에 이체하는거는 멀티콜이라는 키워드와 깊은 연관이 있다.

솔리디티의 DelegateCall을 이용하면 트랜잭션이 다른 트랜잭션을 만들 수 있는데, 이걸 for문으로 수차례 실행하면 한 트랜잭션이 다차례의 트랜잭션을 만들 수 있다.

컴파운드(?)였나 어디서 멀티콜 컨트랙트를 메인넷 종류별로 다 배포해놓고 주소를 적어놔서 그 주소 호출하는 식으로 멀티콜 쏠 수 있다. 즉, 굳이 재배포 하지 않아도 됨.

etherscan에서도 multicall 관련 검생이 가능하다 (아래사진과 같이)
위처럼, 유니스왑이나 메이커다오에서 만든 멀티콜 주소를 호출해서 쓸 수 있다.

유니스왑 멀티콜 링크:

https://etherscan.io/address/0x5ba1e12693dc8f9c48aad8770482f4739beed696#code

멀티콜 예제 코드 링크:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.1.0-rc.0/test/utils/Multicall.test.js#L16-L19

makerdao 주소목록

https://github.com/makerdao/multicall

makerdao 사용법

https://github.com/makerdao/multicall.js

1. multicall 컨트랙트 코드 분석하기
2. 테스트넷에서 배포하고 사용해보기
3. makerdao의 multicall.js 활용해서 실제품 개발하기

Reference:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.7.3/contracts/utils/Multicall.sol

profile
multi-national communicator with programming (back-end)

0개의 댓글