Salah satu tujuan dari kontrak pintar adalah otomatisasi transaksi pembayaran antar rekanan.
Layanan pembayaran blockchain
wirech kami
juga berfungsi di pasar ini. Terlepas dari janji kontrak yang cerdas, penulis materi menganalisis kekurangan teknologi ini.
Sebagai pengembang platform blockchain yang populer, kadang-kadang saya bertanya apakah ada tempat untuk kontrak pintar dalam rencana pengembangan layanan Multichain kami, mirip dengan yang digunakan di Ethereum. Jawabannya selalu berbunyi: "Tidak, atau setidaknya tidak sekarang."

Namun di dunia hype yang bising dari blockchain, kontrak pintar
dianggap sesuatu yang sangat keren. Kenapa selalu ada jawaban? Nah, masalahnya adalah jika dalam kasus bitcoin yang dikontrol seperti bitcoin kita tahu setidaknya tiga skenario kuat dari aplikasi praktis mereka (melacak sejarah asal, menyimpan dokumen perusahaan, memfasilitasi organisasi sistem keuangan), kemudian untuk
kontrak pintar yang disiarkan yang setara dalam efisiensi kasus tidak ada.
Bukan karena orang tidak mengerti apa yang mereka inginkan dari kontrak pintar. Masalahnya adalah agak banyak ide-ide ini tidak layak. Ketika orang pintar mendengar istilah kontrak pintar, mereka cenderung memberikan kebebasan untuk imajinasi mereka. Gambarlah di kepala gambar-gambar perangkat lunak yang berdiri sendiri pintar, mengendarai gelombang data dan menghubungkan untuk memecahkan masalah dunia nyata. Sayangnya, gambaran nyata tentang bagaimana kontrak pintar bekerja jauh lebih sederhana.
Kontrak pintar adalah sepotong kode yang disimpan di blockchain. Ini didukung oleh transaksi blockchain dan membaca dari blockchain atau menulis data ke sana. Itu saja. Tidak lebih dan tidak kurang.
Kontrak pintar hanyalah nama nyaring untuk kode yang bekerja di blockchain dan berinteraksi dengan negaranya. Apa kode ini? Ini adalah Pascal, Python atau PHP. Atau mungkin Java, Fortran atau C ++. Jika Anda memikirkan format database, maka itu dapat direpresentasikan dalam bentuk prosedur yang ditulis dalam beberapa ekstensi SQL.
Pada dasarnya, semua bahasa ini setara, mereka memecahkan jenis masalah yang sama menggunakan metode yang sama untuk menyelesaikannya. Tentu saja, masing-masing memiliki kekuatan dan kelemahan. Anda akan gila mencoba membuat situs web C atau kompres video HD di Ruby. Tetapi setidaknya secara teoritis Anda bisa melakukan ini jika Anda mau. Anda hanya perlu membayar harga tinggi dalam hal kenyamanan, kinerja, dan sangat mungkin untuk kehilangan banyak rambut di kepala Anda.
Masalah kontrak pintar tidak hanya terletak pada ekspektasi yang terlalu tinggi, tetapi juga pada kenyataan bahwa ekspektasi ini mengarah pada kenyataan bahwa sejumlah besar orang menghabiskan waktu dan uang untuk ide-ide yang tidak mungkin terwujud dalam praktik.
Praktek menunjukkan bahwa perusahaan besar, sebagai suatu peraturan, memiliki sumber daya yang cukup untuk pergi jauh dari saat ketika manajemen puncak belajar tentang teknologi baru hingga saat ketika kelebihan dan keterbatasannya menjadi benar-benar dipahami.
Selama sembilan bulan terakhir, kami telah mendengarkan banyak pendapat tentang kemungkinan skenario untuk penggunaan kontrak pintar, dan kebetulan kami menjawab penulis mereka berulang-ulang bahwa ide-ide ini tidak dapat direalisasikan dalam kehidupan nyata.
Sebagai hasilnya, kami mengidentifikasi tiga kesalahpahaman paling umum tentang topik kontrak pintar. Ide-ide ini tidak benar bukan karena teknologinya belum cukup matang atau tidak karena kita belum memiliki alat.
Sebaliknya, mereka didasarkan pada kesalahpahaman sifat dasar kode yang hidup dalam database dan diproses dengan cara yang terdesentralisasi.
1. Interaksi dengan layanan eksternal
Seringkali Anda dapat mendengar tawaran untuk menggunakan kontrak pintar yang mengubah perilaku mereka sebagai respons terhadap beberapa peristiwa eksternal. Misalnya, polis asuransi pertanian yang melakukan pembayaran tergantung pada jumlah curah hujan yang terjadi pada bulan tertentu.
Menurut gagasan penulis ide, proses berlangsung kira-kira sebagai berikut: kontrak pintar menunggu waktu tertentu yang telah ditentukan, menerima laporan cuaca dari layanan eksternal dan berperilaku sesuai dengan data yang diterima.
Itu terdengar sangat sederhana. Sederhana dan tidak mungkin sekaligus. Mengapa Karena blockchain adalah sistem berbasis konsensus, yang berarti bahwa itu hanya akan berfungsi jika setiap node jaringan mencapai keadaan yang sama setelah memproses setiap transaksi dan setiap blok.
Semua operasi yang terjadi di blockchain harus sepenuhnya ditentukan, tanpa kemungkinan sekecil apa pun perbedaan akan merayapi pekerjaannya. Segera setelah dua simpul jujur mengambil posisi berbeda pada keadaan rantai, keseluruhan sistem menjadi tidak berguna.
Dan sekarang izinkan saya mengingatkan Anda bahwa setiap rantai simpul menjalankan kontrak pintar secara mandiri. Ini berarti bahwa jika kontrak pintar menerima beberapa informasi dari sumber eksternal, maka setiap node mengulangi prosedur untuk memperoleh data secara independen. Tetapi karena sumbernya berada di luar blockchain, tidak ada jaminan bahwa setiap node akan menerima respons yang sama.
Mungkin sumber akan mengubah responsnya di beberapa titik waktu antara permintaan dari dua node yang berbeda, atau mungkin tidak tersedia untuk sementara. Dengan satu atau lain cara, konsensus tidak akan tercapai dan seluruh blockchain akan berhenti berfungsi.
Jalan keluar apa yang bisa ditemukan? Dan solusinya sebenarnya sangat sederhana. Anda hanya perlu mengganti proses menghubungi kontrak pintar ke sumber eksternal dengan satu atau lebih pihak yang dipercaya (oracle) menciptakan transaksi yang menulis data yang diperlukan untuk rantai. Kemudian setiap node akan memiliki salinan data yang identik, dan mereka dapat digunakan dalam perhitungan kontrak pintar.
Dengan kata lain, alih-alih kontrak pintar yang "menarik" data dari luar, oracle akan memasukkan data yang sama ini ke dalam blockchain.
Masalah serupa muncul ketika datang ke kontrak pintar yang memicu peristiwa tertentu di dunia luar. Misalnya, banyak orang menyukai gagasan kontrak pintar yang menggunakan API bank untuk mentransfer uang. Tetapi jika setiap node mengeksekusi kode rantai secara independen, yang mana dari node akan bertanggung jawab untuk memanggil API?
Jika ini merupakan salah satu simpul, lalu apa yang akan terjadi jika simpul khusus ini, secara sengaja atau tidak sengaja mulai gagal? Dan jika semua node akan dihubungi, bisakah kita mempercayai setiap node dengan kata sandi API? Dan apakah dibenarkan untuk melakukan ratusan panggilan, bukan satu? Dan lebih buruk lagi: jika kontrak pintar perlu menentukan keberhasilan panggilan API, sekali lagi kita dihadapkan dengan masalah ketergantungan pada data eksternal.
Dan ada juga jalan keluar yang sederhana. Alih-alih menginstruksikan kontrak pintar untuk mengakses API eksternal, kita dapat menggunakan layanan tepercaya yang memantau keadaan blockchain dan melakukan tindakan tertentu sebagai respons terhadap data yang diterima. Misalnya, bank dapat secara proaktif memantau blockchain dan melakukan transfer uang sesuai dengan transaksi yang disetujui dalam rantai. Pendekatan ini tidak menimbulkan risiko untuk mencapai konsensus, karena rantai dalam model ini memainkan peran yang benar-benar pasif.
Setelah mempertimbangkan solusi yang diusulkan untuk situasi yang dijelaskan di atas, kita dapat menarik beberapa kesimpulan.
Pertama, kedua pendekatan ini membutuhkan pihak ketiga yang tepercaya untuk mengelola interaksi antara blockchain dan dunia luar. Terlepas dari kemungkinan teoritis untuk menerapkan model seperti itu, desentralisasi apa pun dalam kerangka kerjanya kehilangan semua makna.
Kedua, mekanisme yang digunakan dalam contoh-contoh ini adalah contoh langsung dari membaca dan menulis ke database. Peramal yang menyediakan informasi eksternal hanya menulisnya ke rantai. Layanan yang mengulangi keadaan blockchain di dunia nyata tidak lebih dari membaca dari rantai ini. Dengan kata lain, interaksi apa pun antara blockchain dan dunia luar dalam hal ini bermuara pada operasi database normal.
Secara lebih rinci, kami akan mengungkapkan fakta ini nanti dalam materi.
2. Melakukan pembayaran di dalam rantai
Saran lain yang sering kita dengar: penggunaan kontrak pintar untuk mengotomatisasi pembayaran kupon yang disebut obligasi pintar. Inti dari idenya adalah untuk secara otomatis menginisialisasi pembayaran pada saat yang dibutuhkan oleh kontrak pintar. Ini akan menghindari pemrosesan manual pembayaran dan memastikan bahwa penerbit tidak dapat default.
Tentu saja, agar ide ini berhasil, dana yang digunakan untuk membayar juga harus ada di dalam blockchain. Kalau tidak, kontrak pintar tidak bisa menjamin pembayaran.
Mari kita ingat bahwa blockchain hanyalah sebuah database. Dalam kasus kami, register keuangan berisi obligasi yang diterbitkan dan beberapa meja kas. Karena itu, ketika kita berbicara tentang pembayaran kupon, kita sebenarnya berbicara tentang operasi basis data yang dilakukan secara otomatis pada waktu yang disepakati.
Meskipun otomatisasi semacam itu layak dari sudut pandang teknis, kesulitan muncul dengan aspek keuangan model. Jika dana yang digunakan untuk pembayaran kupon dikendalikan oleh kontrak pintar obligasi, maka pembayaran ini benar-benar dapat dijamin. Tetapi dalam hal ini, penerbit obligasi tidak akan dapat menggunakan dana ini untuk tujuan lain. Dan penarikan dana dari kontrol kontrak yang cerdas membuat jaminan pembayaran mereka batal.
Dengan kata lain, ikatan cerdas tidak ada artinya bagi penerbit atau investor. Jika Anda merenungkan situasi ini, maka kesimpulan seperti itu menjadi sangat jelas.
Dari sudut pandang investor, esensi dari membeli obligasi adalah kemampuan untuk menghasilkan laba yang menarik, jika ada risiko gagal bayar yang dapat diterima. Untuk penerbit, tujuan penerbitan obligasi adalah untuk mengumpulkan dana untuk kegiatan yang produktif tetapi agak berisiko, seperti, misalnya, membangun pabrik baru.
Tidak ada cara bagi penerbit untuk mengumpulkan dana, dan pada saat yang sama, secara jelas menjamin pembayaran kepada investor. Saya pikir tidak ada yang akan terkejut dengan fakta bahwa keteraturan yang ada antara risiko dan profitabilitas tidak termasuk dalam daftar tugas yang bisa diselesaikan oleh blockchain.
3. Kebutuhan untuk menyembunyikan data sensitif
Seperti yang saya tulis sebelumnya, tantangan paling serius yang kami hadapi ketika menggunakan blockchains adalah tingkat transparansi ekstrem yang mereka berikan.
Misalnya, jika sekelompok 10 bank ingin membuat blockchain bersama, setiap transaksi dua arah dalam blockchain ini segera terlihat oleh delapan peserta lainnya. Terlepas dari adanya berbagai strategi yang memungkinkan untuk meningkatkan efek ini, tidak ada yang dapat melampaui kesederhanaan dan keefektifan dari database terpusat yang dikelola oleh orang tertentu yang memiliki kendali penuh atas tingkat visibilitas dan akses semua peserta.
Beberapa orang percaya bahwa kontrak pintar dapat menyelesaikan masalah ini. Alasan mereka dimulai dengan fakta bahwa setiap kontrak pintar berisi basis data miniaturnya sendiri dan mengendalikannya sepenuhnya. Semua operasi baca dan tulis dalam database ini sepenuhnya dimediasi oleh kode kontrak, yang mengecualikan situasi ketika satu kontrak membaca data yang lain. (Hubungan erat antara data dan kode ini disebut enkapsulasi. Ini mendasari paradigma populer pemrograman berorientasi objek).
Jadi, tidak ada kontrak pintar yang dapat mengakses data kontak cerdas lainnya. Tetapi apakah ini menyelesaikan masalah privasi dalam blockchain? Apakah masuk akal untuk berbicara tentang menyembunyikan informasi di dalam kontrak pintar? Sayangnya, jawabannya tidak.
Ya, kontrak pintar tidak dapat membaca data dari kontrak lain, namun salinan data ini masih berada di setiap node jaringan individu. Setiap peserta menyimpan data ini dalam memori mereka atau pada hard drive sistem, yang berada di bawah kendali penuhnya. Akibatnya, tidak ada yang menghentikan peserta ini untuk membaca informasi di sistemnya sendiri jika dan ketika ia ingin melakukannya.
Upaya untuk menyembunyikan data dalam kontrak pintar sebanding dalam tingkat keamanan dengan upaya menyembunyikannya dalam kode HTML halaman web. Tentu saja, pengguna web biasa tidak akan melihat informasi seperti itu, karena tidak akan ditampilkan di jendela browser. Tetapi untuk pengungkapannya, Anda hanya perlu mengklik tombol untuk menampilkan "kode sumber", yang ada di semua peramban modern dan data segera menjadi di telapak tangan Anda.
Demikian pula, dalam kasus data yang disembunyikan dalam kontrak pintar, Anda hanya perlu melakukan perubahan pada perangkat lunak untuk bekerja dengan blockchain sehingga menampilkan status penuh kontrak dan semua tampilan kerahasiaan segera menghilang.
Setiap programmer kelas menengah akan mengatasi tugas ini dalam waktu tidak lebih dari satu jam.
Apa tujuan dari kontrak pintar?
Setelah semua hal di atas, muncul pertanyaan yang masuk akal: di mana secara umum kontrak pintar dapat menemukan aplikasi? Tetapi untuk menjawab pertanyaan ini, kita perlu secara mental kembali ke konsep dasar blockchain. Singkatnya, blockchain memungkinkan sekelompok orang yang tidak percaya satu sama lain untuk bekerja secara langsung, aman dan langsung dengan database tanpa perlu meminta bantuan administrator utama.
Blockchains memungkinkan Anda untuk meninggalkan mediasi dalam bekerja dengan data, yang dapat menyebabkan penyederhanaan yang signifikan dan biaya yang lebih rendah.
Untuk membuat perubahan ke basis data apa pun, perlu untuk melakukan apa yang disebut transaksi yang berisi serangkaian perubahan dalam basis data yang akan berhasil diterapkan atau ditolak bersama-sama. Ambil contoh, situasi dengan pencatatan keuangan ketika Alice melakukan pembayaran untuk Bob. Pembayaran disajikan dalam bentuk transaksi yang: a) memeriksa apakah Alice memiliki cukup dana dalam akun, b) mengurangi jumlah dana yang ditunjukkan dari akun Alice dan c) menambahkan jumlah yang sama ke akun Bob.
Dalam database terpusat yang teratur, transaksi ini dibuat oleh manajer tunggal yang tepercaya. Sebaliknya, dalam database tipe blockchain publik, transaksi dapat dibuat oleh pengguna blockchain apa pun. Dan karena tidak ada kepercayaan mutlak di antara para pengguna ini, harus ada aturan dalam database yang memberlakukan pembatasan pada pelaksanaan transaksi.
Sebagai contoh, dalam registri keuangan, semua node yang berada pada posisi yang sama, parameter dari setiap transaksi tidak boleh mengarah pada pelanggaran terhadap saldo dana umum. Jika tidak, peserta akan dapat secara bebas mengalokasikan uang sebanyak yang mereka inginkan.
Ada banyak cara untuk mematuhi aturan-aturan ini, tetapi dua paradigma yang berlaku di bawah pengaruh Bitcoin dan Ethereum saat ini mendominasi. Metode Bitcoin, yang dapat disebut "pembatasan transaksi" dengan cara lain, mengevaluasi setiap transaksi dari sudut pandang: a) catatan dalam basis data yang dihapus menggunakan transaksi ini dan b) catatan yang dibuat.
Aturan ini digunakan dalam registri keuangan: jumlah total dana dalam catatan yang dihapus tidak boleh bertentangan dengan jumlah total dalam yang dibuat. (perubahan dalam catatan dianggap sebagai penghapusan catatan ini dan pembuatan ulang dengan nilai yang diperlukan).
Paradigma kedua yang berasal dari Ethereum adalah kontrak pintar. Menurutnya, semua perubahan dalam data kontrak harus dilakukan oleh kodenya. (Dalam konteks database tradisional, kita dapat mengasumsikan bahwa ini adalah prosedur tersimpan wajib) Untuk memodifikasi data kontrak, pengguna blockchain mengirimkan permintaan ke kode yang menentukan apakah permintaan harus dipenuhi dan bagaimana harus dilakukan.
Dalam terang contoh di atas, kontrak cerdas untuk registri keuangan melakukan tugas yang sama dengan administrator database terpusat: memeriksa ketersediaan dana yang cukup, mengurangi mereka dari satu akun dan menambah yang lain.
Kedua paradigma bekerja secara efisien, dan masing-masing memiliki kelebihan dan kekurangan. Singkatnya, membatasi transaksi jenis bitcoin memungkinkan Anda untuk mencapai indikator yang lebih baik dari aksesibilitas dan kinerja simultan, sementara kontrak tipe ethereum cerdas memungkinkan fleksibilitas yang lebih besar.
Oleh karena itu, kembali ke pertanyaan untuk apa kontrak pintar: mereka diperlukan ketika tidak mungkin untuk menerapkan kasus blockchain menggunakan pembatasan transaksi.
Tetapi bahkan setelah memutuskan kriteria ini untuk penggunaan kontrak pintar, saya masih merasa kesulitan untuk menyebutkan setidaknya satu skenario aplikasi mereka untuk blockchains tertutup, di mana pendekatan bitcoin tradisional benar-benar tidak dapat diterapkan.
Semua proyek blockchain yang sangat menarik yang saya tahu dapat diimplementasikan menggunakan pendekatan bitcoin, dalam kerangka yang memungkinkan untuk mengimplementasikan pemisahan hak akses dan penyimpanan data, serta penciptaan aset, pergerakan, deposit, pertukaran, dan penghancurannya. Bagaimanapun, kasus pengguna baru muncul secara teratur dan saya tidak akan terkejut jika beberapa dari mereka benar-benar membutuhkan kekuatan kontrak pintar. Atau setidaknya perpanjangan dari paradigma Bitcoin.
Dengan satu atau lain cara, aturan utama dalam situasi apa pun adalah untuk mengingat bahwa kontrak pintar hanyalah salah satu metode untuk membatasi pelaksanaan transaksi dalam database.
, , . - . , .
