Decentralized, qhib qhov kev koom tes nrog rau ntawm Waves blockchain

Ib qhov kev pabcuam cuam tshuam ncaj qha rau ntawm Waves blockchain, tau siv los ua ib feem ntawm Waves Labs nyiaj pab los ntawm pab pawg Betex.

Tus ncej tsis yog advertising! Qhov kev pab cuam yog qhib qhov chaw, nws siv thiab faib yog dawb. Kev siv qhov kev pab cuam txhawb kev txhim kho ntawm dApp daim ntawv thov thiab feem ntau txhawb kev faib tawm, uas muaj txiaj ntsig zoo rau txhua tus neeg siv Internet.

Decentralized, qhib qhov kev koom tes nrog rau ntawm Waves blockchain

Qhov nthuav tawm dApp rau cov kev pabcuam koom nrog yog tus qauv rau cov haujlwm uas suav nrog kev koom tes ua ib feem ntawm lawv txoj haujlwm. Cov lej tuaj yeem siv los ua tus qauv rau kev luam, ua lub tsev qiv ntawv, lossis ua cov tswv yim rau kev siv.

Nyob rau hauv cov nqe lus ntawm functionality, qhov no yog ib tug tsis tu ncua affiliate system uas siv kev sau npe nrog ib tug referrer, ntau theem ntawm cov khoom plig rau kev xa mus thiab kev txhawb siab rau kev tso npe hauv qhov system (nyiaj ntsuab). Lub kaw lus yog "dawb huv" dApp, uas yog, daim ntawv thov lub vev xaib cuam tshuam ncaj qha nrog blockchain, tsis muaj nws tus kheej backend, database, thiab lwm yam.

Cov txheej txheem siv uas tuaj yeem siv tau hauv ntau lwm qhov haujlwm:

  • Hu rau tus account ntse rau hauv cov nuj nqis nrog kev them rov qab tam sim (thaum lub sijhawm hu tsis muaj cov tokens ntawm tus as khauj them rau kev hu, tab sis lawv tshwm sim muaj qhov tshwm sim ntawm kev hu).
  • PoW-captcha - tiv thaiv kev siv hluav taws xob ntau zaus hu rau kev ua haujlwm ntawm tus lej ntse - piv rau captcha, tab sis los ntawm cov ntaub ntawv pov thawj ntawm kev siv cov khoom siv suav.
  • Nug cov ntaub ntawv yuam sij siv tus qauv.

Daim ntawv thov muaj xws li:

  • ntse account code nyob rau hauv cov lus ride4dapps (uas, raws li tau npaj tseg, yog merged rau hauv lub ntsiab smart account uas affiliate functionality yuav tsum tau siv);
  • js wrapper uas siv cov qib abstraction tshaj WAVES NODE REST API;
  • code ntawm vuejs moj khaum, uas yog ib qho piv txwv ntawm kev siv lub tsev qiv ntawv thiab RIDE code.

Cia peb piav qhia txhua yam uas tau teev tseg.

Hu rau tus account ntse rau cov nuj nqis nrog them rov qab tam sim

Hu rau InvokeScript yuav tsum tau them tus nqi los ntawm tus as khauj pib ua lag luam. Qhov no tsis yog ib qho teeb meem yog tias koj tab tom ua ib qhov project rau blockchain geeks uas muaj qee qhov nyiaj ntawm WAVES tokens hauv lawv tus account, tab sis yog tias cov khoom siv los ntawm cov pej xeem, qhov no dhau los ua teeb meem loj. Tom qab tag nrho, tus neeg siv yuav tsum tau saib xyuas kev yuav khoom WAVES tokens (los yog lwm yam khoom vaj khoom tsev tsim nyog uas tuaj yeem siv los them rau kev lag luam), uas ua rau muaj kev cuam tshuam loj heev rau kev nkag mus rau hauv qhov project. Peb tuaj yeem faib cov cuab yeej cuab tam rau cov neeg siv uas yuav tuaj yeem them nyiaj rau kev lag luam thiab ntsib txoj kev pheej hmoo ntawm lawv cov kev siv tsis raug thaum cov tshuab siv hluav taws xob raug tsim los tso tawm cov cuab yeej ua kua los ntawm peb lub cev.

Nws yuav yooj yim heev yog tias nws tuaj yeem hu rau InvokeScript "ntawm tus nqi ntawm tus neeg txais" (tus account ntse uas cov ntawv tau teeb tsa), thiab qhov muaj peev xwm zoo li no, txawm tias tsis muaj qhov pom tseeb, muaj.

Yog tias hauv InvokeScript koj ua ScriptTransfer rau tus neeg hu xov tooj qhov chaw nyob, uas them rau cov nqi tokens siv, ces qhov kev hu no yuav ua tiav, txawm tias thaum lub sijhawm hu tsis muaj cov cuab tam ntawm tus lej hu. Qhov no ua tau vim tias daim tshev rau cov tokens txaus yog ua tom qab kev sib pauv hu, es tsis yog ua ntej nws, yog li cov kev lag luam tuaj yeem ua rau credit, raug them rov qab tam sim.

ScriptTransfer(i.caller, i.fee, unit)

Cov cai hauv qab no them rov qab cov nqi siv nyiaj siv cov nyiaj siv ntse. Txhawm rau tiv thaiv kev siv tsis raug ntawm cov yam ntxwv no, nws yuav tsum tau siv daim tshev uas tus neeg hu xov tooj siv tus nqi hauv cov khoom vaj khoom tsev uas xav tau thiab tsis pub dhau qhov kev txwv tsim nyog:

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
}

Tsis tas li ntawd, txhawm rau tiv thaiv cov nyiaj tsis zoo thiab tsis muaj txiaj ntsig, kev tiv thaiv hu tsis siv neeg (PoW-captcha) yuav tsum tau ua.

PoW-captcha

Lub tswv yim heev ntawm kev ua pov thawj-ntawm-kev ua haujlwm captcha tsis yog tshiab thiab twb tau ua tiav hauv ntau txoj haujlwm, suav nrog cov uas tau ua raws li WAVES. Lub tswv yim yog tias txhawm rau ua ib qho kev nqis tes ua uas siv peb qhov project cov peev txheej, tus neeg hu xov tooj yuav tsum tau siv nws tus kheej cov peev txheej, uas ua rau muaj kev cuam tshuam cov peev txheej tawm tsam kim heev. Rau qhov kev lees paub yooj yim heev thiab tus nqi qis uas tus neeg xa khoom ntawm kev sib pauv tau daws qhov teeb meem PoW, muaj daim npav rho nyiaj ID:

yog take(toBase58String(i.transactionId), 3) != "123" ces muab pov("cov pov thawj ntawm kev ua hauj lwm ua tsis tau tejyam") lwm

Yuav kom ua tiav qhov kev lag luam, tus neeg hu xov tooj yuav tsum xaiv cov kev txwv no kom nws lub hauv paus 58 code (id) pib nrog cov lej 123, uas sib raug rau qhov nruab nrab rau ob peb kaum vib nas this ntawm lub sijhawm ua haujlwm thiab feem ntau tsim nyog rau peb txoj haujlwm. Yog xav tau ib qho yooj yim los yog ntau dua POW, ces txoj hauj lwm yuav hloov tau yooj yim hauv txoj kev pom tseeb.

Nug cov ntaub ntawv yuam sij siv tus qauv

Txhawm rau siv blockchain ua cov ntaub ntawv, nws yog ib qho tseem ceeb kom muaj API cov cuab yeej rau kev nug cov ntaub ntawv raws li qhov tseem ceeb-val raws li cov qauv. Xws li cov cuab yeej tau tshwm sim thaum pib Lub Xya Hli 2019 hauv daim ntawv ntawm qhov ntsuas ?kev sib tw ntawm REST API thov /addresses/data?match=regexp. Tam sim no, yog tias peb xav tau ntau tshaj ib tus yuam sij los ntawm lub vev xaib thov thiab tsis yog txhua tus yuam sij ib zaug, tab sis tsuas yog qee pawg, ces peb tuaj yeem xaiv los ntawm lub npe tseem ceeb. Piv txwv li, nyob rau hauv qhov project no, rho tawm muas tau encoded li

withdraw_${userAddress}_${txid}

uas tso cai rau koj kom tau txais ib daim ntawv teev cov kev hloov pauv rau kev rho nyiaj rau ib qho chaw nyob uas siv tus qauv:

?matches=withdraw_${userAddress}_.*

Tam sim no cia saib cov khoom ntawm cov tshuaj tiav.

Vwj code

Tus lej yog qhov ua haujlwm demo ze rau qhov project tiag. Nws siv kev nkag mus los ntawm Waves Keeper thiab ua haujlwm nrog lub tsev qiv ntawv affiliate.js, uas nws sau npe tus neeg siv hauv lub kaw lus, nug cov ntaub ntawv hloov pauv, thiab tseem tso cai rau koj thim cov nyiaj tau los rau tus neeg siv tus account.

Decentralized, qhib qhov kev koom tes nrog rau ntawm Waves blockchain

Code rau RIDE

Nws suav nrog kev sau npe, nyiaj txiag thiab rho tawm haujlwm.

Cov haujlwm sau npe sau npe tus neeg siv ntawm qhov system. Nws muaj ob qhov tsis zoo: tus xa mus (chaw xa mus rau qhov chaw nyob) thiab qhov ntsuas ntsev, uas tsis yog siv rau hauv cov lej ua haujlwm, uas yuav tsum tau xaiv qhov kev hloov pauv id (PoW-captcha txoj haujlwm).

Lub luag haujlwm (zoo li lwm yam haujlwm ntawm qhov haujlwm no) siv cov txheej txheem hu rau cov nuj nqis, qhov tshwm sim ntawm kev ua haujlwm yog los them nyiaj rau kev them nqi rau kev hu rau qhov haujlwm no. Ua tsaug rau qhov kev daws teeb meem no, tus neeg siv uas nyuam qhuav tsim lub hnab nyiaj tuaj yeem ua haujlwm tam sim ntawd nrog lub kaw lus thiab tsis tas yuav txhawj xeeb txog kev yuav khoom lossis tau txais cov cuab yeej cuab tam uas tso cai rau nws them tus nqi sib pauv.

Qhov tshwm sim ntawm kev sau npe ua haujlwm yog ob cov ntaub ntawv:

${owner)_referer = referer
${referer}_referral_${owner} = owner

Qhov no tso cai rau kev tshawb nrhiav rau pem hauv ntej thiab thim rov qab (tus xa mus ntawm tus neeg siv khoom thiab tag nrho cov xa mus ntawm tus neeg siv tau muab).

Cov peev nyiaj ua haujlwm yog ntau tus qauv rau kev tsim cov haujlwm tiag tiag. Nyob rau hauv nws daim ntawv qhia, nws yuav siv tag nrho cov nyiaj pauv los ntawm kev sib pauv thiab faib lawv mus rau tus account ntawm cov neeg xa mus rau qib 1, 2, 3, mus rau "cashback" account thiab "hloov" account (txhua yam uas tseem tshuav thaum muab faib rau yav dhau los. account mus ntawm no).

Cashback yog ib txoj hauv kev txhawb kom cov neeg siv kawg koom nrog hauv kev xa mus. Tus neeg siv tuaj yeem thim ib feem ntawm cov nyiaj them los ntawm lub kaw lus nyob rau hauv daim ntawv ntawm "nyiaj ntsuab" zoo ib yam li khoom plig rau kev xa mus.

Thaum siv cov txheej txheem xa mus, cov peev nyiaj yuav tsum tau hloov kho thiab koom ua ke rau hauv lub ntsiab lus tseem ceeb ntawm tus account ntse uas lub kaw lus yuav ua haujlwm. Piv txwv li, yog tias qhov khoom plig xa mus them rau qhov ua thawj koom ruam, ces qhov kev ua haujlwm ntawm cov nyiaj yuav tsum tau ua rau hauv cov laj thawj uas tus thawj koom ruam tau muab tso rau (lossis lwm qhov kev nqis tes ua yog ua rau qhov khoom plig tau them). Peb theem ntawm cov khoom plig xa mus yog coded rau hauv txoj haujlwm no. Yog tias koj yuav tsum ua kom ntau lossis tsawg dua, ces qhov no kuj raug kho hauv cov cai. Tus nqi zog feem pua ​​yog teem los ntawm qib 1-level3 tas mus li; nyob rau hauv cov cai nws yog xam raws li tus nqi * qib / 1000, uas yog, tus nqi 1 sib raug rau 0,1% (qhov no kuj tuaj yeem hloov pauv hauv cov cai).

Hu rau lub luag haujlwm hloov pauv nyiaj tshuav nyiaj li cas thiab tseem tsim cov ntawv nkag rau lub hom phiaj ntawm daim ntawv:

fund_address_txid = address:owner:inc:level:timestamp
Для получСния timestamp (Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ такая Π²ΠΎΡ‚ связка
func getTimestamp() = {
let block = extract(blockInfoByHeight(height))
toString(block.timestamp)
}

Ntawd yog, lub sijhawm hloov pauv yog lub sijhawm ntawm lub block uas nws nyob. Qhov no yog qhov txhim khu kev qha ntau dua li siv lub sijhawm los ntawm kev hloov pauv nws tus kheej, tshwj xeeb tshaj yog vim nws tsis muaj los ntawm kev hu tau.
Qhov kev tshem tawm muaj nuj nqi qhia tag nrho cov khoom plig tau txais txiaj ntsig rau tus neeg siv tus account. Tsim cov ntawv nkag rau lub hom phiaj sau npe:

# withdraw log: withdraw_user_txid=amount:timestamp

Daim ntawv thov

Qhov tseem ceeb ntawm daim ntawv thov yog lub tsev qiv ntawv affiliate.js, uas yog tus choj ntawm cov ntaub ntawv sib koom ua ke thiab WAVES NODE REST API. Ua kom tiav qib abstraction ywj siab ntawm lub moj khaum (txhua tus tuaj yeem siv tau). Cov haujlwm nquag (sau npe, thim tawm) xav tias Waves Keeper tau teeb tsa rau ntawm lub kaw lus; lub tsev qiv ntawv nws tus kheej tsis kuaj qhov no.

Siv cov txheej txheem:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Cov kev ua haujlwm ntawm cov txheej txheem yog pom tseeb los ntawm cov npe; cov kev txwv thiab cov ntaub ntawv xa rov qab tau piav qhia hauv cov cai. Kev sau npe ua haujlwm xav tau cov lus pom ntxiv - nws pib lub voj voog ntawm kev xaiv tus lej hloov pauv kom nws pib ntawm 123 - qhov no yog PoW-captcha tau piav qhia saum toj no, uas tiv thaiv kev sau npe ntau. Lub luag haujlwm nrhiav kev lag luam nrog tus lej xav tau, thiab tom qab ntawd kos npe los ntawm Waves Keeper.

DEX affiliate program muaj nyob ntawm GitHub.com.

Tau qhov twg los: www.hab.com

Ntxiv ib saib