Fandaharan'asa Affiliate decentralized open source amin'ny Waves blockchain

Fandaharan'asan'ny fiaraha-miombon'antoka mifototra amin'ny Waves blockchain, napetraka ho ampahany amin'ny fanomezana Waves Labs avy amin'ny ekipa Bettex.

Tsy misy tohana ny hafatra! Ny programa dia loharano misokatra, maimaim-poana ny fampiasana sy fizarana azy. Ny fampiasana ny programa dia manentana ny fampivoarana ny rindranasa dApp ary, amin'ny ankapobeny, mampiroborobo ny fitsinjaram-pahefana, izay mahasoa ho an'ny mpampiasa rehetra ao amin'ny Tambajotra.

Fandaharan'asa Affiliate decentralized open source amin'ny Waves blockchain

Ny dApp naseho ho an'ny programa Affiliate dia môdely ho an'ny tetikasa izay ahitana Affiliate ho ampahany amin'ny asany. Ny kaody dia azo ampiasaina ho modely amin'ny fanaovana kopia, ho toy ny tranomboky, na ho andian-kevitra ho an'ny fampiharana ara-teknika.

Eo amin'ny lafiny fampiasa, ity dia rafitra iraisana mahazatra izay manatanteraka fisoratana anarana miaraka amin'ny referrer, accrual multilevel amin'ny karama ho an'ny referrals ary antony manosika hisoratra anarana ao amin'ny rafitra (cashback). Ny rafitra dia dApp "madio", izany hoe, ny fampiharana tranonkala dia mifandray mivantana amin'ny blockchain tsy misy backend azy, database, sns.

Mampiasa teknika izay mety ilaina amin'ny tetikasa maro hafa koa:

  • Miantso kaonty marani-tsaina amin'ny crédit miaraka amin'ny famerenam-bola avy hatrany (amin'ny fotoana hiantsoana dia tsy misy marika ao amin'ny kaonty handoavana ny antso, fa miseho eo izy ireo noho ny antso).
  • PoW-captcha - fiarovana amin'ny fiantsoana mandeha ho azy matetika amin'ny fiasan'ny kaonty marani-tsaina - mitovy amin'ny captcha, fa amin'ny alàlan'ny porofo amin'ny fampiasana loharanon-karena.
  • Mangataka amin'ny fanalahidin'ny data amin'ny alàlan'ny môdely.

Ny fampiharana dia ahitana:

  • kaody kaonty marani-tsaina amin'ny fiteny ride4dapps (izay, araka ny efa nomanina, dia mitambatra ao amin'ny kaonty marani-tsaina lehibe, izay ilainao hampiharana ny fampandehanan-draharaham-pifandraisana);
  • js wrapper izay mametraka sosona abstraction amin'ny WAVES NODE REST API;
  • kaody ao amin'ny rafitra vuejs, izay ohatra amin'ny fampiasana ny tranomboky sy ny code RIDE.

Andeha hofaritantsika ireo endri-javatra voatanisa rehetra.

Miantso kaonty marani-tsaina ho trosa miaraka amin'ny famerenam-bola avy hatrany

Ny fiantsoana ny InvokeScript dia mitaky fandoavana sara avy amin'ny kaonty manomboka ny fifampiraharahana. Tsy olana izany raha manao tetikasa ho an'ny geeks blockchain izay manana mari-pamantarana WAVES maromaro ao amin'ny kaontiny, fa raha mikendry ny vahoaka ny vokatra dia lasa olana lehibe izany. Raha ny marina, ny mpampiasa dia tsy maintsy manatrika ny fividianana mari-pamantarana WAVES (na fananana sahaza hafa azo ampiasaina handoavana ny fifampiraharahana), izay mampitombo ny tokonam-baravarana efa lehibe hidirana amin'ny tetikasa. Afaka mizara fananana ho an'ireo mpampiasa izay avela handoa vola amin'ny fifampiraharahana izahay ary hiatrika ny loza ateraky ny fampiasana azy ireo amin'ny fomba tsy ara-dalàna rehefa misy rafitra mandeha ho azy mba hanondrahana fananana rano avy amin'ny rafitray.

Tena mety raha azo atao ny miantso ny InvokeScript "amin'ny vidin'ny mpandray" (ny kaonty hendry izay ametrahana ny script), ary misy izany fahafahana izany, na dia tsy amin'ny fomba mazava aza.

Raha, ao anatin'ny InvokeScript, dia misy ScriptTransfer atao amin'ny adiresin'ny mpiantso, izay manonitra ny mari-pamantarana lany amin'ny sarany, dia hahomby ny antso toy izany, na dia tsy nisy fananana tao amin'ny kaonty fiantsoana tamin'ny fotoana niantsoana aza. Azo atao izany satria ny fanamarinana ny mari-pamantarana ampy dia atao aorian'ny fiantsoana ny fifampiraharahana, fa tsy alohan'izany, mba ahafahana manao fifampiraharahana amin'ny trosa, raha toa ka voavotra avy hatrany.

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

Ny kaody etsy ambany dia mamerina ny vola lany amin'ny fampiasana vola amin'ny kaonty smart. Mba hiarovana amin'ny fampiasana tsy mety an'ity endri-javatra ity dia tsy maintsy mampiasa fanamarinana ianao fa mandany ny sarany amin'ny fananana mety sy ao anatin'ny fetra mety ny mpiantso:

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
}

Ary koa, mba hiarovana amin'ny fandaniam-bola ratsy sy tsy misy dikany, ilaina ny fiarovana amin'ny antso mandeha ho azy (PoW-captcha).

PoW-captcha

Ny tena hevitra momba ny captcha porofo-asa dia tsy vaovao ary efa nampiharina tamin'ny tetikasa isan-karazany, anisan'izany ireo mifototra amin'ny WAVES. Ny tanjon'ny hevitra dia ny hoe raha te hanao hetsika izay mandany ny loharanon'ny tetikasantsika dia tsy maintsy mandany ny fananany manokana ihany koa ny mpiantso, izay mahatonga ny fanafihana fahapotehan'ny harena ho lafo be. Ho an'ny fanamarinana tena mora sy mora fa ny mpandefa ny fifampiraharahana dia namaha ny olan'ny PoW, misy ny fanamarinana id transaction:

raha take(toBase58String(i.transactionId), 3) != “123” dia atsipazo(“porofon'ny asa tsy nahomby”) hafa

Mba hanatanterahana ny fifampiraharahana dia tsy maintsy misafidy masontsivana toy izany ny mpiantso ka ny code base58 (id) dia manomboka amin'ny isa 123, izay mifanitsy amin'ny salan'isa folo segondra amin'ny processeur ary amin'ny ankapobeny dia mety amin'ny asantsika. Raha ilaina ny PoW tsotra na sarotra kokoa, dia azo ovaina mora foana amin'ny fomba mazava ny asa.

Manontania fanalahidin'ny angona araka ny maodely

Mba hampiasana ny blockchain ho toy ny angon-drakitra, dia ilaina ny manana fitaovana API amin'ny fangatahana ny angon-drakitra ho toy ny key-val amin'ny fampiasana môdely. Ny kitapo fitaovana toy izany dia niseho tamin'ny fiandohan'ny volana Jolay 2019 ho marika ?match amin'ny fangatahana REST API /addresses/data?matches=regexp. Ankehitriny, raha mila maka fanalahidy mihoatra ny iray isika fa tsy ny fanalahidy rehetra indray mandeha avy amin'ny fampiharana tranonkala, fa vondrona vitsivitsy ihany, dia afaka manao safidy amin'ny anaran'ny fanalahidy. Ohatra, amin'ity tetik'asa ity, ny fifampiraharahana amin'ny fisintahana dia voasivana ho

withdraw_${userAddress}_${txid}

izay ahafahanao mahazo lisitry ny fifampiraharahana amin'ny fisintahana ny vola amin'ny adiresy nomena amin'ny alàlan'ny môdely:

?matches=withdraw_${userAddress}_.*

Andeha hojerentsika izao ny singa amin'ny vahaolana vita.

kaody vuejs

Ny kaody dia demo miasa, akaikin'ny tetikasa tena izy. Mampihatra ny fidirana amin'ny alàlan'ny Waves Keeper izy ary miara-miasa amin'ny tranomboky affiliate.js, miaraka amin'ny fanampian'ny fisoratana anarana mpampiasa ao amin'ny rafitra, manontany ny angon-drakitra momba ny varotra, ary mamela anao ihany koa ny manala ny vola azo amin'ny kaontin'ny mpampiasa.

Fandaharan'asa Affiliate decentralized open source amin'ny Waves blockchain

Kaody amin'ny RIDE

Ahitana asa fisoratana anarana, famatsiam-bola ary fanalana.

Ny asa fisoratana anarana dia manoratra mpampiasa iray ao amin'ny rafitra. Manana mari-pamantarana roa izy io: referer (adiresy referr) sy ny paramètre salt tsy ampiasaina amin'ny code function, izay ilaina hisafidianana ny id transaction (asa PoW-captcha).

Ny asa (toy ny sisa amin'ny asa amin'ity tetikasa ity) dia mampiasa ny teknika fampindramam-bola, ny vokatr'ilay asa dia ny famatsiam-bola ny fandoavana ny sarany amin'ny fiantsoana ity asa ity. Noho io vahaolana io, ny mpampiasa iray izay vao avy namorona poketra dia afaka miasa avy hatrany amin'ny rafitra ary tsy mila sahiran-tsaina amin'ny olana amin'ny fahazoana na fahazoana fananana izay mamela azy handoa saram-pandraharahana.

Ny vokatry ny asa fisoratana anarana dia rakitsoratra roa:

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

Izany dia ahafahan'ny fitadiavana mandroso sy miverina (mpitarika ny mpampiasa nomena sy ny referral rehetra an'ny mpampiasa nomena).

Ny fiasan'ny famatsiam-bola dia modely kokoa amin'ny fampivoarana ny tena fiasa. Ao amin'ny endrika aseho dia maka ny vola rehetra nafindran'ny fifampiraharahana ary mizara izany amin'ny kaonty referrer amin'ny ambaratonga voalohany, faha-1, faha-2, mankany amin'ny kaonty "cashback" sy ny kaonty "fiovana" (izay rehetra tavela mandritra ny fizarana amin'ny kaonty teo aloha dia tonga eto).

Cashback dia fomba iray hanentanana ny mpampiasa farany handray anjara amin'ny rafitra referral. Ny ampahany amin'ny komisiona naloan'ny rafitra amin'ny endrika "cashback" dia azon'ny mpampiasa alaina amin'ny fomba mitovy amin'ny valisoa ho an'ny referral.

Rehefa mampiasa ny rafitra referral dia tokony ovaina ny fiasan'ny tahirim-bola, natsangana ho lojika lehibe amin'ny kaonty marani-tsaina izay hiasan'ny rafitra. Ohatra, raha omena valisoa ho an'ny filokana natao ny valisoa, dia tokony hapetraka ao amin'ny lojika izay nanaovana ny filokana ny fiasan'ny famatsiam-bola (na hetsika kendrena hafa izay nandoavana ny valisoa). Misy ambaratonga telo amin'ny valisoa referansa voadika amin'ity endri-javatra ity. Raha te hanao ambaratonga bebe kokoa na latsaka ianao, dia ahitsy ao amin'ny code ihany koa izany. Ny isan-jaton'ny valisoa dia napetraky ny tsy miova level1-level3, ao amin'ny kaody kajy toy ny habe * ambaratonga / 1000, izany hoe, ny sanda 1 dia mifanitsy amin'ny 0,1% (azo ovaina amin'ny code ihany koa izany).

Manova ny fifandanjan'ny kaonty ny antso an-tariby ary mamorona entries ho an'ny fanoratana ny endrika:

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

Izany hoe, ny fotoanan'ny fifampiraharahana dia ny fotoanan'ny sakana misy azy. Azo itokisana kokoa izany noho ny fampiasana ny famantaranandro avy amin'ny fifampiraharahana, indrindra satria tsy azo alaina amin'ny antso.
Ny fiasan'ny withdraw dia manala ny valisoa voaangona rehetra ao amin'ny kaontin'ny mpampiasa. Mamorona fidirana ho an'ny tanjona fanoratana:

# withdraw log: withdraw_user_txid=amount:timestamp

fampiharana

Ny ampahany lehibe amin'ny fampiharana dia ny tranomboky affiliate.js, izay tetezana manelanelana ny maodely angon-drakitra mifandraika sy ny WAVES NODE REST API. Mampihatra sosona abstraction tsy miankina amin'ny framework (azo ampiasaina ny tsirairay). Ny fiasa mavitrika (misoratra anarana, miala) dia mihevitra fa ny Waves Keeper dia napetraka ao amin'ny rafitra, ny tranomboky mihitsy dia tsy manamarina izany.

Mampihatra fomba:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Ny fiasan'ny fomba dia miharihary amin'ny anarana, ny mari-pamantarana sy ny angon-drakitra miverina dia voalaza ao amin'ny code. Mitaky fanehoan-kevitra fanampiny ny asan'ny rejisitra - manomboka ny tsingerin'ny fifantenana id transaction ka manomboka amin'ny 123 - ity ny captcha PoW voalaza etsy ambony, izay miaro amin'ny fisoratana anarana faobe. Ny fiasa dia mahita fifampiraharahana miaraka amin'ny id ilaina, ary avy eo manasonia izany amin'ny alàlan'ny Waves Keeper.

DEX Affiliate Program azo alaina ao amin'ny Github.com.

Source: www.habr.com

Add a comment