ገንቢ ክሪስቶፍ ቨርዶት ስለ ኦንላይን ኮርስ ይናገራል' እሱም በቅርቡ አልፏል.

ስለራስዎ ትንሽ ይንገሩን. በዚህ ኮርስ ላይ ምን ፍላጎት አሳይተዋል?
ለ15 ዓመታት ያህል የድር ልማትን ሠርቻለሁ፣ በአብዛኛው እንደ ፍሪላነር።
ለታዳጊ አገሮች ለባንክ ቡድን የረዥም ጊዜ መመዝገቢያ ዌብ አፕሊኬሽን በማዘጋጀት ላይ ሳለ፣ የብሎክቼይን ማረጋገጫን በውስጡ የማዋሃድ ሥራ ገጥሞኝ ነበር። በዚያን ጊዜ ስለ blockchain ማረጋገጫ ብዙ አላውቅም ነበር፣ ምንም እንኳን ቀደም ሲል በ crypto ቴክኖሎጂዎች ላይ ፍላጎት ቢኖረኝም፣ በዋናነት እንደ ኢንቬስተር።
በውጤቱም, ይህ ተግባር አልተተገበረም, ነገር ግን ድርጅቶች እና ባንኮች ለትግበራዎቻቸው እንዲህ አይነት መፍትሄ እንደሚፈልጉ በማሰብ, ጉዳዩን ማጥናት ጀመርኩ እና ብዙም ሳይቆይ ፕሮጀክቱን ጀመርኩ. .
የእሱን የቅድመ-ይሁንታ ስሪት አዘጋጅቻለሁ፣ እሱም አስቀድሞ በአውታረ መረብ ላይ ይገኛል። በዚያን ጊዜ ምንም [የሞገድ ፕሮግራሚንግ ቋንቋ] ግልቢያ አልነበረም፣ ስለዚህ ሁሉንም ነገር በቀላል መንገድ፣ ከጎጆ JSON ጋር የትርጉም ግብይቶችን በመጠቀም ሁሉንም ነገር አደረግሁ። ነገር ግን ዋናው ግቡ Ride ከጀመረ በኋላ የበለጠ የላቀ ተግባር መጨመር ነበር። እና ትምህርቱን የተቀላቀልኩበት ዋናው ምክንያት ይህ ነው፡ የሚቀጥለው የፕሮጀክቱ እድገት ደረጃ ያልተማከለ አፕሊኬሽን (dApp) መፍጠርን ያካትታል።
የትኞቹ የትምህርቱ ገጽታዎች በጣም ቀላል ሆነው አግኝተውታል እና በጣም ፈታኝ የሆኑት?
በጣም ቀላሉ ነገር ለሁሉም ስራዎች በቂ ጊዜ ነበረን. የትምህርቱ ነጥብ አንድ ነገር መማር ነው, እና እርስ በርስ መወዳደር አይደለም. ማብራሪያዎቹ በጣም ተደራሽ ነበሩ እና ስዕሎቹ ቀላል ግን አጠቃላይ ነበሩ። ይህም የተለያዩ ርዕሶችን በዓይነ ሕሊናህ ለማየት እና ለመረዳት ረድቷል።
የቤት ሥራዎችን ስንጨርስ፣ ራሳችንን ችሎ እንድናስብ እና አንዳንድ ጊዜ በራሳችን የሆነ ነገር እንድናጠና ተበረታተናል። ይህ በክፍል ውስጥ የተካተቱትን ሀሳቦች ለመማር እና ለመረዳት ምርጡ መንገድ ነው።
ብዙ ጊዜ የንድፈ ሃሳቡን ክፍል ሙሉ በሙሉ አልገባኝም ነበር ። 'ኮፒ/መለጠፍ' እንድንሰራ አልተፈቀደልንም፣ ሁሉንም ኮድ በራሳችን መፃፍ ነበረብን፣ እና ይህ ደግሞ ሁሉንም ነገር በደንብ እንድንረዳ ረድቶናል።
በጣም አስቸጋሪው ነገር በበርካታ ምርጫዎች ውስጥ ያሉት ጥያቄዎች ሁልጊዜ ግልጽ አልነበሩም. የእኔ እንግሊዝኛ ፍፁም አይደለም፣ እና ጥያቄዎቹ የተፃፉት ተወላጅ ባልሆኑ ተናጋሪዎች ነው፣ ስለዚህ አንዳንድ ጊዜ አለመግባባቶች ነበሩ።
ምናልባት ለኦራክልስ እና ለኤንኤፍቲዎች የተሰጠው የኮርሱ ክፍል የበለጠ ዝርዝር ሊሆን ይችላል። ነገር ግን, በማንኛውም ሁኔታ, የትምህርቱ ዋና ግብ ገንቢዎችን ወለድ ነው. ከዚያ ሁሉንም ገፅታዎቹን ሙሉ በሙሉ ለመረዳት, በእርግጥ, ለመሞከር እና ለመለማመድ የተወሰነ ጊዜ ማሳለፍ ያስፈልግዎታል.
በኮርሱ ውስጥ ስለሰሩት መፍትሄ የበለጠ ይንገሩን - 'ኩፖን ባዛር'? እንዲሁም አንዳንድ የኮድ ምሳሌዎችን ማየት እችላለሁ?
አዎ፣ ‘ኩፖን ባዛር’ ላይ ሰርተናል፣ ይህ ቦታ ሰዎች የሚሸጡበት እና ኩፖኖችን የሚገዙበት የገበያ ቦታ ሲሆን ይህም እቃዎችን እና አገልግሎቶችን በአነስተኛ ዋጋ የመግዛት መብት ይሰጣቸዋል። እያንዳንዱ ኩፖን ከአቅራቢው ልዩ ቅናሽ በሚያደርግ ዲጂታል ንብረት ይወከላል.

በርካታ የመተግበሪያ ክፍሎችን ማዘጋጀት አስፈልጓል። በመጀመሪያ ደረጃ አቅራቢዎችን ለመመዝገብ እና ኩፖኖችን ለመቆጣጠር የሚያስችል ስርዓት መፍጠር አስፈላጊ ነበር. ከዚያ የማረጋገጫ ተግባር እና ለተጠቃሚዎች ኩፖኖችን የመፈለግ ችሎታ እንፈልጋለን።

በኮርሱ ወቅት የድምፅ አሰጣጥ ስርዓት እና አቅራቢዎችን ለማረጋገጥ እና ጥቁር መዝገብ ለመመዝገብ የሚያስችል ባህሪን ጨምሮ በርካታ አዳዲስ ባህሪያትን ጨምረናል።
በመጀመሪያ፣ በዘመናዊ ንብረቶች፣ ስማርት ሒሳቦች እና dApp መለያዎች መካከል ያለውን ልዩነት እና ከማረጋገጫ ተግባራት ጋር የመስራትን መሰረታዊ ነገሮች ተምረናል። አረጋጋጭ ተግባራት የመለያዎን ነባሪ ባህሪ እንዲቀይሩ ያስችሉዎታል። በነባሪነት የግብይት ፊርማዎችን ያረጋግጣሉ, ነገር ግን የማረጋገጫ ባህሪው ሌሎች "ህጎችን" እንዲያዘጋጁ ይፈቅድልዎታል.
{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
letownerPublicKey = base58'H8ndsHjBha6oJBQQx33zqbP5wi8sQP7hwgjzWUv3q95M'
@Verifier(tx)
funcverify() = {
matchtx {
cases: SetScriptTransaction=>sigVerify(tx.bodyBytes, tx.proofs[0], ownerPublicKey)
cased: DataTransaction=>true
case_ =>false
}
}ከዚያም ኩፖኖችን መጨመር ጀመርን. እኛ በጣም አስፈላጊ ከሆኑት የ dApp ተግባራት ውስጥ አንዱን ተጠቅመናል, ይህም በ blockchain ውስጥ ማንኛውንም አይነት መረጃን በቁልፍ-እሴት ጥንዶች መልክ ለመመዝገብ ያስችልዎታል - የውሂብ ግብይት. ከአዲስ ግብይት ጋር አጣምረነዋል፣ ኢንቮክስክሪፕት፣ እሱም ከብሎክቼይን ውጪ በ dApp ውስጥ ሊጠራ የሚችል ተግባር ለመጥራት የሚያገለግል ነው።
በኮርሱ ወቅት የተጠቀምንበት የውሂብ ግብይት አይነት ኩፖኖችን ወደ ገበያ ቦታ ማከል ነበር፡-
letdatajson = {
"title": "t-shirt with , vote 1",
"coupon_price": 10000000,
"old_price": 1000000000,
"new_price": 100000000,
"address": "Universe",
"description": "I want you to make love, not war, i know you've heard it before",
"image": "https://bit.ly/2EXTghg"
}
it('add item', asyncfunction(){
letts = invokeScript({
dApp: dappAddress,
call:{
function:"addItem",
args:[
{ type:"string", value: datajson.title },
{ type:"integer", value: datajson.coupon_price },
{ type:"string", value: JSON.stringify(datajson) }
]},
payment: []
}, accountSupplierSeed)
lettx = awaitbroadcast(ts)
awaitwaitForTx(tx.id)
})ይህንን መረጃ ከ addItem ተግባር ጋር ለማስኬድ እና የግዢውን ተግባር እና ሌሎች አማራጮችን ለማዳበር ተጠቃሚው ከብሎክቼይን ውጭ ሊደውልለት የሚችል ተግባርን ተጠቀምን። በውጤቱም, የገንዘብ ዝውውርን መጀመር, በ dApp የውሂብ ማከማቻ ውስጥ መረጃን መጻፍ ወይም ማዘመን, ወዘተ የመሳሰሉ የተለያዩ ተግባራትን ሊያከናውን ይችላል.
በ addItem ተግባር ውስጥ ጥቅም ላይ የዋለው የተጠራ ተግባር ምሳሌ እዚህ አለ፡-
@Callable(i)
funcaddItem(title: String, price: Int, data: String) = {
letsupplierAddress = toBase58String(i.caller.bytes)
letitem = getKeyItem(supplierAddress, title)
if( price <= 0) thenthrow("purchase amount cannot be less than item price")
elseif( getValueItemSupplier(item) !=NONE ) thenthrow("an item is already exist")
else{
WriteSet([
DataEntry(getKeyItemSupplier(item), supplierAddress),
DataEntry(getKeyItemPrice(item), price),
DataEntry(getKeyItemData(item), data)
])
}
}በኋላ የተወሰኑ ምርቶችን ለማስተዋወቅ ወይም ለማስወገድ ድምጽ እንዲሰጡ የሚያስችልዎትን የድምጽ አሰጣጥ ስርዓት አዘጋጅተናል. በድምጽ አሰጣጥ ሂደት ላይ የውጭ ተጽእኖን ለመከላከል፣ 'Commit-Reveal' የሚለውን ዘዴ ይጠቀማል።
የ"commit" ደረጃ የሃሽ ተግባር እና "ጨው" በመጠቀም የተመሰጠሩትን ድምጾች ለመሰብሰብ ይጠቅማል።
የ"መገለጥ" ደረጃ ኢንክሪፕት የተደረጉ ድምጾችን ለመሰብሰብ እና ሀሽቻቸውን ለማነፃፀር ይጠቅማል።
እዚህ ጥቅም ላይ የዋለው የተጠራ ተግባር ምሳሌ ይኸውና፡
@Callable(i)
funcvoteCommit(item: String, hash: String) = {
letuser = toBase58String(i.caller.bytes)
letcommits = getValueCommitsCount(item)
letstatus = getValueItemStatus(item)
if( commits >=VOTERS) thenthrow("reached max num of voters")
elseif(getValueCommit(item, user) !=NONE) thenthrow("user has already participated")
elseif(getKeyItemSupplier(item) ==NONE) thenthrow("item does not exist")
elseif(status !=NONE && status !=VOTING) thenthrow("voting is not possible")
else{
WriteSet([
DataEntry(getKeyCommit(item, user), hash),
DataEntry(getKeyCommitsCount(item), commits +1),
DataEntry(getKeyItemStatus(item),if(commits ==VOTERS) thenREVEAL elseVOTING)
])
}
}
>ከትምህርቱ ሌላ ምን ተማራችሁ?
ትምህርቱ በተጨማሪም ማስመሰያ እና የማይበሰብሱ ቶከኖች (NFTs) - ልዩ የሆነ ነገርን የሚወክሉ ምልክቶች እና ስለዚህ ፈንገሶች አይደሉም።
የመጨረሻው ትምህርት ለኦራክሎች የተሰጠ ነበር። blockchain ከውጭው ዓለም ውሂብ መቀበል ስለማይችል ይህንን ውሂብ ወደ እሱ ለመላክ ኦራክሎች እንፈልጋለን።
ለገበያ ቦታችን፣ ኦራክሎች ለማረጋገጥ እና አስፈላጊ ከሆነ፣ ለምሳሌ የተሸጠውን ኩፖን ያልተቀበለ አቅራቢን በጥቁር መዝገብ ውስጥ መዝገብ ያስገባ ነበር።
አንድ ምሳሌ እነሆ:
funcgetExtValueItemWhiteListStatus(item:String) = {
item +"_verifier_status"
}
letverifier = "3Mx9qgMyMhHt7WUZr6PsaXNfmydxMG7YMxv"
letVERIFIED = "verified"
letBLACKLISTED = "blacklist"
@Callable(i)
funcsetstatus(supplier: String, status: String) = {
letaccount = toBase58String(i.caller.bytes)
if( account !=verifier ) thenthrow("only oracle verifier are able to manage whitelist")
elseif( status !=VERIFIED && status !=BLACKLISTED) thenthrow("wrong status")
else{
WriteSet([
DataEntry(getExtValueItemWhiteListStatus(supplier), status)
])
}
}
ለእርስዎ በጣም ጠቃሚው ነገር ምን ነበር?
በጣም ጠቃሚው ክፍል ምደባዎች ናቸው. ለእነሱ ምስጋና ይግባው, የትምህርቱ ቁሳቁስ ይበልጥ ግልጽ ሆኗል, እና አዲስ የተገኘው እውቀት በሙከራ እና በስህተት ተጠናክሯል. ጋር ተግባራዊ ሥራ , и .
የተማርከውን በተግባር ለማዋል እንዴት አስበሃል?
ገና ከመጀመሪያው፣ ኮርሱ ፕሮጄክቴን ወደ ላቀ ደረጃ ለማድረስ ይረዳል ብዬ ጠብቄ ነበር። ሃሳቡ አሁን ኮዱን መፃፍ ነበር። በ RIDE ላይ ያለው ስሪት አስቀድሞ የሰነድ ማረጋገጫ ተግባራት አሉት፣ ግን ለ RIDE ምስጋና ይግባውና በከፍተኛ ሁኔታ ሊሻሻል ይችላል። አዲሱ ስሪት የበለጠ ተለዋዋጭ እና ሊታወቅ የሚችል እና የኢሜይሎችን የምስክር ወረቀት፣ የመድብለ ፓርቲ ስምምነቶችን ወዘተ ጨምሮ ተጨማሪ ባህሪያት ይኖረዋል።
ትምህርቱም ትኩረት የሚስብ እና ብዙ አዳዲስ ሀሳቦችን ሰጠኝ። ውጤቶቹ ወደፊትም እንደሚቀጥሉ እርግጠኛ ነኝ።
ምንጭ: hab.com
