Python spend driver compatibility issue between 1.6.0 and 1.6.1

For CHIP-0008, @acevail and I have been collaborating on an updated Chialisp puzzle and Python driver to standardize royalty spends.

The Python driver for the royalty puzzle works on 1.6.0 but has a runtime issue on the later 1.6 betas/rc. Is there a better way to calculate a CAT’s outer puzzlehash by asset ID? The comment I pulled in from another library references calling puzzle-hash-of-curried-function.

Traceback (most recent call last):
  File "/home/tgarrett/chialisp-dev/royalty_share/royalty_share_spend.py", line 210, in <module>
    asyncio.run(main())
  File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
    return future.result()
  File "/home/tgarrett/chialisp-dev/royalty_share/royalty_share_spend.py", line 193, in main
    (cat_royalty_address, cat_royalty_puzzle_hash) = calculate_cat_royalty_address(royalty_address, asset_id)
  File "/home/tgarrett/chialisp-dev/royalty_share/royalty_share_spend.py", line 157, in calculate_cat_royalty_address
    ).get_tree_hash(inner_puzzlehash_bytes32)
TypeError: Program.get_tree_hash() takes 1 positional argument but 2 were given

In this commit, I seemingly have to choose between working with 1.6.0 and working with 1.6.1: Restore compatibility with chia-blockchain 1.6.0 rather than later betas · trgarrett/chialisp@ceb55e7 · GitHub

Figured this one out. The function was renamed to get_tree_hash_precalc in 1.6.1. Seems to test out with that change on my Python code.

2 Likes