Skip to content

BIP69: examples file fixes and update to python3 #1943

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

prestoalvarez
Copy link

@prestoalvarez prestoalvarez commented Aug 22, 2025

In bip-0069_examples.py:

  • Fix print_outputs() to use sorted output tuples instead of unsorted
  • Add Python 3 compatibility using functools.cmp_to_key()
  • Convert string hashes to byte arrays in second example
  • Make file executable with shebang for python3
  • Add clearer output formatting with transaction hashes and section headers

Copy link
Member

@jonatack jonatack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Patch looks correct but this python2 file could be updated to have executable file permissions and to be able to run with python3, would you like to do that?

@prestoalvarez prestoalvarez requested a review from jonatack August 22, 2025 20:15
@jonatack
Copy link
Member

ACK. Could you please make the commit names clearer, and what do you think about adding this diff to the last commit?

 def print_inputs(ordered_input_tuples):
+       print("inputs")
        index = 0
        for prev_tx_hash_byte_arr_little_endian, prev_tx_output_index in ordered_input_tuples:
                prev_tx_hash_hex = binascii.hexlify(bytearray(prev_tx_hash_byte_arr_little_endian))
@@ -57,6 +58,7 @@ def sort_outputs(output_tuples):
        return sorted(output_tuples, key=cmp_to_key(output_cmp))
 
 def print_outputs(ordered_output_tuples):
+       print("outputs")
        index = 0
        for amount, scriptPubKey_byte_arr in ordered_output_tuples:
                scriptPubKey_hex = binascii.hexlify(bytearray(scriptPubKey_byte_arr))
@@ -84,6 +86,7 @@ def main():
                ([0x7d, 0x03, 0x7c, 0xeb, 0x2e, 0xe0, 0xdc, 0x03, 0xe8, 0x2f, 0x17, 0xbe, 0x79, 0x35, 0xd2, 0x38, 0xb3, 0x5d, 0x1d, 0xea, 0xbf, 0x95, 0x3a, 0x89, 0x2a, 0x45, 0x07, 0xbf, 0xbe, 0xeb, 0x3b, 0xa4], 1),
                ([0x6c, 0x1d, 0x56, 0xf3, 0x1b, 0x2d, 0xe4, 0xbf, 0xc6, 0xaa, 0xea, 0x28, 0x39, 0x6b, 0x33, 0x31, 0x02, 0xb1, 0xf6, 0x00, 0xda, 0x9c, 0x6d, 0x61, 0x49, 0xe9, 0x6c, 0xa4, 0x3f, 0x11, 0x02, 0xb1], 1),
                ([0xb4, 0x11, 0x2b, 0x8f, 0x90, 0x0a, 0x7c, 0xa0, 0xc8, 0xb0, 0xe7, 0xc4, 0xdf, 0xad, 0x35, 0xc6, 0xbe, 0x5f, 0x6b, 0xe4, 0x6b, 0x34, 0x58, 0x97, 0x49, 0x88, 0xe1, 0xcd, 0xb2, 0xfa, 0x61, 0xb8], 0)]
+       print("\ntx 0a6a357e2f7796444e02638749d9611c008b253fb55f5dc88b739b230ed0c4c3")
        tx_0a6a_sorted_input_tuples = sort_inputs(tx_0a6a_input_tuples)
        print_inputs(tx_0a6a_sorted_input_tuples)
 
@@ -99,7 +102,7 @@ def main():
                # (prev_tx_hash_byte_arr_little_endian, prev_tx_output_index)
                ([0x55, 0x60, 0x5d, 0xc6, 0x5f, 0x3c, 0xcc, 0x4d, 0xb1, 0xd8, 0x56, 0x4a, 0x28, 0x04, 0x2b, 0xdb, 0x2c, 0x2b, 0xe3, 0x85, 0xea, 0xb2, 0xeb, 0xea, 0x41, 0x19, 0xee, 0x9c, 0x26, 0x8d, 0x28, 0x35], 0),
                ([0x55, 0x60, 0x5d, 0xc6, 0x5f, 0x3c, 0xcc, 0x4d, 0xb1, 0xd8, 0x56, 0x4a, 0x28, 0x04, 0x2b, 0xdb, 0x2c, 0x2b, 0xe3, 0x85, 0xea, 0xb2, 0xeb, 0xea, 0x41, 0x19, 0xee, 0x9c, 0x26, 0x8d, 0x28, 0x35], 1)] #duplicate prev_tx_hash
-
+       print("\ntx 28204cad1d7fc1d199e8ef4fa22f182de6258a3eaafe1bbe56ebdcacd3069a5f")
        tx_2820_sorted_input_tuples = sort_inputs(tx_2820_input_tuples)
        print_inputs(tx_2820_sorted_input_tuples)

@jonatack jonatack changed the title Fix BIP-69 example output inconsistency BIP69: examples file fixes and update to python3 Aug 22, 2025
@prestoalvarez
Copy link
Author

@jonatack updated

Copy link
Member

@jonatack jonatack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 6cc7eb7

@jonatack
Copy link
Member

Pinging BIP authors @kristovatlas @dcousens for feedback / sign-off.

@jonatack
Copy link
Member

jonatack commented Aug 22, 2025

@prestoalvarez it would be good to update the file permissions, e.g. with chmod 755 bip-0069_examples.py, and either squash your commits or give clear naming for each of them.

- Fix print_outputs() to use sorted output tuples instead of unsorted
- Add Python 3 compatibility using functools.cmp_to_key()
- Convert string hashes to byte arrays in second example
- Make file executable with shebang for python3
- Add clearer output formatting with transaction hashes and section headers
@prestoalvarez
Copy link
Author

@jonatack updated

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants