I'm creating a program (for an altcoin I'm developing) that should make it easy to create OP_RETURN transactions. Currently I'm having some trouble with actually creating the script pythonically (I can do it by hand but no idea how to program it).

As an example, the program takes an OP_RETURN script (eg. 6a4c0a0102030405060708090a) and creates a transaction with that script, by itself. However, currently you need to input the actual hex script instead of the string you want to send to the blockchain.

My question is - what's the best way to take a string/int and convert it into a transaction-friendly hex-encoded script? For example:

String: OP_RETURN 12345678910
Output: 6a4c0a0102030405060708090a

Thanks a bunch to anyone who helps. I'll you all some bitcoin if you manage to find a good solution.

  • This is more of a programming question than a bitcoin-specific question Oct 7, 2017 at 7:53
  • All the bitcoin-related information you need is in the spec: en.bitcoin.it/wiki/Script Other than that, you will need to learn about converting values to binary/hex in python, which is more of a general programming question based asked on the main Stack Overflow site.
    – Jestin
    Oct 10, 2017 at 14:42

2 Answers 2


I'm reading the specification. Your hex string has to start with 6a [OP_RETURN opcode] followed by 4c [OP_PUSHDATA1] followed by a one-byte number indicating the size (in bytes) of the following data. You have 10 bytes, so this 0a. Then come your actual data, and here I think you made a mistake. In any case, 0102030405060708090a (in your by-hand example) is neither the hex encoding of the string "12345678910" nor of the integer 12345678910. Look at this python snippets:

>>> from binascii import hexlify
>>> hex(12345678910)

>>> hexlify("12345678910".encode()).decode()

So I guess you need to clarify what your data represent and how you want it encoded...


For everyone here who needs this answer too: my friend created a simple program in Python and c++ to do this exact thing. You can download it on here.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.