Terima kasih kepada Jun Jiang dari DePHY Network dan Ryan Soury dari Usher Labs atas maklum balas dan cerapan.
Pada tahun 2008, penggera di Wall Street berbunyi apabila peniaga-peniaga yang canggih mula menjadi kegilaan. Institusi kewangan yang terlebih leveraj, runtuh di bawah berat sekuriti bersandarkan gadai janji subprima, menyebabkan pegawai bank yang tamak terdedah dan mengemis untuk menyelamatkan. Bank-bank pusat, terdesak untuk mengekalkan cengkaman mereka pada kuasa, membayar dosa-dosa jurubank dari buku cek orang biasa. Pengkhianatan ini mendedahkan kelemahan sistem kewangan berpusat, mendedahkan keperluan untuk sistem kewangan yang lebih baharu, lebih bebas dan adil. Sama seperti Revolusi Amerika dan perlembagaan yang mengikuti memisahkan gereja dan negara, revolusi baharu yang dipanggil Bitcoin muncul untuk memisahkan wang dan negara, membolehkan banyak kebebasan dan kebebasan yang sama asas kepada penentuan nasib sendiri.
Teknologi blockchain ialah teknologi kebebasan. Ia membolehkan kami membina sistem koordinasi kewangan, identiti, maklumat dan sosial yang tidak memerlukan kepercayaan kepada perantara berpusat. Kebebasan individu berkembang pesat dalam dunia di mana bank pusat tidak mengawal aliran wang, satu platform tidak mengawal wacana sosial, dan satu syarikat tidak mengawal identiti digital.
Banyak perbezaan antara dunia baharu ini dan tempat kita berada hari ini terletak pada keupayaan teknikal platform blockchain. Generasi pertama kontrak pintar adalah puncak gunung ais yang membolehkan sistem kebebasan ini; bagaimanapun, mereka pada asasnya terhad dalam keupayaan mereka. Dalam artikel ini, saya menerangkan beberapa batasan kritikal dalam kontrak pintar semasa dan cara sistem baharu, “SQL Smart Contracts,” menyediakan asas yang lebih berkemampuan dari segi teknikal untuk membuka kunci kebebasan manusia dan merealisasikan potensi blockchain sebagai platform pengkomputeran baharu.
"Masalah utama… adalah semua kepercayaan yang diperlukan untuk menjadikannya berfungsi." - Satoshi Nakamoto
Sifat teras awal blokchain ialah kebolehubah; apabila ambang tertentu pihak berkepentingan (atau "nod") dalam rangkaian bersetuju bahawa sesuatu adalah benar, rantaian blok akan mengekalkan rekod kekal kebenaran itu. Rantaian sekat menggunakan pelbagai mekanisme "bukti" di mana nod membelanjakan sejumlah besar nilai dalam bentuk kuasa pengkomputeran, kepentingan kewangan atau reputasi untuk memastikan bahawa aktor yang berniat jahat tidak dapat memanipulasi kebenaran.
Jika Bitcoin ialah "mesin kebenaran" untuk mata wang digital, Ethereum ialah "mesin kebenaran" untuk produk kewangan yang lebih kompleks. Ethereum memperluaskan keupayaan Bitcoin dengan mencipta ruang reka bentuk boleh atur cara di mana pembangun boleh melaksanakan sebarang logik untuk digunakan, disahkan dan dilaksanakan merentasi satu siri nod. Ini bermakna kita kini boleh mencipta sistem yang menghilangkan keperluan untuk mempercayai pihak berkuasa pusat selain daripada mata wang! Mana-mana sistem yang memerlukan pihak berkuasa pusat–seperti pemberian pinjaman, surat ikatan hartanah, maklumat identiti, media sosial, metrik ekonomi, dsb.–kini boleh beroperasi tanpa perantara pusat. Ini adalah dunia yang sama sekali baru!
Kontrak pintar ialah program yang ditulis dan digunakan oleh pembangun pada rantaian blok, kanvas untuk pembangun mencipta aplikasi terdesentralisasi. Istilah "kontrak pintar" tidak bermaksud kontrak undang-undang di mana dua pihak terikat kepada hak dan kewajipan tertentu. Sebaliknya, "kontrak pintar" hanya bermaksud bahawa aplikasi dijamin berfungsi dengan tepat bagaimana kod itu ditulis selama-lamanya. Kontrak pinjaman menjamin bahawa peminjam dan pemberi pinjaman sentiasa boleh berurus niaga. Kontrak hartanah menjamin bahawa orang ramai sentiasa boleh mengesahkan dan memindahkan pemilikan hartanah. Kontrak pintar ialah aplikasi di mana kod menjadi undang-undang.
Steve Jobs memanggil komputer "basikal untuk minda." Kontrak pintar menjamin bahawa roda tidak akan jatuh.
"Crypto bukan hanya tentang perdagangan token, ia adalah sebahagian daripada etos yang lebih luas untuk melindungi kebebasan dan privasi serta mengekalkan kuasa di tangan lelaki kecil itu." - Vitalik Buterin
Walaupun kontrak pintar Ethereum memperkenalkan dunia baru produk terdesentralisasi, batasan asas dalam reka bentuk dan keupayaan manipulasi data mereka menghalang mereka daripada berkesan dalam banyak aplikasi melangkaui mata wang kripto.
Dalam Solidity (bahasa pengaturcaraan untuk Ethereum), data kontrak disimpan dalam pasangan nilai kunci. Walaupun struct (pengumpulan pembolehubah) dan pemetaan (pengumpulan pasangan nilai kunci) memberikan cara yang berguna untuk menyusun data, semua data hanya boleh diperoleh semula melalui kuncinya. Pertimbangkan kontrak teori untuk menyimpan data identiti pengguna:
contract IdentityStorage { // Struct to store KYC details struct identity { string fullName; string dateOfBirth; string residentialAddress; } // mapping a country to its citizens to their info // "Canada" => 0x123… => {Vitalik Buterin, 01/31/1994, ...} mapping(string => mapping(address => identity)) public idData; //...rest of contract }
Dalam kontrak ini, rekod identiti pengguna hanya boleh diambil dengan mengetahui negara dan alamat dompet Pengguna. Melainkan pelaksana kontrak mereka bentuk semula kontrak pintar untuk mempunyai manipulasi data kos gas tinggi, tiada cara lain untuk pengguna kontrak mendapatkan semula rekod identiti. Menyimpan data dalam pasangan nilai kunci akhirnya mengehadkan cara data boleh diakses dan dimanipulasi.
Khususnya, pengurusan data dalam kontrak pintar Ethereum membentangkan dua masalah asas: pergantungan indeks dan pergantungan laluan akses.
Pergantungan indeks bermakna untuk mengakses sekeping data tertentu, data mesti tersedia dalam indeks. Indeks ialah struktur data yang cekap mencari pengecam unik dalam koleksi. Dalam contoh kontrak KYC di atas, rekod hanya boleh diakses melalui alamat Ethereum tepat yang digunakan untuk kunci. Struktur pengindeksan tegar ini menghalang pengguna kontrak daripada menyoal data berdasarkan kriteria lain, seperti, "Pengguna mana yang mempunyai alamat kediaman ini?" atau "Berapa peratusan pengguna dengan ID kebangsaan ini dilahirkan selepas 1 Januari 1970?" Tanpa keupayaan untuk melakukan pertanyaan sedemikian, pembangun tidak mempunyai fleksibiliti untuk mengagregat, menganalisis dan membina logik aplikasi di sekitar data kontrak. Apabila pembangun memerlukan fleksibiliti tambahan ini, seperti mendapatkan semula rekod identiti dengan nama penuh, keseluruhan kontrak perlu distruktur semula. Dalam Ethereum, indeks penyusunan semula juga boleh meningkatkan kos gas kontrak, seterusnya menghalang kebolehgunaan kontrak.
Kebergantungan laluan capaian merujuk kepada data yang boleh diakses dan difahami hanya melalui laluan perolehan semula tertentu. Dalam kontrak contoh, mengetahui negara dan alamat dompet Vitalik akan membolehkan pembangun mendapatkan semula rekod identitinya. Walau bagaimanapun, mengetahui hanya alamat dompet tidak akan membenarkan pembangun mendapatkan negara asal Vitalik. Tambahan pula, walaupun pemaju mempunyai alamat dompet Vitalik, mereka tidak boleh mendapatkan rekod identitinya melainkan mereka juga mengetahui negara asal (kunci “Kanada”). Laluan akses kepada rekod identiti Vitalik telah ditetapkan; jika pembangun perlu cuba mendapatkan semula rekodnya hanya dengan alamat dompet, keseluruhan kontrak perlu distruktur semula. Kebergantungan laluan capaian bermakna data boleh diakses dan bermakna hanya dalam satu arah, mengehadkan keupayaan untuk bertanya atau mentafsir data daripada perspektif yang berbeza.
Kebergantungan indeks dan laluan akses menimbulkan cabaran penting untuk aplikasi yang memerlukan model data yang kompleks atau berkembang. Walaupun mata wang kripto mempunyai struktur data mudah yang boleh dilaksanakan pada Ethereum (token ERC20 pada asasnya hanyalah pemetaan alamat kepada baki), cabaran ini menjadi masalah untuk aplikasi yang lebih intensif data. Apabila aplikasi perlu menyimpan, bertanya dan memanipulasi model data yang kompleks, storan nilai kunci asas Ethereum menjadikan pengurusan data menjadi lebih terhad, menjadikannya mencabar untuk membina dan menyelenggara aplikasi yang memerlukan pengurusan data yang kompleks.
"Sejarah tidak berulang, tetapi ia sering berima" - Mark Twain
Pada tahun 1970, Edgar F. Codd, seorang saintis komputer di IBM, menerbitkan makalah yang dipanggil "Model Data Perhubungan untuk Bank Data Berkongsi Besar." Pada masa itu, jenis pangkalan data aplikasi yang paling popular ialah "pangkalan data hierarki," yang menggunakan struktur seperti pokok yang tegar di mana setiap keping data disimpan di bawah direktori induk, sama seperti cara fail disusun pada komputer. Codd berhujah menentang pangkalan data hierarki, mencadangkan pangkalan data hubungan yang lebih baru, mudah, jauh lebih berkemampuan dengan struktur jadual.
Struktur seperti pepohon pangkalan data hierarki bermakna data hanya boleh diakses melalui sistem tegar untuk memahami setiap hubungan ibu bapa-anak data. Khususnya, Codd mengenal pasti tiga masalah utama dengan sistem hierarki:
Ketergantungan Pesanan: Hasil pertanyaan selalunya bergantung pada cara data disusun dalam storan. Jika aplikasi dibina dengan mengandaikan bahawa data akan ditanya dalam susunan yang sama ia disimpan, maka pesanan itu tidak boleh diubah pada masa hadapan.
Ketergantungan Indeks: Untuk mengakses sekeping data tertentu, aplikasi mesti mengetahui induk (iaitu, indeks). Jika tidak, mendapatkan semula data yang diminta adalah mustahil.
Ketergantungan Laluan Akses: Mengakses atau memahami data memerlukan mengikut laluan pengambilan tertentu. Jika aplikasi direka bentuk untuk mendapatkan semula data menggunakan satu corak akses tertentu, ia tidak boleh mendapatkan semula atau mentafsir data yang sama menggunakan laluan alternatif.
Adakah ini terdengar biasa? Walaupun kontrak pintar Ethereum tidak mempunyai pergantungan pesanan (peta tidak tersusun), indeks yang sama dan had pergantungan laluan akses yang memegang pangkalan data pada tahun 1960-an dan 1970-an menahan platform kontrak pintar hari ini.
Had pada peringkat pangkalan data adalah lebih daripada kemunduran yang remeh; mereka pada asasnya mengekang pembangun dan mengehadkan jenis aplikasi yang dibina pada platform. Daripada menumpukan pada pelaksanaan ciri baharu, pembangun yang melawan indeks dan pergantungan laluan akses mesti menghabiskan sejumlah besar usaha untuk mengekalkan kefungsian aplikasi sedia ada. Melalui 1960-an dan 1970-an, penggunaan pangkalan data terutamanya dikhaskan untuk tugas perniagaan yang tegar seperti pengurusan inventori, perakaunan, dan pemprosesan data am; pembangun tidak mempunyai fleksibiliti data untuk mencipta aplikasi yang lebih canggih. Walau bagaimanapun, selepas pengenalan pangkalan data hubungan, aplikasi yang lebih ekspresif dan intensif data telah muncul, membawa kepada kebangkitan sistem ERP, CRM dan alat risikan perniagaan. Tambahan pula, dengan kemunculan internet, kemajuan ini membuka jalan untuk platform e-dagang dan aplikasi media sosial. Pembangun boleh melaksanakan ciri yang sebelum ini memerlukan keseluruhan pangkalan data untuk distruktur semula dengan hanya beberapa baris SQL. Pangkalan data hubungan adalah lebih daripada anjakan paradigma; ia adalah platform penciptaan kategori yang membolehkan aplikasi asas baharu wujud.
Hari ini, platform blockchain adalah serupa dengan komputer dan pangkalan data pada tahun 1970-an. Kekurangan pemprosesan data yang berkemampuan di peringkat blockchain bermakna pembangun tidak dapat melaksanakan aplikasi terdesentralisasi yang lebih canggih dan intensif data. Jika kes penggunaan utama untuk blockchain akan berkembang melebihi mata wang kripto, kami memerlukan platform blockchain dengan fungsi pemprosesan data yang lebih berkebolehan.
"Ukuran kecerdasan ialah keupayaan untuk berubah." - Albert Einstein
Sama seperti pengkomersilan pangkalan data hubungan pada tahun 1980-an membawa kepada percambahan aplikasi baharu, menyepadukan pangkalan data hubungan ke dalam platform blockchain mempunyai potensi yang sama untuk membentuk semula jenis aplikasi terdesentralisasi yang boleh dibuat.
Di Kwil, kami sedang membina platform blockchain dan bahasa kontrak pintar yang membolehkan pembangun membina aplikasi terdesentralisasi yang memanfaatkan ekspresi penuh SQL. Dengan Kwil, pembangun boleh memanfaatkan fleksibiliti model hubungan untuk mencipta aplikasi terdesentralisasi yang lebih berkebolehan dan intensif data.
Pertimbangkan contoh penyimpanan identiti yang sama dari awal. Daripada menyimpan rekod identiti dalam peta yang setiap rekod hanya boleh diakses oleh kuncinya, Kwil membenarkan pembangun menyimpan rekod dalam jadual dan memanfaatkan sintaks SQL yang fleksibel untuk membuat pertanyaan di atas jadual:
database user_registry; table identities { address uuid primary key, name text notnull, date_of_birth int notnull, residential_address text notnull, national_id int notnull, #country_index index(national_id) } action query_by_national_id ($id) public view { SELECT * FROM identities WHERE national_id = $id; } action query_by_dob ($dob) public view { SELECT * FROM identities WHERE date_of_birth > $dob; }
Dalam kontrak pintar Ethereum asal, tiada cara untuk mencari melalui identiti dan mengembalikan semua pengguna yang diberi syarat (seperti ID nasional) atau untuk mengaitkan dompet berdasarkan atribut tertentu (seperti tarikh lahir). Untuk membolehkan kefungsian sedemikian memerlukan penstrukturan semula kontrak untuk menambah fungsi intensif gas yang mahal. Walau bagaimanapun, dengan model hubungan, pembangun boleh melaksanakan pertanyaan ini tanpa sebarang penstrukturan semula yang diperlukan, dengan itu memperoleh lebih banyak fleksibiliti manipulasi data tanpa menanggung kos tambahan.
Sebagai contoh, rangkaian idOS ialah rantaian blok berdaulat yang dibina dengan Kwil, membenarkan pengguna dan dApps menyimpan maklumat kelayakan pengguna. Memanfaatkan SQL melalui rangkaian idOS membolehkan:
Pengguna untuk dikaitkan dan boleh diperoleh semula dengan berbilang dompet, bukti kelayakan dan atribut.
Protokol DeFi untuk melaksanakan analisis agregat dari mana pengguna mereka berasal.
Protokol Stablecoin untuk menilai pengguna mana dari kawasan berisiko tinggi.
Mendayakan model hubungan dan SQL pada platform blockchain terdesentralisasi membolehkan kami mencipta aplikasi asas baharu yang tidak boleh wujud pada kontrak pintar Ethereum sedia ada.
Model hubungan yang merevolusikan industri pengkomputeran 40 tahun yang lalu mempunyai keupayaan yang sama untuk merevolusikan industri blockchain hari ini. Pada tahun 1960-an dan 1970-an, pergantungan indeks dan laluan akses mengehadkan kegunaan pangkalan data hierarki dalam aplikasi intensif data. Hari ini, indeks yang sama dan pergantungan laluan akses mengehadkan kontrak pintar Ethereum dan keupayaan mereka untuk menggerakkan platform terdesentralisasi dengan model data yang kompleks. Walau bagaimanapun, dengan menyepadukan model hubungan ke dalam rantaian blok dan menyediakan pembangun dengan dialek SQL ekspresif yang sama, kami boleh membuka kunci jenis aplikasi baharu. Sama seperti pangkalan data hubungan mempercepatkan permintaan perniagaan dan membantu komputer mencapai penggunaan arus perdana, ia boleh membantu platform blockchain melakukan perkara yang sama, sekali gus membuka kunci dunia digital yang lebih bebas, lebih terpencar dan lebih dipercayai.