ืชืืื ืืช ืฉืืชืคืื ืืืืืจืช ื-Waves blockchain, ืืืืืฉืืช ืืืืง ืืืขื ืง Waves Labs ืขื ืืื ืฆืืืช Bettex.
ืืคืืกื ืืื ื ืคืจืกืืื! ืืชืืื ื ืืื ืืงืื ืคืชืื, ืืฉืืืืฉ ืืืืคืฆื ืฉืื ืืืื ื. ืืฉืืืืฉ ืืชืืื ืืช ืืืจืืฅ ืืช ืืคืืชืื ืฉื ืืคืืืงืฆืืืช dApp ืืืืืคื ืืืื ืืงืื ืืืืืจ, ืื ืฉืืืขืื ืืื ืืฉืชืืฉ ืืื ืืจื ื.
ื-dApp ืืืืฆื ืืชืืื ืืืช ืฉืืชืคืื ืืื ืชืื ืืช ืืคืจืืืงืืื ืืืืืืื ืฉืืชืคืื ืืืืง ืืืคืื ืงืฆืืื ืืืืช ืฉืืื. ืืงืื ืืืื ืืฉืืฉ ืืชืื ืืช ืืืขืชืงื, ืืกืคืจืืื, ืื ืืกื ืฉื ืจืขืืื ืืช ืืืืฉืื ืืื ื.
ืืืืื ืช ืคืื ืงืฆืืื ืืืืช, ืืืืืจ ืืืขืจืืช ืฉืืชืคืื ืจืืืื ืืืืืฉืืช ืจืืฉืื ืขื ืืคื ื, ืฆืืืจืช ืชืืืืืื ืจื-ืฉืืืืช ืืืคื ืืืช ืืื ืขื ืืจืืฉืื ืืืขืจืืช (ืงืืฉืืง). ืืืขืจืืช ืืื dApp "ืืืืจื", ืืืืืจ, ืืคืืืงืฆืืืช ืืืื ืืจื ื ืืงืืืืช ืืื ืืจืืงืฆืื ืืฉืืจื ืขื ืืืืืงืฆ'ืืื, ืืื ืงืฆื ืืืืจื ืืฉืื, ืืกื ื ืชืื ืื ืืื'.
ืืื ืืงืืช ืืฉืืืืฉ ืฉืืืืืืช ืืืืืช ืฉืืืืฉืืืช ืื ืืคืจืืืงืืื ืจืืื ืืืจืื:
- ืงืจืืืช ืืฉืืื ืืื ืืืืืืช ืขื ืคืืจืขืื ืืืืื (ืืืื ืืฉืืื ืืื ืืกืืืื ืื ืืืฉืืื ืืชืฉืืื ืขืืืจ ืืฉืืื, ืื ืื ืืืคืืขืื ืฉื ืืขืงืืืช ืืฉืืื).
- PoW-captcha - ืืื ื ืืคื ื ืงืจืืืืช ืืืืืืืืืช ืืชืืืจืืช ืืืืื ืืคืื ืงืฆืืืช ืืฉืืื ืืื - ืื ืืืื ื-captcha, ืื ืืืืฆืขืืช ืืืืื ืืฉืืืืฉ ืืืฉืืื ืืืฉืื.
- ืฉืืืืชื ืืืคืชืืืช ื ืชืื ืื ืืืืฆืขืืช ืชืื ืืช.
ืืืงืฉื ืืืจืืืช ื:
- ืงืื ืืฉืืื ืืื ืืฉืคืช ride4dapps (ืืฉืจ, ืืืชืืื ื, ืืืื ืืืฉืืื ืืืื ืืจืืฉื ืฉืขืืืจื ืืฉ ืืืืฉื ืคืื ืงืฆืืื ืืืืช ืฉืืชืคืื);
- ืขืืืคื js ืืืืืฉืืช ืจืืช ืืคืฉืื ืขื ืคื ื WAVES NODE REST API;
- ืงืื ืขื ืืืกืืจืช vuejs, ืฉืืื ืืืืื ืืฉืืืืฉ ืืกืคืจืืื ืืืงืื RIDE.
ืืื ื ืชืืจ ืืช ืื ืืชืืื ืืช ืืืคืืจืืืช.
ืงืจืืื ืืืฉืืื ืืื ืืืืืืช ืขื ืคืืจืขืื ืืืืื
ืงืจืืื ื-InvokeScript ืืืจืฉืช ืชืฉืืื ืฉื ืขืืื ืืืืฉืืื ืฉืืื ืืช ืืขืกืงื. ืื ืื ืืขืื ืื ืืชื ืขืืฉื ืคืจืืืงื ืืืืงืื ืฉื ืืืืงืฆ'ืืื ืฉืืฉ ืืื ืืืืช ืืกืืืืช ืฉื ืืกืืืื ื WAVES ืขื ืืฉืืื ื, ืืื ืื ืืืืฆืจ ืืืืื ืืฉืืืืฉ ืขื ืืื ืืฆืืืืจ ืืจืื, ืื ืืืคื ืืืขืื ืจืฆืื ืืช. ืืจื ืขื ืืืฉืชืืฉ ืืืืื ืืจืืืฉืช ืืกืืืื ื WAVES (ืื ื ืืก ืืชืืื ืืืจ ืฉื ืืชื ืืืฉืชืืฉ ืื ืืชืฉืืื ืขืกืงืืืช), ืื ืฉืืืืื ืืช ืืืกืื ืืื ืืกื ืื ืืืจ ืืืืื ืืคืจืืืงื. ืื ื ืืืืืื ืืืคืืฅ ื ืืก ืืืฉืชืืฉืื ืฉืืืืื ืืฉืื ืขืืืจ ืขืกืงืืืช ืืืืชืืืื ืขื ืืกืืืื ืฉื ืฉืืืืฉ ืืจืขื ืืื ืืืฉืจ ื ืืฆืจืืช ืืขืจืืืช ืืืืืืืืืช ืืฉืืืืช ื ืืก ื ืืื ืืืืขืจืืช ืฉืื ื.
ืื ืืืื ืืืื ื ืื ืื ืืคืฉืจ ืืื ืืงืจืื ื-InvokeScript "ืขื ืืฉืืื ืื ืืขื" (ืืืฉืืื ืืืื ืขืืื ืืืชืงื ืืกืงืจืืคื), ืืงืืืืช ืืคืฉืจืืช ืืื, ืื ืื ืื ืืืืคื ืืจืืจ.
ืื ืืชืื InvokeScript ืืชื ืืืฆืข ScriptTransfer ืืืชืืืช ืืืชืงืฉืจ, ืืฉืจ ืืคืฆื ืขื ืืกืืืื ื ืืขืืื ืฉืืืฆืื, ืื ืฉืืื ืืื ืชืฆืืื, ืื ืื ืืืื ืืฉืืื ืื ืืื ื ืืกืื ืืืฉืืื ืืืชืงืฉืจ. ืืืืจ ืืคืฉืจื ืืืืืื ืฉืืืืืงื ืืืกืคืืง ืืกืืืื ืื ืืชืืฆืขืช ืืืืจ ืงืจืืืช ืืขืกืงื, ืืื ืืคื ืื, ืื ืฉื ืืชื ืืืฆืข ืขืกืงืืืช ืืืฉืจืื ืืืคืืฃ ืืคืืจืขืื ืืืืื.
ScriptTransfer(i.caller, i.fee, unit)
ืืงืื ืฉืืืื ืืืืืจ ืืช ืืขืืื ืฉืืืฆืื ืืืืฆืขืืช ืืกืคื ืืฉืืื ืืื. ืืื ืืืื ืืคื ื ืฉืืืืฉ ืืจืขื ืืชืืื ื ืื, ืืฉ ืฆืืจื ืืืฉืชืืฉ ืืืืืื ืฉืืืชืงืฉืจ ืืืฆืื ืืช ืืขืืื ืื ืืก ืื ืืจืฉ ืืืืืืืืช ืกืืืจืืช:
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-captcha
ืขืฆื ืืจืขืืื ืฉื captcha ืืืืืช ืขืืืื ืืื ื ืืืฉ ืืืืจ ืืืฉื ืืคืจืืืงืืื ืฉืื ืื, ืืืื ืืื ืฉืืืฉืื ืขื ืืกืืก WAVES. ืืจืขืืื ืืื ืฉืืื ืืืฆืข ืคืขืืื ืฉืฆืืจืืช ืืช ืืืฉืืืื ืฉื ืืคืจืืืงื ืฉืื ื, ืขื ืืืชืงืฉืจ ืืืืื ืื ืืช ืืืฉืืืื ืฉืื, ืื ืฉืืืืงืจ ืืืื ืืชืงืคืช ืืืืื ืืฉืืืื. ืืืืืืช ืงืื ืืืื ืืืขืืืช ื ืืืื ืฉืฉืืื ืืขืกืงื ืคืชืจ ืืช ืืขืืืช PoW, ืืฉ ืืืืงืช ืืืื ืขืกืงื:
if take(toBase58String(i.transactionId), 3) != "123" then throw("ืืืืืช ืขืืืื ื ืืฉืื") else
ืขื ืื ืช ืืืฆืข ืขืกืงื, ืขื ืืืชืงืฉืจ ืืืืืจ ืคืจืืืจืื ืืืื ืื ืฉืงืื ื-base58 (id) ืฉืื ืืชืืื ืืืกืคืจืื 123, ืืืชืืื ืืืืืฆืข ืืืื ืขืฉืจืืช ืฉื ืืืช ืฉื ืืื ืืขืื ืืืืจื ืืื ืกืืืจ ืืืฉืืื ืฉืื ื. ืื ื ืืจืฉ PoW ืคืฉืื ืืืชืจ ืื ืืืจืื ืืืชืจ, ื ืืชื ืืฉื ืืช ืืช ืืืฉืืื ืืงืืืช ืืฆืืจื ืืจืืจื.
ืฉืืืืชื ืืืคืชืืืช ื ืชืื ืื ืืืืฆืขืืช ืชืื ืืช
ืขื ืื ืช ืืืฉืชืืฉ ืืืืืงืฆ'ืืื ืืืกื ื ืชืื ืื, ืืืื ื ืฉืืืื ืืื API ืืฉืืืืชืช ืืกื ืื ืชืื ืื ืืืคืชืืืช ืืืืืกืกืื ืขื ืชืื ืืืช. ืขืจืืช ืืืื ืืื ืืืคืืขื ืืชืืืืช ืืืื 2019 ืืฆืืจืช ืคืจืืืจ ?ืืชืืืืช ืืืงืฉืช REST API /addresses/data?matches=regexp. ืืขืช, ืื ืื ืื ื ืฆืจืืืื ืืงืื ืืืชืจ ืืืคืชื ืืื ืืืคืืืงืฆืืืช ืืื ืืจื ื ืืื ืืช ืื ืืืคืชืืืช ืืืช ืืืช, ืืื ืจืง ืงืืืฆื ืืืฉืื, ืื ื ืืื ืืืืืจ ืืคื ืฉื ืืคืชื. ืืืืืื, ืืคืจืืืงื ืื, ืขืกืงืืืช ืืฉืืื ืืงืืืืืช ื
withdraw_${userAddress}_${txid}
ืืืืคืฉืจ ืื ืืงืื ืจืฉืืื ืฉื ืขืกืงืืืช ืืืฉืืืช ืืกืคืื ืขืืืจ ืื ืืชืืืช ื ืชืื ื ืืืืฆืขืืช ืืชืื ืืช:
?matches=withdraw_${userAddress}_.*
ืขืืฉืื ืืืื ื ืกืชืื ืขื ืืืจืืืืื ืฉื ืืคืชืจืื ืืืืืืจ.
ืงืื Vuejs
ืืงืื ืืื ืืืืื ืขืืืืช ืงืจืืื ืืคืจืืืงื ืืืืืชื. ืืื ืืืืฉื ืื ืืกื ืืจื Waves Keeper ืืขืืื ืขื ืกืคืจืืืช affiliate.js, ืืืชื ืืื ืจืืฉื ืืช ืืืฉืชืืฉ ืืืขืจืืช, ืืืฆืข ืฉืืืืชืืช ืื ืชืื ื ืขืกืงืืืช, ืืื ืืืคืฉืจ ืื ืืืฉืื ืืกืคืื ืฉืืจืืืืื ืืืฉืืื ืืืฉืชืืฉ.
ืงืื ืขืืืจ RIDE
ืืืจืื ืืคืื ืงืฆืืืช ืืจืืฉืื, ืืืืืื ืืืืฉืืื.
ืคืื ืงืฆืืืช ืืจืืฉืื ืจืืฉืืช ืืฉืชืืฉ ืืืขืจืืช. ืืฉ ืื ืฉื ื ืคืจืืืจืื: ืืคื ื (ืืชืืืช ืืคื ื) ืืคืจืืืจ salt, ืฉืืื ื ืืฉืืืืฉ ืืงืื ืืคืื ืงืฆืื, ืืืจืืฉ ืืืืืจืช ืืืื ืืขืกืงื (ืืฉืืื PoW-captcha).
ืืคืื ืงืฆืื (ืืื ืคืื ืงืฆืืืช ืืืจืืช ืืคืจืืืงื ืื) ืืฉืชืืฉืช ืืืื ืืงืช ื-debt call, ืืชืืฆืื ืฉื ืืคืื ืงืฆืื ืืื ืืืืื ืชืฉืืื ืขืืื ืขืืืจ ืงืจืืืช ืคืื ืงืฆืื ืื. ืืืืืช ืืคืชืจืื ืื, ืืฉืชืืฉ ืฉืื ืขืชื ืืฆืจ ืืจื ืง ืืืื ืืขืืื ืืื ืขื ืืืขืจืืช ืืืื ื ืฆืจืื ืืืืื ืืจืืืฉื ืื ืงืืืช ื ืืก ืืืืคืฉืจ ืื ืืฉืื ืขืืืช ืขืกืงื.
ืืชืืฆืื ืฉื ืคืื ืงืฆืืืช ืืจืืฉืื ืืื ืฉืชื ืจืฉืืืืช:
${owner)_referer = referer
${referer}_referral_${owner} = owner
ืื ืืืคืฉืจ ืืืคืืฉ ืงืืืื ืืืืืจื (ืืืคื ื ืฉื ืืฉืชืืฉ ื ืชืื ืืื ืืืคื ืืืช ืฉื ืืฉืชืืฉ ื ืชืื).
ืคืื ืงืฆืืืช ืืงืจื ืืื ืืืชืจ ืชืื ืืช ืืคืืชืื ืคืื ืงืฆืืื ืืืืช ืืืืชืืช. ืืืชืืื ืชื ืืืืฆืืช, ืืื ืืืงืืช ืืช ืื ืืืกืคืื ืฉืืืขืืจื ืืขืกืงื ืืืืืงื ืืืชื ืืืฉืืื ืืช ืฉื ืืคื ืื ืืืจืืืช 1, 2, 3, ืืืฉืืื ื"ืงืืฉืืง" ืืืืฉืืื ื"ืฉืื ืื" (ืื ืื ืฉื ืฉืืจ ืืืืืงื ืืงืืืืื). ืืฉืืื ืืช ื ืื ืกืื ืืืื).
Cashback ืืื ืืืฆืขื ืืื ืขืช ืืฉืชืืฉ ืืงืฆื ืืืฉืชืชืฃ ืืืขืจืืช ืืคื ืืืช. ืืืฉืชืืฉ ืืืื ืืืฉืื ืืช ืืืง ืืขืืื ืฉืฉืืื ืขื ืืื ืืืขืจืืช ืืฆืืจื ืฉื "ืงืืฉืืง" ืืืืชื ืืืคื ืืื ืชืืืืืื ืขืืืจ ืืคื ืืืช.
ืืขืช ืฉืืืืฉ ืืืขืจืืช ืืคื ืืืช, ืืฉ ืืฉื ืืช ืืช ืคืื ืงืฆืืืช ืืงืจื ืืืฉืื ืืืชื ืืืืืืื ืืจืืฉื ืฉื ืืืฉืืื ืืืื ืขืืื ืชืขืืื ืืืขืจืืช. ืืืืืื, ืื ืืฉืืื ืชืืืื ืืคื ืื ืขืืืจ ืืืืืจ ืฉืืืฆืข, ืืื ืคืื ืงืฆืืืช ืืงืจื ืฆืจืืื ืืืืืช ืืืื ืืช ืืืืืืงื ืฉืื ืืืฆืขืื ืืช ืืืืืืจ (ืื ืืืืฆืขืช ืคืขืืื ืืืืงืืช ืืืจืช ืฉืขืืืจื ืืฉืืื ืืชืืืื). ืฉืืืฉ ืจืืืช ืฉื ืชืืืืื ืืคื ืื ืืงืืืืืช ืืคืื ืงืฆืื ืื. ืื ืืชื ืฆืจืื ืืขืฉืืช ืืืชืจ ืื ืคืืืช ืจืืืช, ืื ืื ืืชืืงื ืืงืื. ืืืื ืืชืืืื ื ืงืืข ืขื ืืื ืืงืืืขืื 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
ืืืฉืื
ืืืืง ืืขืืงืจื ืฉื ืืืคืืืงืฆืื ืืื ืกืคืจืืืช affiliate.js, ืืืืืื ืืฉืจ ืืื ืืืืืื ืฉื ืฉืืชืคืื ื-WAVES NODE REST API. ืืืืฉืืช ืจืืช ืืคืฉืื ืืืชื ืชืืืื ืืืกืืจืช (ื ืืชื ืืืฉืชืืฉ ืืื ืืืช). ืคืื ืงืฆืืืช ืคืขืืืืช (ืจืืฉืื, ื ืกืืื) ืื ืืืืช ืฉ-Waves Keeper ืืืชืงื ืืืขืจืืช; ืืกืคืจืืื ืขืฆืื ืื ืืืืงืช ืืืช.
ืืืืฉื ืฉืืืืช:
fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register
ืืคืื ืงืฆืืื ืืืืช ืฉื ืืฉืืืืช ืืจืืจื ืืืฉืืืช; ืืคืจืืืจืื ืืื ืชืื ืื ืืืืืืจืื ืืชืืืจืื ืืงืื. ืคืื ืงืฆืืืช ืืจืืฉืื ืืืจืฉืช ืืขืจืืช ื ืืกืคืืช - ืืื ืืชืืืื ืืืืืจ ืฉื ืืืืจืช ืืืื ืืขืกืงื ืื ืฉืืชืืื ื-123 - ืืื ื-PoW-captcha ืฉืชืืืจ ืืขืื, ืฉืืื ืืคื ื ืจืืฉืืืื ืืืื ืืื. ืืคืื ืงืฆืื ืืืฆืืช ืขืกืงื ืขื ืืืืื ืื ืืจืฉ, ืืืืืจ ืืื ืืืชืืช ืขืืื ืืจื Waves Keeper.
ืชืืื ืืช ืืฉืืชืคืื ืฉื DEX ืืืื ื ืืืชืืืช
ืืงืืจ: www.habr.com