413 / 736HEARN

Mike Hearn

Pengembang bitcoinj dan penulis usulan jaringan serta pembayaran

Mike Hearn ikut mengembangkan bitcoinj dan mengusulkan cara dompet berkomunikasi dengan node serta pedagang. Karyanya membantu menjelaskan apa yang terjadi di balik pembayaran bitcoin sehari-hari, dan mengapa berbagai pesan “sudah diterima” tidak berarti hal yang sama.

Mike Hearn adalah pengembang Bitcoin dan salah satu penulis beberapa BIP, yaitu dokumen yang menjelaskan usulan solusi teknis. Ia berkontribusi pada pustaka bitcoinj serta metode pemeriksaan koneksi, pemilihan transaksi yang relevan, dan komunikasi saat pembayaran. Kontribusinya lebih mudah dipahami dengan mengikuti perjalanan dari dompet di ponsel hingga toko yang menunggu pembayaran.

Pembuat dompet Bitcoin tidak perlu menulis seluruh kode komunikasinya dari awal. Ia bisa memakai pustaka, yaitu kumpulan fungsi siap pakai untuk membangun aplikasi. bitcoinj adalah salah satunya. Berkas AUTHORS mencantumkan Mike Hearn di antara banyak kontributor dan merujuk riwayat perubahan di Git. Dengan begitu, kontribusi tertentu dapat ditelusuri. Ini tidak berarti Hearn menulis semua fitur sendirian atau memimpin seluruh proyek saat ini. [1]

bitcoinj adalah pustaka Java untuk mengelola dompet serta mengirim dan menerima transaksi tanpa memasang Bitcoin Core secara lokal. Ponsel dapat memanfaatkan SPV, singkatan Simplified Payment Verification: metode ini menggunakan header blok dan transaksi yang relevan bagi dompet, bukan memeriksa setiap transaksi secara menyeluruh. Cara ini menghemat data dan sumber daya perangkat. Dokumentasi juga menjelaskan mode verifikasi penuh yang masih eksperimental. Keduanya berbeda; operasi yang lebih ringan bukanlah pemeriksaan seluruh aturan yang persis sama, hanya lebih cepat. [2]

Bayangkan laptop baru bangun dari mode tidur. Koneksi ke node lain mungkin tampak terbuka meskipun sudah tidak berfungsi. BIP 31 karya Hearn memungkinkan pengiriman ping dengan nonce, yang dalam konteks ini merupakan angka pengenal suatu permintaan. Node lain mengembalikan angka yang sama dalam pesan pong. Untuk versi protokol di atas 60000, permintaan dapat dipasangkan dengan jawaban dan waktu respons dapat diukur. Ini memeriksa komunikasi: jawaban saja tidak membuktikan kejujuran node atau keabsahan pembayaran. [3]

Mengapa ponsel harus mengunduh transaksi yang tidak berkaitan dengannya? BIP 37, karya Hearn dan Matt Corallo, menjelaskan filter Bloom: alat ringkas untuk memilih kemungkinan kecocokan. filterload menetapkan filter, filteradd menambahkan satu unsur, dan filterclear menghapus filter. Transaksi yang tidak relevan bisa ikut lolos; ini disebut positif palsu. Filter yang lebih tepat mengurangi lalu lintas data, tetapi dapat memudahkan node lain mengaitkan transaksi dengan alamat IP dompet. Jadi, penghematan data tidak otomatis melindungi privasi. [4]

Ponsel perlu mengetahui apakah transaksi yang diterima benar-benar termasuk dalam suatu blok. Pesan merkleblock dari BIP 37 menyediakan data untuk bukti Merkle: beberapa sidik jari data, atau hash, memungkinkan pemeriksaan hubungan transaksi dengan sidik jari gabungan di header blok. Seluruh blok tidak perlu diunduh. Namun, bukti tersebut tidak meniadakan kemungkinan bahwa node lain menyembunyikan transaksi lainnya. SPV juga tidak menggantikan pemeriksaan keabsahan secara penuh. Dokumentasi bitcoinj menjelaskan bahayanya jika penyerang mengendalikan semua koneksi dompet dan memilih informasi yang boleh dilihatnya. [4] [5]

Saat membeli sesuatu, Anda perlu mengetahui jumlah dan penerimanya. BIP 70, karya Gavin Andresen dan Hearn, memperkenalkan PaymentRequest untuk keperluan ini. Pesannya berisi rincian pembayaran: output yang menentukan ke mana transaksi mengalokasikan dana, jumlahnya, serta waktu kedaluwarsa permintaan jika dicantumkan. Sertifikat X.509 dapat mengautentikasi identitas pedagang, seperti pada server web. Namun, protokol juga mengizinkan pki_type none, yaitu permintaan tanpa autentikasi tersebut. Format permintaan pembayaran saja tidak membuktikan identitas toko yang telah disahkan. [6]

Jika permintaan mencantumkan server pembayaran, dompet mengirimkan pesan Payment ke sana setelah Anda menyetujui pembayaran. Jawaban PaymentACK mungkin menyatakan bahwa toko menerima pembayaran untuk diproses. Informasi ini berguna bagi pelanggan, tetapi tetap merupakan pernyataan server pedagang, bukan bukti konfirmasi dalam blok. Demikian pula, refund_to hanya menentukan ke mana toko dapat mengirim pengembalian dana; kolom itu tidak mengembalikan uang dengan sendirinya. Aplikasi harus membedakan pesan tentang pembayaran dari perpindahan dana yang sebenarnya. [6]

Panduan lama bisa memberi kesan bahwa prosedurnya berlaku di semua aplikasi. Registri menandai BIP 70 sebagai Deployed, yang berarti sudah diterapkan. Namun, catatan rilis Bitcoin Core 0.20.0 mencatat penghapusan seluruh dukungannya dari program itu. Tidak ada pertentangan: spesifikasi yang pernah digunakan tidak harus didukung setiap klien saat ini. Karya Hearn membantu menjelaskan perkembangan dompet; untuk penggunaan nyata, kemampuan program tertentu beserta versinya tetap harus diperiksa. [6] [7]

Untuk gambaran yang lebih utuh, baca entri ini bersama Jeff Garzik, Gloria Zhao, Merkle Tree. Entri ini juga dirujuk dari Jeff Garzik, Gloria Zhao.

DOC · 001bitcoinj — recorded contributorsDokumentasi DOC · 002bitcoinj — library and verification modesDokumentasi DOC · 003BIP 31 — Pong messageDokumentasi DOC · 004BIP 37 — connection Bloom filteringDokumentasi DOC · 005bitcoinj — security modelDokumentasi DOC · 006BIP 70 — Payment ProtocolDokumentasi DOC · 007Bitcoin Core 0.20.0 — BIP70 removalDokumentasi
Direvisi: Utamakan sumber · Bukan nasihat investasi