Skip to content

Release v1.294.0#910

Merged
Franziska-Mueller merged 9 commits into
mainfrom
develop
Jun 3, 2026
Merged

Release v1.294.0#910
Franziska-Mueller merged 9 commits into
mainfrom
develop

Conversation

@Franziska-Mueller

Copy link
Copy Markdown
Collaborator
  • decrease ADDITION_SOLUTION_THRESHOLD_DEFAULT to 76000
  • add new multi-dimensional revenue (currently shadow mode only)
  • add support for automatically resetting contract states to all 0 when size changes
  • fix overflow bug in tick storage (caused by increased number of txs per tick)
  • fix bug in loadAllNodeStates (now correctly fails if revenue file loading failed)
  • update QIP contract (proposal accepted in epoch 212)
  • IPO of contract GGWP (WolfPack) if proposal accepted

cyber-pc and others added 9 commits June 1, 2026 09:48
* Add GGWP (WolfPack) revenue distribution & staking contract

GGWP is a revenue-distribution and staking smart contract:
- Daily revenue payout at 11:00 UTC, split 70/10/10/10: GGWP token
  holders, SC shareholders (676 IPO shares), rank-weighted clan
  members, and a hardcoded reinvestment address.
- Staking: GGWP holders stake tokens for per-epoch rewards;
  unstaking has a 2-epoch delay.
- Holder and shareholder snapshots are taken at BEGIN_EPOCH.

Registered at contract index 28, construction epoch 216
(proposal in epoch 214, IPO in 215, construction and first use in 216).

Files: src/contracts/GGWP.h, test/contract_ggwp.cpp, registration in
src/contract_core/contract_def.h, and the Visual Studio project files.

GGWP.h passes the Qubic Contract Verification Tool.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test: all 39 GGWP tests passing - production ready

- SetExcludeAddress test fixed (expects correct error code)
- StakingRewardCappedByPool test fixed (bounded checks)
- Contract index 28 configured
- Full revenue distribution and staking functionality tested
- Ready for qubic/core deployment

* fix(GGWP): fix adminAddress NULL_ID vulnerability and uint128 overflow in staking

Security:
- Deprecate SetAdmin procedure (always rejects) to prevent NULL_ID attacks
- Admin address is now immutable, hardcoded to token issuer at INITIALIZE
- Token issuer address: MLMWPSQNVAIBRFDHWCKSFOVUAZDDWKJGCLRSYZIUEFDURPWIPQXACYOEPMLB

Correctness:
- Cast quotient to uint128 in staking reward calculation to prevent overflow
- Reward: ((uint128)quotient * (uint128)stakerTokens).low

Tests:
- Updated SetAdmin tests to verify deprecation
- Added AdminImmutable test to verify immutable admin
- Added StakingRewardOverflowEdgeCase test for overflow protection
- All 39 tests passing

Resolves GitHub review comments on adminAddress NULL_ID and uint128 overflow issues.

* fix(GGWP): remove checksum from token issuer ID - keep 56 chars

ID constructor takes 56 arguments (28 bytes), checksum validation
happens separately in the Qubic runtime.

* fix(contract_def): update GGWP construction epoch to 217

- Proposal: Epoch 215
- IPO: Epoch 216
- Construction/Live: Epoch 217

Co-Authored-By: Haiku 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Add iroot function

* Add iroot test.

* Multi-dimension revenue.

* Remove unused revenue save file.
@cyber-pc

cyber-pc commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

LGTM

@Franziska-Mueller Franziska-Mueller merged commit 59db608 into main Jun 3, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants