ํธ๋์ญ์
์ด ์ฑํฐ์์๋ XRP Ledger์ ํธ๋์ญ์ ์ ๊ดํ ์ค๋ช ๊ณผ ํธ๋์ญ์ ์ ์์ฑํ๊ณ ์ ์ถํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค.
ํธ๋์ญ์ ์ด๋?โ
"ํธ๋์ญ์ "์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฑฐ๋๋ ์ด๋์ ์๋ฏธํ๋ ๊ฒ์ผ๋ก, ์ด๋ค ๊ฒ์ ํ ๊ณณ์์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ฎ๊ธฐ๋ ์์ ์ ๋ํ๋ ๋๋ค. ํธ๋์ญ์ ์ ๋ฌผ๋ฆฌ์ ๋๋ ๋์งํธ ์ํ์ ๊ตํ, ์ ๋ณด์ ์ ์ก, ๋๋ ๊ธ์ต ๊ฑฐ๋์ ๋ชจ๋ ์ ์ฉ๋ ์ ์์ต๋๋ค.
XRP Ledger์์ ํธ๋์ญ์ ์ ์์ฅ์ ์ํ๋ฅผ ๋ฐ๊พธ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๋ค. XRP Ledger์์ ํธ๋์ญ์ ์ ์ ์ถํ๋ฉด, ์ด๋ ๋๊ธฐ์ด์ ๋ค์ด๊ฐ๋ฉฐ, ๋ค์ ๋ ์ ์์ ์ฒ๋ฆฌ๋ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค. ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉด, ์ด๋ ๋ ์ด์ ๋ณ๊ฒฝ๋ ์ ์๋ ์ต์ข ํธ๋์ญ์ ์ผ๋ก ๊ฐ์ฃผ๋๋ฉฐ, ๊ด๋ จ๋ ๊ณ์ ์ํ(์: ์๊ณ )๋ ์ด ํธ๋์ญ์ ์ ๋ฐ๋ผ ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ์ผ๋ถ ์์ฅ ๊ท์น์ ๋ํ pseudo-ํธ๋์ญ์ ์ ์์ฑํ๋๋ฐ, ์ด๋ ์๋ช ๋๊ฑฐ๋ ์ ์ถ๋์ง ์์ง๋ง ์ฌ์ ํ ํฉ์๋ฅผ ํตํด ์๋ฝ๋์ด์ผ ํฉ๋๋ค.
ํธ๋์ญ์ ์ ๋์ ๋ณด๋ด๋ ๊ฒ ์ด์์ ์ญํ ์ ํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ๊ฒฐ์ ์ ํ์ ์ง์ํ๋ ๊ฒ ์ธ์๋ XRP Ledger์ ํธ๋์ญ์ ์ ์ํธํํค๋ฅผ ๋ฐ๊พธ๋ ๊ฒ, ๊ธฐํ ์ค์ ์ ๊ด๋ฆฌํ๋ ๊ฒ, ๊ทธ๋ฆฌ๊ณ XRP ์์ฅ์ ๋ถ์ฐํ ๊ฑฐ๋์์์ ๊ฑฐ๋ํ๋ ๊ฒ ๋ฑ์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
ํธ๋์ญ์ ๋น์ฉ (์์๋ฃ)โ
XRP Ledger์์ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ๋๋ฐ๋ ์ด๋ ์ ๋์ ๋น์ฉ์ด ๋ค๋ฉฐ, ์ด๋ฅผ "ํธ๋์ญ์ ๋น์ฉ" ๋๋ "์์๋ฃ" ๋ผ๊ณ ํฉ๋๋ค.
ํธ๋์ญ์ ์ ์ ์ถํ ๋, ์ ์ถ์๋ XRP๋ฅผ ์ง๋ถํฉ๋๋ค. ์ด ์์๋ฃ๋ ๋คํธ์ํฌ ์คํธ์ ๋ฐฉ์งํ๋ ์ญํ ์ ํ๋ฉฐ, ์ฌ์ฉ๋ XRP๋ ์์คํ ์์ ์๋ฉธ ("burn")๋์ด์ ๋์์ค์ง ์์ต๋๋ค. ์ด๋ ๊ฒ ์๋ฉธ๋ XRP๋ ์์ฅ์์ ์ ๊ฑฐ๋๊ธฐ ๋๋ฌธ์, ๊ทธ ์์ XRP์ ์ ์ฒด ๊ณต๊ธ๋์ ๊ฐ์์ํค๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
์ด ์์๋ฃ๋ ๋คํธ์ํฌ์ ๋ถํ ์ํ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์กฐ์ ๋ฉ๋๋ค. ๋ฐ๋ผ์, ๋คํธ์ํฌ๊ฐ ๋ฐ์ ๋๋ ๋ ๋ง์ ์์๋ฃ๋ฅผ ์ง๋ถํ๊ฒ ๋ฉ๋๋ค. ๊ทธ ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก 0.00001 XRP์์ 0.0005 XRP ์ฌ์ด์ ๋๋ค.
XRPL์ ํธ๋์ญ์ ๊ตฌ์กฐโ
XRP Ledger์ ํธ๋์ญ์ ์ JSON ํ์์ผ๋ก ํํ๋ฉ๋๋ค. ํธ๋์ญ์ ์ ๋ค์๊ณผ ๊ฐ์ ํ๋๋ฅผ ํฌํจํฉ๋๋ค:
๊ณ์ ์ฃผ์: ํธ๋์ญ์ ์ ๋ณด๋ด๋ ๊ณ์ ์ ์ฃผ์์ ๋๋ค.
ํธ๋์ญ์ ์ ํ: ํธ๋์ญ์ ์ ์ ํ์ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด,
Payment
๋ XRP ๋๋ ์ฌ์ฉ์ ์ ์ ํตํ๋ฅผ ํ ๊ณ์ ์์ ๋ค๋ฅธ ๊ณ์ ์ผ๋ก ์ ์กํ๋ ํธ๋์ญ์ ์ ๋ํ๋ ๋๋ค.ํธ๋์ญ์ ํ๋: ํธ๋์ญ์ ์ ํ์ ๋ฐ๋ผ ํ์ํ ํ๋๊ฐ ๋ค๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด,
Payment
ํธ๋์ญ์ ์๋Amount
ํ๋๊ฐ ์์ต๋๋ค. ์ด ํ๋๋ ์ก๊ธํ ๊ธ์ก์ ๋ํ๋ ๋๋ค.์๋ช : ํธ๋์ญ์ ์ ์ก์ ์์ ๋น๋ฐํค๋ก ์๋ช ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ํธ๋์ญ์ ์ ๋ฐ์ก์ธ์ด ์์ ์ ๊ณ์ ์ ์ ์ดํ๊ณ ํธ๋์ญ์ ์ ์์ฑํ์์ ์ฆ๋ช ํฉ๋๋ค.
๊ณต๊ฐ ํค: ํธ๋์ญ์ ์ ์๋ช ์ ๊ฒ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ณต๊ฐ ํค์ ๋๋ค. ์ด๋ ํธ๋์ญ์ ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ฑฐ๋ ํธ๋์ญ์ ์ ์กฐํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์์๋ฃ: ํธ๋์ญ์ ์ ์ ์ถํ ๋๋ ์ผ๋ฐ์ ์ผ๋ก ํธ๋์ญ์ ๋น์ฉ์ด ๋ถ๊ณผ๋ฉ๋๋ค. ์ด ๋น์ฉ์ ์คํธ ํธ๋์ญ์ ์ ๋ฐฉ์งํ๊ณ , ์์คํ ์ ์์์ ๊ณต์ ํ๊ฒ ๋ถ๋ฐฐํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ํธ๋์ญ์ ๋น์ฉ์ ์ก์ ์์ XRP ์๊ณ ์์ ์ฐจ๊ฐ๋๋ฉฐ, ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
ํธ๋์ญ์ ํด์: ํธ๋์ญ์ ์ ํด์ ๊ฐ์ผ๋ก ์๋ณ๋ฉ๋๋ค. ์ด๋ ํธ๋์ญ์ ์ ๋ด์ฉ์ ์์ฝํ ๊ฐ์ผ๋ก, ํธ๋์ญ์ ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ฑฐ๋ ํธ๋์ญ์ ์ ์กฐํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๋ ์์ธํ ๋ด์ฉ์ XRPL ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
ํธ๋์ญ์ ์ ์ข ๋ฅโ
XRP Ledger์์๋ ๋ค์ํ ์ข ๋ฅ์ ํธ๋์ญ์ ์ด ์์ต๋๋ค. ๋ํ์ ์ธ ํธ๋์ญ์ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Payment: XRP ๋๋ ์ฌ์ฉ์๊ฐ ์ ์ํ ํตํ๋ฅผ ํ ๊ณ์ ์์ ๋ค๋ฅธ ๊ณ์ ์ผ๋ก ์ ์กํ๋ ํธ๋์ญ์ ์ ๋๋ค. ์ด๋ XRP Ledger์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํธ๋์ญ์ ์ ํ ์ค ํ๋์ ๋๋ค.
AccountSet: ๊ณ์ ์ ์ค์ ์ ๋ณ๊ฒฝํ๋ ํธ๋์ญ์ ์ ๋๋ค. ์ด ์ค์ ์๋ ์ ์ก๋ฅ , ์์ฒด ์ฃผ์์์ ํ ํฐ์ ์์ ํ๋ ๊ฒ์ ํ์ฉํ ์ง ์ฌ๋ถ, ๊ณ์ ๊ด๋ จ ์ ๋ณด ๋ฑ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
OfferCreate: ๊ฑฐ๋์์์ ์๋ก์ด ์ฃผ๋ฌธ์ ๋ง๋๋ ํธ๋์ญ์ ์ ๋๋ค. ์ด ์ฃผ๋ฌธ์ XRP์ ์ฌ์ฉ์ ์ ์ ํตํ ๊ฐ์ ๊ฑฐ๋๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค.
OfferCancel: ๊ฑฐ๋์์์ ๊ธฐ์กด์ ์ฃผ๋ฌธ์ ์ทจ์ํ๋ ํธ๋์ญ์ ์ ๋๋ค. ์ด ํธ๋์ญ์ ์ ํตํด ๋ ์ด์ ์ํ์ง ์๋ ๊ฑฐ๋๋ฅผ ์ค์งํ ์ ์์ต๋๋ค.
EscrowCreate: XRP๋ฅผ ์กฐ๊ฑด๋ถ๋ก ์ ๊ทธ๋ ํธ๋์ญ์ ์ ๋๋ค. ์ด ์กฐ๊ฑด์ ์๊ฐ์ด๋ ์ํธ ํด์ ์ ๊ฐ์ ํน์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒ์ผ ์ ์์ต๋๋ค.
EscrowFinish: ์ ๊ฒจ์ง XRP์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ฉด, ์ด ํธ๋์ญ์ ์ ํตํด ํด๋น XRP๋ฅผ ํด์ ํ ์ ์์ต๋๋ค.
EscrowCancel: ์๊ฐ์ด ๋ง๋ฃ๋๋ฉด, ์ด ํธ๋์ญ์ ์ ์ฌ์ฉํด ์ ๊ฒจ์ง XRP๋ฅผ ์ทจ์ํ๊ณ ์๋์ ์ก์ ์์๊ฒ ๋๋ ค์ค ์ ์์ต๋๋ค.
CheckCreate: ํน์ ์์ ์๊ฐ ๋์ค์ ํ๊ธํํ ์ ์๋ '์ฒดํฌ'๋ฅผ ๋ง๋๋ ํธ๋์ญ์ ์ ๋๋ค.
CheckCash: ์ฒดํฌ๋ฅผ ํ๊ธํํ์ฌ ํด๋น ์ฒดํฌ์ XRP ๋๋ ์ฌ์ฉ์ ์ ์ ํตํ๋ฅผ ๋ฐ๋ ํธ๋์ญ์ ์ ๋๋ค.
CheckCancel: ์์ง ํ๊ธํ๋์ง ์์ ์ฒดํฌ๋ฅผ ์ทจ์ํ๋ ํธ๋์ญ์ ์ ๋๋ค.
์ด์ธ์๋ ๋ค์ํ ํธ๋์ญ์ ์ ํ์ด ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ XRPL ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
ํธ๋์ญ์ Lifecycleโ
๋ชจ๋ ํธ๋์ญ์ ๋ค์ ๋ค์์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๋๋ค. ํธ๋์ญ์ ์ ์๋ช ์ฃผ๊ธฐ๋ ํธ๋์ญ์ ์์ฑ๋ถํฐ ์ต์ข ์ ์ผ๋ก ๋ ์ ์ ํฌํจ๋ ๋๊น์ง์ ๊ณผ์ ์ ๋งํฉ๋๋ค. ๊ฐ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
ํธ๋์ญ์ ์์ฑ
ํธ๋์ญ์ ๊ฐ์ฒด๋ ํ์ํ ํ๋(ํธ๋์ญ์ ์ ํ, ๊ณ์ , ์์ ์, ๊ธ์ก ๋ฑ)๋ฅผ ํฌํจํ์ฌ ์์ฑ๋ฉ๋๋ค. ์ด ๋จ๊ณ์์๋ ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ์ ํจ์ฑ์ ๊ฒ์ฌํฉ๋๋ค.
xrpl.models.transactions
์์ ์ฌ๋ฐ๋ฅธ ํธ๋์ญ์ ์ ํ์ ์ ํํ๊ณ , ํ์ํ ํ๋๋ฅผ ์ฑ์๋ฃ์ด ํธ๋์ญ์ ์ ์์ฑํ ์ ์์ต๋๋ค.
ํ์ํ ํ๋๋ ์ง์ ์ฑ์ฐ๊ฑฐ๋xrpl.transaction.autofill
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ฑ์๋ฃ์ ์ ์์ต๋๋ค.ํธ๋์ญ์ ์๋ช
ํธ๋์ญ์ ์ ์ก์ ์์ ๋น๋ฐํค๋ก ์๋ช ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ํธ๋์ญ์ ์ ๋ฐ์ก์ธ์ด ์์ ์ ๊ณ์ ์ ์ ์ดํ๊ณ ํธ๋์ญ์ ์ ์์ฑํ์์ ์ฆ๋ช ํฉ๋๋ค.
ํธ๋์ญ์ ๊ฐ์ฒด์
sign
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋์ญ์ ์ ์๋ช ํ ์ ์์ต๋๋ค.ํธ๋์ญ์ ์ ์ถ
์๋ช ๋ ํธ๋์ญ์ ์ XRP Ledger์ ์ ์ถ๋์ด ๋ค์ ์ ํจ์ฑ ๊ฒ์ฌ ๋จ๊ณ๋ก ๋์ด๊ฐ๋๋ค. ์ ์ถ๋ ํธ๋์ญ์ ์ ๋๊ธฐ์ด์ ๋ค์ด๊ฐ๋ฉฐ, ๋ค์ ๋ ์ ์์ ์ฒ๋ฆฌ๋ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
ํธ๋์ญ์ ๊ฐ์ฒด์
submit
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋์ญ์ ์ ์ ์ถํ ์ ์์ต๋๋ค.ํธ๋์ญ์ ๊ฒ์ฆ
๋๊ธฐ์ด์ ๋ค์ด๊ฐ ํธ๋์ญ์ ์ ๊ฒ์ฆ์ ๋ ธ๋๋ค (validator nodes)์ ์ํด ๋ฆฌํ์ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ธ (RPCA)๋ฅผ ๊ฑฐ์ณ ๋ ์ ์ ์ ๋ฒ์ ์ ๋ง๋๋ ๊ฒ์ฆ์๋ค์ ์ ์ถ๋ ํธ๋์ญ์ ์ ๊ฒ์ฆํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค. ํธ๋์ญ์ ์ด ์ ํจํ๋ค๋ฉด (์: ์ถฉ๋ถํ ์๊ณ , ์ฌ๋ฐ๋ฅธ ์๋ช ๋ฑ), ์ด๋ ์ ๋ ์ ์ ํฌํจ๋ฉ๋๋ค.
ํธ๋์ญ์ ์ด ๋ ์ ์ ํฌํจ๋๋ฉด, ์ด๋ ๋ ์ด์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
์ต์ข ํธ๋์ญ์
ํธ๋์ญ์ ์ด ๋ ์ ์ ํฌํจ๋๋ฉด, ์ด๋ ์๋ฃ๋ ์ํ๋ก ๊ฐ์ฃผ๋๋ฉฐ, ๊ด๋ จ๋ ๊ณ์ ์ํ(์: ์๊ณ )๋ ์ด ํธ๋์ญ์ ์ ๋ฐ๋ผ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
Secure Transactionโ
https://xrpl.org/reliable-transaction-submission.html#reliable-transaction-submission
XRP ๋ณด๋ด๊ธฐโ
์ง์ ์ค์ต์ ํตํด ๊ฐ๋จํ ํธ๋์ญ์ ์ ์์ฑํ๊ณ ์ ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด ์์ ๋ Payment
ํธ๋์ญ์
์ ์ด์ฉํด์ XRP๋ฅผ ๋ณด๋ด๋ ๊ณผ์ ์ ๋ณด์ฌ์ค๋๋ค.
๋จผ์ ์์์ ์ค๋ช ํ ํธ๋์ญ์ ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ xrpl-py ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด ํจ์๋ก ๊ตฌํํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
def submit_transaction(
client: JsonRpcClient,
wallet: Wallet,
transaction: Transaction,
check_fee: bool = True,
) -> dict:
"""
ํธ๋์ญ์
์ ์ ์ถํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
Args:
client (JsonRpcClient): XRPL๊ณผ ํต์ ํ๊ธฐ ์ํ ํด๋ผ์ด์ธํธ ๊ฐ์ฒด ์
๋๋ค.
wallet (Wallet): ํธ๋์ญ์
์ ์ ์ถํ๋ ๊ณ์ ์ ์ง๊ฐ ๊ฐ์ฒด์
๋๋ค.
transaction (Transaction): ์ ์ถํ ํธ๋์ญ์
์
๋๋ค.
check_fee (bool, optional): ์์๋ฃ๋ฅผ ํ์ธํ ์ง ์ฌ๋ถ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ผ๋ก True๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Returns:
dict: ํธ๋์ญ์
์ ๊ฒฐ๊ณผ์
๋๋ค.
Raises:
XRPLReliableSubmissionException: ํธ๋์ญ์
์ ์ถ์ด ์คํจํ๋ฉด ๋ฐ์ํฉ๋๋ค.
"""
# Autofill and sign transaction
signed_tx = autofill_and_sign(
transaction=transaction,
client=client,
wallet=wallet,
check_fee=check_fee,
)
# Validate transaction
signed_tx.validate()
# Send transaction and get response
response = submit_and_wait(
transaction=signed_tx, client=client, wallet=wallet
)
# Raise exception if transaction failed
if not response.is_successful():
raise XRPLReliableSubmissionException(response.result)
# Return result
return response.result
์ด ํจ์๋ ํด๋ผ์ด์ธํธ ๊ฐ์ฒด, ์ง๊ฐ ๊ฐ์ฒด, ํธ๋์ญ์ ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค.
ํธ๋์ญ์
์ ํ๋๋ค์ autofill
ํจ์๋ฅผ ์ด์ฉํด ์๋์ผ๋ก ์ฑ์ฐ๊ณ , ์ง๊ฐ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ํธ๋์ญ์
์ ์๋ช
ํฉ๋๋ค.
๊ทธ ํ ์ง์ ํธ๋์ญ์
์ด ์ ํจํ์ง ๊ฒ์ฌํ๊ณ , submit_and_wait
ํจ์๋ฅผ ์ด์ฉํด ํธ๋์ญ์
์ ์ ์ถํฉ๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉด ์์ธ๋ฅผ ๋ฐ์์ํค๊ณ ์๋๋ผ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
ํธ๋์ญ์ ์์ฑโ
payment_tx = Payment(
account=wallet.classic_address,
amount="1000",
destination="rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe",
last_ledger_sequence=ledger_sequence + 10,
)
ํธ๋์ญ์ ๊ฐ์ฒด๋ ํด๋ผ์ด์ธํธ์ ์ํตํ์ง ์๊ณ ๋ก์ปฌ์์ ํ์ํ ํ๋๋ฅผ ์ฑ์ฐ๋ ๊ฒ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
Payment
ํด๋์ค๋ Transaction
ํด๋์ค๋ฅผ ์์๋ฐ์ต๋๋ค. Transaction
ํด๋์ค๋ ํธ๋์ญ์
์ ๊ณตํต ํ๋๋ฅผ ํฌํจํ๋ฉฐ, Payment
ํด๋์ค๋ Transaction
ํด๋์ค์ ํ๋์ ๋ํด ํน์ ํ ํธ๋์ญ์
์ ํ์ ํ์ํ ์ถ๊ฐ ํ๋๋ฅผ ํฌํจํฉ๋๋ค.
๋ชจ๋ ํธ๋์ญ์
๊ฐ์ฒด๋ค์ Transaction
ํด๋์ค๋ฅผ ์์๋ฐ์ผ๋ฉฐ, ํธ๋์ญ์
์ ํ์ ๋ฐ๋ผ ํ์ํ ์ถ๊ฐ ํ๋๋ฅผ ํฌํจํฉ๋๋ค.
ํธ๋์ญ์ ์๋ ์ฑ์ฐ๊ธฐ์ ์๋ช โ
signed_tx = autofill_and_sign(
transaction=transaction,
client=client,
wallet=wallet,
check_fee=check_fee,
)
ํธ๋์ญ์
๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉด, ์ด๋ฅผ ์๋์ผ๋ก ์ฑ์ฐ๊ณ ์๋ช
ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด autofill_and_sign
ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ํจ์๋ ํธ๋์ญ์
๊ฐ์ฒด๋ฅผ ์ฑ์ฐ๊ณ ์๋ช
ํ ํ, ์ฑ์์ง ํธ๋์ญ์
๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
์๋ ์ฑ์ฐ๊ธฐ(autofill
)์ ํด๋ผ์ด์ธํธ๋ฅผ ํตํด ๋คํธ์ํฌ์ ์ํตํ์ฌ, Fee
๊ฐ๊ณผ sequence
๊ฐ์ด ์ฌ์ฉ์์ ์ํด ์ฃผ์ด์ง์ง ์์๋ค๋ฉด ์ฌ๋ฐ๋ฅด๊ฒ ์ฑ์๋๋ค. autofill
ํจ์์ check_fee
๋งค๊ฐ๋ณ์๋ True
๋ก ์ค์ ํ๋ฉด Fee
๊ฐ์ด ๋คํธ์ํฌ์ ์์ Fee
๊ฐ๋ณด๋ค ๋๋ฌด ๋์ผ๋ฉด ์์ธ๋ฅผ ๋ฐ์์ํต๋๋ค.
์๋ช
(sign
)์ ๋ก์ปฌ์์ ์ฌ์ฉ์์ ์ง๊ฐ(private key)์ ํตํด ํธ๋์ญ์
์ ์๋ช
ํฉ๋๋ค. ์ด ๊ณผ์ ์์ SigningPubKey
ํ๋์ TxnSignature
ํ๋๊ฐ ์๋์ผ๋ก ์ฑ์์ง๋๋ค. SigningPubKey
๋ ์ฌ์ฉ์์ ๊ณต๊ฐํค์ด๊ณ , TxnSignature
๋ ์๋ช
๊ฐ์
๋๋ค. ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์์๋ ์ด ๋ ํ๋๋ฅผ ์ด์ฉํด ์๋ช
๊ฐ์ ๊ณต๊ฐํค๋ก ๊ฒ์ฆํ์ฌ ํธ๋์ญ์
์ ์ ํจ์ฑ์ ๊ฒ์ฆํฉ๋๋ค.
ํธ๋์ญ์ ์ ํจ์ฑ ๊ฒ์ฌโ
signed_tx.validate()
ํธ๋์ญ์ ์ ํ์ ํ๋๊ฐ ๋ชจ๋ ์ฑ์์ก๋์ง, ํ๋์ ๊ฐ์ด ์ ํจํ์ง ๋ฑ์ ๊ฒ์ฌํฉ๋๋ค. ์ด ๊ณผ์ ์์ ํ๋์ ๊ฐ์ด ์ ํจํ์ง ์์ผ๋ฉด ์์ธ๋ฅผ ๋ฐ์์ํต๋๋ค.
ํธ๋์ญ์ ์ ์ถโ
response = submit_and_wait(transaction=signed_tx, client=client)
if not response.is_successful():
raise XRPLReliableSubmissionException(response.result)
submit_and_wait
ํจ์๋ ํธ๋์ญ์
์ ์ ์ถํ๊ณ , ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ด ๊ณผ์ ์์ ํธ๋์ญ์
์ ๋๊ธฐ์ด์ ๋ค์ด๊ฐ๋ฉฐ, ๋ค์ ๋ ์ ์์ ์ฒ๋ฆฌ๋ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค. ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์ง ์์ผ๋ฉด ์์ธ๋ฅผ ๋ฐ์์ํต๋๋ค.
ํธ๋์ญ์ ๊ฒฐ๊ณผโ
return response.result
{'Account': 'rh215fU5Pk9N4p2zLdDfRFSKniYqP3qxp7',
'Amount': '1000',
'Destination': 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe',
'Fee': '10',
'Flags': 0,
'LastLedgerSequence': 39630981,
'Sequence': 39630970,
'SigningPubKey': 'EDFDBDBD538F1D8DD89A21C91BA824FC9AAA516DAC9BD8144E0E5C0CB3F6FF80AC',
'TransactionType': 'Payment',
'TxnSignature': 'B7E679A367C0F89E131CC6E6EB969936B2C69EED5D083E6B11EC7566CE6B7471B1C2BF322100D633C64F53D4F8419F939F3AD50741DF18CF4FC303AE77F3B206',
'date': 743129490,
'hash': '99B0DFDD6E2A0CD830919B29DECAD78DA76250ACC94805A6B8C89BA4E57F5D97',
'inLedger': 39630974,
'ledger_index': 39630974,
'meta': {'AffectedNodes': [{'ModifiedNode': {'FinalFields': {'Account': 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe',
'Balance': '87893903718205934',
'Flags': 0,
'OwnerCount': 0,
'Sequence': 6154587},
'LedgerEntryType': 'AccountRoot',
'LedgerIndex': '31CCE9D28412FF973E9AB6D0FA219BACF19687D9A2456A0C2ABC3280E9D47E37',
'PreviousFields': {'Balance': '87893903718204934'},
'PreviousTxnID': '219D7A899BEF52A6C657B1FE3ED6DCAD7EDAF8BC6D1D279E358CDF6BAB5E5BA4',
'PreviousTxnLgrSeq': 39630970}},
{'ModifiedNode': {'FinalFields': {'Account': 'rh215fU5Pk9N4p2zLdDfRFSKniYqP3qxp7',
'Balance': '9999998990',
'Flags': 0,
'OwnerCount': 0,
'Sequence': 39630971},
'LedgerEntryType': 'AccountRoot',
'LedgerIndex': 'EC06857C98943B84709530C08941FA74DAFC92B30B194D8386209B6D48BB7D3D',
'PreviousFields': {'Balance': '10000000000',
'Sequence': 39630970},
'PreviousTxnID': '219D7A899BEF52A6C657B1FE3ED6DCAD7EDAF8BC6D1D279E358CDF6BAB5E5BA4',
'PreviousTxnLgrSeq': 39630970}}],
'TransactionIndex': 1,
'TransactionResult': 'tesSUCCESS',
'delivered_amount': '1000'},
'validated': True}
ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ด์๋ค๋ฉด, ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๋ ์์ ๊ฐ์ด ๋ํ๋ฉ๋๋ค.