I-Decentralized, i-open source affiliate program kwi-Waves blockchain

Inkqubo yobudlelwane obunabileyo kwi-Waves blockchain, ephunyezwe njengenxalenye yesibonelelo seWaves Labs liqela leBettex.

Iposti ayithengisi! Inkqubo ngumthombo ovulekileyo, ukusetyenziswa kunye nokuhanjiswa kwayo simahla. Ukusetyenziswa kwenkqubo kuvuselela uphuhliso lwezicelo ze-dApp kwaye ngokubanzi ikhuthaza ukunatyiswa kwamagunya, okuxhamla wonke umsebenzisi we-Intanethi.

I-Decentralized, i-open source affiliate program kwi-Waves blockchain

I-dApp enikezelweyo yeenkqubo ezidibeneyo yithempleyithi yeeprojekthi ezibandakanya i-affiliate njengenxalenye yokusebenza kwazo. Ikhowudi ingasetyenziselwa njenge template yokukopisha, njengethala leencwadi, okanye njengeseti yeengcamango zokuphunyezwa kobugcisa.

Ngokubhekiselele ekusebenzeni, le yinkqubo yokubambisana rhoqo ephumeza ukubhaliswa nomntu othumelayo, i-multi-level accrual yemivuzo yokuthunyelwa kunye nenkuthazo yokubhalisa kwinkqubo (i-cashback). Inkqubo yi-dApp "ecocekileyo", oko kukuthi, isicelo sewebhu sisebenzisana ngqo ne-blockchain, ngaphandle kokuba ne-backend yayo, i-database, njl.

Ubuchule obusetyenzisiweyo obunokuba luncedo kwezinye iiprojekthi ezininzi:

  • Ukubiza i-akhawunti ye-smart kwityala kunye nokubuyisela ngokukhawuleza (ngexesha lokufowuna akukho amathokheni kwi-akhawunti yokuhlawula umnxeba, kodwa avela khona ngenxa yefowuni).
  • I-PoW-captcha - ukukhuselwa kwiifowuni ezizenzekelayo ezizenzekelayo kwimisebenzi ye-akhawunti ye-smart - ifana ne-captcha, kodwa ngobungqina bokusetyenziswa kwezixhobo zekhompyutha.
  • Umbuzo wamaqhosha edatha usebenzisa itemplate.

Isicelo siquka:

  • ikhowudi ye-akhawunti ehlakaniphile kulwimi lwe-ride4dapps (oluthi, njengoko lucwangcisiwe, ludityaniswe kwi-akhawunti ye-smart engundoqo apho umsebenzi wokubambisana kufuneka uphunyezwe);
  • js usonga osebenzisa inqanaba lokutsalwa ngaphezulu kwe WAVES NODE REST API;
  • ikhowudi kwisakhelo sevuejs, engumzekelo wokusebenzisa ilayibrari kunye nekhowudi RIDE.

Makhe sichaze zonke iimpawu ezidwelisiweyo.

Ukufowunela i-akhawunti ehlakaniphile ngetyala kunye nokuhlawula kwangoko

Ukufowunela i-InvokeScript kufuna ukuba kuhlawulwe umrhumo kwi-akhawunti eqalisa intengiselwano. Oku akuyona ingxaki ukuba wenza iprojekthi ye-blockchain geeks enenani elithile lama-WAVES amathokheni kwi-akhawunti yabo, kodwa ukuba imveliso ijoliswe ekusebenziseni uluntu jikelele, oku kuba yingxaki enkulu. Emva kwakho konke, umsebenzisi kufuneka anakekele ukuthenga amathokheni e-WAVES (okanye enye i-asethi efanelekileyo engasetyenziselwa ukuhlawula ukuthengiselana), okwandisa umqobo osele unzima wokungena kwiprojekthi. Singakwazi ukusasaza i-asethi kubasebenzisi abaya kukwazi ukuhlawulela ukuthengiselana kunye nokujongana nomngcipheko wokusetyenziswa kakubi xa iinkqubo ezizenzekelayo zenziwe ukupompa i-asethi engamanzi kwinkqubo yethu.

Kuya kuba luncedo kakhulu ukuba kunokwenzeka ukubiza i-InvokeScript "ngeendleko zomamkeli" (i-akhawunti ehlakaniphile apho iskripthi sifakwe kuyo), kwaye oko kunokwenzeka, nangona kungekhona ngendlela ecacileyo, ikhona.

Ukuba ngaphakathi kwe-InvokeScript wenza i-ScriptTransfer kwidilesi yomnxeba, ebuyekeza iithokheni zentlawulo ezichithiweyo, ngoko umnxeba onjalo uya kuphumelela, nokuba ngexesha lokufowuna bekungekho mpahla kwi-akhawunti yokufowuna. Oku kunokwenzeka ngenxa yokuba isheke yeethokheni ezaneleyo zenziwa emva kokuba i-transaction ibizwa, kunokuba ngaphambi kwayo, ukwenzela ukuba ukuthengiselana kunokwenziwa ngetyala, kuxhomekeke ekuhlawuleni ngokukhawuleza.

Ugqithiso lweSikripthi(i.umfowneli, i.fee, iyunithi)

Ikhowudi engezantsi ibuyisela imali echithiweyo usebenzisa imali ye-akhawunti ehlakaniphile. Ukukhusela ekusetyenzisweni kakubi kolu phawu, kuyimfuneko ukusebenzisa itshekhi ukuba umnxeba uchitha umrhumo kwi-asethi efunekayo kwaye ngaphakathi kwemida efanelekileyo:

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
}

Kwakhona, ukukhusela kwinkcitho ekhohlakeleyo kunye nengenangqiqo, ukukhuselwa kwefowuni ngokuzenzekelayo (PoW-captcha) kuyadingeka.

PoW-captcha

Ingcamango yobungqina bomsebenzi we-captcha ayintsha kwaye sele iphunyeziwe kwiiprojekthi ezahlukeneyo, kubandakanywa nezo ziphunyezwe ngesiseko se-WAVES. Ingcinga kukuba ukuze senze isenzo esitya izixhobo zethu zeprojekthi, umntu ofowunayo kufuneka achithe ezakhe izixhobo, nto leyo eyenza ukuba uhlaselo lokuncipha kobutyebi lubize kakhulu. Ukuqinisekiswa okulula kakhulu kunye nexabiso eliphantsi lokuba umthumeli wentengiselwano uyisombulule ingxaki ye-PoW, kukho ukukhangela i-id yentengiselwano:

ukuba thatha(toBase58String(i.transactionId), 3) != “123” uze uphose(“ubungqina bomsebenzi abuphumelelanga”) ngenye indlela

Ukuze wenze utshintshiselwano, umnxebi kufuneka akhethe ezo parameters ukwenzela ukuba ikhowudi yayo ye-base58 (id) iqale ngeenombolo ze-123, ezihambelana nomndilili weshumi lemizuzwana yexesha leprosesa kwaye ngokubanzi ifanelekile kumsebenzi wethu. Ukuba i-PoW elula okanye eyinkimbinkimbi iyadingeka, ngoko umsebenzi unokuguqulwa ngokulula ngendlela ecacileyo.

Umbuzo wamaqhosha edatha usebenzisa itemplate

Ukuze usebenzise i-blockchain njengesiseko sedatha, kubalulekile ukuba nezixhobo ze-API zokubuza i-database njenge-key-val esekelwe kwiitemplates. Isixhobo esinjalo sivele ekuqaleni kukaJulayi 2019 ngendlela yeparameter ?iimidlalo kwisicelo se-REST API /addresses/data?matches=regexp. Ngoku, ukuba sifuna ukufumana isitshixo esingaphezulu kwesinye kwisicelo sewebhu kwaye kungekhona zonke izitshixo ngexesha elinye, kodwa iqela elithile kuphela, ngoko singenza ukhetho ngegama elingundoqo. Ngokomzekelo, kule projekthi, ukuhoxiswa kweentengiselwano kufakwa ngekhowudi njenge

withdraw_${userAddress}_${txid}

ekuvumela ukuba ufumane uluhlu lwentengiselwano yokurhoxiswa kwemali kuyo nayiphi na idilesi enikiweyo usebenzisa itemplate:

?matches=withdraw_${userAddress}_.*

Ngoku makhe sijonge amacandelo esisombululo esigqityiweyo.

Vuejs ikhowudi

Ikhowudi yidemo yokusebenza ekufutshane neprojekthi yangempela. Isebenzisa ukungena nge-Waves Keeper kwaye isebenza nelayibrari ye-affiliate.js, apho ibhalisa umsebenzisi kwinkqubo, ibuza idatha yokuthengiselana, kwaye ikuvumela ukuba uhoxise imali efunyenweyo kwiakhawunti yomsebenzisi.

I-Decentralized, i-open source affiliate program kwi-Waves blockchain

Ikhowudi yokukhwela

Ibandakanya irejista, ingxowa-mali kunye nokurhoxiswa kwemisebenzi.

Umsebenzi werejista ubhalisa umsebenzisi kwisistim. Ineparameters ezimbini: i-referrer (idilesi ye-referrer) kunye neparameter yetyuwa, engasetyenziswanga kwikhowudi yokusebenza, efunekayo ukukhetha i-id yokuthengiselana (umsebenzi we-PoW-captcha).

Umsebenzi (njengeminye imisebenzi evela kule projekthi) usebenzisa ubuchule bokufowunela ityala, isiphumo somsebenzi kukuxhasa ngemali intlawulo yokufowunela lo msebenzi. Ngombulelo kwesi sisombululo, umsebenzisi osanda kudala i-wallet unokukhawuleza asebenze kunye nenkqubo kwaye angabi naxhala malunga nokuthenga okanye ukufumana i-asethi evumela ukuba ahlawule umrhumo wokuthengiselana.

Isiphumo somsebenzi wobhaliso ziirekhodi ezimbini:

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

Oku kuvumela ukukhangela phambili kunye nokubuyisela umva (umthumeli womsebenzisi onikiweyo kunye nazo zonke izidluliseli zomsebenzisi onikiweyo).

Umsebenzi wengxowa-mali ungaphezulu kwethempleyithi yokuphuhlisa ukusebenza kokwenyani. Kwifom enikezelweyo, ithatha zonke iimali ezidluliselwe yi-transaction kwaye ihanjiswe kwii-akhawunti zabathumeli bamanqanaba 1, 2, 3, kwi-akhawunti "ye-cashback" kunye ne-akhawunti "yokutshintsha" (yonke into eseleyo xa ihanjiswa ngaphambili iiakhawunti ziya apha).

I-Cashback yindlela yokukhuthaza umsebenzisi wokugqibela ukuba athathe inxaxheba kwinkqubo yokuthunyelwa. Umsebenzisi unokurhoxisa inxalenye yekhomishini ehlawulwe yinkqubo ngendlela ye "cashback" ngendlela efanayo nemivuzo yokuthunyelwa.

Xa usebenzisa inkqubo yokudluliselwa, umsebenzi wengxowa-mali kufuneka uguqulwe kwaye uhlanganiswe kwingqiqo ephambili ye-smart account apho inkqubo iya kusebenza khona. Umzekelo, ukuba umvuzo wokudluliselwa uhlawulelwe ubhejo olwenziwe, ngoko umsebenzi wengxowa-mali kufuneka wakhelwe kwingqiqo apho ubhejo lubekwe khona (okanye enye into ekujoliswe kuyo yenziwa apho umvuzo uhlawulwe). Amanqanaba amathathu embuyekezo yokudluliselwa afakwe kulo msebenzi. Ukuba ufuna ukwenza amanqanaba amaninzi okanye ambalwa, ngoko oku kulungiswa kwakhona kwikhowudi. Ipesenti yomvuzo imiselwe yi-level1-level3 constants kwikhowudi ibalwa njenge isixa * inqanaba / 1000, oko kukuthi, ixabiso le-1 lihambelana ne-0,1% (oku kunokutshintshwa kwakhona kwikhowudi).

Ukufowunela umsebenzi kutshintsha ibhalansi ye-akhawunti kwaye kudala amangenelo ngeenjongo zokungena kwifomu:

fund_address_txid = address:owner:inc:level:timestamp
Для получения timestamp (текущего времени) используется такая вот связка
func getTimestamp() = {
let block = extract(blockInfoByHeight(height))
toString(block.timestamp)
}

Oko kukuthi, ixesha lokuthengiselana lixesha lebhloko apho ikhoyo. Oku kuthembeke ngakumbi kunokusebenzisa isitampu sexesha ukusuka kwintengiselwano ngokwayo, ngakumbi njengoko ingafumaneki kwifowuni efowunelwayo.
Umsebenzi wokurhoxisa ubonisa yonke imivuzo eqokelelweyo kwiakhawunti yomsebenzisi. Yenza amangeniso ngeenjongo zokugawulwa kwemithi:

# withdraw log: withdraw_user_txid=amount:timestamp

Isicelo

Inxalenye ephambili yesicelo yilayibrari ye-affiliate.js, eyibhulorho phakathi kweemodeli zedatha edibeneyo kunye ne-WAVES NODE REST API. Uphumeza inqanaba lokuthatha elizimeleyo kwisakhelo (nayiphi na ingasetyenziswa). Imisebenzi esebenzayo (ibhalisa, ihoxise) ithatha ukuba i-Waves Keeper ifakwe kwinkqubo;

Ukuphumeza iindlela:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Ukusebenza kweendlela kubonakala kumagama; iiparamitha kunye nedatha ebuyisiwe ichazwe kwikhowudi. Umsebenzi werejista ufuna izimvo ezongezelelweyo - iqala umjikelo wokukhetha i-id yokuthengiselana ukuze iqale kwi-123 - le yi-PoW-captcha echazwe ngasentla, ekhusela ukubhaliswa kobuninzi. Umsebenzi ufumana intengiselwano kunye ne-id efunekayo, kwaye emva koko uyisayine nge-Waves Keeper.

Inkqubo yokunxibelelana ye-DEX iyafumaneka kwi GitHub.com.

umthombo: www.habr.com

Yongeza izimvo