Prògram ceangailte dì-mheadhanaichte le còd fosgailte air blockchain Waves

Prògram ceangailte dì-mheadhanaichte stèidhichte air blockchain Waves, air a chuir an gnìomh mar phàirt de thabhartas Waves Labs le sgioba Bettex.

Chan eil am post a’ faighinn taic! Tha am prògram stòr fosgailte, tha cleachdadh agus cuairteachadh an-asgaidh. Bidh cleachdadh a’ phrògraim a’ brosnachadh leasachadh thagraidhean dApp agus, san fharsaingeachd, a’ brosnachadh dì-mheadhanachadh, a tha buannachdail dha gach neach-cleachdaidh den Lìonra.

Prògram ceangailte dì-mheadhanaichte le còd fosgailte air blockchain Waves

Tha an dApp a tha air a thaisbeanadh airson prògraman ceangailte na theamplaid airson pròiseactan a tha a’ toirt a-steach cleamhnaichean mar phàirt den ghnìomhachd aca. Faodar an còd a chleachdadh mar theamplaid airson a chopaigeadh, mar leabharlann, no mar sheata de bheachdan airson buileachadh teignigeach.

A thaobh comas-gnìomh, is e siostam ceangailte àbhaisteach a tha seo a bhios a’ cur an gnìomh clàradh le neach-iomraidh, trusadh ioma-ìre de thuarastal airson iomraidhean agus brosnachadh airson clàradh san t-siostam (airgead air ais). Is e dApp “fìor-ghlan” a th’ anns an t-siostam, is e sin, bidh an tagradh lìn ag eadar-obrachadh gu dìreach leis an blockchain às aonais a backend fhèin, stòr-dàta, msaa.

Bithear a’ cleachdadh dhòighean a dh’ fhaodadh a bhith feumail ann am mòran phròiseactan eile:

  • A ’gairm cunntas snasail air creideas le ath-phàigheadh ​​​​sa bhad (aig àm a’ ghairm, chan eil comharran air a ’chunntas gus pàigheadh ​​​​airson a’ ghairm, ach tha iad a ’nochdadh an sin mar thoradh air a’ ghairm).
  • PoW-captcha - dìon an aghaidh gairm fèin-ghluasadach àrd-tricead de ghnìomhan cunntais snasail - coltach ri captcha, ach tro dhearbhadh air cleachdadh ghoireasan coimpiutaireachd.
  • Iarrtas gu iuchraichean dàta le teamplaid.

Tha an tagradh air a dhèanamh suas de:

  • còd cunntais snasail anns a’ chànan ride4dapps (a tha, mar a bha dùil, air a chur còmhla ris a’ phrìomh chunntas snasail, airson am feum thu an gnìomh ceangailte a bhuileachadh);
  • js wrapper a chuireas an sàs còmhdach tarraing thairis air an WAVES NODE REST API;
  • còd air frèam vuejs, a tha na eisimpleir de bhith a’ cleachdadh an leabharlainn agus còd RIDE.

Bheir sinn cunntas air na feartan clàraichte uile.

A’ gairm cunntas snasail gu fiachan le ath-phàigheadh ​​​​sa bhad

Le bhith a’ gairm InvokeScript feumar cìs a phàigheadh ​​​​bhon chunntas a thòisicheas an gnothach. Chan eil seo na dhuilgheadas ma tha thu a’ dèanamh pròiseact airson geeks blockchain aig a bheil tomhas sònraichte de chomharran WAVES air a ’chunntas aca, ach ma tha an toradh ag amas air a’ mhòr-chuid, bidh seo na fhìor dhuilgheadas. Às deidh na h-uile, feumaidh an neach-cleachdaidh frithealadh air ceannach comharran WAVES (no so-mhaoin iomchaidh eile a dh'fhaodar a chleachdadh gus pàigheadh ​​​​airson gnothaichean), a tha ag àrdachadh an stairsnich a tha mar-thà mòr airson a dhol a-steach don phròiseact. Is urrainn dhuinn maoin a sgaoileadh gu luchd-cleachdaidh a gheibh cead pàigheadh ​​​​airson gnothaichean agus a tha an aghaidh cunnart ana-chleachdadh nuair a thèid siostaman fèin-ghluasadach a chruthachadh gus so-mhaoin leaghaidh a phumpadh bhon t-siostam againn.

Bhiodh e gu math goireasach nam biodh e comasach fios a chuir gu InvokeScript “aig cosgais an neach a gheibh e” (an cunntas snasail air a bheil an sgriobt air a chuir a-steach), agus tha an comas seo ann, ged nach eil e ann an dòigh fhollaiseach.

Ma thèid, taobh a-staigh InvokeScript, ScriptTransfer a dhèanamh gu seòladh an neach-fios, a nì dìoladh airson na comharran a chaidh a chosg air a’ chìs, bidh an leithid de ghairm soirbheachail, eadhon ged nach robh maoin sam bith air a’ chunntas gairm aig àm a’ ghairm. Tha seo comasach leis gu bheil an t-seic airson comharran gu leòr air a dhèanamh às deidh a’ ghnothach a ghairm, agus chan ann roimhe, gus am bi e comasach gnothaichean a dhèanamh air creideas, fhad ‘s a thèid an ath-cheannach sa bhad.

ScriptTransfer (i.caller, i.fee, aonad)

Bidh an còd gu h-ìosal a’ toirt air ais a’ chìs a chaidh a chaitheamh a’ cleachdadh airgead cunntais snasail. Gus dìon an aghaidh mì-fheum den fheart seo, feumaidh tu seic a chleachdadh gu bheil an neach-fios a’ cosg a’ chìs anns a’ mhaoin cheart agus taobh a-staigh chrìochan reusanta:

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
}

Cuideachd, gus dìon an aghaidh sgudal airgid droch-rùnach agus gun chiall, tha feum air dìon an aghaidh gairm fèin-ghluasadach (PoW-captcha).

PoW-captcha

Chan eil an dearbh bheachd air captcha dearbhaidh-obrach ùr agus chaidh a chur an gnìomh mar-thà ann an diofar phròiseactan, a 'gabhail a-steach an fheadhainn a tha stèidhichte air WAVES. Is e puing a’ bheachd, gus gnìomh a dhèanamh a bhios a ’caitheamh goireasan a’ phròiseict againn, gum feum an neach-fios cuideachd na goireasan aca fhèin a chaitheamh, a tha a ’dèanamh ionnsaigh lughdachadh ghoireasan gu math cosgail. Airson dearbhadh gu math furasta agus aig prìs ìosal gu bheil an neach a chuir a’ ghnothach air fuasgladh fhaighinn air an duilgheadas PoW, tha sgrùdadh id malairt ann:

ma ghabhas (toBase58String(i.transactionId), 3) != “123” an uairsin tilg ("dh'fhàillig dearbhadh obrach”) eile

Gus gnothach a dhèanamh, feumaidh an neach-fios na paramadairean sin a thaghadh gus am bi a chòd base58 (id) a’ tòiseachadh leis na h-àireamhan 123, a tha a rèir cuibheasachd de dhiog no dhà de dh’ ùine pròiseasar agus sa chumantas reusanta airson ar gnìomh. Ma tha feum air PoW nas sìmplidh no nas iom-fhillte, faodar an obair atharrachadh gu furasta ann an dòigh fhollaiseach.

Ceist iuchraichean dàta le teamplaid

Gus an blockchain a chleachdadh mar stòr-dàta, tha e deatamach innealan API a bhith agad airson an stòr-dàta a cheasnachadh mar phrìomh-val a’ cleachdadh teamplaidean. Nochd inneal mar seo tràth san Iuchar 2019 mar pharamadair ?maids air iarrtas REST API /dresses/data?matches=regexp. A-nis, ma dh’ fheumas sinn barrachd air aon iuchair agus nach eil a h-uile iuchair fhaighinn aig an aon àm bhon tagradh lìn, ach dìreach cuid de bhuidheann, is urrainn dhuinn taghadh a dhèanamh le ainm na h-iuchrach. Mar eisimpleir, sa phròiseact seo, tha gnothaichean tarraing air ais air an còdachadh mar

withdraw_${userAddress}_${txid}

a leigeas leat liosta de ghnothaichean fhaighinn airson airgead a tharraing air ais airson seòladh sònraichte sam bith a’ cleachdadh an teamplaid:

?matches=withdraw_${userAddress}_.*

A-nis leig dhuinn mion-sgrùdadh a dhèanamh air co-phàirtean an fhuasglaidh chrìochnaichte.

còd

Tha an còd na demo obrach, faisg air pròiseact fìor. Bidh e a’ cur an gnìomh logadh a-steach tro Waves Keeper agus ag obair leis an leabharlann affiliate.js, le cuideachadh bhon a bhios e a’ clàradh neach-cleachdaidh san t-siostam, a’ ceasnachadh dàta malairt, agus cuideachd a’ leigeil leat airgead air a chosnadh a tharraing air ais gu cunntas an neach-cleachdaidh.

Prògram ceangailte dì-mheadhanaichte le còd fosgailte air blockchain Waves

Còd air RIDE

Air a dhèanamh suas de ghnìomhan clàraidh, maoineachaidh agus tarraing air ais.

Bidh gnìomh a’ chlàir a’ clàradh neach-cleachdaidh san t-siostam. Tha dà pharamadair ann: an neach-iomraidh (seòladh neach-iomraidh) agus am paramadair salainn nach eilear a’ cleachdadh anns a’ chòd gnìomh, a tha a dhìth gus an id malairt a thaghadh (gnìomh PoW-captcha).

Bidh an gnìomh (mar a’ chòrr de na gnìomhan sa phròiseact seo) a’ cleachdadh an dòigh iasaid, is e toradh a’ ghnìomh a bhith a’ maoineachadh pàigheadh ​​airson a’ ghnìomh seo a ghairm. Taing don fhuasgladh seo, faodaidh neach-cleachdaidh a tha dìreach air wallet a chruthachadh obrachadh leis an t-siostam sa bhad agus chan fheum e a bhith fo imcheist leis a ’cheist mu bhith a’ faighinn no a ’faighinn maoin a leigeas leis cìs malairt a phàigheadh.

Is e toradh a’ ghnìomh clàraidh dà chlàr:

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

Leigidh seo le coimhead air adhart agus air ais (neach-iomraidh an neach-cleachdaidh seo agus a h-uile iomradh bhon neach-cleachdaidh seo).

Tha gnìomh na maoine nas motha na theamplaid airson a bhith a’ leasachadh fìor ghnìomhachd. Anns an fhoirm a tha air a thaisbeanadh, bidh e a’ toirt a h-uile airgead a thèid a ghluasad leis a’ ghnothach agus gan sgaoileadh gu cunntasan iomraidh na h-ìrean 1d, 2na, 3mh, chun chunntas “airgead air ais” agus an cunntas “atharrachadh” (a h-uile càil a tha air fhàgail nuair a thèid a sgaoileadh gu roimhe seo). cunntasan a’ faighinn an seo).

Tha airgead air ais mar dhòigh air an neach-cleachdaidh deireannach a bhrosnachadh gus pàirt a ghabhail san t-siostam tar-chuir. Faodar am pàirt den choimisean a phàigh an siostam ann an cruth “airgead air ais” a tharraing air ais leis an neach-cleachdaidh san aon dòigh ri duaisean airson tar-chuir.

Nuair a bhios tu a’ cleachdadh an t-siostam tar-chuir, bu chòir gnìomh na maoine atharrachadh, air a thogail a-steach do phrìomh loidsig a’ chunntais ghlic air am bi an siostam ag obair. Mar eisimpleir, ma thèid duais tar-chuir a phàigheadh ​​​​airson geall a chaidh a dhèanamh, bu chòir gnìomh na maoine a bhith air a thogail a-steach don reusanachadh far a bheil an geall air a dhèanamh (no gnìomh targaid eile air a dhèanamh airson a bheil an duais air a phàigheadh). Tha trì ìrean de dhuaisean tar-chuir air an còdadh a-steach don fheart seo. Ma tha thu airson barrachd no nas lugha ìrean a dhèanamh, tha seo cuideachd air a cheartachadh sa chòd. Tha an ceudad duais air a shuidheachadh leis na h-ìrean ìre 1-level3, anns a’ chòd tha e air a thomhas mar suim * ìre / 1000, is e sin, tha an luach 1 a 'freagairt ri 0,1% (faodar seo atharrachadh sa chòd cuideachd).

Bidh an gairm gnìomh ag atharrachadh cothromachadh a’ chunntais agus cuideachd a ’cruthachadh chlàran airson am foirm a chlàradh:

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

Is e sin, is e àm a 'ghnothaich àm a' bhloca anns a bheil e suidhichte. Tha seo nas earbsaiche na bhith a’ cleachdadh an stampa-ama bhon ghnothach fhèin, gu h-àraidh leis nach eil e ri fhaighinn bhon neach a ghabhas gairm.
Bidh an gnìomh tarraing air ais a’ tarraing air ais a h-uile duais cruinnichte gu cunntas an neach-cleachdaidh. A 'cruthachadh inntrigidhean airson adhbharan logaidh:

# withdraw log: withdraw_user_txid=amount:timestamp

Iarrtas

Is e prìomh phàirt an tagraidh an leabharlann affiliate.js, a tha na dhrochaid eadar na modalan dàta ceangailte agus an WAVES NODE REST API. A’ cur an gnìomh còmhdach tarraing neo-eisimeileach frèam (faodar fear sam bith a chleachdadh). Tha gnìomhan gnìomhach (clàr, tarraing air ais) a 'gabhail ris gu bheil Waves Keeper air a chuir a-steach san t-siostam, chan eil an leabharlann fhèin a' sgrùdadh seo.

A 'cur an gnìomh dòighean:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Tha gnìomhachd nan dòighean follaiseach bho na h-ainmean, tha na paramadairean agus an dàta tilleadh air am mìneachadh sa chòd. Feumaidh gnìomh a’ chlàir beachdan a bharrachd - bidh e a’ tòiseachadh cearcall taghaidh id malairt gus an tòisich e aig 123 - is e seo an captcha PoW a tha air a mhìneachadh gu h-àrd, a tha a’ dìon an aghaidh chlàraidhean mòra. Bidh an gnìomh a’ lorg malairt leis an id a tha a dhìth, agus an uairsin ga shoidhnigeadh tro Waves Keeper.

Prògram ceangailte DEX ri fhaighinn aig GitHub.com.

Source: www.habr.com

Cuir beachd ann