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์ ์ฃผ์ ๊ธฐ๋ฅโ
ํธ๋์ญ์ ์ ์ด:
Hooks๋ XRPL ํธ๋์ญ์ ์ ๋์์ ์ ์ดํ ์ ์๊ฒ ํด์ค๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ ๊ฑฐ๋ถํ๊ฑฐ๋ ์์ ํ ์ ์์ต๋๋ค.
์กฐ๊ฑด๋ถ ๋ก์ง ์คํ:
Hooks๋ฅผ ์ฌ์ฉํ๋ฉด, ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ก์ง์ ์คํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด, ๋ค์ด์ค๋ ๊ฒฐ์ ์ ๊ธ์ก์ด ํน์ ๊ฐ ์ดํ์ผ ๊ฒฝ์ฐ ๊ฑฐ๋ถํ๋ ๋ก์ง์ ์ํํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ:
Hooks๋ XRPL ์์์ ๊ฐ๋จํ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ฅผ ํตํด, ์๋ฅผ ๋ค์ด, ํน์ ๋ชฉ๋ก์ ์๋ ๊ณ์ ์์์ ์ ๊ธ์ ๊ฑฐ๋ถํ๋ ๋ฑ์ ๋ก์ง์ ๊ตฌํํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ๋ก์ง ์ ์ฉ:
Hooks๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ๋ฐ์๋ XRPL ํธ๋์ญ์ ์ ๋ํ ์ฌ์ฉ์ ์ ์ ๋ก์ง์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด, ์๋ฅผ ๋ค๋ฉด, ๋ชจ๋ ๋๊ฐ๋ ๊ฒฐ์ ์ ๋ํด ์ผ์ ๋น์จ์ ์ ์ถ ๊ณ์ข๋ก ์๋ ์ ์กํ๋ ๋ฑ์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค.
ํ๋ง ์์ ์ฑ์ ๋ฐฐ์ ํ ์ค๊ณ:
Hooks๋ ์๋์ ์ผ๋ก ํ๋ง ์์ ํ์ง ์๊ฒ ์ค๊ณ๋์์ต๋๋ค. ์ด๋ ํธ๋์ญ์ ์ ์์ธก ๊ฐ๋ฅ์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ฉฐ, ๊ณ์ฐ ๋น์ฉ์ ์ต์ํํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
ํธ๋์ญ์ ์์๋ฃ ๊ด๋ฆฌ:
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. |
Guards | Hook์ ๋ฃจํ๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํด์ผํ๋ ํน๋ณํ ์ ์ด ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์ฐธ์กฐ: 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 Keylets | Slot์ ledger ๊ฐ์ฒด๋ฅผ ํฌํจํ ์ ์์ผ๋ฉฐ Keylet์ ํด๋น ๊ฐ์ฒด๋ฅผ ์๋ณํฉ๋๋ค. ์ฐธ์กฐ: Slots and Keylets. |
Trace | Hook์์ xrpld ์ถ๋ ฅ์ ๋ก๊ทธ ์ค์ ์ธ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฐธ์กฐ: Debugging Hooks. |
2. Hooks ์์ ์๋๋ฆฌ์คโ
์ถ๊ฐ ๋ก์ง์ ์คํํ๋ ์์ Hook
๋ค์ด์ค๋ ํธ๋์ญ์ ์ ์ฐจ๋จํ๋ ์์ Hook
๋๊ฐ๋ ํธ๋์ญ์ ์ ์ฐจ๋จํ๋ ๋ฐ์ Hook
๊ธฐ๊ด ๊ณ์ ์ ์ ์ดํ๋ Hook
3. Hooks์ ์๋ ๋ฉ์ปค๋์ฆโ
3.1. Hook์ Life Cycle (์์ ์ฃผ๊ธฐ)โ
Hook์ ์์ ์ฃผ๊ธฐ๋ ํฌ๊ฒ ๋ค์์ 3๊ฐ์ง ๋จ๊ณ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
Creation (์์ฑ)
Hook์
SetHook
ํธ๋์ญ์ ์ ํ์ ํตํด XRPL์ ์ ๋ก๋๋๋ WebAssembly ๋ฐ์ด๋๋ฆฌ๋ก ์์ฑ๋ฉ๋๋ค. ์ด ๋จ๊ณ์์๋ Hook์ ๋ก์ง์ด XRPL ๊ณ์ ์ ์ ์๋๋ฉฐ, ๊ทธ ๊ณ์ ์ ์ฐ๊ฒฐ๋ ํน์ ํธ๋์ญ์ ์ ๋ํ ๋ฐ์์ด๋ ํ๋์ ์ค์ ํฉ๋๋ค. Hook์ ์์ฑํ ๋์๋ ํด๋น Hook์ ๊ธฐ๋ฅ, ๋์ ์กฐ๊ฑด, ๊ทธ๋ฆฌ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ ์ฅ๋ ๋ฐ์ดํฐ ๊ฐ์ฒด์ ์ด๊ธฐ ์ํ ๋ฑ์ด ์ ์๋ฉ๋๋ค.Execution (์คํ)
Hook์ ์คํ์ Originating Transaction (๋ฐ์ ํธ๋์ญ์ )์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ํธ๋์ญ์ ์ด Hook์ด ์ค์ ๋ XRPL ๊ณ์ ์ผ๋ก ์ ์ก๋๊ฑฐ๋ ํด๋น ๊ณ์ ์์ ๋ฐ์ก๋ ๋, ํด๋น Hook์ ๋ก์ง์ด ์คํ๋ฉ๋๋ค. ์ด๋, Hook์ ํธ๋์ญ์ ์ ํ๋ ๋ฐ ํ๋ฆ์ ์ํฅ์ ์ค ์ ์์ผ๋ฉฐ, ๊ฐ๋จํ ์กฐ๊ฑด๋ถ ๋ก์ง๋ถํฐ ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง๊น์ง ๋ค์ํ ๋์์ ์ํํ ์ ์์ต๋๋ค.
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 ๋ ธ๋๊ฐ ์ํตํ๋ ๊ณผ์ ์ ๋ ์์ธํ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํธ๋์ญ์ ์์ : rippled ๋ ธ๋๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ค๋งํธ ์ปจํธ๋ํธ ํธ๋์ญ์ ์ ์์ ํฉ๋๋ค.
Wasm ์คํ: ์์ ๋ ํธ๋์ญ์ ์ด Hook ๋ฐํ์์์ ์คํ๋์ด์ผ ํ๋ ํน์ ๊ธฐ๋ฅ์ ์์ฒญํ๋ฉด, rippled๋ ํด๋น ํธ๋์ญ์ ์ Hook ๋ฐํ์์ ์ ๋ฌํฉ๋๋ค. ์ฌ๊ธฐ์ Hook ๋ฐํ์์ Wasm ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
ํธ์คํธ ํจ์: Hook ๋ฐํ์์ ํน์ ํต์ฌ ๊ธฐ๋ฅ์ ๋ํ ์ก์ธ์ค๋ฅผ ํ์๋ก ํ ๋ "ํธ์คํธ ํจ์"๋ฅผ ํตํด rippled์ ํต์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ค๋งํธ ์ปจํธ๋ํธ๊ฐ ๊ณ์ ์ XRP ์์ก์ ์กฐํํ๋ ค๊ณ ํ ๋, Hook ๋ฐํ์์ rippled์ ํธ์คํธ ํจ์๋ฅผ ํธ์ถํ์ฌ ์ด ์ ๋ณด๋ฅผ ์์ฒญํ๊ฒ ๋ฉ๋๋ค.
์๋ต ๋ฐํ: ์ค๋งํธ ์ปจํธ๋ํธ ์คํ์ด ์๋ฃ๋๋ฉด, 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 ์์ฒด์ ๋ฉ๋ชจ๋ฆฌ๋ง ์์์ํฌ ์ ์๊ณ ์ฃผ๋ณ ์์คํ ์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์ด๊ฒ์ ์์คํ ์ ๋ ๋์ ๋ถ๋ถ์ ์์์ ์ฃผ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ์ค์ํ ๋ณด์ ์กฐ์น์ ๋๋ค.