Ontology Wasm ቴክኖሎጂ የ dApp ስማርት ኮንትራቶችን ውስብስብ የንግድ አመክንዮ ወደ blockchain ለማዛወር የሚወጣውን ወጪ ይቀንሳል፣ በዚህም የ dApp ምህዳርን በእጅጉ ያበለጽጋል።
В настоящее время
ከዝገት ጋር የ WASM ውል ማዳበር
ውል ይፍጠሩ
የሚፈጥረው የፕሮጀክት መዋቅር፡-
የCargo.toml ፋይል መሰረታዊ የፕሮጀክት መረጃን እና ጥገኛ የቤተ-መጽሐፍትን መረጃ ለማዘጋጀት ይጠቅማል። የፋይሉ [lib] ክፍል ወደ crate-type = ["cdylib"] መዋቀር አለበት። የlib.rs ፋይል የኮንትራቱን አመክንዮ ኮድ ለመጻፍ ይጠቅማል። በተጨማሪም፣ በCargo.toml ውቅር ፋይል ውስጥ የጥገኝነት መለኪያዎችን ወደ [ጥገኛዎች] ክፍል ማከል አለብህ፡
በዚህ ጥገኝነት፣ ገንቢዎች ከኦንቶሎጂ blockchain ጋር መስተጋብር የሚፈጥሩ በይነገጾችን እና እንደ ተከታታይነት መለኪያ ያሉ መሳሪያዎችን ሊጠሩ ይችላሉ።
የኮንትራት መግቢያ ተግባር
እያንዳንዱ ፕሮግራም የግቤት ተግባር አለው፣ ልክ እንደ ዋናው ተግባር ዘወትር እንደምናየው፣ ውሉ ግን ዋና ተግባር የለውም። Rustን በመጠቀም የWasm ውል ሲፈጠር፣ ነባሪው መጠሪያ ተግባር ውሉን ለመጠቀም እንደ ግብዓት ተግባር ሆኖ ያገለግላል። በቨርቹዋል ማሽን ሊሰራ የሚችል የRust ምንጭ ኮድ ወደ ባይትኮድ ሲዘጋጅ በሩስት ውስጥ ያለ ተግባር ስም ግልጽ አይሆንም። አቀናባሪው ተደጋጋሚ ኮድ እንዳያመነጭ እና የውሉን መጠን ለመቀነስ የጠሪ ተግባር #[no_mangle] ማብራሪያን ይጨምራል።
የመጥሪያው ተግባር ግብይቱን ለማስፈጸም መለኪያዎችን እንዴት ያገኛል?
የ ontio_std ላይብረሪ ግብይትን ለማስፈጸም መለኪያዎችን ለማግኘት የሩጫ ጊዜ ::ግቤት() ተግባርን ይሰጣል። ገንቢዎች የተገኘውን ባይት አደራደር ከስራ ለማራገፍ ZeroCopySourceን መጠቀም ይችላሉ። የመጀመሪያው ባይት የሚነበብበት የጥሪ ዘዴ ስም ሲሆን ከዚያም የስልት መለኪያዎችን ይከተላል።
የኮንትራቱ አፈፃፀም ውጤት እንዴት ይመለሳል?
በ ontio_std ቤተ-መጽሐፍት የቀረበው የሩጫ ጊዜ :: ret ተግባር የአንድ ዘዴ አፈፃፀም ውጤትን ይመልሳል።
የተጠናቀቀው የጥሪ ተግባር ይህን ይመስላል።
የኮንትራት ውሂብን ተከታታይ ማድረግ እና ማሰናከል
ኮንትራቶችን በማዘጋጀት ሂደት ውስጥ ገንቢዎች ሁልጊዜ የመለያየት እና የመቀነስ ችግር ያጋጥማቸዋል ፣በተለይ የመረጃ ቋቱን እንዴት በመረጃ ቋቱ ውስጥ ማከማቸት እና የ struct data typeን ለማግኘት ከውሂብ ጎታ የተነበበ ባይት ድርድር እንዴት ማጥፋት እንደሚቻል።
የ ontio_std ቤተ-መጽሐፍት ለመረጃ ተከታታይነት እና ለመለያየት ዲኮደር እና ኢንኮደር በይነገጾችን ያቀርባል። የአወቃቀሩ መስኮችም ዲኮደር እና ኢንኮደር በይነገጾችን በመተግበር አወቃቀሩ ተከታታይነት ያለው እና የተከታታይ እንዲሆን። የተለያዩ የመረጃ ዓይነቶች ተከታታይ ሲሆኑ የሲንክ ክፍል ምሳሌዎች ያስፈልጋሉ። የሲንክ ክፍል ምሳሌ የባይት አይነት ውሂቡን የሚያከማች የ set-type field buf አለው፣ እና ሁሉም ተከታታይነት ያለው መረጃ በቡፍ ውስጥ ይከማቻል።
ለቋሚ ርዝመት ውሂብ (ለምሳሌ: ባይት, u16, u32, u64, ወዘተ.) ውሂቡ በቀጥታ ወደ ባይት ድርድር ይቀየራል እና ከዚያም በ buf ውስጥ ይከማቻል; ቋሚ ያልሆነ ርዝመት ላለው መረጃ በመጀመሪያ ርዝመቱ ተከታታይ መሆን አለበት ከዚያም ዲዳታ (ለምሳሌ ያልታወቀ መጠን ያልታወቀ ኢንቲጀር u16, u32, ወይም u64, ወዘተ ጨምሮ)።
ማጥፋት ፍጹም ተቃራኒ ነው። ለእያንዳንዱ ተከታታይ ዘዴ, ተመጣጣኝ የዲሴሪያላይዜሽን ዘዴ አለ. መናድ የምንጭ ክፍል ሁኔታዎችን መጠቀምን ይጠይቃል። ይህ ክፍል ምሳሌ ሁለት መስኮች buf እና pos አለው። Buf ውሂቡ እንዲጠፋ ለማድረግ ጥቅም ላይ ይውላል እና pos የአሁኑን የንባብ ቦታ ለማከማቸት ይጠቅማል። አንድ የተወሰነ የውሂብ አይነት በሚነበብበት ጊዜ, ርዝመቱን ካወቁ, ለማይታወቅ ርዝመት, በቀጥታ ማንበብ ይችላሉ - መጀመሪያ ርዝመቱን ያንብቡ እና ይዘቱን ያንብቡ.
በሰንሰለቱ ውስጥ ያለውን ውሂብ ይድረሱ እና ያዘምኑ
ኦንቶሎጂ-wasm-cdt-ዝገት - በሰንሰለቱ ውስጥ ካለው መረጃ ጋር አብሮ ለመስራት የሚያስችል የአሠራር ዘዴን አቅርቧል ፣ ይህም ለገንቢዎች እንደ ሰንሰለት ውስጥ ያሉ መረጃዎችን ማከል ፣ መሰረዝ ፣ መለወጥ እና መጠይቆችን ለመተግበር ምቹ ነው ።
- ዳታቤዝ:: አግኝ (ቁልፍ) - ከሰንሰለቱ መረጃን ለመጠየቅ ጥቅም ላይ ይውላል, እና ቁልፍ ጥያቄዎች የ AsRef በይነገጽ ትግበራ;
- የውሂብ ጎታ :: አስቀምጥ (ቁልፍ, እሴት) - በአውታረ መረቡ ላይ ውሂብ ለማከማቸት ጥቅም ላይ ይውላል. ቁልፍ የ AsRef በይነገጽ ትግበራ ይጠይቃል፣ እና ዋጋ የኢንኮደር በይነገጽን ተግባራዊ ለማድረግ ይጠይቃል።
- ዳታቤዝ::ሰርዝ(ቁልፍ) - ከሰንሰለቱ ውስጥ መረጃን ለማስወገድ ጥቅም ላይ ይውላል, እና ቁልፍ የ AsRef በይነገጽ ትግበራ ይጠይቃል.
የኮንትራት ሙከራ
የኮንትራት ዘዴዎች ሲተገበሩ በሰንሰለቱ ላይ ያለውን መረጃ ማግኘት እንፈልጋለን እና የውሉን ባይት ኮድ ለማስፈፀም አግባብ ያለው ቨርቹዋል ማሽን እንፈልጋለን ስለዚህ በአጠቃላይ ለሙከራ ውሉን በሰንሰለቱ ላይ ማሰማራት አስፈላጊ ነው. ነገር ግን ይህ የመመርመሪያ ዘዴ ችግር ያለበት ነው. ገንቢዎች ኮንትራቶችን ለመፈተሽ ቀላል ለማድረግ የ ontio_std ላይብረሪ ለሙከራ የማስመሰል ሞጁል ይሰጣል። ይህ ሞጁል በወረዳው ውስጥ ያለውን መረጃ ማስመሰልን ያቀርባል, ይህም ገንቢዎች በውሉ ውስጥ ያሉትን ዘዴዎች አንድ ላይ እንዲሞክሩ ቀላል ያደርገዋል. የተወሰኑ ምሳሌዎችን ማግኘት ይቻላል
የኮንትራት ማረም
console ::ማረም(msg) ውልን በማረም ጊዜ የማረም መረጃን ያሳያል። የ msg መረጃ ወደ መስቀለኛ መንገድ መዝገብ ውስጥ ይታከላል። ቅድመ ሁኔታ የአካባቢው የኦንቶሎጂ ሙከራ መስቀለኛ መንገድ በሚሄድበት ጊዜ የምዝግብ ማስታወሻውን ደረጃ ወደ ማረም ሁነታ ማዘጋጀት ነው።
Runtime:: Notify(msg) ውሉ በሚታረምበት ጊዜ ተገቢውን የማረም መረጃ ያወጣል። ይህ ዘዴ ወደ ሰንሰለቱ የገባውን መረጃ ያከማቻል እና የ GetSmartCodeEvent ዘዴን በመጠቀም ከሰንሰለቱ ሊጠየቅ ይችላል።
ጽሑፉ የተተረጎመው በ Hashrate&Shares አዘጋጆች በተለይ ለኦንቶሎጂ ሩሲያ ነው።
ማልቀስ
ገንቢ ነህ? የእኛን የቴክኖሎጂ ማህበረሰብ በ ላይ ይቀላቀሉ
ተዋረዳዊ
ምንጭ: hab.com