ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Solidity] UUPS란 무엇인가?
    BlockChain/solidity 2024. 9. 25. 21:48

    https://blog.logrocket.com/using-uups-proxy-pattern-upgrade-smart-contracts/#what-is-a-uups-proxy-pattern

    이 글은 위의 글을 번역한 글입니다.

    UUPS 프록시 패턴은 무엇인가요?

    일단 UUPS가 무엇의 약자인지 먼저 알아보자. Universal Upgradeable Proxy Standard의 준말이다. 이것은 transparent proxy pattern과 비슷하다. 그러나 upgrade가 프록시 contract가 아닌 logic contract로부터 트리거 된다.

    스마트 컨트랙트가 향하는 logic contract의 address를 저장하기 위해 유일한 storage slot이 프록시 컨트랙트 안에 존재한다. logic contract가 업그레이드가 될 때면 storage slot이 새로운 logic address로 업데이트 된다. contracts를 업그레이드 하기 위한 함수는 인증되지 않은 접근으로부터 보호되어야만 한다. 또한, 서서히 완전한 non-upgrageable로 가는 능력 또한 제공해야 한다. 이 과정은 필요하다면 logic contract가 완전히 upgradeTo() 함수에 의해 지워질 수 있는 걸 통해서 실행될 수 있다.(?)

     

    Proxy pattern 비교하기

    proxy pattern 장점 단점
    Transparent proxy pettern 실행하기에 비교적 쉽고 간단하다
    널리 쓰인다.
    배포하는데 비교적 많은 가스를 소모한다.
    Diamond proxy pattern 모듈화를 통해 24KB 크기 제한을 지키는데 도움이 된다.
    업그레이더블 능력이 점진적 증가가 가능하다.

    배포하고 유지하는데 더 복잡하다.
    이것을 사용하면 etherscan을 통해 도움되는 툴이 없다.
    새로운 사람이 용어를 이해하기에 어렵다.
    UUPS proxy pattern 효율적인 gas비용,
    업그레이드 능력을 지울 수 잇는 유연함.
    아직 새롭기 때문에 일반적으로 잘 사용되지 않는다.
    실행 contractd에 포함된 upgrade logic contract에 대해 별도의 조치가 더 필요하다.(aaccess control) 

     

    UUPS 패턴은 언제 써야 하나요?

    OpenZepplin측은 UUPS 패턴을 가스비를 효과적으로 줄이기 위해 사용하기를 권장하고 있다. 그러나 UUPS 패턴을 사용하는 것은 프로젝트에서의 비즈니스적 요구 등 몇가지 요인들에 의해 결정이 된다.

     

    UUPS 패턴은 원래 메인넷에 많은 smart contract wallet들을 메인넷에 배포하기 위해서 생겨났습니다. logic은 한 번 배포될 수 있었습니다. proxy contract는 많은 가스를 사용하지 않고도 새 지갑마다 수백번 배포될 수 있었습니다.

     

    upgrade 함수는 logic contract에 있으므로 배포자는 그 프로토콜이 나중에 완전히 upgradeablity가 지워지길 원한다면 UUPS 패턴을 선택할 수 있습니다.

     

     

Designed by Tistory.