Open source decentralized Affiliate program pa Waves blockchain

A decentralized Othandizana pulogalamu zochokera Mafunde blockchain, akuyendera monga gawo la thandizo la Waves Labs ndi gulu Bettex.

Zolemba sizimathandizidwa! Pulogalamuyi ndi gwero lotseguka, kugwiritsidwa ntchito kwake ndi kugawa kuli kwaulere. Kugwiritsiridwa ntchito kwa pulogalamuyi kumalimbikitsa chitukuko cha mapulogalamu a dApp ndipo, makamaka, kumalimbikitsa kugawikana, zomwe zimakhala zopindulitsa kwa aliyense wogwiritsa ntchito Network.

Open source decentralized Affiliate program pa Waves blockchain

dApp yoperekedwa yamapulogalamu ogwirizana ndi template yama projekiti omwe amaphatikiza othandizira monga gawo la magwiridwe antchito awo. Khodiyo imatha kugwiritsidwa ntchito ngati template yokopera, ngati laibulale, kapena ngati malingaliro okhazikitsa luso.

Pankhani ya magwiridwe antchito, iyi ndi njira wamba yogwirizana yomwe imakhazikitsa kulembetsa ndi wotumiza, kuchulukitsa kwamalipiro ambiri potumiza anthu ndikulimbikitsa kulembetsa mudongosolo (cashback). Dongosolo ndi dApp "yoyera", ndiko kuti, pulogalamu yapaintaneti imalumikizana mwachindunji ndi blockchain popanda backend yake, database, etc.

Njira zimagwiritsidwa ntchito zomwe zitha kukhala zothandiza pamapulojekiti ena ambiri:

  • Kuitana akaunti yanzeru pa ngongole ndi kubweza mwamsanga (panthawi ya kuyitana, palibe zizindikiro pa akaunti yolipira kuyitana, koma zikuwoneka pamenepo chifukwa cha kuyitana).
  • PoW-captcha - chitetezo ku kuyitana kwachangu kwanthawi yayitali kwa magwiridwe antchito aakaunti anzeru - ofanana ndi captcha, koma kudzera mu umboni wogwiritsa ntchito zida zamakompyuta.
  • Pemphani makiyi a data ndi template.

Ntchitoyi ili ndi:

  • khodi ya akaunti yanzeru m'chinenero cha ride4dapps (chomwe, monga momwe anakonzera, chimaphatikizidwa mu akaunti yaikulu yanzeru, yomwe muyenera kugwiritsira ntchito ntchito yothandizira);
  • js wrapper yomwe imagwiritsa ntchito wosanjikiza pamwamba pa WAVES NODE REST API;
  • code pa chimango cha vuejs, chomwe ndi chitsanzo chogwiritsa ntchito laibulale ndi RIDE code.

Tiyeni tifotokoze zonse zomwe zalembedwa.

Kuyitanira akaunti yanzeru mungongole ndikubweza nthawi yomweyo

Kuyimba InvokeScript kumafuna kulipira chindapusa kuchokera ku akaunti yoyambitsa bizinesiyo. Izi siziri vuto ngati mukuchita pulojekiti ya blockchain geeks omwe ali ndi zizindikiro za WAVES pa akaunti yawo, koma ngati mankhwalawa akuyang'ana anthu ambiri, izi zimakhala vuto lalikulu. Kupatula apo, wogwiritsa ntchitoyo ayenera kuyang'anira kugula ma tokeni a WAVES (kapena chinthu china choyenera chomwe chingagwiritsidwe ntchito kulipirira zochitika), zomwe zimawonjezera mwayi wolowa nawo ntchitoyo. Titha kugawira katundu kwa ogwiritsa ntchito omwe adzaloledwe kulipira ndalama zogulira ndikukumana ndi chiopsezo chogwiritsa ntchito molakwika pomwe makina odzipangira okha apangidwa kuti azipopa zinthu zamadzimadzi kuchokera m'dongosolo lathu.

Zingakhale zabwino kwambiri ngati zingatheke kuyimbira InvokeScript "ndi ndalama za wolandira" (akaunti yanzeru yomwe script imayikidwa), ndipo izi zilipo, ngakhale kuti siziri zoonekeratu.

Ngati, mkati mwa InvokeScript, ScriptTransfer yapangidwa ku adiresi ya woyimbayo, zomwe zimalipira zizindikiro zomwe zimagwiritsidwa ntchito pa malipiro, ndiye kuti kuyimba koteroko kudzapambana, ngakhale panalibe katundu pa akaunti yoyimbira pa nthawi yoyimba. Izi ndizotheka chifukwa cheke cha zizindikiro zokwanira chimapangidwa pambuyo poyitanidwa, osati pamaso pake, kotero kuti n'zotheka kuchita malonda pa ngongole, pokhapokha atawomboledwa nthawi yomweyo.

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

Khodi ili m'munsiyi imabwezera ndalama zomwe zidagwiritsidwa ntchito pogwiritsa ntchito ndalama za akaunti yanzeru. Kuti muteteze ku kugwiritsiridwa ntchito molakwa kwa mbaliyi, muyenera kugwiritsa ntchito cheke kuti woimbirayo awonongera chindapusa pa chinthu choyenera komanso mkati mwa malire oyenera:

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
}

Komanso, kuti muteteze kuwononga ndalama moyipa komanso mopanda nzeru, chitetezo ku kuyimba foni (PoW-captcha) ndikofunikira.

PoW-captcha

Lingaliro lenileni la captcha-proof-of-work silatsopano ndipo lakhazikitsidwa kale m'ma projekiti osiyanasiyana, kuphatikiza omwe amachokera pa WAVES. Mfundo ya lingaliro ndilakuti kuti tichite zomwe zimawononga chuma cha polojekiti yathu, woyimbirayo akuyeneranso kugwiritsa ntchito chuma chake, zomwe zimapangitsa kuti kuwonongeka kwazinthu kuwononge ndalama zambiri. Pakutsimikizira kosavuta komanso kotsika mtengo kuti wotumizayo wathana ndi vuto la PoW, pali cheke cha id:

ngati take(toBase58String(i.transactionId), 3) != β€œ123” ndiye ponya(β€œumboni wa ntchito walephera”) china

Kuti achitepo kanthu, woyimbirayo ayenera kusankha magawo oterowo kuti maziko ake58 (id) ayambe ndi manambala 123, omwe amafanana ndi pafupifupi makumi angapo a masekondi a purosesa ndipo nthawi zambiri amakhala oyenera pantchito yathu. Ngati PoW yosavuta kapena yovuta ikufunika, ndiye kuti ntchitoyi ikhoza kusinthidwa mosavuta m'njira yoonekeratu.

Funso makiyi a data ndi template

Kuti mugwiritse ntchito blockchain ngati nkhokwe, ndikofunikira kukhala ndi zida za API zofunsira nkhokwe ngati chinsinsi chogwiritsa ntchito ma templates. Zida zotere zidawoneka koyambirira kwa Julayi 2019 ngati gawo ?zofanana pa pempho la REST API /addresses/data?matches=regexp. Tsopano, ngati tikufuna kupeza makiyi oposa limodzi osati makiyi onse mwakamodzi kuchokera pa intaneti, koma gulu lina, ndiye kuti tikhoza kusankha ndi dzina lachinsinsi. Mwachitsanzo, mu pulojekiti iyi, zotulukapo zochotsedwa zimasungidwa ngati

withdraw_${userAddress}_${txid}

zomwe zimakulolani kuti mupeze mndandanda wazomwe zachitika pochotsa ndalama pa adilesi iliyonse yomwe mwapatsidwa pogwiritsa ntchito template:

?matches=withdraw_${userAddress}_.*

Tsopano tiyeni tipende zigawo za yankho lomalizidwa.

vuejs kodi

Khodiyo ndi chiwonetsero chogwira ntchito, pafupi ndi polojekiti yeniyeni. Imalowetsa kulowa kudzera pa Waves Keeper ndikugwira ntchito ndi laibulale ya affiliate.js, mothandizidwa ndi yomwe imalembetsa wogwiritsa ntchito mudongosolo, imafunsa zomwe zachitika, komanso imakupatsani mwayi wochotsa ndalama zomwe mwapeza ku akaunti ya wogwiritsa ntchito.

Open source decentralized Affiliate program pa Waves blockchain

Kodi pa RIDE

Zimapangidwa ndi kaundula, thumba ndi kuchotsa ntchito.

Ntchito yolembetsa imalembetsa wogwiritsa ntchito mudongosolo. Ili ndi magawo awiri: referer (adiresi ya referr) ndi mchere wosagwiritsidwa ntchito mu code code, yomwe imafunika kusankha id transaction (PoW-captcha task).

Ntchitoyi (monga ntchito zina zonse mu polojekitiyi) imagwiritsa ntchito njira yobwereka, zotsatira za ntchitoyi ndikulipira malipiro a kuyitanitsa ntchitoyi. Chifukwa cha yankho ili, wogwiritsa ntchito yemwe wangopanga chikwama amatha kugwira ntchito nthawi yomweyo ndi dongosololi ndipo safunikira kudabwitsidwa ndi nkhani yopeza kapena kulandira chuma chomwe chimamulola kulipira ndalama zogulira.

Zotsatira za ntchito yolembetsa ndi zolemba ziwiri:

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

Izi zimalola kuyang'ana kutsogolo ndi kumbuyo (wotumizira wogwiritsa ntchito ndi zotumiza zonse za wosutayu).

Ntchito ya thumba ndi zambiri za template yopangira magwiridwe antchito enieni. Mu fomu yomwe yaperekedwa, zimatengera ndalama zonse zomwe zimasamutsidwa ndikugulitsa ndikuzigawa ku maakaunti otumizira a magawo 1, 2, 3, ku akaunti ya "cashback" ndi akaunti ya "kusintha" (chilichonse chomwe chimatsalira pakugawira maakaunti am'mbuyomu chikufika pano).

Cashback ndi njira yolimbikitsira wogwiritsa ntchito kuti atenge nawo gawo munjira yotumizira anthu. Gawo la komiti yolipidwa ndi dongosololi mu mawonekedwe a "cashback" likhoza kuchotsedwa ndi wogwiritsa ntchito mofanana ndi mphotho zotumizira.

Pogwiritsa ntchito njira yotumizira, ntchito ya thumba iyenera kusinthidwa, yomangidwa mumalingaliro akuluakulu a akaunti yanzeru yomwe dongosololi lidzagwire ntchito. Mwachitsanzo, ngati mphotho yotumizira ilipidwa pakubetcha komwe kwachitika, ndiye kuti thumba la ndalama liyenera kukhazikitsidwa m'lingaliro lomwe kubetcha kumapangidwira (kapena chandamale china chomwe mphothoyo imalipira). Pali magawo atatu a mphotho zotumizira zomwe zalembedwa mugawoli. Ngati mukufuna kupanga milingo yochulukirapo kapena yocheperako, ndiye kuti izi zimakonzedwanso mu code. Peresenti ya mphotho imayikidwa ndi zosintha za level1-level3, mu code yomwe imawerengedwa ngati kuchuluka * mlingo / 1000, ndiko kuti, mtengo wa 1 umagwirizana ndi 0,1% (izi zikhoza kusinthidwanso mu code).

Kuyimba kwa ntchito kumasintha kuchuluka kwa akauntiyo ndikupanganso zolemba kuti mulowetse fomu:

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

Ndiko kuti, nthawi ya malonda ndi nthawi ya chipika chomwe chilipo. Izi ndizodalirika kuposa kugwiritsa ntchito chidindo chanthawi kuchokera pakuchitapo komweko, makamaka popeza sichipezeka kuchokera kwa oyitanidwa.
Kuchotsa ntchito kumachotsa mphotho zonse zomwe zasonkhanitsidwa ku akaunti ya wogwiritsa ntchito. Amapanga zolembera pofuna kudula mitengo:

# withdraw log: withdraw_user_txid=amount:timestamp

Ntchito

Gawo lalikulu la pulogalamuyi ndi laibulale ya affiliate.js, yomwe ndi mlatho pakati pa zitsanzo za data yogwirizana ndi WAVES NODE REST API. Imakhazikitsa wosanjikiza wodziyimira pawokha wa chimango (chilichonse chitha kugwiritsidwa ntchito). Ntchito zogwira ntchito (kulembetsa, kuchotsa) kuganiza kuti Waves Keeper waikidwa mu dongosolo, laibulale yokha sichiyang'ana izi.

Kukhazikitsa njira:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Kugwira ntchito kwa njirazo ndi zoonekeratu kuchokera ku mayina, magawo ndi deta yobwereranso ikufotokozedwa mu code. Ntchito yolembera imafuna ndemanga zowonjezera - imayamba kachitidwe kasankhidwe ka id kotero kuti imayamba pa 123 - iyi ndi PoW captcha yomwe tafotokoza pamwambapa, yomwe imateteza kulembetsa anthu ambiri. Ntchitoyi imapeza kugulitsa ndi id yofunikira, kenako ndikusayina kudzera pa Waves Keeper.

Pulogalamu ya DEX yomwe ilipo GitHub.com.

Source: www.habr.com

Kuwonjezera ndemanga