Releases: chromatic/whippet-experimental-blockchain
Release list
UAP and Merge Mining Improvements
Whippet Core version 1.2.0 is now available from:
https://github.com/chromatic/whippet-experimental-blockchain/releases/tag/v1.2.0/
This is a major version release fixing a critical bug in OP_MINT/OP_MINT_TRANSFER
(the tokens introduced in 1.1.0 could be spent by anyone, not just their intended
recipient), and fixing a merge-mining AuxPoW chain ID collision with Dogecoin.
Both changes are consensus changes activated at block height 80,000 on mainnet
and testnet. All nodes must upgrade to 1.2.0 to remain on the main chain past
that height.
Please report bugs using the issue tracker at GitHub:
https://github.com/chromatic/whippet-experimental-blockchain/issues
Compatibility
Whippet Core is extensively tested on Ubuntu Server LTS, macOS and Windows.
Minimum OS compatibility can be found in the INSTALL guide.
Note: This release contains consensus changes activating at block 80,000 and is
not compatible with prior versions past that height. All nodes must upgrade to
1.2.0 before the chain reaches height 80,000.
Notable changes
Consensus Changes
Both of the following changes are height-gated to activate at block 80,000 on
mainnet and testnet (0, i.e. genesis, on regtest). Before that height, behavior
is unchanged from 1.1.0.
OP_MINT / OP_MINT_TRANSFER: signature requirement and covenant enforcement
1.1.0 shipped OP_MINT as a scriptPubKey opcode that validated its minting
conditions (entry fee, salt length, overflow) and then unconditionally
succeeded, with no scriptSig requirement at all. In practice, any real WHIP
value locked in a mint output could be spent by anyone who saw it, not just
its intended owner. Two of the five safety properties from the original UAP
design ("one-shot" and "strict script" covenant enforcement) were also
unimplemented.
As of 80,000:
OP_MINTrequires a valid signature from a recipient pubkey now included
in the script format:<pubkey> <multiplier> <salt> OP_MINT. Signature and
pubkey encoding are checked unconditionally (not gated on mempool-policy
flags), so a malformed-encoding signature or pubkey can no longer reach a
mined block.- A new
OP_MINT_TRANSFERopcode enforces covenant continuation at the
consensus level: spending a mint/transfer position requires the transaction
to produce at least one continuingOP_MINT_TRANSFERoutput carrying the
same multiplier, with total output value bounded by the input's value.
Token conservation is enforced by consensus, not by convention. - One-shot is enforced by checking that no sibling input in a mint
transaction is itself an unspent UAP position. - Non-covenant outputs are now allowed alongside a covenant continuation, to
support atomic token-for-WHIP swaps in a single transaction.
Before 80,000, OP_MINT/OP_MINT_TRANSFER behave exactly as they did in
1.1.0. There is no change to already-mined blocks below that height.
AuxPoW chain ID collision fix
Whippet's AuxPoW chain ID (0x0062) collided with Dogecoin's own registered
merge-mining chain ID. As of block 80,000, Whippet uses a distinct chain ID
(0x5750, "WP") to prevent ambiguity for merge-mining pools.
Bug Fixes
Crash: data race between script verification and block connection
CScriptCheck (used by the parallel script-check worker thread pool) was
looking up sibling inputs' prevout scripts from a live CCoinsViewCache
pointer at check time, on a worker thread, while the main thread concurrently
mutated the same cache serially via UpdateCoins() for later transactions in
the block. CCoinsViewCache's underlying map isn't safe for that kind of
concurrent read-vs-mutate access, and a concurrent rehash could corrupt it,
crashing the node. This was reliably reproducible under enough script-check
parallelism (e.g. replace-by-fee.py's doublespend-tree test). Fixed by
snapshotting sibling prevout scripts once, up front, on the main thread when
each CScriptCheck is constructed, instead of looking them up lazily from a
worker thread.
Undefined behavior and missing sigop accounting in OP_INSPECT / OP_MINT
OP_INSPECT's virtual-balance calculation (nValue * multiplier) could
overflow a 64-bit value; the overflow check itself relied on undefined
behavior. It's now computed with a portable, well-defined overflow check.
OP_MINT/OP_MINT_TRANSFER outputs were also not counted toward a
transaction's sigop limit, which is now fixed.
Qt wallet branding
The Qt GUI wallet's pixmap assets still used Dogecoin's shibe logo; replaced
with Whippet branding.
Upgrading from Prior Versions
Important: This release contains consensus changes activating at block
80,000. Follow these steps:
-
Backup your wallet before upgrading:
whippet-cli dumpwallet backup.txt
-
Stop your Whippet daemon:
whippet-cli stop
-
Upgrade Whippet Core using your package manager or by building from source
-
Start the daemon:
whippetd
-
Verify the upgrade:
whippet-cli getinfo # Should show version 1.2.0
New Features
Client-side and indexing tooling for UAP
Since none of this was previously usable end-to-end (OP_MINT was unsafe to
use), this release also adds the surrounding tooling needed to actually use
UAP tokens:
contrib/uap-js: a dependency-free JavaScript library for building and
signing UAP transactions client-side, in a browser or Node.contrib/uap-indexer: a small Go service that indexes UAP positions from a
node's RPC and hosts a non-custodial maker/taker order relay
(SIGHASH_SINGLE|ANYONECANPAY), including a Docker image and an operator's
guide for running your own instance, and order mirroring across
independently-run instances.
See doc/uap-minting-guide.md, doc/uap-marketplace-design.md, and
doc/uap-marketplace-operators-guide.md.
Building and Installation
Standard build process applies:
./autogen.sh
./configure
make
make check
sudo make installFor detailed build instructions, see INSTALL.md.
Known Issues
None known at release time. Please report any issues at:
https://github.com/chromatic/whippet-experimental-blockchain/issues
Release Information
Release Date: July 18, 2026
Version: 1.2.0
GitHub Tag: v1.2.0
For the latest information, visit:
1.1.0 Universal Asset Protocol / On-Chain Tokens
Whippet Core version 1.1.0 is now available from:
https://github.com/chromatic/whippet-experimental-blockchain/releases/tag/v1.1.0/
This is a major version release introducing consensus changes including new script opcodes for the Universal Asset Protocol (UAP). All nodes must upgrade to 1.1.0 to remain on the main chain.
Please report bugs using the issue tracker at GitHub:
https://github.com/chromatic/whippet-experimental-blockchain/r
Compatibility
Whippet Core is extensively tested on Ubuntu Server LTS, macOS and Windows.
Minimum OS compatibility can be found in the INSTALL guide.
Note: This release contains consensus changes and is not compatible with prior
versions. All nodes must upgrade to 1.1.0.
Notable changes
Consensus Changes
This release introduces consensus-level changes that require all nodes to upgrade.
Network compatibility and security depend on prompt adoption of this release.
Universal Asset Protocol (UAP) - Token Minting and Introspection
Three new script opcodes have been added to support the Universal Asset Protocol,
enabling token creation, transfer, and verification within script execution:
OP_MINT (0xb5) - Token Minting Opcode
OP_MINT enables the creation of new tokens on the blockchain. Scripts using OP_MINT
follow the pattern: [multiplier] [salt] OP_MINT
Features:
- Tokens are identified by a unique salt (≥16 bytes)
- Token supply is determined by a multiplier value (e.g., 1000 tokens per WHIP)
- Entry fee requirement: input value ≥ 1000 COIN satoshis prevents spam
- Full validation in both mempool (policy) and block (consensus) rules
Policy Rules:
- Salt must be ≥16 bytes
- Entry fee must be ≥1000 COIN satoshis
- Script must be exactly [data] [data] OP_MINT format
Example:
Script: 1000 "unique_salt_16bytes_or_more" OP_MINT
Result: Creates a token with 1000 tokens per WHIP
OP_INSPECT (0xb7) - Output Introspection Opcode
OP_INSPECT allows scripts to examine transaction output properties at execution time.
Pattern: [field_selector] OP_INSPECT pushes the selected field value onto the stack.
Supported Field Selectors:
- 0: version (protocol version)
- 1: input_index (current input index)
- 12: output_value (current output's nValue in satoshis)
- Other field selectors for extended introspection
Use Cases:
- Token value verification in covenants
- Cross-output validation
- Token conservation checking
Example:
Script: 0 OP_INSPECT 1 EQUAL
Result: Pushes protocol version and verifies it equals 1
OP_INSPECT_SELF (0xb6) - Script Introspection Opcode
OP_INSPECT_SELF allows scripts to examine their own scriptPubKey at execution time.
Pattern: OP_INSPECT_SELF pushes the entire scriptPubKey onto the stack.
Use Cases:
- Script self-reference and validation
- Covenant enforcement
- Template verification
Example:
Script: OP_INSPECT_SELF OP_INSPECT_SELF EQUAL
Result: Verifies the script appears twice (both outputs have same script)
Protocol Version Update
- Protocol version updated to 70016
- Nodes running versions prior to 70016 will not be compatible with this network
- Peers running older protocol versions will be disconnected
Network Activation
The consensus changes in this release activate immediately upon block validation.
All nodes must upgrade before processing blocks containing these new opcodes.
Upgrade Deadline: Immediate - upgrade before first block with new opcodes
New Features
UAP Transaction Type Recognition
New transaction script types have been added to the script type classifier:
- TX_OP_MINT: Scripts matching the OP_MINT pattern are now recognized and validated
- TX_OP_TRANSFER: Simple UAP covenant transfers (pubkey + OP_CHECKSIG) are recognized
These types enable specialized handling in the relay policy and transaction validation.
Testing and Quality Assurance
Comprehensive Python Test Suite
Three new Python integration tests provide end-to-end testing of UAP features:
-
uap_transactions.py - Tests token mechanics
- Token conservation validation
- Minting and spending flow
- Transaction validity in mempool and blocks
-
uap_mint_transfer_spend.py - Tests individual features
- OP_MINT validation and constraints
- OP_INSPECT and OP_INSPECT_SELF opcodes
- UAP transfer covenants
- Multi-level transaction chains
- End-to-end token lifecycle
-
uap_integration.py - Integration tests (extended suite)
- Complex multi-party scenarios
- Covenant preservation across transactions
- Large-scale token operations
All tests verify:
- Correct token supply and conservation
- Proper entry fee enforcement
- Salt validation requirements
- Script execution semantics
- Covenant enforcement
Building and Installation
Standard build process applies:
./autogen.sh
./configure
make
make check
sudo make installFor detailed build instructions, see INSTALL.md.
Known Issues
None known at release time.
Upgrading from Prior Versions
Important: This release contains consensus changes. Follow these steps:
-
Backup your wallet before upgrading:
whippet-cli dumpwallet backup.txt
-
Stop your Whippet daemon:
whippet-cli stop
-
Upgrade Whippet Core using your package manager or by building from source
-
Start the daemon (blockchain will be validated during startup):
whippetd
-
Verify the upgrade:
whippet-cli getinfo # Should show version 1.1.0 and protocol version 70016
Block validation may take several minutes as the daemon re-validates the blockchain
with the new consensus rules. This is normal and expected.
Acknowledgments
The UAP implementation and testing were developed to provide advanced script capabilities
and token support for the Whippet blockchain. This may not work, but let's try it!
Miscellaneous
- Documentation: See doc/uap-minting-guide.md for comprehensive
guide to using OP_MINT and UAP features - Source code review: Use
git log --oneline v1.0.0..v1.1.0to review changes - Previous releases: Release history
Commit Hashes
Key commits in this release:
04dc76eee- script: add OP_INSPECT_SELF opcode and tests506e0d205- script: add OP_INSPECT opcode and tests1891aea14- script: add OP_MINT opcode and policy/standard checks0c1a8b79f- test: register UAP Python tests in RPC test suite
Release Information
Release Date: February 8, 2026
Version: 1.1.0
Protocol Version: 70016
GitHub Tag: v1.1.0
1.0.0 experimental
DO NOT USE THIS FOR REAL WORK
but if you want to help test, mine, stress test, this is a great release
See Whippet Faucet to get some coins to test. Download this code, get an address, get some coins.
See the mining Python code to mine blocks.