Bude tushen tsarin haɗin gwiwar da aka raba akan Waves blockchain

Shirin haɗin gwiwar da aka raba bisa tushen toshewar Waves, wanda aka aiwatar a matsayin wani ɓangare na tallafin Waves Labs ta ƙungiyar Bettex.

Ba a ɗaukar nauyin aikawa! Shirin buɗaɗɗen tushe ne, amfaninsa da rarraba shi kyauta ne. Yin amfani da shirin yana haɓaka haɓaka aikace-aikacen dApp kuma, gabaɗaya, yana haɓaka ƙaddamarwa, wanda ke da fa'ida ga kowane mai amfani da hanyar sadarwa.

Bude tushen tsarin haɗin gwiwar da aka raba akan Waves blockchain

dApp da aka gabatar don shirye-shiryen haɗin gwiwa samfuri ne don ayyukan da suka haɗa da haɗin gwiwa a matsayin wani ɓangare na ayyukansu. Ana iya amfani da lambar azaman samfuri don kwafi, azaman ɗakin karatu, ko azaman tsarin ra'ayoyi don aiwatar da fasaha.

Dangane da ayyuka, wannan tsarin haɗin gwiwa ne na yau da kullun wanda ke aiwatar da rajista tare da mai ba da labari, tara kuɗi da yawa na ramuwa don masu ba da shawara da kuzari don yin rajista a cikin tsarin (cashback). Tsarin dApp ne mai “tsarki”, wato aikace-aikacen gidan yanar gizo yana hulɗa kai tsaye tare da blockchain ba tare da nasa bayanan baya ba, bayanai, da sauransu.

Ana amfani da dabarun da za su iya zama masu amfani a wasu ayyuka da yawa:

  • Kira mai wayo a kan bashi tare da biya nan da nan (a lokacin kiran, babu alamun a cikin asusun don biyan kuɗin kiran, amma sun bayyana a can sakamakon kiran).
  • PoW-captcha - kariya daga babban mita mai sarrafa kansa na ayyukan asusu mai wayo - kama da captcha, amma ta hanyar shaidar amfani da albarkatun kwamfuta.
  • Neman maɓallan bayanai ta samfuri.

Aikace-aikacen ya ƙunshi:

  • lambar asusu mai wayo a cikin yaren ride4dapps (wanda, kamar yadda aka tsara, an haɗa shi cikin babban asusu mai wayo, wanda kuke buƙatar aiwatar da ayyukan haɗin gwiwa);
  • js wrapper wanda ke aiwatar da wani Layer na abstraction akan WAVES NODE REST API;
  • code a kan tsarin vuejs, wanda shine misalin amfani da ɗakin karatu da lambar RIDE.

Bari mu bayyana duk abubuwan da aka lissafa.

Kira mai wayo a cikin bashi tare da biya nan da nan

Kira InvokeScript yana buƙatar biyan kuɗi daga asusun da ya fara ciniki. Wannan ba matsala ba ne idan kuna yin aikin don blockchain geeks waɗanda ke da adadin adadin WAVES tokens akan asusun su, amma idan samfurin yana nufin talakawa, wannan ya zama babbar matsala. Bayan haka, mai amfani dole ne ya halarci sayan alamun WAVES (ko wani kadari mai dacewa wanda za'a iya amfani dashi don biyan ma'amaloli), wanda ya kara yawan ƙofa mai yawa don shigar da aikin. Za mu iya rarraba kadarori ga masu amfani waɗanda za a ba su izinin biyan kuɗi don ma'amaloli kuma su fuskanci haɗarin rashin amfani da su lokacin da aka ƙirƙiri tsarin sarrafa kansa don fitar da kadarorin ruwa daga tsarin mu.

Zai zama dacewa sosai idan zai yiwu a kira InvokeScript "a kuɗin mai karɓa" (asusu mai wayo wanda aka shigar da rubutun), kuma wannan yuwuwar ta wanzu, ko da yake ba ta wata hanya ba.

Idan, a cikin InvokeScript, an yi ScriptTransfer zuwa adireshin mai kira, wanda ke biyan alamun da aka kashe akan kuɗin, to irin wannan kiran zai yi nasara, koda kuwa babu dukiya akan asusun kira a lokacin kiran. Wannan yana yiwuwa ne saboda ana yin cak ɗin isassun alamomi ne bayan an kira ciniki, ba a gabansa ba, ta yadda za a iya yin ciniki a kan kiredit, in dai nan da nan an fanshi su.

ScriptTransfer (i.caller, i.fee, naúrar)

Lambar da ke ƙasa tana mayar da kuɗin da aka kashe ta amfani da kuɗin asusu mai wayo. Don karewa daga rashin amfani da wannan fasalin, dole ne ku yi amfani da duban cewa mai kiran ya kashe kuɗin a cikin kadarorin da ya dace kuma cikin iyakoki masu ma'ana:

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
}

Hakanan, don kariya daga ɓarna da ɓarna na kuɗi, ana buƙatar kariya daga kiran atomatik (PoW-captcha).

PoW-captcha

Mahimmin ra'ayin captcha-na aikin ba sabon abu ba ne kuma an riga an aiwatar da shi a cikin ayyuka daban-daban, gami da waɗanda suka dogara da WAVES. Manufar manufar ita ce, don aiwatar da wani aikin da zai ɓata albarkatun aikinmu, mai kira dole ne ya kashe nasu albarkatun, wanda ya sa harin rage albarkatun ya yi tsada sosai. Don tabbatarwa mai sauƙi da ƙarancin farashi wanda mai aikawa na ma'amala ya warware matsalar PoW, akwai rajistan id na ma'amala:

idan dauka(toBase58String(i.transactionId), 3) != "123" sai a jefa("tabbacin aikin kasa")

Don gudanar da ma'amala, mai kira dole ne ya zaɓi irin waɗannan sigogi don lambar tushe58 (id) ta fara da lambobi 123, wanda yayi daidai da matsakaicin kamar dubun daƙiƙa na lokacin sarrafawa kuma gabaɗaya ya dace da aikinmu. Idan ana buƙatar PoW mafi sauƙi ko mafi mahimmanci, to, aikin zai iya canzawa cikin sauƙi a hanya mai mahimmanci.

Maɓallan bayanan tambaya ta samfuri

Domin yin amfani da blockchain azaman bayanan bayanai, yana da mahimmanci a sami kayan aikin API don neman bayanai azaman maɓalli ta amfani da samfuri. Irin wannan kayan aikin ya bayyana a farkon Yuli 2019 azaman siga ?matches a buƙatar API na REST /adireshi/data?matches=regexp. Yanzu, idan muna buƙatar samun maɓalli fiye da ɗaya kuma ba duka maɓallan lokaci ɗaya daga aikace-aikacen gidan yanar gizo ba, amma kawai wasu rukuni, to muna iya yin zaɓi da sunan maɓallin. Misali, a cikin wannan aikin, ana sanya ma'amalar cirewa azaman

withdraw_${userAddress}_${txid}

wanda ke ba ku damar samun jerin ma'amaloli don cire kuɗi don kowane adireshin da aka bayar ta amfani da samfuri:

?matches=withdraw_${userAddress}_.*

Yanzu bari mu bincika abubuwan da aka gama bayani.

vujs code

Lambar demo ce mai aiki, kusa da aikin gaske. Yana aiwatar da shiga ta hanyar Waves Keeper kuma yana aiki tare da ɗakin karatu na affiliate.js, tare da taimakon wanda yake yin rajistar mai amfani a cikin tsarin, yana tambayar bayanan ma'amala, kuma yana ba ku damar cire kuɗin da aka samu zuwa asusun mai amfani.

Bude tushen tsarin haɗin gwiwar da aka raba akan Waves blockchain

Code akan RIDE

Ya ƙunshi rajista, kuɗi da ayyukan janyewa.

Aikin rajista yana yin rijistar mai amfani a cikin tsarin. Yana da sigogi guda biyu: mai magana (adireshin mai magana) da ma'aunin gishiri da ba a yi amfani da shi ba a cikin lambar aiki, wanda ake buƙata don zaɓar id ɗin ciniki (PoW-captcha task).

Aikin (kamar sauran ayyuka a cikin wannan aikin) yana amfani da dabarar rance, sakamakon aikin yana ba da kuɗin biyan kuɗi don kiran wannan aikin. Godiya ga wannan bayani, mai amfani wanda kawai ya ƙirƙiri walat zai iya aiki nan da nan tare da tsarin kuma baya buƙatar yin mamaki game da batun samun ko karɓar kadari wanda zai ba shi damar biyan kuɗin ciniki.

Sakamakon aikin rajistar bayanai biyu ne:

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

Wannan yana ba da damar duba gaba da baya (mai nuni ga mai amfani da aka bayar da duk masu amfani da aka bayar).

Ayyukan asusun ya fi samfuri don haɓaka ayyuka na gaske. A cikin fom ɗin da aka gabatar, yana ɗaukar duk kuɗin da aka canjawa wuri ta hanyar ma'amala da rarraba su zuwa asusun mai ba da izini na matakan 1st, 2nd, 3rd, zuwa asusun "cashback" da asusun "canji" (duk abin da ya rage yayin rarraba zuwa baya. accounts yana zuwa nan).

Cashback hanya ce ta ƙwarin gwiwar mai amfani na ƙarshe don shiga cikin tsarin ƙaddamarwa. Sashin hukumar da tsarin ya biya ta hanyar "cashback" mai amfani zai iya janye shi ta hanyar da aka ba da kyauta ga masu amfani.

Lokacin amfani da tsarin ƙaddamarwa, aikin asusun ya kamata a gyaggyara, a gina shi a cikin babban ma'auni na asusun mai wayo wanda tsarin zai yi aiki a kai. Misali, idan an biya tukuicin da aka yi wa fare, to ya kamata a gina aikin asusu a cikin mahangar inda aka yi fare (ko kuma wani aikin da aka yi niyya wanda aka biya ladan). Akwai matakan lada uku da aka sanya su cikin wannan fasalin. Idan kuna son yin ƙarin ko žasa matakan, to wannan kuma an gyara shi a cikin lambar. An saita kashi na lada ta madaidaitan matakin 1-level3, a cikin lambar an ƙididdige shi azaman adadin * matakin / 1000, wato, ƙimar 1 yayi daidai da 0,1% (wannan kuma ana iya canza shi a cikin lambar).

Kiran aikin yana canza ma'auni na asusun kuma yana ƙirƙira bayanai don manufar shigar da fom:

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

Wato lokacin ciniki shine lokacin tubalin da yake cikinsa. Wannan ya fi dogara fiye da yin amfani da tambarin lokaci daga ma'amala da kanta, musamman tun da ba ya samuwa daga abin da ake kira.
Aikin janyewa yana cire duk tarin ladan zuwa asusun mai amfani. Yana ƙirƙira shigarwar don dalilan shiga:

# withdraw log: withdraw_user_txid=amount:timestamp

Aikace-aikacen

Babban ɓangaren aikace-aikacen shine ɗakin karatu na affiliate.js, wanda shine gada tsakanin ƙirar bayanan alaƙa da WAVES NODE REST API. Yana aiwatar da shimfidar ƙayyadadden tsari mai zaman kansa (kowa za a iya amfani da shi). Ayyuka masu aiki (rijista, janyewa) ɗauka cewa an shigar da Waves Keeper a cikin tsarin, ɗakin karatu da kansa ba ya duba wannan.

Aiwatar da hanyoyin:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Ayyukan hanyoyin a bayyane suke daga sunayen, sigogi da bayanan dawowa an bayyana su a cikin lambar. Aikin rajista yana buƙatar ƙarin sharhi - yana fara zagayowar zaɓen id na ma'amala don farawa a 123 - wannan shine PoW captcha da aka bayyana a sama, wanda ke ba da kariya ga yawan rajista. Aikin yana samun ma'amala tare da id ɗin da ake buƙata, sannan sanya hannu ta hanyar Waves Keeper.

Ana samun shirin haɗin gwiwa na DEX a GitHub.com.

source: www.habr.com

Add a comment