Smart-kontraktlarni ishlab chiqish asoslarini o'rganing, blokcheyn asoslaridan tortib birinchi kontraktingizni yozish va joylashtirishgacha. Ushbu keng qamrovli qo'llanma butun dunyodagi intiluvchan dasturchilar uchun mo'ljallangan.
Smart-kontraktlarni ishlab chiqish: Global sahna uchun boshlovchilar uchun qo'llanma
Smart-kontraktlar butun dunyo bo'ylab sanoat sohalarida, moliya va ta'minot zanjiridan tortib sog'liqni saqlash va boshqaruvgacha inqilob qilmoqda. Ular kodda yozilgan va blokcheynda saqlanadigan, ishonchsiz va shaffof o'zaro ta'sirlarni ta'minlaydigan o'z-o'zidan bajariladigan kelishuvlardir. Ushbu qo'llanma butun dunyodagi intiluvchan dasturchilar uchun mo'ljallangan smart-kontraktlarni ishlab chiqishga keng qamrovli kirishni taqdim etadi.
Asoslarni tushunish
Blokcheyn nima?
Aslida, blokcheyn bu taqsimlangan, o'zgarmas hisob kitobidir. Uni tarmoqdagi ko'plab kompyuterlar (tugunlar) bo'ylab takrorlangan umumiy raqamli yozuvlar kitobi deb o'ylang. Har bir tranzaksiya "blok" sifatida qayd etiladi va oldingi blokka kriptografik tarzda bog'lanib, "zanjir" hosil qiladi. Bu dizayn ma'lumotlarni buzishni juda qiyinlashtiradi, chunki har qanday o'zgartirish tarmoqning aksariyat qismidagi barcha keyingi bloklarni o'zgartirishni talab qiladi. Blokcheynlar markaziy organga ehtiyojni yo'qotib, markazsizlashtirish va ishonchni ta'minlaydi.
Blokcheynning asosiy xususiyatlari:
- Markazsizlashtirish: Hech bir yagona sub'ekt tarmoqni nazorat qilmaydi.
- O'zgarmaslik: Ma'lumotlar qayd etilgandan so'ng, uni osongina o'zgartirib bo'lmaydi.
- Shaffoflik: Tranzaksiyalar ommaviy ko'rinishda bo'ladi (garchi shaxslar taxallusli bo'lishi mumkin).
- Xavfsizlik: Kriptografiya ma'lumotlarning yaxlitligini ta'minlaydi.
Smart-kontraktlar nima?
Smart-kontraktlar - bu blokcheynda saqlanadigan dasturlar bo'lib, ular oldindan belgilangan shartlar bajarilganda avtomatik ravishda ishga tushadi. Ular blokcheynni ishlab chiqish uchun maxsus mo'ljallangan dasturlash tillarida yoziladi. Ular murakkab jarayonlarni avtomatlashtirishi, vositachilarni kamaytirishi va turli xil ilovalarda shaffoflikni oshirishi mumkin.
Savdo avtomatini oddiy o'xshatish sifatida tasavvur qiling:
- Kiritish: Siz pul solasiz va mahsulot tanlaysiz.
- Shart: Avtomat sizning yetarli pul solganingizni tekshiradi.
- Chiqish: Agar shart bajarilsa, avtomat mahsulotni beradi.
Smart-kontraktlar shunga o'xshash tamoyil asosida ishlaydi, kelishuvlarni avtomatlashtiradi va blokcheynda qoidalarni tatbiq etadi.
Nima uchun smart-kontraktlar muhim?
Smart-kontraktlar global miqyosda sanoatni o'zgartirmoqda, chunki ular bir nechta afzalliklarni taqdim etadi:
- Ishonchning oshishi: Kod - bu qonun. Qoidalar aniq belgilangan va avtomatik ravishda bajariladi.
- Xarajatlarning kamayishi: Avtomatlashtirish vositachilarni va qo'lda bajariladigan jarayonlarni yo'q qiladi.
- Shaffoflikning yaxshilanishi: Barcha tranzaksiyalar blokcheynga yoziladi va ommaviy ravishda tekshirilishi mumkin.
- Xavfsizlikning kuchayishi: Blokcheynning o'ziga xos xavfsizlik xususiyatlari firibgarlik va manipulyatsiyadan himoya qiladi.
- Samaradorlikning oshishi: Avtomatlashtirilgan jarayonlar qo'lda bajariladigan jarayonlarga qaraganda tezroq va ishonchliroqdir.
Global foydalanish holatlariga misollar:
- Ta'minot zanjirini boshqarish: Tovarlarni kelib chiqishidan yetkazib berishgacha kuzatib borish, haqiqiyligini ta'minlash va qalbakilashtirishning oldini olish. (masalan, Kolumbiyadagi qahva donalarining axloqiy manbalardan olinganligini yoki Fransiyadagi hashamatli tovarlarning haqiqiyligini tekshirish).
- Markazlashtirilmagan moliya (DeFi): An'anaviy vositachilarsiz kredit platformalari, birjalar va boshqa moliyaviy vositalarni yaratish. (masalan, Janubi-Sharqiy Osiyoda tengdoshlararo kreditlashni yoqish yoki Afrikaning bank xizmatlari kam bo'lgan hududlarida moliyaviy xizmatlardan foydalanishni ta'minlash).
- Raqamli shaxsni boshqarish: Shaxsiy ma'lumotlarni xavfsiz saqlash va tekshirish. (masalan, Estoniyada xavfsiz onlayn ovoz berishni osonlashtirish yoki transchegaraviy shaxsni tasdiqlashni soddalashtirish).
- Sog'liqni saqlash: Tibbiy yozuvlarni xavfsiz saqlash va almashish, bemorlarning maxfiyligini va ma'lumotlar yaxlitligini ta'minlash. (masalan, xalqaro chegaralar bo'ylab qochqinlar uchun tibbiy yozuvlarga xavfsiz kirishni ta'minlash).
- Ovoz berish tizimlari: Shaffof va xavfsiz ovoz berish mexanizmlarini yaratish, firibgarlik xavfini kamaytirish. (masalan, Shveytsariya yoki Braziliyada blokcheyn asosidagi ovoz berish tizimlarini sinovdan o'tkazish).
Ishlab chiqish muhitingizni sozlash
Smart-kontraktlar yozishni boshlashdan oldin siz ishlab chiqish muhitingizni sozlashingiz kerak. Mana bosqichma-bosqich qo'llanma:
1. Node.js va npm'ni o'rnatish
Node.js - bu JavaScript kodini veb-brauzerdan tashqarida ishga tushirishga imkon beruvchi JavaScript ish vaqti muhitidir. npm (Node Package Manager) - bu Node.js uchun paket menejeri bo'lib, siz undan turli xil ishlab chiqish vositalarini o'rnatish uchun foydalanasiz.
Node.js'ni rasmiy veb-saytdan yuklab oling va o'rnating: https://nodejs.org/
npm odatda Node.js bilan birga keladi. Ularning to'g'ri o'rnatilganligini tekshirish uchun terminalingizni yoki buyruqlar satrini oching va quyidagi buyruqlarni bajaring:
node -v
npm -v
Ushbu buyruqlar tizimingizda o'rnatilgan Node.js va npm versiyalarini ko'rsatishi kerak.
2. Ganache'ni o'rnatish
Ganache - bu mahalliy ishlab chiqish uchun foydalanishingiz mumkin bo'lgan shaxsiy blokcheyn. U haqiqiy blokcheyn muhitini simulyatsiya qiladi, bu sizga haqiqiy kriptovalyuta sarflamasdan smart-kontraktlaringizni joylashtirish va sinab ko'rish imkonini beradi.
Ganache'ni Truffle Suite'dan yuklab oling va o'rnating: https://www.trufflesuite.com/ganache
O'rnatilgandan so'ng, Ganache'ni ishga tushiring. U sinov uchun foydalanishingiz mumkin bo'lgan oldindan moliyalashtirilgan hisoblar bilan mahalliy blokcheyn yaratadi.
3. Truffle'ni o'rnatish
Truffle - bu Ethereum smart-kontraktlari uchun ishlab chiqish freymvorkidir. U kontraktlaringizni kompilyatsiya qilish, joylashtirish va sinab ko'rish uchun vositalarni taqdim etadi.
Truffle'ni npm yordamida global o'rnating:
npm install -g truffle
O'rnatishni quyidagi buyruqni bajarib tekshiring:
truffle version
4. VS Code'ni o'rnatish (Ixtiyoriy, lekin tavsiya etiladi)
Visual Studio Code (VS Code) - bu smart-kontraktlarni ishlab chiqish uchun ajoyib qo'llab-quvvatlashga ega bo'lgan mashhur kod muharriri. U sintaksisni ajratib ko'rsatish, kodni to'ldirish va tuzatish kabi xususiyatlarni taklif etadi.
VS Code'ni quyidagi manzildan yuklab oling va o'rnating: https://code.visualstudio.com/
Ishlab chiqish tajribangizni yaxshilash uchun VS Code uchun Solidity kengaytmasini o'rnatishni o'ylab ko'ring.
Birinchi smart-kontraktingizni yozish
Endi ishlab chiqish muhitingiz sozlanganidan so'ng, siz birinchi smart-kontraktingizni yozishni boshlashingiz mumkin. Biz blokcheynda xabar saqlaydigan "HelloWorld" deb nomlangan oddiy kontrakt yaratamiz.
1. Truffle loyihasini yaratish
Terminalingizni yoki buyruqlar satrini oching va loyihangizni yaratmoqchi bo'lgan katalogga o'ting. Keyin quyidagi buyruqni bajaring:
truffle init
Ushbu buyruq quyidagi katalog tuzilmasiga ega yangi Truffle loyihasini yaratadi:
contracts/ migrations/ test/ truffle-config.js
- contracts/: Sizning smart-kontrakt manba fayllaringizni (.sol) o'z ichiga oladi.
- migrations/: Kontraktlaringizni blokcheynga joylashtirish uchun skriptlarni o'z ichiga oladi.
- test/: Sizning smart-kontraktlaringiz uchun testlarni o'z ichiga oladi.
- truffle-config.js: Sizning Truffle loyihangiz uchun konfiguratsiya sozlamalarini o'z ichiga oladi.
2. HelloWorld kontraktini yaratish
`contracts/` katalogida `HelloWorld.sol` nomli yangi fayl yarating. Faylga quyidagi kodni qo'shing:
pragma solidity ^0.8.0;
contract HelloWorld {
string public message;
constructor(string memory _message) {
message = _message;
}
function setMessage(string memory _newMessage) public {
message = _newMessage;
}
}
Tushuntirish:
- `pragma solidity ^0.8.0;`: Solidity kompilyatorining versiyasini belgilaydi.
- `contract HelloWorld { ... }`: `HelloWorld` nomli smart-kontraktni belgilaydi.
- `string public message;`: `message` deb nomlangan `string` turidagi ommaviy holat o'zgaruvchisini e'lon qiladi.
- `constructor(string memory _message) { ... }`: Konstruktor funksiyasini belgilaydi, u kontrakt joylashtirilganda bajariladi. U `string` argumentini oladi va `message` o'zgaruvchisining boshlang'ich qiymatini o'rnatadi.
- `function setMessage(string memory _newMessage) public { ... }`: `message` o'zgaruvchisining qiymatini yangilash imkonini beruvchi `setMessage` nomli ommaviy funksiyani belgilaydi.
3. Kontraktni kompilyatsiya qilish
Terminalingizni yoki buyruqlar satrini oching va Truffle loyihangiz katalogiga o'ting. Keyin quyidagi buyruqni bajaring:
truffle compile
Ushbu buyruq sizning smart-kontraktingizni kompilyatsiya qiladi. Agar xatolar bo'lmasa, u kompilyatsiya qilingan kontrakt artefaktlarini o'z ichiga olgan `build/contracts` katalogini yaratadi.
4. Migratsiya yaratish
`migrations/` katalogida `1_deploy_hello_world.js` nomli yangi fayl yarating. Faylga quyidagi kodni qo'shing:
const HelloWorld = artifacts.require("HelloWorld");
module.exports = function (deployer) {
deployer.deploy(HelloWorld, "Hello, Blockchain!");
};
Tushuntirish:
- `const HelloWorld = artifacts.require("HelloWorld");`: `HelloWorld` kontrakt artefaktini import qiladi.
- `module.exports = function (deployer) { ... }`: Argument sifatida `deployer` ob'ektini oladigan migratsiya funksiyasini belgilaydi.
- `deployer.deploy(HelloWorld, "Hello, Blockchain!");`: `HelloWorld` kontraktini blokcheynga joylashtiradi va konstruktorga "Hello, Blockchain!" boshlang'ich xabarini uzatadi.
5. Kontraktni joylashtirish
Ganache ishlayotganiga ishonch hosil qiling. Terminalingizni yoki buyruqlar satrini oching va Truffle loyihangiz katalogiga o'ting. Keyin quyidagi buyruqni bajaring:
truffle migrate
Ushbu buyruq sizning smart-kontraktingizni Ganache blokcheyniga joylashtiradi. U migratsiya skriptini bajaradi va kontrakt manzili va tranzaksiya tafsilotlarini chiqaradi.
6. Kontrakt bilan o'zaro ishlash
Siz joylashtirilgan kontraktingiz bilan Truffle konsoli yordamida o'zaro ishlashingiz mumkin. Quyidagi buyruqni bajaring:
truffle console
Bu Truffle konsolini ochadi, u yerda siz kontraktingiz bilan o'zaro ishlash uchun JavaScript kodini bajarishingiz mumkin.
Kontrakt nusxasini olish:
let helloWorld = await HelloWorld.deployed();
Joriy xabarni olish:
let message = await helloWorld.message();
console.log(message); // Chiqish: Hello, Blockchain!
Yangi xabar o'rnatish:
await helloWorld.setMessage("Hello, World!");
message = await helloWorld.message();
console.log(message); // Chiqish: Hello, World!
Ilg'or tushunchalar
Endi siz smart-kontraktlarni ishlab chiqish bo'yicha asosiy tushunchaga ega bo'lganingizdan so'ng, keling, ba'zi ilg'or tushunchalarni o'rganamiz:
1. Solidity ma'lumotlar turlari
Solidity turli xil ma'lumotlar turlarini qo'llab-quvvatlaydi, jumladan:
- `bool`: Mantiqiy qiymatni (true yoki false) ifodalaydi.
- `uint`: Ishorasiz butun sonni ifodalaydi (masalan, `uint8`, `uint256`).
- `int`: Ishorali butun sonni ifodalaydi (masalan, `int8`, `int256`).
- `address`: Ethereum manzilini ifodalaydi.
- `string`: Belgilar qatorini ifodalaydi.
- `bytes`: Baytlar ketma-ketligini ifodalaydi.
- `enum`: Maxsus sanab o'tiladigan turni ifodalaydi.
- `struct`: Maxsus tuzilmali turni ifodalaydi.
- `array`: Ruxsat etilgan o'lchamli yoki dinamik o'lchamli massivni ifodalaydi.
- `mapping`: Kalit-qiymat omborini ifodalaydi.
2. Boshqaruv tuzilmalari
Solidity standart boshqaruv tuzilmalarini qo'llab-quvvatlaydi, jumladan:
- `if` / `else`: Shartli bajarish.
- `for`: Sikl.
- `while`: Sikl.
- `do...while`: Sikl.
3. Funksiyalar
Funksiyalar smart-kontraktlarning qurilish bloklaridir. Ular kontraktning mantiqiy va xatti-harakatlarini belgilaydi.
Funksiya modifikatorlari:
- `public`: Har kim tomonidan chaqirilishi mumkin.
- `private`: Faqat kontrakt ichidan chaqirilishi mumkin.
- `internal`: Kontrakt ichidan va undan voris kontraktlardan chaqirilishi mumkin.
- `external`: Faqat kontrakt tashqarisidan chaqirilishi mumkin.
- `view`: Kontrakt holatini o'zgartirmaydi.
- `pure`: Kontrakt holatini o'qimaydi va o'zgartirmaydi.
- `payable`: Ether qabul qilishi mumkin.
4. Hodisalar (Events)
Hodisalar kontraktning bajarilishi haqida ma'lumotlarni qayd etish uchun ishlatiladi. Ular kontrakt faoliyatini kuzatish uchun tashqi ilovalar tomonidan tinglanishi mumkin.
event MessageChanged(address indexed sender, string newMessage);
function setMessage(string memory _newMessage) public {
message = _newMessage;
emit MessageChanged(msg.sender, _newMessage);
}
5. Vorislik
Solidity vorislikni qo'llab-quvvatlaydi, bu sizga mavjud kontraktlarning xususiyatlari va funksiyalarini meros qilib oladigan yangi kontraktlar yaratish imkonini beradi.
6. Kutubxonalar
Kutubxonalar - bu bir nechta kontraktlar tomonidan chaqirilishi mumkin bo'lgan qayta foydalanish mumkin bo'lgan kod modullaridir. Ular faqat bir marta joylashtiriladi va ularning funksionalligiga muhtoj bo'lgan har qanday kontrakt tomonidan ishlatilishi mumkin, bu esa gaz xarajatlarini tejaydi.
7. Gazni optimallashtirish
Gaz - bu Ethereum blokcheynida operatsiyalarni bajarish uchun zarur bo'lgan hisoblash harakatlarining o'lchov birligidir. Smart-kontrakt ishlab chiquvchilari gaz sarfini minimallashtirish uchun o'z kodlarini optimallashtirishlari kerak.
8. Xavfsizlik masalalari
Smart-kontrakt xavfsizligi juda muhim. Kodingizdagi zaifliklar sezilarli moliyaviy yo'qotishlarga olib kelishi mumkin. Mana e'tibor berish kerak bo'lgan ba'zi umumiy xavfsizlik muammolari:
- Qayta kirish hujumlari (Reentrancy attacks): Hujumchiga asl chaqiruv tugamasdan oldin funksiyani rekursiv ravishda chaqirishga imkon beradi.
- To'lib ketish va yetishmaslik (Overflow and underflow): Matematik operatsiya ma'lumotlar turining maksimal yoki minimal qiymatidan oshib ketganda sodir bo'ladi.
- Xizmat ko'rsatishni rad etish (DoS) hujumlari: Kontraktni qonuniy foydalanuvchilar uchun yaroqsiz holga keltiradi.
- Oldindan yugurish (Front-running): Hujumchi kutilayotgan tranzaksiyani kuzatadi va o'z tranzaksiyasini yuqori gaz narxi bilan bajarib, uni blokga birinchi bo'lib kiritadi.
- Vaqt belgisiga bog'liqlik (Timestamp dependency): Muhim mantiq uchun blok vaqt belgilariga tayanish maynerlar tomonidan manipulyatsiya qilinishi mumkin.
Smart-kontrakt xavfsizligi uchun eng yaxshi amaliyotlar:
- Xavfsiz kodlash amaliyotlaridan foydalaning: Solidity'da xavfsiz kod yozish uchun eng yaxshi amaliyotlarga rioya qiling.
- Audit: Kodingizni tajribali xavfsizlik mutaxassislari tomonidan auditdan o'tkazing.
- Rasmiy verifikatsiya: Kodingizning to'g'riligini matematik tarzda isbotlash uchun rasmiy verifikatsiya vositalaridan foydalaning.
- Xatoliklar uchun mukofotlar (Bug bounties): Kodingizdagi zaifliklarni topish uchun mukofotlar taklif qiling.
Ommaviy test tarmog'iga yoki asosiy tarmoqqa joylashtirish
Smart-kontraktingizni mahalliy ishlab chiqish muhitida sinchkovlik bilan sinab ko'rganingizdan so'ng, uni ommaviy test tarmog'iga yoki Ethereum asosiy tarmog'iga joylashtirishingiz mumkin.
1. Test tarmog'i uchun Ether oling
Test tarmog'iga joylashtirish uchun sizga test tarmog'i uchun Ether (ETH) kerak bo'ladi. Siz test tarmog'i uchun ETH'ni faucet (kran) dan olishingiz mumkin, bu sinov maqsadlari uchun bepul ETH taqdim etadigan xizmatdir. Umumiy test tarmoqlari qatoriga Ropsten, Rinkeby, Goerli va Sepolia kiradi. Har bir test tarmog'i uchun faucetlarni onlayn qidirib toping.
2. Truffle'ni test tarmog'i uchun sozlash
Truffle'ni test tarmog'iga ulanish uchun sozlash uchun `truffle-config.js` faylingizni yangilang. Siz Ethereum tugunining URL manzilini va joylashtirish uchun foydalanmoqchi bo'lgan hisobning shaxsiy kalitini taqdim etishingiz kerak bo'ladi.
Misol (Infura va Ropsten test tarmog'idan foydalanish):
module.exports = {
networks: {
ropsten: {
provider: () => new HDWalletProvider(PRIVATE_KEY, "https://ropsten.infura.io/v3/YOUR_INFURA_PROJECT_ID"),
network_id: 3, // Ropsten'ning id'si
gas: 5500000, // Ropsten asosiy tarmoqqa qaraganda pastroq blok chegarasiga ega
confirmations: 2, // joylashtirishlar o'rtasida kutish uchun tasdiqlashlar soni. (standart: 0)
timeoutBlocks: 200, // joylashtirish vaqti tugashidan oldingi bloklar soni (minimal: 50)
skipDryRun: true // migratsiyalardan oldin quruq ishga tushirishni o'tkazib yuborish kerakmi?
},
},
compilers: {
solidity: {
version: "0.8.0" // foydalanish uchun solidity kompilyatorining aniq versiyasini oling
}
}
};
Muhim: Hech qachon shaxsiy kalitingizni ommaviy repozitoriyga joylashtirmang. Atrof-muhit o'zgaruvchilari yoki xavfsiz maxfiy ma'lumotlarni boshqarish yechimidan foydalaning.
3. Test tarmog'iga joylashtirish
Kontraktingizni test tarmog'iga joylashtirish uchun quyidagi buyruqni bajaring:
truffle migrate --network ropsten
4. Asosiy tarmoqqa joylashtirish (Ehtiyot bo'ling!)
Ethereum asosiy tarmog'iga joylashtirish haqiqiy ETHni o'z ichiga oladi va juda ehtiyotkorlik bilan bajarilishi kerak. Asosiy tarmoqqa joylashtirishdan oldin kodingiz sinchkovlik bilan sinovdan o'tgan, audit qilingan va xavfsiz ekanligiga ishonch hosil qiling. Konfiguratsiya jarayoni test tarmog'iga joylashtirishga o'xshaydi, lekin siz asosiy tarmoq Ethereum tugunidan va asosiy tarmoq hisobingizning shaxsiy kalitidan foydalanishingiz kerak bo'ladi.
Smart-kontraktlarni ishlab chiqishning kelajagi
Smart-kontraktlarni ishlab chiqish tez rivojlanayotgan sohadir. Smart-kontraktlarning xavfsizligi, samaradorligi va kengaytirilishini yaxshilash uchun doimiy ravishda yangi tillar, vositalar va freymvorklar ishlab chiqilmoqda.
Smart-kontraktlarni ishlab chiqishdagi paydo bo'layotgan tendentsiyalar:
- 2-qavat (Layer-2) kengaytirish yechimlari: Rolluplar va holat kanallari kabi Ethereumning kengaytirilishini yaxshilaydigan texnologiyalar.
- Rasmiy verifikatsiya vositalari: Smart-kontraktlarning to'g'riligini matematik jihatdan isbotlay oladigan vositalar.
- Domen-maxsus tillar (DSLs): Moliya yoki ta'minot zanjiri kabi maxsus dastur sohalariga moslashtirilgan tillar.
- Zanjirlararo o'zaro ishlash imkoniyati (Cross-chain interoperability): Smart-kontraktlarga boshqa blokcheynlar bilan o'zaro ishlash imkonini beradigan yechimlar.
- AI va smart-kontraktlar: Qaror qabul qilishni avtomatlashtirish va samaradorlikni oshirish uchun sun'iy intellektni smart-kontraktlar bilan integratsiya qilish.
Xulosa
Smart-kontraktlarni ishlab chiqish - bu butun dunyo bo'ylab sanoatni inqilob qilish salohiyatiga ega bo'lgan kuchli va hayajonli soha. Blokcheyn texnologiyasining asoslarini tushunish, Solidity'ni o'zlashtirish va xavfsizlik va gazni optimallashtirish bo'yicha eng yaxshi amaliyotlarga rioya qilish orqali siz innovatsion va ta'sirchan markazlashtirilmagan ilovalarni yaratishingiz mumkin.
Ushbu qo'llanma sizning smart-kontraktlarni ishlab chiqish sayohatingiz uchun mustahkam poydevor yaratadi. Ushbu tez rivojlanayotgan sohada oldinda bo'lish uchun o'rganishni, tajriba qilishni va o'rganishni davom eting. Ishonch, shaffoflik va avtomatlashtirishning kelajagi smart-kontraktlar bilan qurilmoqda va siz uning bir qismi bo'lishingiz mumkin!
Qo'shimcha o'quv resurslari:
- Solidity hujjatlari: https://docs.soliditylang.org/
- Truffle Suite hujjatlari: https://www.trufflesuite.com/docs/truffle
- OpenZeppelin: https://openzeppelin.com/ - Xavfsiz smart-kontrakt komponentlari kutubxonasi.
- Ethereum ishlab chiquvchilar uchun resurslar: https://ethereum.org/en/developers/