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