Bitcoin

Why is there no public key in my PSBT’s input script?

I created PSBT to sign HTLC using funded P2WSH which I want to sign with my Xverse wallet. This is the decoded PSBT I made. bitcoin-cli

o@OscarPC:~/bitcoin-htlc$ bitcoin-cli -testnet decodepsbt cHNidP8BAF4CAAAAAbPL7V1jyb+3R1UCjZ59ivvArJkc/+7bfxvA0QDjwJy+AAAAAAD+////AQAAAAAAAAAAIlEgmI+kZEmjRbl0oD6FTqJ7RKSipe+ZpSLIz0whDVrEu+MAAAAAAAEBK+gDAAAAAAAAIgAgpgjnxrbDIB0mCTFhbICxZdnAIvuWCkOZt5f+fZV3HMoBBVljqCBlLH3Gh9mMmIkwTtLkCMdLYR6GpAyqUcS0Px3VkTxc0Ih2qRTjmQVsTKY1caykT8LRGz/axpo34GcAsXV2qRTjmQVsTKY1caykT8LRGz/axpo34GiIrAAA

  "tx": 
    "txid": "a1eaefe490f5d3be11fbd6a5afeffcff20a9e92cfde3363484168c9f5769c57a",
    "hash": "a1eaefe490f5d3be11fbd6a5afeffcff20a9e92cfde3363484168c9f5769c57a",
    "version": 2,
    "size": 94,
    "vsize": 94,
    "weight": 376,
    "locktime": 0,
    "vin": (
      
        "txid": "be9cc0e300d1c01b7fdbeeff1c99acc0fb8a7d9e8d025547b7bfc9635dedcbb3",
        "vout": 0,
        "scriptSig": 
          "asm": "",
          "hex": ""
        ,
        "sequence": 4294967294
      
    ),
    "vout": (
      
        "value": 0.00000000,
        "n": 0,
        "scriptPubKey": 
          "asm": "1 988fa46449a345b974a03e854ea27b44a4a2a5ef99a522c8cf4c210d5ac4bbe3",
          "desc": "rawtr(988fa46449a345b974a03e854ea27b44a4a2a5ef99a522c8cf4c210d5ac4bbe3)#4xpnet5r",
          "hex": "5120988fa46449a345b974a03e854ea27b44a4a2a5ef99a522c8cf4c210d5ac4bbe3",
          "address": "tb1pnz86gezf5dzmja9q86z5agnmgjj29f00nxjj9jx0fsss6kkyh03sjkqhpd",
          "type": "witness_v1_taproot"
        
      
    )
  ,
  "global_xpubs": (
  ),
  "psbt_version": 0,
  "proprietary": (
  ),
  "unknown": 
  ,
  "inputs": (
    
      "witness_utxo": 
        "amount": 0.00001000,
        "scriptPubKey": 
          "asm": "0 a608e7c6b6c3201d260931616c80b165d9c022fb960a4399b797fe7d95771cca",
          "desc": "addr(tb1q5cyw034kcvsp6fsfx9skeq93vhvuqghmjc9y8xdhjll8m9thrn9q5mv0nr)#wjcfmgw8",
          "hex": "0020a608e7c6b6c3201d260931616c80b165d9c022fb960a4399b797fe7d95771cca",
          "address": "tb1q5cyw034kcvsp6fsfx9skeq93vhvuqghmjc9y8xdhjll8m9thrn9q5mv0nr",
          "type": "witness_v0_scripthash"
        
      ,
      "witness_script": 
        "asm": "OP_IF OP_SHA256 652c7dc687d98c9889304ed2e408c74b611e86a40caa51c4b43f1dd5913c5cd0 OP_EQUALVERIFY OP_DUP OP_HASH160 e399056c4ca63571aca44fc2d11b3fdac69a37e0 OP_ELSE 0 OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 e399056c4ca63571aca44fc2d11b3fdac69a37e0 OP_ENDIF OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "63a820652c7dc687d98c9889304ed2e408c74b611e86a40caa51c4b43f1dd5913c5cd08876a914e399056c4ca63571aca44fc2d11b3fdac69a37e06700b17576a914e399056c4ca63571aca44fc2d11b3fdac69a37e06888ac",
        "type": "nonstandard"
      
    
  ),
  "outputs": (
    
    
  ),
  "fee": 0.00001000

It is my intention to follow the following sats-connect example from the official sats connect documentation to perform signing using my xverse wallet.

import 
  BitcoinNetworkType,
  RpcErrorCode,
  request,
 from "sats-connect";
    
const signPsbtOptions = 
    payload:  btc.SignatureHash.DEFAULT_ANYONECANPAY,
      broadcast: false, 
      inputsToSign: (
          
              address: "tb1pnz86gezf5dzmja9q86z5agnmgjj29f00nxjj9jx0fsss6kkyh03sjkqhpd",
              signingIndexes: (0)
          
      ),
    ,
    onFinish: (response) => 
      console.log('Signed PSBT:', response.psbtBase64);
    ,
    onCancel: () => alert('Signing canceled'),
  ;

  try 
    await signTransaction(signPsbtOptions);
   catch (error) 
    console.error('Error signing PSBT:', error);
  

However, whenever I try to sign PSBT using the xverse wallet in my browser, I get an error.

Input script doesn't have pubKey: 99,168,32,101,44,125,198,135,217,140,152,137,48,78,210,228,8,199,75,97,30,134,164,12,170,81,196,180,63,29,213,145,60,92,208,136,118,169,20,227,153,5,108,76,166,53,113,172,164,79,194,209,27,63,218,198,154,55,224,103,0,177,117,118,169,20,227,153,5,108,76,166,53,113,172,164,79,194,209,27,63,218,198,154,55,224,104,136,172

Enter image description here

This leads to my question.

Why is there no public key in my PSBT input script? The input section of the decoded psbt has a scriptPubKey section inside the input field.

Related Articles

Back to top button