Sinkronisasi dompet Bitcoin

Mari kita bicara tentang sinkronisasi dompet digital dengan jaringan Bitcoin. Kami menguraikan pendekatan utama, prinsip kerja dan kompleksitasnya. Materi ini dapat bermanfaat tidak hanya bagi pengembang, tetapi juga bagi pengguna biasa untuk berkenalan dengan fitur dompet digital dan aspek kerja yang aman dengan dompet.

Berdasarkan materi dalam artikel ini, salah satu kuliah kursus daring blockchain " Sinkronisasi Dompet dengan Jaringan Bitcoin " telah direkam.

Fitur dompet dasar


Mari kita mulai dengan fungsi dasar dompet digital:

  • mencadangkan kunci pribadi;
  • penerimaan pembayaran;
  • tampilan saldo;
  • menampilkan riwayat transaksi;
  • mengirim pembayaran.

Untuk mencadangkan kunci pribadi, Anda hanya perlu modul yang bertanggung jawab untuk menyimpan dan mengelola kunci. Namun, untuk empat fungsi lainnya, Anda pasti harus bekerja dengan jaringan Bitcoin. Memang, untuk membaca dan menulis basis data transaksi umum, Anda setidaknya harus menjadi salah satu simpul dari jaringan ini dan mengikuti spesifikasi untuk memproses dan bertukar data di dalamnya. Dengan demikian, perlu untuk memiliki data tentang semua transaksi di mana alamat dompet tertentu berpartisipasi. Data tentang kondisi jaringan saat ini juga akan diperlukan untuk menyiapkan transaksi baru dan melakukan pembayaran.

Hal terpenting yang harus diketahui pengguna dompet digital dengan andal ketika menerima dan mengirim pembayaran adalah status transaksi mereka. Jelas, transaksi dianggap tidak lengkap jika transaksi dikirim, tetapi tidak menerima konfirmasi penuh. Akibatnya, penerima tidak dapat menerima pembayaran untuk, misalnya, mengembalikan barang atau menyediakan layanan.

Kesulitan bekerja di jaringan terdistribusi


Bekerja dengan jaringan terdistribusi adalah topik yang agak rumit, yang biasanya menghadapi masalah berikut. Salah satunya terdiri dari metode pengecekan data yang diterima dari jaringan terdistribusi, dan yang kedua adalah mengoptimalkan penyimpanan data dari data ini. Persyaratan ini agak bertentangan, karena jumlah yang lebih besar dari data yang disimpan memungkinkan verifikasi yang lebih lengkap dari transaksi dan blok baru. Tidak ada solusi ideal untuk masalah-masalah ini, tidak mungkin untuk memproses transaksi dengan andal dan dengan sumber daya minimal, jadi Anda harus mencari keseimbangan, kompromi kesederhanaan dan keamanan.

Masalah lainnya adalah sebagai berikut. Untuk mendapatkan riwayat transaksi di alamat tertentu pada node jaringan penuh, Anda harus melalui seluruh blockchain (dari genesis hingga yang terakhir diketahui), yang cukup lama, karena ini adalah sejumlah besar data, dan brute force adalah pendekatan yang sedikit efektif. Oleh karena itu, Anda dapat menggunakan pendekatan tertentu untuk mengoptimalkan kueri. Untuk ini, add-on khusus digunakan di atas node jaringan biasa, yang membantu mengindeks blockchain dan menyimpan beberapa data untuk mempercepat pencarian metrik populer. Dengan prinsip ini, setiap explorer blockchain berfungsi, misalnya blockchain.info, yang dengan cepat mengembalikan data tentang hampir semua alamat, tentang transaksi apa pun, dll.

Jadi, ada beberapa pendekatan yang berbeda secara mendasar untuk implementasi interaksi dan sinkronisasi dompet digital dengan jaringan terdistribusi. Mari lihat mereka.

Sinkronisasi dompet mendekati dengan jaringan pembayaran


Ada tiga pendekatan utama. Yang pertama mengasumsikan bahwa dompet itu sendiri adalah simpul lengkap dari jaringan Bitcoin. Pendekatan kedua menggunakan yang disebut node tepercaya. Sebenarnya, ini adalah host yang aneh, tetapi pengguna dompet percaya padanya. Dan pendekatan ketiga melibatkan interaksi langsung dengan node jaringan lain, tetapi dalam versi yang ringan, menggunakan metodologi Verifikasi Pembayaran Sederhana (SPV). Teknik ini memungkinkan Anda untuk memverifikasi validitas transaksi dengan tingkat keandalan yang cukup tinggi, tetapi tidak resor untuk meluncurkan node jaringan penuh. Mari kita lihat lebih dekat masing-masing pendekatan sinkronisasi ini.

gambar

Bekerja dengan host yang lengkap


Dalam kasus pertama, semuanya cukup sederhana. Dompet Anda memiliki modul yang menyimpan seluruh blockchain, dan modul yang berkomunikasi dengan node lain dari jaringan Bitcoin. Oleh karena itu, Anda selalu dapat memeriksa transaksi masuk yang baru: apakah itu benar-benar mematuhi aturan protokol, apakah itu melakukan pengeluaran ganda, dll. Anda sepenuhnya melakukan kontrol atas verifikasi data.

Kelemahan dari pendekatan ini adalah kebutuhan untuk mengalokasikan sejumlah besar ruang disk untuk menyimpan blockchain yang lengkap, untuk menjaga agar node jaringan tetap beroperasi tanpa gangguan dan pembaruan perangkat lunak yang tepat waktu.

Metode ini digunakan oleh pengguna biasa yang secara teratur menerima dan mengirim pembayaran dalam jumlah besar, yang membutuhkan tingkat keandalan yang tinggi. Selain itu, semua layanan utama yang menyediakan kemungkinan penyimpanan bitcoin terpusat dan akses online ke dompet harus menggunakan pendekatan ini. Karena ada persyaratan tinggi untuk keamanan, serta untuk pekerjaan independen dengan Bitcoin.

Penting untuk dipahami bahwa pengguna penyimpanan bitcoin terpusat sepenuhnya bergantung pada layanan ini dan operasi yang benar dari node jaringan yang digunakan oleh layanan ini. Bahkan, jika koin disimpan pada layanan seperti itu, maka koin itu bukan milik pengguna tetapi milik layanan tersebut.

Perhatikan bahwa penggunaan pendekatan ini adalah salah satu yang paling sederhana dan paling dapat diandalkan, bahkan untuk pengguna rata-rata. Untuk melakukan ini, Anda hanya perlu mengambil kode sumber atau binari yang sudah jadi, misalnya, Bitcoin Core dan menjalankan perangkat lunak. Kelemahan signifikan hanya dapat dianggap persyaratan untuk komputer.

Bekerja dengan host tepercaya


Perbedaan antara pendekatan ini dan yang sebelumnya adalah pemisahan logika dompet dan logika verifikasi transaksi. Ada yang disebut simpul jaringan Bitcoin tepercaya. Secara kasar, ini adalah simpul jaringan Bitcoin lengkap yang paling umum, di mana pengguna mempercayakan kepadanya dengan verifikasi transaksi. Misalnya, itu bisa menjadi tuan rumah yang didukung temannya, dan pengguna dapat mempercayakan kepadanya untuk memeriksa transaksi mereka.

Sangat sering pendekatan ini digunakan dalam dompet digital seluler. Misalkan perusahaan yang mengembangkan dompet ponsel mendukung situs tepercaya dan berjanji akan memastikan verifikasi transaksi yang benar. Dalam hal ini, pengguna mempercayai perusahaan untuk pengembang dompet digital, pada kenyataannya, percaya pada janji-janji. Tetapi pada saat yang sama, perlu dipahami bahwa pengguna dapat secara independen menyimpan kunci pribadinya dan memastikan transaksi pada perangkatnya. Meskipun demikian, pengguna tidak memeriksa status konfirmasi transaksi, tetapi meminta simpul tepercaya.

Apa kelebihan dan kekurangan dari pendekatan ini? Seperti dalam kasus sebelumnya, meskipun secara tidak langsung, Anda dapat memengaruhi verifikasi transaksi di jaringan Bitcoin, karena pengguna masih memiliki simpul jaringan tepercaya. Keuntungannya adalah ia dibebaskan dari keharusan menyimpan salinan penuh blockchain pada perangkatnya. Namun demikian, ketergantungan pada simpul tepercaya adalah kelemahan, karena dalam kasus kegagalannya, pengguna tidak selalu dapat beralih ke simpul tepercaya lainnya. Karena verifikasi transaksi dilakukan pada server jarak jauh, Anda perlu memastikan keandalan saluran transfer data antara dompet dan server tempat verifikasi dilakukan. Dengan pendekatan ini, ancaman seperti "Manusia di tengah" muncul.

Ketika host tepercaya digunakan, kunci pribadi disimpan secara terpisah dari alamat dompet. Dalam hal ini, node itu sendiri tidak dapat secara andal mengetahui perubahan di mana alamat itu perlu dilacak. Ini berarti bahwa dompet digital harus dari waktu ke waktu menginformasikan simpul tepercaya dari daftar alamat yang menarik perhatiannya.

Kerugian dari pendekatan ini adalah ketergantungan dompet digital pada simpul tepercaya, khususnya dalam hal akses ke data yang relevan dari sistem pembayaran. Segera setelah pengguna kehilangan akses ke node tepercaya atau node menolak layanan, pengguna kehilangan koneksi dengan jaringan. Karenanya, pengguna kehilangan kemampuan untuk menerima dan mengirim pembayaran. Untuk mengurangi risiko kehilangan akses ke situs tepercaya, Anda dapat memilih beberapa situs tepercaya. Ini berarti bahwa dalam kondisi normal, pengguna menghubungkan dan bekerja dengan satu simpul tepercaya, tetapi jika akses hilang, dompet digital secara otomatis terhubung ke simpul tepercaya lainnya. Bahkan, dengan setiap koneksi, dompet secara acak memilih satu simpul dari daftar yang tepercaya.

Metode ini digunakan terutama oleh dompet ponsel, karena memungkinkan Anda untuk memverifikasi transaksi dan menyederhanakan pengoperasian aplikasi seluler. Contoh dompet seluler Bitcoin tersebut adalah Mycelium dan Coinomi. Lab Terdistribusi juga mengembangkan dan memelihara dompet yang disebut Bitxfy, di mana pendekatan ini diterapkan.

Bekerja dengan host SPV


Pendekatan umum ketiga untuk menyinkronkan dompet digital dengan jaringan Bitcoin adalah simpul jaringan yang ringan. Ini adalah Verifikasi Pembayaran Sederhana (SPV). Dalam pendekatan ini, Anda mungkin tidak perlu menjalankan node penuh atau memilih yang tepercaya. Diasumsikan bahwa dompet digital berkomunikasi secara langsung dengan node lain dari jaringan: pada kenyataannya, dompet ini memilih beberapa puluh node lengkap orang lain dan memelihara koneksi dengan mereka. Perbedaannya adalah bahwa node ringan berkomunikasi dengan node lain dengan persyaratan yang sama, bertukar pesan P2P dengan mereka, tetapi tidak menyimpan seluruh riwayat transaksi. Di sini, untuk memverifikasi transaksi yang masuk, teknik SPV digunakan. Bahkan, sebuah node ringan hanya melakukan sebagian dari pemeriksaan paling penting dari mereka yang melakukan node jaringan lengkap.

Bagaimana cara kerjanya dalam kasus ini? Alih-alih menerima blok, seperti simpul penuh, simpul SPV hanya menerima header blok, yang jauh lebih kecil (80 byte). Header berisi data yang diperlukan untuk memverifikasi konfirmasi transaksi tertentu di blok ini. Lebih khusus, di header blok ada bidang Merkle Root di mana nilai hash dari semua transaksi di blok dihitung, dihitung sesuai dengan skema Pohon Merkle.

gambar

Skema Merkle Tree memungkinkan Anda untuk memeriksa apakah nilai hash dari transaksi tertentu termasuk dalam Root Merkle, tanpa memiliki semua transaksi lain di dalam blok. Dengan demikian, memiliki transaksi, header blok, dan Cabang Merkle untuk transaksi ini (Anda dapat memintanya dari node penuh), dompet digital dapat memastikan bahwa transaksi tersebut memang dikonfirmasi dalam blok tertentu.

Mengapa ini tidak dapat dianggap sebagai verifikasi transaksi yang lengkap? Tentu saja, pengguna mendapatkan kebebasan dari node jaringan tertentu dan dapat langsung berkomunikasi dengan jaringan terdistribusi. Untuk melakukan ini, ia tidak perlu menyimpan seluruh blockchain. Tetapi kerugiannya adalah bahwa klien yang ringan tidak secara independen memverifikasi transaksi sepenuhnya, karena Anda tidak memiliki semua data yang diperlukan untuk ini (misalnya, koin yang tidak terpakai). Dia hanya memeriksa fakta validasi transaksi oleh validator - yaitu, dia memastikan bahwa transaksi ini sepenuhnya diperiksa oleh node lain dan pemilik mayoritas daya komputasi jaringan (penambang). Dalam hal ini, keandalan sekali lagi bergantung pada kepercayaan bahwa sebagian besar daya pemrosesan digunakan untuk operasi yang adil. Dengan kata lain, Anda tidak memverifikasi transaksi sendiri, tetapi percaya ini kepada mayoritas.

Fitur penggunaan dompet digital yang menerapkan pendekatan simpul SPV adalah kebutuhan untuk mempertahankan koneksi jaringan dengan sejumlah besar node jaringan lengkap yang independen. Ini diperlukan untuk meminimalkan kemungkinan simpul akan terhubung dan menerima data hanya dari simpul penyerang. Kemudian penyerang dapat memaksakan pada pengguna keadaan alternatif (palsu) dari riwayat transaksi. Akibatnya, korban dapat menerima pembayaran dari transaksi, yang menurut versi penyerang dikonfirmasi, meskipun sebenarnya tidak. Untuk meningkatkan peluang menerima data saat ini pada keadaan sebenarnya dari jaringan, pengguna harus memaksimalkan jumlah node independen untuk komunikasi. Semakin banyak, semakin kecil kemungkinan mereka semua bersekongkol melawan pengguna.

Seperti yang sudah Anda pahami, node SPV menuntut operasi yang stabil dari koneksi jaringan, namun mereka sering digunakan bahkan dalam aplikasi mobile. Pendekatan sinkronisasi dengan jaringan pembayaran ini cukup luas dan digunakan di sejumlah dompet Bitcoin populer. Diantaranya adalah Dompet Bitcoin, Electrum, serta Dompet Roti.

Pertanyaan yang Sering Diajukan


"Di mana saya dapat menemukan node lengkap yang dapat Anda percayai?"

Cukup sulit untuk menjawab simpul mana yang bisa Anda percayai. Ini adalah masalah pilihan pribadi. Ada layanan yang menyediakan informasi tepercaya, seperti Blockchain.info, jarang ada orang yang mempercayainya, terutama dalam jumlah besar. Seseorang harus sangat berhati-hati dalam memilih simpul tepercaya, karena merupakan perantara antara pengguna dan jaringan pembayaran. Setelah Blockchain.info mogok selama dua hari karena masalah dengan penyedia DNS, Dompet yang menggunakan Blockchain.info sebagai simpul tepercaya tidak dapat disinkronkan dengan jaringan Bitcoin dan setidaknya entah bagaimana berfungsi.

- Jaminan apa yang diberikan oleh tim dompet dan apa tanggung jawabnya?

Masalah ini lebih legal daripada teknis. Setiap perangkat lunak yang didistribusikan secara resmi memiliki "Ketentuan Penggunaan", yang menyatakan apa yang dapat Anda sajikan kepada pengembang jika ada masalah tertentu dalam perangkat lunak mereka. “Ketentuan Penggunaan” berbeda dalam aplikasi yang berbeda. Seperti biasa, pengguna menjawab pertanyaan apakah ia mempercayai pengembang atau tidak, sebelum mulai menggunakan produk mereka.

- Siapa yang memutuskan apakah simpul tepercaya?

Hanya pengguna yang memiliki dompet. Nilai situs tepercaya adalah sangat menyederhanakan dompet. Anda memilih simpul tertentu yang Anda percayai verifikasi transaksi. Dia menanggung sendiri seluruh beban melakukan operasi verifikasi, dan Anda mempercayai data status jaringan yang diteruskannya kepada Anda. Ini adalah masalah kepercayaan pribadi dan banyak lagi.

- Berapa banyak situs tepercaya?

Anda dapat memilih sejumlah node tepercaya untuk meminimalkan risiko kehilangan akses jaringan. Misalnya, tiga simpul. Jika Anda mengalami masalah dengan akses ke yang pertama, maka Anda terhubung ke yang kedua dan terus bekerja dengannya dengan cara yang persis sama.

- Apa yang akan terjadi pada koin jika server tempat mereka disimpan dihancurkan seluruhnya atau sebagian oleh gempa bumi?

Di sini perlu untuk mengatakan bukan tentang koin, tetapi tentang penyimpanan kunci yang digunakan untuk mengakses koin ini. Pertimbangkan dua opsi untuk satu situasi. Jika server yang memberikan akses ke jaringan Bitcoin dihancurkan. Bahwa itu tidak akan memengaruhi Anda dengan cara apa pun. Anda akan kehilangan akses sementara ke database yang didistribusikan, tetapi Anda masih memiliki kunci yang akan memungkinkan Anda untuk menghabiskan koin ini. Jika server tempat kunci Anda disimpan dihancurkan, sementara Anda tidak memiliki salinan cadangan kunci ini, maka Anda tidak akan dapat mengakses koin Anda.

- Apakah aman untuk meletakkan dompet, menaruh koin di atasnya, menulis frase awal di atas kertas dan menghapusnya?

Bahkan ya. Anda perlu menyimpan frase seed - ini adalah minimum yang cukup. Blockchain menyimpan informasi tentang koin mana yang disimpan di alamat mana. Anda perlu menyimpan kunci pribadi Anda untuk mengakses koin ini. Dalam kasus Anda, ini adalah frase awal.

- Apakah mungkin untuk menambahkan add-on pada blockchain secara lokal agar dapat menganalisis data pada blockchain?

Anda dapat menambahkan perangkat lunak apa pun yang akan menganalisis blockchain. Ini mungkin perangkat lunak yang ditulis oleh pengguna sendiri, atau mungkin ada solusi turnkey. Itu semua tergantung pada tujuan Anda. Jika Anda ingin mengoptimalkan kueri untuk mencari transaksi tertentu yang dikaitkan dengan alamat tertentu, seperti yang dilakukan oleh blockchain explorer, Anda dapat menggunakan perangkat lunak yang akan mengindeks blockchain dan menyimpan data tertentu. Contoh dari perangkat lunak tersebut adalah BitCore (didukung oleh BitPay). BitCore adalah open source dan Anda dapat menggunakannya bersama dengan situs lengkap Anda.

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


All Articles