Open source decentralized affiliate chirongwa paWaves blockchain

A decentralized affiliate chirongwa paWaves blockchain, yakaitwa sechikamu cheWaves Labs kupihwa neBettex timu.

Iyo positi haisi kushambadza! Iyo purogiramu ndeye yakavhurika sosi, kushandiswa kwayo uye kugovera ndeyemahara. Kushandiswa kwechirongwa kunosimudzira kuvandudzwa kwezvikumbiro zvedApp uye kazhinji kunosimudzira kuendesa matunhu, izvo zvinobatsira mushandisi wese weInternet.

Open source decentralized affiliate chirongwa paWaves blockchain

Iyo yakaratidzwa dApp yemapurogiramu akabatana itemplate yemapurojekiti anosanganisira affiliate sechikamu chekushanda kwavo. Iyo kodhi inogona kushandiswa setemplate yekukopa, seraibhurari, kana seti yemazano ekushandisa kwehunyanzvi.

Panyaya yekushanda, iyi inogara yakabatana sisitimu inoshandisa kunyoreswa neanotumira, akawanda-level accrual yemubairo wekutumira uye kukurudzira kwekunyoresa muhurongwa (cashback). Iyo sisitimu ndeye "yakachena" dApp, ndiko kuti, iyo webhu application inopindirana zvakananga ne blockchain, isina kuve neyayo backend, dhatabhesi, nezvimwe.

Matekiniki anoshandiswa anogona zvakare kubatsira mune mamwe akawanda mapurojekiti:

  • Kufonera smart account muchikwereti nekukasira kubhadhara (panguva yekufona hapana ma tokens paaccount kubhadhara kufona, asi ivo vanoonekwa ipapo semhedzisiro yekufona).
  • PoW-captcha - dziviriro kubva kune yakakwira-frequency automated mafoni kune smart account mabasa - anofanana necaptcha, asi kuburikidza nehumbowo hwekushandisa komputa zviwanikwa.
  • Kubvunza makiyi edata uchishandisa template.

Chikumbiro chine:

  • smart account kodhi mumutauro we ride4dapps (iyo, sezvakarongwa, inosanganiswa muiyo huru smart account iyo inobatanidzwa kushanda kunoda kuitwa);
  • js wrapper inoshandisa nhanho yekubvisa pamusoro peWAVES NODE REST API;
  • kodhi pane vuejs framework, iri muenzaniso wekushandisa raibhurari uye RIDE kodhi.

Ngatitsanangurei zvese zvakanyorwa.

Kufonera smart account yechikwereti nekukasira kubhadhara

Kufonera InvokeScript kunoda kubhadharwa kwemuripo kubva kuaccount yekutanga kutengeserana. Iri harisi dambudziko kana iwe uri kugadzira purojekiti ye blockchain geeks vane humwe huwandu hweWAVES tokens paaccount yavo, asi kana chigadzirwa chakanangana nekushandiswa neruzhinji, izvi zvinova dambudziko rakakura. Mushure mezvose, mushandisi anofanira kutarisira kutenga maWAVES tokens (kana imwe pfuma yakakodzera inogona kushandiswa kubhadhara kutengeserana), iyo inowedzera iyo yakatokura chipingamupinyi chekupinda muchirongwa. Tinogona kugovera asset kune vashandisi vanozokwanisa kubhadhara kutengeserana uye kutarisana nenjodzi yekushandiswa kwavo zvisizvo kana otomatiki masisitimu anogadzirwa kupomba kunze kwechimvuramabwe kubva kuhurongwa hwedu.

Zvingave zviri nyore kana zvaikwanisika kufonera InvokeScript "pamutengo weanogamuchira" (iyo smart account yakaisirwa script), uye mukana wakadaro, kunyangwe usiri nenzira iri pachena, uripo.

Kana mukati meInvokeScript ukaita ScriptTransfer kukero yemunhu anenge afona, iyo inobhadhara mari yematokeni akashandiswa, ipapo kufona kwakadaro kunozobudirira, kunyangwe panguva yekufona pakanga pasina zvinhu paakaundi yekufona. Izvi zvinogoneka nokuti cheki yezviratidzo zvakakwana inoitwa mushure mokunge kutengeserana kunonzi, pane kusati kwaitika, kuitira kuti zvibvumirano zviitwe nechikwereti, zvichienderana nekubhadhara nokukurumidza.

Script Transfer(i.caller, i.fee, unit)

Iyo kodhi pazasi inodzosera mari yakashandiswa uchishandisa smart account mari. Kuchengetedza kubva pakushandiswa zvisizvo kwechinhu ichi, zvinodikanwa kushandisa cheki iyo munhu anofona anoshandisa muripo muchinhu chinodiwa uye mukati memiganhu inonzwisisika:

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
}

Zvakare, kudzivirira kubva kune zvakaipa uye zvisina musoro kutambisa mari, otomatiki kufona dziviriro (PoW-captcha) inodiwa.

PoW-captcha

Iwo chaiwo pfungwa yehumbowo-hwe-basa captcha haisi nyowani uye yakatoitwa mumapurojekiti akasiyana, kusanganisira ayo anoitwa pahwaro hweWAVES. Pfungwa yacho ndeyekuti kuita chiito chinopedza zviwanikwa zvepurojekiti yedu, munhu anodaidzira anofanirawo kushandisa zviwanikwa zvake, izvo zvinoita kuti kurwisa kwekushomeka kudhure. Kuti zvive nyore uye nemutengo wakaderera kusimbiswa kuti mutumiri wekutengeserana agadzirisa dambudziko rePoW, pane cheki chekutengeserana id:

kana tora(toBase58String(i.transactionId), 3) != β€œ123” wobva wakanda(β€œumbowo hwebasa hwakundikana”) zvimwe

Kuti uite kutengeserana, munhu anofona anofanira kusarudza maparamendi akadaro kuti base58 kodhi (id) itange nenhamba 123, inoenderana neavhareji kune akati wandei emakumi emasekonzi enguva yeprocessor uye inowanzoita basa redu. Kana iri nyore kana yakaoma PoW inodiwa, saka basa rinogona kuchinjwa nyore nyore nenzira yakajeka.

Kubvunza makiyi edata uchishandisa template

Kuti ushandise blockchain sedhatabhesi, zvakakosha kuve ne API zvishandiso zvekubvunza iyo dhatabhesi sekiyi-val yakavakirwa pamatemplate. Yakadaro Toolkit yakaonekwa pakutanga kwaChikunguru 2019 muchimiro cheparameter ?mitambo pachikumbiro cheREST API /addresses/data?matches=regexp. Zvino, kana tichida kuwana kiyi inodarika imwe kubva pawebhu application uye kwete makiyi ese kamwechete, asi rimwe boka, saka tinogona kuita sarudzo nemazita akakosha. Semuenzaniso, mune iyi purojekiti, kubviswa kwekutengesa kunoiswa encoded se

withdraw_${userAddress}_${txid}

iyo inokutendera iwe kuti uwane runyorwa rwekutengeserana kwekubvisa mari kune chero yakapihwa kero uchishandisa template:

?matches=withdraw_${userAddress}_.*

Zvino ngatitarisei zvikamu zvemhinduro yakapedzwa.

Vuejs kodhi

Iyo kodhi idemo inoshanda padyo neiyo chaiyo purojekiti. Inoshandisa kupinda kuburikidza neWaves Keeper uye inoshanda neaffiliate.js raibhurari, iyo inonyoresa mushandisi muhurongwa, inobvunza data rekutengesa, uye zvakare inobvumidza iwe kubvisa mari yawakawana kuaccount yemushandisi.

Open source decentralized affiliate chirongwa paWaves blockchain

Kodhi yeRIDE

Inosanganisira rejista, mari uye kubvisa mabasa.

Basa rerejista rinonyoresa mushandisi pane system. Iine miviri miviri: referrer (referrer address) uye munyu parameter, iyo isingashandisi mukodhi yebasa, iyo inodiwa kusarudza id yekutengeserana (PoW-captcha basa).

Basa racho (semamwe mabasa kubva kupurojekiti iyi) rinoshandisa nzira yekufona kwechikwereti, mhedzisiro yebasa iri kupa mari kubhadharwa kwemubhadharo wekufona basa iri. Kutenda kune iyi mhinduro, mushandisi achangobva kugadzira chikwama anogona pakarepo kushanda nehurongwa uye haafanire kunetseka nekutenga kana kugamuchira asset inomubvumira kubhadhara mari yekutengeserana.

Mhedzisiro yebasa rekunyoresa marekodhi maviri:

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

Izvi zvinobvumira kumberi uye kudzosera kumashure kutsvaga (inotumira yemushandisi akapihwa uye zvese zvinotumirwa zvemushandisi akapihwa).

Basa rehomwe rinowedzera template yekuvandudza kushanda chaiko. Muchimiro chayo chakapihwa, inotora mari yese inofambiswa nekutengeserana uye yovagovera kumaakaundi evanotumira mazinga 1, 2, 3, ku "cashback" account uye "shanduko" account (zvese zvinosara kana zvagoverwa kune yapfuura. maakaundi anoenda pano).

Cashback inzira yekukurudzira mushandisi wekupedzisira kutora chikamu mukutumira system. Mushandisi anogona kubvisa chikamu chekomisheni yakabhadharwa nehurongwa nenzira ye "cashback" nenzira imwechete semibairo yekutumira.

Paunenge uchishandisa nzira yekutumira, basa rehomwe rinofanirwa kugadziridzwa uye kubatanidzwa mune huru logic ye smart account iyo system ichashanda. Semuenzaniso, kana mubairo wekutumira uchibhadharwa kubheti yakaitwa, saka basa rehomwe rinofanira kuvakwa mukati meiyo logic iyo bheti inoiswa (kana chimwe chiitiko chakanangwa chinoitwa icho mubairo unobhadharwa). Matanho matatu ekutumirwa mibairo akaiswa mune iri basa. Kana iwe uchida kuita akawanda kana mashoma mazinga, saka izvi zvakare zvinogadziriswa mukodhi. Mubairo wezana unotarwa neiyo level1-level3 zvinoramba; mukodhi inoverengerwa se huwandu * chiyero / 1000, ndiko kuti, kukosha kwe1 kunoenderana ne0,1% (izvi zvinogonawo kuchinjwa mukodhi).

Kufonera iyo basa kunoshandura chiyero cheakaundi uye zvakare inogadzira manyorerwo ezvibodzwa zvekutema fomu:

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

Ndiko kuti, nguva yekutengeserana ndiyo nguva yebhuroko iyo iripo. Izvi zvinovimbika pane kushandisa timestamp kubva pakutengeserana pachayo, kunyanya sezvo isingawanikwe kubva kune inofona.
Basa rekubvisa rinoratidza mibairo yese yakaunganidzwa kuaccount yemushandisi. Inogadzira zvinyorwa zvezvinangwa zvekutema matanda:

# withdraw log: withdraw_user_txid=amount:timestamp

Kushanda

Chikamu chikuru chekushandisa ndeye affiliate.js raibhurari, iri bhiriji pakati peakabatana data modhi uye WAVES NODE REST API. Inoshandisa nhanho yekubvisa yakazvimiririra yegadziriro (chero ipi inogona kushandiswa). Active mabasa (kunyoresa, kubvisa) fungidzira kuti Waves Keeper yakaiswa pane system; raibhurari pachayo haitarise izvi.

Inoshandisa nzira:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Kushanda kwemaitiro acho kuri pachena kubva kumazita; iyo paramita uye yakadzoserwa data inotsanangurwa mukodhi. Basa rerejista rinoda mamwe mazwi - rinotanga kutenderera kwekusarudza id yekutengeserana kuitira kuti itange pa123 - iyi ndiyo PoW-captcha inotsanangurwa pamusoro apa, inodzivirira kubva pakunyoreswa kwevanhu vakawanda. Basa racho rinowana kutengeserana neid inodiwa, uye wozoisaina kuburikidza neWaves Keeper.

DEX yakabatana chirongwa inowanikwa pa GitHub.com.

Source: www.habr.com

Voeg