๐Ÿ“œ
Veb-sayt

Smart kontrakt va Solidity: blockchain'da dasturlash asoslari

14.03.2025
โ† Barcha maqolalar

Smart kontrakt deganda biz blockchain ichida saqlanadigan va ma'lum shartlar bajarilganda o'zi avtomatik ishga tushadigan dasturiy kodni tushunamiz. Oddiy qilib aytganda, bu raqamli kelishuv bo'lib, uni bajarish uchun na bank, na notarius, na boshqa biror vositachi kerak bo'ladi. Shartlar koddan iborat: agar mana shu hodisa yuz bersa, mana bu amal avtomatik bajariladi. Bir marta blockchainga joylangach, kontrakt o'z mantig'i bo'yicha aniq va o'zgarmas tarzda ishlayveradi, hech kim uni to'xtata olmaydi yoki natijasini soxtalashtira olmaydi.

Bu g'oyaning kuchi ishonchni texnologiyaga ko'chirishida. An'anaviy shartnomada tomonlar bir-biriga yoki uchinchi tarafga ishonishga majbur, smart kontraktda esa ishonch tarmoqning o'ziga, ya'ni minglab tugunlar tasdiqlagan kodga asoslanadi. Aynan shu sababli smart kontraktlar moliyaviy operatsiyalar, raqamli aktivlar va avtomatlashtirilgan kelishuvlar uchun jiddiy poydevor bo'lib qoldi. Ammo bu kuch katta mas'uliyat ham talab qiladi, chunki kodda yo'l qo'yilgan xato ham xuddi shunday o'zgarmas bo'lib qoladi.

Solidity nima va u qayerda ishlaydi

Solidity โ€” bu Ethereum platformasi uchun yaratilgan, smart kontraktlar yozishga mo'ljallangan dasturlash tili. Sintaksisi JavaScript, C++ va Python'dan ilhom olgani uchun ko'pchilik dasturchilar uni nisbatan tez o'zlashtiradi. Solidity statik tipli til bo'lib, o'zgaruvchining turini oldindan e'lon qilishni talab qiladi va bu xatolarni kompilyatsiya bosqichida ushlab qolishga yordam beradi.

Solidity'da yozilgan kod Ethereum Virtual Machine, qisqacha EVM deb ataladigan virtual mashinada bajariladi. EVM โ€” bu tarmoqdagi har bir tugunda ishlaydigan hisoblash muhiti bo'lib, kontrakt mantig'ini bir xil natija bilan takrorlaydi. Kontrakt avval bayt-kodga kompilyatsiya qilinadi, so'ng bu bayt-kod blockchainga joylanadi va undan keyin chaqiriladigan har bir funksiya aynan shu EVM ichida hisoblanadi.

Oddiy misol: ma'lumot saqlovchi kontrakt

Tushunishni osonlashtirish uchun eng sodda kontraktni ko'rib chiqamiz. Quyidagi kod bitta sonni saqlaydi va istalgan vaqtda uni o'zgartirish yoki o'qish imkonini beradi. Bu DeFi yoki NFT kabi murakkab tizimga o'xshamasa-da, smart kontraktning asosiy tuzilishini yaxshi ko'rsatadi.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 private storedValue;

    event ValueChanged(uint256 newValue);

    function set(uint256 newValue) public {
        storedValue = newValue;
        emit ValueChanged(newValue);
    }

    function get() public view returns (uint256) {
        return storedValue;
    }
}

Bu yerda set funksiyasi yangi qiymatni yozadi va ValueChanged hodisasini chiqaradi, get esa joriy qiymatni qaytaradi. view kalit so'zi funksiya holatni o'zgartirmasligini bildiradi, shuning uchun uni o'qish bepul kechadi. Hodisalar esa tashqi ilovalarga kontrakt ichida nima yuz berganini kuzatish imkonini beradi.

Deploy, gas va kontrakt qanday ishlaydi

Kontraktni yozib bo'lgach, uni blockchainga joylash, ya'ni deploy qilish kerak. Bu jarayonda kontraktning bayt-kodi tarmoqqa yuboriladi va unga doimiy manzil beriladi. Shundan so'ng istalgan foydalanuvchi yoki boshqa kontrakt shu manzil orqali funksiyalarni chaqirishi mumkin. Deploy ham, holatni o'zgartiradigan har bir chaqiruv ham tranzaksiya hisoblanadi.

Har bir tranzaksiya gas deb ataladigan hisoblash haqini talab qiladi. Gas โ€” bu EVM bajaradigan amallar uchun o'lchov birligi bo'lib, murakkabroq mantiq ko'proq gas yutadi. Foydalanuvchi gas uchun tarmoq valyutasida to'lov qiladi va bu mexanizm tarmoqni cheksiz yoki zararli hisoblashlardan himoyalaydi. Aynan shu sababli Solidity'da kodni samarali yozish nafaqat tezlik, balki real pul tejash masalasidir.

Smart kontraktlar qayerda qo'llaniladi

Smart kontraktlarning eng keng tarqalgan sohasi DeFi, ya'ni markazlashmagan moliya. Bu yerda kontraktlar kredit berish, almashtirish, foiz hisoblash kabi bank xizmatlarini vositachisiz amalga oshiradi. NFT, ya'ni noyob raqamli aktivlar ham smart kontraktlarga asoslanadi: kontrakt har bir tokenning egasi kimligini va uni o'tkazish qoidalarini saqlaydi.

Bundan tashqari DAO deb ataladigan markazlashmagan tashkilotlar mavjud bo'lib, ularda qarorlar ovoz berish orqali kod darajasida qabul qilinadi. Escrow stsenariysida esa kontrakt pulni vaqtincha ushlab turadi va faqat kelishilgan shart bajarilgandagina uni yetkazib beradi. Bu misollarning barchasida umumiy jihat bitta: kelishuv mantig'i inson emas, kod tomonidan ishonchli tarzda bajariladi.

Xavfsizlik โ€” eng muhim masala

Smart kontraktlar dunyosida xavfsizlik shunchaki tavsiya emas, balki hayotiy zaruratdir. Sababi oddiy: blockchainga joylangan kod o'zgarmas bo'ladi, ya'ni undagi xatoni keyinchalik shunchaki tuzatib qo'ya olmaysiz. Agar kontraktda zaiflik bo'lsa va uning hisobida real qiymat saqlansa, hujumchilar o'sha zaiflikdan foydalanib mablag'ni o'g'irlab ketishi mumkin, qaytarib olishning esa imkoni bo'lmaydi.

Tarix bunday voqealarga to'la. Mashhur The DAO hujumida kontrakt mantig'idagi reentrancy nomli zaiflik tufayli juda katta miqdordagi mablag' o'g'irlangan edi va bu hodisa butun ekotizimni larzaga keltirgandi. Shu sababli professional loyihalar kontraktni ishga tushirishdan oldin albatta mustaqil audit o'tkazadi, kodni qayta-qayta test qiladi va ma'lum xavfsizlik andozalariga amal qiladi. Yangi boshlovchi uchun esa eng to'g'ri yo'l mavjud, sinovdan o'tgan kutubxonalardan foydalanish va o'z mablag'ini sinovsiz kodga ishonib topshirmaslikdir.

Vositalar va o'rganish yo'li

Solidity'ni o'rganishni boshlash uchun eng qulay vosita bu Remix nomli brauzerdagi muhit hisoblanadi. Unda hech narsa o'rnatmasdan kod yozish, kompilyatsiya qilish va sinov tarmog'ida deploy qilib ko'rish mumkin. Jiddiyroq loyihalar uchun esa Hardhat kabi ish muhitlari qo'l keladi, ular test yozish, avtomatlashtirish va kontraktlarni boshqarishni qulaylashtiradi.

O'rganish yo'lini bosqichma-bosqich qurish maqsadga muvofiq: avval Solidity sintaksisi va asosiy tushunchalarni o'zlashtiring, so'ng sodda kontraktlarni o'zingiz yozib sinab ko'ring. Keyingi bosqichda gas optimizatsiyasi, xavfsizlik andozalari va keng tarqalgan zaifliklarni o'rganing. Eng muhimi, har qanday kodni real tarmoqqa chiqarishdan oldin sinov tarmog'ida sinab ko'ring, chunki bu sohada shoshilish juda qimmatga tushadi. Sabr bilan, xavfsizlikni birinchi o'ringa qo'yib o'rgansangiz, blockchain dasturlash sizga keng imkoniyatlar eshigini ochadi.

O'xshash maqolalar

๐ŸŒพ Qishloq xo'jaligi va agrobiznes sayti: mahsulotlar katalogi va B2B sotuv โค๏ธ Xayriya fondi sayti: shaffof xayriya yig'ish va donator ishonchi ๐ŸŽ‰ Toyxona va banket zali sayti: tadbir tashkil qilish va onlayn bron qilish ๐Ÿš™ Avtoulov ijarasi sayti: avtomobil katalog, narx kalkulyatori va onlayn bron
๐ŸŒ Til
๐Ÿ‡บ๐Ÿ‡ฟ O'zbek โœ“ ๐Ÿ‡บ๐Ÿ‡ฟ ะŽะทะฑะตะบ ๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน ๐Ÿ‡ฌ๐Ÿ‡ง English