๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

Hooks ์†Œ๊ฐœ

"Hooks"๋Š” XRP Ledger์— ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. XRPL์€ ๊ทธ๋™์•ˆ ๋น ๋ฅธ ์†๋„, ๋†’์€ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ ๋ฐ ์ €๋ ดํ•œ ์ˆ˜์ˆ˜๋ฃŒ๋กœ ๋„๋ฆฌ ์•Œ๋ ค์ ธ ์™”์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์—๋„ ๋‹ค์ค‘ ์„œ๋ช…, ์—์Šคํฌ๋กœ, ๊ฒฐ์ œ ์ฑ„๋„ ๋ฐ ํƒˆ์ค‘์•™ํ™” ๊ฑฐ๋ž˜์†Œ(DEX)์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ํŠธ๋žœ์žญ์…˜ ์œ ํ˜•์„ ์ง€์›ํ•จ์œผ๋กœ์จ, XRPL์€ ๊ธฐ์—… ๋ฐ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ์ž์™€ ๊ธฐ์—…๋“ค์˜ ๋‹ค์–‘ํ•œ ์š”๊ตฌ๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ์œ ์—ฐ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ธ์‹์ด ์ปค์ง€๋ฉด์„œ Hooks๋ผ๋Š” ํ˜์‹ ์ ์ธ ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1. Hooks์˜ ๊ธฐ๋ณธ ์ดํ•ดโ€‹

1.1. Hooks์˜ ์ •์˜ ๋ฐ ํ•ต์‹ฌ ๊ฐœ๋…โ€‹

Hooks๋Š” XRPL์— ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ์š”์†Œ๋กœ์„œ, ํŠธ๋žœ์žญ์…˜์˜ ํ–‰๋™ ๋ฐ ํ๋ฆ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Hooks๋Š” XRPL ๊ณ„์ •์— ์ •์˜๋˜๋Š” ์ž‘๊ณ  ํšจ์œจ์ ์ธ ์ฝ”๋“œ ์กฐ๊ฐ์œผ๋กœ, XRPL ํŠธ๋žœ์žญ์…˜ ์ „ํ›„์— ์‹คํ–‰๋  ๋กœ์ง์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋งŽ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์˜คํ”„์ฒด์ธ์—์„œ ์šด์˜๋˜๊ณ  ์žˆ์ง€๋งŒ, Hooks์˜ ๋„์ž…์œผ๋กœ XRPL ์ƒ์—์„œ ๋” ํšจ์œจ์ ์ด๋ฉฐ ๋†’์€ ์‹ ๋ขฐ์„ฑ์„ ๊ฐ€์ง„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ„๋‹จํ•œ Hooks๋Š” "10 XRP ๋ฏธ๋งŒ์˜ ๊ฒฐ์ œ ๊ฑฐ๋ถ€"๋‚˜ "๋ชจ๋“  ๋‚˜๊ฐ€๋Š” ๊ฒฐ์ œ์— ๋Œ€ํ•ด ๋‚ด ์ €์ถ• ๊ณ„์ขŒ์— 10% ๋ณด๋‚ด๊ธฐ"์™€ ๊ฐ™์€ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”์šฑ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š”, Hooks๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์€ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ์ด๋ฅผ ํšจ์œจ์ ์ธ ๋กœ์ง ์‹คํ–‰์— ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์ฒด์ธ์˜ ์—ฌ๋Ÿฌ dApp๋“ค ๊ฐ™์ด ๋ณต์žกํ•œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ์ ์€, Hooks๋Š” ํŠœ๋ง ์™„์ „์„ฑ(Turing-Completeness)์„ ๋ชฉ์ ์œผ๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠœ๋ง ์™„์ „์„ฑ์€ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์˜ ์ค‘์š”ํ•œ ํŠน์„ฑ์œผ๋กœ ์—ฌ๊ฒจ์ง€๋Š” ๋ฐ˜๋ฉด, ์‹ค์ œ๋กœ๋Š” ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์— ์ ์ ˆํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์ง€ ๋ฌธ์ œ(Halting Problem)๋Š” ์ž„์˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด ํŠœ๋ง ์™„์ „ํ•œ ์‹œ์Šคํ…œ์—์„œ ์˜์›ํžˆ ์‹คํ–‰๋ ์ง€ ์•„๋‹ˆ๋ฉด ์ค‘์ง€๋ ์ง€๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ์ˆ˜ํ•™์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์˜ ์‹คํ–‰ ์™„๋ฃŒ ์‹œ์ ์„ ๋ฏธ๋ฆฌ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ Hooks๋Š” ๊ณต๊ฐœ ํ…Œ์ŠคํŠธ๋„ท์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ํ…Œ์ŠคํŠธํ•˜๊ณ , ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ, ์‹œํ—˜ํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ, ๋ฏธ๋ž˜์— Hooks๋ฅผ XRPL ๋ผ์ด๋ธŒ๋„ท์— ์•ˆ์ •์ ์œผ๋กœ ๋„์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

1.2. Hooks์˜ ์ฃผ์š” ๊ธฐ๋Šฅโ€‹

  1. ํŠธ๋žœ์žญ์…˜ ์ œ์–ด:

    Hooks๋Š” XRPL ํŠธ๋žœ์žญ์…˜์˜ ๋™์ž‘์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์„ ๊ฑฐ๋ถ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ์กฐ๊ฑด๋ถ€ ๋กœ์ง ์‹คํ–‰:

    Hooks๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋กœ์ง์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋“ค์–ด์˜ค๋Š” ๊ฒฐ์ œ์˜ ๊ธˆ์•ก์ด ํŠน์ • ๊ฐ’ ์ดํ•˜์ผ ๊ฒฝ์šฐ ๊ฑฐ๋ถ€ํ•˜๋Š” ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ:

    Hooks๋Š” XRPL ์ƒ์—์„œ ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด, ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ๋ชฉ๋ก์— ์žˆ๋Š” ๊ณ„์ •์—์„œ์˜ ์ž…๊ธˆ์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๋“ฑ์˜ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ์‚ฌ์šฉ์ž ์ •์˜ ๋กœ์ง ์ ์šฉ:

    Hooks๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฐœ๋ฐœ์ž๋Š” XRPL ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋กœ์ง์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด, ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋ชจ๋“  ๋‚˜๊ฐ€๋Š” ๊ฒฐ์ œ์— ๋Œ€ํ•ด ์ผ์ • ๋น„์œจ์„ ์ €์ถ• ๊ณ„์ขŒ๋กœ ์ž๋™ ์ „์†กํ•˜๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ํŠœ๋ง ์™„์ „์„ฑ์„ ๋ฐฐ์ œํ•œ ์„ค๊ณ„:

    Hooks๋Š” ์˜๋„์ ์œผ๋กœ ํŠœ๋ง ์™„์ „ํ•˜์ง€ ์•Š๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๊ณ„์‚ฐ ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  6. ํŠธ๋žœ์žญ์…˜ ์ˆ˜์ˆ˜๋ฃŒ ๊ด€๋ฆฌ:

    Hooks๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์กฐ์ ˆํ•˜๊ฑฐ๋‚˜, ํŠน์ • ์กฐ๊ฑด์—์„œ์˜ ์ถ”๊ฐ€ ์ˆ˜์ˆ˜๋ฃŒ ๋ถ€๊ณผ ๋“ฑ์˜ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.3. Hooks ์šฉ์–ด ์„ค๋ช…โ€‹

์šฉ์–ด์„ค๋ช…
Hook๋งฅ๋ฝ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: 1. SetHook ํŠธ๋žœ์žญ์…˜ ์œ ํ˜•์œผ๋กœ XRPL์— ์—…๋กœ๋“œ ๊ฐ€๋Šฅํ•œ ์›น์–ด์…ˆ๋ธ”๋ฆฌ ์ด์ง„ ํŒŒ์ผ(WebAssembly Binary File). 2. XRPL ๊ณ„์ •์— ์ด๋ฏธ ์—…๋กœ๋“œ ๋ฐ ์„ค์ • ๋˜๋Š” ๊ตฌ์„ฑ๋œ ์›น์–ด์…ˆ๋ธ”๋ฆฌ ์ด์ง„ ํŒŒ์ผ. 3. ๊ทธ๋Ÿฌํ•œ ์ด์ง„ ํŒŒ์ผ์˜ ์†Œ์Šค ์ฝ”๋“œ.
Originating Transaction (๋ฐœ์ƒ ํŠธ๋žœ์žญ์…˜)Hook์ด ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“  ํŠธ๋žœ์žญ์…˜. Hook์ด ์„ค์ •๋œ ๊ณ„์ •์œผ๋กœ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๊ทธ ๊ณ„์ •์—์„œ ๋ณด๋‚ธ ํŠธ๋žœ์žญ์…˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Originating Account (๋ฐœ์ƒ ๊ณ„์ •)Originating ํŠธ๋žœ์žญ์…˜์„ ๋ณด๋‚ธ ๊ณ„์ •์ž…๋‹ˆ๋‹ค.
Hook Account (Hook ๊ณ„์ •)ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Hook์ด ์žˆ๋Š” ๊ณ„์ •์ž…๋‹ˆ๋‹ค. ์ด ๊ณ„์ •์€ Hook์„ ์†Œ์œ ํ•˜๋ฉฐ, Hook์„ ์ƒ์„ฑํ•œ SetHook ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•œ ๊ณ„์ •์ด๋ฉฐ, ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Hook์˜ Hook ์ƒํƒœ๊ฐ€ ์†ํ•œ ๊ณ„์ •์ž…๋‹ˆ๋‹ค.
Installer (์„ค์น˜ ๊ณ„์ •)ํ˜„์žฌ SetHook ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ Hook๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณ„์ •์ž…๋‹ˆ๋‹ค.
Emitted Transaction (๋ฐœํ–‰๋œ ํŠธ๋žœ์žญ์…˜)Hook์˜ ์‹คํ–‰ ์ค‘์— Hook์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜์œผ๋กœ, Originating ํŠธ๋žœ์žญ์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฃผ๋กœ Originating ๊ณ„์ •์— ์ž๊ธˆ์„ ๋Œ๋ ค ๋ณด๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ: Emitted Transactions.
State (์ƒํƒœ)๊ณ„์ •๋ณ„๋กœ 32 ๋ฐ”์ดํŠธ ํ‚ค์— ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘ํ•˜๋Š” key-value ๋งต์ž…๋‹ˆ๋‹ค. ๊ณ„์ •์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Hook์€ ๋™์ผํ•œ Hook ์ƒํƒœ์— ์•ก์„ธ์Šคํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hook ์ƒํƒœ๋Š” ๋ฐœ์ƒ ๊ณ„์ •์ด ์•„๋‹Œ Hook ๊ณ„์ •์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ: State Management.
SetHook (Hook ์„ค์ •)Hook ์ˆ˜์ •์œผ๋กœ ๋„์ž…๋œ ์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜ ์œ ํ˜•์œผ๋กœ, XRPL ๊ณ„์ •์— Hook๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ: SetHook Transaction.
GuardsHook์— ๋ฃจํ”„๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ํŠน๋ณ„ํ•œ ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ฐธ์กฐ: Loops and Guards.
Grants (๊ถŒํ•œ ๋ถ€์—ฌ)Hook ์„ค์น˜์ž๊ฐ€ ๋‹ค๋ฅธ ๊ณ„์ • ๋˜๋Š” ํŠน์ • Hook์—๊ฒŒ (์–ด๋””์— ์„ค์น˜๋˜์—ˆ๋Š”์ง€์™€ ๊ด€๊ณ„์—†์ด) ์„ค์น˜์ž์˜ ๊ณ„์ •์—์„œ Hook ์ƒํƒœ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Namespaceํ•˜๋‚˜์˜ state ํ‚ค ์ง‘ํ•ฉ์„ ๋‹ค๋ฅธ state ํ‚ค ์ง‘ํ•ฉ๊ณผ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ณ ์œ ํ•œ 32 ๋ฐ”์ดํŠธ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„ ๊ณต๊ฐ„์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ Hook์—์„œ ๋™์ผํ•œ state ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ๊ฐ„์„ญํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Parameters (๋งค๊ฐœ๋ณ€์ˆ˜)Hook์ด ์„ค์น˜๋˜๋Š” ์‹œ์ ์— ์„ ํƒ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
Reference Counting (์ฐธ์กฐ ์นด์šดํŒ…)ledger์— ์†Œ์œ ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋Š” ์ฐธ์กฐ ์นด์šดํŒ…๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฐธ์กฐ (์‚ฌ์šฉ) ํ•œ ๋งˆ์ง€๋ง‰ ๊ณ„์ •์ด ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.
XFL or Floating Point (๋ถ€๋™ ์†Œ์ˆ˜์ )ํ™˜์œจ ๊ณ„์‚ฐ๊ณผ ๊ฐ™์€ Hook์—์„œ ๊ณ ์ •๋ฐ€ ์ˆ˜ํ•™์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฐธ์กฐ: XFL.
Serialized Objects (STO) (์ง๋ ฌํ™”๋œ ๊ฐ์ฒด)xrpld๊ฐ€ ledger ๊ฐ์ฒด๋ฅผ ์ „์†กํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฐธ์กฐ: Serialized Objects.
Slots and KeyletsSlot์€ ledger ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Keylet์€ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ: Slots and Keylets.
TraceHook์—์„œ xrpld ์ถœ๋ ฅ์— ๋กœ๊ทธ ์ค„์„ ์ธ์‡„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฐธ์กฐ: Debugging Hooks.

2. Hooks ์˜ˆ์‹œ ์‹œ๋‚˜๋ฆฌ์˜คโ€‹

  1. ์ถ”๊ฐ€ ๋กœ์ง์„ ์‹คํ–‰ํ•˜๋Š” ์ˆ˜์‹  Hook example-1

  2. ๋“ค์–ด์˜ค๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ฐจ๋‹จํ•˜๋Š” ์ˆ˜์‹  Hook example-2

  3. ๋‚˜๊ฐ€๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ฐจ๋‹จํ•˜๋Š” ๋ฐœ์‹  Hook example-3

  4. ๊ธฐ๊ด€ ๊ณ„์ •์„ ์ œ์–ดํ•˜๋Š” Hook example-4

3. Hooks์˜ ์ž‘๋™ ๋ฉ”์ปค๋‹ˆ์ฆ˜โ€‹

3.1. Hook์˜ Life Cycle (์ƒ์•  ์ฃผ๊ธฐ)โ€‹

Hook์˜ ์ƒ์•  ์ฃผ๊ธฐ๋Š” ํฌ๊ฒŒ ๋‹ค์Œ์˜ 3๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

  1. Creation (์ƒ์„ฑ)

    Hook์€ SetHook ํŠธ๋žœ์žญ์…˜ ์œ ํ˜•์„ ํ†ตํ•ด XRPL์— ์—…๋กœ๋“œ๋˜๋Š” WebAssembly ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” Hook์˜ ๋กœ์ง์ด XRPL ๊ณ„์ •์— ์ •์˜๋˜๋ฉฐ, ๊ทธ ๊ณ„์ •์— ์—ฐ๊ฒฐ๋œ ํŠน์ • ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ๋ฐ˜์‘์ด๋‚˜ ํ–‰๋™์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Hook์„ ์ƒ์„ฑํ•  ๋•Œ์—๋Š” ํ•ด๋‹น Hook์˜ ๊ธฐ๋Šฅ, ๋™์ž‘ ์กฐ๊ฑด, ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ €์žฅ๋  ๋ฐ์ดํ„ฐ ๊ฐ์ฒด์˜ ์ดˆ๊ธฐ ์ƒํƒœ ๋“ฑ์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.

  2. Execution (์‹คํ–‰)

    Hook์˜ ์‹คํ–‰์€ Originating Transaction (๋ฐœ์ƒ ํŠธ๋žœ์žญ์…˜)์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด Hook์ด ์„ค์ •๋œ XRPL ๊ณ„์ •์œผ๋กœ ์ „์†ก๋˜๊ฑฐ๋‚˜ ํ•ด๋‹น ๊ณ„์ •์—์„œ ๋ฐœ์†ก๋  ๋•Œ, ํ•ด๋‹น Hook์˜ ๋กœ์ง์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, Hook์€ ํŠธ๋žœ์žญ์…˜์˜ ํ–‰๋™ ๋ฐ ํ๋ฆ„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ„๋‹จํ•œ ์กฐ๊ฑด๋ถ€ ๋กœ์ง๋ถ€ํ„ฐ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. Termination (์ข…๋ฃŒ)

    Hook์˜ ์ข…๋ฃŒ๋Š” Hook์˜ ๋กœ์ง์ด ๋ชจ๋‘ ์‹คํ–‰๋œ ํ›„, ๋˜๋Š” ํŠน์ • ์กฐ๊ฑด ํ•˜์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ๊ณ„์ •์—์„œ Hook์ด ์ œ๊ฑฐ๋˜๊ฑฐ๋‚˜, Hook์˜ ์‹คํ–‰ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ Hook์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, XRPL์˜ ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ์— ์˜ํ•ด Hook์˜ ์‹คํ–‰์ด ์ค‘๋‹จ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Hook์ด ์ข…๋ฃŒ๋˜๋ฉด, ํ•ด๋‹น Hook๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋‚˜ ์ƒํƒœ ๋ณ€๊ฒฝ์ด XRPL์— ๊ธฐ๋ก๋˜๋ฉฐ, ํ•ด๋‹น Hook์€ ๋” ์ด์ƒ ํŠธ๋žœ์žญ์…˜์— ๋ฐ˜์‘ํ•˜๊ฑฐ๋‚˜ ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3.2. Hook Fees (Hook ์ˆ˜์ˆ˜๋ฃŒ)โ€‹

XRPL ์ƒ์—์„œ์˜ Hook ์‹คํ–‰์€ ledger์˜ ์ŠคํŒธ ๋ฐฉ์ง€ ๋ฐ ๊ณผ๋„ํ•œ validator ์ž์› ์‚ฌ์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๋Œ€ Hook ์‹คํ–‰ ์‹œ๊ฐ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜์ˆ˜๋ฃŒ๊ฐ€ ๋ถ€๊ณผ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฐฉํ•˜๋Š” ๊ฒƒ์€ ledger์˜ ์•ˆ์ •์„ฑ๊ณผ ์‚ฌ์šฉ์„ฑ์— ์žˆ์–ด ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉฐ, ์ด๋Š” ledger ์ƒ์— ๊ธฐ๋ณธ ํ† ํฐ (XRP)์„ ๊ฐ–๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

Hook ๋‚ด์˜ guard๋ฅผ ๋ถ„์„ํ•จ์œผ๋กœ์จ Hook์˜ ๊ฐ€๋Šฅํ•œ ์ตœ์žฅ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์‚ฌ์ „์— ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hook์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ˆ˜์ˆ˜๋ฃŒ๋Š” ํ•ญ์ƒ ํ˜ธ์ถœ์ž(์ฆ‰, Hook์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜)์— ์˜ํ•ด ์ง€๋ถˆ๋˜๋ฉฐ ํ•ญ์ƒ Hook์˜ ์ตœ๋Œ€ ๊ณ„์‚ฐ ์‹คํ–‰ ์‹œ๊ฐ„์— ๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ, validator๋“ค์€ ์ „์—ญ ์ตœ๋Œ€ Hook ์‹คํ–‰ ์‹œ๊ฐ„์— ๋Œ€ํ•ด ํˆฌํ‘œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ๊ณ„์‚ฐ๋œ ์ตœ๋Œ€ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ด ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋Š” Hook์€ SetHook ์ž‘์—… ์ค‘์— ๊ฑฐ๋ถ€๋˜๋ฏ€๋กœ ๊ณ„์ •์—์„œ Hook์ด ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ, ์—ฌ๊ธฐ์„œ ์–ธ๊ธ‰ํ•˜๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์€ ์ฒœ๋ถ„์˜ ์ผ์ดˆ์—์„œ ๋ฐฑ๋งŒ๋ถ„์˜ ์ผ์ดˆ์˜ ๋ฒ”์œ„๋กœ ์ธก์ •๋ฉ๋‹ˆ๋‹ค.

3.3. Determinism (๊ฒฐ์ •๋ก ์„ฑ)โ€‹

Hooks๋Š” ์˜ค์ง ledger ์ƒ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ๊ณ  ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ชจ๋“  validator์—์„œ ๋™์ผํ•œ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ๋™์‹œ์— ์‹คํ–‰๋œ Hook์˜ ์ถœ๋ ฅ์€ ํ•ญ์ƒ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•ฉ์˜๋ฅผ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ๋ฐ ๋Ÿฐํƒ€์ž„ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋”๋ผ๋„ ๊ฒฐ์ •๋ก ์„ฑ ์—†์ด๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์ด ๋ฌด์šฉ์ง€๋ฌผ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, validator๋“ค์ด ๊ณ„์ •์—์„œ Hook์„ ์‹คํ–‰ํ•  ๋•Œ ๋™์ผํ•œ Hook ์ฝ”๋“œ, ๋™์ผํ•œ ๊ณ„์ •, ๋™์ผํ•œ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜๊ณ  ๋™์‹œ์— ์ด๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด validator๋“ค์€ ๊ฒฐ๊ณผ์— ๋™์˜ํ•˜์ง€ ์•Š๊ฒŒ ๋˜๋ฉฐ, ๋„คํŠธ์›Œํฌ๊ฐ€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด Hook์€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌด์ž‘์œ„์ ์ธ ์š”์†Œ๋ฅผ ํฌํ•จํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Hook์ด (์‹ค์ œ) ๋‚œ์ˆ˜ ์ƒ์„ฑ๊ธฐ๋‚˜ ํ˜„์žฌ ์‹œ๊ฐ„๊ณผ ๊ฐ™์€ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์•ก์„ธ์Šคํ•˜๊ฒŒ ๋˜๋ฉด, ๊ฒ€์ฆ๊ธฐ ๊ฐ„์— ์ผ๊ด€๋œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฐ ๊ฒ€์ฆ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๋‚œ์ˆ˜ ๋˜๋Š” ํƒ€์ž„์Šคํƒฌํ”„ ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ xrpld(์ฆ‰, XRP Ledger์˜ ๋…ธ๋“œ ์†Œํ”„ํŠธ์›จ์–ด)๋Š” Hook์ด ์ด๋Ÿฌํ•œ ๋น„๊ฒฐ์ •๋ก ์  ์ •๋ณด์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์—†๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•ฉ์˜๋ฅผ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์˜ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์กฐ์น˜์ž…๋‹ˆ๋‹ค.

๋•Œ๋กœ๋Š” Hook์ด ๋ฐœ์ƒ์‹œํ‚จ ํŠธ๋žœ์žญ์…˜ ๋˜๋Š” ๋‹ค๋ฅธ Hook์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ์ •๋ก ์  ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ๋œ ๊ณ ์œ ํ•œ ๊ฐ’์„, ์ฆ‰ 'nonce'๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด nonce๋Š” ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด ์•„๋‹ˆ๋ผ, ํŠน์ • ๊ทœ์น™์— ๋”ฐ๋ผ ํ•ญ์ƒ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฐ์ •๋ก ์  ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. Hook API๋Š” ์ด๋Ÿฌํ•œ nonce ๊ฐ’์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜, ์ฆ‰ nonce() ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ์™„๋ฃŒ๋œ ledger์˜ ์ƒํƒœ์™€ Hook์ด ์—ฐ๊ฒฐ๋œ ๊ณ„์ • ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ nonce ๊ฐ’์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ nonce ๊ฐ’์€ Hook์˜ ํŠธ๋žœ์žญ์…˜ ๋˜๋Š” ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. nonce() ํ•จ์ˆ˜๋Š” ์—ฐ์†์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ํ˜ธ์ถœ๋งˆ๋‹ค ์œ ์‚ฌ ๋‚œ์ˆ˜ ์ƒ์„ฑ๊ธฐ(PRNG)๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์–ด ๋‹ค์Œ ๋ฒˆ nonce ๊ฐ’์ด ์ค€๋น„๋ฉ๋‹ˆ๋‹ค.

4. Hooks์˜ ๊ธฐ์ˆ  ์Šคํƒโ€‹

Hooks๋Š” ์„ธ ๊ฐ€์ง€์˜ ๊ธฐ์ˆ  ์Šคํƒ ์œ„์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

4.1. Rippled (xrpld)โ€‹

Rippled(xrpld)๋Š” XRP Ledger์˜ ํ•ต์‹ฌ ๋…ธ๋“œ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. Rippled๋Š” XRP Ledger์˜ ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•˜๊ณ , ledger์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ledger์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Rippled๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Hooks ์ˆ˜์ •์•ˆ์€ rippled ์†Œ์Šค ์ฝ”๋“œ์˜ ์ˆ˜์ •์œผ๋กœ C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

4.2. Hook ๋Ÿฐํƒ€์ž„ (SSVM)โ€‹

Hooks๋Š” ๋Ÿฐํƒ€์ž„ ์—”์ง„์œผ๋กœ WASM(์›น์–ด์…ˆ๋ธ”๋ฆฌ) ๋Ÿฐํƒ€์ž„ ์—”์ง„์ธ SSVM(Second State Virtual Machine)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. SSVM์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ํŠน์ง•๊ณผ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋…๋ฆฝ์„ฑ: SSVM์„ ํ†ตํ•ด WASM์œผ๋กœ ์ปดํŒŒ์ผ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ, ๊ฐœ๋ฐœ์ž๋“ค์€ ์ž์‹ ์ด ์„ ํ˜ธํ•˜๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๊ฒฉ๋ฆฌ ๋ฐ ๋ณด์•ˆ: SSVM์€ ๊ฐ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ž˜๋ชป๋œ ๋™์ž‘์ด๋‚˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ์ „์ฒด ๋„คํŠธ์›Œํฌ์— ํ•ด๋ฅผ ๋ผ์น˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณ„์‚ฐ ๋น„์šฉ์˜ ์ •๋Ÿ‰ํ™”: ๋ธ”๋ก์ฒด์ธ ์ƒ์—์„œ์˜ ์ž‘์—…์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋ชจํ•˜๋ฉฐ, SSVM์€ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ์ •๋Ÿ‰ํ™”ํ•˜๊ณ  ํ•ด๋‹น ๋น„์šฉ์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฒฐ์ •์  ์‹คํ–‰: SSVM ๋•๋ถ„์— ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์˜ ์‹คํ–‰์€ ํ•ญ์ƒ ์ผ์ •ํ•˜๋ฉฐ, ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ํ˜ธํ™˜์„ฑ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ด€๋ฆฌ: ๋ธ”๋ก์ฒด์ธ ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•จ์— ๋”ฐ๋ผ, ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์˜ ํ˜ธํ™˜์„ฑ์€ ์ค‘์š”ํ•œ ์ด์Šˆ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. SSVM์€ ์ด๋Ÿฌํ•œ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉฐ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • ํ‘œ์ค€ํ™”: SSVM์€ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์‹คํ–‰์— ๊ด€ํ•œ ํ†ตํ•ฉ๋œ ํ‘œ์ค€๊ณผ ๊ทœ์•ฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด ํ‘œ์ค€์— ๋”ฐ๋ผ ์•ˆ์ •์ ์œผ๋กœ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.3. Rippled์™€ Hook ๋Ÿฐํƒ€์ž„์˜ ์†Œํ†ต ๊ณผ์ •โ€‹

Hook์˜ ๋Ÿฐํƒ€์ž„๊ณผ rippled ๋…ธ๋“œ๊ฐ€ ์†Œํ†ตํ•˜๋Š” ๊ณผ์ •์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํŠธ๋žœ์žญ์…˜ ์ˆ˜์‹ : rippled ๋…ธ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

  2. Wasm ์‹คํ–‰: ์ˆ˜์‹ ๋œ ํŠธ๋žœ์žญ์…˜์ด Hook ๋Ÿฐํƒ€์ž„์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•˜๋ฉด, rippled๋Š” ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์„ Hook ๋Ÿฐํƒ€์ž„์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ Hook ๋Ÿฐํƒ€์ž„์€ Wasm ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  3. ํ˜ธ์ŠคํŠธ ํ•จ์ˆ˜: Hook ๋Ÿฐํƒ€์ž„์€ ํŠน์ • ํ•ต์‹ฌ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ•„์š”๋กœ ํ•  ๋•Œ "ํ˜ธ์ŠคํŠธ ํ•จ์ˆ˜"๋ฅผ ํ†ตํ•ด rippled์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ๊ณ„์ •์˜ XRP ์ž”์•ก์„ ์กฐํšŒํ•˜๋ ค๊ณ  ํ•  ๋•Œ, Hook ๋Ÿฐํƒ€์ž„์€ rippled์˜ ํ˜ธ์ŠคํŠธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ด ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  4. ์‘๋‹ต ๋ฐ˜ํ™˜: ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์‹คํ–‰์ด ์™„๋ฃŒ๋˜๋ฉด, Hook ๋Ÿฐํƒ€์ž„์€ ๊ฒฐ๊ณผ๋ฅผ rippled์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. rippled๋Š” ์ด ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ Ledger ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉฐ, ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ๋‚˜ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

4.4. Hook ์–ธ์–ดโ€‹

Hook์€ WASM ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ ๋  ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ์–ธ์–ด๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋Š” ์–ธ์–ด๋Š” C์™€ Hookscript(AssemblyScript์˜ ๋ณ€ํ˜•)์ž…๋‹ˆ๋‹ค. Hook์€ WASM ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋˜์–ด XRPL์— ์—…๋กœ๋“œ๋˜๋ฉฐ, ์ดํ›„์—๋Š” Hook์˜ ๋กœ์ง์ด Hook ๋Ÿฐํƒ€์ž„(SSVM)์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

5. Hooks์˜ ๋ณด์•ˆ ์•„ํ‚คํ…์ณโ€‹

Hooks๋Š” XRP Ledger์˜ Layer 1์—์„œ ํŠธ๋žœ์žญ์…˜์˜ ๋…ผ๋ฆฌ์  ํ๋ฆ„๊ณผ ์‹คํ–‰์„ ์ œ์–ดํ•˜๋Š” ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ, ๊ทธ๋“ค์˜ ๋ณด์•ˆ ์•„ํ‚คํ…์ฒ˜๋Š” ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ํ•ด๋‹น ์•„ํ‚คํ…์ณ์˜ ์ฃผ์š” ์š”์†Œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

5.1. ์›น ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ์•ˆ์ „์„ฑโ€‹

์›น ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ํŠน์ •ํ•œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด, ์ด๋ฅผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ํ‘œ์ค€์— ๋”ฐ๋ผ ํ–‰๋™ํ•˜๋Š” ๊ฐ€์ƒ ๊ธฐ๊ณ„๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ์›น ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์›์‹œ ํ•˜๋“œ์›จ์–ด ๋ช…๋ น์–ด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค, ๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ ๋ฒกํ„ฐ๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

5.2. xrpld์˜ ์—ญํ• โ€‹

xrpld๋Š” ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์˜ ์—ญํ• ์„ ํ•˜๋ฉด์„œ ์šด์˜ ์ฒด์ œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฐ”์ด๋„ˆ๋ฆฌ(hook)๋Š” xrpld ๋‚ด์—์„œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด hook์€ xrpld์— ์˜ํ•ด ์ƒŒ๋“œ๋ฐ•์Šคํ™”๋˜๋ฉฐ, ์˜ค์ง xrpld๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๋…ธ์ถœํ•œ ํ•จ์ˆ˜์—๋งŒ ํ˜ธ์ถœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.3. ์ œํ•œ๋œ Hook ์ž‘์—…โ€‹

Hook๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์™ธ๋ถ€ ๋˜๋Š” ๋‚ด๋ถ€ ํ”„๋กœ์„ธ์Šค, ์„œ๋น„์Šค, ์—”๋“œํฌ์ธํŠธ๋กœ์˜ ํ˜ธ์ถœ์€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค์ง Hook API๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค์ง ์ž์ฒด ์ •์˜๋œ ๋ฐ ์‚ฌ์ „ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์กฐ์ž‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฒ€์ฆ์ž ํˆฌํ‘œ์— ์˜ํ•ด 64kib๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ œํ•œ ์‚ฌํ•ญ์€ Ledger์˜ ์•ˆ์ •์„ฑ๊ณผ ๋ณด์•ˆ์„ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ์ด๋Ÿฌํ•œ ์ œํ•œ๋“ค์€ ๊ฐ Hook์ด Ledger์˜ ์ „๋ฐ˜์ ์ธ ์šด์˜์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

5.4. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐ ๋ณด์•ˆโ€‹

Hook์ด ์š”์ฒญ์„ ํ•  ๋•Œ, xrpld๊ฐ€ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ์ž์ฒด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋‚ด์˜ ํฌ์ธํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ํฌ์ธํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋ฉด Hook ์ž์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ  ์ฃผ๋ณ€ ์‹œ์Šคํ…œ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹œ์Šคํ…œ์˜ ๋” ๋„“์€ ๋ถ€๋ถ„์— ์†์ƒ์„ ์ฃผ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์ค‘์š”ํ•œ ๋ณด์•ˆ ์กฐ์น˜์ž…๋‹ˆ๋‹ค.