ከመሰማራቱ በፊት የስማርት ኮንትራት አድራሻ እንዴት እንደሚወሰን፡ CREATE2ን ለ crypto ልውውጥ መጠቀም

የብሎክቼይን ርዕስ የሁሉም አይነት ማበረታቻዎች ብቻ ሳይሆን ከቴክኖሎጂ አንፃር በጣም ጠቃሚ የሆኑ ሀሳቦች ምንጭ መሆኑ አያቆምም። ስለዚህ, የፀሐይዋን ከተማ ነዋሪዎች አላለፈም. ሰዎች በቅርበት እየተመለከቱ ነው, በማጥናት, በባህላዊ የመረጃ ደህንነት ላይ እውቀታቸውን ወደ blockchain ስርዓቶች ለማስተላለፍ እየሞከሩ ነው. እስካሁን ድረስ ፣ እሱ በ ላይ ነው-ከ Rostelecom-Solar's ልማት አንዱ በብሎክቼይን ላይ የተመሠረተ ሶፍትዌር ደህንነትን ማረጋገጥ ይችላል። እና በጉዞው ላይ፣ የብሎክቼይን ማህበረሰብን ተግባራዊ ችግሮች ለመፍታት አንዳንድ ሀሳቦች ይነሳሉ ። ከእነዚህ የህይወት ጠለፋዎች አንዱ - CREATE2 ን በመጠቀም ከመሰማራቱ በፊት የስማርት ኮንትራት አድራሻን እንዴት እንደሚወስኑ - ዛሬ በቆራጩ ስር ላካፍላችሁ እፈልጋለሁ።

ከመሰማራቱ በፊት የስማርት ኮንትራት አድራሻ እንዴት እንደሚወሰን፡ CREATE2ን ለ crypto ልውውጥ መጠቀም
የCREATE2 ኦፕኮድ በቁስጥንጥንያ ሃርድ ፎርክ በየካቲት 28 ቀን ታክሏል። በEIP ላይ እንደተገለጸው፣ ይህ ኦፕኮድ በዋነኛነት ለግዛት ቻናሎች አስተዋወቀ። ሆኖም ግን, የተለየ ችግር ለመፍታት ተጠቅመንበታል.

በልውውጡ ላይ ሚዛኖች ያላቸው ተጠቃሚዎች አሉ። ለእያንዳንዱ ተጠቃሚ ማንኛውም ሰው ቶከኖችን መላክ የሚችልበት የኢቴሬም አድራሻ መስጠት አለብን፣ በዚህም መለያቸውን ይሞላሉ። እነዚህን አድራሻዎች "የኪስ ቦርሳ" ብለን እንጠራቸው. ማስመሰያዎች በኪስ ቦርሳ ውስጥ ሲደርሱ፣ ወደ ነጠላ የኪስ ቦርሳ (hotwallet) መላክ አለብን።

በሚቀጥሉት ክፍሎች ይህንን ችግር ያለ CREATE2 ለመፍታት አማራጮችን ተንትኜ ለምን እንደተዋቸው እነግርዎታለሁ። በመጨረሻው ውጤት ላይ ብቻ ፍላጎት ካሎት በ "የመጨረሻው መፍትሄ" ክፍል ውስጥ ሊያገኙት ይችላሉ.

Ethereum አድራሻዎች

በጣም ቀላሉ መፍትሔ ለአዳዲስ ተጠቃሚዎች አዲስ የኢቴሬም አድራሻዎችን መፍጠር ነው. እነዚህ አድራሻዎች የኪስ ቦርሳዎች ይሆናሉ። ቶከኖችን ከኪስ ቦርሳ ወደ ሙቅ ቦርሳ ለማስተላለፍ ተግባሩን በመደወል ግብይቱን መፈረም ያስፈልግዎታል ማስተላለፍ() ከጀርባው የኪስ ቦርሳ የግል ቁልፍ.

ይህ አቀራረብ የሚከተሉትን ጥቅሞች አሉት.

  • ቀላል ነው።
  • ቶከኖችን ከኪስ ቦርሳ ወደ hotwallet የማስተላለፍ ዋጋ ከተግባር ጥሪ ዋጋ ጋር እኩል ነው። ማስተላለፍ()

ሆኖም ግን, አንድ ትልቅ ችግር ስላለው ይህን አካሄድ ለመቃወም ወስነናል-የግል ቁልፎችን የሆነ ቦታ ማከማቸት ያስፈልግዎታል. እነሱ ሊጠፉ የሚችሉት ብቻ ሳይሆን የእነዚህን ቁልፎች መዳረሻ በጥንቃቄ ማስተዳደር ያስፈልግዎታል. ከመካከላቸው ቢያንስ አንዱ ከተጣሰ የአንድ የተወሰነ ተጠቃሚ ምልክቶች ወደ ሙቅ ቦርሳ አይደርሱም።

ከመሰማራቱ በፊት የስማርት ኮንትራት አድራሻ እንዴት እንደሚወሰን፡ CREATE2ን ለ crypto ልውውጥ መጠቀም

ለእያንዳንዱ ተጠቃሚ የተለየ ዘመናዊ ውል ይፍጠሩ

ለእያንዳንዱ ተጠቃሚ የተለየ ዘመናዊ ኮንትራት መዘርጋት በአገልጋዩ ላይ የግል ቁልፎችን ለኪስ ቦርሳ እንዳይከማቹ ያስችልዎታል። ቶከኖቹን ወደ ሙቅ ቦርሳ ለማስተላለፍ ልውውጡ ይህንን ብልጥ ውል ይጠራል።

እንዲሁም ተጠቃሚው ብልጥ ውል ሳያሰማራ የኪስ ቦርሳ አድራሻውን ማሳየት ስለማይችል (ይህ በእውነቱ ይቻላል ፣ ግን ውስብስብ በሆነ መንገድ እዚህ የማንወያይባቸው ሌሎች ጉዳቶች) ስለሆነ ይህንን መፍትሄ ትተናል። በልውውጡ ላይ አንድ ተጠቃሚ የሚፈልገውን ያህል መለያዎችን መፍጠር ይችላል፣ እና እያንዳንዱ የራሱ ቦርሳ ያስፈልገዋል። ይህ ማለት ተጠቃሚው ይህን አካውንት እንደሚጠቀም እርግጠኛ ሳንሆን ውል ለማሰማራት ገንዘብ ማውጣት አለብን ማለት ነው።

ኦፕኮድ CREATE2

የቀደመውን ዘዴ ችግር ለመፍታት, CREATE2 opcode ን ለመጠቀም ወስነናል. CREATE2 ስማርት ኮንትራቱ የሚዘረጋበትን አድራሻ አስቀድመው እንዲወስኑ ያስችልዎታል። አድራሻው የሚሰላው በሚከተለው ቀመር ነው።

keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]


, የት:

  • አድራሻ - CREATE2 የሚደውለው የስማርት ኮንትራት አድራሻ
  • ጨው - የዘፈቀደ ዋጋ
  • init_code - ለማሰማራት ስማርት ኮንትራት ባይት ኮድ

ይህ ለተጠቃሚው የምንሰጠው አድራሻ የተፈለገውን ባይት ኮድ መያዙን ያረጋግጣል። ከዚህም በላይ ይህ ብልጥ ውል በምንፈልግበት ጊዜ ሁሉ ሊሰማራ ይችላል። ለምሳሌ, አንድ ተጠቃሚ ቦርሳቸውን ለመጀመሪያ ጊዜ ለመጠቀም ሲወስኑ.
ከመሰማራቱ በፊት የስማርት ኮንትራት አድራሻ እንዴት እንደሚወሰን፡ CREATE2ን ለ crypto ልውውጥ መጠቀም
በተጨማሪም ፣ የስማርት ኮንትራቱን አድራሻ ከማጠራቀም ይልቅ ሁል ጊዜ ማስላት ይችላሉ ምክንያቱም

  • አድራሻ ይህ የኪስ ቦርሳ ፋብሪካችን አድራሻ ስለሆነ በቀመር ውስጥ ቋሚ ነው።
  • ጨው - የተጠቃሚ_መታወቂያ ሃሽ
  • init_code ተመሳሳይ የኪስ ቦርሳ ስለምንጠቀም ቋሚ ነው

ተጨማሪ ማሻሻያዎች

የቀደመው መፍትሔ አሁንም አንድ ችግር አለው: ብልጥ ኮንትራቱን ለማሰማራት መክፈል ያስፈልግዎታል. ሆኖም ግን, እሱን ማስወገድ ይችላሉ. ይህንን ለማድረግ ተግባሩን መደወል ይችላሉ ማስተላለፍ(), እና ከዛ ራስን ማጥፋት() በኪስ ቦርሳ ገንቢ ውስጥ. እና ከዚያ ዘመናዊ ኮንትራቱን ለማሰማራት ጋዝ ይመለሳል.

ከታዋቂ እምነት በተቃራኒ፣ በCREATE2 opcode ብዙ ጊዜ ብልጥ ውልን ለተመሳሳይ አድራሻ ማሰማራት ይችላሉ። ይህ የሆነበት ምክንያት CREATE2 የዒላማው አድራሻ ዜሮ መሆኑን ስለሚያረጋግጥ (በግንባታው መጀመሪያ ላይ "1" እሴት ተሰጥቷል)። በዚህ ሁኔታ, ተግባሩ ራስን ማጥፋት() በማንኛውም ጊዜ አድራሻዎችን ዳግም ያስጀምራል። ስለዚህ CREATE2ን በተመሳሳዩ ክርክሮች እንደገና ከደወሉ፣ የኖንስ ቼክ ያልፋል።

እባክዎን ይህ መፍትሔ ከ Ethereum አድራሻ አማራጭ ጋር ተመሳሳይ መሆኑን ያስተውሉ, ነገር ግን የግል ቁልፎችን ማከማቸት ሳያስፈልግ. ገንዘብን ከኪስ ቦርሳ ወደ hotwallet የማስተላለፍ ዋጋ አንድ ተግባርን ለመጥራት ከሚወጣው ወጪ ጋር እኩል ነው። ማስተላለፍ()እኛ ብልጥ ኮንትራት ማሰማራት ክፍያ አይደለም ጀምሮ.

የመጨረሻ ውሳኔ

ከመሰማራቱ በፊት የስማርት ኮንትራት አድራሻ እንዴት እንደሚወሰን፡ CREATE2ን ለ crypto ልውውጥ መጠቀም

መጀመሪያ የተዘጋጀው በ፡

  • ጨው ለማግኘት ተግባር የተጠቃሚው መለያ
  • CREATE2 opcode በተገቢው ጨው (ማለትም የኪስ ቦርሳ ፋብሪካ) የሚጠራ ዘመናዊ ውል
  • ከሚከተለው ግንበኛ ጋር ካለው ውል ጋር የሚዛመድ የኪስ ቦርሳ ባይትኮድ፡-

constructor () {
    address hotWallet = 0x…;
    address token = 0x…;
    token.transfer (hotWallet, token.balanceOf (address (this)));
    selfdestruct (address (0));
}


ለእያንዳንዱ አዲስ ተጠቃሚ የኪስ ቦርሳ አድራሻውን በስሌት እናሳያለን።

keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]


አንድ ተጠቃሚ ቶከኖችን ወደ ተጓዳኙ የኪስ ቦርሳ አድራሻ ሲያስተላልፍ፣ የእኛ የጀርባ አካል ከመለኪያው ጋር የማስተላለፍ ክስተትን ይመለከታል። _ወደ, ከኪስ ቦርሳ አድራሻ ጋር እኩል ነው. በዚህ ጊዜ የኪስ ቦርሳውን ከመዘርጋቱ በፊት የተጠቃሚውን ሒሳብ ልውውጥ ላይ ማሳደግ ይቻላል.

የኪስ ቦርሳ አድራሻ በቂ የቶከኖች ብዛት ሲከማች፣ ሁሉንም በአንድ ጊዜ ወደ hotwallet ልናስተላልፋቸው እንችላለን። ይህንን ለማድረግ የጀርባው አካል የሚከተሉትን ተግባራት የሚያከናውን የስማርት ኮንትራት ፋብሪካ ተግባርን ይጠራል።

function deployWallet (соль uint256) {
    bytes memory walletBytecode =…;
    // invoke CREATE2 with wallet bytecode and salt
}


ስለዚህ የኪስ ቦርሳ ስማርት ኮንትራት ገንቢ ተጠርቷል ፣ ይህም ሁሉንም ምልክቶች ወደ ሙቅ ቦርሳ አድራሻ ያስተላልፋል እና ከዚያም እራሱን ያጠፋል ።

ሙሉ ኮድ ማግኘት ይቻላል እዚህ. የኪስ ቦርሳውን ባይትኮድ ለማመቻቸት ወስነን እና በኦፕኮድ ስለጻፍነው ይህ የእኛ የምርት ኮድ እንዳልሆነ እባክዎ ልብ ይበሉ።

ደራሲው Pavel Kondratenkov, Ethereum ስፔሻሊስት

ምንጭ: hab.com

አስተያየት ያክሉ