Menguraikan Script Bitcoin: Bahasa Pemrograman Di Balik Uang Digital

Pengantar

Bitcoin sering disebut sebagai uang yang dapat diprogram. Sifat digitalnya memberikan pengguna fleksibilitas yang lebih dalam mendefinisikan syarat untuk menggunakan dana mereka.

Ketika membahas Bitcoin, percakapan biasanya berputar di sekitar dompet dan koin. Namun, konseptualisasi yang lebih tepat adalah dengan memikirkan dompet sebagai kunci, koin sebagai cek, dan blockchain sebagai brankas yang aman. Setiap brankas memiliki pembukaan sempit melalui mana cek dapat dimasukkan atau isinya diperiksa. Akses ke brankas itu sendiri tetap terbatas bagi mereka yang memiliki kunci yang tepat.

Ketika pemegang kunci ingin mentransfer dana, mereka membuka brankas. Proses ini melibatkan pembuatan cek baru yang merujuk pada yang asli ( yang dinyatakan tidak berlaku ) dan mengamankannya dalam brankas yang hanya dapat diakses oleh penerima yang dimaksud. Penerima baru mengikuti langkah-langkah yang sama saat menghabiskan dana ini.

Artikel ini membahas Bitcoin Script - bahasa pemrograman yang digunakan oleh node di jaringan Bitcoin untuk mengendalikan mekanisme penguncian dan pembukaan kunci dari brankas digital ini.

Mekanika Transaksi Bitcoin

Mengikuti analogi kami, setiap transaksi Bitcoin terdiri dari dua komponen penting: sebuah kunci ( untuk akses brankas ) dan sebuah kunci. Kunci tersebut membuka brankas yang berisi cek yang ingin Anda transfer, sementara cek baru ditempatkan di brankas lain yang diamankan dengan kunci yang berbeda. Mengakses dana dari brankas baru ini memerlukan kunci spesifik lainnya.

Sistem ini menawarkan fleksibilitas yang luar biasa. Jaringan mendukung berbagai jenis kunci - beberapa brankas mungkin memerlukan beberapa kunci, yang lain mungkin meminta bukti otoritas untuk akses. Pengguna dapat menyesuaikan berbagai kondisi sesuai dengan kebutuhan spesifik mereka.

Dalam istilah teknis, kunci disebut sebagai scriptSig, sementara kunci penguncinya disebut scriptPubKey. Setelah diperiksa lebih dekat, komponen-komponen ini terungkap sebagai kombinasi potongan data dan blok kode yang bersama-sama membentuk program yang kompak.

Selama eksekusi transaksi, kombinasi ini menyebar ke seluruh jaringan. Setiap node penerima memverifikasi keabsahan transaksi. Verifikasi yang gagal mengakibatkan dana tidak dapat diakses.

Cek (coins) secara teknis dikenal sebagai unspent transaction outputs (UTXOs). Setiap pengguna yang memiliki kunci yang tepat dapat menggunakan dana ini. Secara khusus, scriptSig berfungsi sebagai kunci sementara scriptPubKey berfungsi sebagai kunci pengaman.

Jika dompet Anda mengandung UTXO, kemungkinan besar mereka membawa syarat yang menyatakan bahwa hanya individu yang dapat membuktikan kepemilikan kunci publik tertentu yang dapat membuka dana terkait. Untuk membuka kunci tersebut, Anda harus menyediakan scriptSig yang ditandatangani secara digital dengan kunci pribadi yang sesuai dengan kunci publik yang ditentukan dalam scriptPubKey.

Dasar-Dasar Bitcoin Stack

Skrip beroperasi sebagai bahasa berbasis tumpukan. Instruksi diatur dalam kolom vertikal, dengan eksekusi dimulai dari elemen teratas. Misalnya, elemen A, B, dan C membentuk tumpukan dengan C di bagian atas dan A di bagian bawah. Saat mengeksekusi instruksi, operasi dimulai dengan elemen dari bagian atas tumpukan.

Elemen ditambahkan ke dan "dikeluarkan" dari tumpukan selama eksekusi.

Elemen data ( seperti tanda tangan, hash, dan kunci publik ) berbeda dari instruksi ( atau opcode ). Instruksi menghapus data dan melakukan operasi pada data tersebut. Pertimbangkan contoh sederhana ini:

Data muncul dalam warna merah, opcode dalam warna biru. Membaca dari kiri ke kanan, string pertama kali masuk ke dalam tumpukan. Opcode (hipotetis untuk contoh ini) kemudian menghapus elemen puncak tumpukan () dan menerapkan hashing MD5, mendorong hasilnya kembali ke dalam tumpukan: d16fb36f0911f878998c136191af705e.

Selanjutnya, masuk ke dalam tumpukan, menghasilkan dua elemen identik. Akhirnya, menghapus dua elemen teratas dan membandingkannya, mendorong <1> ke dalam tumpukan jika identik atau <0> jika berbeda.

Setelah mencapai akhir daftar instruksi, validasi skrip mengikuti dua aturan: kegagalan terjadi jika elemen yang tersisa adalah null atau jika sebuah instruksi gagal karena kondisi yang tidak terpenuhi. Dalam contoh ini, tidak ada kondisi yang berlaku - kita memiliki elemen non-null (<1>), mengonfirmasi validitas skrip. Aturan yang sama mengatur transaksi Bitcoin yang sebenarnya.

Pay-to-Pubkey (P2PK)

Pay-to-Pubkey (P2PK) merupakan bentuk transaksi yang paling mendasar. Ini mengunci dana ke kunci publik tertentu. Untuk menerima dana melalui metode ini, penerima harus memberikan kunci publik mereka kepada pengirim, bukan alamat Bitcoin.

Transaksi pertama antara Satoshi Nakamoto dan Hal Finney pada tahun 2009 menggunakan P2PK. Struktur ini umum digunakan pada masa awal Bitcoin tetapi sebagian besar telah digantikan oleh Pay-to-Pubkey-Hash (P2PKH).

Script penguncian untuk P2PK mengikuti format yang sederhana: OP_CHECKSIG. Seperti namanya, OP_CHECKSIG memverifikasi tanda tangan terhadap kunci publik yang diberikan. Script scriptSig yang sesuai hanya berisi .

Proses eksekusi tidak bisa lebih sederhana: tanda tangan masuk ke tumpukan, diikuti oleh kunci publik. OP_CHECKSIG memeriksa kedua elemen dan memverifikasi tanda tangan terhadap kunci publik. Jika cocok, <1> ditambahkan ke tumpukan; jika tidak, <0> muncul.

P2PK telah jatuh ke dalam ketidakgunaan, dengan alasan yang dijelaskan di bagian berikut.

Pay-to-Pubkey-Hash (P2PKH)

Pay-to-Pubkey-Hash (P2PKH) merupakan jenis transaksi yang paling umum di jaringan Bitcoin. Perangkat lunak dompet modern biasanya menerapkan format ini secara default.

ScriptPubKey P2PKH mengikuti struktur ini:

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

Sebelum memeriksa scriptSig yang sesuai, mari kita pahami opcode yang terlibat:

OP_DUP

OP_DUP menghapus elemen teratas, membuat duplikat, dan mendorong kedua versi kembali ke tumpukan. Ini memungkinkan operasi pada salinan sambil mempertahankan yang asli.

OP_HASH160

Opcode ini menghapus elemen teratas dan menerapkan hashing ganda: pertama SHA-256, kemudian RIPEMD-160 pada output SHA-256. Hash yang dihasilkan kembali ke tumpukan.

OP_EQUALVERIFY

OP_EQUALVERIFY menggabungkan dua operasi: OP_EQUAL dan OP_VERIFY. OP_EQUAL menghapus dua elemen dan memeriksa identitas, mendorong <1> jika identik atau <0> jika berbeda. OP_VERIFY menghapus elemen teratas dan memverifikasi nilai kebenarannya (non-null). Digabungkan sebagai OP_EQUALVERIFY, ini menyebabkan kegagalan transaksi jika dua elemen teratas tidak cocok.

Struktur scriptSig yang sesuai adalah:

Membuka output P2PKH memerlukan penyediaan baik tanda tangan yang valid maupun kunci publik yang sesuai.

Proses ini dibangun di atas alur eksekusi P2PK, menambahkan verifikasi bahwa kunci publik yang diberikan cocok dengan hash yang tertanam dalam skrip.

Sebuah perbedaan penting: dalam skrip penguncian P2PKH, kunci publik tetap tersembunyi - hanya hash-nya yang muncul. Memeriksa output P2PKH yang tidak terpakai di penjelajah blockchain tidak mengungkapkan informasi kunci publik. Kunci tersebut menjadi terlihat hanya ketika penerima mentransfer dana.

Pendekatan ini menawarkan beberapa keuntungan. Pertama, hash kunci publik menyediakan transmisi yang lebih kompak dibandingkan dengan kunci publik lengkap - ini memotivasi implementasi Satoshi pada tahun 2009. Hash kunci publik ini membentuk alamat Bitcoin yang digunakan pengguna untuk bertransaksi.

Kedua, hashing kunci publik memperkenalkan lapisan keamanan tambahan terhadap ancaman komputasi kuantum. Karena kunci publik tetap tersembunyi sampai pengeluaran terjadi, menentukan kunci privat yang sesuai menjadi jauh lebih menantang. Setiap serangan akan memerlukan pembalikan dua operasi hashing berturut-turut (RIPEMD-160 dan SHA-256).

BTC0.09%
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)