UUPS vs Transparent

Upgradeable Contract

업그레이드 가능한 스마트 컨트랙트는 보통 proxy pattern을 사용해서 배포된다.

한 번 배포된 스마트 컨트랙트의 코드를 변경할 수 없기 때문에, 저장을 담당하는 Storage Contract와 실제 비즈니스 로직을 포함하는 Logic Contract로 분할하여 작동한다.

자세한 내용은 이전에 작성한 글을 참고하면 좋을 것 같다.

아무튼 요약 정리하면 다음과 같다.

  • Upgradeable contract는 코드를 추론하기 어렵게 만들고, 버그의 위험이 증가되므로 충분한 테스트와 Audit process가 이루어져야 한다.

  • Contract를 업그레이드 할 수 있으므로 업그레이드를 수행할 권한이 있는 관리자 계정이 있어야한다. (역으로 말하자면 관리자 계정으로 중앙 집중화가 된다).

  • 자료구조의 레이아웃이 변경되어서는 안된다.

UUPS (Universal Upgradeable Proxy Standard)

EIP-1822에 해당하는 이 표준은 간단하고 효율적으로 업그레이드를 할 수 있도록 해준다.

이 패턴에선 구현 관리 및 fallback 기능을 포함한 모든 작업이 한 컨트랙트에 포함되어 있다.

UUPS 패턴에서는 업그레이드 기능을 호출할 수 있는 사람을 제한하기 위해 modifier를 사용하여 업그레이드 기능을 보호할 수 있다.

또한 UUPS 패턴은 단순성 때문에 더 가스 효율적이다.

Transparent (Openzeppelin)

Transparent 에서는 Proxy Contract와 Implementation Contract로 나뉜다.

당연히 배포비용이 많이 들지만, 유지 관리가 쉽다.

오픈제플린에서는 UUPS를 권장한다. 말 듣는게 좋을 것 같다.

Last updated