Bitcoin Forum
May 04, 2024, 05:07:14 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Signing raw transactions with custom scriptPubKey/scriptSig  (Read 437 times)
GCath (OP)
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
August 18, 2017, 01:56:34 PM
Last edit: August 18, 2017, 03:11:14 PM by GCath
 #1

Hi everyone !

I'm starting to experience with Bitcoin Core and I got really interested with Scripts. What I wanted to do is to use a custom puzzle in addition to the common scriptPubKey script, (i.e. need a solution + a private key to redeem the output).

I've managed so far to send a transaction on the testnet network with a 5+x=10 puzzle and my usual scriptPubKey script:

Code:
{
  "txid": "033ca8bdb4f8d5944ef445719b32162f6df9beff3211a769eb0a2bceab2e9583",
  "hash": "033ca8bdb4f8d5944ef445719b32162f6df9beff3211a769eb0a2bceab2e9583",
  "size": 94,
  "vsize": 94,
  "version": 2,
  "locktime": 0,
  "vin": [
    {
      "txid": "b888efa3e07ae14ff758083be2abbb15e8126d5970341744c231f9c520d2ab78",
      "vout": 0,
      "scriptSig": {
        "asm": "",
        "hex": ""
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 0.00004000,
      "n": 0,
      "scriptPubKey": {
        "asm": "5 OP_ADD 10 OP_NUMEQUAL OP_DROP OP_DUP OP_HASH160 43e497c40f933af83d8a3fc6c92e92f26117a8af OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "4c0105934c010a9c7576a91443e497c40f933af83d8a3fc6c92e92f26117a8af88ac",
        "type": "nonstandard"
      }
    }
  ]
}

So I'm trying to redeem this transaction with create/sign rawtransactions, but it seems I can't sign it even if I include the "5" solution:

Code:
{
  "hex": "02000000010ce773f9e7d1c35485b0440a9982b652d08503cd666f24c753534717e0da92ee000000000155ffffffff01b80b0000000000001976a91443e497c40f933af83d8a3fc6c92e92f26117a8af88ac00000000",
  "complete": false,
  "errors": [
    {
      "txid": "ee92dae017475353c7246f66cd0385d052b682990a44b08554c3d1e7f973e70c",
      "vout": 0,
      "scriptSig": "55",
      "sequence": 4294967295,
      "error": "Data push larger than necessary"
    }
  ]
}

I looked up for this error message but even if I try to change the redeem script to either OP_5 or 5 with OP_PUSHDATA1 it doesn't work...

I was wondering if any of you had an idea on how to do it ? :/ I think the best would be to manually sign the transaction but I really don't want to use librairies ><

Thank you for your time!
1714842434
Hero Member
*
Offline Offline

Posts: 1714842434

View Profile Personal Message (Offline)

Ignore
1714842434
Reply with quote  #2

1714842434
Report to moderator
Transactions must be included in a block to be properly completed. When you send a transaction, it is broadcast to miners. Miners can then optionally include it in their next blocks. Miners will be more inclined to include your transaction if it has a higher transaction fee.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
achow101
Moderator
Legendary
*
Offline Offline

Activity: 3388
Merit: 6581


Just writing some code


View Profile WWW
August 18, 2017, 05:38:03 PM
 #2

Your scriptPubKey is wrong. You are using pushdatas to push the hex numbers 5 and 10 to stack. To push just 1 byte, you don't need to use OP_PUSHDATA1. You should only be using OP_PUSHDATA1 when you have more than 75 bytes of data to push. opcodes 1 through 75 (0x01 - 0x4b) just mean "push that number of bytes to the stack".

Also, Bitcoin Core will not be able to sign your transaction because it does not know what kind of script your scriptPubKey is so it does not know about what needs to be done in order to sign it properly.

GCath (OP)
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
August 21, 2017, 08:26:32 AM
 #3

Alright thank you for your answer. I will modify the scriptPubkey accordingly, but then do you have any idea how I should sign the transaction ?

No choice but "by hand", right ?
achow101
Moderator
Legendary
*
Offline Offline

Activity: 3388
Merit: 6581


Just writing some code


View Profile WWW
August 21, 2017, 03:32:52 PM
 #4

Alright thank you for your answer. I will modify the scriptPubkey accordingly, but then do you have any idea how I should sign the transaction ?

No choice but "by hand", right ?
You could modify Core so that it knows what kind of scriptPubKey that is so it can sign for it.

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!