Kontrak Oracle Ethereum: Bisakah Kita Mempercayai Oracle?

Diterbitkan: 2022-03-11

Artikel ini adalah bagian terakhir dari seri tiga bagian tentang penggunaan kontrak oracle Ethereum.

  • Bagian pertama adalah pengantar untuk menyiapkan, menjalankan, dan menguji kode dengan kerangka truffle.
  • Bagian kedua melihat sedikit ke dalam kode dan menggunakannya sebagai titik peluncuran untuk diskusi tentang beberapa kode dan fitur desain Solidity.

Sekarang, di bagian terakhir ini saya ingin mengajukan pertanyaan: apa yang baru saja kita lakukan, dan mengapa? Dan cobalah untuk memberikan beberapa jalan pemikiran yang mudah-mudahan menggugah pikiran. Juri masih sangat memikirkan bagaimana penggunaan oracle berhubungan dengan ketidakpercayaan, dan apa arti kata "ketidakpercayaan" yang terkait dengan blockchain, sebenarnya berarti dalam penggunaan dunia nyata. Saat kita membawa beberapa ide ini dari bentuk konseptualnya ke penggunaan praktis, kita akan dipaksa untuk bergulat dan menerima pertanyaan seperti ini. Jadi mari kita mulai.

Rekap: Mengapa kita membutuhkan oracle Ethereum?

Ini sampai ke inti dari sifat mengeksekusi kode di blockchain. Untuk memenuhi persyaratan kekekalan dan determinisme, dan sebagai artefak cara kode dieksekusi oleh node pada rantai, kontrak pintar tidak dapat secara langsung menjangkau di luar blockchain untuk melakukannya dengan baik, apa pun.

Bagi kebanyakan programmer, fakta ini memperkenalkan cara berpikir yang sangat tidak wajar. Jika kita membutuhkan data dari suatu tempat, biasanya kita hanya menghubungkannya ke suatu tempat dan menariknya. Kontrak cerdas yang membutuhkan data laporan cuaca? Cukup sambungkan ke umpan cuaca. Tapi tidak; kontrak pintar blockchain sama sekali tidak dapat melakukan ini; jika beberapa data belum ada di blockchain, kode kontrak tidak memiliki akses ke sana pada saat eksekusi. Jadi, solusinya adalah sudah memiliki data yang dibutuhkan di blockchain, pada saat pelaksanaan kontrak. Ini membutuhkan mesin eksternal yang, alih-alih menarik data ke dalam rantai, mendorong data ke dalam rantai, khususnya untuk digunakan oleh kontrak lain. Mesin eksternal itu adalah oracle. Data yang didorong ke rantai didorong ke dalam kontrak oracle, yang kemudian mungkin telah membuat ketentuan untuk membagikannya dengan kontrak lain. Contoh pengaturan itu persis seperti yang telah kami buat dan periksa di dua bagian sebelumnya dari trilogi artikel ini.

Ilustrasi oracle Ethereum

Lubang Keamanan yang Mencolok

Bagi saya, masalah utama yang terlibat dalam semua blockchain publik adalah kata T: kepercayaan. Paling murni, apa yang dilakukan sistem ini adalah yang terbaik untuk menjamin (tidak ada jaminan sempurna yang mungkin di dunia ini, tetapi sedekat mungkin) bahwa kita tidak harus mempercayai pihak mana pun secara membabi buta. Pembaca yang cerdik mungkin telah mempertanyakan beberapa lubang keamanan yang mencolok dalam contoh Taruhan Tinju. Saya ingin fokus pada hal-hal yang paling penting untuk diskusi kita tentang ketidakpercayaan dan bagaimana kaitannya dengan penggunaan oracle dengan kontrak pintar.

1. Pemilik/pengelola kontrak taruhan mungkin korup

Mulai dari baris 58 BoxingBets.sol kami memiliki fungsi berikut:

 /// @notice sets the address of the boxing oracle contract to use /// @dev setting a wrong address may result in false return value, or error /// @param _oracleAddress the address of the boxing oracle /// @return true if connection to the new oracle address was successful function setOracleAddress(address _oracleAddress) external onlyOwner returns (bool) { boxingOracleAddr = _oracleAddress; boxingOracle = OracleInterface(boxingOracleAddr); return boxingOracle.testConnection(); }

Seharusnya cukup jelas apa yang diizinkan ini. Pemilik kontrak (dan hanya pemilik kontrak) dapat, kapan saja dan tanpa batasan apa pun, mengubah oracle yang digunakan untuk menyajikan pertandingan tinju dan menentukan pemenangnya. Mengapa itu menjadi masalah? Jika belum jelas bagi Anda, ini memungkinkan pemilik kontrak dengan sengaja menyalahgunakan kontrak untuk keuntungannya sendiri.

Contoh: Pertandingan tinju berikutnya adalah Soda Popinski vs. Glass Joe. Soda adalah favorit yang jelas dengan selisih yang lebar. Semua orang bertaruh pada Soda. Ton uang naik di atasnya. Saya, pemilik kontrak, memutuskan untuk menarik yang cepat. Tepat sebelum pertandingan diputuskan, saya mengubah oracle ke oracle jahat saya sendiri, yang identik dengan oracle resmi kecuali bahwa itu adalah kode keras untuk menyatakan Glass Joe sebagai pemenang. Ini menyatakan Glass Joe, saya menghasilkan semua uang, dan tidak ada yang bisa menghentikan saya. Setelah itu mungkin tidak ada yang akan mempercayai kontrak saya lagi, tetapi anggaplah saya tidak peduli; mungkin saya menulis dan menerbitkan kontrak hanya untuk tujuan menarik pencurian itu.

Apa saja alternatifnya?

1. Jangan biarkan oracle diubah

Masalah yang telah kami identifikasi di atas, muncul dari fakta bahwa kami mengizinkan oracle diubah oleh pemilik kontrak. Jadi, misalkan kita hanya mengkodekan alamat oracle dan tidak mengizinkannya diubah sama sekali? Sebenarnya kita bisa melakukan itu, bukan tidak mungkin. Tetapi kemudian muncul pertanyaan, bagaimana jika oracle itu berhenti - berhenti memberikan data karena alasan apa pun? Kemudian kita perlu mendapatkan oracle baru. Atau bagaimana jika oracle itu, yang awalnya dipercaya, ternyata korup dan tidak lagi dipercaya? Sekali lagi, kami ingin mengubah ke oracle baru. Jika kita mengkodekan oracle secara keras, maka satu-satunya cara untuk mengubah oracle adalah dengan merilis kontrak baru yang menggunakan oracle yang berbeda. Oke, sekali lagi, kita bisa melakukan ini. Ini tidak keluar dari pertanyaan. Perhatikan, tentu saja, bahwa kontrak pintar tidak dapat dengan mudah diperbarui semudah, katakanlah, sebuah situs web. Bukankah itu mudah? Jika Anda melihat bug atau lubang keamanan, Anda hanya menambalnya dan tidak ada yang lebih bijaksana. Model penerapan kontrak pintar sedikit lebih dekat dengan model perangkat lunak yang dibungkus-susut; setelah perangkat lunak ada di tangan pengguna, perangkat lunak itu ada di sana dan Anda tidak dapat memperbaikinya. Anda harus meminta pengguna untuk mengupgrade diri mereka sendiri secara manual. Kontrak pintar agak mirip. Setelah kontrak itu ada di blockchain, kontrak itu tidak dapat diubah seperti halnya dengan blockchain lainnya, kecuali di bagian di mana Anda telah menulis logika untuk membuatnya bisa berubah.

Ini belum tentu pemblokir; ada banyak model dan aliran pemikiran sekarang tentang cara membuat kontrak pintar yang dapat dimodifikasi. Topik ini akan menjadi artikel yang layak, tetapi untuk saat ini Anda dapat melihat artikel Hackernoon ini, serta bagian tentang strategi kontrak pintar ini.

Seperti apa tampilannya dari sudut pandang pengguna? Katakanlah saya sedang mempertimbangkan untuk memasang taruhan pada pertandingan Don Flamenco yang akan datang. Saya dapat dengan jelas melihat bahwa kontrak itu dengan mudah mengkodekan sebuah oracle yang sudah saya kenal dan percayai (well, cukup percaya untuk memasang taruhan dengan ukuran tertentu). Jadi itu saja. Cukup mudah. Jika pemilik kontrak merilis versi baru dari kontrak dengan oracle baru, saya masih (harus) memiliki kebebasan untuk terus menggunakan yang lama. Ya, mungkin. Itu tergantung pada bagaimana peningkatan itu ditangani. Jika kontrak dinonaktifkan atau dihancurkan, saya mungkin kurang beruntung. Tetapi dalam kasus vanilla, itu harus tetap berdiri.

2. Kunci di oracle selama durasi

Kita dapat menambahkan beberapa komplikasi pada kode (tidak terlalu diinginkan untuk contoh yang terlalu rumit, tetapi untuk solusi dunia nyata kita mungkin menginginkan manfaat yang diberikan oleh kompleksitas ini) untuk mengurangi kejahatan seperti yang dijelaskan di atas. Saya pikir hal yang sangat masuk akal untuk dilakukan, adalah menambahkan kode yang akan “mengunci” oracle selama durasi taruhan. Dengan kata lain, logika kontrak dapat menjamin dengan cara yang sangat jelas & sederhana, bahwa oracle apa pun yang hadir ketika saya membuat taruhan harus oracle yang sama yang digunakan untuk menentukan pemenang. Sehingga bahkan jika oracle berubah sementara itu, untuk pertandingan lain, untuk pertandingan saya, dan untuk taruhan saya, itu harus tetap sama sepanjang waktu. Ini berjalan seiring dengan memungkinkan pengguna untuk mengetahui siapa oracle itu.

Mari kita ambil contoh singkat untuk mengilustrasikan hal ini. saya adalah pengguna. Saya sedang mempertimbangkan untuk memasang taruhan pada pertarungan Little Mac yang akan datang. Ada fasilitas dalam kontrak yang memungkinkan saya untuk memeriksa oracle yang akan digunakan untuk menentukan pemenang pertandingan ini. Saya memverifikasi bahwa kontrak tersebut adalah kontrak terkenal yang diberikan oleh Nintendo Sports. Saya merasa cukup percaya diri dengan oracle itu. (Untuk menambahkan sedikit lebih banyak kerumitan, mungkin kontrak memungkinkan pengguna untuk memilih dari serangkaian nubuat yang tersedia untuk kecocokan tertentu). Sekarang saya dapat memeriksa kode oracle, dan melihat bahwa logika oracle menjamin bahwa oracle yang sama akan digunakan untuk menentukan hasil pertandingan. Jadi saya, sebagai petaruh, setidaknya memiliki jaminan itu. Itu tidak menghalangi fakta bahwa oracle saya bisa menjadi buruk (yaitu korup atau tidak dapat dipercaya) tetapi setidaknya meyakinkan saya bahwa itu tidak dapat diubah di latar belakang.

Risiko di sini adalah bahwa oracle "keluar dari bisnis" (berhenti dipertahankan atau diperbarui) antara waktu saya memasang taruhan, dan pertandingan diputuskan. Uang dapat dikunci ke dalam kontrak, dan tidak dapat diambil kembali. Untuk itu, kita bisa (mungkin) memasukkan klausa yang diaktifkan waktu ke dalam kontrak, di mana jika pertandingan tidak ditentukan oleh waktu atau tanggal tertentu (bisa menjadi bagian dari definisi pertandingan), itu dianggap "mati" dan semua uang terkunci di dalam. dikembalikan ke petaruh.

3. Biarkan oracle ditentukan oleh pengguna

Yang lebih rumit (tetapi mungkin lebih menarik) adalah membiarkan alamat oracle “kosong”, dalam arti, untuk memungkinkan pengguna menentukan oracle mereka sendiri, dan membentuk kumpulan taruhan mereka sendiri (melalui kontrak) di sekitar oracle tersebut. Grup pengguna yang menggunakan oracle yang sama dapat bertaruh bersama mengikuti logika kontrak. Itu menempatkan tanggung jawab pada pengguna untuk memilih oracle yang mereka percayai, dan membagikan oracle itu dengan pengguna lain yang berpikiran sama. Ini pada dasarnya memecah komunitas taruhan, jadi itu hanya akan berfungsi jika ada basis pengguna yang besar; jika tidak, akan ada terlalu sedikit petaruh yang terlibat untuk benar-benar membuat taruhan menarik dan menguntungkan. Jika saya satu-satunya orang yang bertaruh dengan oracle favorit saya, tidak ada banyak insentif di sana! Tetapi di sisi lain, dibutuhkan tanggung jawab untuk memilih oracle yang dapat dipercaya dari pemilik kontrak, dan dia dapat mencuci tangannya dari itu. Jika beberapa pengguna menemukan oracle tidak dapat dipercaya, mereka akan berhenti menggunakannya dan beralih ke yang lain, dan tidak ada yang akan marah pada pemilik kontrak. Dia hanya menyediakan arena taruhan dan melakukan pelayanannya dengan terhormat.

Menambah komplikasi dari strategi ini adalah kenyataan bahwa kita entah bagaimana harus membiarkan kumpulan orakel organik 'tumbuh' di alam liar, dan yang benar-benar cocok dengan solusi ini. Kami harus menyiarkan ke dunia antarmuka yang tepat yang harus dipatuhi oleh para nubuat potensial, dan berharap bahwa jumlah yang cukup layak akan muncul untuk benar-benar memberi pengguna beberapa pilihan. Mungkin kita bisa menyemai batch dengan satu atau dua milik kita sendiri. Jika tidak, maka kami tidak memiliki DApp taruhan. Tetapi jika ya, saya harus mengakui bahwa gagasan tentang ramalan yang dipilih pengguna dan tumbuh secara organik di alam liar adalah solusi yang menarik dan atraktif.

2. Pemilik/pengelola oracle mungkin korup

Korup yaitu dalam arti tidak dapat dipercaya; bahwa pemilik/pemelihara/manajer oracle kemungkinan akan mengumumkan hasil yang salah untuk sebuah pertandingan, untuk memperkaya dirinya sendiri.

Contoh: Saya adalah pemilik/pengelola oracle aktual yang memasukkan data tinju ke blockchain untuk kontrak taruhan yang akan digunakan. Oracle saya tidak terlibat langsung dalam penempatan taruhan atau pengelolaan taruhan. Tugasnya hanyalah menyediakan data, yang dapat digunakan oleh kontrak taruhan (dan mungkin sejumlah kontrak lainnya). Namun, saya secara pribadi dapat memasang taruhan menggunakan kontrak taruhan yang pada gilirannya menggunakan oracle saya; Bagaimanapun, saya anonim, jadi saya tidak takut akan pembalasan apa pun. Setelah saya memasang taruhan pada kontrak semacam itu, ada konflik kepentingan yang jelas. Secara khusus, kejujuran yang saya perbarui oracle saya dengan informasi yang benar dan akurat mungkin bertentangan dengan tindakan taruhan saya.

Jadi katakanlah dalam pertandingan Sandman/von Kaiser yang akan datang, di mana von Kaiser sangat diunggulkan, saya melanjutkan dan memasang taruhan besar pada von Kaiser. Ketika von Kaiser kalah seperti yang diharapkan, saya menggunakan oracle saya untuk secara salah menyatakan dia sebagai pemenang! Kontrak taruhan dijalankan sebagaimana mestinya (tidak ada cara untuk menghentikannya pada saat ini), saya melakukan pembunuhan pada pertandingan, tidak ada jalan lain dan tidak ada cara untuk menghukum saya, dan hidup terus berjalan. Mungkin, setelah itu, orang menolak menggunakan oracle saya lagi; mungkin aku tidak peduli.

Bagaimana kita bisa mencegah hal ini?

Sekarang kita berada pada pertanyaan yang jauh lebih besar dan pertanyaan yang memotong inti dari apa yang disebut ketidakpercayaan yang berkaitan dengan nubuat. Oracle dipercaya sebagai pihak ketiga yang netral atau bahkan pihak ketiga yang terpercaya. Masalahnya adalah oracle dijalankan oleh manusia. Masih masalah lain adalah bahwa oracle melakukan banyak kontrol atas bagaimana kontrak klien melakukan tugasnya karena memberikan data yang menjadi dasar kontrak bertindak. Bagaimana kita bisa tahu bahwa kita bisa mempercayai oracle tertentu?

Mengapa kita harus mempercayai oracle mana pun?

Jika seluruh gagasan kontrak pintar blockchain adalah untuk menghilangkan kebutuhan untuk mempercayai siapa pun, jadi bukankah fakta bahwa kita harus "mempercayai" oracle terbang dalam menghadapi ketidakpercayaan? Yah, saya akan mengatakan: saatnya untuk tumbuh dewasa, putra (atau putri)! Tidak ada yang namanya ketidakpercayaan murni, dan blockchain tidak menyediakan lingkungan tanpa kepercayaan. Blockchain adalah lapisan yang memfasilitasi interaksi manusia. Interaksi manusia masih merupakan inti atau hasil akhir, dan interaksi manusia tidak bisa tanpa kepercayaan.

Tautan: Masalah Oracle

Evolusi Kepercayaan

Kembali pada awal waktu, bagaimana saya bisa mempercayai manusia lain? Misalkan saya berburu mammoth, dan orang itu mengatakan bahwa dia akan membantu saya berburu mammoth, dengan imbalan setengah dari dagingnya? Bagaimana dia bisa percaya bahwa saya akan memberikan setengahnya? Bagaimana saya bisa percaya bahwa itu tidak akan memukul kepala saya dan mengambil seluruh mamut, setelah perburuan selesai?

Pada masa itu, ancaman kekerasan mungkin menjadi inti dari banyak jenis kepercayaan sosial-ekonomi. Jika saya mencoba mencuri bagian orang itu, saya yakin dia akan mencoba menyerang saya, dan itu menimbulkan risiko bagi saya. Bahkan jika saya merasa yakin bahwa saya akan menang dalam pertarungan dengan dia, saya (sebagai manusia gua) cukup tahu tentang pertempuran untuk mengetahui bahwa apa pun bisa terjadi, dan saya dapat dengan mudah mengalami cedera yang mengancam jiwa bahkan jika saya menang secara teknis. Itu selalu merupakan risiko dan investasi energi. Di dunia itu, itu cukup untuk membuat orang jujur.

Secara umum, saya tidak akan curang karena itu bukan untuk kepentingan terbaik saya , secara keseluruhan dan rata-rata, untuk melakukannya. Dengan kata lain, hasil yang diharapkan dari menyontek kurang dari hasil yang diharapkan dari bekerja sama.

Jika bukan itu masalahnya, atau jika para aktor merasa bahwa ini bukan masalahnya, mungkin satu atau lebih akan memilih untuk tidak berpartisipasi. Misalnya, jika saya melihat bahwa orang lain adalah raksasa setinggi 9 kaki dengan tanduk dan gigi monster, saya mungkin memilih untuk melarikan diri dan tidak membuat kesepakatan apa pun; pria itu terlihat terlalu berbahaya untuk kuhadapi, dia bisa saja mencuri apa yang dia suka tanpa dihukum. Jika kita kira-kira sama-sama cocok, maka kita merasa bahwa kita berada dalam situasi di mana tidak ada kepentingan terbaik pihak untuk menipu, adalah kepentingan kita berdua untuk bekerja sama, dan oleh karena itu, dengan asumsi bahwa kedua belah pihak waras dan rasional, kedua belah pihak akan bekerja sama.

Kontrak Oracle dan evolusi kepercayaan

Seiring berkembangnya budaya, begitu pula interaksi manusia. Mereka menjadi kurang kekerasan, meskipun ancaman implisit kekuatan tidak hilang. Adat budaya memberi orang insentif yang lebih besar untuk bekerja sama dan berbagai jenis disinsentif untuk menipu.

Maju cepat ke masa peradaban awal; Saya menawar untuk membeli 100 gantang gandum. Ini semacam kontrak berjangka primitif; Saya membayar hari ini untuk biji-bijian yang akan saya terima saat panen bulan depan. Saya memberi orang itu koin tembaga saya, kami berjabat tangan, berbagi minuman bir barley, dan berpisah sampai bulan depan untuk penyelesaian kontrak. Sepertinya baik-baik saja.

Saya telah menempatkan diri pada belas kasihan orang itu; dia memiliki jumlah penuh uang saya, dan saya belum memiliki apa-apa. Jadi apa yang membuat saya merasa yakin bahwa dia akan memenuhi kontrak? Beberapa hal. Dia adalah pebisnis; dia secara teratur melakukan bisnis dengan penduduk setempat. Dia telah melakukan bisnis dengan orang-orang yang saya kenal, dan dia selalu menyampaikan dengan adil dan tepat waktu. Dia memiliki reputasi untuk kejujuran. Selain itu, saya tahu bahwa dia memiliki disinsentif untuk selingkuh. Dia mencari nafkah terutama berdasarkan fakta bahwa dia dikenal sebagai pedagang yang jujur. Jika dia menipu saya, saya akan memberi tahu semua orang, dan ini akan merusak reputasi baiknya, dan juga bisnisnya. Jumlah uang yang dia hasilkan dari menipu saya akan kecil dibandingkan dengan jumlah masa depan yang tidak dapat dia hasilkan jika basis pelanggannya meninggalkannya. Jadi saya tahu bahwa itu tidak selalu dalam kepentingan terbaik untuk menipu saya.

Ini bagus; ancaman kekerasan atau kekerasan tidak ada dalam gambaran di atas. Kecuali dua hal:

  1. Ancaman kekerasan tidak sepenuhnya hilang. Disinsentif lain untuk selingkuh adalah memikirkan apa yang akan dilakukan pria yang ditipu. Saya memiliki senjata, dan teman-teman yang setia kepada saya. Saya, sebagai pihak curang yang marah, bisa menggunakan kekuatan. Begitulah perang klan dimulai!
  2. Mungkin juga ada semacam sistem pemerintahan, yang akan menilai rincian kasus dan mungkin mendenda pedagang atau memasukkannya ke penjara. Disinsentif standar Anda yang didukung pemerintah selalu didukung oleh ancaman kekerasan, karena hukuman yang mendasari karena menolak membayar denda, menolak masuk penjara, menolak mematuhi semua tindakan, pada akhirnya adalah paksaan. Dan itu terbawa sampai hari ini. Jika saya menolak untuk membayar denda, saya dapat ditangkap. Jika saya menolak untuk ditangkap, akan ada kekerasan yang digunakan terhadap saya, dan saya dapat dimasukkan ke penjara di luar kehendak saya atau bahkan dibunuh (jika perlawanan saya cukup keras kepala). Di sana kita melihat ancaman kekerasan hanya berjarak dua langkah, bahkan untuk pelanggaran kecil!

Kepercayaan Terdesentralisasi Hari Ini

Maju cepat ke hari ini. Apa disinsentif untuk melanggar kontrak? Apakah mereka jauh berbeda dari skenario sebelumnya?

Perusahaan X memiliki rabat mail-in untuk membeli produk ini. Mengapa Anda percaya bahwa mereka akan memberikan ini? Sama seperti pada contoh sebelumnya; perusahaan memiliki sedikit keuntungan dengan menipu dalam jumlah kecil, dan banyak kerugian dengan merusak reputasi mereka. Ini adalah dasar di balik banyak skenario kepercayaan dan telah berlangsung lama. Dan lagi, seperti dalam contoh pedagang gandum, ada ancaman kekerasan, meskipun dalam kasus ini, itu tidak akan terjadi. Perusahaan dapat didenda, atau dihukum dengan gugatan class action, dan perusahaan harus membayar denda atau menghadapi hukuman yang lebih buruk. Hukuman-hukuman itu dilatarbelakangi oleh pemerintah, yang pada gilirannya dilatarbelakangi oleh ancaman kekerasan, baik ekonomi maupun militer, meskipun mungkin kita dapat menganggap bahwa ancaman kekuatan ekonomi pada gilirannya didukung oleh kekuatan militer, yaitu kekerasan.

Sistem Tradisional

Model kontrak yang didukung oleh penerapan kekuatan yang disetujui pemerintah telah melayani umat manusia dengan baik selama ribuan tahun? Atau memilikinya? Ya, memang ada, tapi ini adalah perkembangan alami. Dengan tidak adanya pemerintahan, sekelompok orang membentuk pemerintahan. Sepertinya Anda tidak bisa menghentikan orang untuk membentuk pemerintahan; mereka akan terbentuk.

Jadi, bagaimana dengan kontrak pintar blockchain? Bagaimana blockchain dan model kontrak pintar menjamin kepercayaan, atau mengurangi kecurangan? Jangan hanya mengatakan "ketidakpercayaan", itu bukan jawaban! Dalam contoh kami sebelumnya, menyontek disinsentif dalam beberapa cara.

Mari kita lihat lebih dekat bagaimana blockchain memenuhi (atau menggantikan) fungsi itu.

Sistem Blockchain: Bitcoin

Untuk memecah pertanyaan besar ini menjadi pertanyaan yang lebih kecil, mari kita mulai dengan bitcoin. Bagaimana bitcoin mendisinsentifkan kecurangan? Saya bebas menjalankan perangkat lunak simpul bitcoin apa pun yang saya inginkan, selama tampaknya mematuhi protokol jaringan bitcoin. Tidak ada yang mencegah saya menjalankan node bitcoin buatan saya sendiri yang melakukan apa yang diinginkannya sambil mengikuti protokol jaringan; apakah ada cara di mana saya dapat menggunakannya untuk keuntungan ilegal?

Tentu, saya dapat melepaskan segala jenis transaksi ke jaringan bitcoin untuk persetujuan. Saya dapat melepaskan transaksi yang mengirimkan semua bitcoin Anda kepada saya, melepaskannya ke jaringan, menunggu untuk ditambahkan ke blok, dan wow, sekarang semua bitcoin Anda adalah milik saya ? Tidak, karena enkripsi.

Saya tidak memiliki kunci pribadi Anda, dan transaksi semacam itu harus ditandatangani dengan kunci pribadi Anda. Jadi, saya diblokir di sana oleh kriptografi. Atau aku? Siapa bilang transaksi seperti itu harus ditandatangani? Apa yang akan terjadi jika saya mencobanya? Nah, yang akan terjadi tentu saja seluruh jaringan bitcoin akan menolak transaksi saya. Mengapa ada orang yang mau menerimanya? Selain fakta bahwa mereka semua menjalankan node standar, yang akan menolaknya, mengapa mereka membantu saya menipu? Melakukan hal itu pasti akan merusak integritas jaringan bitcoin dan dengan demikian merusak kekayaan kripto mereka sendiri. Jadi tidak masuk akal bagi mereka untuk membantu saya, orang asing anonim, untuk menipu orang asing anonim lainnya. Bahkan jika satu aktor irasional entah bagaimana menerima transaksi saya yang tidak valid, sebagian besar jaringan bitcoin akan menolaknya, dan tidak ada peluang. Ini dipukuli lagi, kali ini dengan angka belaka.

Namun, bagaimana jika saya adalah operasi penambangan yang kuat? Tentunya sekarang saya memiliki lebih banyak kekuatan untuk memanfaatkan hal-hal untuk keuntungan saya. Ya, tetapi itu masih tidak memberi saya apa pun yang mendekati kekuatan absolut. Bahkan sebagai penambang yang kuat, jika saya mengontrol kurang dari 50% jaringan maka saya tidak bisa berbuat banyak. Saya memiliki beberapa kekuatan untuk memilih urutan transaksi yang ditambahkan ke blok, tapi itu bukan kekuatan untuk mencetak atau mencuri koin. Bahkan jika saya mengendalikan lebih dari 50% jaringan (dengan asumsi di sini bahwa pembaca mengetahui serangan 51% yang terkenal dalam kaitannya dengan proof-of-work seperti di bitcoin), kekuatan utama saya adalah pengeluaran ganda. Meskipun jenis kekuatan yang keren, sangat dipertanyakan apakah itu akan menjadi kepentingan terbaik saya untuk melakukan itu, karena akan merusak integritas bitcoin. Sepertinya saya akan lebih baik menggunakan kendali saya untuk menambang semua koin, sehingga menghasilkan lebih banyak uang, dan mempertahankan dasar di mana kekayaan itu berdiri. Jadi, saya tidak dikalahkan, tetapi dorongan saya untuk curang terhalang oleh disinsentif yang secara organik ada di dalam protokol. Dan disinsentif itu pada dasarnya didukung oleh kekuatan angka; konsensus luar biasa dari para peserta di jaringan bitcoin.

Kontrak Cerdas Blockchain dan Kontrak Oracle

Apa itu kontrak pintar? Misalkan saya menggunakan kontrak yang menyesatkan untuk mengelabui orang agar mengirimi saya uang mereka? Atau misalkan saya menggunakan kontrak taruhan dan menggunakan salah satu serangan (jika Anda bisa menyebutnya begitu) yang dijelaskan sebelumnya? Saya bisa melakukan itu, itu mungkin menipu beberapa orang; Saya, sebagai aktor yang tidak jujur, mungkin mendapatkan sedikit keuntungan dari usaha seperti itu. Pembelaan terhadapnya adalah bagi setiap peserta untuk mempertimbangkan dengan hati-hati (seperti yang harus dilakukan dengan kontrak apa pun) kontrak yang akan mereka ikuti, dan cara-cara potensial di mana kontrak itu dapat disalahgunakan. Mereka juga harus mempertimbangkan sumbernya - apa, jika ada, yang mereka ketahui tentang pihak yang menerbitkan dan memelihara kontrak dan nubuat terkait atau kontrak terkait. Orang akan berharap bahwa kontrak yang tidak jujur ​​tidak akan bertahan lama sebelum jaringan secara informal menandainya sebagai tidak jujur, menyebabkan para peserta secara sukarela menghindarinya, memotongnya. Jaringannya besar, dan berita menyebar dengan cepat.

Kecuali pada titik tertentu, Anda masih perlu mempercayai manusia. Data kontrak taruhan disediakan oleh oracle. Oracle dikelola oleh manusia. Tidak peduli berapa banyak lapisan yang Anda tambahkan dalam upaya untuk menjaga jaringan tetap jujur, itu masih kembali ke manusia di beberapa titik. Jadi, jenis oracle apa yang akan Anda percayai, berdasarkan contoh taruhan kami? Saya akan mempercayai oracle yang lebih banyak ruginya daripada untungnya, dengan curang. Contoh: bayangkan ESPN atau jaringan serupa adalah sponsor oracle. Anda akan mengharapkan mereka, lebih dari siapa pun, untuk memberikan data yang jujur, karena memenangkan sejumlah kecil secara ilegal dalam taruhan tinju akan dibayangi oleh hilangnya reputasi yang diakibatkannya. Dalam hal ini, kepercayaan Anda ditempatkan dengan baik karena alasan yang sama seperti kami mempercayai pedagang biji-bijian yang jujur. Jenis pengaturan kepercayaan itu kuno dan mapan.

Jadi, apa yang telah kita peroleh dalam penggunaan kontrak pintar? Bagaimana kontrak pintar berbeda dari tata kelola atau metode penegakan kontrak sebelumnya?

Membungkus

Hanya untuk menegaskan, memberikan bahan untuk pemikiran dan diskusi, dan untuk mengakhiri artikel saya, saya akan menyajikan beberapa pengamatan sederhana, sebagai pengganti kesimpulan yang sulit. Karena untuk topik sekompleks ini, kesimpulan yang ringkas terasa seperti cerita biasa-biasa saja dan penyederhanaan yang berlebihan. Pengamatan yang akan saya kemukakan (dan jangan ragu untuk mendiskusikan/menyanggah/menentangnya) adalah sebagai berikut:

  • Kepercayaan berdasarkan asumsi bahwa pihak lain memiliki lebih banyak keuntungan dari bekerja sama daripada dari kecurangan adalah kuno, bekerja dalam situasi praktis, dan tidak hilang. Itu masih melekat dalam kasus-kasus tertentu di dunia blockchain, meskipun mungkin dihilangkan dalam banyak kasus. Dalam kasus contoh oracle kami, itu masih hidup dan sehat.
  • Kepercayaan berdasarkan ancaman kekuatan atau kekerasan juga telah melekat dalam masyarakat manusia sejak dahulu kala, tetapi sangat tidak ada dalam model kontrak pintar kami, dan telah digantikan oleh penegakan melalui kombinasi cerdas enkripsi dan konsensus dalam jumlah besar.

Saya menantang sesama pengembang Ethereum untuk melakukan dua hal:

  1. Pikirkan cara apa pun, dalam sistem blockchain publik (seperti bitcoin atau ethereum), di mana segala sesuatu ditegakkan dengan ancaman kekuatan implisit atau eksplisit.
  2. Pikirkan sistem aturan utama apa pun dalam kontrak modern atau hukum keuangan, yang dalam beberapa hal tidak ditegakkan baik oleh ancaman kekerasan eksplisit maupun implisit.

Evolusi kepercayaan dan ilustrasi kekuasaan negara

Sesuatu yang Lama, Sesuatu yang Baru

Dan saya pikir di sini kita telah sampai pada perbedaan utama, dan memang alasan sebenarnya mengapa kita mengatakan bahwa sistem blockchain adalah “revolusioner”, dibandingkan dengan sistem di masa lalu. Dalam cara berpikir saya, ini sama sekali bukan ketidakpercayaan, melainkan platform yang lebih stabil untuk kepercayaan dan - terutama - platform yang sama sekali tidak bergantung pada ancaman kekuatan atau kekerasan.

Di satu sisi, kami memiliki jaminan lama dan teruji waktu akan saling menguntungkan dalam situasi di mana tidak ada insentif untuk berbuat curang. Itu bukan hal baru. Apa yang baru adalah pengenalan konsensus yang dibantu enkripsi, yang membantu mencegah kecurangan dan menjaga sistem tetap jujur. Dan sintesis dari kedua elemen ini telah menghasilkan sesuatu yang benar-benar luar biasa, mungkin untuk pertama kalinya dalam sejarah manusia: sebuah sistem yang dapat digunakan untuk kelompok besar tanpa nama, di mana tidak ditemukan ancaman kekerasan eksplisit atau implisit sebagai disinsentif atau hukuman. . Dan itu, saya percaya, adalah apa yang benar-benar menakjubkan. Jika aspek itu diabaikan, yang kita miliki adalah teknologi baru yang bagus (yang saya akui, memang cukup keren). Namun ketika aspek itu diperhatikan, ternyata kita telah memasuki era baru pemerintahan.