Pada artikel ini, kita akan melihat bagaimana multi-signature bekerja di protokol Bitcoin. Harap dicatat bahwa dalam mata uang digital dan cryptocurrency lainnya, mekanisme ini dapat diimplementasikan secara berbeda - tergantung pada model transaksi. Kami akan memberikan definisi multi-tanda tangan, kami akan menganalisis strukturnya secara skematis menggunakan contoh transaksi, mempertimbangkan opsi untuk penggunaannya dan tindakan pencegahan saat bekerja dengannya. Kami akan mencoba untuk mengungkapkan secara terbuka topik perbaikan yang diusulkan, P2SH, dan juga pada diagram kami akan menganalisis mekanisme untuk mengirim pembayaran ke alamat dengan tanda tangan banyak. Kami percaya bahwa materi yang disajikan akan menarik bagi pembaca yang aktivitas atau bidang minatnya terkait dengan mata uang digital.
Alamat multisignature
Alamat multisignature (alamat multisig, singkatnya) adalah alamat Bitcoin tempat beberapa pasang kunci ECDSA dilampirkan sekaligus. Setiap pasangan terdiri dari kunci pribadi dan publik. Pola kombinasi menurut mana tombol-tombol ini dapat digunakan mungkin berbeda. Selain itu, dimungkinkan untuk menetapkan kondisi di mana akan diperlukan untuk memberikan beberapa tanda tangan untuk menghabiskan koin dari alamat.
Transaksi Bitcoin yang menggunakan multi-signature
Secara lebih rinci dapat ditampilkan secara skematis. Untuk saat ini, cukup membayangkan secara kiasan bahwa alamat multisignature dibentuk dengan mem-hashing beberapa kunci publik bersamaan. Kami akan mempertimbangkan ini secara lebih rinci sedikit lebih jauh. Diagram menunjukkan transaksi yang dihabiskan dengan alamat multisignature.

Abu-abu menunjukkan area judul. Ini berisi dua bidang. Dua input ditunjukkan dengan warna biru dan dua output berwarna hijau. Entri pertama berisi bidang isian: nilai hash dari transaksi sebelumnya ditulis, yang menghabiskan data koin, nomor keluar, dll. Bidang skripSig berisi kunci publik dan tanda tangan, yang khas untuk transaksi normal.
Perhatikan input kedua dari transaksi. Bidang scriptSig berisi kombinasi data lainnya: dua kunci publik dan dua tanda tangan terdaftar. Mereka harus diverifikasi oleh kunci publik ini, masing-masing. Ini adalah input transaksi yang menghabiskan koin dengan alamat multisignature. Begitulah bagaimana bukti kepemilikan koin akan terlihat.
Opsi Kombinasi Kunci
Ada berbagai kombinasi tombol saat menggunakan alamat multisignature. Opsi yang paling banyak digunakan adalah 2-of-2, 2-of-3, dan 3-of-3. Opsi maksimum yang dimungkinkan adalah 15 dari 15.
Kombinasi paling sederhana adalah 2-of-2. Ini menyiratkan bahwa ada alamat multisignature di mana dua pasangan kunci terikat, pada kenyataannya, dua kunci publik di-hash dalam satu baris dan beberapa alamat diterima. Untuk menghabiskan koin dari alamat ini, Anda harus memberikan dua tanda tangan yang akan diverifikasi oleh dua kunci publik yang tersedia, gabungan dan hashing yang dalam urutan yang benar harus memberikan nilai alamat yang sama. Meringkas, ada dua kunci pra-instal dan Anda perlu dua tanda tangan, yang masing-masing akan diperiksa oleh kunci-kunci ini.
Penggunaan alamat multisignature 2-of-3 menyiratkan bahwa dua dari tiga kunci yang telah ditentukan harus digunakan untuk memverifikasi dua tanda tangan yang disajikan sebagai bukti kepemilikan koin. Dengan kata lain, untuk menghabiskan koin, Anda harus memberikan dua tanda tangan yang akan diperiksa oleh dua kunci publik dari tiga yang telah ditentukan.
Kombinasi 3-dari-3, seperti yang sudah Anda pahami, membutuhkan tiga tanda tangan, yang akan diperiksa oleh tiga kunci yang sudah dipasang sebelumnya. Maksimum dalam hal jumlah tanda tangan yang diperlukan dan kunci publik akan menjadi skema 15-dari-15.
Mari kita lihat opsi untuk menggunakan kombinasi ini.
2-dari-2
Bayangkan bahwa seorang suami dan istri ingin mempertahankan anggaran bersama.

Mereka setuju bahwa hanya dengan persetujuan masing-masing dari mereka akan dana dari anggaran dihabiskan untuk kebutuhan tertentu. Dengan Bitcoin, ini dapat diimplementasikan dengan cukup sederhana. Mereka membuat alamat multisignature sesuai dengan skema ini, di mana istri mengontrol satu kunci dan suami mengontrol yang kedua. Kemudian keluarga akan menerima semua penghasilan di alamat-alamat tersebut, dan uang hanya dapat dihabiskan dengan kesepakatan bersama.
Memprediksi pertanyaan Anda tentang skenario ketika suami dan istri tidak setuju, bayangkan bahwa istri menganggap perlu untuk membeli mesin cuci, karena dia lelah mencuci dengan tangannya, dan suami percaya bahwa ini bukan kerja keras, dan akan lebih bijaksana untuk menghabiskan semua koin untuk model PlayStation terbaru dan habiskan waktu luang Anda dengan cara ini. Istri tersinggung pada suaminya dan makan selembar kertas dengan kunci pribadinya, membuat pengeluaran dari alamat ini tidak mungkin sama sekali.
Bagaimana menghindari situasi seperti itu dan melindungi koin dari kehilangan koin yang terakhir?
Dimungkinkan untuk membuat transaksi yang akan menghabiskan semua dana dari alamat yang diinginkan, meskipun faktanya jumlah tersebut tidak diketahui sebelumnya. Input bukan jumlah, tetapi tautan ke transaksi, dari mana koin ini dapat digunakan. Ada yang namanya
tipe hash , yang merupakan cara untuk menutup dengan tanda tangan transaksi. Ini memungkinkan Anda untuk membuat tanda tangan terlebih dahulu, dan beberapa data transaksi, seperti input, dapat diganti nanti. Dengan demikian, Anda dapat membuat transaksi yang akan menghabiskan koin dari transaksi yang belum ada, dan menerapkannya nanti, yaitu saat dibutuhkan.
Selain itu, Anda dapat memberikan batasan LockTime pada transaksi ini. Ini memungkinkan Anda untuk tidak segera mengkonfirmasi transaksi, tetapi untuk menunda beberapa waktu. Jadi, suami dan istri segera setelah membuat alamat multisignature, bahkan sebelum menerima pembayaran apa pun, dapat membuat dua transaksi LockTime di mana semua koin masa depan akan dialihkan ke alamat biasa suami dan istri, yang mereka kontrol secara independen. Pada saat yang sama, transaksi akan ditangguhkan dan hanya dapat dikonfirmasi, misalnya, setelah dua bulan. Transaksi-transaksi ini dapat dicetak di atas kertas dan disimpan secara terpisah dalam brankas. Jika suatu situasi muncul ketika koin berada di saldo alamat multisignature, dan kunci hilang (satu atau keduanya), maka koin menjadi beku. Tetapi ada transaksi LockTime. Siapa pun yang mempublikasikan transaksi semacam itu akan dapat menarik dana ini ke alamat eksternal yang valid. Koin akan disimpan. Ini adalah contoh yang disederhanakan, tetapi mekanisme yang lebih kompleks dimungkinkan.
2 dari 3
Misalkan ada sekelompok orang yang memiliki anggaran bersama.

Mereka membuat alamat multisignature di mana ada tiga kunci, tetapi dua tanda tangan cukup untuk menandatangani transaksi. Dengan persetujuan peserta yang merupakan mayoritas kelompok, dana ini dapat digunakan. Dengan kata lain, setiap dua dari tiga peserta dapat menghabiskan koin. Untuk melakukan ini, cukup dengan menyebar transaksi ke jaringan.
Contoh layanan dompet
Ada cara yang lebih menarik untuk menggunakan kombinasi 2-dari-3 dan digunakan dalam apa yang disebut layanan dompet. Layanan dompet dalam konteks ini tidak boleh disamakan dengan dompet Bitcoin biasa, yang dikendalikan oleh pengguna secara independen. Layanan ini tidak menyediakan penyimpanan penuh untuk koin dan tidak memilikinya, tetapi hanya menyediakan layanan untuk pekerjaan yang mudah.
Jika Anda membayangkan situasi ini secara skematis, maka satu kunci milik langsung ke layanan, yang kedua dihasilkan hanya oleh pengguna (dan hanya dia yang tahu), kunci ketiga dihasilkan dan disimpan oleh pengguna juga, tetapi secara terpisah. Setelah itu, kunci publik yang terkait dengan kunci pribadi ini dihitung dan alamat multisignature dikompilasi. Koin tiba di sana dan sekarang kondisi pengeluaran terbatas.

Bayangkan kita berurusan dengan layanan web tertentu dan Anda dapat memasukkan sumber dayanya melalui browser. Peramban mengunduh kode dompet Bitcoin, yang pada alamat ini menerima daftar koin yang tidak dihabiskan, menghitung saldo mereka dan siap untuk dibelanjakan. Jika pengguna ingin menghabiskan koin, maka ia melakukan transaksi langsung di browser dan menandatanganinya dengan tanda tangan (salah satu yang diperlukan).
Perhatikan bahwa pengguna dapat menerima kunci pribadi baik dari kata sandinya, atau kunci tersebut dapat dibuat secara acak, dienkripsi dengan kata sandi pengguna dan disimpan di layanan. Kemudian pengguna mengirimkan permintaan ke layanan, menerima sebuah wadah dengan kunci terenkripsi, mendekripsinya dengan kata sandi, dan sudah memiliki akses ke kunci pribadinya.
Ketika pengguna menandatangani transaksi, itu dikirim ke sisi layanan sehingga menempatkan tanda tangan yang diperlukan kedua dan mengirim transaksi. Layanan ini mengklarifikasi fakta perlunya menandatangani transaksi melalui saluran otentikasi kedua, yaitu, melalui saluran berbeda yang ditetapkan sebelumnya, yang dapat berupa panggilan ke telepon seluler, SMS, pesan email, dan metode komunikasi alternatif lainnya (hingga kunjungan pribadi, jika tingkat keamanan membutuhkannya) . Ketika layanan telah memastikan bahwa pengguna terdaftar benar-benar memulai permintaan penandatanganan transaksi, itu menempatkan tanda tangan yang hilang menggunakan kuncinya. Setelah itu, transaksi menjadi sah dan dapat didistribusikan ke jaringan untuk konfirmasi.
Kunci ketiga digunakan ketika layanan ditolak. Perangkat lunak menghasilkan kunci ini dan menawarkan untuk menyimpannya dengan cara yang nyaman bagi Anda. Pengguna biasanya menyimpannya di tempat yang aman. Jika layanan ditolak, maka pengguna dapat menandatangani transaksi dengan kunci mereka sendiri (kedua dan ketiga). Jika kunci kedua disimpan di sisi layanan, maka wadah yang dilindungi dengan kunci ini akan dikirim kepada pengguna terlebih dahulu melalui saluran data alternatif, misalnya, melalui email. Pengguna mendekripsi wadah dengan kunci menggunakan kata sandinya.
Pengguna menerima dua kunci pribadi yang diperlukan dan memasukkan ke dalam perangkat lunak khusus yang disediakan layanan sebelumnya. Selanjutnya, perangkat lunak ini berjalan secara mandiri di komputer pengguna, tanpa partisipasi layanan. Perlu dicatat bahwa perangkat lunak ini harus digunakan hanya dalam kasus-kasus ekstrim, ketika suatu layanan ditolak layanan (mis. Itu diretas, rusak atau tidak ada lagi). Kemudian pengguna menandatangani transaksi dengan kuncinya dan mentransfer koin jika perlu.
Manfaat 2-dari-3 Layanan Dompet
Kami akan membahas keunggulan layanan Dompet tersebut secara lebih rinci. Ini adalah cara aman untuk menyimpan, karena layanan tidak memiliki semua set kunci yang diperlukan - ia hanya memiliki satu bagian, yang tidak cukup untuk mengambil kepemilikan dana. Selain itu, baik layanan itu sendiri maupun peretas yang dapat memecahkannya tidak memiliki akses ke dana.
Kenyamanan dari pendekatan ini adalah bahwa pengguna tidak harus memiliki akses yang aman ke layanan ini. Itu dapat memiliki perangkat biasa yang dapat terinfeksi virus atau dikendalikan oleh scammers, dan data dapat dikompromikan atau diganti. Tetapi itu tidak cukup bagi penyerang untuk hanya memiliki perangkat ini, karena hanya satu dari dua tanda tangan dapat diperoleh darinya.
Keuntungan lain adalah bahwa jika layanan menolak layanan, pengguna tidak kehilangan akses ke koinnya. Ini hanya beberapa skema yang mungkin untuk menggunakan alamat multisignature, yang cukup untuk berkencan.
Tindakan Pencegahan Multi-Tanda Tangan
Dan sekarang ada baiknya berbicara tentang tindakan pencegahan tentang multi-signature. Dalam hal 2-dari-2, Anda perlu membuat transaksi LockTime yang dapat mentransfer dana yang diblokir ke alamat tertentu. Ini benar ketika kehilangan kunci terjadi.
Jika Anda menggunakan alamat multisignature 2-of-3, sangat penting bahwa Anda menyimpan kunci di tempat yang aman. Jika kehilangan salah satu dari tiga kunci, Anda harus segera mentransfer dana dan tidak menunggu sampai saat 2 dari 3 kunci yang diperlukan hilang.
Cara kerja Bitcoin Script (misalnya)
Untuk memahami secara lebih rinci bagaimana multi-signature bekerja, kita perlu berbicara sedikit tentang cara kerja Bitcoin Script: bagaimana aturan untuk pengeluaran koin diatur, bagaimana cara memuaskannya, apa operasi untuk menggambarkan aturan, apa itu Bitcoin Script dan bagaimana cara mengeksekusi.
Pertimbangkan contoh kasus sederhana pengeluaran koin, di mana ada alamat reguler yang terkait dengan hash satu kunci publik, skrip yang sesuai yang menetapkan kondisi untuk pengeluaran, dan skrip yang memenuhi kondisi ini.

Dalam diagram di sebelah kiri kita melihat tumpukan data, dan di sebelah kanan skrip itu sendiri. Dua bagian pertama dari baris skrip adalah tanda tangan dan kunci publik, yang disebut skrip pembuka kunci, yaitu skrip yang ditunjukkan dalam input transaksi yang menghabiskan koin. Ini diikuti oleh kumpulan data yang ditunjukkan dalam output transaksi - ini disebut script penguncian. Dengan kata lain, rangkaian dua skrip disajikan di sini: skrip yang membuka koin, dan skrip yang mengunci koin. Dalam kasus ketika transaksi akan divalidasi oleh node jaringan, kedua skrip ini digabungkan untuk memeriksa kondisi pengeluaran koin. Jadi, skrip pembuka kunci didahulukan, diikuti oleh skrip penguncian.
Setelah ini adalah eksekusi berurutan dari satu set lengkap operan dan data. Titik eksekusi berjalan berurutan untuk setiap operan dan setiap bagian data. Jika titik eksekusi menyentuh sepotong data, maka ia didorong ke tumpukan. Seperti yang kita lihat dalam diagram, kursor eksekusi skrip di bagian atas menunjukkan data tanda tangan, yang kemudian didorong ke tumpukan.
Selanjutnya, kursor eksekusi menunjuk ke kunci publik - itu juga didorong ke stack.
Langkah ketiga adalah melakukan operasi duplikasi, yang berarti menyalin bagian atas tumpukan dan meletakkan data ini lagi di tumpukan.
Setelah itu, hashing dilakukan menggunakan fungsi hash Hash-160. Ini berarti bahwa bagian atas tumpukan di-hash terlebih dahulu oleh algoritma SHA-2 pada panjang 256 bit, dan kemudian oleh fungsi RIPEMD-160 pada panjang 160 bit. Operasi persis sama seperti ketika hashing kunci publik dan mendapatkan alamat. Padahal, ini dia.

Kami memiliki tumpukan, tanda tangan, kunci publik, dan nilai hash kunci publik. Kursor eksekusi skrip menunjuk ke alamat yang ditentukan dalam output transaksi, yaitu nilai hash dari kunci publik, yang ditunjukkan ketika koin dikirim ke sana. Sepotong data ini juga masuk stack.
Operasi selanjutnya sama dengan verifikasi.

Dua elemen teratas tumpukan dibandingkan. Jika mereka benar-benar byte yang sama, maka data ini dihapus dari tumpukan dan diyakini bahwa pemeriksaan berhasil. Setelah itu, tanda tangan dan kunci publik tetap ada di tumpukan. Dengan demikian, operasi tanda tangan cek mengambil dua operan ini dan memverifikasi tanda tangan dengan kunci publik. Jika tanda tangan benar sehubungan dengan transaksi, yang saat ini sedang menjalani verifikasi, karena tanda tangan tersebut mencakup bagian dari transaksi, oleh karena itu, Anda perlu mengambil nilai hash dari bidang-bidang tertentu dari transaksi ini. Ini diatur oleh byte terpisah dari struktur tipe hash, yaitu nilai hash diambil dan dimasukkan ke input verifikasi tanda tangan bersama dengan tanda tangan itu sendiri dan kunci publik. Jika pemeriksaan terjadi dengan benar, maka hasil pemeriksaan itu benar, nilai ini didorong ke tumpukan. Ini melengkapi pelaksanaan skrip. Data diteruskan ke fungsi panggilan dan diperiksa di sana. Jika tumpukan benar, maka verifikasi input transaksi ini benar. Jika semua input transaksi telah diverifikasi dengan benar, maka seluruh transaksi dianggap benar.
Kami mempelajari cara kerja Bitcoin Script untuk memverifikasi input dan output sederhana dari suatu transaksi. Sekarang kita akan berbicara tentang bagaimana multisignature diatur dan cara kerjanya ketika menggunakan Bitcoin Script.
P2SH
BIP16 pernah diusulkan, yang mendefinisikan konsep baru dalam protokol Bitcoin - yang disebut hash bayar untuk skrip (P2SH). Ini adalah kesempatan untuk menetapkan aturan untuk membelanjakan koin bukan dalam skrip terbuka, tempat Anda menulis operan dan beberapa data berturut-turut, yang kemudian dieksekusi dengan cara yang telah kami periksa, tetapi sebagai nilai hash dari skrip yang Anda butuhkan, yaitu, checksum dari operan ini. Ini memungkinkan jalan keluar transaksi untuk menetapkan kondisi besar dan rumit untuk pengeluaran koin, tetapi jalan keluar itu sendiri tetap pendek.
Untuk menghabiskan koin ini dalam kondisi seperti itu, pada input transaksi Anda harus menentukan data yang memenuhi skrip ini, dan seluruh skrip untuk membuktikan bahwa Anda tahu kondisi apa yang ditetapkan saat mengirim koin, sehingga nilai hash skrip sumber cocok dengan alamat yang koin dikirim. Dengan kata lain, buktikan bahwa Anda mengetahui kondisinya dan memenuhi persyaratan ini.
Proposal ini untuk meningkatkan Bitcoin diterima pada 3 Januari 2012. Bahkan, hari ulang tahun Bitcoin. Sekarang secara aktif digunakan untuk mengimplementasikan alamat multisignature.
Bagaimana cara kerja P2SH?
Mari kita lihat contoh cara kerjanya. Untuk membangun transaksi, kita perlu memiliki pemahaman konsep seperti Redeem Script, Locking Script, dan Unlocking Script.
Tebus Skrip berisi kunci publik yang terikat dengan alamat multisignature. Dalam hal ini, kami sedang mempertimbangkan kombinasi tombol "2-dari-5". Pertama datang nilai 2, yaitu, kami menunjukkan bahwa 2 tanda tangan akan diperlukan, yang akan diverifikasi oleh kunci publik yang sesuai. Setelah itu, kunci publik mengikuti, dalam kasus kami ada 5. Selanjutnya, kami menunjukkan nilai 5, karena kami menetapkan 5 kunci publik, dan ketika data dibaca dalam urutan terbalik, nilai ini akan diperlukan untuk memahami berapa banyak kunci yang perlu Anda baca. Setelah ini, tanda operasi multisignature diindikasikan.
Locking Script - skrip yang ditunjukkan dalam output transaksi yang membayar untuk alamat multisignature.
Di sini operasi untuk mendapatkan nilai hash akan dilakukan, yang dengannya kita telah berkenalan secara terperinci. Selanjutnya adalah nilai hash Redeem Script, yang membutuhkan 20 byte. Setelah itu, operasi dilakukan untuk memverifikasi bahwa data cocok dengan nilai hash yang sebenarnya.Unlocking Script adalah gabungan skrip pada input transaksi dengan skrip pada output transaksi yang dibayarkan ke alamat ini. Ada dua tanda tangan yang diperlukan untuk pengeluaran koin, dan Script Penukaran penuh, yang nantinya akan di hash dan diperiksa untuk kepatuhan dengan alamat pengiriman koin tersebut. Setelah itu, skrip akan dieksekusi secara keseluruhan, termasuk untuk memeriksa multi-signature.Penting bahwa ada batasan ukuran maksimum untuk masing-masing skrip yang terdaftar dan ini adalah 520 byte. Angka ini dihitung atas dasar bahwa Unlocking Script dapat memuat maksimal 15 tanda tangan dan 15 kunci publik yang sesuai, serta beberapa operasi untuk memverifikasi nilai-nilai ini. Ini adalah bagaimana angka tertentu diperoleh, yang, ketika dibulatkan, menghasilkan 520 byte. Harus dikatakan bahwa angka ini diperoleh dengan harapan bahwa alamat multisignature dari tipe "15 dari 15" adalah batas yang cukup masuk akal untuk penggunaan praktis. Tebus Skrip saat menggunakan sejumlah besar tanda tangan menjadi sangat besar volumenya. Pengguna yang menggunakan alamat multisignature atau alamat P2SH lainnya, saat mengeluarkan koin dari mereka, memiliki transaksi yang sangat besar. Artinyabahwa untuk mengkonfirmasi transaksinya dia harus membayar komisi besar.Manfaat P2SH
Kami akan secara terpisah mempertimbangkan keuntungan P2SH. Yang pertama adalah bahwa alamat tersebut dapat dikodekan dalam bentuk yang sudah dikenal menggunakan Base58, di mana panjangnya adalah 34 karakter. Sesuai dengan BIP13, yang menetapkan aturan untuk mengatur versi byte untuk alamat Bitcoin yang dikodekan oleh Base58Check, alamat akan dimulai dengan triple, yaitu, byte versi spesifik dimasukkan di sana.Sebagai contoh, Anda dapat melihat alamat P2SH.3P14159f73E4gFr7JterCCQh9QjiTjiZrGIni mungkin bukan alamat multisignature. Tebus Skrip tidak hanya dapat menggambarkan alamat multisignature, tetapi juga aturan kompleks lainnya untuk menghabiskan koin.Kami menambahkan bahwa ini bukan satu-satunya cara untuk mengatur multi-signature dalam Bitcoin. Anda tidak perlu menggunakan P2SH, tetapi dalam output yang akan membayar untuk alamat multisignature, bukan nilai hash dari skrip, tetapi skrip itu sendiri, yaitu, daftar semua kunci publik secara langsung dalam output dan mengatur operasi untuk multisignature. Namun, ketika Anda mengirim koin ke alamat ini, Anda segera mengungkapkan kunci publik, karena mereka akan berada di domain publik dan pada saat itu koin akan disimpan pada mereka.Dan kelemahan lainnya adalah bahwa pengirim koin di alamat multisignature memiliki transaksi besar, di mana Anda harus membayar komisi besar. Tidak mungkin pengirim ingin membayar lebih untuk fakta bahwa penerima ingin menggunakan multisignature. P2SH memungkinkan Anda mentransfer biaya komisi kepada penerima. Jika penerima ingin menerima koin di alamat multisignature, maka ia sendiri akan membayar untuk transaksi besar, yang merupakan pendekatan yang lebih adil.Kami menambahkan bahwa P2SH memungkinkan Anda untuk menerapkan berbagai kombinasi multisignature (2-of-2, 2-of-3, dan lainnya).Pertimbangkan secara skematis pengiriman ke alamat multisignature.
Misalkan Alice ingin membayar Bob, yang hanya menggunakan alamat multisignature. Untuk melakukan ini, Bob secara lokal di komputernya (ngomong-ngomong, mungkin ada semacam organisasi alih-alih Bob) menghasilkan beberapa kunci pribadi, menerima dari mereka kunci publik yang sesuai, yang digabungkan dengan cara tertentu. Paling sering, kunci publik pertama kali dikodekan dengan Base58Check, dan kemudian mereka diurutkan berdasarkan abjad, dan kemudian digabungkan.Pendekatan ini terbayar ketika perhitungan ulang kunci publik dari kunci pribadi diperlukan. Mereka harus disatukan dalam urutan yang persis sama, karena langkah selanjutnya adalah membuat Naskah Penebusan dan memotongnya. Jika kunci yang sama persis masuk ke dalam Redeem Script, tetapi dalam urutan yang berbeda, kita akan mendapatkan nilai hash dan alamat yang berbeda. Ini akan menimbulkan kesalahpahaman tertentu. Oleh karena itu, sebelum penggabungan, kunci publik harus disortir menurut beberapa aturan. Dan paling sering mereka menggunakan pengurutan alfabet dalam sistem angka Base58.Jadi Bob menghitung nilai hash dari Redeem Script. Dia dapat mewakilinya sebagai 20 byte dan mengirimkannya ke Alice, mengatakan bahwa ini adalah alamat multisignature menggunakan P2SH. Namun, Bob dapat menyandikannya dengan versi byte, seperti alamat biasa, dan kirimkan saja ke Alice. Alice akan mengerti dari byte versi bahwa ini adalah alamat multisignature, menyusun transaksi, dan mengisi outputnya sesuai sehingga Bob menerima koinnya. Itu kemudian menyebarkan transaksi ke jaringan. Mereka menunggu konfirmasi dan Bob menerima pembayaran dari Alice. Pengganti Bob, misalnya, menyediakan layanan atau transfer barang.Ada saatnya Bob ingin menghabiskan koin-koin ini. Harus dipahami bahwa Naskah Penebus lengkap tidak diungkapkan kepada publik saat koin berada di alamat multisignature-nya. Dan bahkan Alice tidak melihat dengan tepat kunci publik mana yang digunakan Bob, berapa banyak yang ada di sana, dll. Dia tidak tahu sama sekali dengan aturan apa yang dibuat oleh alamat P2SH ini, alamat multisignature atau tidak, dll. Dengan demikian, serangan terhadap elektronik Tanda tangan digital (pada kurva elips) masih tidak memungkinkan.Katakanlah Bob ingin mengirim pembayaran ke Hawa.
Dia menghasilkan alamat baru dan memberikannya kepada Bob. Dia menciptakan transaksi kosong di input yang dia menunjukkan transaksi di mana dia menerima koin dari Alice, dan outputnya adalah alamat Eva. Sekarang dia harus memberikan bukti kepemilikan koin yang dia habiskan. Untuk melakukan ini, ia mengambil dua kunci privatnya (kami sebutkan di atas bahwa alamat multisignature-nya mengasumsikan opsi "2-of-5"), dari mana ia menghitung dua tanda tangan untuk transaksi ini. Selanjutnya, ia mengambil Script Penukaran penuh dan menambahkannya ke input transaksi.Harap perhatikan bahwa Skrip Penebus ini harus disimpan sepenuhnya di komputer Bob atau dia harus mengingat urutan penggunaan kunci publik untuk membuat skrip ini. Jika dia menerapkan aturan penyortiran tertentu, maka dia harus mengingatnya. Dia juga harus ingat bahwa alamat multisignature terikat dengan kunci privat tertentu. Tanpa sepengetahuan ini, Bob tidak akan tahu kunci pribadinya untuk dioperasi dan dalam urutan apa mereka harus di hash untuk mendapatkan alamat yang diinginkan.Jadi, dia memiliki dua tanda tangan dan Skrip Penukaran penuh. Transaksi tersebut dianggap benar dan Bob mendistribusikannya ke jaringan, dan kemudian menunggu konfirmasi. Ini adalah hal utama tentang pengeluaran dengan alamat multisignature.Pertanyaan
Sekarang kita sampai pada pertanyaan Anda.- Apakah mungkin untuk menjalankan dompet yang sama secara bersamaan di tiga komputer yang berbeda dan memulai sinkronisasi?Kemungkinan besar, kita berbicara tentang beberapa jenis simpul jaringan: baik simpul SPV, atau simpul penuh. Beberapa komputer berbeda dan dompet yang sama digunakan. Dan dompet berarti kunci pribadi. Ada beberapa node lengkap yang mengimplementasikan fungsionalitas dompet. Pada node-node ini, kami memasukkan kunci privat yang sama dan memulai sinkronisasi. Kemungkinan besar, dengan sinkronisasi penuh dengan jaringan, kita akan melihat saldo yang sama pada setiap dompet yang menggunakan simpulnya sendiri. Jika Anda melihat perubahan pada satu node, maka setelah sinkronisasi dengan jaringan Anda akan melihat perubahan yang sama persis pada semua node lainnya. Transaksi tidak dirahasiakan, itu didistribusikan ke semua node yang memverifikasi dan menampilkan perubahan yang sesuai, jika menyangkut alamat mereka. Bahkan, ya, Anda dapat menggunakan tombol yang sama pada beberapa node,tetapi semua transaksi juga akan disinkronkan secara otomatis. Bitcoin tentu tidak akan berlipat ganda dari ini dan, apalagi, tidak akan berlipat tiga.— P2SH Segregated Witness?Segregated Witness adalah struktur transaksi di mana bukti kepemilikan koin ditransfer ke struktur terpisah, mereka tidak jatuh ke dalam blockchain, tetapi ketika memvalidasi transaksi, mereka didistribusikan bersama, yaitu, semua validator memverifikasi kebenaran transaksi dalam struktur terpisah dengan bukti. Setelah transaksi dikonfirmasi, bukti tidak disimpan, karena itu tidak masuk akal. Ada juga keuntungan dalam membangun rantai transaksi seperti itu di mana koin tertentu tanpa konfirmasi aktual dalam transaksi saat ini sudah dihabiskan di koin berikutnya yang dibangun atas dasar, tetapi mereka tidak didistribusikan ke jaringan. Dengan demikian, rantai transaksi terbentuk yang tidak mengungkapkan bukti kepemilikan koin. Ini memfasilitasi transfer data dan menambah privasi. Jenis alamat yang berbeda digunakan untuk Saksi Terpisah,ini berisi operan yang sedikit berbeda. Dimungkinkan untuk mengirim koin yang disimpan di alamat biasa, termasuk alamat P2SH, ke alamat P2SH Saksi.- Apakah alamat dari tiga teratas dimulai di Jaringan Pencahayaan?BIP13 mendefinisikan aturan pemilihan byte versi untuk alamat Bitcoin di jaringan pengujian, mata uang lainnya, dll. Ya, Lighting Network menggunakan alamat multisignature, yang juga menggunakan metode P2SH untuk menetapkan kondisi.- Mengapa tidak mungkin mempersonalisasikan dompet, yaitu, mengikatnya dengan orang tertentu?Bitcoin sebagai protokol sistem pembayaran tidak memerlukan identifikasi identitas dompet, karena Bitcoin berfungsi sesuai dengan hukum matematika, dan matematika tidak memungkinkan untuk menggambarkan seseorang sebagai pribadi. Selain itu, ini bukan prasyarat untuk memeriksa transaksi. Ada cukup tanda tangan digital. Siapa pun yang dapat membuat tanda tangan seperti itu adalah pemiliknya - ini tidak berlaku untuk protokol Bitcoin. Oleh karena itu, tanda tangan dapat dimiliki oleh seseorang, sekelompok orang, robot, dll.Adapun untuk personalisasi, jika Anda membuat koneksi antara alamat tertentu dan orang tertentu, maka Anda melanggar privasi dan dapat mendanonimisasi bagian dari jaringan dengan tingkat probabilitas tertentu. Secara umum, database terbuka, tetapi tidak ada data identitas di dalamnya.— , 70-80%, ?Ditulis dengan baik bahwa ini adalah mata uang, bukan mata uang kripto, karena mata uang kripto bekerja dengan prinsip yang sama dengan Bitcoin, yaitu, semua proses terdesentralisasi secara maksimal: emisi, verifikasi transaksi, penyimpanan data, penerimaan perubahan, dll. Tetapi ada mata uang seperti itu , kami akan menyebutnya mata uang digital, di mana tidak semua proses yang tercantum terdesentralisasi. Salah satu opsi mungkin merupakan masalah terpusat, yaitu, tidak ada penambangan, penambangan, yaitu, tidak ada solusi untuk masalah yang kompleks. Menurut prinsip ini, Ripple, Stellar, mata uang digital NXT, Cardano berfungsi. Prinsip lain untuk mendistribusikan koin di antara pengguna diterapkan di sana, misalnya, melalui ICO, bukti identitas, dll. Karena kenyataan bahwa tidak semua proses dapat didesentralisasi dan independen, Anda tidak dapat menyebutkan mata uang digital apa puncryptocurrency . Selain itu, pertanyaan tentang kepercayaan pada mata uang tertentu bersifat pribadi. Anda memutuskan jumlah kepercayaan ini. Penting untuk mempertimbangkan tujuan penggunaan mata uang, serta risiko dan batasannya.