Umthombo ovulekile wohlelo lobulungu olunwetshiwe ku-Waves blockchain

Uhlelo lokusebenzisana oluhlukaniselwe indawo olususelwe ku-Waves blockchain, olusetshenziswa njengengxenye yesibonelelo se-Waves Labs yithimba le-Bettex.

Okuthunyelwe akuxhasiwe! Uhlelo luwumthombo ovulekile, ukusetshenziswa nokusabalalisa kwalo kumahhala. Ukusetshenziswa kohlelo kukhuthaza ukuthuthukiswa kwezinhlelo zokusebenza ze-dApp futhi, ngokuvamile, kukhuthaza ukuhlukaniswa, okuzuzisa wonke umsebenzisi Wenethiwekhi.

Umthombo ovulekile wohlelo lobulungu olunwetshiwe ku-Waves blockchain

I-dApp eyethulwe yezinhlelo ezisebenzisanayo iyisifanekiso samaphrojekthi afaka inxusa njengengxenye yokusebenza kwawo. Ikhodi ingasetshenziswa njengesifanekiso sokukopishwa, njengomtapo wezincwadi, noma njengeqoqo lemibono yokuqaliswa kobuchwepheshe.

Ngokusebenza, lolu uhlelo olujwayelekile lokusebenzisana olusebenzisa ukubhaliswa nomuntu odlulisayo, iholo elinqwabelene lamazinga amaningi lokudluliselwa kanye nogqozi lokubhalisa ohlelweni (i-cashback). Uhlelo luyi-dApp "ehlanzekile", okungukuthi, uhlelo lokusebenza lwewebhu luxhumana ngqo ne-blockchain ngaphandle kwe-backend yayo, i-database, njll.

Kusetshenziswa amasu angasiza nakwamanye amaphrojekthi amaningi:

  • Ukushayela i-akhawunti ehlakaniphile ngesikweletu ngenkokhelo esheshayo (ngesikhathi socingo, awekho amathokheni ku-akhawunti ukukhokhela ucingo, kodwa avela lapho ngenxa yocingo).
  • I-PoW-captcha - isivikelo ekushayeni okuzenzakalelayo kwe-high-frequency automated imisebenzi ye-smart account - efana ne-captcha, kodwa ngobufakazi bokusetshenziswa kwezinsiza zekhompyutha.
  • Isicelo sokhiye bedatha ngesifanekiso.

Isicelo siqukethe:

  • Ikhodi ye-akhawunti ehlakaniphile ngolimi lwe-ride4dapps (oluthi, njengoba kuhleliwe, luhlanganiswe ne-akhawunti ehlakaniphile eyinhloko, okudingeka usebenzise ukusebenza kwayo okuhambisanayo);
  • js esonga esebenzisa isendlalelo sokususa phezu kwe-WAVES NODE REST API;
  • ikhodi kuhlaka lwe-vuejs, okuyisibonelo sokusebenzisa umtapo wezincwadi kanye nekhodi ye-RIDE.

Ake sichaze zonke izici ezisohlwini.

Ukushayela i-akhawunti ehlakaniphile esikweletini ngenkokhelo esheshayo

Ukushayela i-InvokeScript kudinga inkokhelo yemali evela ku-akhawunti eqala umsebenzi. Lokhu akuyona inkinga uma wenza iphrojekthi ye-blockchain geeks anenani elithile lamathokheni we-WAVES ku-akhawunti yawo, kodwa uma umkhiqizo uhloselwe uquqaba, lokhu kuba inkinga enkulu. Ngemuva kwakho konke, umsebenzisi kufanele anakekele ukuthengwa kwamathokheni we-WAVES (noma enye impahla efanelekile engasetshenziswa ukukhokhela ukuthengiselana), okwandisa umkhawulo omkhulu kakade wokungena kuphrojekthi. Singasabalalisa izimpahla kubasebenzisi abazovunyelwa ukukhokhela okwenziwayo futhi babhekane nobungozi bokusetshenziswa kabi lapho amasistimu azenzakalelayo edalwa ukupompa izimpahla eziwuketshezi ohlelweni lwethu.

Kungaba lula kakhulu uma kungenzeka ukubiza i-InvokeScript “ngezindleko zomamukeli” (i-akhawunti ehlakaniphile okufakwe kuyo umbhalo), futhi lokhu kungenzeka kukhona, nakuba kungenjalo ngendlela esobala.

Uma, ngaphakathi kwe-InvokeScript, kwenziwa i-ScriptTransfer ekhelini loshaya ucingo, elinxephezela amathokheni asetshenziswe enkokhelweni, ucingo olunjalo luzophumelela, ngisho noma bezingekho izimpahla ku-akhawunti yokushaya ngesikhathi sokushaya. Lokhu kungenzeka ngoba isheke lamathokheni anele senziwa ngemuva kokuthi ukuthengiselana kubizwe, hhayi ngaphambi kwayo, ukuze kube nokwenzeka ukwenza ukuthengiselana ngesikweletu, inqobo nje uma behlengwa ngokushesha.

I-Script Transfer(i.caller, i.fee, iyunithi)

Ikhodi engezansi ibuyisela imali esetshenzisiwe kusetshenziswa izimali ze-akhawunti ehlakaniphile. Ukuze uvikele ekusetshenzisweni kabi kwalesi sici, kufanele usebenzise isheke ukuthi ofonayo usebenzisa inkokhelo empahleni efanele futhi ngaphakathi kwemikhawulo enengqondo:

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
}

Futhi, ukuvikela ekumoshweni kwezimali okunonya nokungenangqondo, ukuvikela ocingweni oluzenzakalelayo (PoW-captcha) kuyadingeka.

I-PoW-captcha

Wona kanye umbono we-captcha yobufakazi bomsebenzi awumusha futhi usuvele usetshenziswe kumaphrojekthi ahlukahlukene, kufaka phakathi lawo asekelwe kumagagasi. Iphuzu lombono ukuthi ukuze senze isenzo esimosha izinsiza zephrojekthi yethu, ofonayo kufanele futhi asebenzise izinsiza zakhe, okwenza ukuhlasela kokuncipha kwensiza kubize kakhulu. Ukuze uthole ukuqinisekiswa okulula kakhulu nokushibhile ukuthi umthumeli womsebenzi uyixazulule inkinga ye-PoW, kukhona ukuhlola umazisi womsebenzi:

uma thatha(toBase58String(i.transactionId), 3) != “123” bese uphonsa(“ubufakazi bomsebenzi buhlulekile”) okunye

Ukuze wenze ukuthengiselana, ofonayo kufanele akhethe imingcele enjalo ukuze ikhodi ye-base58 (id) iqale ngezinombolo 123, ehambisana nesilinganiso samashumi ambalwa wemizuzwana yesikhathi sokuphrosesa futhi ngokuvamile inengqondo emsebenzini wethu. Uma i-PoW elula noma eyinkimbinkimbi iyadingeka, khona-ke umsebenzi ungashintshwa kalula ngendlela esobala.

Okhiye bedatha yombuzo ngesifanekiso

Ukuze usebenzise i-blockchain njengesizindalwazi, kubalulekile ukuba namathuluzi e-API okubuza kusizindalwazi njenge-key-val usebenzisa izifanekiso. Ikhithi yamathuluzi enjalo ivele ekuqaleni kukaJulayi 2019 njengepharamitha ?okufanayo ngesicelo se-REST API /addresses/data?matches=regexp. Manje, uma sidinga ukuthola okhiye abangaphezu kowodwa futhi hhayi bonke okhiye ngesikhathi esisodwa kuhlelo lokusebenza lewebhu, kodwa iqembu elithile kuphela, khona-ke singakwazi ukukhetha ngegama lokhiye. Isibonelo, kule phrojekthi, ukuhoxiswa kwemisebenzi kubhalwa ngekhodi njenge

withdraw_${userAddress}_${txid}

okukuvumela ukuthi uthole uhlu lwemisebenzi yokuhoxiswa kwemali yanoma yiliphi ikheli elinikeziwe usebenzisa isifanekiso:

?matches=withdraw_${userAddress}_.*

Manje ake sihlaziye izingxenye zesixazululo esiphelile.

ikhodi ye-vuejs

Ikhodi iyidemo esebenzayo, eduze nephrojekthi yangempela. Isebenzisa ukungena ngemvume nge-Waves Keeper futhi isebenze nomtapo wezincwadi we-affiliate.js, ngosizo lapho ibhalisa umsebenzisi ohlelweni, ibuza ngedatha yokwenziwayo, futhi ikuvumela ukuthi ukhiphe imali oyizuzile ku-akhawunti yomsebenzisi.

Umthombo ovulekile wohlelo lobulungu olunwetshiwe ku-Waves blockchain

Ikhodi ku-RIDE

Iqukethe irejista, isikhwama kanye nokuhoxisa imisebenzi.

Umsebenzi werejista ubhalisa umsebenzisi ohlelweni. Inamapharamitha amabili: ireferensi (ikheli lesithenjwa) kanye nepharamitha kasawoti engasetshenziswa kukhodi yokusebenza, edingekayo ukuze ukhethe i-id yokwenziwe (umsebenzi we-PoW-captcha).

Umsebenzi (njengayo yonke eminye imisebenzi kule phrojekthi) usebenzisa indlela yokuboleka, umphumela womsebenzi uwukuxhasa ngezimali inkokhelo yokubiza lo msebenzi. Ngenxa yalesi sixazululo, umsebenzisi osanda kudala isikhwama semali angasebenza ngokushesha nesistimu futhi akadingi ukudideka ngendaba yokuthola noma yokwamukela impahla evumela ukuthi akhokhe imali yokuthengiselana.

Umphumela womsebenzi wokubhalisa ungamarekhodi amabili:

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

Lokhu kuvumela ukubheka phambili nangemuva (umdluliseli walo msebenzisi nakho konke ukudluliselwa kwalo msebenzisi).

Umsebenzi wesikhwama uyisifanekiso esiningi sokuthuthukisa ukusebenza kwangempela. Efomini elethuliwe, kuthatha zonke izimali ezidluliselwe ngokuthengiselana bese zisabalalisa kuma-akhawunti e-referrer weleveli yoku-1, yesi-2, yesi-3, ku-akhawunti “yembuyiselo” kanye ne-akhawunti “yoshintsho” (yonke into esele ngesikhathi sokusatshalaliswa kuma-akhawunti adlule ifika lapha).

I-Cashback iyindlela yokukhuthaza umsebenzisi wokugcina ukuba abambe iqhaza ohlelweni lokudlulisela. Ingxenye yekhomishana ekhokhelwa uhlelo ngendlela "yembuyiselo yemali" ingahoxiswa ngumsebenzisi ngendlela efanayo nemiklomelo yokudluliselwa.

Uma usebenzisa uhlelo lokudlulisela, umsebenzi wesikhwama kufanele ulungiswe, wakhelwe kumqondo oyinhloko we-akhawunti ehlakaniphile lapho uhlelo luzosebenza khona. Isibonelo, uma umvuzo wokudluliselwa ukhokhelwe ngokubheja okwenziwe, khona-ke umsebenzi wesikhwama kufanele wakhelwe emcabangweni lapho kubhejwa khona (noma esinye isenzo esihlosiwe lapho umklomelo ukhokhelwa khona). Kunamazinga amathathu emiklomelo yokudluliselwa efakwe ikhodi kulesi sici. Uma ufuna ukwenza amaleveli amaningi noma amancane, lokhu kuzophinde kulungiswe kukhodi. Iphesenti lomvuzo lisethwa ama-constants angu-level1-level3, kukhodi ibalwa njenge inani * izinga / 1000, okungukuthi, inani 1 lihambisana no-0,1% (lokhu kungashintshwa kukhodi).

Ucingo lomsebenzi lushintsha ibhalansi ye-akhawunti futhi ludala amarekhodi ngenjongo yokungena efomini:

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

Okusho ukuthi, isikhathi sokuthengiselana yisikhathi sebhulokhi lapho itholakala khona. Lokhu kuthembeke kakhulu kunokusebenzisa isitembu sesikhathi esivela emsebenzini ngokwawo, ikakhulukazi njengoba singatholakali kokushayekayo.
Umsebenzi wokuhoxisa uhoxisa yonke imiklomelo enqwabelene ku-akhawunti yomsebenzisi. Idala okufakiwe ngezinjongo zokungena:

# withdraw log: withdraw_user_txid=amount:timestamp

Uhlelo lokusebenza

Ingxenye eyinhloko yohlelo lokusebenza umtapo wezincwadi we-affiliate.js, okuyibhuloho phakathi kwamamodeli edatha ehlobene ne-WAVES NODE REST API. Isebenzisa isendlalelo sokuthatha esizimele esizimele (noma isiphi singasetshenziswa). Imisebenzi esebenzayo (bhalisa, ihoxise) ithatha ukuthi i-Waves Keeper ifakwe ohlelweni, umtapo wezincwadi ngokwawo awukuhloli lokhu.

Isebenzisa izindlela:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Ukusebenza kwezindlela kusobala emagameni, imingcele kanye nedatha yokubuyisela kuchazwe kukhodi. Umsebenzi werejista udinga ukuphawula okwengeziwe - uqala umjikelezo wokukhetha i-id yokwenziwayo ukuze iqale ku-123 - lena i-PoW captcha echazwe ngenhla, evikela ukubhaliswa kwabantu abaningi. Umsebenzi uthola okwenziwayo nge-id edingekayo, bese uyisayina nge-Waves Keeper.

Uhlelo lwe-DEX lobulungu olutholakala ku- IGitHub.com.

Source: www.habr.com

Engeza amazwana