ያለፉትን ጥቂት ዓመታት አዝማሚያዎች ከተመለከትን, ስለ blockchain ሁልጊዜ ሰምተናል, ነገር ግን ስለ ልዩነቱ ብዙ አይደለም.
እንደ Bitcoin፣ Ethereum፣ Dogecoin፣ Matic እና ሌሎች ያሉ ምስጢራዊ ምንዛሬዎች በብሎክቼይን ቴክኖሎጂ ላይ እንደሚመሰረቱ ሁላችንም እናውቃለን። በ2021 በርካታ ኢንዱስትሪዎችን ያበጁ እና ለአዳዲስ ስኬቶች መንገድ የከፈቱትን ጉልህ ክንውኖች Blockchain መርቷል።
ብሎክቼይን ለማርትዕ፣ ለመጥለፍ ወይም ለማጭበርበር ከባድ ወይም የማይቻል በሆነ መንገድ መረጃን የማከማቸት ዘዴ ነው። እሱ የተባዛ እና በብሎክቼይን አጠቃላይ የኮምፒዩተር ሲስተም አውታረመረብ ላይ የሚሰራጭ የግብይቶች ዲጂታል ደብተር ነው።
ሁሉንም ክሪፕቶ ምንዛሬዎችን በተግባር የሚያጎናጽፈው መሬት የሰበረ የመረጃ ቋት ቴክኖሎጂ ነው። ብሎክቼይን የመረጃ ቋቱን ተመሳሳይ ቅጂዎች በመላው አውታረመረብ ላይ በማሰራጨት ስርዓቱን ለመጥለፍ ወይም ለማጭበርበር በሚያስደንቅ ሁኔታ ከባድ ያደርገዋል።
Bitcoin አሁን ለብሎክቼይን በጣም ታዋቂው ጥቅም ላይ ሲውል ፣ ቴክኖሎጂው በጣም ብዙ የተለያዩ አፕሊኬሽኖችን ሊያገለግል ይችላል።
በቅርብ ዓመታት ውስጥ ክሪፕቶ ምንዛሬዎች እና blockchains በጣም ተወዳጅ እየሆኑ መጥተዋል, እና ይህ አዝማሚያ እንደሚቀጥል ይጠበቃል.
በዚህ ማጠናከሪያ ትምህርት ውስጥ ቀላል ብሎክቼይንን ከጃቫ ስክሪፕት ጋር እንሰራለን። blockchain እንዴት እንደሚሰራ መሰረታዊ ግንዛቤ ይሰጥዎታል።
MelodyCoin ን እንለው እና ወደ ተግባር እንግባ!
ብሎክ መፍጠር
ለመጀመር፣ ሁሉንም ኮዳችንን የምናስቀምጥበት አዲስ የጃቫ ስክሪፕት ፋይል እንፈጥራለን።
ዋና.js ብለን እንጠራው እና blockchain እና ብሎኮች እንዴት መምሰል እንዳለባቸው በመግለጽ እንጀምር።
የብሎክ ክፍል ይፍጠሩ እና ለመጀመር ዓላማ () {[native code] } ተግባር ይስጡት።
አዲስ ብሎክ ሲፈጥሩ ቀን እና የቀደመውን ብሎክ ሃሽ መስጠት አለቦት፡-
የእያንዳንዱ ንብረት ፍቺዎች እነኚሁና፡
- የጊዜ ማህተሙ እገዳው መቼ እንደተሰራ ያሳያል። የመረጡትን ቅርጸት መጠቀም ይችላሉ (በዚህ አጋጣሚ የ UNIX የጊዜ ማህተም)።
- ከዚህ ብሎክ ጋር ለመገናኘት የሚፈልጉት ማንኛውም አይነት የውሂብ አይነት በመረጃ መለኪያው ውስጥ ሊካተት ይችላል። ክሪፕቶፕ መፍጠር ከፈለጉ እንደ ላኪ/ተቀባዩ እና እዚህ የተወሰደውን የገንዘብ መጠን የመሳሰሉ የግብይት መረጃዎችን ማስቀመጥ ይችላሉ።
- የቀደመው ሃሽ የቀደመው ብሎክን ሃሽ የሚይዝ ሕብረቁምፊ ነው። የብሎኮችን ሰንሰለት የሚያመነጨው ይህ ነው፣ ይህም በኋላ የእኛን blockchain ታማኝነት ለማቅረብ ወሳኝ ይሆናል።
Hashes መፍጠር
እያንዳንዱ ብሎክ ወደ ቀዳሚው ብሎክ ያገናኛል (ስለዚህ የቀደመው የሃሽ ንብረት)። ያም ማለት እያንዳንዱ ብሎክ ሃሽ ያስፈልገዋል። ሃሽ ከጣት አሻራ ጋር ተመሳሳይ ነው። ለእያንዳንዱ እገዳ የተለየ ነው.
የብሎክ ሃሽ ሁሉንም ይዘቶቹን በሃሽ ተግባር ውስጥ በማለፍ ሊሰላ ይችላል።
እንግዲያው የአሁኑን ብሎክ ሃሽ የሚያሰላ ተግባር በመተግበር እንጀምር።
ስለዚህ፣ በብሎክ ክፍል ስር፣ የሂሳብ ሃሽ ተግባርን እንገልፃለን፡-
ነገር ግን፣ SHA256 hash በጃቫስክሪፕት አይደገፍም እና ከውጭ ቤተ-መጽሐፍት መገኘት አለበት።
Crypto-js የበርካታ ሃሽ ስልተ ቀመሮችን የሚያካትት ድንቅ ጥቅል ነው።
ከዚያ ወደ ዋናው የjs ኮድ ልናስገባው እንችላለን።
አሁን የሂሳብ ሃሽ() ተግባራችን ስላለን በብሎክ ተግባራችን ውስጥ እንጠቀምበት፡-
ብሎክ ምን እንደሚመስል ከገለፅን በኋላ፣ Blockchain ምን መምሰል እንዳለበት መግለፅ እንችላለን። ስለዚህ አዲስ ክፍል እንፍጠር።
በዚህ ሁኔታ, blockchain የንብረት ሰንሰለት ያለው በጣም ቀላል ነገር ነው. ይህ በሰንሰለቱ ላይ ያሉትን ሁሉንም ብሎኮች የሚይዝ ድርድር ነው።
ብሎኮችን ከመጨመራችን በፊት መጀመሪያ “የጄኔሲስ ብሎክ” የሚባለውን መፍጠር አለብን። ይህ በሰንሰለቱ ውስጥ የመጀመሪያው እገዳ ነው, እና ወደ ቀድሞ እገዳው ሊያመለክት ስለማይችል ልዩ ነው (የመጀመሪያው ነው!).
ስለዚህ፣ የጄኔሲስ ብሎክን ለመገንባት፣ ለክፍላችን ፍጥረት ጀነሲስ ብሎክ () የተባለ ተግባር እጨምራለሁ ። ወደ Blockchain ክፍላችን Object() {[native code]} ወደ ተግባር ተመለስ።
አዲስ የብሎክቼይን ምሳሌ በምንገነባበት ጊዜ የዘፍጥረት ብሎክን አሁን ማካተት እንችላለን፡-
Blockchain ዘዴዎች
አሁን፣ አዳዲስ ብሎኮችን ማከል እና የቅርብ ጊዜውን ብሎክ ማምጣት ያሉ ነገሮችን እንድናደርግ የሚያስችለንን ዘዴዎችን ወደ Blockchain ክፍላችን እንጨምር።
የgetLatestBlock ተግባር በጣም መሠረታዊ ነው። በቀላሉ የሰንሰለት ድርድር የመጨረሻውን አባል ይመልሳል፡-
የ addBlock ቴክኒክ ትንሽ ተጨማሪ ተሳትፎ አለው።
በሰንሰለታችን ላይ አዲስ ብሎክ ከመጨመራችን በፊት በመጀመሪያ የብሎክን የቀደመውን የሃሽ መስክ በትክክል ማዘጋጀት አለብን።
ወደ ሰንሰለታችን በጣም በቅርብ ጊዜ የተጨመረው ብሎክ ወደ ሃሽ መቀናበር አለበት። እንዲሁም የአዲሱን ብሎክ ሃሽ ማስላት አለብን፡-
ሙከራ
የእኛ MelodyCoin እንዴት እንደወጣ እንይ።
ይህንን ለማሳካት blockchain ምሳሌ ይፍጠሩ። ሁለት ተጨማሪ ብሎኮችን እንጨምር፡-
እዚያ ሁለት አዳዲስ ብሎኮችን ሠርተናል። አሁን የእኛ ብሎክቼይን ምን እንደሚመስል እንይ።
MelodyCoin በአራት ቦታዎች ይቀረፃል፡
የብሎክቼይንን ታማኝነት ያረጋግጡ
ብሎክቼይን በጣም ጥሩ ነው ምክንያቱም ብሎክ አንዴ ከተጨመረ የቀረውን ሰንሰለት ሳያበላሽ ሊስተካከል አይችልም።
ሆኖም ግን በዚህ ትግበራ የኛን blockchain ታማኝነት ለማረጋገጥ ምንም ዘዴ የለም.
የ isChainValid ተግባርን ከብሎክቼይን ጋር እናስተዋውቅ። ሰንሰለቱ ህጋዊ ከሆነ, ወደ እውነት ይመለሳል; ያለበለዚያ በሐሰት ይመለሳል።
ታማኝነትን በመሞከር ላይ
አሁን የብሎክቼይንን ታማኝነት መፈተሽ እንችላለን። አሁን ከፈጸምነው ሰንሰለታችን እውነተኛ መሆኑን ያረጋግጣል።
አሁን የእኛን blockchain ለማበላሸት እንሞክር። ብሎክ 2ን ቀይረን ይዘቱን እንፃፍ (ከአራት ይልቅ 100 ሳንቲም አስተላልፈናል እንበል)።
ይህንን ስናከናውን ሶፍትዌሩ ሰንሰለቱን ለማበላሸት የምናደርገውን ጥረት እንደሚገነዘብ እናያለን።
ሆኖም፣ በዚህ ውስጥ ጣልቃ የምገባበት ሌላ ዘዴ እንዳለ ማመን ትችላለህ። በብሎኩ ውስጥ ያለውን ይዘት ቀይሬያለው ግን ሃሽውን እንደገና አላሰላም። ስለዚህ ጎበዝ ለመሆን መሞከር እና የዚያን ብሎክ ሃሽ እንደገና ማስላት ይችላሉ።
ለትናንሽ የብሎክቼይን ማዋቀር የነበረው ያ ብቻ ነው! አዳዲስ ብሎኮችን እንድንጨምር እና በሰንሰለቱ ውስጥ ያለውን መረጃ መጣስ እንድንለይ ያስችለናል።
በትንሿ blockchain ልንመለከታቸው የሚገቡ ሁለት ጉዳዮች አሉ።
- ዘመናዊ ኮምፒውተሮች እጅግ በጣም ፈጣን ናቸው እና በሰከንዶች ውስጥ በሺዎች የሚቆጠሩ ብሎኮችን ወደ ሰንሰለታችን ሊጨምሩ ይችላሉ። ማንም ሰው የእኛን blockchain አይፈለጌ መልእክት እንዲልክ አንፈልግም።
- የእኛ ብሎክቼይን አሁንም ለመጎሳቆል የተጋለጠ ነው። የብሎክን ይዘቶች ማዘመን እና ከዚያ በቀላሉ ሃሾችን (እና የቀደመውን ሃሽ) ለሚከተሉት ብሎኮች እንደገና ማስላት ይችላሉ። ብተወሳኺ እኳ እንተ ዀነ፡ ህጋዊ ሰንሰለት ንዘለዎ ኽልተ መገዲ ኽንረክብ ኣሎና።
እነዚህን ስጋቶች ለመፍታት blockchains “የስራ ማረጋገጫ” በመባል የሚታወቅ ዘዴን ይጠቀማሉ። ይህን አካሄድ ተጠቅመው ብሎክ ለመፍጠር ከፍተኛ መጠን ያለው የስሌት ሃብቶችን እንደተጠቀሙ ማሳየት አለቦት። ይህ ደግሞ ይባላል የማዕድን.
የሥራ ማረጋገጫ የብሎክ ሃሽ በተወሰነ የዜሮ መጠን እንዲጀምር ይጠይቃል። ግን የእርስዎ ሃሽ ከዚህ ህግ ጋር የሚስማማ መሆኑን እንዴት ማወቅ ይችላሉ?
የብሎክ ይዘት ሃሽነቱን ይወስናል። ስለዚህ ይዘቱን እስካልቀየርን ድረስ ሁል ጊዜ ተመሳሳይ ሃሽ እናገኛለን።
እያንዳንዱ ብሎክ እንደ መፍትሄ ያልተጨመረ ዋጋ ሊኖረው ይገባል። ይህ በመሠረቱ የኛ ብሎክ ሃሽ በበቂ ዜሮዎች እስኪጀምር ድረስ ማዘመን የምንችለው አንዳንድ የዘፈቀደ ውሂብ ነው። የሃሽ ተግባርን ውጤት መቀየር ስላልቻልክ ብዙ የተለያዩ ውህዶችን መሞከር እና ለበጎ ነገር ተስፋ ማድረግ አለብህ።
ማዕድንን ወደ ብሎክቼይን ያስተዋውቁ
በብሎክ ክፍላችን ውስጥ ኖንስ በማካተት እንጀምር። በብሎክ ሃሽ ላይ ተጽዕኖ ለማድረግ ልንቀይረው የምንችለው በእኛ ብሎክ ውስጥ ያለው ነጠላ እሴት ነው።
የጊዜ ማህተሙን ወይም ውሂቡን መቀየር አልቻልንም።
በመቀጠል፣ የብሎክን ትክክለኛ ማዕድን የሚያከናውን mineBlock() ተግባርን እንፃፍ። ይህ ተግባር አስፈላጊውን ችግር እንደ መለኪያ ይላካል እና የኛ ብሎክ ሃሽ በበቂ ዜሮዎች እስኪጀምር ድረስ መተግበሩን ይቀጥላል።
የእኛ ሃሽ በበቂ ዜሮዎች እስኪጀምር ድረስ የሚሄድ መሰረታዊ የትንሽ ሉፕ ሰራሁ። ምን ያህል ዜሮዎች እንደሚያስፈልጉ ለመወሰን አስቸጋሪነቱን እንጠቀማለን. በ 5 ችግር, የእኛ ሃሽ በ 5 ዜሮዎች መጀመር አለበት.
የእኛ ሃሽ በቂ ዜሮዎችን በማይይዝበት ጊዜ፣ ኖንስን አንድ በአንድ ከፍ እና ሀሽ እንደገና እናሰላለን። እና ከችግር ጋር የሚዛመድ ሃሽ ካገኘን ወደ ኮንሶሉ ውስጥ እናስገባዋለን።
አንድ ተጨማሪ ማድረግ ያለብን ነገር አለ። በእኛ የሂሳብ ሃሽ ዘዴ ውስጥ የማይለዋወጥ ተለዋዋጭን በትክክል አናስብም፣ ስለዚህ እዚህ አለ፡-
Blockchain ክፍል
ይህንን አዲስ አቀራረብ በብሎክቼይን ክፍላችን ውስጥ እንፈትነው እና እንዴት እንደሚሄድ እንይ።
ለመጀመር የኛን blockchain ችግር በተግባሩ Object() እገልጻለሁ። በኋላ የሆነ ቦታ ልንጠቀምበት ስለምንችል እዚህ እንገልፃለን።
የ addBlock ተግባር ወደ ሰንሰለታችን ከመጨመራችን በፊት ብሎክን እንዲያወጣ መስተካከል አለበት።
ብሎክቼይን ተጠቀም
አሁን፣ አዲሱን ብሎክቼይን ከስራ ማረጋገጫ-አልጎሪዝም ጋር እናስቀምጠው። እዚህ፣ ሁለት የኮንሶል.ሎግ መግለጫዎችን ያክሉ።
ይህንን ኮድ ስንፈጽም, የማዕድን ሂደቱ በተለይ ፈጣን እንዳልሆነ ልንገነዘብ እንችላለን.
ስልተ ቀመር በሶስት ዜሮዎች የሚጀምሩ (በችግር እንደተዋቀረ) ብሎኮችን በሃሽ ለማመንጨት የተወሰነ ጊዜ ይወስዳል።
ስለዚህ የእኛ መሰረታዊ የብሎክቼይን ዝግጅት መጨረሻ ነበር።
ለስራ ማረጋገጫ ዘዴ ምስጋና ይግባውና አዳዲስ ብሎኮች ወደ እኛ blockchain በምን ያህል ፍጥነት እንደሚጨመሩ መቆጣጠር እንችላለን።
በብሎክቼን ላይ በጣም አስፈላጊው የደህንነት ባህሪ ነው። እና አሁን እንዴት እንደሚሰራ ሲረዱ, የራስዎን መፍጠር ይቀጥሉ!
መልስ ይስጡ