ያልተማከለ፣ ክፍት ምንጭ የተቆራኘ ፕሮግራም በ Waves blockchain ላይ

በ Bettex ቡድን የ Waves Labs ስጦታ አካል ሆኖ በ Waves blockchain ላይ ያልተማከለ የተቆራኘ ፕሮግራም።

ልጥፉ ማስታወቂያ አይደለም።! ፕሮግራሙ ክፍት ምንጭ ነው, አጠቃቀሙ እና ስርጭቱ ነጻ ነው. የፕሮግራሙ አጠቃቀም የ dApp አፕሊኬሽኖችን እድገት ያበረታታል እና በአጠቃላይ ያልተማከለ አሰራርን ያበረታታል ይህም እያንዳንዱን የኢንተርኔት ተጠቃሚ ይጠቀማል።

ያልተማከለ፣ ክፍት ምንጭ የተቆራኘ ፕሮግራም በ Waves blockchain ላይ

የቀረበው dApp ለተዛማጅ ፕሮግራሞች አጋርነትን እንደ የተግባራቸው አካል ላካተቱ ፕሮጀክቶች አብነት ነው። ኮዱ ለመቅዳት እንደ አብነት ፣ እንደ ቤተ-መጽሐፍት ፣ ወይም ለቴክኒካዊ አተገባበር የሃሳቦች ስብስብ ሆኖ ሊያገለግል ይችላል።

በተግባራዊነት ፣ ይህ በመደበኛነት የተቆራኘ ስርዓት በማጣቀሻ ፣ ባለብዙ ደረጃ ሽልማቶች ለሽልማት እና በስርዓቱ ውስጥ ለመመዝገብ (ገንዘብ ተመላሽ) መመዝገብን የሚተገበር መደበኛ የተቆራኘ ስርዓት ነው። ስርዓቱ "ንጹህ" dApp ነው, ማለትም, የድር መተግበሪያ የራሱ የሆነ የጀርባ, የውሂብ ጎታ, ወዘተ ሳይኖረው ከ blockchain ጋር በቀጥታ ይገናኛል.

በሌሎች በርካታ ፕሮጀክቶች ውስጥ ጠቃሚ ሊሆኑ የሚችሉ ቴክኒኮች፡-

  • ስማርት ሂሳብን ወደ ዕዳ መጥራት ወዲያውኑ ክፍያ (በጥሪው ጊዜ ለጥሪው ለመክፈል በመለያው ላይ ምንም ምልክቶች የሉም ፣ ግን በጥሪው ምክንያት እዚያ ይታያሉ)።
  • PoW-captcha - ከከፍተኛ-ተደጋጋሚ አውቶማቲክ ጥሪዎች ወደ ስማርት መለያ ተግባራት ጥበቃ - ከካፕቻ ጋር ተመሳሳይ ነው ፣ ግን በኮምፒተር ሀብቶች አጠቃቀም ማረጋገጫ።
  • አብነት በመጠቀም የውሂብ ቁልፎች መጠይቅ።

ማመልከቻው የሚከተሉትን ያካትታል:

  • ስማርት መለያ ኮድ በ ride4dapps ቋንቋ (ይህም እንደታቀደው ወደ ዋናው ስማርት መለያ ተቀላቅሏል ለዚህም የተቆራኘ ተግባር መተግበር አለበት)።
  • በ WAVES NODE REST API ላይ የአብስትራክሽን ደረጃን የሚተገበር js ጥቅል;
  • የ vuejs ማዕቀፍ ላይ ኮድ, ይህም ቤተ መጻሕፍት እና RIDE ኮድ መጠቀም ምሳሌ ነው.

ሁሉንም የተዘረዘሩትን ባህሪያት እንገልፃለን.

ለዕዳ ብልጥ መለያ በመደወል ወዲያውኑ ክፍያ

InvokeScript መደወል ግብይቱን ከጀመረው መለያ ክፍያ መክፈልን ይጠይቃል። በሂሳባቸው ውስጥ የተወሰነ መጠን ያለው WAVES ቶከኖች ላሏቸው blockchain geeks ፕሮጀክት እየሰሩ ከሆነ ይህ ችግር አይደለም ነገር ግን ምርቱ በአጠቃላይ ህዝብ ለመጠቀም ያለመ ከሆነ ይህ ከባድ ችግር ይሆናል. ከሁሉም በላይ ተጠቃሚው የ WAVES ቶከኖችን (ወይም ለግብይቶች ለመክፈል የሚያገለግል ሌላ ተስማሚ ንብረት) መግዛት አለበት ፣ ይህም ወደ ፕሮጀክቱ ለመግባት ቀድሞውንም ትልቅ እንቅፋት ይጨምራል። ከስርዓታችን ፈሳሽ ንብረት ለማውጣት አውቶማቲክ ሲስተሞች ሲፈጠሩ ግብይቶችን መክፈል ለሚችሉ ተጠቃሚዎች ንብረቱን ማሰራጨት እንችላለን።

ኢንቮክስክሪፕትን "በተቀባዩ ወጪ" (ስክሪፕቱ የተጫነበት ዘመናዊ መለያ) መደወል ቢቻል በጣም ምቹ ይሆናል, እና እንደዚህ ያለ ዕድል, ምንም እንኳን ግልጽ በሆነ መንገድ ባይሆንም.

በ InvokeScript ውስጥ ስክሪፕት ወደ የደዋዩ አድራሻ ስታስተላልፍ፣ ለጠፋው ክፍያ ቶከኖች ማካካሻ ካደረግክ፣ በጥሪው ጊዜ ምንም እንኳን በጥሪው መለያ ላይ ምንም ንብረቶች ባይኖሩም እንዲህ ያለው ጥሪ ስኬታማ ይሆናል። ይህ ሊሆን የቻለው በቂ ቶከኖች ለማግኘት ቼክ የሚደረገው ግብይቱ ከተጠራ በኋላ ነው እንጂ ከሱ በፊት ሳይሆን ግብይቶች በዱቤ እንዲደረጉ፣ ወዲያውኑ እንዲከፈሉ ይደረጋል።

ScriptTransfer( i. ደዋይ፣ i.fee፣ ክፍል)

ከዚህ በታች ያለው ኮድ የስማርት ሂሳብ ፈንዶችን በመጠቀም ወጪ የተደረገውን ክፍያ ይመልሳል። ይህንን ባህሪ አላግባብ መጠቀምን ለመከላከል ደዋዩ ክፍያውን በሚፈለገው ንብረት እና በተመጣጣኝ ገደቦች ውስጥ እንደሚያጠፋ ቼክ መጠቀም ያስፈልጋል።

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

የሥራ ማረጋገጫ ካፕቻ የሚለው ሀሳብ አዲስ አይደለም እናም በ WAVES ላይ የተተገበሩትን ጨምሮ በተለያዩ ፕሮጀክቶች ውስጥ ተተግብሯል ። ሀሳቡ የፕሮጀክታችንን ሃብት የሚበላ ተግባር ለመፈፀም ጠሪው የራሱን ሃብት ማዋል አለበት ይህም የሀብት ቅነሳ ጥቃትን በጣም ውድ ያደርገዋል። የግብይቱ ላኪ የPoW ችግርን እንደፈታው በጣም ቀላል እና ዝቅተኛ ዋጋ ማረጋገጫ፣ የግብይት መታወቂያ ማረጋገጫ አለ፡-

ከወሰድን(toBase58String(i.transactionId)፣ 3) != “123” ከዛ ጣል(“የስራ ማረጋገጫ አልተሳካም”) ሌላ

ግብይቱን ለማከናወን ደዋዩ እንደነዚህ ያሉትን መለኪያዎች መምረጥ አለበት ስለዚህም የእሱ ቤዝ58 ኮድ (መታወቂያ) በቁጥር 123 ይጀምራል ፣ ይህም በአማካይ ከአስር ሰከንድ የአቀነባባሪ ጊዜ ጋር ይዛመዳል እና በአጠቃላይ ለተግባራችን ምክንያታዊ ነው። ቀላል ወይም ውስብስብ የሆነ PoW የሚያስፈልግ ከሆነ, ተግባሩ በቀላሉ ግልጽ በሆነ መንገድ ሊስተካከል ይችላል.

አብነት በመጠቀም የውሂብ ቁልፎች መጠይቅ

ብሎክቼይንን እንደ ዳታቤዝ ለመጠቀም፣ አብነቶችን መሰረት በማድረግ የመረጃ ቋቱን እንደ ቁልፍ ቫል ለመጠየቅ የኤፒአይ መሳሪያዎች መኖራቸው በጣም አስፈላጊ ነው። እንዲህ ዓይነቱ መሣሪያ በጁላይ 2019 መጀመሪያ ላይ በፓራሜትር መልክ ታየ ?ተዛማጆች በREST API ጥያቄ /አድራሻ/ዳታ?ተዛማጆች=regexp. አሁን ከድር አፕሊኬሽን ከአንድ በላይ ቁልፎችን ማግኘት ከፈለግን እና ሁሉንም ቁልፎች በአንድ ጊዜ ሳይሆን የተወሰኑ ቡድኖችን ብቻ ማግኘት ከፈለግን በቁልፍ ስም መምረጥ እንችላለን። ለምሳሌ፣ በዚህ ፕሮጀክት ውስጥ፣ የማውጣት ግብይቶች በኮድ ተቀምጠዋል

withdraw_${userAddress}_${txid}

አብነቱን በመጠቀም ለማንኛውም አድራሻ ገንዘብ ለማውጣት የግብይቶችን ዝርዝር እንድታገኝ ያስችልሃል፡

?matches=withdraw_${userAddress}_.*

አሁን የተጠናቀቀውን መፍትሄ አካላት እንመልከታቸው.

Vuejs ኮድ

ኮዱ ለእውነተኛው ፕሮጀክት ቅርብ የሆነ የስራ ማሳያ ነው። በ Waves Keeper በኩል መግባትን ተግባራዊ ያደርጋል እና ከ affiliate.js ቤተመፃህፍት ጋር አብሮ ይሰራል፣ ተጠቃሚውን በሲስተሙ ውስጥ ይመዘግባል፣ የግብይት ውሂብን ይጠይቃል እንዲሁም ያገኙትን ገንዘብ ወደ ተጠቃሚው መለያ እንዲያወጡ ይፈቅድልዎታል።

ያልተማከለ፣ ክፍት ምንጭ የተቆራኘ ፕሮግራም በ Waves blockchain ላይ

የ RIDE ኮድ

የመመዝገቢያ, የገንዘብ ድጋፍ እና የማውጣት ተግባራትን ያካትታል.

የመመዝገቢያ ተግባር በስርዓቱ ላይ ተጠቃሚን ይመዘግባል. ሁለት መመዘኛዎች አሉት: ሪፈር (የማጣቀሻ አድራሻ) እና የጨው መለኪያ, በተግባር ኮድ ውስጥ ጥቅም ላይ ያልዋለ, የግብይቱን መታወቂያ (PoW-captcha task) ለመምረጥ የሚያስፈልገው.

ተግባሩ (እንደ ሌሎች የዚህ ፕሮጀክት ተግባራት) የዕዳ ጥሪ ዘዴን ይጠቀማል፣ የተግባሩ ውጤት ይህንን ተግባር ለመጥራት የክፍያ ክፍያን ፋይናንስ ማድረግ ነው። ለዚህ መፍትሄ ምስጋና ይግባውና አንድ የኪስ ቦርሳ የፈጠረ ተጠቃሚ ወዲያውኑ ከስርአቱ ጋር አብሮ መስራት ይችላል እና የግብይት ክፍያ እንዲከፍል የሚያስችለውን ንብረት ለመግዛት ወይም ለመቀበል አይጨነቅም.

የምዝገባ ተግባር ውጤት ሁለት መዝገቦች ነው.

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

ይህ ፍለጋዎችን ወደ ፊት እና ወደ ኋላ ለመቀልበስ ያስችላል (የተጠቀሰው ተጠቃሚ ጠቋሚ እና የአንድ የተወሰነ ተጠቃሚ ሁሉንም ሪፈራሎች)።

የፈንዱ ተግባር እውነተኛ ተግባርን ለማዳበር የበለጠ አብነት ነው። በቀረበው ቅፅ፣ በግብይቱ የተላለፉትን ገንዘቦች በሙሉ ወስዶ በደረጃ 1፣ 2፣ 3 ለዋቢዎች ሂሳቦች፣ ወደ “ገንዘብ ተመላሽ” ሂሳብ እና “ለውጥ” ሂሳብ (ለቀድሞው ሲሰራጭ የሚቀረውን ሁሉ ያከፋፍላል)። መለያዎች እዚህ ይሄዳሉ).

ጥሬ ገንዘብ ተመላሽ ተጠቃሚው በሪፈራል ስርዓቱ ውስጥ እንዲሳተፍ የሚያነሳሳ ዘዴ ነው። ተጠቃሚው በስርዓቱ የተከፈለውን የኮሚሽኑን ክፍል በ "ገንዘብ ተመላሽ" መልክ ለማጣቀሻዎች ሽልማቶችን በተመሳሳይ መንገድ ማውጣት ይችላል.

የሪፈራል ሲስተም ሲጠቀሙ የፈንዱ ተግባር ተሻሽሎ እና ስርዓቱ የሚሰራበት የስማርት አካውንት ዋና አመክንዮ ውስጥ መካተት አለበት። ለምሳሌ፣ ለተደረገ ውርርድ የሪፈራል ሽልማት ከተከፈለ፣ የፈንዱ ተግባር ውርርዱ በተቀመጠበት ሎጂክ ውስጥ መገንባት አለበት (ወይም ሽልማቱ የሚከፈልበት ሌላ የታለመ ተግባር ይከናወናል)። በዚህ ተግባር ውስጥ ሶስት የሪፈራል ሽልማቶች በኮድ ተቀምጠዋል። ብዙ ወይም ያነሱ ደረጃዎችን ማድረግ ከፈለጉ ይህ በኮዱ ውስጥም ተስተካክሏል። የሽልማት መቶኛ በደረጃ 1-ደረጃ3 ቋሚዎች ተቀናብሯል ፣ በኮዱ ውስጥ እንደ ይሰላል መጠን * ደረጃ / 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

የስልቶቹ ተግባራዊነት ከስሞቹ ግልጽ ነው; የመመዝገቢያ ተግባር ተጨማሪ አስተያየቶችን ይፈልጋል - በ 123 እንዲጀምር የግብይት መታወቂያውን የመምረጥ ዑደት ይጀምራል - ይህ ከላይ የተገለጸው PoW-captcha ነው, ይህም ከብዙ ምዝገባዎች ይከላከላል. ተግባሩ ግብይቱን በሚፈለገው መታወቂያ ያገኛል፣ እና በ Waves Keeper በኩል ይፈርማል።

DEX የተቆራኘ ፕሮግራም በ ላይ ይገኛል። GitHub.com.

ምንጭ: hab.com

አስተያየት ያክሉ