📜
Веб-сайт

Смарт контракт ва Solidity: блокчейнда дастурлаш асослари

14.03.2025
← Барча мақолалар

Смарт контракт деганда биз блокчейн ичида сақланадиган ва маълум шартлар бажарилганда ўзи автоматик ишга тушадиган дастурий кодни тушунамиз. Оддий қилиб айтганда, бу рақамли келишув бўлиб, уни бажариш учун на банк, на нотариус, на бошқа бирор воситачи керак бўлади. Шартлар коддан иборат: агар мана шу ҳодиса юз берса, мана бу амал автоматик бажарилади. Бир марта блокчейнга жойлангач, контракт ўз мантиғи бўйича аниқ ва ўзгармас тарзда ишлайверади, ҳеч ким уни тўхтата олмайди ёки натижасини сохталаштира олмайди.

Бу ғоянинг кучи ишончни технологияга кўчиришида. Анъанавий шартномада томонлар бир-бирига ёки учинчи тарафга ишонишга мажбур, смарт контрактда эса ишонч тармоқнинг ўзига, яъни минглаб тугунлар тасдиқлаган кодга асосланади. Айнан шу сабабли смарт контрактлар молиявий операциялар, рақамли активлар ва автоматлаштирилган келишувлар учун жиддий пойдевор бўлиб қолди. Аммо бу куч катта масъулият ҳам талаб қилади, чунки кодда йўл қўйилган хато ҳам худди шундай ўзгармас бўлиб қолади.

Solidity нима ва у қаерда ишлайди

Solidity — бу Ethereum платформаси учун яратилган, смарт контрактлар ёзишга мўлжалланган дастурлаш тили. Синтаксиси JavaScript, C++ ва Python'дан илҳом олгани учун кўпчилик дастурчилар уни нисбатан тез ўзлаштиради. Solidity статик типли тил бўлиб, ўзгарувчининг турини олдиндан эълон қилишни талаб қилади ва бу хатоларни компиляция босқичида ушлаб қолишга ёрдам беради, код тармоққа чиқишидан анча олдин.

Solidity'да ёзилган код Ethereum Virtual Machine, қисқача EVM деб аталадиган виртуал машинада бажарилади. EVM — бу тармоқдаги ҳар бир тугунда ишлайдиган ҳисоблаш муҳити бўлиб, контракт мантиғини бир хил натижа билан такрорлайди. Контракт аввал байт-кодга компиляция қилинади, сўнг бу байт-код блокчейнга жойланади ва ундан кейин чақириладиган ҳар бир функция айнан шу EVM ичида ҳисобланади, тўлиқ башоратли хатти-ҳаракатни таъминлайди.

Оддий мисол: маълумот сақловчи контракт

Тушунишни осонлаштириш учун энг содда контрактни кўриб чиқамиз. Қуйидаги код битта сонни сақлайди ва исталган вақтда уни ўзгартириш ёки ўқиш имконини беради. Бу DeFi ёки NFT каби мураккаб тизимга ўхшамаса-да, смарт контрактнинг асосий тузилишини ва унинг ҳолати билан ишлаш тамойилларини яхши кўрсатади.

// 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;
    }
}

Бу ерда set функцияси янги қийматни ёзади ва ValueChanged ҳодисасини чиқаради, get эса жорий қийматни қайтаради. view калит сўзи функция ҳолатни ўзгартирмаслигини билдиради, шунинг учун уни ўқиш бепул кечади. Ҳодисалар эса ташқи иловаларга контракт ичида нима юз берганини кузатиш ва шу ўзгаришларга жавоб қайтариш имконини беради.

Деплой, газ ва контракт қандай ишлайди

Контрактни ёзиб бўлгач, уни блокчейнга жойлаш, яъни деплой қилиш керак. Бу жараёнда контрактнинг байт-коди тармоққа юборилади ва унга доимий манзил берилади. Шундан сўнг исталган фойдаланувчи ёки бошқа контракт шу манзил орқали функцияларни чақириши мумкин. Деплой ҳам, ҳолатни ўзгартирадиган ҳар бир чақирув ҳам транзакция ҳисобланади.

Ҳар бир транзакция газ деб аталадиган ҳисоблаш ҳақини талаб қилади. Газ — бу EVM бажарадиган амаллар учун ўлчов бирлиги бўлиб, мураккаброқ мантиқ кўпроқ газ ютади. Фойдаланувчи газ учун тармоқ валютасида тўлов қилади ва бу механизм тармоқни чексиз ёки зарарли ҳисоблашлардан ҳимоялайди. Айнан шу сабабли Solidity'да кодни самарали ёзиш нафақат тезлик, балки реал пул тежаш масаласидир.

Смарт контрактлар қаерда қўлланилади

Смарт контрактларнинг энг кенг тарқалган соҳаси DeFi, яъни марказлашмаган молия. Бу ерда контрактлар кредит бериш, алмаштириш, фоиз ҳисоблаш каби банк хизматларини воситачисиз амалга оширади. NFT, яъни ноёб рақамли активлар ҳам смарт контрактларга асосланади: контракт ҳар бир токеннинг эгаси кимлигини ва уни ўтказиш қоидаларини сақлайди.

Бундан ташқари DAO деб аталадиган марказлашмаган ташкилотлар мавжуд бўлиб, уларда қарорлар овоз бериш орқали код даражасида қабул қилинади. Escrow сценарийсида эса контракт пулни вақтинча ушлаб туради ва фақат келишилган шарт бажарилгандагина уни етказиб беради. Бу мисолларнинг барчасида умумий жиҳат битта: келишув мантиғи инсон эмас, код томонидан ишончли тарзда бажарилади.

Хавфсизлик — энг муҳим масала

Смарт контрактлар дунёсида хавфсизлик шунчаки тавсия эмас, балки ҳаётий заруратдир. Сабаби оддий: блокчейнга жойланган код ўзгармас бўлади, яъни ундаги хатони кейинчалик шунчаки тузатиб қўя олмайсиз. Агар контрактда заифлик бўлса ва унинг ҳисобида реал қиймат сақланса, ҳужумчилар ўша заифликдан фойдаланиб маблағни ўғирлаб кетиши мумкин, қайтариб олишнинг эса имкони бўлмайди.

Тарих бундай воқеаларга тўла. Машҳур The DAO ҳужумида контракт мантиғидаги reentrancy номли заифлик туфайли жуда катта миқдордаги маблағ ўғирланган эди ва бу ҳодиса бутун экотизимни ларзага келтиргандди. Шу сабабли профессионал лойиҳалар контрактни ишга туширишдан олдин албатта мустақил аудит ўтказади, кодни қайта-қайта тест қилади ва маълум хавфсизлик андозаларига амал қилади. Янги бошловчи учун эса энг тўғри йўл мавжуд, синовдан ўтган кутубхоналардан фойдаланиш ва ўз маблағини синовсиз кодга ишониб топширмасликдир.

Воситалар ва ўрганиш йўли

Solidity'ни ўрганишни бошлаш учун энг қулай восита бу Remix номли браузердаги муҳит ҳисобланади. Унда ҳеч нарса ўрнатмасдан код ёзиш, компиляция қилиш ва синов тармоғида деплой қилиб кўриш мумкин. Жиддийроқ лойиҳалар учун эса Hardhat каби иш муҳитлари қўл келади, улар тест ёзиш, автоматлаштириш ва контрактларни бошқаришни қулайлаштиради.

Ўрганиш йўлини босқичма-босқич қуриш мақсадга мувофиқ: аввал Solidity синтаксиси ва асосий тушунчаларни ўзлаштиринг, сўнг содда контрактларни ўзингиз ёзиб синаб кўринг. Кейинги босқичда газ оптимизацияси, хавфсизлик андозалари ва кенг тарқалган заифликларни ўрганинг. Энг муҳими, ҳар қандай кодни реал тармоққа чиқаришдан олдин синов тармоғида синаб кўринг, чунки бу соҳада шошилиш жуда қимматга тушади. Сабр билан, хавфсизликни биринчи ўринга қўйиб ўргансангиз, блокчейн дастурлаш сизга кенг имкониятлар эшигини очади.

Ўхшаш мақолалар

🌾 Қишлоқ хўжалиги ва агро сайти: маҳсулотлар каталоги ❤️ Хайрия фонди сайти: шаффоф ва ишонч 🎉 Тўйxона ва банкет зали сайти: бирон қилиш 🚙 Автомобил ижара сайти: каталог ва бирон
🌐 Тил
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English