Mengumumkan dompet MultiChain baru, PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Mengumumkan dompet MultiChain baru

Sebuah langkah maju yang penting untuk kinerja dan skalabilitas

Setelah dua bulan pengembangan dan pengujian intensif, kami dengan bangga merilis alfa MultiChain terbaru, dengan dompet in-node yang ditulis ulang sepenuhnya. Dompet baru ini mengubah kinerja dan skalabilitas pembuatan, penerimaan, dan penyimpanan transaksi di MultiChain.

Sebelum kita membahas detailnya, izinkan saya memberikan beberapa konteks. Saat kami mulai mengembangkan MultiChain, kami membuat keputusan untuk menggunakan Bitcoin Core, node standar untuk jaringan bitcoin publik, sebagai titik awal. Dalam istilah pemrograman, ini berarti MultiChain adalah "cabang" dari perangkat lunak bitcoin. Alasan utama kami adalah bahwa bitcoin adalah (dan terus menjadi) ekosistem cryptocurrency dengan nilai tertinggi dan paling teruji dalam pertempuran, dalam beberapa hal.

Sisi positifnya, keputusan ini membantu kami mencapai pasar dengan cepat, dibandingkan dengan membuat kode node blockchain dari awal. Terlepas dari banyak perbedaan antara blockchain publik dan pribadi, mereka berbagi banyak kesamaan teknis, termasuk protokol peer-to-peer, struktur transaksi dan blok, pembuatan dan verifikasi tanda tangan digital, aturan konsensus, manajemen kunci, dan kebutuhan untuk API node. Forking dari Bitcoin Core memungkinkan kami untuk memanfaatkan kematangannya dan fokus pada apa yang ditambahkan MultiChain ke blockchain - konfigurasi, izin, dan dukungan aset asli. Hasilnya, kami dapat merilis alfa pertama pada bulan Juni 2015, hanya 6 bulan setelah memulai pengembangan.

Namun, di samping manfaat ini, kami juga harus menerima kenyataan bahwa beberapa aspek Bitcoin Core tidak dirancang dengan baik. Meskipun berfungsi dengan baik pada skala kecil, performanya menurun drastis seiring dengan pertumbuhan penggunaan. Dengan jaringan bitcoin publik yang masih terbatas pada beberapa transaksi per detik, ini tidak akan menjadi masalah bagi sebagian besar pengguna Bitcoin Core untuk waktu yang lama. Tetapi dengan blockchain pribadi yang menargetkan ratusan atau ribuan transaksi per detik, kami tahu bahwa, cepat atau lambat, kemacetan ini perlu dihilangkan.

Dompet Bitcoin Core

"Dompet" dalam Bitcoin Core selalu yang paling penting dari poin-poin penting ini. Tugasnya adalah menyimpan transaksi yang memiliki relevansi khusus dengan node, karena transaksi tersebut melibatkan alamat blockchain yang dimilikinya atau "hanya menontonAlamat yang aktivitasnya dilacak. Misalnya, setiap transaksi yang mengirim dana ke atau dari sebuah node harus disimpan di dompet node tersebut. Dan setiap kali sebuah node membuat transaksi, ia harus mencari satu atau lebih "output yang tidak terpakai" dari transaksi wallet sebelumnya yang akan digunakan oleh transaksi baru.

Jadi apa yang salah dengan dompet yang kita warisi dari Bitcoin Core? Sebenarnya, tiga hal:

  • Semua transaksi dompet disimpan di memori. Ini menyebabkan waktu startup lambat dan penggunaan memori meningkat dengan cepat.
  • Banyak operasi melakukan "pemindaian penuh" yang tidak efisien untuk setiap transaksi di dompet, baik lama maupun baru.
  • Setiap transaksi di dompet disimpan secara penuh, termasuk "metadata" sembarang yang tidak memiliki arti dari perspektif node dan sudah disimpan di blockchain pada disk. Ini sangat boros.

Konsekuensinya adalah, dengan sekitar 20,000 transaksi disimpan, dompet Bitcoin Core melambat secara signifikan. Setelah 200,000 atau lebih, itu praktis berhenti. Lebih buruk lagi, karena blockchain MultiChain memungkinkan hingga 8 MB metadata per transaksi (dibandingkan dengan bitcoin 80 byte), persyaratan memori dompet dapat membengkak dengan cepat bahkan dengan sejumlah kecil transaksi.

Penting untuk mengklarifikasi bahwa kekurangan ini hanya berlaku untuk Bitcoin Core dompet, daripada kapasitas pemrosesan transaksi umumnya. Dengan kata lain, ia dapat dengan nyaman memproses dan menyimpan jutaan (atau bahkan miliaran) transaksi yang tidak terkait dengan alamatnya sendiri, karena ini disimpan di disk bukan di memori. Misalnya, banyak bursa dan dompet bitcoin populer menggunakan Bitcoin Core apa adanya, tetapi menyimpan transaksinya sendiri secara eksternal daripada di dalam node.

Dompet baru MultiChain

Kita bisa saja membuat permintaan yang sama dari pengguna MultiChain, untuk menyimpan transaksi mereka sendiri di luar node. Namun ini tidak terasa sebagai solusi yang tepat karena akan sangat mempersulit penyiapan dan pemeliharaan untuk masing-masing peserta rantai. Jadi sebagai gantinya, kami menggigit peluru dan menulis ulang dompet dari bawah ke atas.

Apa perbedaan dompet baru? Jika Anda memiliki pengalaman dengan database, jawabannya mungkin jelas:

  • Daripada menyimpan transaksi dompet di memori, mereka disimpan di disk dalam format yang sesuai, dengan transaksi yang menarik diambil bila perlu.
  • Alih-alih melakukan pemindaian dompet penuh, transaksi "diindeks" dengan berbagai cara untuk memungkinkan mereka yang memenuhi kriteria tertentu dapat ditemukan dengan cepat.
  • Setiap bagian dari metadata transaksi yang lebih besar dari 256 byte tidak disimpan di dompet. Sebaliknya, dompet berisi penunjuk ke posisi metadata itu di blockchain itu sendiri.

Dengan kata lain, kami telah membangun kembali dompet dalam node agar digerakkan oleh basis data dengan benar (menggunakan TingkatDB), daripada mengandalkan struktur dalam memori yang naif yang tidak dapat dicari secara efisien. Tidak mengherankan, perbedaannya (yang diukur pada Intel Core i3.4 7 GHz) agak dramatis:

Throughput transaksi dompet MultiChain

Memory Usage

Grafik menunjukkan bahwa, setelah dompet lama berisi 250,000 transaksi, kecepatan kirimnya turun menjadi 3 tx / detik dan menambahkan 600 MB ke penggunaan memori node. Sebaliknya, dompet baru memiliki kapasitas lebih dari 100 tx / detik dan hanya menambah 90 MB. Kami berhenti menguji dompet lama pada saat ini, tetapi bahkan dengan 6-8 juta transaksi yang disimpan, dompet baru terus mengirim lebih dari 100 tx / detik, dan mencapai sekitar 250 MB RAM yang digunakan (karena cache database).

Tes ini dilakukan dalam kondisi realistis, dengan banyak alamat dan aset (dan karena itu banyak keluaran transaksi yang tidak terpakai) di dompet node. Dalam skenario yang diidealkan (satu alamat, satu aset, beberapa UTXO), tingkat pengiriman berkelanjutan lebih dari 400 tx / s. Either way, sebagai bagian dari penulisan ulang ini, kami juga telah mengabstraksi semua fungsionalitas dompet dengan benar di balik antarmuka internal yang bersih. Ini akan memudahkan untuk mendukung mesin database lain di masa mendatang, untuk ketahanan dan kecepatan yang lebih baik.

Untuk mengulangi, semua angka ini mengacu pada tingkat di mana node dapat membuat, mengirim dan menyimpan transaksi di dompet lokalnya, daripada throughputnya dalam hal memproses transaksi yang dibuat oleh orang lain. Untuk throughput jaringan umum, MultiChain saat ini dapat memproses 200 hingga 800 tx / detik, bergantung pada perangkat keras yang menjalankannya. (Bersikaplah skeptis terhadap perangkat lunak blockchain yang menjanjikan angka seperti 100,000 tx / detik pada perangkat keras biasa, karena hambatannya adalah verifikasi tanda tangan digital, yang membutuhkan waktu nyata untuk dilakukan. Jika node tidak memverifikasi tanda tangan transaksi individu, blockchain tidak mungkin digunakan di seluruh kepercayaan batas, menjadikannya tidak lebih baik dari database terdistribusi biasa.)

Untuk menyelesaikannya, saya ingin menyebutkan fitur utama berikutnya yang datang ke MultiChain, yang membutuhkan penulisan ulang dompet ini. Fitur ini, yang disebut stream, menyediakan abstraksi tingkat tinggi dan API untuk penyimpanan data tujuan umum di blockchain. Anda dapat menganggap streaming sebagai database deret waktu atau nilai kunci, dengan manfaat tambahan terkait blockchain dari desentralisasi, tanda tangan digital, cap waktu, dan keabadian. Kami mengetahui banyak kasus penggunaan blockchain yang dapat menggunakan fungsi ini, dan kami sudah bekerja keras untuk membuatnya. Perhatikan ruang ini.

Silakan kirim komentar di LinkedIn.

Tambahan teknis

Mulai di MultiChain alpha 22, Anda dapat memverifikasi versi dompet mana yang saat ini berjalan dengan memeriksa walletdbversion bidang getinfo or getwalletinfo Panggilan API. Nilai 1 berarti dompet Bitcoin Core asli, dan 2 berarti dompet MultiChain baru.

Jika Anda menjalankan versi baru MultiChain pada rantai yang sudah ada, itu tidak akan segera beralih ke dompet baru. Anda dapat meningkatkan dompet dengan menghentikan node dan kemudian menjalankan kembali multichaind dengan parameter -walletdbversion=2 โ€“rescan. Anda dapat menurunkan versi dengan cara yang sama โ€“walletdbversion=1 โ€“rescan.

Secara default, ketika Anda memulai node pada rantai baru, dompet baru secara otomatis akan digunakan. Anda dapat mengubahnya dengan menjalankan multichaind untuk pertama kalinya dengan parameter โ€“walletdbversion=1.

Dengan dompet baru, semuanya API MultiChain bekerja dengan cara yang persis sama seperti sebelumnya, dengan pengecualian API kueri transaksi lama getreceivedbyaddress, listreceivedbyaddress dan listtransactions (menggunakan listwallettransactions or listaddresstransactions sebagai gantinya). Selain itu, dompet baru tidak mendukung panggilan API dan parameter yang terkait dengan implementasi buruk Bitcoin Core dan mekanisme "akun" yang akan segera dihentikan, yang tidak pernah didukung dengan baik oleh MultiChain. Panggilan ini dengan aman dinonaktifkan dengan pesan kesalahan.

Sumber: https://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/

Stempel Waktu:

Lebih dari Multichain