Skip to content

Release v1.301.0 - #967

Merged
Franziska-Mueller merged 15 commits into
mainfrom
develop
Jul 29, 2026
Merged

Franziska-Mueller merged 15 commits into
mainfrom
develop

Conversation

@Franziska-Mueller

Copy link
Copy Markdown
Contributor
  • Add Bpp9000 mining algorithm
  • Add outsourced computations (OC) consensus
  • Refactoring of qpi.h into multiple subheaders for better maintainability
  • QIP SC update (approved in epoch 221)
  • bug fix for Random SC

double-k-3033 and others added 12 commits July 23, 2026 17:39
)

Three test-only failures in test/contract_qraffle.cpp:

- TokenRaffle_WinnerReceivesTokensMinusFees / TokenRaffle_DepositSlotFull
  used system.epoch = 5, below QRAFFLE's construction epoch (192). Below
  that epoch, qpi.acquire/releaseShares reject handing token management to
  QRAFFLE, so every depositInTokenRaffle() fails. Use epoch 200/201.

- InitialRegisters_CannotLogout invoked logout for the 5 bootstrap register
  IDs, which INITIALIZE seeds into contract state but not the spectrum.
  invokeUserProcedure bails before running when the invocator is absent from
  the spectrum, leaving output zeroed (== QRAFFLE_SUCCESS), so the expected
  QRAFFLE_INITIAL_REGISTER_CANNOT_LOGOUT never appeared. increaseEnergy() to
  place each ID in the spectrum.

- TokenRaffle_WinnerReceivesTokensMinusFees expected-winner formula ignored
  that the winner is itself a DAO register and thus receives one
  registerPerShare slice from the END_EPOCH register-fee redistribution on
  top of the winner payout. Add + registerPerShare.

Full ContractQraffle suite: 78/78 pass.

Co-authored-by: double-k-3033 <double-k-3033@users.noreply.github.com>
* move qpi to its own qpi folder, create qpi sub headers

* split all code from qpi.h into new sub headers

* move all qpi_*_impl headers into their own qpi/impl folder

* move ContractBase from qpi_context to qpi_types

* remove old files from vcxproj
* qip second update

* reset contract state

* transferRightsFee initialization in begin epoch

* 224 epoch

* smul() instead of multiplication
* fix: entropy index problem and unregistered function problem

* feat: add test file

* fix: refund on invalid BuyEntropy inputs; always clear reveal slot

- BuyEntropy: add missing else branch so invalid inputs (bad tier,
  zero/oversize bits, underpaid fee) refund the full invocation reward
  instead of silently keeping it.
- END_TICK: move reveals.set(..., zeroReveal) out of the
  a no-show aren't permanently locked out.

* fix: correct BuyEntropy output format and refund overpayment

Change BuyEntropy_output.entropy from Array<bit_4096,32> to a single
bit_4096, copy the first numberOfBits bits, and refund any payment
beyond numberOfBits*100 instead of silently keeping it.

Co-Authored-By: N-010 <N-010@users.noreply.github.com>

* fix: hold provider collateral until reveal

Rework the collateral lifecycle so a provider's stake stays locked
from commit until they reveal:
- refund the stake on a valid reveal, slash (burn) it on a no-show
- reject an empty commit before any state change to avoid double refund
- stop paying silent providers from the treasury at END_TICK

Adds lockedCollateralAmounts and revealedThisTickFlags state, and
gtests covering the collateral lifecycle.

* fix: const and padding problem

* fix: const issue

* fix: empty tick problem

* feat: add new variable to BuyEntropy for trust

* fix: check trustee in buyentropy

* update comment

* fix: reject transaction from SC

* fix: commit and reveal in same tick

* fix: re-enroll evicted RANDOM provider on reveal to prevent stream lockout

* feat: allow safe unsubscribe from RANDOM via reveal + empty commit

* feat: add RANDOM GetProviderStatus query; revert silent re-enroll (08fea1c)

---------

Co-authored-by: double-k-3033 <double-k-3033@users.noreply.github.com>
Co-authored-by: N-010 <N-010@users.noreply.github.com>
* Add OcEngine, OC auth transaction, and interface registry

* Expose OC invocation to contracts via QPI (INVOKE_OC, getOcInvocationStatus)

* Wire OcEngine into the node: tx type 13, tick processing, auth signature broadcast, snapshots

* Add QUtil TriggerOC/TriggerOCBatch procedures for Mock OC end-to-end testing

* Add OcEngine tests and build registration

* Add logging for OC Machinery

* Increase offset and timeout of OC

* Replace one-shot scheduledBy bitmap with edge-triggered auth tx reschedule (lastScheduledTick, timeout 5->12)

* Route OC invocation fee through per-interface fee function table in __qpiInvokeOC

* Trim oc_engine.h comments

* Move QUtil OC batch bound to file-scope QUTIL_MAX_OC_BATCH_COUNT for contract-verify compliance

* Add OC_INVOCATION_STATUS_CHANGE log event (type 16) for OC invocation status transitions

* Remove TriggerOCBatch batch OC invocation procedure from QUtil
…963)

RevealAndCommit rejects invalid/stale calls silently (refund only, no
signal), so an off-chain client had no way to tell whether a submitted
tx actually took effect. lastUpdateTick stamps the tick of the last
accepted RevealAndCommit per provider slot, surfaced via
GetProviderStatus: a client compares it to the tick it submitted in to
tell acceptance from rejection.

Co-authored-by: double-k-3033 <double-k-3033@users.noreply.github.com>
* Remove HyperIdentity and add reference bpp9000 mining algo.

* Change mining solution protocol

- Add score field into solution message and transaction
- Miner ranking is ranked by best score and tick number as tie-breaker

* Update the POPULATION_THRESHOLD

* Nonce[0] value will indicate the running algo.

* Disable anti-attractor until the ant colony.

* Turn off mining seed rotation.

* Add load task file for bpp9000.

* Update bpp9000 unittest.

* F3 will print best score miner.

* Add training data for bpp9000

- TrainingData: Jan 1 2025 00:00 UTC, 8760 deltas
- Topology:  topo-seed 0x62707039303030

* Fix the synthesic generation for profiling.

* Speedup for score_bpp9000.

* ScoreBpp9000: replace align with unaligned store/load.

* Turn off profiling of score.

* Fix memcpy generation from MSVC.

---------

Co-authored-by: cyber-pc <cyber-pc@blue-pc.localhost>
…958)

Co-authored-by: qct-security-bot <security@qubic.li>
@cyber-pc

Copy link
Copy Markdown
Contributor

lgmt

cyber-pc
cyber-pc previously approved these changes Jul 28, 2026
@Franziska-Mueller
Franziska-Mueller merged commit bb42a71 into main Jul 29, 2026
12 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.

6 participants