Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 공기먹는다이버스
- 스쿠버다이빙
- xcode
- 리브어보드
- 크로아티아
- Device 등록
- 도심공항
- 연금저축펀드
- 러브자그레브
- 괌 자유여행
- SwiftUI #Skeleton #데이터갱신
- 스페인여행
- 세비야
- 대한항공
- Swift #Concurrency #쓰레드
- 스플리트
- Concurrency #Swift #Combine
- Cocoapods #PrivateRepo #SpecRepo
- 아시아나
- 강릉
- 그라나다
- 푸켓여행
- cocoapod
- 시밀란
- swiftUI
- 스페인광장
- 러브스플리트
- Gradle
- 지팍스페인
- 라이브러리
Archives
- Today
- Total
JEP's Diary
MultiCall, MultiCall2 본문
소스코드
contract Multicall {
struct Call {
address target;
bytes callData;
}
function aggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes[] memory returnData) {
blockNumber = block.number;
returnData = new bytes[](calls.length);
for(uint256 i = 0; i < calls.length; i++) {
(bool success, bytes memory ret) = calls[i].target.call(calls[i].callData);
require(success);
returnData[i] = ret;
}
}
...
}
contract Multicall2 {
struct Call {
address target;
bytes callData;
}
struct Result {
bool success;
bytes returnData;
}
...
function tryAggregate(bool requireSuccess, Call[] memory calls) public returns (Result[] memory returnData) {
returnData = new Result[](calls.length);
for(uint256 i = 0; i < calls.length; i++) {
(bool success, bytes memory ret) = calls[i].target.call(calls[i].callData);
if (requireSuccess) {
require(success, "Multicall2 aggregate: call failed");
}
returnData[i] = Result(success, ret);
}
}
참고
https://github.com/makerdao/multicall/blob/master/src/Multicall2.sol
https://github.com/makerdao/multicall/blob/master/src/Multicall.sol
'Development > 개념, 이론' 카테고리의 다른 글
AES 암호화 (0) | 2023.05.25 |
---|---|
니모닉 코드와 마스터 시드 관계 (0) | 2023.05.10 |
Polygon (암호화폐) (0) | 2022.11.10 |
블록체인 관련 개념 (0) | 2022.11.02 |
JSON-RPC vs REST (0) | 2022.02.16 |