ትርፍ፡
- አርቴፊሻል ኢንተለጀንስን በመጠቀም ማዕቀፎችን ፣ ሙከራዎችን እና ረቂቆችን በተረጋገጡ ቤተ-መጻህፍት (ለምሳሌ OpenZeppelin) ላይ በመመስረት የመገምገም ችሎታ እና ሰዎች የምርት ደህንነት ዋስትና እንደሚሰጡ ለመረዳት።
- በአርቴፊሻል ኢንተለጀንስ የተሰራውን የኮድ ሥሪት፣ ስርዓተ-ጥለት እና የመዳረሻ ቁጥጥር በማቀናበር፣ በመሞከር እና በ testnet የማረጋገጥ ችሎታ
- ያንን ጥንቅር መለየት መቻል ደህንነቱ የተጠበቀ መሆን ማለት አይደለም እና ቴስትኔት እና ኦዲት ማድረግ አስፈላጊ ነው።
ብልጥ ውል መፃፍ ከተራው ሶፍትዌር የተለየ ነው፡ የሚጽፉት ኮድ ይፋዊ፣ የማይለወጥ እና ገንዘብን በቀጥታ የሚያንቀሳቅስ ፕሮግራም ነው። በዚህ ክፍል ውስጥ AI እንደ ብልጥ የኮንትራት ልማት ረዳት እንዴት እንደሚጠቀሙ ይማራሉ; ከረቂቅ ምርት እስከ ለሙከራ አጻጻፍ፣ ከስርዓተ ጥለት ማስታዎሻ እስከ ጋዝ (የግብይት ክፍያ) ማመቻቸት እንማራለን። ግን ከጅምሩ ግልጽ እንሁን፡ AI ብሉፕሪንቶችን ያዘጋጃል; ሰዎች ወደ ምርት የሚገባውን ደህንነቱ የተጠበቀ ኮድ ያረጋግጣሉ።
መጀመሪያ መሬት፡ ቋንቋ እና አካባቢ
በጣም የተለመደው የስማርት ኮንትራት ቋንቋ Solidity (የ Ethereum እና EVM ቋንቋ - ኢቴሬም ቨርቹዋል ማሽን, ኮንትራቶች የሚሰሩበት ምናባዊ ማሽን - ተስማሚ ሰንሰለቶች). አማራጩ Vyper ነው (በይበልጥ የተገደበ እና ሊነበብ የሚችል ቋንቋ ያለው ፒቲን የመሰለ ቋንቋ)። ኮድዎ ጋዝ ይበላል (የእያንዳንዱ ግብይት ዋጋ ወደ blockchain); ውጤታማ ያልሆነ ኮድ ውድ ነው። እነዚህን ውሎች ለ AI በሚሰጡት አውድ ውስጥ ግልጽ ማድረግ ትክክለኛ ውጤት ለማግኘት ቁልፍ ነው።
AI በጣም ዋጋ ያለው ቦታ "ከባዶ በመጻፍ" ላይ ሳይሆን ማዕቀፉን በማምረት ላይ + ጥሩ ሻጋታ: ደረጃዎችን የሚያከብር ጅምር, ችሎታዎን የሚጨምሩበት ንድፍ.
በኮድ ውስጥ AI የመጠቀም ንብርብሮች
1. አጽሞችን ማመንጨት. AI የመደበኛ ቶከን (ERC-20) ወይም NFT (ERC-721 — ልዩ የሆነ የዲጂታል ንብረት ደረጃ) አጽም በፍጥነት ያወጣል። ነገር ግን AI የተረጋገጠ ቤተ-መጽሐፍት እንዲጠቀም ማድረግዎን ያረጋግጡ-ለምሳሌ ፣ OpenZeplin (የህብረተሰቡ ታማኝ ፣ የኦዲት መደበኛ የኮንትራት ቤተ-መጽሐፍት)። ደንቡ የደህንነት ጥበቃን ከባዶ ከመፃፍ ይልቅ የተሞከረውን ብሎክ መጠቀም ነው።
2. የተግባር መግለጫ እና ግምገማ. ያለውን ተግባር ለ AI ማብራራት የሎጂክ ስህተቶችን ቀደም ብለው እንዲለዩ ያስችልዎታል።
3. የሙከራ ማመንጨት. AI ለጠርዝ ጉዳዮች የሙከራ ጉዳዮችን በማመንጨት ጥሩ ነው-ዜሮ ግብዓት ፣ በጣም ትልቅ ቁጥር ፣ ያልተፈቀደ ደዋይ ፣ ተደጋጋሚ ጥሪ። ይህ አንዱ የተዘለለውን ሁኔታ ያስታውሰዋል።
4. ጋዝ እና ተነባቢነት. AI ውድ ቅጦችን እንደ አላስፈላጊ ማከማቻ ይጽፋል እና አማራጮችን ይጠቁማል።
ፍንጭ፡ AI ን "በOpenZeplin ኦዲት የተደረጉ ኮንትራቶች ላይ እንዲገነባ፣ ደህንነትን ከባዶ እንዲጽፍ" እዘዝ። አንድ AI የተፈተነ ቤተ መፃህፍት ከመጠቀም ይልቅ ኦሪጅናል የደህንነት ኮድ መፃፍ በጣም አደገኛ ነው።
ደካማ ጥያቄ / ጠንካራ ጥያቄ
ደካማ ጥያቄ፡
የማስመሰያ ውል ፃፉልኝ።
ይህ ጥያቄ አደገኛ ነው፡ የትኛው መስፈርት፣ የትኛው ሰንሰለት፣ የትኛው ቤተ-መጽሐፍት፣ የትኛው የደህንነት መስፈርት እንደሆነ ግልጽ አይደለም። AI በዘፈቀደ፣ ምናልባትም ጊዜ ያለፈበት ወይም ደህንነቱ ያልተጠበቀ ኮድ ይፈጥራል።
ኃይለኛ ጥያቄ፡-
የእርስዎ ሚና፡ ከፍተኛ Solidity ገንቢ። ለኢቪኤም ተኳሃኝ ሰንሰለት የ ERC-20 ማስመሰያ ረቂቅ ይፍጠሩ። ደንቦች: - በ OpenZeppelin ኦዲት የተደረገው ERC20 እና በባለቤትነት ኮንትራቶች ላይ የተመሰረተ - የ Solidity ስሪት እና ፍቃድ (SPDX) መስመርን በግልፅ ይፃፉ. - ባለቤቱ ብቻ ለማመንጨት ፈቃድ አለው; ማለቂያ በሌለው መጫን ላይ ቆብ ይጨምሩ። - ለእያንዳንዱ ተግባር የ NatSpec አስተያየት ያክሉ። - ደህንነትን ከባዶ ይፃፉ; መደበኛውን እገዳ ይጠቀሙ. - መጨረሻ ላይ ማስጠንቀቂያ ጨምር: "ይህ ረቂቅ ነው, ኦዲት እና ምርመራ ያስፈልጋል". እርግጠኛ ያልሆኑባቸውን ቦታዎች በ// TODO ምልክት ያድርጉባቸው።
ልዩነት፡ ጠንካራ ፈጣን ግልጽ ሚናን፣ ደረጃን፣ ቤተመጽሐፍትን፣ የደህንነት ወሰንን፣ ሰነዶችን እና የማረጋገጫ ተስፋዎችን ይሰጣል።
አራት ሊገለበጡ የሚችሉ አብነቶች
1) ደረጃውን የጠበቀ አጽም;
የእርስዎ ሚና፡ Solidity ገንቢ። በOpenZeppelin ኦዲት የተደረገ ቤተ-መጽሐፍት ላይ የተመሠረተ [ERC-20 / ERC-721 / staking] የውል ማዕቀፍ ይፍጠሩ። የ SPDX ፍቃድ እና የፕራግማ ስሪት ይፃፉ። ለእያንዳንዱ ውጫዊ ተግባር የመዳረሻ መቆጣጠሪያን (ማን መደወል ይችላል) ያክሉ። ደህንነትን እንደገና ማደስ; መደበኛ ብሎኮችን ይጠቀሙ። ይህ ረቂቅ ነው።
2) የተግባር ግምገማ;
እንደ ከፍተኛ ገንቢ የሚከተለውን ተግባር ይመርምሩ፡ ምን ያደርጋል፣ ምን አይነት ግዛቶች ይለውጣል፣ ማን ሊጠራው ይችላል? ሊሆኑ የሚችሉ የአመክንዮ ስህተቶችን እና የደህንነት ስጋቶችን እንደ ሃይፖቴሲስ ምልክት ያድርጉ፣ እያንዳንዱን በኮዱ ውስጥ ካለው መስመር ጋር ያገናኙ። በቀጥታ "ደህንነቱ የተጠበቀ" አትበል; የትኩረት ነጥቦችን ብቻ ይዘርዝሩ።
3) የሙከራ ሁኔታ ረቂቅ
ለዚህ ውል የሙከራ ጉዳዮችን ያቅርቡ (ለፋውንድሪ/ሃርድሃት ረቂቅ ሊሆን ይችላል። በተለይ የሽፋን ገደብ ጉዳዮች፡ ዜሮ ግብአት፣ በጣም ትልቅ ቁጥር፣ ያልተፈቀደ ጥሪ፣ የድጋሚ ጥሪ፣ በቂ ያልሆነ ገንዘብ። እያንዳንዱ ፈተና የሚያረጋግጠውን ይፃፉ።
4) ጋዝ እና ተነባቢነት ግምገማ;
በዚህ ውል ውስጥ የጋዝ ወጪን ሊቀንሱ የሚችሉ ንድፎችን ያመልክቱ-አላስፈላጊ የማከማቻ ጽሑፍ, የውጭ ጥሪ በሎፕ, ተደጋጋሚ ስሌት. በእያንዳንዱ የአስተያየት ጥቆማ በፊት/በኋላ ያለውን ልዩነት ያብራሩ። ደህንነትን የሚሰብሩ ማሻሻያዎችን ይመክራል; ግልጽ ካልሆነ "ኦዲተሩን ይጠይቁ" ይበሉ.
ሶስት ጥቃቅን ጉዳዮች (በቁጥር)
ጉዳይ 1 - አጽም ለ 4 ሰዓታት ተቀምጧል. አንድ ቡድን በ30 ደቂቃ ውስጥ ኦዲት የተደረገ ቤተመፃህፍትን መሰረት ያደረገ የቬቲንግ ውል አፅም አውጥቷል። በእጅ ~ 4 ሰአታት ፈጅቷል። ቡድኑ ለደህንነት እና ለሙከራ ጊዜ ሰጥቷል። ትርፉ የተገኘው ደህንነትን በማስተላለፍ ሳይሆን አሰልቺውን ማዕቀፍ በማፋጠን ነው።
ጉዳይ 2 - ጊዜው ያለፈበት ስሪት ወጥመድ። አይአይ ጥሬ ኢተርን በዝውውር የሚልክ ስርዓተ ጥለት ሠርቷል፣ይህም ከአሁን በኋላ አይመከርም ምክንያቱም የስልጠናው መረጃ ጊዜ ያለፈበት ነው። ገንቢው ይህንን አስተውሎ ወደ የአሁኑ የጥሪ-ተኮር እና ዳግም መግባት-የተጠበቀ ስርዓተ-ጥለት ለውጦታል። ትምህርት፡ የ AI ቤተ መፃህፍት/ስርዓተ-ጥለት ሁል ጊዜ እንደተዘመነ የተረጋገጠ ነው። AI ከስልጠናው ማብቂያ ቀን በላይ አያውቅም።
ጉዳይ 3 - የሙከራ ረቂቅ ብቅ ብሏል ድብቅ ስህተት። AI ያመረተው "ያልተፈቀደ ደዋይ" ሙከራ ገንቢው በአንድ ተግባር ውስጥ የመዳረሻ መቆጣጠሪያን እንደረሳ አሳይቷል። በ testnet ላይ በ 5 ደቂቃዎች ውስጥ የተያዘው 1 መስመር የጠፋው ባለቤት ብቻ; በአውታረ መረቡ ላይ የገንዘብ ኪሳራ ሊኖር ይችላል። ትምህርት፡ AI በፈተና ውስጥ የሰው ዓይነ ስውር ቦታን ይሸፍናል።
ከ AI ጋር የደህንነት ንድፎችን በማስታወስ ላይ
AI እንደ የማረጋገጫ ዝርዝር ያሉ የታወቁ የተጋላጭነት ንድፎችን በማስታወስ ጥሩ ነው። በጣም የተለመዱ ቅጦች:
- ዳግም መግባት፡ ሁኔታውን ሳያዘምኑ የውጭ ጥሪ ማድረግ። መፍትሄ፡ ቼኮች-ተፅዕኖዎች-የግንኙነት ቅደም ተከተል፣ የመግባት ጠባቂ።
- የመዳረሻ መቆጣጠሪያ እጥረት፡ ማንኛውም ሰው ወሳኝ ተግባሩን መጥራት ይችላል።
- ኢንቲጀር የትርፍ ፍሰት/ውድቀት፡ ዘመናዊ Solidity አብዛኞቹን ይይዛቸዋል፣ ነገር ግን አሁንም ዝቅተኛ-ደረጃ ኮድ ውስጥ ስጋት አለ።
- በቂ ያልሆነ የግቤት ማረጋገጫ፡ ዜሮ አድራሻ፣ ዜሮ ብዛት ቁጥጥር።
- Oracle ጥገኝነት፡ በውጫዊ ውሂብ (እንደ ዋጋ ያለ) ዕውር እምነት።
ትኩረት፡ AI ይህን ዝርዝር ሊያስታውሰው ይችላል፣ ነገር ግን በዝርዝሩ ውስጥ ያለው ንጥል በእርስዎ የተወሰነ ኮድ ውስጥ ስለመሆኑ ዋስትና ሊሰጥ አይችልም። የማረጋገጫ ዝርዝሩ ጅምር ነው; የእቃ መቆጣጠሪያ ምትክ አይደለም.
አውዱን በትክክል ማግኘት፡ የጥሩ ኮድ ሚስጥር ከ AI
AI የሚያወጣው ኮድ ጥራት በቀጥታ በሚሰጡት አውድ ጥራት ላይ ይወሰናል. በWeb3 ውስጥ ይህ በተለይ ወሳኝ ነው ምክንያቱም አንድ ትንሽ ዝርዝር (የትኛው ሰንሰለት፣ የትኛው የ Solidity ስሪት፣ የትኛው የማስመሰያ ደረጃ) አጠቃላይ ውጤቱን ስለሚቀይር። ጥሩ አውድ የሚከተሉትን ያጠቃልላል
- የዒላማ ሰንሰለት እና አካባቢ፡- Ethereum mainnet ወይስ Layer 2 (ከዋና ቻይን በላይ የሚሰራ ርካሽ የጎን ሰንሰለት)? የጋዝ ዋጋ እና አንዳንድ ባህሪያት በሰንሰለት ይለያያሉ.
- ስሪት እና ቤተ-መጽሐፍት፡ የትኛው የ Solidity ስሪት፣ የትኛው የOpenZeplin ስሪት? ምንም ስሪት ካልተገለጸ፣ AI ጊዜ ያለፈባቸው፣ የተቋረጡ ቅጦችን ሊያመጣ ይችላል።
- የደህንነት መስፈርቶች: ካፕ አለ, ለአፍታ ማቆም ይቻላል, መጨመር ይቻላል? እነዚህ ገና ከመጀመሪያው መባል አለባቸው.
- ገደቦች፡ እንደ "ስብሰባ አይጠቀሙ"፣ "የውጭ ጥሪን አስወግዱ"፣ "ጋዝ ማመቻቸት ግን ተነባቢነትን ጠብቅ" ያሉ ገደቦችን አጽዳ።
ሌላው ኃይለኛ ዘዴ በመጀመሪያ AI ን ለእቅዱ, ከዚያም ኮዱን መጠየቅ ነው: "መጀመሪያ የዚህን ውል ተግባራት እና እያንዳንዱ ምን እንደሚሰራ ይዘርዝሩ, ካጸደቅኩ በኋላ ኮዱን ይጻፉ." ይህ AI ወደ የተሳሳተ አቅጣጫ ሲሄድ ቀደም ብሎ ይይዛል እና የሕንፃውን ውሳኔ እንዲይዙ ያስችልዎታል።
ፍንጭ፡ AIን "ለምን ይህን ኮድ እንደዚህ ጻፍክ?" ብለው ይጠይቁ። ምክንያቱን ማብራራት ትምህርትዎን ያፋጥናል እና ማንኛውንም ምክንያታዊ ስህተቶችን (ለምሳሌ የውሸት የደህንነት ግምት) ያመጣል። የራሱን ኮድ መከላከል የማይችል የ AI ውጤትን አትመኑ።
የተለመዱ ስህተቶች
- ከባዶ ጀምሮ ደህንነትን በ AI ውስጥ ማስቀመጥ። የተፈተነ ቤተ-መጽሐፍት ተጠቀም።
- በአይአይ የተሰራውን ስሪት/ንድፍ አለማረጋገጥ። የሥልጠና መረጃ ያረጀ ሊሆን ይችላል።
- ቴስትኔትን ማለፍ። በቀጥታ ከመሄዱ በፊት እያንዳንዱ ረቂቅ በሙከራ አውታር ላይ መሮጥ አለበት።
- NatSpec/ሰነድ አለመጨመር። ምርመራ እና ጥገና አስቸጋሪ ሆኗል.
- "ተጠናቅሯል, ስለዚህ ደህንነቱ የተጠበቀ ነው" የተሳሳተ ግንዛቤ. ተዘጋጅቷል ማለት ደህንነትን መጠበቅ ማለት አይደለም።
- የመዳረሻ መቆጣጠሪያን በመርሳት ላይ። በጣም ከተለመዱት እና ውድ ከሆኑ ስህተቶች አንዱ ነው.
በማጠቃለያው
- በስማርት ኮንትራት አጻጻፍ, AI ማዕቀፎችን, ሙከራዎችን እና ረቂቆችን ይገመግማል; የሰው ልጅ የምርት ደህንነት ዋስትና ይሰጣል.
- ደህንነትን ከባዶ ሳይሆን በተረጋገጡ ቤተ-መጻሕፍት (ለምሳሌ OpenZeppelin) ላይ በመመስረት ይገንቡ።
- በYZ የተዘጋጁት ስሪቶች እና ቅጦች ወቅታዊነት ሁልጊዜ የተረጋገጠ ነው።
- የፍተሻ ማገዶዎች የሰው ዓይነ ስውር ቦታዎችን (መገደብ ጉዳዮችን፣ የመዳረሻ መቆጣጠሪያን) በመያዝ ጠቃሚ ናቸው።
- ተዘጋጅቷል ማለት ደህና መሆን ማለት አይደለም; testnet እና ኦዲት ማድረግ ግዴታ ነው።
የመተግበሪያ ተግባር
ለቀላል ERC-20 ማስመሰያ ከላይ ያለውን "በስታንዳርድ ላይ የተመሰረተ አጽም" በመጠቀም ረቂቅ ይፍጠሩ። ከዚያ፡ (1) የተረጋገጠ ቤተ መፃህፍት ይጠቀም እንደሆነ ያረጋግጡ፣ (2) የመዳረሻ መቆጣጠሪያዎችን ያረጋግጡ፣ (3) በ"የሙከራ ጉዳይ ረቂቅ" መጠየቂያ ፍተሻ ያመነጫሉ እና ቢያንስ አንድ የውሸት ደዋይ ሙከራ ያሂዱ። AI ያመለጠውን ቢያንስ አንድ የደህንነት ነጥብ ይፈልጉ እና ያስተውሉ።
የማረጋገጫ ዝርዝር
- [ ] በጥያቄው ውስጥ ያለውን መስፈርት እና ሰንሰለት በግልፅ ተናግሬያለሁ።
- [ ] የተረጋገጠ ቤተ-መጽሐፍት ላይ የተመሠረተ ምርት እፈልግ ነበር።
- [] SPDX ፈቃድ እና pragma ስሪት ይገኛል.
- [] በእያንዳንዱ ወሳኝ ተግባር ውስጥ የመዳረሻ ቁጥጥር አለ።
- [ ] ለገደብ ጉዳዮች ፈተናዎችን ፈጥሬአለሁ።
- [ ] ቤተ መፃህፍቱ/ስርዓተ-ጥለት የተዘመነ መሆኑን አረጋግጫለሁ።
- [ ] ለኦዲት እና ለሙከራ ኮድ ምልክት አድርጌያለሁ; በሜይንኔት ላይ ቁጥጥር ሳይደረግበት አላገኘሁትም።