Altcoins Talks - Cryptocurrency Forum

Local => Kripto berita dan diskusi (Bahasa Indonesia) => Berita & Teknologi => Topic started by: abdmuiz on January 25, 2018, 04:19:21 PM

Title: Memahami P2SH
Post by: abdmuiz on January 25, 2018, 04:19:21 PM
Saya mencoba memahami bagaimana P2SH (BIP16) bekerja, dan saya pikir saya melakukannya. Untuk kesenangan dan untuk memeriksa pemahaman saya, saya menonaktifkan BIP16 di Bitcoin Core (menetapkan BIP16Height di chainparams dengan nilai tinggi) dan mencoba untuk "menandatangani" sebuah transaksi yang mengeluarkan output P2SH dengan hanya menyediakan skrip redeem. Menurut pemahaman saya, ini harus cukup pre-BIP16, karena akan membuat script "OP_HASH160 <hash> OP_EQUAL" dari hasil P2SH berhasil, kan? Tapi sepertinya hal itu tidak terjadi.

Dalam mode regtest, saya membuat alamat P2SH berikut ini:

Kode:

$ addmultisigaddress 1 '["03c278d06b977e67b8ea45ef24e3c96a9258c47bc4cce3d0b497b690d672497b6e", "0221ac9dc97fe12a98374344d08b458a9c2c1df9afb29dd6089b94a3b4dc9ad570"]'


$ Validateaddress 2MwCrk6S9UEeFujacKe7m4uDCzu25F3VAeM
{
  "IsValid": true,
  "alamat": "2MwCrk6S9UEeFujacKe7m4uDCzu25F3VAeM",
  "scriptPubKey": "a9142b6defe41aa3aa47795b702c893c73e716d485ab87",
  "ismine": false,
  "iswatchonly": false,
  "isscript": true,
  "script": "multisig "
  "hex": "512103c278d06b977e67b8ea45ef24e3c96a9258c47bc4cce3d0b497b690d672497b6e210221ac9dc97fe12a98374344d08b458a9c2c1df9afb29dd6089b94a3b4dc9ad57052ae",
  "alamat": [
    "mg41i3DBptiWbQ9PQ59ykdbc8T85gEqWdK",
    "muC6tdGQrYXSqghPZziyvZwu1KSwL49ioy"
  ],
  "sigrequired ": 1,
  " account ":" "
}


Dan mendanainya:

Code:

$ Sendtoaddress 2MwCrk6S9UEeFujacKe7m4uDCzu25F3VAeM 10
14e8f61534b9a0b6110655dc153d41cc90f64b8104b820e1f4534fd14a732df0

$ menghasilkan 1

$ gettxout 14e8f61534b9a0b6110655dc153d41cc90f64b8104b820e1f4534fd14a732df0 0
{
  "bestblock": "40d573ebb78bdab760d6659b8ad9d91c46633144d25084eaf3de1f7411040305",
  "konfirmasi": 1,
  "nilai": 10,00000000,
  "scriptPubKey": {
    "asm": "OP_HASH160 2b6defe41aa3aa47795b702c893c73e716d485ab OP_EQUAL",
    "hex ":" a9142b6defe41aa3aa47795b702c893c73e716d485ab87 ",
    " reqSigs ": 1,
    " type ":" scripthash ",
    " addresses ": [
      "2MwCrk6S9UEeFujacKe7m4uDCzu25F3VAeM "
    ]
  },
  " koin belakang ": salah
}


Kemudian, saya mencoba untuk menghabiskan itu dengan menyediakan hanya menebus naskah serial sebagai scriptSig, tapi ini gagal:

Kode:

$ decoderawtransaction 0100000001f02d734ad14f53f4e120b804814bf690cc413d15dc550611b6a0b93415f6e814000000004847512103c278d06b977e67b8ea45ef24e3c96a9258c47bc4cce3d0b497b690d672497b6e210221ac9dc97fe12a98374344d08b458a9c2c1df9afb29dd6089b94a3b4dc9ad57052aeffffffff0100e1f505000000001976a914cf112b41997697caa3eee9e308ad9b2b917b4e4c88ac00000000
{
  "txid": "1971750cd655c7f93627354c380595e3e3434b69c3b6e788eecfb9c685eba703",
  "hash": "1971750cd655c7f93627354c380595e3e3434b69c3b6e788eecfb9c685eba703",
  "versi": 1,
  "ukuran": 157,
  "vsize": 157,
  "locktime": 0,
  "vin": [
    {
      "txid": "14e8f61534b9a0b6110655dc153d41cc90f64b8104b820e1f4534fd14a732df0",
      "vout": 0,
      "scriptSig": {
        "asm": "512103c278d06b977e67b8ea45ef24e3c96a9258c47bc4cce3d0b497b690d672497b6e210221ac9dc97fe12a98374344d08b458a9c2c1df9afb29dd6089b94a3b4dc9ad57052ae",
        "hex": "47512103c278d06b977e67b8ea45ef24e3c96a9258c47bc4cce3d0b497b690d672497b6e210221ac9dc97fe12a98374344d08b458a9c2c1df9afb29dd6089b94a3b4dc9ad57052ae"
      },
      "urutan": 4294967295
    }
  ],
  "vout": [
    {
      "nilai": 1.00000000,
      "n": 0,
      "scriptPubKey":{
        "asm": "OP_DUP OP_HASH160 cf112b41997697caa3eee9e308ad9b2b917b4e4c OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914cf112b41997697caa3eee9e308ad9b2b917b4e4c88ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "alamat": [
          "mzPpjgciTo6DMGpE3Lkb4ZLBSn8A239aDZ"
        ]
      }
    }
  ]
}

$ sendrawtransaction 0100000001f02d734ad14f53f4e120b804814bf690cc413d15dc550611b6a0b93415f6e814000000004847512103c278d06b977e67b8ea45ef24e3c96a9258c47bc4cce3d0b497b690d672497b6e210221ac9dc97fe12a98374344d08b458a9c2c1df9afb29dd6089b94a3b4dc9ad57052aeffffffff0100e1f505000000001976a914cf112b41997697caa3eee9e308ad9b2b917b4e4c88ac00000000 benar
kode kesalahan: -26
error message:
16:wajib-script-verify-flag-failed (Pengoperasian tidak berlaku dengan ukuran tumpukan saat ini)


Seperti yang bisa Anda lihat, scriptSig dari transaksi mentah yang saya coba kirim sesuai dengan hex alamat P2SH. (Skrip yang sangat mirip dikirim untuk pengeluaran output P2SH yang telah ditandatangani dengan benar, kecuali diawali dengan tanda tangan sebenarnya seperti yang dimandatkan oleh BIP16.) Dari pemahaman saya tentang bagaimana P2SH bekerja, ini harus menjadi pre-fork script yang valid. Dapatkah seseorang tolong jelaskan kepada saya apa yang saya lewatkan disini?