Openzeppelin: Alat yang berkuasa untuk memastikan keselamatan kontrak pintar Ethereum
mata teras
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
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.
Kontrak ini bertujuan untuk diimport, dan kaedah mereka juga bertujuan untuk dilindungi seperti yang diperlukan. Fail itu sendiri tidak boleh diubah suai.
Mod ICO
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.
Beberapa kotak yang disokong secara rasmi termasuk:
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.
TokenmarketRepositori 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:
Consensys
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!