Bettex ํ์ด Waves Labs ๋ณด์กฐ๊ธ์ ์ผ๋ถ๋ก ๊ตฌํํ Waves ๋ธ๋ก์ฒด์ธ ๊ธฐ๋ฐ์ ๋ถ์ฐํ ์ ํด ํ๋ก๊ทธ๋จ์ ๋๋ค.
๊ฒ์๋ฌผ์ ํ์๋์ง ์์ต๋๋ค! ์ด ํ๋ก๊ทธ๋จ์ ์คํ ์์ค์ด๋ฉฐ ์ฌ์ฉ ๋ฐ ๋ฐฐํฌ๋ ๋ฌด๋ฃ์ ๋๋ค. ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์ dApp ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ์ ์๊ทนํ๊ณ ์ผ๋ฐ์ ์ผ๋ก ๋คํธ์ํฌ์ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ ์ตํ ํ์ค์ํ๋ฅผ ์ด์งํฉ๋๋ค.
์ ์๋ ์ ํด ํ๋ก๊ทธ๋จ์ฉ dApp์ ๊ธฐ๋ฅ์ ์ผ๋ถ๋ก ์ ํด๋ฅผ ํฌํจํ๋ ํ๋ก์ ํธ๋ฅผ ์ํ ํ
ํ๋ฆฟ์
๋๋ค. ์ฝ๋๋ ๋ณต์ฌ๋ฅผ ์ํ ํ
ํ๋ฆฟ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๊ธฐ์ ๊ตฌํ์ ์ํ ์ผ๋ จ์ ์์ด๋์ด๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ๋ฉด์์ ์ด๊ฒ์ ์ถ์ฒ์ ๋ฑ๋ก, ์ถ์ฒ์ ๋ํ ๋ค๋จ๊ณ ๋ณด์ ๋ฐ์ ๋ฐ ์์คํ ๋ฑ๋ก ๋๊ธฐ ๋ถ์ฌ (์บ์๋ฐฑ)๋ฅผ ๊ตฌํํ๋ ์ผ๋ฐ์ ์ธ ์ ํด ์์คํ ์ ๋๋ค. ์์คํ ์ "์์ํ" dApp์ ๋๋ค. ์ฆ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฒด ๋ฐฑ์๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ์์ด ๋ธ๋ก์ฒด์ธ๊ณผ ์ง์ ์ํธ ์์ฉํฉ๋๋ค.
๋ค๋ฅธ ๋ง์ ํ๋ก์ ํธ์์๋ ์ ์ฉํ ์ ์๋ ๊ธฐ์ ์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฆ์ ์ํ๋๋ ํฌ๋ ๋ง์ผ๋ก ์ค๋งํธ ๊ณ์ ์ ํธ์ถํฉ๋๋ค(ํตํ ์์ ์๋ ๊ณ์ ์ ํตํ ๋๊ธ์ ์ง๋ถํ ํ ํฐ์ด ์์ง๋ง ํตํ ๊ฒฐ๊ณผ๋ก ํ์๋จ).
- PoW-captcha - ์ค๋งํธ ๊ณ์ ๊ธฐ๋ฅ์ ๊ณ ์ฃผํ ์๋ ํธ์ถ์ ๋ํ ๋ณดํธ - captcha์ ์ ์ฌํ์ง๋ง ์ปดํจํ ๋ฆฌ์์ค ์ฌ์ฉ ์ฆ๋ช ์ ํตํด.
- ํ ํ๋ฆฟ์ผ๋ก ๋ฐ์ดํฐ ํค๋ฅผ ์์ฒญํฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ride4dapps ์ธ์ด์ ์ค๋งํธ ๊ณ์ ์ฝ๋(๊ณํ๋๋ก ์ ํด ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ณธ ์ค๋งํธ ๊ณ์ ์ ๋ณํฉ๋จ)
- WAVES NODE REST API๋ฅผ ํตํด ์ถ์ํ ๊ณ์ธต์ ๊ตฌํํ๋ js ๋ํผ;
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ RIDE ์ฝ๋๋ฅผ ์ฌ์ฉํ ์์ ์ธ vuejs ํ๋ ์์ํฌ์ ์ฝ๋์ ๋๋ค.
๋์ด๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ฆ๊ฐ์ ์ธ ์ํ์ผ๋ก ์ค๋งํธ ๊ณ์ ์ ๋ถ์ฑ๋ก ๋ถ๋ฌ๋ค์ ๋๋ค.
InvokeScript๋ฅผ ํธ์ถํ๋ ค๋ฉด ํธ๋์ญ์ ์ ์์ํ ๊ณ์ ์์ ์์๋ฃ๋ฅผ ์ง๋ถํด์ผ ํฉ๋๋ค. ๊ณ์ ์ ์ผ์ ์์ WAVES ํ ํฐ์ ๋ณด์ ํ ๋ธ๋ก์ฒด์ธ ๊ดด์ง๋ฅผ ์ํ ํ๋ก์ ํธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ง๋ง ๋์ค์ ๋์์ผ๋ก ํ๋ ์ ํ์ด๋ผ๋ฉด ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ๊ฒฐ๊ตญ ์ฌ์ฉ์๋ WAVES ํ ํฐ(๋๋ ๊ฑฐ๋ ๋น์ฉ์ ์ง๋ถํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ค๋ฅธ ์ ์ ํ ์์ฐ) ๊ตฌ๋งค์ ์ฐธ์ํด์ผ ํ๋ฉฐ, ์ด๋ ์ด๋ฏธ ํ๋ก์ ํธ์ ์ง์ ํ๊ธฐ ์ํ ์๋นํ ์๊ณ๊ฐ์ ์ฆ๊ฐ์ํต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฑฐ๋ ๋น์ฉ์ ์ง๋ถํ ์ ์๋ ์ฌ์ฉ์์๊ฒ ์์ฐ์ ๋ฐฐํฌํ ์ ์์ผ๋ฉฐ ์์คํ ์์ ์ ๋ ์์ฐ์ ํํํ๊ธฐ ์ํด ์๋ํ๋ ์์คํ ์ด ์์ฑ๋ ๋ ์ค์ฉ์ ์ํ์ ์ง๋ฉดํ ์ ์์ต๋๋ค.
InvokeScript๋ฅผ "์์ทจ์ธ ๋น์ฉ์ผ๋ก"(์คํฌ๋ฆฝํธ๊ฐ ์ค์น๋ ์ค๋งํธ ๊ณ์ ) ํธ์ถํ ์ ์๋ค๋ฉด ๋งค์ฐ ํธ๋ฆฌํ ๊ฒ์ ๋๋ค. ์ด ๊ฐ๋ฅ์ฑ์ ๋ถ๋ช ํ์ง๋ ์์ง๋ง ์กด์ฌํฉ๋๋ค.
InvokeScript ๋ด๋ถ์์ ํธ์ถ์์ ์ฃผ์๋ก ScriptTransfer๊ฐ ์ํ๋์ด ์์๋ฃ์ ์๋น๋ ํ ํฐ์ ๋ณด์ํ๋ฉด ํธ์ถ ๋น์ ํธ์ถ ๊ณ์ ์ ์์ฐ์ด ์๋๋ผ๋ ํธ์ถ์ด ์ฑ๊ณตํฉ๋๋ค. . ์ด๋ ์ถฉ๋ถํ ํ ํฐ์ ๋ํ ํ์ธ์ด ํธ๋์ญ์ ํธ์ถ ์ด์ ์ด ์๋๋ผ ํธ๋์ญ์ ํธ์ถ ์ดํ์ ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์ฆ๊ฐ์ ์ธ ์ํ์ ๋ฐ๋ผ ์ ์ฉ์ผ๋ก ํธ๋์ญ์ ์ ์ํํ ์ ์์ต๋๋ค.
ScriptTransfer(i.caller, i.fee, ๋จ์)
์๋ ์ฝ๋๋ ์ค๋งํธ ์ด์นด์ดํธ ์๊ธ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉํ ์์๋ฃ๋ฅผ ํ๋ถํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ค์ฉ์ ๋ฐฉ์งํ๋ ค๋ฉด ๋ฐ์ ์๊ฐ ํฉ๋ฆฌ์ ์ธ ํ๋ ๋ด์์ ์ฌ๋ฐ๋ฅธ ์์ฐ์ ์์๋ฃ๋ฅผ ์ง์ถํ๋์ง ํ์ธํ๋ ์ํ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
func checkFee(i:Invocation) = {
if i.fee > maxFee then throw(โunreasonable large feeโ) else
if i.feeAssetId != unit then throw(โfee must be in WAVESโ) else true
}
๋ํ ์ ์์ ์ด๊ณ ๋ฌด์๋ฏธํ ์๊ธ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์๋ ํธ์ถ(PoW-captcha)์ ๋ํ ๋ณดํธ๊ฐ ํ์ํฉ๋๋ค.
PoW ์บก์ฐจ
์์ ์ฆ๋ช ์บก์ฐจ์ ์์ด๋์ด๋ ์๋ก์ด ๊ฒ์ด ์๋๋ฉฐ ์ด๋ฏธ WAVES ๊ธฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ํฌํจํ์ฌ ๋ค์ํ ํ๋ก์ ํธ์์ ๊ตฌํ๋์์ต๋๋ค. ์์ด๋์ด์ ์์ ์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ๋ฆฌ์์ค๋ฅผ ๋ญ๋นํ๋ ์์ ์ ์ํํ๊ธฐ ์ํด ํธ์ถ์๋ ์์ ์ ๋ฆฌ์์ค๋ฅผ ์๋นํด์ผ ํ๋ฏ๋ก ๋ฆฌ์์ค ๊ณ ๊ฐ ๊ณต๊ฒฉ์ ์๋นํ ๋น์ฉ์ด ๋ ๋ค๋ ๊ฒ์ ๋๋ค. ํธ๋์ญ์ ๋ฐ์ ์๊ฐ PoW ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง ๋งค์ฐ ์ฝ๊ณ ์ ๋ ดํ ๊ฒ์ฆ์ ์ํด ํธ๋์ญ์ ID ํ์ธ์ด ์์ต๋๋ค.
if take(toBase58String(i.transactionId), 3) != "123" then throw("์์ ์ฆ๋ช ์คํจ") else
ํธ๋์ญ์ ์ ์ํํ๊ธฐ ์ํด ํธ์ถ์๋ base58 ์ฝ๋(id)๊ฐ ์ซ์ 123์ผ๋ก ์์ํ๋๋ก ์ด๋ฌํ ๋งค๊ฐ๋ณ์๋ฅผ ์ ํํด์ผ ํฉ๋๋ค. ์ด๋ ํ๋ก์ธ์ ์๊ฐ์ ํ๊ท ์์ญ ์ด์ ํด๋นํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ ์์ ์ ํฉ๋ฆฌ์ ์ ๋๋ค. ๋ ๊ฐ๋จํ๊ฑฐ๋ ๋ ๋ณต์กํ PoW๊ฐ ํ์ํ ๊ฒฝ์ฐ ์์ ์ ๋ช ๋ฐฑํ ๋ฐฉ์์ผ๋ก ์ฝ๊ฒ ์์ ํ ์ ์์ต๋๋ค.
ํ ํ๋ฆฟ์ผ๋ก ์ฟผ๋ฆฌ ๋ฐ์ดํฐ ํค
๋ธ๋ก์ฒด์ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ key-val๋ก ์ฟผ๋ฆฌํ๋ API ๋๊ตฌ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ ํดํท์ 2019๋ XNUMX์ ์ด ๋งค๊ฐ ๋ณ์๋ก ๋ฑ์ฅํ์ต๋๋ค. ?์ฑ๋ฅ REST API ์์ฒญ์ /์ฃผ์/๋ฐ์ดํฐ?์ผ์น=regexp. ์ด์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ชจ๋ ํค๊ฐ ์๋ ํ๋ ์ด์์ ํค๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ ์ผ๋ถ ๊ทธ๋ฃน๋ง ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ ํค ์ด๋ฆ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ด ํ๋ก์ ํธ์์ ์ธ์ถ ๊ฑฐ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ธ์ฝ๋ฉ๋ฉ๋๋ค.
withdraw_${userAddress}_${txid}
ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ์ฃผ์ด์ง ์ฃผ์์ ๋ํ ์๊ธ ์ธ์ถ ๊ฑฐ๋ ๋ชฉ๋ก์ ์ป์ ์ ์์ต๋๋ค.
?matches=withdraw_${userAddress}_.*
์ด์ ์์ฑ๋ ์๋ฃจ์ ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ถ์ํด ๋ณด๊ฒ ์ต๋๋ค.
vuejs ์ฝ๋
์ฝ๋๋ ์ค์ ํ๋ก์ ํธ์ ๊ฐ๊น์ด ์์ ๋ฐ๋ชจ์ ๋๋ค. Waves Keeper๋ฅผ ํตํด ๋ก๊ทธ์ธ์ ๊ตฌํํ๊ณ affiliate.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์๋ํ์ฌ ์์คํ ์ ์ฌ์ฉ์๋ฅผ ๋ฑ๋กํ๊ณ ํธ๋์ญ์ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ฉฐ ํ๋ํ ์๊ธ์ ์ฌ์ฉ์ ๊ณ์ ์ผ๋ก ์ธ์ถํ ์ ์์ต๋๋ค.
RIDE์ ์ฝ๋
๋ฑ๋ก, ์ ๊ธ, ์ถ๊ธ ๊ธฐ๋ฅ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๋ฑ๋ก ๊ธฐ๋ฅ์ ์์คํ ์ ์ฌ์ฉ์๋ฅผ ๋ฑ๋กํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ฐธ์กฐ์(์ฐธ์กฐ์์ ์ฃผ์)์ ํธ๋์ญ์ ID(PoW-captcha ์์ )๋ฅผ ์ ํํ๋ ๋ฐ ํ์ํ ํจ์ ์ฝ๋์์ ์ฌ์ฉ๋์ง ์๋ ์ํธ ๋งค๊ฐ๋ณ์์ ๋ ๊ฐ์ง ๋งค๊ฐ๋ณ์๊ฐ ์์ต๋๋ค.
ํจ์(์ด ํ๋ก์ ํธ์ ๋๋จธ์ง ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก)๋ ์ฐจ์ฉ ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉฐ, ํจ์์ ๊ฒฐ๊ณผ๋ ์ด ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐ ๋๋ ๋น์ฉ์ ์ง๋ถํ๋ ๊ฒ์ ๋๋ค. ์ด ์๋ฃจ์ ๋๋ถ์ ๋ฐฉ๊ธ ์ง๊ฐ์ ๋ง๋ ์ฌ์ฉ์๋ ์์คํ ์์ ์ฆ์ ์์ ํ ์ ์์ผ๋ฉฐ ๊ฑฐ๋ ์์๋ฃ๋ฅผ ์ง๋ถํ ์ ์๋ ์์ฐ์ ํ๋ํ๊ฑฐ๋ ๋ฐ๋ ๋ฌธ์ ๋ก ๋นํฉํ ํ์๊ฐ ์์ต๋๋ค.
๋ฑ๋ก ๊ธฐ๋ฅ์ ๊ฒฐ๊ณผ๋ ๋ ๊ฐ์ ๋ ์ฝ๋์ ๋๋ค.
${owner)_referer = referer
${referer}_referral_${owner} = owner
์ด๋ฅผ ํตํด ์ ๋ฐฉํฅ ๋ฐ ์ญ๋ฐฉํฅ ์กฐํ(์ง์ ๋ ์ฌ์ฉ์์ ์ฐธ์กฐ์ ๋ฐ ์ง์ ๋ ์ฌ์ฉ์์ ๋ชจ๋ ์ฐธ์กฐ)๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ํ๋ ๊ธฐ๋ฅ์ ์ค์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ํ ํ๋ฆฟ์ ๊ฐ๊น์ต๋๋ค. ์ ์๋ ํํ๋ก ๊ฑฐ๋์ ์ํด ์ด์ฒด๋ ๋ชจ๋ ์๊ธ์ ๊ฐ์ ธ ์์ 1, 2, 3 ์์ค์ ์ถ์ฒ์ ๊ณ์ , "์บ์๋ฐฑ" ๊ณ์ ๋ฐ "๋ณ๊ฒฝ" ๊ณ์ ์ผ๋ก ๋ถ๋ฐฐํฉ๋๋ค. ๊ณ์ ์ด ์ฌ๊ธฐ์ ํ์๋ฉ๋๋ค).
์บ์ฌ๋ฐฑ์ ์ต์ข ์ฌ์ฉ์๊ฐ ์ถ์ฒ ์์คํ ์ ์ฐธ์ฌํ๋๋ก ์ฅ๋ คํ๋ ์๋จ์ ๋๋ค. ์์คํ ์ด ์ง๊ธํ ์์๋ฃ ์ค ์ผ๋ถ๋ฅผ "์บ์๋ฐฑ" ํํ๋ก ์ฌ์ฉ์๋ ์ถ์ฒ ๋ณด์๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ธ์ถํ ์ ์์ต๋๋ค.
์ถ์ฒ ์์คํ ์ ์ฌ์ฉํ ๋ ์์คํ ์ด ์๋ํ ์ค๋งํธ ๊ณ์ ์ ๊ธฐ๋ณธ ๋ ผ๋ฆฌ์ ๋ด์ฅ๋ ์๊ธ ๊ธฐ๋ฅ์ ์์ ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฒ ํ ์ ๋ํด ์ถ์ฒ ๋ณด์์ด ์ง๊ธ๋๋ ๊ฒฝ์ฐ ๋ฒ ํ ์ด ์ด๋ฃจ์ด์ง ๋ก์ง์ ์๊ธ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด์ผ ํฉ๋๋ค(๋๋ ๋ณด์์ด ์ง๊ธ๋๋ ๋ค๋ฅธ ๋์ ์์ ์ด ์ํ๋จ). ์ด ๊ธฐ๋ฅ์๋ ์ธ ๊ฐ์ง ์์ค์ ์ถ์ฒ ๋ณด์์ด ์ฝ๋ฉ๋์ด ์์ต๋๋ค. ๋ ๋ง๊ฑฐ๋ ์ ์ ์์ค์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ์ฝ๋์์๋ ์์ ๋ฉ๋๋ค. ๋ณด์ ๋น์จ์ level1-level3 ์์๋ก ์ค์ ๋๋ฉฐ ์ฝ๋์์ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐ๋ฉ๋๋ค. ๊ธ์ก * ๋ ๋ฒจ / 1000์ฆ, ๊ฐ 1์ 0,1%์ ํด๋นํฉ๋๋ค(์ฝ๋์์ ๋ณ๊ฒฝํ ์๋ ์์).
ํจ์ ํธ์ถ์ ๊ณ์ ์ ์์ก์ ๋ณ๊ฒฝํ๊ณ ์์์ ๊ธฐ๋กํ๊ธฐ ์ํ ํญ๋ชฉ๋ ์์ฑํฉ๋๋ค.
fund_address_txid = address:owner:inc:level:timestamp
ะะปั ะฟะพะปััะตะฝะธั timestamp (ัะตะบััะตะณะพ ะฒัะตะผะตะฝะธ) ะธัะฟะพะปัะทัะตััั ัะฐะบะฐั ะฒะพั ัะฒัะทะบะฐ
func getTimestamp() = {
let block = extract(blockInfoByHeight(height))
toString(block.timestamp)
}
์ฆ, ํธ๋์ญ์
์ ์๊ฐ์ ํธ๋์ญ์
์ด ์์นํ ๋ธ๋ก์ ์๊ฐ์
๋๋ค. ์ด๋ ํนํ ์ฝ๋ฌ๋ธ์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์
์์ฒด์ ํ์์คํฌํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ ์์ ์ ์
๋๋ค.
์ธ์ถ ๊ธฐ๋ฅ์ ๋์ ๋ ๋ณด์์ ์ฌ์ฉ์ ๊ณ์ ์ผ๋ก ๋ชจ๋ ์ธ์ถํฉ๋๋ค. ๋ก๊น
๋ชฉ์ ์ผ๋ก ํญ๋ชฉ์ ์์ฑํฉ๋๋ค.
# withdraw log: withdraw_user_txid=amount:timestamp
์ ์ฒญ
์ ํ๋ฆฌ์ผ์ด์ ์ ์ฃผ์ ๋ถ๋ถ์ ์ ํด ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ WAVES NODE REST API ์ฌ์ด์ ๋ค๋ฆฌ ์ญํ ์ ํ๋ affiliate.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ํ๋ ์์ํฌ ๋ ๋ฆฝ์ ์ธ ์ถ์ํ ๊ณ์ธต์ ๊ตฌํํฉ๋๋ค(์๋ฌด๊ฑฐ๋ ์ฌ์ฉํ ์ ์์). ํ์ฑ ๊ธฐ๋ฅ(๋ฑ๋ก, ์ฒ ํ)์ Waves Keeper๊ฐ ์์คํ ์ ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํ๋ฉฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฒด๋ ์ด๋ฅผ ํ์ธํ์ง ์์ต๋๋ค.
๊ตฌํ ๋ฐฉ๋ฒ:
fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register
๋ฉ์๋์ ๊ธฐ๋ฅ์ ์ด๋ฆ, ๋งค๊ฐ ๋ณ์ ๋ฐ ๋ฐํ ๋ฐ์ดํฐ์์ ๋ช ํํ๊ฒ ์ฝ๋์ ์ค๋ช ๋์ด ์์ต๋๋ค. ๋ฑ๋ก ๊ธฐ๋ฅ์๋ ์ถ๊ฐ ์ค๋ช ์ด ํ์ํฉ๋๋ค. ํธ๋์ญ์ ID ์ ํ ์ฃผ๊ธฐ๋ฅผ ์์ํ์ฌ 123์์ ์์ํฉ๋๋ค. ์ด๊ฒ์ ๋๋ ๋ฑ๋ก์ ๋ฐฉ์งํ๋ ์์์ ์ค๋ช ํ PoW ๋ณด์ ๋ฌธ์์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ ํ์ํ ID๋ฅผ ๊ฐ์ง ํธ๋์ญ์ ์ ์ฐพ์ ๋ค์ Waves Keeper๋ฅผ ํตํด ์๋ช ํฉ๋๋ค.
DEX ์ ํด ํ๋ก๊ทธ๋จ์ ๋ค์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ถ์ฒ : habr.com