Mengerti Verifikasi Formal dari Smart Contract dalam Satu Bacaan

Pendahuluan

Seiring dengan nilai aset Blok on-chain yang naik dengan cepat, berbagai proyek bergantian meluncurkan berbagai skenario ekonomi enkripsi yang berbeda. Dalam situasi ini, mencegah kerentanan dan ancaman yang mungkin terjadi lebih penting daripada sebelumnya.

BTC awalnya dirancang untuk menggantikan bank, tetapi teknologi Blockchain menunjukkan kemampuannya untuk menggantikan semua perantara. Dalam proses ini, teknologi ini membawa kemungkinan baru untuk Uang Digital, seperti mata uang pemrograman yang tidak dapat dicapai oleh uang kertas. Uang Digital ini mendorong perkembangan desentralisasi dengan mengizinkan eksekusi kontrak secara otomatis, dengan cara yang transparan dan tanpa campur tangan manusia. Oleh karena itu, pengacara dan kontrak dapat digantikan dalam transaksi keuangan. Namun, bagaimana Smart Contract bekerja? Bisakah kita benar-benar mempercayai sistem yang tidak bergantung pada kepercayaan ini?

Artikel ini akan membahas Verifikasi Formal dari smart contract secara mendalam, menganalisis kelebihan dan kekurangannya serta dampaknya terhadap ekosistem enkripsi, terutama pada aplikasi Ethereum.

Sejarah Singkat Pengembangan Smart Contract

Sumber: CryptoSlate

Nick Szabo · Ilmuwan komputer dan kriptografer Amerika Serikat, sering dikreditkan dengan Satoshi sendiri. Sebagai pendiri Smart Contract, ia pertama kali muncul dengan konsep "Smart Contract" pada tahun 1994. Saab mendefinisikan Smart Contract sebagai protokol transaksi digital yang digunakan untuk mengotomatisasi ketentuan protokol. Niat awalnya adalah untuk meningkatkan transaksi elektronik, seperti sistem POS, dan untuk memperluas kemampuannya ke ranah digital.

Visi Sabo untuk protokol masa depan akan menjadi seperti vending machine, otomatis, dapat diandalkan, dan tidak dapat dimanipulasi. Meskipun pada saat itu kondisi teknis belum sepenuhnya mewujudkan gagasannya, namun gagasannya membentuk dasar bagi perubahan industri blockchain di masa depan. Pada tahun 2015, peluncuran Ethereum menghasilkan penerapan Smart Contract yang sebenarnya, dan teori Sabo menjadi teknologi kunci dalam aplikasi Desentralisasi.

Visinya adalah membuat kontrak dapat mengelola hubungan kedua belah pihak dengan ketentuan yang akurat dan otomatis, mengurangi kebutuhan untuk campur tangan dan pengawasan manusia. Metode ini menyediakan cara yang lebih aman dan efisien untuk mengelola protokol, membuka jalan bagi pengembangan Smart Contract dan menjadikannya sebagai alat penting dalam ekosistem blockchain. Pandangan awal Sabo masih mempengaruhi perkembangan perdagangan digital dan Smart Contract hingga saat ini.

Apa itu Verifikasi Formal?

Sumber: Medium

Verifikasi Formal adalah proses yang ketat untuk memeriksa apakah sistem (seperti Smart Contract) mematuhi aturan atau spesifikasi yang ditetapkan. Dengan kata lain, itu adalah untuk memverifikasi apakah sistem dapat berjalan sesuai harapan, memastikan bahwa memenuhi syarat yang diperlukan, dan menjalankan fungsinya yang telah ditentukan tanpa kesalahan.

Untuk mencapai hal ini, teknik verifikasi pertama-tama menggambarkan perilaku yang diharapkan dari sistem melalui model formal, dan kemudian menggunakan bahasa spesifikasi untuk menentukan kondisi spesifik yang harus dipenuhi kontrak. Saat artikel masuk lebih dalam, kita akan melihat lebih banyak contoh dunia nyata. Teknik Verifikasi Formal secara matematis membandingkan pelaksanaan kontrak yang sebenarnya dengan spesifikasinya untuk memastikan keakuratannya. Setelah kontrak memenuhi spesifikasi ini, kontrak dianggap "benar secara fungsional" atau "dirancang dengan benar", menegaskan keandalan dan keamanannya dalam konteks Rantai Blok.

Jenis Spesifikasi Formal untuk Kontrak Pintar

Sumber: Ever Scale

Spesifikasi formal memvalidasi apakah program berjalan dengan benar melalui penalaran matematika. Spesifikasi ini dapat menggambarkan perilaku keseluruhan (tingkat tinggi) atau detail operasional internal kontrak (tingkat rendah). Dengan mendefinisikan perilaku kontrak secara matematis, spesifikasi formal memastikan kontrak berfungsi sesuai yang diharapkan.

Spesifikasi Tingkat Tinggi

High-level specification, juga dikenal sebagai model-oriented specification, menggambarkan keadaan keseluruhan dari Smart Contract, menganggapnya sebagai mesin keadaan terbatas (FSM), melakukan transisi antara keadaan yang berbeda melalui operasi khusus. Logika urutan waktu sering digunakan untuk mendefinisikan aturan-aturan transisi ini, menjelaskan secara rinci bagaimana kontrak mengalami perubahan keadaan seiring berjalannya waktu, dan kondisi yang harus dipenuhi.

Standar tinggi utama menekankan dua hal: keamanan dan likuiditas. Keamanan dapat menghindari terjadinya kejadian tak terduga, seperti saldo akun pengirim tidak mencukupi untuk melakukan transaksi. Likuiditas memastikan kontrak dapat terus berjalan dengan lancar, seperti mempertahankan likuiditas yang cukup, memastikan pengguna dapat menarik dana kapan pun. Keduanya bersama-sama memastikan keamanan dan keandalan Smart Contract, melindungi aset dan pengalaman interaksi pengguna.

Spesifikasi Tingkat Rendah

Spesifikasi tingkat rendah juga dikenal sebagai spesifikasi berbasis atribut, fokusnya adalah untuk mendefinisikan apakah perilaku kontrak itu benar melalui analisis proses eksekusi internal kontrak. Berbeda dengan spesifikasi tingkat tinggi yang menganggap kontrak sebagai mesin status terbatas, spesifikasi tingkat rendah menganggap Smart Contract sebagai sistem fungsi matematika dan menganalisis urutan eksekusi fungsi (disebut jejak) yang akan menyebabkan perubahan status kontrak.

Teknologi Verifikasi Formal untuk Smart Contract

Sumber: Ever Scale

Deteksi Model

Model checking adalah metode verifikasi yang menggunakan Algoritme untuk memeriksa apakah model Smart Contract sesuai dengan spesifikasi yang ditetapkan. Smart Contract biasanya direpresentasikan sebagai sistem perubahan status, di mana properti-propertinya didefinisikan menggunakan logika temporal. Metode ini melibatkan pembuatan model matematika dan penggunaan rumus logika untuk mendeskripsikan perilakunya, kemudian Algoritme akan memverifikasi apakah model tersebut memenuhi persyaratan.

Bukti Teorema

Berbeda dengan pemeriksaan model, bukti teorema adalah metode matematika yang digunakan untuk memverifikasi kebenaran program (termasuk kontrak cerdas). Metode ini mengubah model kontrak dan spesifikasi menjadi rumus logika untuk memverifikasi kesetaraan logis, yaitu jika satu proposisi benar, proposisi lainnya juga benar. Dengan menyatakan hubungan ini sebagai teorema, alat otomatis untuk bukti teorema dapat memverifikasi kebenaran model kontrak dan spesifikasinya.

Berbeda dengan model checking yang terbatas pada sistem berkeadaan terbatas, bukti teorema dapat menganalisis sistem berkeadaan tak terbatas, tetapi biasanya memerlukan bimbingan manusia untuk menyelesaikan masalah logika yang kompleks. Oleh karena itu, bukti teorema seringkali lebih memakan waktu dan tenaga daripada model checking yang sepenuhnya otomatis.

Eksekusi Simbol

Simbolik execution adalah metode analisis Smart Contract yang kuat, yang melaksanakan fungsi dengan menggunakan nilai simbolik daripada input yang spesifik. Metode ini mengubah jalur pelaksanaan kontrak menjadi rumus matematika (disebut predikat jalan), dan menggunakan solver SMT untuk menentukan apakah predikat-predikat ini benar, yaitu apakah ada input yang memenuhi syarat.

Misalnya, jika fungsi kontrak tertentu mengalami Rollback ketika nilainya antara 5 hingga 10, eksekusi simbolik dapat dengan cepat menemukan nilai yang memicu kondisi ini dengan mengevaluasi kondisi X > 5 dan X < 10. Metode ini lebih efektif daripada pengujian tradisional, memiliki tingkat kesalahan yang lebih rendah, dan dapat secara langsung menghasilkan nilai spesifik yang memicu kesalahan, merupakan alat yang kuat untuk memastikan keandalan Smart Contract.

Apa itu Smart Contract?

Sumber: Tenderly

Smart Contract adalah program otomatis yang berjalan di Blok on-chain dan secara otomatis melakukan operasi yang sesuai saat memenuhi kondisi tertentu. Mereka dapat berkisar dari protokol yang sederhana hingga program yang kompleks, dan mampu mengelola aset senilai jutaan hingga miliaran dolar.

Smart Contract tidak hanya dapat mengubah cara pemungutan suara politik, manajemen Rantai Pasokan, kesehatan, dan real estat, tetapi juga dapat diterapkan dalam Aset Kripto. Desain Smart Contract memungkinkan kerja sama yang lebih lama tanpa risiko manipulasi, memberikan kerangka kerja yang transparan dan aman, meningkatkan efisiensi dan inovasi. Namun, kita perlu menyadari bahwa Smart Contract masih memiliki kelemahan dan tantangan keamanan.

Kekurangan Keamanan Pada Smart Contract

Kesalahan keamanan dalam kode Smart Contract dapat menyebabkan konsekuensi yang berbahaya, seperti kehilangan semua aset dalam kontrak. Kejadian baru-baru ini telah membuktikan hal ini.

  • Pada tahun 2021, AMMUranium Finance mengalami pencurian senilai $50 juta karena kesalahan pengejaan dalam Smart Contract.
  • Pada tahun 2021, Compound Finance secara tidak sengaja mengeluarkan hadiah yang belum dihasilkan sebesar 8000 juta dolar karena kesalahan karakter.
  • Pada tahun 2022, Wormhole Bridge kehilangan $320 juta karena celah dalam Smart Contract yang dieksploitasi. (https://techcrunch.com/2022/02/03/blockchain-bridge-wormhole-confirms-that-exploiter-stole-320-million-worth-of-crypto-assets/)

Contoh-contoh ini menunjukkan bahwa Smart Contract harus memastikan keakuratan kode sebelum diterapkan. Smart Contract adalah Sumber Terbuka, begitu diterapkan, kode menjadi terbuka untuk dilihat oleh Hacker yang dapat dengan mudah mengeksploitasi kelemahan yang ditemukan. Selain itu, ketidakdapatan untuk mengubah Smart Contract berarti bahwa setelah kode dirilis, kerentanan keamanan biasanya tidak dapat diperbaiki. Oleh karena itu, jika pengembangan tidak cukup akurat, mereka akan selalu berisiko.

Bagaimana validasi Smart Contract dilakukan?

Sumber: Certik

Prosesnya terdiri dari langkah-langkah berikut:

  • Menggunakan bahasa formal untuk menentukan spesifikasi kontrak dan fungsi yang diharapkan.
  • Mengubah kode kontrak menjadi representasi formal seperti model matematika atau ekspresi logika.
  • Gunakan verifikasi otomatis atau pemeriksa model untuk memastikan keabsahan spesifikasi dan properti kontrak.
  • Melalui verifikasi ulang, kami menemukan dan memperbaiki kesalahan atau deviasi yang tidak sesuai dengan atribut yang diharapkan.

Fitur Kunci Smart Contract

Sumber: Certik

Smart Contract dapat dianggap sebagai 'protokol yang terukir di batu', sekali dibuat tidak dapat diubah. Kontrak-kontrak ini berjalan pada buku besar yang tidak dapat dimanipulasi dari blockchain, dapat menjalankan ketentuan secara otomatis tanpa perantara, sehingga mempercepat transaksi dan menurunkan biaya. Fitur yang tetap ini tidak hanya meningkatkan keamanan, tetapi juga mencapai manajemen desentralisasi, secara signifikan menurunkan risiko penipuan dan korupsi.

Mengapa verifikasi Smart Contract begitu penting?

Melalui penalaran matematika, Verifikasi Formal memastikan bahwa Smart Contract tidak memiliki kerentanan, kesalahan, atau perilaku tak terduga. Proses eksekusi kontrak ini secara ketat meningkatkan kepercayaan orang terhadap kontrak tersebut, karena fungsinya dan propertinya telah diverifikasi secara menyeluruh.

Keberhasilan kasus verifikasi Kontrak Pintar menyoroti peran pentingnya dalam menghindari kerugian keuangan yang signifikan.

Uniswap

Misalnya, AMM terkenal Uniswap melakukan Verifikasi Formal selama pengembangan Smart Contract V1, dan menemukan serta memperbaiki kesalahan yang dapat menyebabkan kehilangan dana.

Pengimbang

Demikian pula, AMM Balancer V2 lainnya menemukan kesalahan perhitungan biaya yang terkait dengan Pinjaman Flash melalui Verifikasi Formal, menghindari potensi risiko pencurian.

SafeMoon

Setelah diterapkan, SafeMoon V1 mengidentifikasi kelemahan kecil melalui Verifikasi Formal. Kelemahan ini memungkinkan pemilik untuk melepaskan kepemilikan dan mendapatkan kembali kontrol dalam kondisi tertentu, yang sebagian besar diabaikan oleh audit manual karena kompleksitasnya. Namun, Verifikasi Formal dapat menangkap masalah yang mungkin terlewatkan oleh audit manual melalui analisis kombinasi nilai variabel.

Bagaimana Verifikasi Formal dan audit manual bekerja sama?

Verifikasi Formal adalah metode otomatis dan sistematis untuk memeriksa logika dan perilaku Smart Contract apakah sesuai dengan fungsinya yang diharapkan. Metode ini dapat menyederhanakan proses penemuan dan perbaikan kesalahan, terutama dalam masalah kompleks yang mungkin terlewatkan dalam audit manual.

Sementara itu, audit manusia melibatkan pemeriksaan menyeluruh oleh para ahli terhadap kode, desain, dan implementasi kontrak. Auditor menggunakan pengalaman mereka untuk menemukan potensi masalah keamanan dan mengevaluasi keamanan kontrak secara keseluruhan. Mereka juga dapat memverifikasi keakuratan proses Verifikasi Formal dan menemukan kerentanan yang mungkin terlewatkan oleh alat otomatis. Gabungan Verifikasi Formal dan audit manusia dapat memberikan penilaian keamanan yang komprehensif, meningkatkan kemungkinan penemuan dan perbaikan kerentanan, serta membangun pertahanan keamanan yang kuat dengan menggabungkan pengalaman dan analisis otomatis yang telah ada.

Kelebihan dan Kekurangan Smart Contract

Sumber: Blockonomi

Smart Contract, meskipun tidak sempurna, memiliki lebih banyak kelebihan daripada kekurangan. Mereka menyederhanakan transaksi yang kompleks, menghemat waktu dan biaya, serta meningkatkan transparansi alur kerja sambil mengurangi sengketa. Selain itu, Smart Contract bergantung pada jalannya kode, juga mengurangi kesalahan manusia. Enkripsi mereka juga memastikan tingkat keamanan yang sangat tinggi. Namun, Smart Contract kurang fleksibel dan sulit menangani situasi tak terduga. Selain itu, pengaturan Smart Contract memerlukan keterampilan pemrograman yang profesional, yang merupakan hambatan bagi beberapa orang. Meskipun tantangan-tantangan itu ada, Smart Contract sedang mendorong perubahan di banyak industri.

Keuntungan Smart Contract

  • Otomatisasi operasi, meningkatkan efisiensi, menghemat waktu dan uang.
  • Meningkatkan transparansi, mengurangi kontroversi, semua pihak dapat mengakses informasi yang sama.
  • Mengurangi kesalahan, karena mereka bergantung pada kode, menghilangkan kesalahan manusia.
  • Meningkatkan keamanan melalui teknologi enkripsi, sulit untuk dimanipulasi.

Kekurangan Smart Contract

  • Kurang fleksibilitas, sulit menghadapi situasi yang tak terduga.
  • Membutuhkan keterampilan pemrograman yang profesional, bergantung pada ambang teknologi yang luas.

Alat Verifikasi Formal Kontrak Pintar ETH坊

Sumber: Calibraint

Bahasa untuk Menulis Spesifikasi Formal

  • Act: Act memungkinkan pengguna untuk mendefinisikan pembaruan penyimpanan, prasyarat, post-condition, dan invarian kontrak. Suite alatnya menyediakan backend verifikasi untuk berbagai properti yang dapat diverifikasi menggunakan Coq, solver SMT, atau hevm.

(https://github.com/ethereum/act)[GitHub]

使用文档

  • Scribble: Scribble dapat mengubah komentar kode yang ditulis dalam bahasa khususnya menjadi assersi spesifikasi verifikasi.

Dokumentasi Penggunaan

  • Dafny: Dafny adalah bahasa pemrograman yang dirancang khusus untuk memverifikasi desain, dengan menggunakan anotasi tingkat tinggi untuk membantu penalaran dan memvalidasi kebenaran kode.

(https://github.com/dafny-lang/dafny)[GitHub]

Alat untuk memvalidasi kebenaran kontrak

  • Certora Prover: Certora Prover adalah alat Verifikasi Formal otomatis yang digunakan secara khusus untuk memeriksa kebenaran kode Smart Contract. Alat ini menggunakan bahasa verifikasi Certora (CVL) untuk membuat spesifikasi kontrak dan mendeteksi pelanggaran atribut potensial melalui analisis statis dan teknologi pemecahan kendala.

Situs web resmi

使用文档

  • Solidity SMTChecker: Ini adalah pemeriksa model bawaan Solidity, yang menggunakan teknologi SMT (Satisfiability Modulo Theories) dan Horn solving untuk memastikan bahwa kode sumber kontrak mematuhi spesifikasi yang ditetapkan pada saat kompilasi, serta mendeteksi apakah properti keamanan melanggar aturan.

(https://github.com/ethereum/solidity)[GitHub]

  • Solc-verify: Solc-verify adalah versi perbaikan dari kompilator Solidity yang dapat melakukan verifikasi formal otomatis pada kode Solidity melalui komentar dan pemrograman modular.

(https://github.com/SRI-CSL/solidity)[GitHub]

  • KEVM: KEVM adalah representasi formal Mesin Virtual ETHereum (EVM) yang dibuat melalui kerangka K. Ini dapat menjalankan dan menggunakan logika aksesibilitas untuk memverifikasi properti tertentu.

(https://github.com/runtimeverification/evm-semantics)[GitHub]

使用文档

Kerangka Alat untuk Pembuktian Teorema

  • Isabelle: Isabelle/HOL adalah asisten bukti yang membantu pengguna dalam mengekspresikan rumus matematika dalam bahasa formal dan menyediakan alat-alat untuk membuktikan rumus-rumus tersebut. Ini digunakan terutama dalam pembuktian matematika formal, terutama dalam memverifikasi kebenaran perangkat keras, perangkat lunak, dan bahasa pemrograman.

(https://github.com/isabelle-prover)[GitHub]

使用文档

  • Coq: Coq adalah alat bukti interaktif yang membantu pengguna mendefinisikan program dan teorema melalui proses interaktif, serta membuat bukti kebenaran yang dapat diverifikasi oleh mesin.

(https://github.com/coq/coq)[GitHub]

使用文档

Alat Deteksi Kerentanan Berbasis Eksekusi Simbolik

  • Manticore - Manticore adalah alat yang menggunakan analisis eksekusi simbolik untuk bytecode EVM, khusus digunakan untuk mendeteksi kerentanan.GitHub

Dokumentasi penggunaan

  • Hevm - hevm adalah mesin eksekusi simbolik yang digunakan untuk memeriksa kesetaraan bytecode EVM.

(https://github.com/dapphub/dapptools/tree/master/src/hevm)[GitHub]

  • Mythril - Mythril adalah alat eksekusi simbolik yang digunakan khusus untuk menemukan potensi kerentanan dalam Smart Contract ETH坊.

(https://github.com/ConsenSys/mythril-classic)[GitHub]

使用文档

Kesimpulan

Untuk memastikan keamanan Smart Contract, sangat penting untuk menggabungkan Verifikasi Formal dengan audit manusia. Kombinasi ini memungkinkan penilaian keseluruhan keamanan kontrak. Meskipun Verifikasi Formal membutuhkan sumber daya, namun untuk kontrak yang berisiko tinggi atau melibatkan jumlah uang yang besar, ini adalah jaminan keamanan yang layak. Smart Contract bukan hanya konsep populer, mereka telah memainkan peran penting dalam bisnis global. Meskipun ada beberapa tantangan, namun Smart Contract memiliki keunggulan unik dalam meningkatkan efisiensi, mengurangi kesalahan, dan meningkatkan keamanan. Mereka akan menyederhanakan proses bisnis dan meningkatkan kepercayaan dalam transaksi digital. Perusahaan yang saat ini mengadopsi teknologi ini akan memiliki keunggulan di masa depan dalam ekonomi enkripsi yang menekankan transparansi dan keandalan.

Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Bagikan
Komentar
0/400
Tidak ada komentar
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)