ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐Ÿ—„๏ธSolana Accounts Are Just Files โ€” and Programs Are Just People Who Can Read Them
Dev.toDev.to
Infrastructure

Stateless Program๊ณผ Account ๊ธฐ๋ฐ˜ ๋ถ„๋ฆฌ ์„ค๊ณ„๋กœ ๊ตฌํ˜„ํ•œ Solana ์ƒํƒœ ๋ชจ๋ธ

๐Ÿ—„๏ธSolana Accounts Are Just Files โ€” and Programs Are Just People Who Can Read Them

Vinay2026๋…„ 5์›” 19์ผ4๋ถ„intermediate

Context

์ „ํ†ต์ ์ธ Web2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ Table ๊ธฐ๋ฐ˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐฉ์‹์€ ๊ธ€๋กœ๋ฒŒ ๋ณต์ œ ํ™˜๊ฒฝ์—์„œ ํ™•์žฅ์„ฑ ํ•œ๊ณ„ ์ง๋ฉด. ๋ฐ์ดํ„ฐ์™€ ๋กœ์ง์ด ๊ฒฐํ•ฉ๋œ ๊ตฌ์กฐ๋กœ ์ธํ•ด Validator ๋ ˆ๋ฒจ์˜ ํšจ์œจ์ ์ธ ์ƒํƒœ ๊ฒ€์ฆ ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์— ์ œ์•ฝ ๋ฐœ์ƒ.

Technical Solution

  • Program๊ณผ State๋ฅผ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•˜์—ฌ Program์€ Statelessํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋Š” Account์— ์ €์žฅํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
  • ๋ชจ๋“  Account๋ฅผ Lamports, Data, Owner, Executable์˜ 4๊ฐ€์ง€ ์ •ํ˜• ํ•„๋“œ๋กœ ํ†ต์ผํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์ฒ˜๋ฆฌ ๋‹จ์ˆœํ™”
  • Owner Program๋งŒ์ด ํ•ด๋‹น Account์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•˜๋Š” Validator ๋ ˆ๋ฒจ์˜ Ownership ๊ฒ€์ฆ ๋กœ์ง ๊ตฌํ˜„
  • Program ID์™€ Seed์˜ ์กฐํ•ฉ์œผ๋กœ ๊ฒฐ์ •๋ก ์  ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” PDA(Program-Derived Addresses)๋ฅผ ํ†ตํ•œ ํ”„๋กœ๊ทธ๋žจ ์ œ์–ด ๊ณ„์ • ๊ด€๋ฆฌ
  • ๋ชจ๋“  Account์˜ ๊ณต๊ฐœ ์ฝ๊ธฐ ๊ถŒํ•œ๊ณผ ์†Œ์œ ์ž ์ „์šฉ ์“ฐ๊ธฐ ๊ถŒํ•œ ์„ค๊ณ„๋ฅผ ํ†ตํ•œ Program ๊ฐ„ Atomic Transaction ๋ฐ Composability ํ™•๋ณด
  • ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋น„๋ก€ํ•œ Rent ๋น„์šฉ ๋ถ€๊ณผ ๋ฐ ์ž„๊ณ„์น˜ ์ด์ƒ์˜ ์˜ˆ์น˜๊ธˆ ์ ๋ฆฝ์„ ํ†ตํ•œ Rent-exempt ์ƒํƒœ ์œ ์ง€๋กœ ์˜จ์ฒด์ธ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ ์ตœ์ ํ™”

1. ์ƒํƒœ ์ €์žฅ ๋กœ์ง ์„ค๊ณ„ ์‹œ ๋ฐ์ดํ„ฐ์™€ ์‹คํ–‰ ๋กœ์ง์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๋ถ„๋ฆฌํ–ˆ๋Š”์ง€ ๊ฒ€ํ† 

2. ๊ถŒํ•œ ๊ฒ€์ฆ ๋กœ์ง์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋ ˆ์ด์–ด๊ฐ€ ์•„๋‹Œ ์ธํ”„๋ผ/๋Ÿฐํƒ€์ž„ ๋ ˆ์ด์–ด์—์„œ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ๋ชจ์ƒ‰

3. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ํฌ๊ธฐ ๊ธฐ๋ฐ˜์˜ ์ž์› ํ• ๋‹น ๋ชจ๋ธ ๊ณ ๋ ค

4. ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ์šด์šฉ์„ฑ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ํฌ๋งท์˜ ํ‘œ์ค€ํ™” ๋ฐ ์ฝ๊ธฐ ์ „์šฉ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต ์—ฌ๋ถ€ ํ™•์ธ

์›๋ฌธ ์ฝ๊ธฐ