일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- multicall
- ethers websocket
- Vue.js
- 머신러닝기초
- SBT표준
- 스마트컨트렉트프록시
- ethers v6
- 스마트컨트렉트 예약어 함수이름 중복
- Vue
- git rebase
- vue기초
- 컨트렉트 동일한 함수이름 호출
- nest.js설명
- 체인의정석
- 러스트 기초 학습
- chainlink 설명
- 스마트컨트렉트 함수이름 중복 호출
- nestjs 튜토리얼
- 컨트렉트 배포 자동화
- 러스트 기초
- rust 기초
- 스마트컨트렉트테스트
- ethers typescript
- 프록시배포구조
- ethers type
- ambiguous function description
- 깃허브명령어
- 스마트 컨트렉트 함수이름 중복
- 러스트기초
- ethers
- Today
- Total
체인의정석
스마트 컨트렉트 프록시 구조 - 세번째 패턴) Upgradeability using Inherited Storage 본문
스마트 컨트렉트 프록시 구조 - 세번째 패턴) Upgradeability using Inherited Storage
체인의정석 2022. 3. 18. 16:33이전 글 목록
프록시 구조 공통 패턴 : https://it-timehacker.tistory.com/256?category=906404
프록시 구조 첫번째 패턴 : https://it-timehacker.tistory.com/257?category=906404
프록시 구조 세번째 패턴: https://it-timehacker.tistory.com/258?category=906404
글쓴이의 유튜브 보러가기
https://www.youtube.com/channel/UCHsRy47P2KlE749oAAjb0Yg
상속된 저장소 접근 방식은 논리 계약이 프록시에 필요한 저장소 구조를 통합하도록 하는 데 의존합니다. 프록시와 논리 계약은 둘 다 필요한 프록시 상태 변수를 저장하도록 보장하기 위해 동일한 스토리지 구조를 상속합니다. 이 접근 방식을 탐색하는 동안 우리는 논리 계약의 다른 버전을 추적하기 위해 레지스트리 계약을 갖는 아이디어를 시도했습니다. 새 논리 계약으로 업그레이드하려면 레지스트리에 새 버전으로 등록하고 프록시에 업그레이드를 요청해야 합니다. 레지스트리가 있다고 해서 저장 메커니즘에 영향을 미치지는 않습니다. 실제로 이 게시물에 표시된 모든 스토리지 패턴에서 구현할 수 있습니다.
=> 동일한 스토리지 구조를 상속 받는 로직 컨트렉트와 프록시 컨트렉트를 가지고 있는 구조입니다.
새로운 로직 컨트렉트로 업그레이드하려면 레지스트리에 새버전으로 등록하고 프록시에 업그레이트를 요청하는 식으로 작용됩니다. 또한 레지스트리는 저장 메커니즘에 영향을 끼치지 않는 구조입니다.
#UpgradeabilityProxy는 Proxy를 통하여서는 #delegatecall을 허용하고, #upgreadeabilityStorage 는 로직 레이어 주소를 위한 상태 변수를 가지고 있습니다. #LogicContract 는 upgreadeability Storage를 같이 상속받아 작성하며, upgradeable에서는 레지스트리를 통한 초기화를 담당합니다.
초기화 방법
1. 레지스트리 계약 배포 계약(v1)의 초기 버전을 배포합니다.
2. 업그레이드 가능한 계약을 상속하는지 확인하십시오.
3.레지스트리에 초기 버전 주소 등록 레지스트리 계약에 UpgradeabilityProxy 인스턴스 생성을 요청
4. UpgradeabilityProxy를 호출하여 계약의 초기 버전으로 업그레이드
업그레이드 방법
1. 초기 버전에서 상속된 새 버전의 계약(v2)을 배포하여 프록시의 스토리지 구조와 컨트렉트의 초기 버전에 있는 구조를 유지하도록 합니다.
2. 새 버전의 컨트렉트를 레지스트리에 등록
3. UpgradeabilityProxy 인스턴스를 호출하여 새로 등록된 버전으로 업그레이드
주요 내용
동일한 UpgradeabilityProxy 계약을 계속 호출하여 향후 배포된 논리 계약에서 업그레이드된 기능과 새로운 기능 및 새로운 상태 변수를 도입할 수 있습니다.
'블록체인 > Solidity' 카테고리의 다른 글
Solidity) internal 트랜잭션에 대한 이벤트 로그 테스트하기 (0) | 2022.04.20 |
---|---|
경쟁사 스마트컨트렉트 분석하는법, 컨트렉트에 사용된 함수 이름 파악하기 (0) | 2022.03.23 |
스마트 컨트렉트 프록시 구조 - 두번째 패턴) Upgradeability using Unstructured Storage (0) | 2022.03.18 |
스마트 컨트렉트 프록시 구조 - 첫번째 패턴) Upgradeability using Eternal Storage (0) | 2022.03.18 |
스마트 컨트렉트 프록시 구조 - 기본 구조 학습 (0) | 2022.03.18 |