Open source decentralized affiliate program on the Waves blockchain

Lenaneo le ikhethileng la kopanelo le thehiloeng ho Waves blockchain, le kentsoeng tšebetsong e le karolo ea thuso ea Waves Labs ke sehlopha sa Bettex.

Poso ha e tšehetsoe! Lenaneo ke mohloli o bulehileng, tšebeliso ea eona le kabo ea eona ke mahala. Tšebeliso ea lenaneo e susumetsa nts'etsopele ea lits'ebetso tsa dApp, 'me, ka kakaretso, e khothalletsa ho arola mebuso, e leng molemo ho mosebelisi e mong le e mong oa Marang-rang.

Open source decentralized affiliate program on the Waves blockchain

dApp e hlahisitsoeng bakeng sa mananeo a affiliate ke template ea merero e kenyelletsang karolo e le karolo ea ts'ebetso ea bona. Khoutu e ka sebelisoa e le template ea ho kopitsa, joalo ka laeborari, kapa e le sehlopha sa mehopolo bakeng sa ts'ebetsong ea tekheniki.

Mabapi le ts'ebetso, ona ke mokhoa o tloaelehileng oa kopanelo o kenyang tšebetsong boingoliso ho motho ea romelloang, meputso e mengata ea maemo a mangata bakeng sa ho fetisetsoa le khothatso ea ho ingolisa ho sistimi (cashback). Sistimi ke dApp e "hloekileng", ke hore, sesebelisoa sa marang-rang se sebelisana ka kotloloho le blockchain ntle le mokokotlo oa eona, database, joalo-joalo.

Ho sebelisoa mekhoa e ka thusang mererong e meng e mengata:

  • Ho letsetsa ak'haonte e bohlale ka mokitlane ka tefo ea hang-hang (nakong ea pitso, ha ho na li-tokens akhaonteng ea ho lefella pitso, empa li hlaha moo ka lebaka la pitso).
  • PoW-captcha - ts'ireletso khahlanong le pitso e ikemetseng ea maqhubu a phahameng ea mesebetsi ea akhaonto e bohlale - e tšoanang le captcha, empa ka bopaki ba tšebeliso ea lisebelisoa tsa k'homphieutha.
  • Kopo ho linotlolo tsa data ka template.

Kopo e na le:

  • khoutu ea ak'haonte e bohlale ka puo ea ride4dapps (eo, joalo ka ha ho reriloe, e kopantsoeng akhaonteng e kholo ea bohlale, eo u hlokang ho kenya tšebetsong ts'ebetso ea kopanelo);
  • js sephutheloana se sebelisang lera le se nang letho holim'a WAVES NODE REST API;
  • khoutu ho moralo oa vuejs, e leng mohlala oa ho sebelisa laebrari le khoutu ea RIDE.

Ha re hlalose likarolo tsohle tse thathamisitsoeng.

Ho letsetsa ak'haonte e bohlale mokolotong ka ho lefa hanghang

Ho letsetsa InvokeScript ho hloka tefo ea tefiso ho tsoa akhaonteng e qalang khoebo. Sena ha se bothata haeba u etsa morero oa blockchain geeks ba nang le palo e itseng ea li-tokens tsa WAVES akhaonteng ea bona, empa haeba sehlahisoa se lebisitsoe ho batho ba bangata, sena se fetoha bothata bo tebileng. Ntle le moo, mosebelisi o tlameha ho ela hloko theko ea li-tokens tsa WAVES (kapa thepa e 'ngoe e loketseng e ka sebelisetsoang ho lefella litšebelisano), e leng se eketsang monyetla o moholo oa ho kena morerong. Re ka aba thepa ho basebelisi ba tla lumelloa ho lefa bakeng sa transaction mme ba tobane le kotsi ea tšebeliso e mpe ha ho etsoa litsamaiso tse ikemetseng ho pompa matlotlo a tsoang mochining oa rona.

Ho ka ba bonolo haholo haeba ho ka khoneha ho letsetsa InvokeScript "ka litšenyehelo tsa moamoheli" (ak'haonte e bohlale eo mongolo o kentsoeng ho eona), 'me monyetla ona o teng, leha e se ka tsela e hlakileng.

Haeba, ka hare ho InvokeScript, ScriptTransfer e etsoa atereseng ea moletsi, e lefang li-tokens tse sebelisitsoeng tefisong, mohala o joalo o tla atleha, leha ho ne ho se matlotlo akhaonteng ea mohala nakong ea mohala. Sena se ka khoneha hobane ho hlahloba li-tokens tse lekaneng ho etsoa ka mor'a hore thekiso e bitsoe, eseng pele ho eona, e le hore ho ka khoneha ho etsa litšebelisano ka mokitlane, hafeela ba lopolloa hang-hang.

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

Khoutu e ka tlase e khutlisa tefiso e sebelisitsoeng ho sebelisa chelete ea ak'haonte e bohlale. Ho itšireletsa khahlanong le tšebeliso e mpe ea tšobotsi ena, hoa hlokahala ho sebelisa cheke hore motho ea letsitseng o sebelisa tefiso ka thepa e nepahetseng le ka har'a meeli e utloahalang:

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
}

Hape, ho sireletsa khahlanong le tšenyo e mpe le e se nang kelello ea lichelete, tšireletso khahlanong le pitso ea othomathiki (PoW-captcha) ea hlokahala.

PoW-captcha

Mohopolo ona oa "proof-of-work captcha" ha o mocha ebile o se o kentsoe tšebetsong mererong e fapaneng, ho kenyeletsoa le e thehiloeng ho WAVES. Taba ea mohopolo ke hore molemong oa ho etsa ketso e senyang lisebelisoa tsa morero oa rona, motho ea letsetsang le eena o tlameha ho sebelisa lisebelisoa tsa hae, e leng se etsang hore tlhaselo ea ho senyeha ha lisebelisoa e be theko e boima haholo. Bakeng sa netefatso e bonolo haholo le e theko e tlase ea hore motho ea rometseng khoebo o rarolotse bothata ba PoW, ho na le tlhahlobo ea ID ea transaction:

haeba take(toBase58String(i.transactionId), 3) != “123” ebe u lahlela(“bopaki ba mosebetsi bo hlotsoe”) tse ling

Bakeng sa ho etsa khoebo, motho ea letsetsang o tlameha ho khetha liparamente tse joalo e le hore khoutu ea motheo58 (id) e qale ka linomoro 123, e tsamaellanang le karolelano ea metsotsoana e mashome a mabeli ea nako ea processor mme ka kakaretso e loketse mosebetsi oa rona. Haeba ho hlokahala PoW e bonolo kapa e rarahaneng, joale mosebetsi o ka fetoloa habonolo ka mokhoa o hlakileng.

Botsa linotlolo tsa data ka template

Bakeng sa ho sebelisa blockchain joalo ka database, ho bohlokoa ho ba le lisebelisoa tsa API tsa ho botsa database joalo ka senotlolo-val sebelisa litempele. Sesebelisoa se joalo sa lisebelisoa se hlahile mathoasong a Phupu 2019 e le paramente ?litšoantšiso ka kopo ea REST API /addresses/data?matches=regexp. Joale, haeba re hloka ho fumana linotlolo tse fetang e le 'ngoe mme eseng linotlolo tsohle ka nako e le ngoe ho tsoa ts'ebelisong ea webo, empa ke sehlopha se itseng feela, joale re ka etsa khetho ka lebitso la senotlolo. Ka mohlala, morerong ona, litšebelisano tsa ho tlohela li ngotsoe e le

withdraw_${userAddress}_${txid}

e u lumellang ho fumana lethathamo la litšebelisano tsa ho ntša chelete bakeng sa aterese efe kapa efe e fanoeng u sebelisa template:

?matches=withdraw_${userAddress}_.*

Joale a re hlahlobeng likarolo tsa tharollo e phethiloeng.

vuejs khoutu

Khoutu ke demo e sebetsang, e haufi le morero oa sebele. E sebelisa ho kena ka Waves Keeper mme e sebetsa le laeborari ea affiliate.js, ka thuso eo e ngolisang mosebelisi ho sistimi, e botsa data ea transaction, hape e u lumella ho hula chelete e fumanoeng akhaonteng ea mosebelisi.

Open source decentralized affiliate program on the Waves blockchain

Khouto ho RIDE

E na le mesebetsi ea ngoliso, lichelete le ho hula.

Mosebetsi oa rejisetara o ngolisa mosebelisi tsamaisong. E na le mekhahlelo e 'meli: referer (aterese ea referer) le parameter ea letsoai e sa sebelisoe khoutu ea ts'ebetso, e hlokahalang ho khetha id ea transaction (PoW-captcha task).

Mosebetsi (joaloka mesebetsi e meng ea morero ona) o sebelisa mokhoa oa ho alima, sephetho sa mosebetsi ke ho lefella tefo ea tefo ea ho letsetsa mosebetsi ona. Ka lebaka la tharollo ena, mosebedisi ea sa tsoa etsa sepache a ka sebetsa hang-hang le tsamaiso 'me ha ho hlokahale hore a makatsoe ke taba ea ho fumana kapa ho fumana thepa e mo lumellang ho lefa tefiso ea transaction.

Sephetho sa mosebetsi oa ngoliso ke lirekoto tse peli:

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

Sena se lumella ho sheba ka pele le ka morao (referefere ea mosebelisi ea fanoeng le litšupiso tsohle tsa mosebelisi ea fanoeng).

Ts'ebetso ea letlole ke mohlala oa ho ntlafatsa ts'ebetso ea 'nete. Ka foromo e hlahisitsoeng, e nka chelete eohle e fetisetsoang ke transaction mme e li abela li-account tsa 1, 2nd, 3rd, ho "cashback" account le "change" account (ntho e 'ngoe le e' ngoe e setseng nakong ea ho ajoa ho li-account tse fetileng e fihla mona).

Cashback ke mokhoa oa ho khothaletsa mosebelisi ho nka karolo tsamaisong ea phetisetso. Karolo ea komisi e lefuoang ke sistimi ka mokhoa oa "cashback" e ka tlosoa ke mosebelisi ka tsela e ts'oanang le meputso ea ho fetisetsoa.

Ha u sebelisa mokhoa oa ho fetisa, mosebetsi oa letlole o lokela ho fetoloa, o hahiloe mohopolong o ka sehloohong oa akhaonto e bohlale eo tsamaiso e tla sebetsa ho eona. Mohlala, haeba moputso oa phetisetso o lefuoa bakeng sa bethe e entsoeng, ts'ebetso ea letlole e tlameha ho hahuoa ho latela mabaka ao ho bechang ho etsoang (kapa ketso e 'ngoe e reretsoeng ho lefshoa moputso). Ho na le mekhahlelo e meraro ea meputso ea phetisetso e kentsoeng tšebetsong ena. Haeba u batla ho etsa maemo a mangata kapa a fokolang, joale sena se boetse se lokisoa ka khoutu. Peresente ea moputso e behiloe ke li-constants tsa level1-level3, ka khoutu e baloang joalo ka palo * boemo / 1000, ke hore, boleng ba 1 bo lumellana le 0,1% (sena se ka boela sa fetoloa ka khoutu).

Mohala oa ts'ebetso o fetola tekanyo ea ak'haonte hape o theha lirekoto ka sepheo sa ho rengoa ha foromo:

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

Ke hore, nako ea transaction ke nako ea block eo e leng ho eona. Sena se ka tšeptjoa ho feta ho sebelisa setempe sa linako ho tsoa khoebong ka boeona, haholo hobane ha e fumanehe ho tsoa ho mohala.
Ts'ebetso ea ho hula e hula meputso eohle e bokelletsoeng akhaonteng ea mosebelisi. E etsa likenyelletso molemong oa ho rema lifate:

# withdraw log: withdraw_user_txid=amount:timestamp

Kopo

Karolo e ka sehloohong ea kopo ke laebrari ea affiliate.js, e leng borokho pakeng tsa mehlala ea data e kopanetsoeng le WAVES NODE REST API. E kenya tšebetsong lera le ikemetseng le ikemetseng (leha e le efe e ka sebelisoa). Mesebetsi e sebetsang (ngolisa, tlosa) e nka hore Waves Keeper e kentsoe tsamaisong, laebrari ka boeona ha e hlahlobe sena.

E sebelisa mekhoa:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Ts'ebetso ea mekhoa e totobetse ho tsoa mabitsong, litekanyetso le lintlha tsa ho khutlisa li hlalosoa ka khoutu. Mosebetsi oa ngoliso o hloka litlhaloso tse eketsehileng - e qala potoloho ea khetho ea id ea transaction e le hore e qale ho 123 - ena ke PoW captcha e hlalositsoeng ka holimo, e sireletsang khahlanong le ho ngolisa batho ba bangata. Ts'ebetso e fumana khoebo e nang le id e hlokahalang, ebe e e saena ka Waves Keeper.

Lenaneo la kopanelo la DEX le fumanehang ho GitHub.com.

Source: www.habr.com

Eketsa ka tlhaloso