መነሻ / ደህንነትና ወጥመድ መከላከል / የቶከን ፈቃድ ስጋትና ፈቃድ መሰረዝ
የቶከን ፈቃድ (approve) ስጋትና ፈቃድ መሰረዝ
ከሁሉም የሚያም ዓይነት ኪሳራ ይህ ነው፦ የግል ቁልፍ አልተጋለጠም፣ ሲድ ፍሬዙ ደህና ነው፣ ሃርድዌር ዋሌቱም ቦታው ላይ ነው — ሆኖም ከወራት በፊት ተሰጥቶ የተረሳ አንድ አሮጌ ፈቃድ ተመዝዞ ቶከኖቹ በአንድ ጊዜ ይወሰዳሉ። ተጎጂው ግራ ተጋብቶ «እኮ ምንም አላደረግሁም» ይላል። ችግሩ ግን በዚያው «ምንም አላደረግሁም» ውስጥ ነው፦ በወቅቱ የተጫኑት ፈቃድ ፈጽሞ አልተዘጋም ነበር። ይህ ጽሑፍ ፈቃድ ምን እንደሆነ በግልጽ ያስረዳል፤ የተረሱ በሮችንም አንድ በአንድ እንዴት እንደሚዘጉ ያሳያል።
approve እና allowance በትክክል ምንድን ናቸው
መጀመሪያ ሁለቱን ቃላት እናጥራ። እንደ Ethereum ባሉ ቼይኖች ላይ አብዛኞቹ ቶከኖች ERC-20 የተባለ ደረጃ ይከተላሉ። በዚህ ደረጃ ውስጥ ሁለት ተያያዥ ነገሮች አሉ፦ approve — ፈቃድ (approve) መስጠት — እና allowance — የፈቀዱት ጣሪያ።
ጉዳዩ ከዕለት ተዕለት ሕይወት ብዙም አይርቅም። ቶከንዎ በአድራሻዎ ስም ተመዝግቧል፤ ሌላ ኮንትራት በራሱ ሊነካው አይችልም። ነገር ግን ብዙ ሁኔታዎች ኮንትራቱ በእርስዎ ስም ቶከን እንዲያስተላልፍ ይጠይቃሉ — ለምሳሌ በአንድ ያልተማከለ ኤክስቼንጅ ላይ ልውውጥ ሲያደርጉ፣ ኮንትራቱ ቶከንዎን ወስዶ ከሌላው ወገን ጋር መለወጥ አለበት። ለዚህ በመጀመሪያ አንድ approve ይፈርማሉ፤ ለቶከኑ ኮንትራት እንዲህ ይላሉ፦ «ለዚህ የተወሰነ ኮንትራት፣ ከዚህ ቶከኔ ቢበዛ X ያህል እንዲያንቀሳቅስ ፈቅጃለሁ።» ያ የተፈቀደው ጣሪያ allowance ይባላል። ከዚያ በኋላ ኮንትራቱ በጣሪያው ውስጥ እስከሆነ ድረስ ቶከንዎን ሲያንቀሳቅስ በየጊዜው እርስዎን መጠየቅ አያስፈልገውም — ልክ ለአንድ ተቋም በሞባይል ገንዘብ መለያዎ ላይ እስከ ተወሰነ መጠን የመቁረጥ ቋሚ ፈቃድ እንደመስጠት ነው።
ስለዚህ ፈቃድ በራሱ መጥፎ ነገር አይደለም፤ የቼይን ላይ መስተጋብር አስፈላጊ አሠራር ነው። ችግሩ በሁለት ዝርዝሮች ውስጥ ተደብቋል፦ አንደኛ፣ ጣሪያው «ያልተገደበ» ተብሎ ሊቀመጥ ይችላል፤ ሁለተኛ፣ ፈቃድ አንዴ ከተሰጠ በራሱ ጊዜ አያልቅም — እርስዎ ፈቃድ መሰረዝ እስካላደረጉ ድረስ ተንጠልጥሎ ይቆያል። ስለ ERC-20 የፈቃድ አሠራር መደበኛ ትርጓሜ የ Ethereum ኦፊሴላዊ የገንቢዎች ሰነድ (ethereum.org developers docs) የ approve / transferFrom ፍሰትን በሚገባ ያብራራል፤ ፈቃድ ከደህንነት አንጻር ለምን አደገኛ እንደሆነ ለመረዳት ደግሞ የ Ethereum የደህንነት ገጽ «የሚፈርሙትን እያንዳንዱን ፈቃድ በጥንቃቄ ይመልከቱ» ብሎ በተለይ አሳስቧል።
ያልተገደበ ፈቃድ አደጋው የት ነው
ብዙ dApp-ዎች በነባሪ «ያልተገደበ ፈቃድ» እንዲፈርሙ የሚያደርጉት ለምንድን ነው? ለምቾት ነው — አንዴ ከፈቀዱ በኋላ ስንት ጊዜም ቢገናኙ እንደገና መፈረምና ያን የፈቃድ የ gas ክፍያ ደግመው መክፈል አያስፈልግም፤ አጠቃቀሙ ለስላሳ ይሆናል። ለታመኑ ፕሮጀክቶች ይህ አብዛኛውን ጊዜ ችግር የለውም። አደጋው ግን በሁለት ግምቶች ውስጥ ተደብቋል — እነዚህ ግምቶች ደግሞ ሁልጊዜ እውነት አይደሉም።
የመጀመሪያው ግምት «ይህ ኮንትራት ደህንነቱ የተጠበቀ ነው፣ አይሰበርም» የሚለው ነው። ኮንትራት ግን ስህተት ሊኖረው ይችላል፤ በአጥቂዎች እጅም ሊወድቅ ይችላል። የፈቀዱለት ኮንትራት አንድ ቀን ችግር ውስጥ ከገባ፣ የሰጡት ጣሪያ በሰፋ መጠን ሊደርስ የሚችለው ኪሳራም ያንኑ ያህል ይሰፋል። ያልተገደበ ፈቃድ ማለት፦ በንድፈ ሐሳብ ደረጃ በዋሌትዎ ውስጥ ያለውን የዚያን ቶከን ክምችት በሙሉ ሊወስድ ይችላል — በወቅቱ ለመስተጋብር ያዋሉትን ትንሽ መጠን ብቻ አይደለም። ብር (ETB) ዋጋ እንዳይቀንስ ብለው ቁጠባዎን በ USDT የያዙ ከሆነ ያስቡት፦ ለአንድ የተረሳ ኮንትራት የተሰጠ ያልተገደበ የ USDT ፈቃድ ማለት መላው ቁጠባዎ — በመቶ ሺህ ብር የሚቆጠርም ሆነ በጥቂት መቶ USD — በአንድ ግብይት ሊጠፋ ይችላል ማለት ነው። (የክሪፕቶ ግዢና ክፍያ በኢትዮጵያ በኢትዮጵያ ብሔራዊ ባንክ (NBE) ደንቦች የተገደበ መሆኑን ልብ ይበሉ፤ ማንኛውንም እርምጃ ከመውሰድዎ በፊት የአገርዎን ሕግ ያክብሩ።)
ሁለተኛው ግምት «ወደፊት ደግሜ እጠቀምበታለሁ» የሚለው ነው። እውነታው ግን ብዙ ጊዜ አንድ ጊዜ ተጠቅመው ዳግም አይመለሱም፤ ያ ያልተገደበ ፈቃድ ግን ዝም ብሎ እዚያው ተንጠልጥሎ ይቆያል — ለወራት፣ ለዓመታት። ጊዜው በረዘመ ቁጥር ለማን እንደፈቀዱ የማስታወስ ዕድልዎ ይቀንሳል፤ ስጋቱ ግን እየተከማቸ ይሄዳል። ለዚህም ነው ብዙ ስርቆቶች «እኮ ምንም አላደረግሁም» በሚሉበት ቅጽበት የሚከሰቱት — እጁን ያነሳው ከረጅም ጊዜ በፊት የተረሳ አሮጌ በር ነው።
የተረጋጋው አካሄድ፦ ዋሌትዎ የሚደግፍ ከሆነ የፈቃዱን ጣሪያ ከ«ያልተገደበ» ወደ «ለዚህ ጊዜ የሚበቃ» ትክክለኛ ቁጥር መቀየር ነው። ትንሽ ተጨማሪ gas ይከፍላሉ፣ አንድ ጊዜ ተጨማሪ ይጫናሉ — በምላሹ ግን ስጋቱ በአንድ ግብይት መጠን ውስጥ ታጥሮ ይቀራል። ደህንነትና ምቾት እዚህ ላይ እርስዎ የሚመዝኑት ነው፤ ቢያንስ ግን ያ ነባሪው «ያልተገደበ» ምን ማለት እንደሆነ ማወቅ አለብዎት።
ተንኮለኛ ኮንትራት በፈቃድ እንዴት ቶከን ይሰርቃል
ማጭበርበሩን ነጣጥለው ሲመለከቱት የፈቃድ ፊሺንግ ለምን ይህን ያህል ተንኮለኛ እንደሆነ ይገባዎታል። በመላው ሂደት ውስጥ የግል ቁልፍዎና ሲድ ፍሬዝዎ ከመጀመሪያ እስከ መጨረሻ አልተጋለጡም — ፈቃዱን በገዛ እጅዎ ስለፈረሙ ሃርድዌር ዋሌትም ሊያግደው አይችልም።
- ደረጃ አንድ፦ ማጥመጃ ማዘጋጀት። አጭበርባሪው ሐሰተኛ የ airdrop መውሰጃ ገጽ፣ ሐሰተኛ የ mint ገጽ ወይም ሐሰተኛ «ዋሌትዎን ያሻሽሉ / ይክፈቱ» ገጽ ይሠራል፤ ገጽታው ከእውነተኛው ፕሮጀክት ጋር ከሞላ ጎደል ተመሳሳይ ነው፣ ጎራ ስሙ በአንድ-ሁለት ፊደል ይለያል፣ ወይም ማስታወቂያ ገዝቶ ከፍተኛ ቦታ ላይ ይቀመጣል። በኢትዮጵያ በተለመዱት የ Telegram ቡድኖችና የማኅበራዊ ሚዲያ ገጾች ውስጥ «ነጻ airdrop ይውሰዱ» የሚሉ ማስፈንጠሪያዎች የዚህ ዓይነት ማጥመጃ የተለመዱ መግቢያዎች ናቸው።
- ደረጃ ሁለት፦ ዋሌት አገናኝቶ ፈቃድ ማስፈረም። ገጹ «ለመውሰድ ዋሌትዎን ያገናኙ» ይላል፤ ከዚያ የፈቃድ ማረጋገጫ ብቅ ይላል። ብዙ ሰዎች በዚያ ቅጽበት «airdrop ውሰድ» የሚለውን ቃል ብቻ አይተው፣ ፈቃዱ የትኛውን ቶከን እንደሚነካና ጣሪያው ስንት እንደሆነ ሳይመለከቱ ያረጋግጣሉ።
- ደረጃ ሦስት፦ ፊት መቀየርና ቶከን መጎተት። ፈቃዱ በአጭበርባሪው ኮንትራት እጅ ከወደቀ በኋላ በጣሪያው ውስጥ (ያልተገደበ ከሆነ — ሁሉንም) ቶከንዎን ያስተላልፋል። ወዲያውኑ ባዶ ሊደረጉ ይችላሉ፤ ወይም ከተወሰነ ጊዜ በኋላ ሊታጨዱ ይችላሉ — በሩ ክፍት እስከሆነ ድረስ መቼ እንደሚነሳ የሚወስነው እሱ ነው።
ከዚህ የበለጠ ስውር ልዩ ዓይነትም አለ፦ «ከመስመር ውጭ ፈቃድ» ዓይነት ፊርማ እንዲፈርሙ ማባበል (ለምሳሌ Permit የመሳሰሉ)። ይህ የቼይን ላይ ግብይት አያስነሳም፣ gas አያስከፍልም፣ በማያ ገጹ ላይ ጉዳት እንደሌለው «የመግቢያ ፊርማ» ይመስላል — መፈረሙ ግን ፈቃድ መስጠት ነው። ስለዚህ «gas የማያስከፍል ፊርማ» ማለት «ደህንነቱ የተጠበቀ ፊርማ» ማለት አይደለም፤ ይዘቱን ልክ እንደሌላው ሁሉ ማየት አለብዎት። እነዚህን ሐሰተኛ ገጾችና ሐሰተኛ መግቢያዎች የመለየት ተጨማሪ ዘዴዎችን ሐሰተኛ ዋሌትንና ፊሺንግን እንዴት መለየት በሚለው ጽሑፍ ያገኛሉ፤ የቼይን ላይ መስተጋብርን አጠቃላይ ስጋት ከመሠረቱ ለመረዳት ደግሞ የ Web3 ዋሌት ምንድን ነው በሚለው ጽሑፍ ውስጥ ያለውን የስጋት ክፍል ያንብቡ።
ፈቃዶችን በመደበኛነት እንዴት መፈተሽና መሰረዝ
መልካሙ ዜና፦ ፈቃድ በቼይን ላይ ያለ ይፋዊ መዝገብ ነው — መፈተሽም ፈቃድ መሰረዝም ይቻላል። ይህን እንደ መደበኛ የጤና ምርመራ ከወሰዱት ዋሌትዎ በጣም ንጹሕ ይሆናል።
መፈተሽ። ይፋዊ የፈቃድ መፈተሻ መሣሪያዎች አሉ፤ አድራሻዎን ብቻ ያስገባሉ (ማሳሰቢያ፦ አድራሻ ብቻ! አድራሻ ይፋዊ መረጃ ነው፤ ሲድ ፍሬዝ ወይም የግል ቁልፍ ፈጽሞ አያስገቡ)፣ መሣሪያውም ይህ አድራሻ ለየትኞቹ ኮንትራቶች የትኛውን ቶከን በስንት ጣሪያ እንደፈቀደ ይዘረዝራል። በሦስት ዓይነቶች ላይ ትኩረት ያድርጉ፦ ጣሪያቸው «ያልተገደበ» የሆኑ፣ ተቀባያቸውን የማያስታውሷቸው፣ እና ከረጅም ጊዜ ጀምሮ ያልተገናኙባቸው።
መሰረዝ። ከእንግዲህ ለማያስፈልጉ ፈቃዶች የመሰረዣ ግብይት ያስነሱ (ጣሪያውን ወደ 0 መመለስ) — በሩ ይዘጋል። መሰረዝ ራሱ የቼይን ላይ ተግባር ስለሆነ ትንሽ gas ያስከፍላል። ይህችን ትንሽ ክፍያ ላለመክፈል ብለው በሩን ክፍት አይተዉት — ሊደርስ ከሚችለው ኪሳራ ጋር ሲነጻጸር ይህ ወጪ እዚህ ግባ የሚባል አይደለም።
በስንት ጊዜ ልፈትሽ? ቋሚ መልስ የለም፤ እንደ መነሻ ግን፦ DeFi ላይ በተደጋጋሚ የሚንቀሳቀሱና አዳዲስ dApp-ዎችን ዘወትር የሚያገናኙ ከሆኑ በየተወሰነ ጊዜ አንድ ዙር ማጽዳት ይመከራል፤ አልፎ አልፎ ብቻ የሚገናኙ ከሆኑ ቢያንስ ከእያንዳንዱ የተጠናከረ አጠቃቀም በኋላ ተመልሰው አንድ ጊዜ ያጽዱ። «መስተጋብር እንደጨረስኩ የማልፈልጋቸውን ፈቃዶች ወዲያው እሰርዛለሁ» የሚለው ልማድ ከሁሉም ይልቅ ልብ ያሳርፋል።
በዋሌትዎ ውስጥ ግልጽ የሆነ ከፍተኛ ስጋት ያለው ፈቃድ ይኑር አይኑር በፍጥነት ለማወቅ የእኛን የፈቃድ ስጋት ራስ-ፍተሻ ዝርዝር ይጠቀሙ — ሙሉ በሙሉ በአሳሽዎ ውስጥ ይሠራል፣ ግብዓትዎን አይሰበስብም፣ ሊጠነቀቁባቸው የሚገቡ ነጥቦችን ብቻ ይዘረዝርልዎታል። በፊሺንግ ተንኮል በቀላሉ እወሰዳለሁ ብለው የሚሰጉ ከሆነ ደግሞ የፊሺንግ ራስ-ፈተናን ወስደው ደካማ ጎንዎን ይለዩ።
ከመፈረም በፊት የፈቃዱን ተቀባይ እንዴት ማየት
መሰረዝ ማካካሻ ነው፤ አስቀድሞ ማየት ግን መከላከል ነው። ዋሌትዎ የማረጋገጫ ሳጥን ባወጣ ቁጥር ለመጫን አይቸኩሉ — አሥር ሰከንድ ወስደው እነዚህን ይመልከቱ፦
- ይህ ፈቃድ ነው? የግብይቱን ዓይነት ይመልከቱ። approve / ፈቃድ / setApprovalForAll (የ NFT ጠቅላላ ፈቃድ) ከሆነ በተለየ ጥንቃቄ ይያዙት።
- ለማን ነው የሚፈቅዱት? የተፈቀደለትን የኮንትራት አድራሻ ይመልከቱ፤ አሁን እየተገናኙበት ያለው እውነተኛ ፕሮጀክት እንጂ የማያውቁት እንግዳ አድራሻ አለመሆኑን ያረጋግጡ።
- ጣሪያው ስንት ነው? የሚታየው «ያልተገደበ» ወይም ከመጠን በላይ ትልቅ ቁጥር ከሆነ፣ «ይህ መስተጋብር በእርግጥ ይህን ያህል ይፈልጋል?» ብለው ራስዎን ይጠይቁ። ጣሪያውን መቀየር ከቻሉ ወደሚበቃው ብቻ ይቀንሱት።
- የትኛው ቶከን ነው የሚነካው? የሚነካው ቶከን ከጠበቁት ጋር አንድ መሆኑን ያረጋግጡ።
- ይህ ድረ-ገጽ የታመነ ነው? ጎራ ስሙን ያመሳክሩ — በኦፊሴላዊ መግቢያ ነው የገቡት? እርግጠኛ ካልሆኑ ይሰርዙ፤ «አሁን ካላደረጉት ያመልጣል» የሚባል መስተጋብር የለም — ያ የችኮላ ስሜት ራሱ ብዙ ጊዜ የፊሺንግ ቋንቋ ነው።
በ NFT በኩል በተለይ የሚጠነቀቁት አለ፦ setApprovalForAll በአንድ ስብስብ ውስጥ ያሉትን NFT-ዎችዎን በሙሉ የማዛወር ሥልጣን በአንድ ጊዜ አሳልፎ ይሰጣል፤ ለተንኮለኛ ኮንትራት ከተሰጠ መላው ስብስብ ሊጠረግ ይችላል። እንዲህ ዓይነት ፈቃድ ሲያዩ ተቀባዩ በእርግጥ የሚያምኑት ገበያ ወይም ኮንትራት መሆኑን ደግመው ያረጋግጡ። የአድራሻ የፊደል አጻጻፍ ማረጋገጫ አሠራር (EIP-55) በእጅ ስህተት የተበላሹ አንዳንድ አድራሻዎችን ለመለየት ይረዳል — ለተሳሳተ ኮንትራት ከመፍቀድ ግን አይጠብቅዎትም፤ ተቀባዩን በዓይንዎ የማየት እርምጃ ምትክ የለውም።
እነዚህን የመከላከያ ነጥቦች ወደ ልማድ መቀየር
ሲጠቃለል፣ የፈቃድ ስጋት የሚከላከለው የላቀ ቴክኒካዊ ጥቃትን አይደለም — «ላለመድከም ማቅለል» እና «መዝጋት መርሳት» የተባሉትን ሁለት በጣም ሰዋዊ ልማዶች ነው። የሚከተሉትን ነጥቦች ወደ ልማድ ከቀየሩ በቼይን ላይ ካሉ ትላልቅ የኪሳራ ዓይነቶች አንዱን ደፍነዋል፦
- ትክክለኛ ጣሪያ ማስቀመጥ ከቻሉ ያልተገደበ ፈቃድ አይፈርሙ።
- እያንዳንዱን መስተጋብር ሲጨርሱ የማያስፈልጉ ፈቃዶችን ወዲያው ይሰርዙ።
- በየተወሰነ ጊዜ አሮጌ ፈቃዶችን ሰብስበው አንድ ዙር ያጽዱ።
- ከመፈረም በፊት በግልጽ ይመልከቱ፦ ፈቃድ ነው? ለማን? ጣሪያው ስንት? የትኛው ቶከን?
- «gas የማያስከፍል ፊርማ»ም ፈቃድ ሊሆን ይችላል — ልክ እንደሌላው በጥንቃቄ ይመልከቱ።
- ፈቃድ ሲፈትሹ አድራሻ ብቻ ያስገቡ፤ ሲድ ፍሬዝና የግል ቁልፍ ፈጽሞ አያስገቡ።
ፈቃድ የራስ-ይዞታ ደህንነት አንድ ቀለበት ብቻ ነው። ከሲድ ፍሬዝ አጠባበቅ፣ ከፊሺንግ መከላከልና ከአድራሻ ማመሳከር ጋር የተሳሰረ ነው — አንዱ ቀለበት ከላላ ሌሎቹን ምንም ያህል በጥሩ ቢሠሩ ሁሉም ከንቱ ሊሆን ይችላል። እነዚህን ነገሮች ወደ አንድ የተሟላ የመከላከያ መስመር ለማገናኘት የራስ-ይዞታ ሙሉ መመሪያን ያንብቡ።