Releases: k98kurz/tapescript
Releases · k98kurz/tapescript
Release list
v0.7.3
0.7.3
Compiler
- Bug fix:
@#namesyntax did not work with names of a single char
Tools
- Added new
make_timestamp_after_lock: 7 bytes - Added new
make_timestamp_before_lock: 8-9 bytes - Added new
make_timestamp_between_lock: 15-16 bytes - Optimized
make_delegate_key_lock: saved 13 bytes (98-85) - Optimized
make_delegate_key_chain_lock: saved 13 bytes (128-115) - Corrected
make_graftap_lock: added sigflags passthrough parameter - REPL:
- Changed sigfield macros
~s[1-8]to~sf[1-8] - Added new
~shelper that decodes top stack item as utf-8 string
- Changed sigfield macros
Misc
- Clarified in docstrings for
int_to_bytesanduint_to_bytesthat only the former is correct for encoding stack values; deprecateduint_to_bytes
Full Changes: v0.7.2...v0.7.3
v0.7.2
0.7.2
VM
- Bugfix:
run_auth_scriptsnow copies definitions betweenTapes used to
execute scripts in a sequence. - Documentation: clarified order that more ops pull values from the stack.
Tools
- Added new
Certificateutility class for parsing certs used in some tools. - Improved HTLC lock creation tools with ability to be created with either a
preimage or a hash digest. Useful for copying hash locks.
Misc
- Moved
version()into its own file.
Full Changes: v0.7.1...v0.7.2
v0.7.1
0.7.1
VM
- Added new
run_auth_scriptsfunction to run scripts sequentially in the same
runtime environment. - Added deprecation warning to
run_auth_script. - Updated package to replace calls to
run_auth_scriptwith calls torun_auth_scripts - Similarly updated documentation to replace calls to the deprecated function
Full Changes: v0.7.0...v0.7.1
v0.7.0
From chanelog.md:
0.7.0
Compiler
- Added
@#namesyntactic sugar forOP_READ_CACHE_SIZE s"name" - Added more aliases:
EQforOP_EQUALEQVforOP_EQUAL_VERIFYCSforOP_CHECK_SIG
VM
- Changed
OP_TAPROOTto take the root from the stack instead of from the tape;
it also now takes an allowable_sigflag param from the tape instead of from
cache keyb'trsf'. Locking script syntax now consistent withOP_CHECK_SIG:
push x<root> taproot x<allowable_sigflags>. - Fixed
OP_EVAL: it will now cause aScriptExecutionErrorwith message
"callstack limit exceeded" instead of a Python "max recursion limit exceeded"
error. This change makes it subject to the same callstack limit of everything
else, and calls to it increase the callstack count. - Added option to include aliases in
add_opcode
Tools
- REPL:
- Added decompilation feature to repl (type
~~followed by the hexadecimal
byte codes of a script to see the disassembled script) - Can now pass a
cache_filepath to the repl invocation, and it will load it - Repl now automatically sets the "timestamp" cache value to the Unix epoch
timestamp at the time the repl is invoked - Added macro:
~tsto set the timestamp in the cache to current Unix epoch ts.~~followed by the hexadecimal byte codes of a script to disassemble it~dto decode the top stack item into a signed int and print it~fto decode the top stack item into a float and print it~s[1-8] valueto set a sigfield to the value; if the value has "x" in
the first 2 chars, it will be interpreter as hexadecimal; otherwise, it
will be interpreted as a string
- Added decompilation feature to repl (type
- Added
sign_script_prefixparameter to manymake_*_witnessfunctions - Added ability to pass
SigningKeyobjects tomake_*_witnessfunctions - Added ability to pass
VerifyKeyobjects as pubkeys to functions that make
locks - Updated tooling for delegate keys:
- Updated
make_delegate_key_cert:- Optimized the system by concatenating timestamps into the cert, saving 6
bytes in the unlocking script and enabline cert chains - Appended a bool to indicate if the delegate can further delegate access,
adding 1 byte of overhead per cert - Overall, the changes result in 5 bytes saved for one cert
- Optimized the system by concatenating timestamps into the cert, saving 6
- Updated
make_delegate_key_lockparsing to account for new cert format - Optimized
make_delegate_key_lock, saving 27 bytes compared to 0.6.2 (from
125 bytes to 98), including the updated parsing - Updated
make_delegate_key_unlock:- Renamed to
make_delegate_key_witness - New cert format saved 5 bytes overall (down to 173 bytes)
- Renamed to
- Added
make_delegate_key_chain_lock- 128 bytes - Added
make_delegate_key_chain_witness- 66 bytes + 108 bytes per cert
- Updated
- Added new tools for using balanced Merklized script trees:
create_script_tree_balancedcreate_merklized_script_balanced
- Added new tools for graftroot:
make_graftroot_lock- 58 bytesmake_graftroot_witness_keyspend- 67 bytesmake_graftroot_witness_surrogate- 68-69 byte overhead
- Added new tools for graftroot within taproot ("graftap")
make_graftap_lock- 36 bytesmake_graftap_witness_keyspend- 66 bytesmake_graftap_witness_scriptspend- 145 byte overhead
- Updated
make_taproot_locktool to reflect newOP_TAPROOTsyntax; locking
scripts are now 36 bytes long. - Updated
make_taproot_witness_keyspendto remove pushing sigflags to cache
b'trsf', saving 9 bytes in such witnesses (now just 67 bytes; 66 bytes for
witness that signed without blanking any sigfields). - Added
make_nonnative_taproot_lockthat implementsOP_TAPROOTas a demo of
cryptographic ops and a hacky optimization trick. Script size is 72 bytes. - Added option to include aliases in
add_soft_fork