Rumah > Peranti teknologi > industri IT > Kod Solidity yang berkualiti dengan Openzeppelin dan rakan -rakan

Kod Solidity yang berkualiti dengan Openzeppelin dan rakan -rakan

William Shakespeare
Lepaskan: 2025-02-16 11:20:10
asal
317 orang telah melayarinya

Openzeppelin: Alat yang berkuasa untuk memastikan keselamatan kontrak pintar Ethereum

Quality Solidity Code with OpenZeppelin and Friends

mata teras

    Openzeppelin menyediakan pemaju Ethereum dengan set alat berharga yang merangkumi corak kod solidity yang selamat dan boleh dipercayai dan modul kontrak pintar, yang telah menjadi standard industri dan boleh dengan mudah digunakan melalui truffle.
  • Perpustakaan Openzeppelin mengandungi pelbagai kontrak untuk menerbitkan token pada platform Ethereum, termasuk token ERC20, ERC721 dan ERC827. Ia juga menawarkan satu set kontrak crowdfunding untuk tawaran token awal (ICO), dengan pelbagai ciri seperti pembelian rekod, penghantaran token dan penghantaran dana ETH.
  • Zeppelinos adalah alat yang terdesentralisasi dan platform perkhidmatan untuk membangun dan menguruskan aplikasi kontrak pintar yang selamat. Ia menjanjikan untuk membolehkan pemaju memilih kebolehubahan kod mereka yang digunakan melalui mod peningkatan, dengan itu menangani kebolehubahan yang wujud dalam kontrak pintar yang digunakan pada Ethereum.
  • Rangka Kerja Truffle adalah persekitaran pembangunan, rangka kerja ujian dan saluran paip aset Ethereum. Ia termasuk kotak truffle, iaitu boilerplate yang mengandungi kod JavaScript front-end, kontrak solidity, dan utiliti aliran kerja. Tokenmarket dan Consensys juga merupakan alat yang terkenal untuk menguruskan jualan token dan menyediakan amalan terbaik kontrak Ethereum Smart.
Pengkomputeran Ethereum perlu direplikasi pada semua nod dalam rangkaian, jadi pengkomputerannya mahal dan tidak cekap (sebenarnya, dokumentasi pemaju GitHub Ethereum menyatakan bahawa kita tidak seharusnya mengharapkan kuasa pengkomputeran Ethereum melebihi tahun 1999 pada tahun 1999. Telefon bimbit).

Oleh itu, keselamatan mesin maya Ethereum (EVM), iaitu keselamatan kontrak pintar yang digunakan pada blok Ethereum, adalah penting. Semua kesilapan boleh menyebabkan kerugian ekonomi sebenar -sama ada disebabkan oleh kod kontrak yang buruk atau kerugian yang disebabkan oleh penggodam yang mengeksploitasi kelemahan kontrak seperti Hack DAO yang terkenal yang membawa kepada perpecahan masyarakat dan melahirkan blok Ethereum klasik.

kesempurnaan turing dan pelbagai keputusan reka bentuk lain menjadikan Ethereum lebih berkuasa dan kompleks, tetapi juga membayar harga. Kekayaan Ethereum menjadikannya lebih terdedah kepada kesilapan dan penggodaman.

Apa yang lebih teruk ialah kontrak pintar yang digunakan pada Ethereum tidak boleh diubah suai. Blockchain adalah struktur data yang tidak berubah.

Artikel ini meneroka keselamatan kontrak pintar dan ekosistem alat dan perpustakaan yang membantu kami menulis kontrak pintar yang selamat.

Mari kita lihat beberapa peningkatan alat yang luar biasa yang boleh kita gunakan dengan segera untuk memanfaatkan amalan terbaik yang disediakan oleh persekitaran Solidity.

AIDS

Salah satu alat yang paling keren untuk pemaju Ethereum ialah Perpustakaan Openzeppelin. Ia adalah rangka kerja yang mengandungi banyak corak kod solidity yang selamat dan boleh dipercayai dan modul kontrak pintar. Penulis sendiri adalah juruaudit dan perunding solidity, di mana anda boleh membaca laporan audit pihak ketiga mengenai modul ini. Manuel Araoz dari Zeppelin Solutions, sebuah syarikat yang berpangkalan di Argentina, menggariskan corak keselamatan dan pertimbangan utama.

Openzeppelin telah menjadi standard industri untuk kod solidity sumber terbuka (MIT) yang boleh diguna semula, mudah digunakan dengan truffle. Ia terdiri daripada kontrak pintar yang boleh diimport dengan mudah dan digunakan dalam kontrak kami apabila dipasang melalui npm.

Quality Solidity Code with OpenZeppelin and Friends

Kerangka Truffle menerbitkan tutorial tentang cara menggunakan Openzeppelin dengan truffle dan ganache.

Kontrak ini bertujuan untuk diimport, dan kaedah mereka juga bertujuan untuk dilindungi seperti yang diperlukan. Fail itu sendiri tidak boleh diubah suai.

Mod ICO

Perpustakaan Openzeppelin mengandungi satu set kontrak untuk menerbitkan token pada platform Ethereum - untuk token ERC20, termasuk kontrak Basilicoken, BurnableTokens, CappedTokens (token yang boleh dibina dengan topi tetap), Mintabletoken, PausableTokens (Token Transfer boleh diganggu). Terdapat juga tokenvesting (kontrak yang secara beransur -ansur melepaskan keseimbangan tokennya seperti pelan peletakan tipikal, dengan tempoh tebing dan tempoh peletakan) dan sebagainya.

Terdapat juga beberapa kontrak untuk token ERC721 (atau token unik yang tidak boleh diganti jenis Cryptokitties).

Terdapat juga beberapa kontrak crowdfunding - kontrak untuk tawaran token awal. Kontrak ini boleh merakam pembelian, menyampaikan/mengeluarkan token kepada pembeli, dan mengemukakan dana ETH. Terdapat juga beberapa ciri untuk mengesahkan dan memproses pembelian token.

Kontrak FinalIzableCrowDsale membolehkan logik tertentu dilaksanakan selepas dijual. Postdeliverycrowdsale membolehkan pengeluaran dibekukan sehingga crowdfunding berakhir. REVELLECROWDSALE adalah lanjutan kontrak Crowdsale yang menambah sasaran pembiayaan dan kemungkinan pengguna boleh mendapatkan bayaran balik jika sasaran tidak dipenuhi.

Kontrak yang boleh destructible boleh dimusnahkan oleh pemilik dan semua dana dihantar kepada pemilik. Terdapat juga beberapa kontrak yang digunakan untuk mencapai kebolehlaksanaan subkontrak.

Openzeppelin menyediakan banyak bantuan dan utiliti untuk ICO-contohnya, kontrak yang dapat memulihkan token ERC20 yang dihantar ke alamat ICO dan bukannya ETH. Kontrak yang diwarisi membolehkan pemindahan pemilikan kepada pemilik lain dalam keadaan tertentu. Kontrak yang dimiliki mempunyai alamat pemilik dan menyediakan kebenaran/kebenaran asas dan pemindahan pemilikan.

Kontrak RBAC menyediakan utiliti kawalan akses berasaskan peranan. Kami boleh menetapkan peranan yang berbeza ke alamat yang berbeza, dan tidak ada batasan pada bilangan peranan.

Zeppelin juga menyediakan contoh projek truffle startup crowdfunding yang belum diaudit, jadi lebih baik menggunakannya sebagai primer untuk menggunakan Openzeppelin. Ia menjadikannya mudah untuk segera memulakan crowdfunding dan token.

zeppelinos

Zeppelinos adalah sumber terbuka, alat yang terdesentralisasi dan platform perkhidmatan yang dibina di EVM untuk membangunkan dan mengurus aplikasi kontrak pintar dengan selamat.

Malah, ini adalah lapisan middleware di atas EVM, yang melangkah lebih jauh daripada kerangka Openzeppelin semasa. Penyelesaian Zeppelin Di sini berjanji untuk membolehkan pemaju memilih kebolehubahan kod mereka yang digunakan melalui mod peningkatan. Mereka yang menulis kontrak pintar untuk EVM tahu bahawa satu isu/sekatan adalah kebolehubahan kontrak yang digunakan: sebaik sahaja anda memasuki blockchain, kontrak tidak dapat diubah. Itulah salah satu sebab mengapa janji Zeppelinos begitu menarik.

Setakat ini, untuk "mengemas kini" kontrak, dua kontrak perlu digunakan - satu sebagai proksi dengan antara muka dan yang lain sebagai pelaksanaan. Fungsi proksi akan dipanggil dan permintaan akan dikemukakan kepada pelaksanaannya. Kemudian, jika perubahan diperlukan, tukar pelaksanaan dalam proksi (meletakkan semula pelaksanaan lain dan mempunyai pilihan untuk mematikan pelaksanaan asal dengan fungsi bunuh diri), dan pelaksanaan baru akan diaktifkan dengan lancar.

Kami menantikan penggunaan zeppelinos masa depan oleh masyarakat. Penyelesaian Zeppelin telah menyebut beberapa peserta yang tidak remeh seperti Openbazaar, District0x, Storj.io, dan mereka menggunakan Zeppelinos.

Quality Solidity Code with OpenZeppelin and Friends

Kotak truffle

Rangka Kerja Truffle adalah persekitaran pembangunan, rangka kerja ujian dan saluran paip aset Ethereum. Ia adalah set alat yang paling lengkap dan alat yang paling banyak digunakan di kalangan pemaju Ethereum. Ekosistem Truffle termasuk banyak kotak truffle-boilers yang termasuk kod JavaScript front-end, kontrak solidity, dan utiliti aliran kerja seperti projek webpack boilerplate dengan alat-alat mereka, seperti penghijrahan, ujian, saluran paip bangunan, dan banyak lagi. Kotak truffle boleh termasuk Dapp starter lengkap.

Beberapa kotak yang disokong secara rasmi termasuk:

    gerimis: Satu set perpustakaan depan yang berasaskan reaksi/redux untuk membuat penciptaan depan Dapp lebih mudah.
  • Kotak React: Aplikasi mudah untuk berinteraksi dengan kontrak pintar bermula dengan aplikasi front-end React.
  • React Auth Box: Menyediakan satu set komponen yang diperlukan untuk pengesahan yang disokong oleh kontrak pintar.
  • React-UPOR: Kotak pengesahan ini menghubungkan bahagian depan ke sistem pengesahan blockchain UPORT.
  • Terdapat juga kotak template Projek Webpack yang disebutkan di atas.
Kotak yang dicipta oleh komuniti juga membawa boilerplate ke kontrak integrasi aplikasi/status mudah alih, atau menyediakan angular dan vue.js boilerplate, dll.

Kotak ini disepadukan dengan truffle, jadi kita boleh memulakannya dengan menjalankan arahan seperti Truffle Unbox React - ini akan memuat turun kotak

React dan memasang kebergantungannya secara tempatan.

Tokenmarket

TokenMarket adalah syarikat lain yang telah mengeluarkan kontrak dan alat solidity untuk menguruskan jualan/ICO. Ia adalah syarikat terhad yang didaftarkan di Gibraltar dan terlibat dalam perniagaan ICO Consulting. Ia memenangi anugerah "Best ICO Consultant" pada 2018 Crypto World of Berlin.

Repositori ICO Tokenmarket di GitHub mengatakan salah satu matlamat/prinsip reka bentuknya adalah menggunakan atau membina kontrak Openzeppelin yang sedia ada, memanggilnya Standard Emas untuk Kontrak Solidity. Oleh itu, sebahagian besar asas kod ICO Tokenmarket didasarkan pada asas kod OpenZeppelin dan kemudian membina lebih lanjut di atasnya (dengan mewarisi dengan cara berorientasikan objek).

Tokenmarket secara berkala (cuba) untuk selaras dengan asas kod hulu Openzeppelin. Walau bagaimanapun, ia juga menambah lebih banyak kandungan, seperti:

    Kontrak amltoken: Ini memberi pemilik peluang untuk memulihkan token dari peserta sebelum token dibebaskan jika peserta gagal lulus selepas proses AML yang panjang.
  • Gnosis Wallet: Pada dasarnya, ia adalah dompet pelbagai tandatangan, yang memerlukan banyak peserta untuk mencapai kesepakatan mengenai urus niaga tertentu.
  • Pengeluaran kontrak token terpusat.
  • Kyccrowdsale: Kontrak yang hanya pelabur bukan anonim dibenarkan untuk mengambil bahagian.
  • Mulakan semula kontrak crowdfunding: Ini akan memulihkan crowdfunding sebelumnya dan membolehkan perubahan kepada parameter tertentu.
  • Harga Milestone: Kontrak ini menawarkan harga berasaskan tonggak dan urus niaga pra-ICO.
EVM adalah Turing-lengkap, jadi semua kontrak yang berbeza ini tidak dapat mengalirkan fungsi penuhnya dari jauh, walaupun banyak kod dalam repositori yang kita sedang berbincang di sini. Sekiranya sistem (Ethereum) dapat bertahan dan terus bersaing, dan ada cukup orang di rangkaian, kita dapat mengharapkan fleksibilitas yang lebih besar dari masalah -masalah kontrak blockchain ini cuba menyelesaikannya.

Consensys

Consensys Ventures adalah firma modal teroka Switzerland yang meletakkan dirinya sebagai firma modal teroka di ruang yang terdesentralisasi -terutama di ruang Ethereum. Sebagai tambahan kepada sumber -sumber lain yang mereka sediakan untuk syarikat -syarikat yang dilindungi, mereka telah menyusun kompilasi ringkas mengenai amalan terbaik kontrak pintar Ethereum. Walaupun ini bukan kod yang ketat, ia masih mengandungi banyak contoh kebaikan dan keburukan kod solidity.

Ia memberi tumpuan kepada amalan keselamatan terbaik kontrak pintar.

Senarai lengkap topik adalah di luar skop artikel ini, kerana sumbernya sangat komprehensif dan bahkan peringatan bacaan untuk pemaju kontrak pintar untuk diingat ketika menulis perisian untuk EVM. Ini benar terutamanya jika seseorang menulis program dari awal (tidak bergantung pada kod siap sedia dan terbukti seperti Openzeppelin).

Beberapa artikel melibatkan panggilan luaran, mengelakkan perubahan keadaan selepas panggilan luaran, mengendalikan kesilapan dalam panggilan luaran, mengutamakan menarik daripada menolak panggilan luaran, memahami perdagangan antara kontrak abstrak dan antara muka, dan tidak mengandaikan bahawa kontrak digunakan sifar Penciptaan keseimbangan, membezakan antara fungsi dan peristiwa, pertimbangan warisan berganda, amaran tentang ketergantungan timestamp dan kebolehgunaan struktur tersebut (contohnya, menggunakan blok) - dan banyak lagi helah sedemikian, dengan banyak contoh kod.

kemudian adalah amaran khusus token, amaran yang berkaitan dengan piawaian token, teknik kejuruteraan perisian, alat keselamatan - untuk analisis statik, ujian, pemeriksa kod, dll.

mereka juga menyenaraikan serangan yang diketahui, termasuk yang memanggil kod luaran dan kontrak, fungsi yang boleh dipanggil berulang kali dalam kes ini, isu-isu semula, keadaan perlumbaan silang fungsi, di mana mereka menganalisis beberapa masalah, beberapa masalah ini diwujudkan Dalam kejadian penggodaman DAO.

Mereka selanjutnya menyebutkan kebergantungan jenis transaksi, ketergantungan timestamp, limpahan integer dan aliran bawah, pelbagai jenis kemungkinan serangan DOS/mata, seperti menggunakan DOS yang terhad gas, dan kemudian menghantar eter ke kontrak; Serangan yang tidak disengajakan. Pastikan anda membaca dokumentasi mereka.

Kesimpulan

Dalam pengenalan ini kepada ekosistem, kami memperkenalkan beberapa sumber yang tersedia untuk kontrak pintar yang ditulis dengan baik pada mesin maya Ethereum yang boleh digunakan untuk pengeluaran. Ini termasuk penggunaan semula kod yang diaudit dan disahkan (Openzeppelin mendakwa lebih daripada $ 4 bilion dalam cryptocurrency berjalan pada kontraknya) dan belajar menulis perisian selamat dan siap pengeluaran anda sendiri.

Kami sangat yakin senarai ini tidak lengkap. Adakah kita terlepas apa -apa yang patut disebut? Tolong beritahu kami!

soalan yang sering ditanya mengenai Solidity dan Openzeppelin

Apakah penggunaan utama Openzeppelin dalam Solidity?

Openzeppelin adalah perpustakaan untuk pembangunan kontrak pintar yang selamat. Ia menyediakan pelaksanaan piawaian seperti ERC20 dan ERC721, yang mana anda boleh menggunakan seperti, atau skala untuk keperluan anda, serta komponen kepantasan untuk membina kontrak tersuai dan sistem yang lebih kompleks. Openzeppelin membantu melindungi projek blockchain dari ancaman biasa dengan menyediakan kod yang diuji dan komuniti.

Bagaimanakah Openzeppelin memastikan keselamatan kontrak pintar?

Openzeppelin memastikan keselamatan kontrak pintar dengan menyediakan asas kod yang diuji, boleh diguna semula dan selamat. Perpustakaan Kontrak Openzeppelin adalah penyelesaian yang paling banyak digunakan dalam pembangunan kontrak pintar Ethereum. Ia direka untuk menjadi sumber kod yang selamat dan boleh dipercayai yang boleh digunakan oleh pemaju, dengan itu mengurangkan skop potensi kelemahan dalam satu kontrak pintar.

Bagaimana untuk menaik taraf kontrak pintar saya menggunakan OpenZeppelin?

Openzeppelin Menyediakan plugin naik taraf yang boleh anda gunakan untuk menaik taraf kontrak pintar. Plugin ini menyediakan cara yang mudah dan selamat untuk menaik taraf kontrak pintar dari masa ke masa untuk menambah ciri -ciri baru atau memperbaiki pepijat. Plugin ini direka untuk bekerja dengan persekitaran pembangunan truffle dan keras.

Apakah peranan Truffle dalam Openzeppelin?

Truffle adalah persekitaran pembangunan, rangka kerja ujian dan saluran paip aset Ethereum. Ia memainkan peranan penting dalam Openzeppelin dengan menyediakan persekitaran ujian untuk kontrak pintar. Suite alat Truffle membantu pemaju membuat, menyusun, menyebarkan dan menguji kontrak pintar dalam persekitaran bersatu.

Bagaimana menggunakan Openzeppelin dengan Truffle?

Untuk menggunakan Openzeppelin dengan truffle, anda perlu memasang kedua -dua projek anda. Sebaik sahaja pemasangan selesai, anda boleh mengimport kontrak OpenZeppelin ke dalam kontrak anda sendiri dan mengembangkannya mengikut keperluan anda. Truffle akan digunakan untuk menyusun dan menggunakan kontrak anda.

Apakah faedah menggunakan OpenZeppelin untuk projek Solidity saya?

Openzeppelin menyediakan asas kestabilan dan keselamatan untuk projek kepantasan anda. Ia menyediakan asas kod yang diuji, boleh diguna semula dan selamat yang dapat membantu melindungi projek anda dari ancaman biasa. Ia juga menyediakan alat untuk menaik taraf kontrak pintar, membolehkan anda menambah ciri -ciri baru atau memperbaiki pepijat dari masa ke masa.

Bagaimana untuk menyumbang kepada komuniti Openzeppelin?

Komuniti Openzeppelin mengalu -alukan sumbangan pemaju. Anda boleh menyumbang dengan melaporkan pepijat, mencadangkan ciri baru, atau kod menulis. Semua sumbangan akan diaudit oleh komuniti dan akan membantu meningkatkan keselamatan dan fungsi Openzeppelin.

Bolehkah saya menggunakan OpenZeppelin untuk projek blockchain lain selain Ethereum?

Walaupun Openzeppelin direka khas untuk digunakan di Ethereum, banyak prinsip dan perpustakaannya boleh digunakan untuk projek blockchain lain. Walau bagaimanapun, butiran pelaksanaan khusus mungkin berbeza -beza bergantung kepada platform blockchain yang anda gunakan.

Bagaimanakah Openzeppelin mengendalikan piawaian ERC20 dan ERC721?

Openzeppelin menyediakan pelaksanaan piawaian ERC20 dan ERC721 yang boleh anda gunakan seperti atau skala kepada keperluan anda. Pelaksanaan ini selamat dan boleh dipercayai, dan diuji dan ditindas masyarakat.

Apakah alternatif untuk Openzeppelin yang dibangunkan oleh Solidity?

Walaupun Openzeppelin adalah pilihan yang popular untuk pembangunan kepantasan, terdapat perpustakaan dan kerangka lain yang tersedia. Ini termasuk truffle, hardhat, dan eter.js. Setiap mempunyai kekuatan dan kelemahannya sendiri, dan pilihan terbaik bergantung pada keperluan dan keutamaan khusus anda.

Atas ialah kandungan terperinci Kod Solidity yang berkualiti dengan Openzeppelin dan rakan -rakan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan