Барномаи шарикии ғайримарказонидашудаи кушодаасос дар блокчейни Waves

Барномаи шарикии ғайримарказӣ дар blockchain Waves, ки ҳамчун як қисми гранти Waves Labs аз ҷониби дастаи Bettex амалӣ карда мешавад.

Пост таблиғ нест! Барнома манбаи кушода буда, истифода ва паҳнкунии он ройгон аст. Истифодаи барнома рушди барномаҳои dAppро ҳавасманд мекунад ва умуман ғайримарказизатсияро пеш мебарад, ки аз ин ба ҳар як корбари интернет манфиат меорад.

Барномаи шарикии ғайримарказонидашудаи кушодаасос дар блокчейни Waves

dApp-и пешниҳодшуда барои барномаҳои шарикӣ як қолаби лоиҳаҳое мебошад, ки филиалро ҳамчун як қисми функсияи худ дар бар мегиранд. Рамзро метавон ҳамчун қолаб барои нусхабардорӣ, ҳамчун китобхона ё маҷмӯи ғояҳо барои татбиқи техникӣ истифода бурд.

Аз нуқтаи назари функсионалӣ, ин як системаи доимии шарикӣ мебошад, ки сабти номро бо муроҷиаткунанда, ҳисобкунии мукофотҳои бисёрсатҳи барои роҳхатҳо ва ҳавасмандкунӣ барои сабти ном дар система (кэшбэк) амалӣ мекунад. Система як dApp-и "пок" аст, яъне веб-барнома мустақиман бо blockchain бидуни пуштибонии худ, пойгоҳи додаҳо ва ғайра ҳамкорӣ мекунад.

Усулҳои истифодашуда, ки метавонанд дар бисёр лоиҳаҳои дигар муфид бошанд:

  • Даъват кардани ҳисоби интеллектуалӣ ба қарз бо пардохти фаврӣ (дар вақти занг дар суратҳисоб ягон нишона барои пардохти занг вуҷуд надорад, аммо онҳо дар натиҷаи занг дар он ҷо пайдо мешаванд).
  • PoW-captcha - муҳофизат аз зангҳои автоматии басомади баланд ба функсияҳои ҳисоби интеллектуалӣ - шабеҳи captcha, аммо тавассути исботи истифодаи захираҳои компютерӣ.
  • Дархост барои калидҳои маълумот бо истифода аз қолаб.

Ариза аз инҳо иборат аст:

  • рамзи ҳисоби интеллектуалӣ дар забони ride4dapps (ки тавре ки ба нақша гирифта шудааст, ба ҳисоби асосии интеллектуалӣ муттаҳид карда мешавад, ки барои он функсияи шарикӣ бояд амалӣ карда шавад);
  • js wrapper, ки сатҳи абстраксияро аз болои WAVES NODE REST API амалӣ мекунад;
  • код дар чаҳорчӯбаи vuejs, ки намунаи истифодаи китобхона ва рамзи RIDE мебошад.

Биёед ҳамаи хусусиятҳои номбаршударо тавсиф кунем.

Даъват ба ҳисоби интеллектуалӣ барои қарз бо пардохти фаврӣ

Занг задан ба InvokeScript пардохти хироҷро аз ҳисоби оғозкунандаи транзаксия талаб мекунад. Ин мушкилот нест, агар шумо лоиҳаи геикҳои blockchain дошта бошед, ки дар ҳисоби онҳо миқдори муайяни WAVES токенҳо доранд, аммо агар маҳсулот барои истифодаи омма нигаронида шуда бошад, ин як мушкилоти ҷиддӣ мегардад. Дар ниҳоят, корбар бояд дар бораи харидани токенҳои WAVES (ё дигар дороии мувофиқ, ки метавонад барои пардохт барои транзаксия истифода шавад) ғамхорӣ кунад, ки монеаи аллакай назаррасро барои ворид шудан ба лоиҳа зиёд мекунад. Мо метавонем дороиҳоро ба корбароне тақсим кунем, ки метавонанд барои муомилот пардохт кунанд ва бо хатари истифодаи нодурусти онҳо рӯбарӯ шаванд, вақте ки системаҳои автоматӣ барои баровардани дороии моеъ аз системаи мо сохта мешаванд.

Ин хеле қулай мебуд, агар имкони номи InvokeScript-ро "аз ҳисоби қабулкунанда" (ҳисоби оқилонае, ки скрипт дар он насб карда шудааст) мебуд ва чунин имкон вуҷуд дорад, гарчанде ки ба таври возеҳ нест.

Агар дар дохили InvokeScript шумо ба суроғаи зангзананда ScriptTransfer анҷом диҳед, ки токенҳои сарфшударо ҷуброн мекунад, пас чунин занг бомуваффақият хоҳад буд, ҳатто агар дар вақти занг дар ҳисоби зангзананда дороиҳо набуд. Ин имконпазир аст, зеро чеки токенҳои кофӣ пас аз даъват кардани транзаксия, на пеш аз он, анҷом дода мешавад, то транзаксияҳо бо шарти пардохти фаврӣ бо кредит анҷом дода шаванд.

ScriptTransfer (яъне зангзананда, яъне ҳаққи, воҳид)

Рамзи дар поён овардашуда маблағи сарфшударо бо истифода аз маблағҳои ҳисоби интеллектуалӣ ҷуброн мекунад. Барои муҳофизат аз истифодаи нодурусти ин хусусият, санҷишеро истифода бурдан лозим аст, ки зангзананда пардохтро дар дороии зарурӣ ва дар ҳудуди мувофиқ сарф мекунад:

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
}

Инчунин, барои муҳофизат аз исрофкории зараровар ва бемаънии маблағҳо, ҳифзи зангҳои автоматӣ (PoW-captcha) лозим аст.

PoW-captcha

Худи идеяи исботи кор captcha нав нест ва аллакай дар лоиҳаҳои гуногун, аз ҷумла дар асоси WAVES амалӣ карда шудааст. Идея ин аст, ки барои иҷрои амале, ки захираҳои лоиҳаи моро истеъмол мекунад, зангзананда бояд захираҳои худро низ сарф кунад, ки ҳамлаи камшавии захираҳоро хеле гарон мекунад. Барои тасдиқи хеле осон ва камхарҷ, ки ирсолкунандаи транзаксия мушкилоти PoW-ро ҳал кардааст, санҷиши ID транзаксия мавҷуд аст:

агар take(toBase58String(i.transactionId), 3) != “123” пас партофтан("исботи кор ноком шуд") дигаре

Барои анҷом додани транзаксия, зангзананда бояд чунин параметрҳоро интихоб кунад, то рамзи base58 (id) бо рақамҳои 123 оғоз шавад, ки ба ҳисоби миёна ба якчанд даҳҳо сонияи вақти протсессор мувофиқат мекунад ва умуман барои вазифаи мо мувофиқ аст. Агар PoW соддатар ё мураккабтар талаб карда шавад, пас вазифаро метавон ба осонӣ ба таври возеҳ тағир дод.

Дархост барои калидҳои маълумот бо истифода аз қолаб

Барои истифодаи blockchain ҳамчун пойгоҳи додаҳо, доштани абзорҳои API барои дархост кардани пойгоҳи додаҳо ҳамчун калид-val дар асоси қолибҳо муҳим аст. Чунин маҷмӯа дар аввали моҳи июли соли 2019 дар шакли параметр пайдо шуд ?гугирд дар дархости REST API /адресҳо/дата?матч=regexp. Ҳоло, агар ба мо лозим ояд, ки аз як замимаи веб зиёда аз як калидро гирем ва на ҳама калидҳоро якбора, балки танҳо як гурӯҳ, пас мо метавонем аз рӯи номи калид интихоб кунем. Масалан, дар ин лоиҳа, амалиёти бозхонд ҳамчун рамзгузорӣ шудааст

withdraw_${userAddress}_${txid}

ки ба шумо имкон медиҳад, ки рӯйхати транзаксияҳоро барои гирифтани маблағ аз рӯи дилхоҳ суроғаи додашуда бо истифода аз қолаб гиред:

?matches=withdraw_${userAddress}_.*

Акнун биёед ба ҷузъҳои маҳлули тайёр назар андозем.

Рамзи Vuejs

Рамз як намоиши корӣ аст, ки ба лоиҳаи воқеӣ наздик аст. Он воридшавиро тавассути Waves Keeper амалӣ мекунад ва бо китобхонаи affiliate.js кор мекунад, ки бо он корбарро дар система сабти ном мекунад, маълумоти транзаксияро дархост мекунад ва инчунин ба шумо имкон медиҳад, ки маблағҳои бадастомадаро ба ҳисоби корбар бозпас гиред.

Барномаи шарикии ғайримарказонидашудаи кушодаасос дар блокчейни Waves

Рамзи RIDE

Функсияҳои бақайдгирӣ, маблағгузорӣ ва бозпас гирифтан иборат аст.

Функсияи реестр корбарро дар система ба қайд мегирад. Он ду параметр дорад: реферат (суроғаи истинодкунанда) ва параметри намак, ки дар коди функсия истифода намешавад, ки барои интихоби ID транзаксия лозим аст (вазифаи PoW-captcha).

Функсия (ба монанди дигар вазифаҳои ин лоиҳа) техникаи занги қарзро истифода мебарад, натиҷаи функсия маблағгузории пардохти ҳаққи занг барои занги ин функсия мебошад. Ба шарофати ин ҳалли корбаре, ки навакак ҳамён сохтааст, метавонад фавран бо система кор кунад ва дар бораи харид ё гирифтани дороие, ки ба ӯ имкон медиҳад ҳаққи транзаксияро пардохт кунад, хавотир намешавад.

Натиҷаи функсияи бақайдгирӣ ду сабт аст:

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

Ин имкон медиҳад, ки ҷустуҷӯҳои пеш ва баръакс (ба истинод ба корбари додашуда ва ҳама муроҷиатҳои корбари додашуда).

Функсияи фонд бештар як қолаб барои таҳияи функсияҳои воқеӣ мебошад. Дар шакли пешниҳодшуда, он тамоми маблағҳои тавассути транзаксия гузаронидашударо мегирад ва онҳоро ба суратҳисобҳои реферерҳои сатҳҳои 1, 2, 3, ба суратҳисоби «кэшбэк» ва суратҳисоби «тағйир» тақсим мекунад (ҳама чизе, ки ҳангоми тақсимот ба қаблӣ боқӣ мемонад) ҳисобҳо дар ин ҷо меравад).

Кэшбэк воситаи ҳавасмандкунии корбари ниҳоӣ барои иштирок дар системаи муроҷиат мебошад. Истифодабаранда метавонад қисми комиссияи пардохткардаи системаро дар шакли «кэшбэк» ба мисли мукофот барои роҳхатҳо бозпас гирад.

Ҳангоми истифодаи системаи муроҷиат, функсияи фонд бояд тағир дода шавад ва ба мантиқи асосии ҳисоби смарт, ки система дар он кор мекунад, ворид карда шавад. Масалан, агар мукофоти роҳхат барои шартгузорӣ пардохта шавад, он гоҳ функсияи фонд бояд ба мантиқе, ки шартгузорӣ карда мешавад (ё амали дигари мақсаднок иҷро карда мешавад, ки барои он мукофот пардохта мешавад) сохта шавад. Дар ин функсия се сатҳи мукофотҳои муроҷиатӣ рамзгузорӣ карда шудаанд. Агар ба шумо лозим аст, ки сатҳҳои бештар ё камтар созед, он гоҳ ин низ дар код ислоҳ карда мешавад. Фоизи мукофот аз ҷониби константаҳои сатҳи 1-level3 муқаррар карда мешавад; дар код он ҳамчун ҳисоб карда мешавад маблағи * сатҳ / 1000, яъне арзиши 1 ба 0,1% мувофиқат мекунад (инро дар код низ тағир додан мумкин аст).

Даъват кардани функсия тавозуни ҳисобро тағир медиҳад ва инчунин барои сабти форма сабтҳоро эҷод мекунад:

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

Яъне, вақти транзаксия вақти блокест, ки дар он ҷойгир аст. Ин нисбат ба истифодаи тамғаи вақт аз худи транзаксия боэътимодтар аст, бахусус азбаски он аз ҷониби даъватшаванда дастрас нест.
Функсияи бозпас гирифтани ҳама мукофотҳои ҷамъшударо ба ҳисоби корбар нишон медиҳад. Воридотҳоро барои мақсадҳои сабткунӣ эҷод мекунад:

# withdraw log: withdraw_user_txid=amount:timestamp

Ариза

Қисми асосии барнома китобхонаи affiliate.js мебошад, ки пуле байни моделҳои додаҳои шарикӣ ва WAVES NODE REST API мебошад. Сатҳи абстраксияро новобаста аз чаҳорчӯба амалӣ мекунад (ҳар кадоме метавонад истифода шавад). Функсияҳои фаъол (бақайдгирӣ, бозхонд) тахмин мекунанд, ки Waves Keeper дар система насб шудааст; худи китобхона инро тафтиш намекунад.

Усулҳоро амалӣ мекунад:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

Фаъолияти усулҳо аз номҳо аён аст; параметрҳо ва маълумоти баргардонидашуда дар код тавсиф карда мешаванд. Функсияи сабти ном шарҳҳои иловагиро талаб мекунад - он як давраи интихоби ID-и транзаксияро оғоз мекунад, то аз 123 оғоз шавад - ин PoW-captcha дар боло тавсиф шудааст, ки аз бақайдгирии оммавӣ муҳофизат мекунад. Функсия транзаксияро бо ID-и зарурӣ пайдо мекунад ва сипас онро тавассути Waves Keeper имзо мекунад.

Барномаи шарикии DEX дар сайт дастрас аст GitHub.com.

Манбаъ: will.com

Илова Эзоҳ