Stateless Program๊ณผ Account ๊ธฐ๋ฐ ๋ถ๋ฆฌ ์ค๊ณ๋ก ๊ตฌํํ Solana ์ํ ๋ชจ๋ธ
๐๏ธSolana Accounts Are Just Files โ and Programs Are Just People Who Can Read Them
AI ์์ฝ
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. ์ธ๋ถ ์์คํ ๊ณผ์ ์ํธ์ด์ฉ์ฑ์ ์ํด ๋ฐ์ดํฐ ํฌ๋งท์ ํ์คํ ๋ฐ ์ฝ๊ธฐ ์ ์ฉ ์ธํฐํ์ด์ค ์ ๊ณต ์ฌ๋ถ ํ์ธ