I hereby claim:
- I am qlrd on github.
- I am qlrd (https://keybase.io/qlrd) on keybase.
- I have a public key ASB_YwZ61fpD7VSXOlE5REPV2Wr5IszndPbhg4Z_9AIW_go
To claim this, I am signing this object:
| #!/usr/bin/env python3 | |
| # | |
| # Usage: | |
| # uv run python3 verify-decorators.py | |
| # uv run micropython verify-decorators.py | |
| import sys | |
| TITLE = "verify __new__ decorators" |
| """test_bip137_p2tr.py — does the pre-PR krux taproot message-signing | |
| path round-trip through a "lenient" BIP-137 verifier? | |
| Context (selfcustody/krux PR #866): | |
| On `develop`, single-sig P2TR message signing flows through | |
| `_sign_at_address` -> `Key.sign_at`. The signature is over the | |
| standard Bitcoin-signed-message commitment, produced as an | |
| ECDSA-recoverable sig over the BIP-86 INTERNAL key (the raw | |
| m/86'/.../ private scalar). The header byte stays in 31-34 |
| #!/usr/bin/env python3 | |
| """bip137_old_vs_new.py — pre-fix vs post-fix krux BIP-137 message signing. | |
| Reproduces the two krux signing variants side-by-side: | |
| - "old": the pre-fix behavior. `key.sign_at` emits a header byte in the | |
| P2PKH-compressed range (31-34) regardless of the wallet's actual | |
| script type, so signatures for P2WPKH / P2SH-P2WPKH addresses | |
| are non-compliant with BIP-137 §"Header byte". |
I hereby claim:
To claim this, I am signing this object:
| """ | |
| solution.py | |
| Read: | |
| - https://gist.github.com/qlrd/0eed0c8a56aeab3f8894c6d67694d690 | |
| - https://gist.github.com/qlrd/d1696dd63e15d89ecbc191fa2d734b36 | |
| - https://gist.github.com/qlrd/1b6f6edc99915acee72f7c73b3e649f0 | |
| - https://gist.github.com/qlrd/aca897acb42f0b6cbd07d7337f16c790 |
Once you have entered the passphrase, you will need to select a miniscript policy with a specific type of descriptor (either P2WSH or P2TR), and a custom derivation path m/48'/0'/0'/<index>' to spend the funds.
Basically, the index is a number that you will need to figure out to construct the given descriptor:
# <descriptor> : wsh || tr
# -> 0, 1, 2, 3 ... who knows?Scan this qrcode and type a sequence of characters that decrypt the QR code.
5ef3b16a pic.twitter.com/2P3G7ux3KE
— qlrd (@qlrddev) February 20, 2025
To find out the "password", you will need to edit solution.py. It have a line where you'll find a certain variable that require a byte string as input to the solution function. The output of solution will be the key to decrypt the mnemonic.
For example:
Build a simple inheritance scheme on Liana and try to spend a ~170000 sats.
During the workshop at BTC++ in 2025, the speaker created a simple inheritance scheme and put you as his heir. He can spend at any time, but you only can spend after some time.