dashhive / DashJoin.js

Dash CoinJoin JavaScript (Browser & Node) SDK
MIT License
2 stars 0 forks source link

DashTx vs Dash-CLI `signrawtransaction` #21

Closed coolaj86 closed 2 months ago

coolaj86 commented 2 months ago

My guess: less likely to be an algorithm failure, more likely to be that we're assigning the wrong pubKeyHash to the input or utxo object.

update: confirmed, DashKeys.utils.toPublicKey() returns 038c713b103b251af892529165f9a1867c3487f59e94237c080e69f43e419177e6, as expected.


What we expect to be different:

What we expect to match, that doesn't:

The full comparison:

diff -y bad-tx.0bGYi3S7n2Q.dashtx-signed.txt bad-tx.0bGYi3S7n2Q.cli-signed.txt
03000000                  # VERSION (3)                       | 02000000                  # VERSION (2)
01                        # Inputs (1)                          01                        # Inputs (1)

# Input 1 of 1                                                  # Input 1 of 1
    715d39efbac69c36      # Previous Output TX ID                   715d39efbac69c36      # Previous Output TX ID
    40ae3576d433321b                                                40ae3576d433321b
    03160c4d13e9bcb8                                                03160c4d13e9bcb8
    e46e7bd2ba0f2226                                                e46e7bd2ba0f2226
    00000000              # Previous Output index (0)               00000000              # Previous Output index (0)
    6a                    # Script Size (106 bytes)                 6a                    # Script Size (106 bytes)
    47                    # Signature Script Size (71)              47                    # Signature Script Size (71)
    3044                  # ASN.1 ECDSA Signature                   3044                  # ASN.1 ECDSA Signature
    0220                                                            0220
      7652ae6c746568886262130a3aec5e23ad584833553ff1e895286c3 |       1f6cfe181957f89b2edcd89d87e6cf651bc63790203ea69289f54dd
    0220                                                            0220
      687c8735d82ec0e3cd6dadefb6bf75b6d5de237dee5b6dfaa309577 |       53b9f1c339076abd48528735ec0d6709dbfa2a990842e07da78b166
    01                    # Sig Hash Type (1)                       01                    # Sig Hash Type (1)
    21                    # Public Key Size (33)                    21                    # Public Key Size (33)
    027aedc7f360ccaddac9b2e3f589c9ef5468abdfac8953b715203f9e2 |     038c713b103b251af892529165f9a1867c3487f59e94237c080e69f43
    ffffffff              # Sequence (always 0xffffffff)            ffffffff              # Sequence (always 0xffffffff)

07                        # Outputs (7)                         07                        # Outputs (7)
# Output 1 of 7                                                 # Output 1 of 7
    a186010000000000      # Base Units (satoshis) (100001)          a186010000000000      # Base Units (satoshis) (100001)
    19                    # Lock Script Size (25 bytes)             19                    # Lock Script Size (25 bytes)
    76a9                  # Script                                  76a9                  # Script
    14                                                              14
    19426efe5aa2f6f48c5c                                            19426efe5aa2f6f48c5c
    c0ace775368a3ac7fe3c                                            c0ace775368a3ac7fe3c
    88ac                                                            88ac

# Output 2 of 7                                                 # Output 2 of 7
    a186010000000000      # Base Units (satoshis) (100001)          a186010000000000      # Base Units (satoshis) (100001)
    19                    # Lock Script Size (25 bytes)             19                    # Lock Script Size (25 bytes)
    76a9                  # Script                                  76a9                  # Script
    14                                                              14
    3ee2b3ece981714a7ed4                                            3ee2b3ece981714a7ed4
    7870e9773702d8859624                                            7870e9773702d8859624
    88ac                                                            88ac

# Output 3 of 7                                                 # Output 3 of 7
    a186010000000000      # Base Units (satoshis) (100001)          a186010000000000      # Base Units (satoshis) (100001)
    19                    # Lock Script Size (25 bytes)             19                    # Lock Script Size (25 bytes)
    76a9                  # Script                                  76a9                  # Script
    14                                                              14
    4c74fa096150560109e9                                            4c74fa096150560109e9
    212290d6cf011711ba61                                            212290d6cf011711ba61
    88ac                                                            88ac

# Output 4 of 7                                                 # Output 4 of 7
    a186010000000000      # Base Units (satoshis) (100001)          a186010000000000      # Base Units (satoshis) (100001)
    19                    # Lock Script Size (25 bytes)             19                    # Lock Script Size (25 bytes)
    76a9                  # Script                                  76a9                  # Script
    14                                                              14
    88720aaff47b8da8e0a3                                            88720aaff47b8da8e0a3
    0ed5cc446938fe84e352                                            0ed5cc446938fe84e352
    88ac                                                            88ac

# Output 5 of 7                                                 # Output 5 of 7
    a186010000000000      # Base Units (satoshis) (100001)          a186010000000000      # Base Units (satoshis) (100001)
    19                    # Lock Script Size (25 bytes)             19                    # Lock Script Size (25 bytes)
    76a9                  # Script                                  76a9                  # Script
    14                                                              14
    9cefd83f996f996398d4                                            9cefd83f996f996398d4
    332d49fb9964ee241603                                            332d49fb9964ee241603
    88ac                                                            88ac

# Output 6 of 7                                                 # Output 6 of 7
    e496980000000000      # Base Units (satoshis) (10000100)        e496980000000000      # Base Units (satoshis) (10000100)
    19                    # Lock Script Size (25 bytes)             19                    # Lock Script Size (25 bytes)
    76a9                  # Script                                  76a9                  # Script
    14                                                              14
    d869d3b45e2c9ce62241                                            d869d3b45e2c9ce62241
    4098d26fa5d8da39711a                                            4098d26fa5d8da39711a
    88ac                                                            88ac

# Output 7 of 7                                                 # Output 7 of 7
    e8e4f50500000000      # Base Units (satoshis) (100001000)       e8e4f50500000000      # Base Units (satoshis) (100001000)
    19                    # Lock Script Size (25 bytes)             19                    # Lock Script Size (25 bytes)
    76a9                  # Script                                  76a9                  # Script
    14                                                              14
    5c865d9dd1eaeb3c1be3                                            5c865d9dd1eaeb3c1be3
    93f1ce4ce7f191a0d74e                                            93f1ce4ce7f191a0d74e
    88ac                                                            88ac

00000000                  # LOCKTIME (0)                        00000000                  # LOCKTIME (0)

Tx Hash: N/A                                                    Tx Hash: N/A
TxID: d555e677affd724d79872d287874f623b6c202d1f953a8f3bad59e1 | TxID: 78685463d73f1865da47746eeff93280d909b77b0c43fbdb57cf865
Tx Bytes:       395                                             Tx Bytes:       395

Tx Outputs:     110501105                                       Tx Outputs:     110501105
Tx Fee:         395                                             Tx Fee:         395
Tx Min Cost:    110501500                                       Tx Min Cost:    110501500

bad-tx.0bGYi3S7n2Q.hex:

0300000001715d39efbac69c3640ae3576d433321b03160c4d13e9bcb8e46e7bd2ba0f2226000000006a47304402207652ae6c746568886262130a3aec5e23ad584833553ff1e895286c303d19a01f0220687c8735d82ec0e3cd6dadefb6bf75b6d5de237dee5b6dfaa3095776e49fc6f00121027aedc7f360ccaddac9b2e3f589c9ef5468abdfac8953b715203f9e21eaf73a4dffffffff07a1860100000000001976a91419426efe5aa2f6f48c5cc0ace775368a3ac7fe3c88aca1860100000000001976a9143ee2b3ece981714a7ed47870e9773702d885962488aca1860100000000001976a9144c74fa096150560109e9212290d6cf011711ba6188aca1860100000000001976a91488720aaff47b8da8e0a30ed5cc446938fe84e35288aca1860100000000001976a9149cefd83f996f996398d4332d49fb9964ee24160388ace4969800000000001976a914d869d3b45e2c9ce622414098d26fa5d8da39711a88ace8e4f505000000001976a9145c865d9dd1eaeb3c1be393f1ce4ce7f191a0d74e88ac00000000

bad-tx.0bGYi3S7n2Q.cli-signed.hex:

0200000001715d39efbac69c3640ae3576d433321b03160c4d13e9bcb8e46e7bd2ba0f2226000000006a47304402201f6cfe181957f89b2edcd89d87e6cf651bc63790203ea69289f54ddf1b236eaf022053b9f1c339076abd48528735ec0d6709dbfa2a990842e07da78b166ff2e402dc0121038c713b103b251af892529165f9a1867c3487f59e94237c080e69f43e419177e6ffffffff07a1860100000000001976a91419426efe5aa2f6f48c5cc0ace775368a3ac7fe3c88aca1860100000000001976a9143ee2b3ece981714a7ed47870e9773702d885962488aca1860100000000001976a9144c74fa096150560109e9212290d6cf011711ba6188aca1860100000000001976a91488720aaff47b8da8e0a30ed5cc446938fe84e35288aca1860100000000001976a9149cefd83f996f996398d4332d49fb9964ee24160388ace4969800000000001976a914d869d3b45e2c9ce622414098d26fa5d8da39711a88ace8e4f505000000001976a9145c865d9dd1eaeb3c1be393f1ce4ce7f191a0d74e88ac00000000

inputs.json:

[{"txid":"26220fbad27b6ee4b8bce9134d0c16031b3233d47635ae40369cc6baef395d71","vout":0}]

outputs.json:

[{"yNd1KtEKkRzmX7FYPaWPdRHaRbKEAseCrC":0.00100001},{"yS3xKgiXX3oT3dVsjhkjxz9bXnXVWc7pk4":0.00100001},{"yTHiLTzRiRefQ351YRtFq5gN52r6otx8Pz":0.00100001},{"yYkuN3wYSuoCgq88qtgLCcMGF7Rdzytdps":0.00100001},{"yadFaqCsJ3K9DDgAFzGsUSKUEwRhWT1qiy":0.00100001},{"yg3jadDgHW4sAXHEe56x5jg9LdtbP9YmY5":0.10000100},{"yUkfyk4TQxzZoyZFrXtzfmCRzH9WMpCxSP":1.00001000}]

wifs.json:

["cTKYtDHnr6hcPSrRjAxe8vHgaJYuGk7Dn9Sxjnoa5xEsxFy2qp7x"]

Original Log Output

{
  inputs: [
    {
      address: 'yPsNAkedXavKBgP6Y9BC624Wqoqpp3cnYj',
      txid: '26220fbad27b6ee4b8bce9134d0c16031b3233d47635ae40369cc6baef395d71',
      outputIndex: 0,
      script: '76a91426f1c804b97881a8da6bcd22a14ee01840cb34bb88ac',
      satoshis: 110548427,
      height: 1255,
      txId: '26220fbad27b6ee4b8bce9134d0c16031b3233d47635ae40369cc6baef395d71'
    }
  ],
  locktime: 0,
  outputs: [
    {
      walletId: '0bGYi3S7n2Q',
      prefix: "m/44'/1'",
      account: 0,
      usage: 0,
      index: 148,
      descriptor: "pkh([0bGYi3S7n2Q/44'/1'/0'/0/148])",
      address: 'yNd1KtEKkRzmX7FYPaWPdRHaRbKEAseCrC',
      used: false,
      satoshis: 100001,
      reserved: 1713484750031,
      pubKeyHash: '19426efe5aa2f6f48c5cc0ace775368a3ac7fe3c'
    },
    {
      walletId: '0bGYi3S7n2Q',
      prefix: "m/44'/1'",
      account: 0,
      usage: 0,
      index: 147,
      descriptor: "pkh([0bGYi3S7n2Q/44'/1'/0'/0/147])",
      address: 'yS3xKgiXX3oT3dVsjhkjxz9bXnXVWc7pk4',
      used: false,
      satoshis: 100001,
      reserved: 1713484750031,
      pubKeyHash: '3ee2b3ece981714a7ed47870e9773702d8859624'
    },
    {
      walletId: '0bGYi3S7n2Q',
      prefix: "m/44'/1'",
      account: 0,
      usage: 0,
      index: 152,
      descriptor: "pkh([0bGYi3S7n2Q/44'/1'/0'/0/152])",
      address: 'yTHiLTzRiRefQ351YRtFq5gN52r6otx8Pz',
      used: false,
      satoshis: 100001,
      reserved: 1713484750031,
      pubKeyHash: '4c74fa096150560109e9212290d6cf011711ba61'
    },
    {
      walletId: '0bGYi3S7n2Q',
      prefix: "m/44'/1'",
      account: 0,
      usage: 0,
      index: 151,
      descriptor: "pkh([0bGYi3S7n2Q/44'/1'/0'/0/151])",
      address: 'yYkuN3wYSuoCgq88qtgLCcMGF7Rdzytdps',
      used: false,
      satoshis: 100001,
      reserved: 1713484750031,
      pubKeyHash: '88720aaff47b8da8e0a30ed5cc446938fe84e352'
    },
    {
      walletId: '0bGYi3S7n2Q',
      prefix: "m/44'/1'",
      account: 0,
      usage: 0,
      index: 153,
      descriptor: "pkh([0bGYi3S7n2Q/44'/1'/0'/0/153])",
      address: 'yadFaqCsJ3K9DDgAFzGsUSKUEwRhWT1qiy',
      used: false,
      satoshis: 100001,
      reserved: 1713484750031,
      pubKeyHash: '9cefd83f996f996398d4332d49fb9964ee241603'
    },
    {
      walletId: '0bGYi3S7n2Q',
      prefix: "m/44'/1'",
      account: 0,
      usage: 0,
      index: 150,
      descriptor: "pkh([0bGYi3S7n2Q/44'/1'/0'/0/150])",
      address: 'yg3jadDgHW4sAXHEe56x5jg9LdtbP9YmY5',
      used: false,
      satoshis: 10000100,
      reserved: 1713484750031,
      pubKeyHash: 'd869d3b45e2c9ce622414098d26fa5d8da39711a'
    },
    {
      walletId: '0bGYi3S7n2Q',
      prefix: "m/44'/1'",
      account: 0,
      usage: 0,
      index: 149,
      descriptor: "pkh([0bGYi3S7n2Q/44'/1'/0'/0/149])",
      address: 'yUkfyk4TQxzZoyZFrXtzfmCRzH9WMpCxSP',
      used: false,
      satoshis: 100001000,
      reserved: 1713484750031,
      pubKeyHash: '5c865d9dd1eaeb3c1be393f1ce4ce7f191a0d74e'
    }
  ],
  transaction: '0300000001715d39efbac69c3640ae3576d433321b03160c4d13e9bcb8e46e7bd2ba0f2226000000006a47304402207652ae6c746568886262130a3aec5e23ad584833553ff1e895286c303d19a01f0220687c8735d82ec0e3cd6dadefb6bf75b6d5de237dee5b6dfaa3095776e49fc6f00121027aedc7f360ccaddac9b2e3f589c9ef5468abdfac8953b715203f9e21eaf73a4dffffffff07a1860100000000001976a91419426efe5aa2f6f48c5cc0ace775368a3ac7fe3c88aca1860100000000001976a9143ee2b3ece981714a7ed47870e9773702d885962488aca1860100000000001976a9144c74fa096150560109e9212290d6cf011711ba6188aca1860100000000001976a91488720aaff47b8da8e0a30ed5cc446938fe84e35288aca1860100000000001976a9149cefd83f996f996398d4332d49fb9964ee24160388ace4969800000000001976a914d869d3b45e2c9ce622414098d26fa5d8da39711a88ace8e4f505000000001976a9145c865d9dd1eaeb3c1be393f1ce4ce7f191a0d74e88ac00000000',
  version: 3
}
Fail:
{
  code: -26,
  message: 'mandatory-script-verify-flag-failed (Script failed an OP_EQUALVERIFY operation)'
}
coolaj86 commented 2 months ago

Fixed via https://github.com/dashhive/DashTx.js/pull/46