Dari blockchain ke DAG: menyingkirkan perantara

Pada artikel ini saya akan memberi tahu Anda tentang DAG (Directed Acyclic Graph) dan penggunaannya dalam register terdistribusi, dan kami akan membandingkannya dengan blockchain.



DAG bukanlah hal baru di dunia cryptocurrency. Anda mungkin pernah mendengar tentang dia sebagai solusi untuk masalah skalabilitas blockchain. Tetapi hari ini kita tidak akan berbicara tentang skalabilitas, tetapi tentang apa yang membuat cryptocurrency berbeda dari yang lain: desentralisasi, tidak adanya perantara dan perlawanan terhadap sensor.



Saya juga akan menunjukkan kepada Anda bahwa DAG sebenarnya lebih tahan terhadap sensor, dan tidak ada perantara untuk mengakses registri.



Di blockchains yang biasa bagi kami, pengguna tidak memiliki akses langsung ke registri itu sendiri. Ketika Anda ingin menambahkan transaksi ke registri, Anda harus "meminta" penghasil blok (block producer, alias "miner") untuk melakukan ini. Penambanglah yang memutuskan transaksi mana yang akan ditambahkan ke blok berikutnya, dan mana yang tidak. Penambanglah yang memiliki akses eksklusif ke blok dan hak untuk memutuskan transaksi siapa yang akan diterima untuk ditambahkan ke registri.

Penambang adalah perantara antara Anda dan registri terdistribusi.



Dalam praktiknya, biasanya sejumlah kecil penambang secara kolektif mengendalikan lebih dari setengah daya komputasi jaringan. Untuk bitcoin, ini adalah empat kelompok, untuk Ethereum - dua. Dalam kasus kolusi, mereka dapat memblokir transaksi apa pun yang mereka inginkan.



Selama beberapa tahun terakhir, banyak variasi blockchain telah diusulkan, berbeda dalam prinsip untuk memilih produsen blok. Tetapi produsen blok itu sendiri tidak pergi ke mana pun, mereka masih "berdiri di atas penghalang": setiap transaksi harus melalui produsen blok, dan jika dia tidak menerimanya, maka transaksi itu, pada kenyataannya, tidak ada.



Ini adalah masalah yang tak terhindarkan dalam kasus blockchain. Dan jika kita ingin menyelesaikannya, kita harus secara radikal mengubah desain dan sepenuhnya menghilangkan blok dan blok pabrikan. Dan alih-alih membangun rantai blok, kami akan bergabung dengan transaksi itu sendiri, termasuk hash dari beberapa yang sebelumnya dalam setiap transaksi. Sebagai hasilnya, kita mendapatkan struktur yang dikenal dalam matematika sebagai grafik asiklik terarah - DAG.

Sekarang semua orang memiliki akses langsung ke registri, tanpa perantara. Ketika Anda ingin menambahkan transaksi ke registri, Anda cukup menambahkannya. Pilih beberapa transaksi induk, tambahkan data Anda, tanda tangani dan kirim transaksi Anda ke rekan-rekan di jaringan. Selesai Tidak ada yang menghentikan Anda untuk melakukan ini, sehingga transaksi Anda sudah ada dalam registri.

Ini adalah cara yang paling terdesentralisasi, paling bebas sensor untuk menambahkan transaksi ke registri tanpa perantara. Karena semua orang ingin hanya menambahkan transaksi mereka ke registri tanpa meminta izin siapa pun.



DAG dapat dianggap sebagai tahap ketiga dari evolusi registri. Pada awalnya ada pendaftar terpusat, di mana satu sisi mengontrol akses ke mereka. Kemudian muncul blockchain, di mana sudah ada beberapa pengendali yang mencatat transaksi dalam registri. Dan akhirnya, di DAG tidak ada pengontrol sama sekali, pengguna menambahkan transaksi mereka secara langsung.



Sekarang kita memiliki kebebasan seperti itu, seharusnya tidak mengarah pada kekacauan. Kami harus memiliki perjanjian tentang status registri. Dan persetujuan ini, atau konsensus, biasanya berarti persetujuan pada dua hal:

  1. Apa yang terjadi
  2. Dalam urutan apa hal ini terjadi?

Kami dapat dengan mudah menjawab pertanyaan pertama: segera setelah transaksi yang dibuat dengan benar ditambahkan ke registri, hal itu terjadi. Dan intinya. Informasi tentang ini dapat mencapai semua peserta pada waktu yang berbeda, tetapi pada akhirnya semua node akan menerima transaksi ini dan mengetahui bahwa itu telah terjadi.

Jika itu adalah blockchain, penambang akan memutuskan apa yang sedang terjadi. Segala sesuatu yang penambang memutuskan untuk dimasukkan dalam blok adalah apa yang terjadi. Segala sesuatu yang tidak termasuk dalam blok tidak terjadi.

Pada blockchains, penambang juga menyelesaikan masalah konsensus kedua: ketertiban. Mereka diizinkan untuk mengatur transaksi di dalam blok sesuai keinginan mereka.

Bagaimana cara menentukan urutan transaksi dalam DAG?



Hanya karena grafik kami diarahkan, kami sudah memiliki beberapa pesanan. Setiap transaksi mengacu pada satu atau lebih sebelumnya, induk. Orang tua, pada gilirannya, merujuk pada orang tua mereka, dan seterusnya. Orang tua jelas muncul sebelum transaksi anak. Jika ada transaksi yang dapat dicapai dengan mengklik tautan induk-anak, kami tahu pasti urutan antara transaksi dalam rantai transaksi ini.



Namun urutan antar transaksi tidak selalu dapat ditentukan hanya dari bentuk grafik. Misalnya, ketika dua transaksi terletak pada cabang paralel grafik.



Untuk menyelesaikan ambiguitas dalam kasus-kasus seperti itu, kami bergantung pada apa yang disebut penyedia pesanan. Kami juga memanggil mereka "saksi." Ini adalah pengguna biasa yang tugasnya adalah untuk terus mengirim transaksi ke jaringan secara tertib, mis. sehingga setiap transaksi mereka sebelumnya dapat dicapai dengan mengklik tautan "parent-child". Penyedia pesanan adalah pengguna tepercaya, dan seluruh jaringan bergantung pada mereka untuk tidak melanggar aturan ini. Untuk memercayai mereka secara rasional , kami mengharuskan setiap penyedia pesanan untuk menjadi orang atau organisasi yang terkenal (non-anonim) dan memiliki sesuatu yang dapat hilang jika mereka melanggar aturan, misalnya, reputasi atau bisnis berdasarkan kepercayaan.



Penyedia pesanan dipilih oleh pengguna, dan setiap pengguna menyertakan daftar penyedia tepercaya dalam setiap transaksi yang ia kirim ke jaringan. Daftar ini terdiri dari 12 penyedia. Ini adalah jumlah yang cukup kecil sehingga seseorang dapat memverifikasi identitas dan reputasi masing-masing, dan cukup sehingga jaringan terus bekerja jika ada masalah yang tak terelakkan dengan sejumlah kecil penyedia pesanan.

Daftar penyedia ini bervariasi dari pengguna ke pengguna, tetapi daftar transaksi tetangga mungkin berbeda dengan maksimum satu penyedia.



Sekarang kami memiliki penyedia pesanan, kami dapat menyorot transaksi mereka di DAG dan mengatur semua transaksi lain di sekitar pesanan yang dibuat oleh mereka. Ada kemungkinan membuat algoritma seperti itu (lihat Kertas Putih Obyte untuk perincian teknis).

Tetapi pesanan di seluruh jaringan tidak dapat ditentukan secara instan, kami membutuhkan waktu bagi penyedia pesanan untuk mengirim jumlah transaksi mereka yang cukup untuk memastikan pesanan akhir dari transaksi yang lalu.

Dan, karena pesanan hanya ditentukan oleh posisi transaksi penyedia di DAG, cepat atau lambat semua node jaringan akan menerima semua transaksi dan sampai pada kesimpulan yang sama mengenai urutan transaksi.



Jadi, kami memiliki kesepakatan tentang apa yang kami anggap telah terjadi: setiap transaksi yang masuk ke DAG terjadi. Kami juga menyetujui urutan acara: ini dapat dilihat berdasarkan transaksi terkait, atau disimpulkan dari urutan transaksi yang dikirim oleh penyedia pesanan. Jadi kami memiliki konsensus.



Kami memiliki opsi konsensus ini di Obyte. Terlepas dari kenyataan bahwa akses ke registri Obyte sepenuhnya terdesentralisasi, konsensus tentang urutan transaksi masih terpusat, karena 10 dari 12 penyedia dikendalikan oleh pencipta (Anton Churyumov), dan hanya dua di antaranya yang independen. Kami mencari kandidat yang ingin menjadi salah satu penyedia pesanan independen untuk membantu kami mendesentralisasikan penetapan pesanan dalam registri.

Baru-baru ini, kandidat independen ketiga muncul yang ingin membangun dan mempertahankan simpul penyedia pesanan - Universitas Nicosia.



Sekarang, bagaimana kita mengendalikan pengeluaran ganda?

Menurut aturan, setelah mendeteksi dua transaksi yang menghabiskan koin yang sama, transaksi yang muncul sebelumnya dalam urutan terakhir dari semua transaksi menang. Yang kedua dinonaktifkan oleh algoritma konsensus.


Jika dimungkinkan untuk membuat pesanan antara dua transaksi yang menghabiskan satu koin (pada hubungan orangtua-anak), maka semua node segera menolak upaya pengeluaran ganda seperti itu.



Jika pesanan tidak terlihat dari hubungan orangtua antara dua transaksi tersebut, keduanya diterima ke dalam registri, dan kita perlu menunggu konsensus dan membuat pesanan di antara mereka menggunakan penyedia pesanan. Kemudian transaksi sebelumnya menang, dan yang kedua menjadi tidak valid.



Meskipun transaksi kedua menjadi tidak valid, masih tetap ada dalam registri, karena sudah memiliki transaksi berikutnya yang merujuk padanya, yang tidak melanggar apa pun dan tidak tahu bahwa di masa depan transaksi ini akan menjadi tidak valid. Kalau tidak, kami harus menghapus induk dari transaksi berikutnya yang baik, yang akan melanggar prinsip utama jaringan - setiap transaksi yang benar diterima dalam registri.



Ini adalah aturan yang sangat penting yang memungkinkan seluruh sistem menjadi tahan terhadap upaya sensor.

Mari kita berpura-pura bahwa semua penyedia pesanan berkonspirasi dalam upaya untuk "menyensor" satu transaksi tertentu. Mereka dapat mengabaikannya dan tidak pernah memilih "orang tua" untuk transaksi mereka, tetapi ini tidak cukup, transaksi ini masih dapat dimasukkan secara tidak langsung sebagai induk dari beberapa transaksi lain yang dikeluarkan oleh pengguna jaringan yang tidak terlibat dalam konspirasi. Seiring waktu, transaksi semacam itu akan menerima semakin banyak anak, cucu dan cicit dari pengguna biasa, berkembang seperti bola salju, dan semua penyedia pesanan yang disepakati harus mengabaikan transaksi ini juga. Pada akhirnya, mereka harus menyensor seluruh jaringan, yang sama dengan sabotase.



Dengan demikian, DAG tetap tahan sensor, bahkan jika ada kolusi penyedia pesanan, sehingga melampaui blockchain dalam resistensi sensor, di mana kita tidak dapat melakukan apa pun jika penambang memutuskan untuk tidak memasukkan transaksi apa pun. Dan ini mengikuti dari properti utama DAG: partisipasi dalam registri benar-benar independen dan tanpa perantara, dan transaksi tidak dapat diubah.

Source: https://habr.com/ru/post/id477032/


All Articles