Isha furan barnaamijka xiriirinta baahsan ee Waves blockchain

Barnaamijka xiriirinta baahsan ee ku saleysan Waves blockchain, oo ay hirgelisay qayb ka mid ah deeqda Waves Labs ee kooxda Bettex.

Boostada lama kafaalo qaado! Barnaamijku waa il furan, isticmaalkiisa iyo qaybintiisaba waa bilaash. Isticmaalka barnaamijku wuxuu kiciyaa horumarinta codsiyada dApp iyo, guud ahaan, kor u qaadaya maamul-daadejinta, taas oo faa'iido u leh isticmaale kasta oo Shabakadda.

Isha furan barnaamijka xiriirinta baahsan ee Waves blockchain

dApp-ka la soo bandhigay ee barnaamijyada ku xidhani waa qaab-dhismeedka mashaariicda ay ku jiraan kuwa ku xidhan oo qayb ka ah hawlahooda. Koodhka waxa loo isticmaali karaa qaab-koobiyeed ahaan, maktabad ahaan, ama fikrado la xidhiidha hirgelinta farsamada.

Marka la eego shaqada, kani waa nidaam xidhiidhiye caadi ah kaas oo fulisa diwaan galinta soo gudbinaha, ururinta mushaharka heerar badan ee gudbinta iyo dhiirigelinta diiwaangelinta nidaamka (cashback). Nidaamku waa "daafic" dApp, taas oo ah, codsiga webka wuxuu si toos ah ula falgalaa blockchain iyada oo aan lahayn dhabarkiisa, database, iwm.

Farsamooyinka ayaa la isticmaalaa kuwaas oo sidoo kale waxtar u yeelan kara mashaariic kale oo badan:

  • Wicida akoon smart on credit oo leh lacag-bixin degdeg ah (waqtiga wicitaanka, ma jiraan calaamado akoontiga ah si loo bixiyo wicitaanka, laakiin waxay u muuqdaan halkaas natiijada wicitaanka).
  • PoW-captcha - kahortagga wicitaanka tooska ah ee otomaatiga ah ee hawlaha xisaabaadka smart - oo la mid ah captcha, laakiin iyada oo loo marayo caddaynta isticmaalka ilaha xisaabinta.
  • Codso furaha xogta qaab ahaan

Codsigu wuxuu ka kooban yahay:

  • Koodhka koontada smart ee luqadda ride4dapps (kaas oo, sida la qorsheeyay, lagu daray koontada ugu weyn ee smart, kaas oo aad u baahan tahay inaad hirgeliso shaqada xiriirka);
  • duubista js ee ka fulisa lakabka abstraction ee ka sarreeya WVES NODE REST API;
  • code ee qaabka vuejs, kaas oo tusaale u ah isticmaalka maktabadda iyo koodhka RIDE.

Aynu sharaxno dhammaan sifooyinka liiska ku jira.

U wicista akoon smart galay daynta oo isla markiiba dib loo bixiyo

Wicida InvokeScript waxay u baahan tahay bixinta khidmad koontada bilaabaysa wax kala iibsiga. Tani maahan wax dhib ah haddii aad mashruuc u samaynayso blockchain geeks kuwaas oo leh qadar go'an oo ah calaamadaha WAVES ee akoonkooda, laakiin haddii badeecada loogu talagalay dadka badan, tani waxay noqotaa dhibaato halis ah. Ka dib oo dhan, isticmaaluhu waa inuu ka qaybqaataa iibsashada calaamadaha WAVES (ama hanti kale oo ku habboon oo loo isticmaali karo in lagu bixiyo wax kala iibsiga), taas oo kordhinaysa marinka hore ee loogu talagalay gelitaanka mashruuca. Waxaan u qaybin karnaa hantida isticmaalayaasha kuwaas oo loo oggolaan doono inay bixiyaan wax kala iibsiga oo ay wajahaan khatarta isticmaalkooda xun marka nidaamyo toos ah la sameeyo si ay uga soo saaraan hantida dareeraha ah ee nidaamkayaga.

Waxay noqon doontaa mid aad u habboon haddii ay suurtagal tahay in la waco InvokeScript "kharashka qaataha" (koontada casriga ah ee qoraalka lagu rakibay), suurtogalnimadani way jirtaa, in kasta oo aan si cad loo arki karin.

Haddii, gudaha InvokeScript, ScriptTransfer lagu sameeyo ciwaanka soo wacaha, kaas oo magdhow u ah calaamadaha lagu kharash gareeyay khidmadda, markaa wicitaanka noocan oo kale ah ayaa guulaysan doona, xitaa haddii aysan jirin wax hanti ah oo ku yaala xisaabta wicitaanka wakhtiga wicitaanka. Tani waa suurtogal sababtoo ah jeegga calaamado ku filan ayaa la sameeyaa ka dib marka la yiraahdo macaamilka, oo aan ka horrayn, si ay suurtogal u tahay in la sameeyo macaamil ganacsi oo deyn ah, waase haddii isla markiiba la soo furto.

ScriptTransfer (i. wicile, i.fee, cutub)

Koodhka hoose waxa uu soo celinayaa khidmadii la kharash gareeyay isaga oo isticmaalaya lacagaha akoonnada smart. Si aad uga ilaaliso si xun u isticmaalka sifadan, waa inaad isticmaashaa jeeg in qofka soo wacay uu ku bixiyo kharashka hantida saxda ah iyo gudaha xadka macquulka ah:

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
}

Sidoo kale, si looga ilaaliyo qashinka xaasidnimada iyo micnaha la'aanta ah ee lacagaha, ka hortagga wicitaanka tooska ah (PoW-captcha) ayaa loo baahan yahay.

PoW-captcha

Fikradda caddaynta-shaqada captcha maaha mid cusub waxaana horayba loo fuliyay mashaariic kala duwan, oo ay ku jiraan kuwa ku salaysan hirarka. Ujeedada fikradda ayaa ah in si loo sameeyo ficil khasaarinaya kheyraadka mashruucayaga, qofka soo wacaya waa inuu sidoo kale ku bixiyaa hantidooda, taas oo ka dhigaysa weerar dhimista kheyraad qaali ah. Si aad u fudud oo qiimo jaban u ansixiso in diraha wax kala iibsiga uu xaliyay dhibaatada PoW, waxaa jira jeega aqoonsiga macaamil ganacsi:

haddii aad qaadato (toBase58String(i.transactionId), 3) != "123" ka dibna tuur ("caddaynta shaqada fashilantay") kale

Si loo sameeyo wax kala iibsi, soo wacuhu waa inuu doortaa cabbirradan oo kale si uu base58 code (id) ka bilaabo lambarada 123, taas oo u dhiganta celcelis ahaan dhowr tobanaan ilbiriqsi oo wakhtiga processor-ka guud ahaanna macquul u ah hawshayada. Haddii loo baahdo PoW fudud ama kakan, markaa hawsha si fudud ayaa loo beddeli karaa hab muuqda.

Waydii xogta furayaasha qaab qaabaysan

Si blockchain-ka loogu isticmaalo xog ururin ahaan, waxaa muhiim ah in la haysto agabka API ee lagu waydiinayo xogta kaydka fure-val iyadoo la isticmaalayo habyaallo. Qalabka noocan oo kale ah wuxuu u muuqday horraantii Luulyo 2019 sidii halbeeg ahaan ?kulanyo Codsiga REST API /addresses/data?matches=regexp. Hadda, haddii aan u baahanahay inaan helno wax ka badan hal fure oo aan dhammaan furayaasha hal mar ka helin codsiga shabakadda, laakiin kaliya koox, markaa waxaan ku dooran karnaa magaca furaha. Tusaale ahaan, mashruucan, wax kala beddelashada waxa loo habeeyey sida

withdraw_${userAddress}_${txid}

Kaas oo kuu ogolaanaya inaad hesho liiska wax kala iibsiga si aad lacag ugala baxdo ciwaan kasta oo la bixiyo adoo isticmaalaya qaabka:

?matches=withdraw_${userAddress}_.*

Hadda aynu falanqeyno qaybaha xalka la dhammeeyey.

vuejs code

Koodhku waa demo shaqaynaysa, oo u dhow mashruuc dhab ah. Waxay fulisaa gelitaanka iyada oo loo marayo Waves Keeper waxayna la shaqeysaa affiliate.js maktabadda, iyadoo la kaashanayo taas oo ay ku diiwaangeliso isticmaalaha nidaamka, weydiiyaan xogta macaamil ganacsi, iyo sidoo kale waxay kuu ogolaaneysaa inaad kala baxdo lacagaha la kasbaday xisaabta isticmaalaha.

Isha furan barnaamijka xiriirinta baahsan ee Waves blockchain

Koodhka RIDE

Waxay ka kooban tahay diiwaan-gelinta, maal-gelinta iyo ka-noqoshada hawlaha.

Hawsha diiwangelinta waxa ay diiwaan gelisaa isticmaalaha nidaamka. Waxay leedahay laba qaybood: tixraac (cinwaanka tixraaca) iyo qiyaasta milixda ee aan loo isticmaalin koodhka shaqada, kaas oo loo baahan yahay si loo doorto aqoonsiga macaamil ganacsi (PoW-captcha task).

Hawshu (sida inta kale ee hawlaha mashruucan) waxay isticmaashaa farsamada amaahda, natiijada shaqadu waa maalgelinta bixinta khidmadda loogu yeedho hawshan. Waad ku mahadsan tahay xalkan, isticmaalaha hadda abuuray boorsada jeebka ayaa isla markiiba la shaqeyn kara nidaamka oo uma baahna in lagu jahwareeriyo arrinta helitaanka ama helitaanka hanti u oggolaanaysa inuu bixiyo khidmadda wax kala iibsiga.

Natiijada hawsha diiwaangelinta waa laba diiwaan:

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

Tani waxay u ogolaanaysaa dib u eegis hore iyo gadaal ( tixraacaha isticmaale la bixiyay iyo dhammaan tixraacyada isticmaale la bixiyay).

Hawsha sanduuqa ayaa ka badan qaab-dhismeedka horumarinta shaqada dhabta ah. Foomka la soo bandhigay, waxay qaadataa dhammaan lacagaha lagu wareejiyay macaamilka waxayna u qaybisaa xisaabaadka gudbinta ee heerarka 1st, 2nd, 3rd, xisaabta "cashback" iyo xisaabta "beddelka" (wax kasta oo hadhay inta lagu jiro qaybinta xisaabaadka hore ayaa halkan imanaya).

ΠšΠ΅ΡˆΠ±ΡΠΊβ€Šβ€”β€ŠΡΡ‚ΠΎ срСдство стимулирования ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для участия Π² Ρ€Π΅Ρ„Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ систСмС. Π’Ρ‹ΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ комиссии систСмой Π² Π²ΠΈΠ΄Π΅ β€œΠΊΠ΅ΡˆΠ±ΡΠΊΠ°β€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΡΡ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ вознаграТдСния Π·Π° Ρ€Π΅Ρ„Π΅Ρ€Π°Π»ΠΎΠ².

Markaad isticmaalayso nidaamka gudbinta, shaqada sanduuqa waa in wax laga beddelaa, oo lagu dhisay caqliga ugu weyn ee xisaabta smart kaas oo nidaamku ku shaqeyn doono. Tusaale ahaan, haddii abaal-marin tixraac ah lagu bixiyo sharad la sameeyay, markaas shaqada sanduuqa waa in lagu dhisaa caqli-galnimada halka sharadka la sameeyay (ama ficil kale oo bartilmaameed ah ayaa la sameeyaa kaas oo abaalmarinta la bixiyo). Waxaa jira saddex heer oo abaal-marinno gudbin ah oo lagu calaamadeeyay sifadan. Haddii aad rabto inaad sameyso heerar badan ama ka yar, markaa tani sidoo kale waxaa lagu saxaa koodka. Boqolkiiba abaalgudka waxaa dejiya heerka 1-level3 joogta ah, koodhka waxaa loo xisaabiyaa sida qadar * heerka / 1000, taas oo ah, qiimaha 1 wuxuu u dhigmaa 0,1% (tani sidoo kale waa lagu bedeli karaa koodka).

Wicitaanku wuxuu beddelaa dheelitirka koontada wuxuuna sidoo kale abuuraa diiwaanno ujeeddada galitaanka foomka:

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

Taasi waa, wakhtiga wax kala iibsiga waa wakhtiga block kaas oo ku yaala. Tani way ka aamin badan tahay isticmaalka shaambada wakhtiga wax kala iibsiga lafteeda, gaar ahaan maadaama aan laga heli karin kan la wici karo.
Hawsha ka-noqoshada waxay ka saartaa dhammaan abaal-marinnada la ururiyey ee akoontiga isticmaalaha. U abuuraa gelinta ujeedooyinka qorista:

# withdraw log: withdraw_user_txid=amount:timestamp

Codsiga

Qaybta ugu muhiimsan ee arjiga waa maktabadda affiliate.js, taas oo ah buundada u dhaxaysa moodooyinka xogta ku xidhan iyo WAVES NODE REST API. Wuxuu fuliyaa lakabka abstraction madax-bannaan ee qaab-dhismeedka (mid kasta waa la isticmaali karaa). Hawlaha firfircoon (diwaangeli, ka noqoshada) ka qaado in Waves Keeper lagu rakibay nidaamka, maktabadda lafteedu ma hubiso tan.

Waxay fulisaa hababka:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Shaqeynta hababka waa iska caddahay magacyada, xuduudaha iyo xogta soo celinta ayaa lagu qeexay koodka. Shaqada diiwaanku waxay u baahan tahay faallooyin dheeraad ah - waxay bilaabataa wareegga xulashada id ee macaamilka si ay u bilaabato 123 - tani waa PoW captcha ee kor lagu sharaxay, kaas oo ka ilaaliya diiwaangelinta tirada badan. Shaqadu waxay heshaa macaamil ganacsi oo leh aqoonsiga loo baahan yahay, ka dibna waxay ku saxiixdaa Waves Keeper.

DEX barnaamijka affiliate waxaa laga heli karaa GitHub.com.

Source: www.habr.com

Add a comment