Release gate: v0.19-dev → v0.19 (waits for cross-repo E2E)#91
Open
MuncleUscles wants to merge 9 commits into
Open
Release gate: v0.19-dev → v0.19 (waits for cross-repo E2E)#91MuncleUscles wants to merge 9 commits into
MuncleUscles wants to merge 9 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
… parity with genlayer-js (#90) * feat(fees)!: estimation correctness, wait-for-decided semantics, v0.6 parity with genlayer-js Mirrors genlayer-js feat/v06-fee-estimation-rework (same designer rulings): - effective receipt gas price = max(quoteGasPrice(), eth_gasPrice); zero price on an enabled policy raises instead of producing a zero cap; effective execution budget floor = max(on-chain view, price x 306,192 gas local recompute) - simulation-derived budgets no longer clobbered by the 100M default (floor vs observed x headroom); default constant documented as provisional w/ TODO(data) - wait_until='decided'|'finalized' replaces status (legacy param mapped with one-time DeprecationWarning); new is_successful(tx) helper - enum completeness: status 14 LEADER_REVEALING (fixes a KeyError crash mid-poll), VoteType 3 TIMEOUT / 4 NONDET_DISAGREE, v0.6 ResultType remap - DEPLOY_CALL_KEY = bytes32(1) deploy sentinel; fee revert selector naming in send errors (InsufficientFees/MaxPriceExceeded/ExecutionBudgetExceeded/ BudgetTooLow/RollupBudgetBelowFloor/FeeValueMustBeNonZero) py-specific parity fixes: - asimov chain config gains FeeManager/RoundsStorage/Appeals addresses (parity with js testnetAsimov) - Studio floor-fallback formula unified with js (message-reveal leg included) - appeal_transaction/top_up_and_submit_appeal auto-resolve the minimum bond when value is omitted (previously defaulted to 0 = guaranteed on-chain revert); top_up_fees now requires value * ci: run tests on pushes to dev branches tests.yml had no push trigger at all — merges to v0.19-dev got zero post-merge CI.
…y key = bytes32(0) (#93) The wildcard sentinel previously shared bytes32(0) with GenVM's natural empty-method-name key (deploy, emit_transfer), making deploy-specific Mode-2 allocations impossible. Per cross-team decision, the wildcard moves to the untagged keccak256 of empty bytes (0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470), which is provably outside the derived-key space. DEPLOY_CALL_KEY drops the bytes32(1) sentinel (GenVM ask withdrawn) and now equals CALL_KEY_UNNAMED = bytes32(0), matching what GenVM actually emits. Must land together with the consensus CALL_KEY_WILDCARD constant and the node Mode-2 tree decode change in v0.6.
Admin merged after required repo CI passed; optional E2E app check is queued/non-blocking for dev-branch PRs.
* feat(vesting): add vesting staking actions * feat(vesting): validator-leg actions (join/deposit/exit/claim, operator transfer, identity, wallet reads) Mirrors the genlayer-js validator actions for the CON-607 Vesting.sol surface: vesting_validator_join/deposit/exit/claim, operator-transfer initiate/complete/cancel, set_identity (extra_cid str/hex handling as in js), and get_validator_wallets/validator_wallet_count/ validator_deposited/is_validator_wallet reads.
…BI) (#96) * feat(calldata)!: migrate method-call key "method" -> "" (v0.6 genvm ABI) The GenVM v0.6 calldata ABI renames the method-call key from "method" to "" (empty string). Because the calldata encoder sorts map keys ascending, "" sorts first, so the method name becomes the binary prefix of the encoded calldata. genvm-manager auto-remaps "method" -> "" but logs an error on every call; SDKs must migrate to stop the error and match the canonical wire format. - make_calldata_object (genlayer_py/contracts/utils.py) is the sole producer of the method key; it now emits ret[""] = method. This flows through every method-call path (write/read/sim/estimate + encode_tx_data_call). - The calldata encoder/decoder are key-agnostic and unchanged; the decoder round-trips whatever key is present, so decoding auto-adapts. - Updated consensus/smoke round-trip assertions to read call_data[""] and added test_method_key_is_empty_string_binary_prefix, which asserts the "" key is present, "method" is absent, and the method name precedes the "args" key bytes in the raw calldata (proving "" sorts first). This test fails under the old key. - Regenerated the raw / base64 / readable calldata fixtures to the new wire format ({"": "ask_for_coin", ...}) across the write sample-data files and conftest. Deploy (constructor) fixtures are unaffected — they carry no method key. No back-compat toggle: the codebase has no calldata versioning mechanism and none is introduced. BREAKING CHANGE: method-call calldata now keys the method name under "" (empty string) instead of "method", per the v0.6 GenVM calldata ABI. Calldata built by this SDK is incompatible with pre-v0.6 GenVM, and decoded calldata exposes the method name under the "" key. * test(e2e): migrate contract fixtures to genvm v0.3 SDK API The tests/e2e/contracts fixtures used the v0.2.x SDK idiom and fail under GenVM v0.6 with NameError (from genlayer import * no longer binds gl). Migrate all 15 to v0.3: - from genlayer import * -> import genlayer as gl + from genlayer.types import * - gl.Contract -> gl.contract.Contract; gl.ContractAt -> gl.contract.get_at; gl.deploy_contract -> gl.contract.deploy - gl.DynArray/TreeMap -> gl.storage.*; @allow_storage -> @gl.storage.allow - gl.eq_principle_* -> gl.eq_principle.*; gl.exec_prompt -> gl.nondet.exec_prompt; gl.get_webpage -> gl.nondet.web.render - drop callable u256(x) wrapping (aliases are Annotated[int], not callable) multi_tenant_storage.py additionally dropped the removed emit(gas=...) kwarg (v0.3 emit takes value/on/use_balance/fee_params; a normal internal message's fee comes from the sender's prefunded pool, no per-emit gas limit). The py-genlayer:test Depends placeholder is unchanged. --------- Co-authored-by: kp2pml30 <kp2pml30@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Standing release-gate PR:
v0.19-dev→v0.19This is a long-lived gate PR, not a normal feature PR. Do not merge ad-hoc.
Purpose
v0.19-devis the active integration branch for the v0.6 fee work. Individual PRs merge intov0.19-devand only need to pass normal repo CI — they are not blocked on the full cross-repo release train being green.v0.19-devis promoted tov0.19. It waits for cross-repo E2E (the release train) to go green before it is merged.v0.19-dev.How to use
v0.19".(Mirrors genlayerlabs/genlayer-consensus#1070.)