એકમો
1. બ્લોકચેન અને વેબ3માં આર્ટિફિશિયલ ઇન્ટેલિજન્સનો પરિચય: ભૂમિકાઓ, સીમાઓ, પ્રમાણીકરણ અને સુરક્ષા-જટિલતા 2. સ્માર્ટ કોન્ટ્રાક્ટ રાઇટિંગ સપોર્ટ: સોલિડિટી/વાયપર ડ્રાફ્ટ અને સિક્યોર કોડ જનરેશન 3. સ્માર્ટ કોન્ટ્રાક્ટ ઓડિટ સપોર્ટ: સુરક્ષા સમીક્ષા અને ડ્રાફ્ટ તારણો 4. નબળાઈ સ્કેનિંગ: સામાન્ય નબળાઈ પેટર્ન અને સ્વચાલિત વિશ્લેષણ 5. ઓન-ચેઇન ડેટા એનાલિસિસ: બ્લોક, ટ્રાન્ઝેક્શન અને વૉલેટ ડેટાની સમજ મેળવવી 6. DeFi અને પ્રોટોકોલ વિશ્લેષણ: પ્રવાહિતા, MEV અને આર્થિક હુમલા 7. ટોકેનોમિક મોડેલિંગ: પુરવઠો, વિતરણ, પ્રોત્સાહન અને સિમ્યુલેશન 8. દસ્તાવેજીકરણ અને તકનીકી લેખન: વ્હાઇટપેપર, નેટસ્પેક અને વપરાશકર્તા માર્ગદર્શિકા 9. છેતરપિંડી, રગ-પુલ અને રિસ્ક ડિટેક્શન: ઓન-ચેન રેડ ફ્લેગ્સ 10. સલામતી-જટિલ ઑડિટ, નિષ્ણાતની મંજૂરી અને જવાબદાર ઉપયોગ 11. એન્ડ-ટુ-એન્ડ વર્કફ્લો, ગવર્નન્સ, વેરિફિકેશન અને એથિક્સ
એકમ 2 / 11

સ્માર્ટ કોન્ટ્રાક્ટ રાઇટિંગ સપોર્ટ: સોલિડિટી/વાયપર ડ્રાફ્ટ અને સિક્યોર કોડ જનરેશન

નફો:

  • સાબિત લાઇબ્રેરીઓ (દા.ત. OpenZeppelin) પર આધારિત ફ્રેમવર્ક, પરીક્ષણો અને સમીક્ષા ડ્રાફ્ટ્સ બનાવવા માટે કૃત્રિમ બુદ્ધિમત્તાનો ઉપયોગ કરવાની ક્ષમતા અને માનવો ઉત્પાદન સુરક્ષાની બાંયધરી આપે છે તે સમજવાની ક્ષમતા
  • સંકલન, પરીક્ષણ અને ટેસ્ટનેટ દ્વારા કૃત્રિમ બુદ્ધિ દ્વારા ઉત્પાદિત કોડ સંસ્કરણ, પેટર્ન અને ઍક્સેસ નિયંત્રણને ચકાસવાની ક્ષમતા
  • તે સંકલનને અલગ પાડવા સક્ષમ હોવાનો અર્થ એ નથી કે સુરક્ષિત હોવું અને ટેસ્ટનેટ અને ઓડિટીંગ આવશ્યક છે.

સ્માર્ટ કોન્ટ્રાક્ટ લખવો એ સામાન્ય સોફ્ટવેરથી અલગ છે: તમે જે કોડ લખો છો તે સાર્વજનિક, અપરિવર્તનશીલ અને એક પ્રોગ્રામ છે જે સીધું નાણાં ખસેડે છે. આ યુનિટમાં, તમે શીખી શકશો કે સ્માર્ટ કોન્ટ્રાક્ટ ડેવલપમેન્ટ સહાયક તરીકે AI નો ઉપયોગ કેવી રીતે કરવો; અમે ડ્રાફ્ટ ઉત્પાદનથી લઈને પરીક્ષણ લેખન, પેટર્ન રિકોલથી લઈને ગેસ (ટ્રાન્ઝેક્શન ફી) ઑપ્ટિમાઇઝેશન સુધી શીખીશું. પરંતુ ચાલો શરૂઆતથી જ સ્પષ્ટ થઈએ: AI બ્લુપ્રિન્ટ્સ બનાવે છે; માનવીઓ સુરક્ષિત કોડની ખાતરી કરે છે જે ઉત્પાદનમાં જાય છે.

પ્રથમ ગ્રાઉન્ડ: ભાષા અને પર્યાવરણ

સૌથી સામાન્ય સ્માર્ટ કોન્ટ્રાક્ટ લેંગ્વેજ સોલિડિટી છે (ઇથેરિયમ અને ઇવીએમની ભાષા — ઇથેરિયમ વર્ચ્યુઅલ મશીન, વર્ચ્યુઅલ મશીન જેના પર કોન્ટ્રાક્ટ ચાલે છે — સુસંગત સાંકળો). વૈકલ્પિક છે વાયપર (એક પાયથોન જેવી ભાષા કે જેનો હેતુ વધુ સંકુચિત અને વાંચી શકાય તેવો છે). તમારો કોડ ગેસ વાપરે છે (બ્લોકચેન પ્રત્યેક વ્યવહારની કિંમત); બિનકાર્યક્ષમ કોડ ખર્ચાળ છે. તમે જે સંદર્ભમાં AI ને આપો છો તેમાં આ શરતોને સ્પષ્ટ રાખવી એ ચોક્કસ આઉટપુટ મેળવવાની ચાવી છે.

જ્યાં AI સૌથી મૂલ્યવાન છે તે "શરૂઆતથી લખવામાં" નથી પરંતુ ફ્રેમવર્ક + સારો ઘાટ તૈયાર કરવામાં છે: ધોરણો-સુસંગત શરૂઆત, એક બ્લુપ્રિન્ટ કે જેના પર તમારી કુશળતા ઉમેરવા માટે.

કોડિંગમાં AI નો ઉપયોગ કરવાના સ્તરો

1. હાડપિંજર પેદા કરવું. AI ઝડપથી પ્રમાણભૂત ટોકન (ERC-20) અથવા NFT (ERC-721 — એક અનન્ય ડિજિટલ એસેટ સ્ટાન્ડર્ડ) ના હાડપિંજરનું ખાણકામ કરે છે. પરંતુ ખાતરી કરો કે AI એ સાબિત લાઇબ્રેરીનો ઉપયોગ કરે છે: ઉદાહરણ તરીકે, OpenZeppelin (સમુદાયની વિશ્વસનીય, ઓડિટેડ સ્ટાન્ડર્ડ કોન્ટ્રાક્ટિંગ લાઇબ્રેરી). નિયમ એ છે કે શરૂઆતથી સુરક્ષા લખવાને બદલે પરીક્ષણ કરેલ બ્લોકનો ઉપયોગ કરવો.

2. કાર્યનું વર્ણન અને સમીક્ષા. AI ને અસ્તિત્વમાં છે તે કાર્ય સમજાવવાથી તમે તર્કની ભૂલોને વહેલી તકે શોધી શકો છો.

3. ટેસ્ટ જનરેશન. AI એજ કેસ માટે ટેસ્ટ કેસ જનરેટ કરવામાં સારું છે: શૂન્ય ઇનપુટ, ખૂબ મોટી સંખ્યા, અનધિકૃત કૉલર, પુનરાવર્તિત કૉલ. આ દૃશ્યોમાંથી એકને યાદ અપાવે છે જે એક છોડે છે.

4. ગેસ અને વાંચનક્ષમતા. AI બિનજરૂરી સ્ટોરેજ લખે છે અને વિકલ્પો સૂચવે છે જેવા ખર્ચાળ પેટર્નને ફ્લેગ કરે છે.

સંકેત: AI ને સૂચના આપો કે "ઓપનઝેપ્પેલીનના ઓડિટેડ કોન્ટ્રાક્ટ પર બિલ્ડ કરો, શરૂઆતથી સુરક્ષાને ફરીથી લખો." પરીક્ષણ કરેલ લાઇબ્રેરીનો ઉપયોગ કરવા કરતાં AI માટે મૂળ સુરક્ષા કોડ લખવો તે વધુ જોખમી છે.

નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ

નબળા પ્રોમ્પ્ટ:

મને ટોકન કરાર લખો.

આ પ્રોમ્પ્ટ ખતરનાક છે: તે સ્પષ્ટ નથી કે કયું ધોરણ, કઈ સાંકળ, કઈ લાઈબ્રેરી, કઈ સુરક્ષા જરૂરિયાત. AI રેન્ડમ, સંભવતઃ જૂનો અથવા અસુરક્ષિત કોડ જનરેટ કરે છે.

શક્તિશાળી પ્રોમ્પ્ટ:

તમારી ભૂમિકા: વરિષ્ઠ સોલિડિટી ડેવલપર. EVM સુસંગત સાંકળ માટે ERC-20 ટોકન ડ્રાફ્ટ જનરેટ કરો. નિયમો:- OpenZeppelin ના ઓડિટ કરાયેલ ERC20 અને માલિકીપાત્ર કરારો પર આધારિત.- સોલિડિટી વર્ઝન અને લાયસન્સ (SPDX) લાઇન સ્પષ્ટપણે લખો.- માત્ર માલિકને ટંકશાળ કરવાની પરવાનગી છે; અનંત દબાવીને કેપ ઉમેરો. - દરેક કાર્યમાં NatSpec ટિપ્પણી ઉમેરો. - શરૂઆતથી સુરક્ષા લખો; પ્રમાણભૂત બ્લોકનો ઉપયોગ કરો. - અંતે એક ચેતવણી ઉમેરો: "આ એક ડ્રાફ્ટ છે; ઓડિટ અને પરીક્ષણ જરૂરી છે". તે વિસ્તારોને ચિહ્નિત કરો કે જેના વિશે તમે ચોક્કસ નથી // TODO.

તફાવત: મજબૂત પ્રોમ્પ્ટ સ્પષ્ટ ભૂમિકા, ધોરણ, પુસ્તકાલય, સુરક્ષા સીમા, દસ્તાવેજીકરણ અને માન્યતા અપેક્ષાઓ આપે છે.

ચાર નકલ કરી શકાય તેવા નમૂનાઓ

1) ધોરણો આધારિત હાડપિંજર:

તમારી ભૂમિકા: સોલિડિટી ડેવલપર. OpenZeppelin ઓડિટેડ લાઇબ્રેરી પર આધારિત [ERC-20 / ERC-721 / staking] કોન્ટ્રાક્ટ ફ્રેમવર્ક જનરેટ કરો. SPDX લાયસન્સ અને pragma સંસ્કરણ લખો. દરેક બાહ્ય કાર્યમાં ઍક્સેસ નિયંત્રણ (કોણ કૉલ કરી શકે છે) ઉમેરો. સુરક્ષા પુનઃશોધ; પ્રમાણભૂત બ્લોક્સનો ઉપયોગ કરો. આ એક ડ્રાફ્ટ છે.

2) કાર્ય સમીક્ષા:

સિનિયર ડેવલપરની જેમ નીચેના ફંક્શનની તપાસ કરો: તે શું કરે છે, તે કઈ સ્થિતિમાં બદલાય છે, કોણ તેને કૉલ કરી શકે છે? સંભવિત તર્ક ભૂલો અને સુરક્ષા જોખમોને હાયપોથેસીસ તરીકે ચિહ્નિત કરો, દરેકને કોડમાં એક લીટી સાથે લિંક કરો. "સલામત" બોલશો નહીં; ફક્ત ધ્યાનના મુદ્દાઓની સૂચિ બનાવો.

3) ટેસ્ટ દૃશ્ય ડ્રાફ્ટ:

આ કોન્ટ્રાક્ટ માટે ટેસ્ટ કેસની દરખાસ્ત કરો (ફાઉન્ડ્રી/હાર્દત માટે ડ્રાફ્ટ હોઈ શકે છે). ખાસ કરીને મર્યાદાના કેસોને આવરી લે છે: શૂન્ય ઇનપુટ, ખૂબ મોટી સંખ્યા, અનધિકૃત કૉલ, ફરીથી પ્રવેશી કૉલ, અપૂરતું ભંડોળ. લખો કે દરેક પરીક્ષણ શું પુષ્ટિ કરે છે.

4) ગેસ અને વાંચનક્ષમતા સમીક્ષા:

આ કરારમાં, પેટર્નને ચિહ્નિત કરો જે ગેસની કિંમત ઘટાડી શકે છે: બિનજરૂરી સ્ટોરેજ લેખન, લૂપમાં બાહ્ય કૉલ, પુનરાવર્તિત ગણતરી. દરેક સૂચનમાં પહેલા/પછીનો તફાવત સમજાવો. સુરક્ષા-બ્રેકિંગ ઑપ્ટિમાઇઝેશનની ભલામણ કરો; જો તે સ્પષ્ટ ન હોય, તો "ઓડિટરને પૂછો" કહો.

ત્રણ નાના કેસ (સંખ્યામાં)

કેસ 1 - સ્કેલેટન 4 કલાક સાચવ્યું. એક ટીમે 30 મિનિટમાં AI સાથે ઓડિટેડ લાઇબ્રેરી-આધારિત વેસ્ટિંગ કોન્ટ્રાક્ટના હાડપિંજરનું ખાણકામ કર્યું; તેને મેન્યુઅલી ~4 કલાક લાગ્યા. ટીમે સુરક્ષા અને પરીક્ષણ માટે સમય ફાળવ્યો. ફાયદો સુરક્ષાને સ્થાનાંતરિત કરવાથી નહીં, પરંતુ કંટાળાજનક માળખાને ઝડપી બનાવવાથી થયો છે.

કેસ 2 - જૂનું સંસ્કરણ ટ્રેપ. AI એ એક પેટર્ન તૈયાર કરી છે જે ટ્રાન્સફર દ્વારા કાચો ઈથર મોકલે છે, જેની હવે ભલામણ કરવામાં આવતી નથી કારણ કે તાલીમ ડેટા જૂનો છે. વિકાસકર્તાએ આની નોંધ લીધી અને તેને વર્તમાન કૉલ-આધારિત અને પુનઃપ્રવેશ-સંરક્ષિત પેટર્નમાં બદલી. પાઠ: AI ની લાઇબ્રેરી/પેટર્ન હંમેશા અદ્યતન હોવાની પુષ્ટિ થાય છે; AI તાલીમની કટઓફ તારીખથી આગળ જાણતું નથી.

કેસ 3 - ટેસ્ટ ડ્રાફ્ટમાં છુપાયેલ બગ દેખાય છે. AI દ્વારા ઉત્પાદિત "અનધિકૃત કોલર" પરીક્ષણથી જાણવા મળ્યું કે ડેવલપર ફંક્શનમાં એક્સેસ કંટ્રોલ ભૂલી ગયો હતો. માત્રમાલિક 1 લાઇન ખૂટે છે, ટેસ્ટનેટ પર 5 મિનિટમાં પકડાય છે; મેઇનનેટ પર ભંડોળની ખોટ થઈ શકે છે. પાઠ: AI પરીક્ષણમાં માનવ અંધ સ્થાનને આવરી લે છે.

AI સાથે સુરક્ષા પેટર્નને યાદ રાખવું

AI તમને ચેકલિસ્ટ જેવા જાણીતા નબળાઈ પેટર્નની યાદ અપાવવામાં સારું છે. સૌથી સામાન્ય પેટર્ન:

  • રિએન્ટ્રન્સી: સ્ટેટસ અપડેટ કર્યા વગર એક્સટર્નલ કૉલ કરવો. ઉકેલ: ચેક-ઇફેક્ટ્સ-ઇન્ટરએક્શન ઓર્ડર, રિએન્ટ્રન્સી ગાર્ડ.
  • એક્સેસ કંટ્રોલનો અભાવ: કોઈપણ વ્યક્તિ જટિલ કાર્યને કૉલ કરી શકે છે.
  • પૂર્ણાંક ઓવરફ્લો/અંડરફોલ: આધુનિક સોલિડિટી તેમાંના મોટા ભાગનાને પકડે છે, પરંતુ હજુ પણ નીચા-સ્તરના કોડમાં જોખમ છે.
  • અપૂરતી ઇનપુટ માન્યતા: શૂન્ય સરનામું, શૂન્ય જથ્થો નિયંત્રણ.
  • ઓરેકલ અવલંબન: બાહ્ય ડેટા પર આંધળો વિશ્વાસ (જેમ કે કિંમત).
ધ્યાન આપો: AI આ સૂચિને યાદ કરી શકે છે, પરંતુ તે ખાતરી આપી શકતું નથી કે સૂચિમાંની કોઈ આઇટમ તમારા ચોક્કસ કોડમાં છે કે નહીં. ચેકલિસ્ટ એક શરૂઆત છે; તે કન્ટેનર નિયંત્રણ માટે રિપ્લેસમેન્ટ નથી.

સંદર્ભ યોગ્ય રીતે મેળવવો: AI તરફથી સારા કોડનું રહસ્ય

AI જે કોડ બનાવે છે તેની ગુણવત્તા તમે જે સંદર્ભ આપો છો તેની ગુણવત્તા પર સીધો આધાર રાખે છે. Web3 માં આ ખાસ કરીને મહત્વપૂર્ણ છે કારણ કે એક નાની વિગત (કઈ સાંકળ, કયું સોલિડિટી વર્ઝન, કયું ટોકન સ્ટાન્ડર્ડ) સમગ્ર આઉટપુટમાં ફેરફાર કરે છે. સારા સંદર્ભમાં શામેલ છે:

  • લક્ષ્ય સાંકળ અને પર્યાવરણ: ઇથેરિયમ મેઇનનેટ અથવા લેયર 2 (સસ્તી સાઇડચેન જે મેઇનચેનની ટોચ પર ચાલે છે)? ગેસની કિંમત અને કેટલીક સુવિધાઓ સાંકળ દ્વારા બદલાય છે.
  • સંસ્કરણ અને પુસ્તકાલય: કયું સોલિડિટી સંસ્કરણ, કયું ઓપનઝેપ્પેલીન સંસ્કરણ? જો કોઈ સંસ્કરણ ઉલ્લેખિત ન હોય, તો AI જૂની, અવમૂલ્યન પેટર્ન ઉત્પન્ન કરી શકે છે.
  • સુરક્ષા આવશ્યકતાઓ: શું કોઈ કેપ છે, શું તેને થોભાવી શકાય છે, શું તેને વધારી શકાય છે? આ શરૂઆતથી જ કહેવું જોઈએ.
  • મર્યાદાઓ: "એસેમ્બલીનો ઉપયોગ કરશો નહીં", "બાહ્ય કૉલ ટાળો", "ગેસને ઑપ્ટિમાઇઝ કરો પરંતુ વાંચનક્ષમતા જાળવી રાખો" જેવી સ્પષ્ટ મર્યાદાઓ.

બીજી શક્તિશાળી ટેકનિક એ છે કે પહેલા એઆઈને પ્લાન માટે પૂછો, પછી કોડ: "પહેલા આ કોન્ટ્રાક્ટના કાર્યોની યાદી બનાવો અને દરેક શું કરશે; એકવાર હું તેને મંજૂર કરું પછી કોડ લખો." આ ખોટી દિશામાં જઈ રહેલા AIને વહેલા પકડી લે છે અને તમને આર્કિટેક્ચરલ નિર્ણયને જાળવી રાખવા દે છે.

સંકેત: AI ને પૂછો "તમે આ કોડ આ રીતે કેમ લખ્યો?" પૂછો તર્ક સમજાવવાથી તમારા શીખવાની ઝડપ વધશે અને કોઈપણ તાર્કિક ભૂલો (દા.ત. ખોટી સુરક્ષા ધારણા) સપાટી પર આવશે. AI ના આઉટપુટ પર વિશ્વાસ કરશો નહીં જે તેના પોતાના કોડનો બચાવ કરી શકતું નથી.

સામાન્ય ભૂલો

  • શરૂઆતથી AI માં સુરક્ષા મૂકી. પરીક્ષણ કરેલ પુસ્તકાલયનો ઉપયોગ કરો.
  • AI દ્વારા ઉત્પાદિત સંસ્કરણ/પેટર્નની પુષ્ટિ કરતું નથી. તાલીમ ડેટા જૂનો હોઈ શકે છે.
  • ટેસ્ટનેટને બાયપાસ કરીને. દરેક ડ્રાફ્ટ લાઇવ થતાં પહેલાં પરીક્ષણ નેટવર્ક પર ચાલવો જોઈએ.
  • NatSpec/દસ્તાવેજીકરણ ઉમેરી રહ્યા નથી. નિરીક્ષણ અને જાળવણી મુશ્કેલ બની જાય છે.
  • "તે સંકલિત છે, તેથી તે સલામત છે" ગેરસમજ. સંકલિત હોવાનો અર્થ એ નથી કે સુરક્ષિત રહેવું.
  • ઍક્સેસ નિયંત્રણ ભૂલી જવું. તે સૌથી સામાન્ય અને ખર્ચાળ ભૂલોમાંની એક છે.

સારાંશમાં

  • સ્માર્ટ કોન્ટ્રાક્ટ લેખનમાં, AI ફ્રેમવર્ક, પરીક્ષણો અને સમીક્ષા ડ્રાફ્ટ બનાવે છે; માનવ ઉત્પાદન સલામતીની ખાતરી આપે છે.
  • સુરક્ષાને શરૂઆતથી નહીં પરંતુ સાબિત પુસ્તકાલયોના આધારે બનાવો (દા.ત. OpenZeppelin).
  • YZ દ્વારા ઉત્પાદિત સંસ્કરણો અને પેટર્નની અદ્યતનતા હંમેશા પુષ્ટિ થાય છે.
  • ટેસ્ટ સ્ટબ માનવ અંધ સ્પોટ (મર્યાદા કેસ, એક્સેસ કંટ્રોલ) કેપ્ચર કરવા માટે મૂલ્યવાન છે.
  • સંકલિત હોવાનો અર્થ એ નથી કે સુરક્ષિત હોવું; ટેસ્ટનેટ અને ઑડિટિંગ આવશ્યક છે.

એપ્લિકેશન કાર્ય

સરળ ERC-20 ટોકન માટે, ઉપરના "માનક-આધારિત હાડપિંજર" પ્રોમ્પ્ટનો ઉપયોગ કરીને ડ્રાફ્ટ જનરેટ કરો. પછી: (1) તપાસો કે તે ચેક કરેલ લાઇબ્રેરીનો ઉપયોગ કરે છે કે કેમ, (2) ઍક્સેસ નિયંત્રણો તપાસો, (3) "ટેસ્ટ કેસ ડ્રાફ્ટ" પ્રોમ્પ્ટ સાથે પરીક્ષણો જનરેટ કરો અને વાસ્તવમાં ઓછામાં ઓછી એક ઠગ-કોલર પરીક્ષણ ચલાવો. AI ચૂકી ગયેલો ઓછામાં ઓછો એક સુરક્ષા બિંદુ શોધો અને નોંધો.

ચેકલિસ્ટ

  • [ ] મેં પ્રોમ્પ્ટમાં પ્રમાણભૂત અને સાંકળ સ્પષ્ટપણે જણાવ્યું છે.
  • [ ] હું સાબિત પુસ્તકાલય-આધારિત ઉત્પાદન ઇચ્છું છું.
  • [ ] SPDX લાઇસન્સ અને પ્રાગ્મા સંસ્કરણ ઉપલબ્ધ છે.
  • દરેક જટિલ કાર્યમાં એક્સેસ કંટ્રોલ છે.
  • [ ] મેં મર્યાદા કેસો માટે પરીક્ષણો બનાવ્યાં અને ચલાવ્યાં.
  • [ ] મેં પુષ્ટિ કરી છે કે લાઇબ્રેરી/પેટર્ન અપ ટુ ડેટ છે.
  • [ ] મેં ઓડિટ અને પરીક્ષણ માટે કોડ માર્ક કર્યો છે; મેં તેને મેઈનનેટ પર દેખરેખ રાખ્યા વિના મળ્યું નથી.