Kecerdasan Data Generatif

Haruskah Node Blockchain Menyimpan Semua Log Transaksi?

Tanggal:

Pengantar

Blockchain adalah teknologi yang menggerakkan semua cryptocurrency. Di setiap dari mereka, satu set node validator bertanggung jawab untuk memvalidasi semua transaksi. Validator dianggap rasional dan mementingkan diri sendiri, yaitu mereka hanya tertarik untuk menghasilkan uang sebanyak mungkin untuk diri mereka sendiri. Dengan asumsi seperti itu, umumnya diasumsikan bahwa mayoritas validator yang disyaratkan akan menyetujui urutan transaksi yang pernah terjadi di blockchain.

Namun, node validator blockchain seperti itu umumnya mahal dalam hal ukuran ruang disk yang mereka butuhkan. Cryptocurrency tertua dan terpopuler, Bitcoin, misalnya, membutuhkan sekitar 200 GB ruang disk untuk menyimpan seluruh log transaksi. Ini membuatnya perlu memiliki koneksi berkecepatan tinggi dan banyak waktu untuk memulai penambangan atau validasi. Ini adalah masalah yang mendorong para peneliti untuk menyarankan sharding sebagai solusi, yaitu menyimpan hanya bagian dari log di setiap node, tetapi menyimpan seluruh log secara keseluruhan. Sharding hadir dengan tantangannya sendiri dalam hal memvalidasi transaksi.

Tetapi, apakah masuk akal bagi sebuah simpul untuk menyimpan log transaksi yang dimulai dari blok genesis? Ini adalah pertanyaan penting yang perlu dijawab sebelum solusi tersebut dibuat.

Anda juga mungkin tertarik dalam: Arsitektur Referensi Blockchain

Untuk memahami apakah menyimpan semua log transaksi mungkin / perlu, kami mempertimbangkan poin-poin berikut:

  1. Apakah perlu untuk menyimpan seluruh log transaksi untuk memvalidasi transaksi?
  2. Apakah lebih aman untuk menyimpan log transaksi daripada tidak menyimpannya?
  3. Apakah mungkin untuk memberi insentif pada simpul validator untuk menyimpan log?

Kami mengambil poin-poin ini di sisa artikel.

Apakah Diperlukan untuk Menyimpan Seluruh Log Transaksi untuk Memvalidasi Transaksi?

Untuk memvalidasi transaksi, satu-satunya hal yang dibutuhkan sebuah simpul adalah mengetahui keadaan blockchain tepat sebelum transaksi. Tidak penting bagaimana negara itu dicapai. Jadi, cukup menyimpan negara setelah setiap blok. Faktanya, kita dapat melangkah lebih jauh - karena blok yang telah ditambang jauh sebelum waktu saat ini hampir tidak akan pernah dibatalkan, aman untuk menghapus semua blok sebelumnya.

Pertanyaan alami yang muncul di benak kita adalah apakah itu entah bagaimana akan membahayakan keamanan blockchain, yaitu apakah itu entah bagaimana membuat blockchain untuk menyetujui transaksi yang tidak benar berdasarkan pada keadaan saat ini dari blockchain? Untuk menjawab pertanyaan ini, kami pindah ke bagian berikutnya.

Apakah Lebih Aman Menyimpan Log Transaksi Daripada Tidak Menyimpannya?

Saat memikirkannya, kita perlu memikirkan keamanan seluruh transaksi dan bukan hanya bagian dari blockchain. Sebagian besar transaksi memiliki dua bagian - pembayaran pada blockchain dan penerimaan sesuatu yang bernilai sebagai imbalan. Bagian kedua dari transaksi tidak disimpan di blockchain. Ini berarti penjual yang menjual produk atau layanan dalam pertukaran untuk beberapa cryptocurrency bergantung pada blockchain untuk tidak mengembalikan transaksi setelah ia menyediakan produk atau layanan. Ini, pada gilirannya, berarti bahwa harus ada waktu yang masuk akal setelah mana transaksi harus menjadi benar-benar abadi yang membutuhkan blok di mana itu termasuk juga tidak dapat berubah. 

Dengan kata lain, kita membutuhkan finalitas transaksi dan blokir. Ketika sebuah blok diselesaikan dalam beberapa bentuk atau lainnya, tidak apa-apa melupakan apa yang terjadi sebelumnya dan melanjutkan seolah-olah blok itu adalah blok genesis. Ini secara umum berarti bahwa riwayat transaksi harus disimpan hanya dalam waktu singkat. Dalam kasus Bitcoin, orang biasanya berasumsi bahwa satu blok sudah cukup banyak diselesaikan setelah satu jam waktu, jadi masuk akal untuk menghapus semua riwayat sebelum itu. Itu berarti, dalam kasus Bitcoin, validator hanya perlu daftar UTXO di akhir setiap blok terakhir.

Kita sekarang beralih ke titik akhir kita.

Apakah Mungkin Memberi Insentif pada Validator untuk Menyimpan Log?

Seperti yang dinyatakan sebelumnya, validator dianggap egois dan rasional. Ini berarti mereka perlu dibayar atau diberi imbalan karena melakukan apa pun. Karena validator hanya dibayar dalam cryptocurrency untuk menambang blok di semua blockchain publik, itulah satu-satunya hal yang harus mereka lakukan. Kami juga telah melihat bahwa penyimpanan data tidak diperlukan untuk melakukan pekerjaan validasi. Oleh karena itu, tidak ada insentif bagi validator untuk menyimpan keseluruhan log transaksi mulai dari awal. 

Jika kita memang ingin validator rasional menyimpan seluruh riwayat transaksi, kita harus cukup memberi insentif kepada validator untuk melakukannya. Kami mungkin ingin meminta bukti penyimpanan semua transaksi dalam satu blok agar dianggap sah. Apakah mungkin untuk melakukannya? Ya memang, jika kami mengubah protokol konsensus bukti kerja sebagai berikut:

  1. Misalkan sebuah blok diusulkan menjadi B dan bukti kerja terkait menjadi p. Ini berarti bahwa p adalah nonce sehingga hash (B || p) <threshold.
  2. Biarkan jumlah transaksi sebelum blok itu menjadi N.
  3. Misalkan h = hash (B || hash (p)), di mana || berarti penggabungan.
  4. Hitung sisa r ketika h dibagi dengan N. Karena, h biasanya bilangan 256-bit, itu harus menjadi kasus bahwa h jauh lebih besar dari N, jadi ini berarti r kurang dari kedua h dan N dan dapat dianggap sampel acak dari himpunan bilangan asli kurang dari N.
  5. Biarkan transaksi dengan nomor urut r menjadi tr. Transaksi diindeks dari 0 ke N-1.
  6. Sekarang, proposal blok harus (B || p || tr) agar dianggap valid.

Sangat mudah untuk melihat bahwa jika validator tidak menyimpan semua log transaksi, maka akan membutuhkan lebih banyak upaya untuk menghasilkan blok yang valid karena harus membuang semua bukti-kerja dan memulai dari awal jika transaksi yang sesuai tidak disimpan olehnya. Lebih khusus lagi, jika validator menyimpan sebagian kecil dari seluruh sejarah, ia harus membuang rata-rata kerja 1 / f kali, secara signifikan mengurangi imbalan penambangan rata-rata untuk jumlah kekuatan pemrosesan yang sama. 

Oleh karena itu, yang paling efisien bagi validator mana pun untuk hanya menyimpan semua transaksi dari blok genesis. Namun, sistem seperti itu saat ini tidak digunakan, sehingga validator benar-benar melakukan layanan sosial dengan tetap menyimpan semua transaksi. Namun, dari diskusi kita tentang keamanan, jelas bahwa modifikasi semacam itu bisa sangat tidak perlu.

Masalah lainnya adalah ketika validator baru bergabung, ia harus mengunduh seluruh log transaksi dari rekan-rekannya. Teman-teman sebaya, bagaimanapun, tidak diberi insentif sama sekali untuk memberikan data ini kepada rekan baru mereka. Mereka hanya menambahkan kekuatan penambangan yang bersaing sambil juga membebani bandwidth mereka sendiri untuk menyiarkan informasi. Paling tidak yang bisa kita lakukan adalah membebaskan mereka dari keharusan menyiarkan keseluruhan sejarah transaksi.

Kesimpulan

Kita dapat melihat bahwa adalah mungkin untuk mengamanatkan penyimpanan semua riwayat transaksi jika kita memilih untuk merancang blockchain sedemikian rupa. Namun, sepertinya tidak perlu dan tidak praktis. Bahkan mungkin memberikan lebih banyak motivasi bagi para penambang yang ada untuk memberikan data yang dibutuhkan untuk setiap joiner baru. Kami juga telah melihat bahwa tidak ada keuntungan menyimpan riwayat transaksi dalam hal keamanan blockchain, jadi kami mungkin juga tidak ingin melakukannya.

Selanjutnya Membaca

Panduan untuk Kekekalan dan Tantangan Blockchain

11 Alat Terbaik untuk Pengembangan Blockchain

Sumber: https://dzone.com/articles/should-a-blockchain-node-save-all-the-transaction

tempat_img

Intelijen Terbaru

tempat_img