Skip to content

chore(deps): bump dawidd6/action-download-artifact from 12 to 14#275

Merged
dmitry123 merged 1 commit intodevelfrom
dependabot/github_actions/dawidd6/action-download-artifact-14
Feb 12, 2026
Merged

chore(deps): bump dawidd6/action-download-artifact from 12 to 14#275
dmitry123 merged 1 commit intodevelfrom
dependabot/github_actions/dawidd6/action-download-artifact-14

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Feb 3, 2026

Bumps dawidd6/action-download-artifact from 12 to 14.

Release notes

Sourced from dawidd6/action-download-artifact's releases.

v14

What's Changed

Full Changelog: dawidd6/action-download-artifact@v13...v14

v13

What's Changed

New Contributors

Full Changelog: dawidd6/action-download-artifact@v12...v13

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 12 to 14.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](dawidd6/action-download-artifact@v12...v14)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '14'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code labels Feb 3, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 3, 2026

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • 🔍 Trigger a full review

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 3, 2026

Criterion results (vs baseline)

Heads-up: runner perf is noisy; treat deltas as a smoke check.

@dmitry123 dmitry123 merged commit 54f033e into devel Feb 12, 2026
8 checks passed
@dmitry123 dmitry123 deleted the dependabot/github_actions/dawidd6/action-download-artifact-14 branch February 12, 2026 12:22
dmitry123 added a commit that referenced this pull request Feb 16, 2026
* docs(contracts): fix incorrect link (#189)

* fix: migrate wasm to the latest version (#193)

* fix: migrate wasm to the latest version

* fix: update lock files

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(sdk-derive): add constructor macro and docs

* refactor(router): remove function_id attribute from generated code

Remove function_id attributes from generated impl blocks and eliminate
the unnecessary import statement. The function_id attributes are already
processed during macro expansion and don't need to be present in the
final generated code.

This change makes the generated code cleaner and removes the dependency
on an empty proc macro that was only acting as a placeholder.

* fix(constructor): fix undefined variable error in deploy method

Fix the deploy method generation that was incorrectly referencing
undefined variables (param0, param1, param2) in the else branch.
The shared generate_deploy_body method now properly handles all
parameter counts without conditional branches.

Refactor duplicate code between router and constructor macros into
a shared method in ParsedMethod for better maintainability.

* refactor(derive): unify Contract and Storage macros

Remove redundant Contract implementation and unify it with Storage macro.
Both macros now share the same underlying implementation, with Contract
for main contracts and Storage for nested structures.

BREAKING CHANGE: The old Contract macro implementation has been replaced.
Projects using #[derive(Contract)] should still work but now use the
Storage implementation under the hood.

* chore: bump to v0.4.6-dev

* feat(universal-token): universal token implementation for cross-runtime interaction (#180)

* feat(svm): extract erc20 available actions to reuse inside spl-token processing

* feat(svm): fix root Makefile; fix cargo.toml of solana-program-state-usage

* feat(universal-token): universal token: refactor; get rid of custom logic (reuse as much token2022 logic as possible); added authorization validation and significantly simplified accounts reconstruction logic, instruction type validation, action type validation; adapted unite tests from token2022; added e2e tests demonstrating token creation, initialisation, transfers etc; added e2e tests showing work through solana app (using cpi)

* feat(universal-token): support multiple universal token contracts per address when creating through solana app

* feat(universal-token): split some svm codebase for reuse

* feat(universal-token): added events logging through emit_log for all significant events

* feat(universal-token): added ABI mappings + e2e tests

* feat(universal-token): added ABI mappings

* feat(universal-token): added ABI mappings

* feat(universal-token): added ABI mappings

* feat(universal-token): added benchmark

* feat(universal-token): fix benchmark

* feat(universal-token): refactor abi params

* feat(universal-token): fix tests

* feat(universal-token): added approve and revoke ABIs

* feat(universal-token): added the rest ABI mappings, some tests, parameters ser/deser impls

* feat(universal-token): tests for approve, set-authority, burn

* feat(universal-token): tests for freeze, thaw

* feat(universal-token): tests for close_account

* feat(universal-token): small fixes

* feat(universal-token): sync params for signatures; added support for allowance

* feat(universal-token): added support for requesting account decimals

* feat(universal-token): small fixes

* feat(universal-token): disable error text output checks in e2e

* feat(universal-token): cover error text output checks in e2e with feature

* feat(universal-token): replace some expects with error mapping

* feat(universal-token): cleanup

* feat(universal-token): fix bench

* feat(universal-token): fix typo

* feat(universal-token): fix balance for bench

* feat(universal-token): change settings for benches

* feat(universal-token): cleanup

* feat(universal-token): rename

* feat(universal-token): cleanup

* feat(universal-token): more tests for svm using universal token

* added more test for universal token when working through svm cpi; fix deps problem when building solana_program example

* feat(build): add standalone constructor macro support for abi generation

- Parse #[constructor] attributes in addition to #[router]
- Extract struct definitions from constructor parameters
- Prioritize standalone constructors over router-embedded ones
- Maintain backward compatibility with existing router-only contracts

* refactor(runtime): new runtime & runtime bug fixes (#191)

* refactor(runtime): make runtime lock-free, fix issue with warming up cache from a different thread, make import-linker arc, add warmup for all evm precompiled contracts in evm-e2e tests

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: fix bug with removing fuel opcodes for runtime contracts, new execution runtime w/ wasmtime disabled, fix passing full evm e2e testing suite

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(runtime): new execution runtime, add bench pipeline, run wasmtime & rwasm tests in CI/CD, new revm-rwasm with `RwasmModule` cache, temporarly disable incepstor, add heap reset extern function, fix wasmtime warmups

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* ci: fix running bench

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* ci: fix running bench

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(runtime): add docs for runtime crate

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* ci: fix benches

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* ci: update criterion (it has baseline option)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* ci: ignore tests in benches

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* ci: fix running benches

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* ci: let's build w/o baseline

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(revm): fix revm inspector (now it extracts stack params that are important for explorer internal transfer indexing) (#196)

* fix(revm): fix revm inspector (now it extracts stack params that are important for explorer internal transfer indexing)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: disable blake2f tests from good coverage tests

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: bump version to v0.4.7-dev

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: loosing stack for inspector in release mode (#197)

* chore: bump version to v0.4.8-dev

* fix: add missing reset `call_id` function (#198)

* fix: missing `call_id` reset for system calls (#199)

* chore: bump version to v0.4.9-dev, update rwasm dependency (w/ disabled wasmtime parallel builds)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat: implement new runtime upgrade (#200)

* fix: bump version to v0.4.10-dev

* feat(weierstrass-curves): new crypto runtime (#201)

* feat(runtime): refactoring weierstrass curves: bls, bn254, and 256k1/r1

* feat(e2e): fixed the svm compatibility

* feat(runtime): remove redundant curve implementations, tests pass

* feat(runtime)!: refactoring SyscallWeierstrassPairingAssign

* fix(contracts/bn256): removed unused imports

* fix(evn-e2e): disabled wasmtime feature

* refactor: rename weierstrass into ecc (less misleading)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(runtime): clean up the ecc syshandlers

* fix(runtime): removed the commented snippets

* refactor(runtime): moved fp/fp2 ops away from ecc

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor(runtime): reimplemented ed25519 ops in the runtime

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor(runtime): move edwards, refactor ecrecover, implement u256 mul ops, remove bigmodexp, make keccak256 self-free

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor(runtime): add tower fields fp1/fp2 support

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(runtime): fix warnings

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(runtime): fix compilation

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor(runtime): move types into sdk, remove types crate, add new crypto crate for optimized crypto ops

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(crypto): expose mods

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(crypto): rename `MathAPI` into `CryptoAPI`

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor(sdk): return types crate back, refactor hashing func, refactor crypto builtins

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor(sdk): fix cycle dependency, missing features, warnings, replace hashing function with the ones from new crypto crate

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(sdk): remove impossible test

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(contracts): update ecrecover to make it work

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor: update hashing, add new tests, reimplement hashing functions for eth

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(sha256): fix bug with incorrect endianess for sha256 compress/extend, enable new sha256 precompile

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: adjust block fuel for wasm applications, move

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(e2e): fix running router tests, tiny refactored artifacts

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor(runtime): new syscalls for unconstrained execution and for fd write, rename remaining host syscalls to the new naming format, add uint25 syscalls into native-api

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(runtime): add rwasm-patches, Weierstrass add, double

* refactor(runtime): benches fix

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor(runtime): a giant refactoring of all syscalls to make sure all params are aligned, remove all syscalls we can't support, reformat all constants

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: incorrect number of params for tower fields

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: encoding weierstrass point result, compatibility with evm bn256 tests

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: contract/bls12381 -> revm_precompile + rwasm-patches

* fix: contracts/bn256 uses the runtime implementation for add

* fix(types): fix _ed25519_decompress and _ed25519_add signatures

* fix(contracts): add the validation for the bn254_add input data

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>
Co-authored-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(build): reduce docker image size and persist vol

- mv example project creation to the dockerfile
- remove redundunt tools from docker image
- fix sccache usage

* chore: migrate rwasm, revm deps to crates.io

* fix(webauthn): handle secp256r1 precompile errors properly

* fix(runtime): remove unused module param from engine.resume

* refactor(docker): simplify build and improve cache warming

- Add sdk_version input for manual builds
- Auto-extract version from Cargo.toml for tagged releases
- Improve cache warming with sccache and realistic dummy contract
- Remove unused build args and submodule checkout
- Streamline Dockerfile stages

* ci: temporary disable cache

* ci: fix version and sdk derivation for manual workflow dispatch

* ci: fix version and sdk derivation for manual workflow dispatch

* ci: fix branch or version passing

* ci: fix branch or version passing

* ci: disable cache export

* chore: bump version to the v0.4.11-dev

* fix(syscall): propagate database errors in BLOCKHASH syscall (#209)

Context: BLOCKHASH was silently converting database errors to zero hash using 'unwrap_or(B256::ZERO)', violating EVM spec which requires zero only for out-of-range blocks, not database failures.

Change: Replace 'ctx.block_hash().unwrap_or()' with 'ctx.db_mut().block_hash()?' to propagate errors. Add comprehensive test suite with FailingMockDatabase to verify error propagation.

Rationale: Database I/O errors are fatal and must surface to caller. Masking them as successful zero results breaks error handling and makes debugging impossible.

Verification: Added 4 tests covering database error propagation, future blocks, and blocks older than 256. Test 'test_block_hash_database_error_is_propagated' explicitly verifies Err() is returned for DB failures.

Risk: Existing code relying on silent error suppression will now receive Err() instead of Ok(zero). This is correct behavior per EVM spec.

* chore(deps): bump actions/download-artifact from 5 to 6 (#228)

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/upload-artifact from 4 to 5 (#227)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: remove fluentbase-cli as it's no longer needed (#230)

Remove the fluentbase-cli binary and all its dependencies. The CLI
was mainly used for contract verification, which has been moved to
the blockscout-rs/fluent-verifier service.

* chore(deps): bump actions/setup-node from 5 to 6 (#212)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/checkout from 4 to 5 (#203)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump dawidd6/action-download-artifact from 3 to 11 (#202)

Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 3 to 11.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v3...v11)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '11'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* refactor: new gas/fuel calculation model (#217)

* fix: new gas/fuel calculation model (all gas checks happen inside revm, but we sync diff in evm runtime), don't sync refunds with evm (now they're managed inside revm runtime), interruption return total gas spent, remove `is_gas_free` check from the runtime, halt execution in-case of OOG for syscalls, new rwasm where value/stack potential vulnerability is not possible physically, remove `charge_fuel_manually` system builtin from NativeAPI (we keep it only for backward compatibility),  add e2e tests for interruption OOG checks, add new balance example

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: remove unused comment

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: update rwasm with fixed `try_consume_fuel` for wasmtime mode

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: don't use wasmtime by default for evm e2e tests

* chore: run tests in makefile on make

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: don't wipe output or return data during the interruption (#218)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(syscall): handle ed25519 decompression failure gracefully (#213)

Replace 'decompress().expect()' with pattern matching to prevent panic on invalid Y coordinates. Returns 'ExitCode::MalformedBuiltinParams' instead of crashing the VM.

Prevents DoS attacks where untrusted callers provide invalid curve points (e.g., Y=2 which is not on Ed25519 curve).

Verification: Added test with mathematically invalid Y coordinate that confirms error return instead of panic.

* fix(runtime): fix offset overflow in input/output system builtins (#223)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(syscall): prevent gas abuse in EXTCODECOPY by enforcing offset an… (#208)

* fix(syscall): prevent gas abuse in EXTCODECOPY by enforcing offset and length

Context: Gas abuse vulnerability allowed requesting small length but receiving full bytecode, bypassing gas charges. Additionally, offset parameter was ignored, causing incorrect data copies and storage mismatches.

Change:
- Syscall now applies offset and length correctly, returns exact requested bytes with zero padding
- Gas charged for requested length (not actual bytecode size) prevents abuse
- Opcode handler updated to use syscall data directly without re-applying offset
- Added comprehensive unit tests covering gas abuse scenarios and edge cases

Rationale: Enforcing offset/length in syscall prevents attackers from paying for 10 bytes but receiving full contract bytecode. EVM-compatible padding ensures correct storage values and maintains protocol semantics.

Verification:
- Unit tests validate gas charging matches requested length even when bytecode is shorter
- Integration tests 'extCodeCopyBounds' and 'ExtCodeCopyTestsParis' now pass
- Gas formula verified: base_cost (100/2600) + 3 * ceil(length/32)

Impact: Fixes critical gas abuse vector and storage corruption issues. No breaking changes to legitimate usage patterns.

* chore: fix fmt issues

* test(syscall): remove redundant code_copy test cases

* fix(syscall): add static context checks to metadata syscalls (#211)

Context: Three metadata syscalls were missing 'is_static' validation, allowing state modifications during STATICCALL contexts, which violates EVM semantics where static calls must be read-only.

Change: Added 'StateChangeDuringStaticCall' guards to:
- SYSCALL_ID_METADATA_CREATE (before 'set_code')
- SYSCALL_ID_METADATA_WRITE (before metadata modification)
- SYSCALL_ID_METADATA_STORAGE_WRITE (before 'sstore')

Rationale: Aligns metadata syscalls with existing pattern used in STORAGE_WRITE, EMIT_LOG, DESTROY_ACCOUNT, and CREATE operations. Prevents malicious contracts from persisting changes through view/pure functions.

Verification: Checks placed after parameter validation but before any journal mutations, consistent with other state-changing syscalls.

Impact: Contracts attempting metadata mutations during STATICCALL will now correctly revert with StateChangeDuringStaticCall error.

* fix(syscall): replace metadata partial write with full rewrite (#210)

Context: Previous implementation used resize() with offset+length which caused unintended truncation when writing shorter data than existing metadata, leading to silent data loss.

Change: SYSCALL_ID_METADATA_WRITE now performs full metadata replacement instead of offset-based partial writes. Offset parameter is parsed but ignored for backward compatibility.

Rationale:
- Eliminates truncation bug where resize(offset+length) would silently delete trailing bytes
- Prevents DoS via large offset values causing memory exhaustion
- Simplifies logic by removing complex offset handling
- Matches actual usage pattern (always full rewrites in practice)

Verification: Added regression test that fails on old version (offset=2 produces 4 bytes) but passes on new version (full rewrite produces 4 bytes as intended).

Impact: Calls using non-zero offset will now ignore the offset and perform full replacement. Users needing partial updates must implement read-modify-write pattern.

Co-authored-by: Dmitry Savonin <3367605+dmitry123@users.noreply.github.com>

* fix(runtime): prevent call_id collision across transaction boundaries (#214)

Change: Clear recoverable_runtimes HashMap in reset_call_id_counter() to prevent dangling runtimes from failed transactions. Added overflow protection for call_id allocation and debug_assert to detect collisions. Replaced AtomicU32 with u32 since single-threaded access is guaranteed.

Rationale: Failed transactions left runtimes in HashMap. When next transaction reset counter to 1, it could collide with dangling call_id, causing HashMap.insert() to silently overwrite old runtime. This led to memory leaks and potential security issues where resume() could execute wrong runtime context.

Verification: Added test_call_id_overflow() for overflow handling.

* audit(fix-weierstrass-decompress): fix weierstrass syscall implementations (#222)

* fix(runtime): fix weierstrass decompress, remove `bn254_decompress` as it's not-supported, fix incorrect secp256k/r1 consts and compressed key encoding format

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(runtime): fix using incorrect function for secp256r1

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: incorrect input param index (#229)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(runtime): add LRU cache with memory limits to module factory (#216)

Context: Module factory was using unbounded HashMap causing memory leaks as compiled modules accumulated without eviction

Change: Replace HashMap with schnellru LruMap for both RwasmModule and wasmtime::Module caches. Implement ModuleMemoryLimiter with SizeEstimator trait for accurate memory tracking. Switch from RwLock to Mutex since LRU requires mutable access on get()

Rationale: LRU eviction prevents unbounded memory growth while keeping hot modules cached. Generic ModuleMemoryLimiter<V> with SizeEstimator trait allows different size calculations for RwasmModule (sum of sections) vs wasmtime::Module (image_range). Mutex is faster than RwLock when all operations need write access

Verification: Added tests for memory limit enforcement, eviction ordering, and LRU access pattern updates

Impact: Memory usage capped at 1 GB per cache (2 GB total). Older unused modules will be evicted automatically.

Co-authored-by: Dmitry Savonin <3367605+dmitry123@users.noreply.github.com>

* fix(syscall): prevent frontrun attacks in metadata account creation (#204)

Context: SYSCALL_ID_METADATA_CREATE was vulnerable to frontrunning
where attacker could send funds to derived address before creation,
causing legitimate create to fail on is_empty() check.

Change: Modified collision detection in SYSCALL_ID_METADATA_CREATE
to check only code_hash and nonce, excluding balance from emptiness
check. This allows creation even if address has received funds.

Rationale: Balance-based emptiness check enables DoS via frontrunning.
Checking code_hash != KECCAK_EMPTY and nonce != 0 ensures address
has no deployed code while allowing pre-funded accounts.

Verification: Added test_metadata_create() that creates ownable
account with pre-funded balance and verifies correct derivation,
owner assignment, and metadata preservation.

Risk: Accounts can now be created at addresses with existing balance.
This is intentional and matches Ethereum CREATE2 behavior.

Co-authored-by: Dmitry Savonin <3367605+dmitry123@users.noreply.github.com>

* chore: clean evm e2e debug print (#221)

* refactor(address): rename 'calc_create4_address' to 'calc_create_metadata_address' (#205)

Context: The function name 'create4' was misleading and didn't clearly convey its purpose of deriving metadata-specific addresses.

* fix: fix compilation because of create4 function call

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(runtime): disable `write_fd` syscall since it can cause node panic (#231)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(runtime): fix sub underflow for fp1/fp2 ops (#225)

* fix(runtime): fix sub underflow for fp1/fp2 ops

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: return malformed builtin params in case of underflow inside fp1/fp2 ops

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(runtime): fix missing malformed builin params check for fp2 ops

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(runtime): remove todo from fp1 syscall

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(runtime): add check for add of the same point for weierstrass curve (#224)

* fix(runtime): add check for add of the same point for weierstrass curve

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(runtime): add mod overflow check for weierstrass add operations (to make sure underflow can't happen)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(revm): unwrap code hash after bytecode check (#232)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(revm): make sure context is clear after wasm deployment (#233)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(runtime): fix BE/LE confusion for wierstrass decompress operations (add comments, docs, and convert before doing syscall) (#234)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>
Co-authored-by: d1r1 <61736932+d1r1@users.noreply.github.com>

* fix(fuel): add quadratic fuel charging for EXEC input to prevent DoS (#239)

* fix: reduce FUEL_DENOM_RATE from 1000 to 20 for production

Context: Previous FUEL_DENOM_RATE of 1000 was based on outdated benchmarks. New measurements show WebAssembly instructions are ~20x faster than EVM instructions, not 1000x.

Change: Updated FUEL_DENOM_RATE constant in crates/types/src/lib.rs from 1000 to 20 for production builds. Added 'fluent-testnet' feature flag across workspace to preserve legacy rate (1000) for backward compatibility with existing testnet deployments.

Rationale: Corrects gas cost calculations to match actual performance characteristics. Feature flag prevents breaking existing testnet infrastructure during transition period.

Verification: Benchmarks confirm 20x performance ratio. Feature propagation tested through build system.

Risk: Changes gas consumption calculations for all WASM contract executions
Impact: mainnet (new default), testnet (preserved via feature flag)

BREAKING CHANGE: Production FUEL_DENOM_RATE reduced by 50x affects gas costs for all WASM contracts. Testnet preserves old behavior with fluent-testnet feature.

* feat(gas): enable upper-rounding for fuel denomination charging

Context: Deprecated record_denominated_cost and record_denominated_refund methods used floor division, causing undercharging (e.g., 25 fuel → 1 gas instead of 2).

Change: Replaced deprecated methods with direct gas recording in executor.rs. Production uses ceiling division (fuel+rate-1)/rate for costs, floor division fuel/rate for refunds. Testnet (fluent-testnet feature) preserves legacy floor division for backward compatibility. Added cfg-if dependency for conditional compilation.

Rationale: Ceiling division prevents undercharging by always rounding up gas costs. Floor division for refunds prevents over-refunding. Feature flag maintains testnet compatibility during transition.

Impact: Production charges gas accurately with ceiling rounding. Testnet unchanged with fluent-testnet feature.

* test: clarify CALL_FUEL_COST in builtin gas tests

Replace magic +1 with explicit CALL_FUEL_COST constant to show that
every WASM call instruction consumes 1 fuel unit, added by the rwasm
translator during compilation.

* feat: rebase to the new gas strategy

* fix(fuel): add quadratic fuel charging for EXEC input to prevent DoS

Previously, EXEC syscall charged constant fuel regardless of input size,
allowing attackers to submit massive payloads (up to 32MB) while paying
minimal gas. This created a DoS vector where nodes performed O(L) memory
operations nearly for free.

Changes:
- Add quadratic fuel charging for EXEC input using EVM memory expansion
  formula: fuel = (3×words + words²/512) × FUEL_DENOM_RATE
- Define FUEL_MAX_QUADRATIC_X = 1.25MB safe limit to prevent i32 overflow
- Add comprehensive test verifying gas costs match EVM Yellow Paper spec

The fix ensures gas costs scale appropriately with input size, preventing
economic mismatch between metered and actual resource consumption.

* fix(block_fuel): improve fuel calculation limits and add missing crypto costs

- Update FUEL_MAX_LINEAR_X from 256KB to 128MB with proper derivation
  documenting i32 overflow constraints in WASM runtime
- Add fuel costs for secp256r1 curve operations (ADD, DOUBLE, DECOMPRESS)
- Add fuel costs for BLS12381 DECOMPRESS and DOUBLE operations
- Handle ENTER_UNCONSTRAINED, EXIT_UNCONSTRAINED, and WRITE_FD syscalls
- Remove catch-all _ => no_fuel!() pattern for exhaustive matching

* fix(types): use MAX_WORDS in linear_fuel compile-time overflow check

The compile-time check incorrectly used x directly instead of words,
causing assertion failure with large FUEL_MAX_LINEAR_X values.
Now consistent with quadratic_fuel macro and runtime calculation.

* test(e2e): update overflow test value for new FUEL_MAX_LINEAR_X limit

Increase test value from 300KB to 135MB to exceed the new 128MB limit.

* fix: audit code maintenance fixes (#243)

* fix(syscall): validate exact address length in METADATA_ACCOUNT_OWNER

Change address length check from >= 20 to == 20 to reject malformed
input data with trailing bytes.

* fix(runtime): add #[must_use] to try_consume_fuel

Prevents callers from accidentally ignoring fuel consumption errors.

* perf(syscall): skip unnecessary resize in pad_to_be

Only resize when len > bytes.len() to avoid redundant allocations.

* docs(syscall): document argument constraints for weierstrass operations

Add input format, validation behavior, and safety requirements
for add, double, and decompress curve point functions.

* fix(precompiles): pass caller's spec to inner EthPrecompiles

Previously used SpecId::default() which could cause runtime behavior
to diverge from expected fork settings.

* refactor(runtime): move TestingStore to testing crate

TestingStore contains unwrap/unreachable patterns that are acceptable
for test infrastructure but not production code. Move it to the testing
crate where it belongs.

* fix(runtime): replace unreachable!() with exhaustive match in syscall dispatcher

Remove wildcard match arm that used unreachable!() for unknown syscalls.
The match is now exhaustive, providing compile-time guarantees that all
SysFuncIdx variants are handled.

Also handle disabled WRITE_FD syscall explicitly by returning
TrapCode::UnreachableCodeReached instead of commenting it out.

* fix(syscall): fix blake3 function naming typo and consistency

Rename syscall_hashing_blak3_handler to syscall_hashing_blake3_handler
and inner function to syscall_hashing_blake3_impl for consistency
with other hashing functions.

* fix(syscall): add endianness guard for keccak256_permute

Add compile-time checks to prevent compilation on big-endian platforms
where transmute in into_lanes_le/from_lanes_le would produce incorrect results.

* fix(security): gate calldata-based precompile dispatch to testnet-only (#240)

* fix: reduce FUEL_DENOM_RATE from 1000 to 20 for production

Context: Previous FUEL_DENOM_RATE of 1000 was based on outdated benchmarks. New measurements show WebAssembly instructions are ~20x faster than EVM instructions, not 1000x.

Change: Updated FUEL_DENOM_RATE constant in crates/types/src/lib.rs from 1000 to 20 for production builds. Added 'fluent-testnet' feature flag across workspace to preserve legacy rate (1000) for backward compatibility with existing testnet deployments.

Rationale: Corrects gas cost calculations to match actual performance characteristics. Feature flag prevents breaking existing testnet infrastructure during transition period.

Verification: Benchmarks confirm 20x performance ratio. Feature propagation tested through build system.

Risk: Changes gas consumption calculations for all WASM contract executions
Impact: mainnet (new default), testnet (preserved via feature flag)

BREAKING CHANGE: Production FUEL_DENOM_RATE reduced by 50x affects gas costs for all WASM contracts. Testnet preserves old behavior with fluent-testnet feature.

* feat(gas): enable upper-rounding for fuel denomination charging

Context: Deprecated record_denominated_cost and record_denominated_refund methods used floor division, causing undercharging (e.g., 25 fuel → 1 gas instead of 2).

Change: Replaced deprecated methods with direct gas recording in executor.rs. Production uses ceiling division (fuel+rate-1)/rate for costs, floor division fuel/rate for refunds. Testnet (fluent-testnet feature) preserves legacy floor division for backward compatibility. Added cfg-if dependency for conditional compilation.

Rationale: Ceiling division prevents undercharging by always rounding up gas costs. Floor division for refunds prevents over-refunding. Feature flag maintains testnet compatibility during transition.

Impact: Production charges gas accurately with ceiling rounding. Testnet unchanged with fluent-testnet feature.

* test: clarify CALL_FUEL_COST in builtin gas tests

Replace magic +1 with explicit CALL_FUEL_COST constant to show that
every WASM call instruction consumes 1 fuel unit, added by the rwasm
translator during compilation.

* feat: rebase to the new gas strategy

* fix(security): gate calldata-based precompile dispatch to testnet-only

Restrict UPDATE_GENESIS_AUTH and calldata-based precompile dispatch behind
'fluent-testnet' feature flag to address audit findings. This prevents:
- Arbitrary bytecode deployment if privileged key is compromised
- Non-standard precompile invocation via calldata prefix (violates EIP-1352)

Changes:
- Add feature gates to frame_init() handler
- Update fuel_to_gas for mainnet ceiling division
- Disable affected tests (multicall, update_account) on mainnet
- Add comprehensive security documentation

Related: Audit recommendation to remove functionality for mainnet

---------

Co-authored-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(features): rm fluent-testing from features list

* feat(reusable-store): move system interruption processing outside of contracts entry for evm contract (#219)

* feat(reusable-store): move rust flags into .cargo config instead of build script, new evm & modexp runtime that supports reusable stores, implemented halted frames (only for system runtimes), add serde for interruption params, add error code `CreateContractStartingWithEF`, verify input params before parsing them inside syscall (to avoid potential memory ddos attack), pass params into syscall as offset/length instead of bytes, decompose entrypoint macro for better flexiability, new debug macro (more details, alloc-free, decompoiles in release)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(reusable-store): reduce default stack size to 1mb, moved precomiles to the new system runtime (blake2f, bls12381, bn256, ecrecover, eip7951, identity, kzg, modexp, ripemd160, sha256), disable several spam tests because of stack limits

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(reusable-store): fix potential stack leak in case of `OutOfFuel` trap code (replace with exit code)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(reusable-store): fix incorrect input length for metadata copy

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: put update account test under `fluent-testnet` feature

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: remove unused assert

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>
Co-authored-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(deps): bump actions/checkout from 5 to 6 (#238)

Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat(feat/svm-under-feature): put svm under feature (#237)

* feat(reusable-store): move rust flags into .cargo config instead of build script, new evm & modexp runtime that supports reusable stores, implemented halted frames (only for system runtimes), add serde for interruption params, add error code `CreateContractStartingWithEF`, verify input params before parsing them inside syscall (to avoid potential memory ddos attack), pass params into syscall as offset/length instead of bytes, decompose entrypoint macro for better flexiability, new debug macro (more details, alloc-free, decompoiles in release)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(reusable-store): reduce default stack size to 1mb, moved precomiles to the new system runtime (blake2f, bls12381, bn256, ecrecover, eip7951, identity, kzg, modexp, ripemd160, sha256), disable several spam tests because of stack limits

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(reusable-store): fix potential stack leak in case of `OutOfFuel` trap code (replace with exit code)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(reusable-store): fix incorrect input length for metadata copy

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(feat/svm-under-feature): put svm under feature

* fix: update revm-primities dep

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: update lock files

* chore: fix incorrect merge

* fix: fix missing feature for update account test

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>
Co-authored-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: warning fixes

* feat: add calculate_syscall_fuel function

* feat: rework import linker to syscall params

* feat: rework import linker with macros

* chore: change patcher to tmp branch

* test: turn off fuel consuming for wasmtime in evm-e2e tests

* fix(block_fuel): improve fuel calculation limits and add missing crypto costs

- Update FUEL_MAX_LINEAR_X from 256KB to 128MB with proper derivation
  documenting i32 overflow constraints in WASM runtime
- Add fuel costs for secp256r1 curve operations (ADD, DOUBLE, DECOMPRESS)
- Add fuel costs for BLS12381 DECOMPRESS and DOUBLE operations
- Handle ENTER_UNCONSTRAINED, EXIT_UNCONSTRAINED, and WRITE_FD syscalls
- Remove catch-all _ => no_fuel!() pattern for exhaustive matching

* feat: add quadratic fuel for syscalls

* chore: fix dependencies

* feat: add quadratic and fuel max consts to fluentbase types crate exports

* feat: update rwasm to current branch

* feat(v102): migrated revm to version v102 (#248)

* feat(v102): migrated revm to version v102

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(v102): disable debug print

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: add fatal execution code for OOM and other cases inside system runtime (#245)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: add veridise audit report

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* feat(sdk-derive): event derive macro for solidity-compatible logs (#246)

- #[derive(Event)] generates emit() for EVM logs
- #[indexed] for topic fields, #[anonymous] for no-signature events
- compile-time selector, runtime encoding via SolidityABI
- replaces alloy-sol-types in ERC20 example

* chore(deps): bump codecov/codecov-action from 5.5.1 to 5.5.2 (#250)

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.1 to 5.5.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v5.5.1...v5.5.2)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: building contracts w/o workspace, new universal token contract, make code storage 32-byte, tiny sdk types refactoring, remove universal token perf, a lot of universal token bug fixes, remove token2022 universal token implementation (#241)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>
Co-authored-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(deps): bump actions/upload-artifact from 5 to 6 (#253)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/download-artifact from 6 to 7 (#254)

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat(sdk-derive): add #[slot(expr)] attribute for explicit storage pos (#252)

* feat(sdk-derive): add #[slot(expr)] attribute for explicit storage positioning

Support explicit storage slot placement via #[slot(U256)] field attribute.
Fields with explicit slots bypass auto-layout and are excluded from SLOTS constant.

Also adds eip1967_slot! and erc7201_slot! compile-time helper macros.

* test(sdk-derive): fix snapshots

* fix: rollback bls12-381 to the original ethereum implementation (keep old one inside legacy.rs file) (#251)

* fix: rollback bls12-381 to the original ethereum implementation (keep old one inside legacy.rs file)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: add pre-check for gas & input size for bls12-381 precompiles

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: update lock file

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(webauthn): remove redundant check for closing quote (#256)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(evm): fix wrapping mul for evm call-opcodes (#255)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: fix syscall metadata copy potential crash (#249)

* fix: fix syscall metadata copy potential crash

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: add `is_static` check for metadata-write syscalls

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: fix bytecode hard-cap check for create/create2 syscalls

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: remove redundant `StateChangeDuringStaticCall` check

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(revm): fix metadata syscall overflow

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(fairblock): remove fairblock from repository (#260)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: fix project compilation

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: update rwasm to the latest with gas strategy fixes

* chore: update rwasm branch to the devel

* chore: small sdk fixes (#257)

* chore: small sdk fixes

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: enable EIP-7951, add more docs and comments for genesis config

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: add docs & comments, rename `RwasmRuntime` into `ContractRuntime`, remove unsused code (like `GlobalExecutor` or interruption state inside `SystemRuntime`)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: remove `inter_process_lock.rs` since it's unused

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(universal-token): universal token bug fixes (#258)

* fix(universal-token): fix incorrect token/symbol ABI encoding, fix missing `is_static` check for mutable methods, formated errors to be openzeppelin-complaint, add missing `is_zero` checks for transfers, fix incorrect error and signatures for ERC20, fix incorrect padding for event logs, fix missing storage slots for constructor, improved unit tests coverage

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(universal-token): don't charge allowance if `U256::MAX` was approved

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(universal-token): new test for checking that partial storages writes are not possible

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore(deps): bump dawidd6/action-download-artifact from 11 to 12 (#262)

Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 11 to 12.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v11...v12)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '12'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(oom): add OOM handler and e2e test for OOM case (#259)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(eip2935): bug fixes and refactoring (#263)

* fix(eip2935): fix BE encoding for input/output, migrate contract to new system runtime, add unit tests for eip2935 system contract, deprecate `system_entrypoint` macro, fix e2e unit tests for eip2935

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(eip2935): remove unused debug comment

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(eip2935): fix warning

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(runtime): fix weierstrass double crash in case of modulus overflow (#265)

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(module-factory): LRU cache replacement triggers eviction (#266)

- on_replace now allows LRU eviction instead of rejecting
- Add zero-size item rejection to prevent limit bypass
- Use saturating arithmetic to prevent overflow/underflow
- Assert max_bytes > 0 on construction
- Fix on_grow to always allow table growth
- Expand test coverage for edge cases

* feat(gas-charged-before-cold-state-operations): logic validating cold load cost upfront to prevent misuse (#267)

* feat(gas-charged-before-cold-state-operations): added logic validating cold load cost upfront to prevent missuse

* feat(gas-charged-before-cold-state-operations): rewrote to keep compatibility

* feat(gas-charged-before-cold-state-operations): gas limit fixes for e2e tests

* feat(gas-charged-before-cold-state-operations): modified gas checks for SYSCALL_ID_STORAGE_WRITE

* feat(gas-charged-before-cold-state-operations): added/fixed gas checks for SYSCALL_ID_CODE_HASH, SYSCALL_ID_CODE_COPY, SYSCALL_ID_CODE_SIZE

* feat(gas-charged-before-cold-state-operations): calculated max possible values for gas in gas pre-checks for SYSCALL_ID_CODE_COPY and SYSCALL_ID_CODE_SIZE

* feat(gas-charged-before-cold-state-operations): replaced gas pre-checks with load_account_info_skip_cold_load for CODE_COPY CODE_HASH CODE_SIZE BALANCE

* feat(gas-charged-before-cold-state-operations): gas pre-check rewrite for SYSCALL_ID_DESTROY_ACCOUNT

* feat(gas-charged-before-cold-state-operations): reimplemented gas pre-checks for SYSCALL_ID_CALL by reusing contents of load_account_delegated

* feat(gas-charged-before-cold-state-operations): unified and spread gas-checked version of Journal::load_account_delegated() accross staticcall, delegatecall and callcode

* feat(gas-charged-before-cold-state-operations): reuse process_journal_load_result and renamings; removed redundand checks for staticcall callcode and delegatecall

* chore: fix warning and import format

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix(revm): incorrect db error mapping

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>
Co-authored-by: Stas Stepanov <stepanovstanisl@gmail.com>
Co-authored-by: Dmitry Savonin <nwtsoas@gmail.com>

* fix: replace unsafe unreachable hint with exit code error (#268)

* fix(contracts): audit nitro contract (#261)

* fix: Missing check for certificate critical extensions in nitro precompile#17 + tests

* fix: Missing check for certificate timestamp validity in nitro precompile#16

* fix: Missing validation of attestation document for nitro precompile#15

* fix: auditor's comments

* refactor(migrate-system-contracts-to-new-runtime): migrating system contracts to new system runtime (#264)

* refactor: migrate blake2f to new system runtime v2, fix bug with crashing node with oom in case of system runtime trap

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor: migrate all evm systme contracts to new system runtime v2, fix bug with loosing return data in case of precompile error

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor: migrate nitro, oauth2, wasm, webauthn to the new system runtime

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: fix compilation warnings, update sp1-curves to the latest version

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* chore: fix nitro warning unused variable

* fix: don't allow to use fatal exit codes inside wasm contracts

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor: rename `HostTestingContext` to `TestingContextImpl` to match other naming conventions

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>

* refactor(evm): migrate evm runtime to new system runtime v2, fix compilation warnings

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* refactor(evm): remove old system runtime

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* refactor: tiny refactor of revm, add new comments/docs, move tests into separate file, don't forward balances and access lists into system contracts (not in use), tiny improvements

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>
Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix/(testnet-runtime-upgrade): fix running fluent-testnet unit tests (#270)

* fix(revm): fix revm compilation for fluent-testnet feature flag, fix update account unit tests

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: add fluent-testnet tests into makefile, add new ci/cd pipeline for running fluent-testnet unit tests

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

---------

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* feat(module-size-is-not-explicitly-bounded): added module size check for wasm contract (#269)

* feat(module-size-is-not-explicitly-bounded): added manual checks for contract size into the contract

* feat(module-size-is-not-explicitly-bounded): added manual checks for contract size into the contract

* feat(module-size-is-not-explicitly-bounded): lost features and functionality

* feat(module-size-is-not-explicitly-bounded): fixed problem with feature propagation and small changes to text errors

* feat(module-size-is-not-explicitly-bounded): fix for feature miss for release profile

* feat(module-size-is-not-explicitly-bounded): cover test with cfg(test)

* feat(module-size-is-not-explicitly-bounded): increased RWASM_MAX_CODE_SIZE test value to pass existing tests

* feat(module-size-is-not-explicitly-bounded): increased RWASM_MAX_CODE_SIZE test value to pass existing tests

* feat(module-size-is-not-explicitly-bounded): removed redundant comment + fixed params for test_locals_amplification_find_limit

* feat(module-size-is-not-explicitly-bounded): removed testing-enabled feature

* chore: remove extra constant, e2e test fixes

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* feat(module-size-is-not-explicitly-bounded): fix space

* fix(wasm): use exit code instead of panic, add comment for constant

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

---------

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>
Co-authored-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix: incorrect method for extend from slice in `write_fd.rs` (#273)

* fix: incorrect method for extend from slice in `write_fd.rs`

* fix: add test proving that oauth2 crash doesn't happen

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix: replace atomic u64 with u32

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* chore: warning fixes

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* chore: fix print for build script

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

---------

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix(runtime): add fuel metering for engine-metered precompiles (#276)

* fix(runtime): add fuel metering for engine-metered precompiles

NITRO_VERIFIER, OAUTH2_VERIFIER, WASM_RUNTIME, and WEBAUTHN_VERIFIER
were executing without charging gas because they don't self-meter via
`_charge_fuel` syscall.

Changes:
- Add ENGINE_METERED_PRECOMPILES list and is_engine_metered_precompile()
- Create wasmtime engine with consume_fuel=true and syscall_fuel_params
- Pass consume_fuel flag through executor to SystemRuntime
- Set fuel limit before execution and read remaining fuel after

* fix(runtime): rm debugging logs

* fix(eip2935): enable gas for EIP-2935 system smart contract

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix(universal-token): enable fuel metering for universal token

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix(eip2935): fix gas charge for success branches

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* chore: tiny comment fixes

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix(eip2935): missing denom rate multiplication

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix(eip2935): fix incorrect gas charge for eip2935 contract

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix(wasm): fix panic if wasm compilation runs out of fuel

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix(wasm): fix panic if wasm compilation runs unexpected error

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix: charge gas for warmed operations with universal token and eip2935

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix: remove double gas charge for eip2935 (it's charged during access list preparation now)

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

---------

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>
Co-authored-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* chore(deps): bump dawidd6/action-download-artifact from 12 to 14 (#275)

Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 12 to 14.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v12...v14)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '14'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat(new-rwasm-runtime): new wasmtime runtime (#277)

* fix(runtime): add fuel metering for engine-metered precompiles

NITRO_VERIFIER, OAUTH2_VERIFIER, WASM_RUNTIME, and WEBAUTHN_VERIFIER
were executing without charging gas because they don't self-meter via
`_charge_fuel` syscall.

Changes:
- Add ENGINE_METERED_PRECOMPILES list and is_engine_metered_precompile()
- Create wasmtime engine with consume_fuel=true and syscall_fuel_params
- Pass consume_fuel flag through executor to SystemRuntime
- Set fuel limit before execution and read remaining fuel after

* fix(runtime): rm debugging logs

* refactor(runtime): integrate new rwasm runtime (bring `no_std` support into runtime crate), fix incorrect tests for block fuel calculation, disable one failing evm test, enable wasmtime for evm execution by default, tiny fixes

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* chore: fix several typos and compilation warnings

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* feat: integrate new rwasm runtime into revm runtime

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* chore: apply suggestion from @coderabbitai[bot]

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>
Co-authored-by: d1r1 <me@d1r1.me>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* feat: switch rwasm to the latest devel version, replace tiny-keccak with migrated repository

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* feat: migrate revm to v103 (#279)

* feat: migrate revm to v103

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* chore: update revm-rwasm and wasm to the latest version

---------

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix: replace panics with ExitCode and fix typos in write_fd (#274)

* fix: use gas constants from revm v103 (#280)

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix: disable svm at workspace level, bridge compatibility with reth v1.10, new fluent binary (#281)

* fix: disable svm at workspace level, bridge compatibility with reth v1.10

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* feat: migrate fluent node binary with genesis config into fluentbase repository

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* feat: add docker files and makefile for building fluent binary

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* feat: remove json feature from sol-types

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* feat: replace reth with new version

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: add workflow for building fluent node with dry-run dispatch mode

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: remove sccache wrapper

* ci: fix release pipeline

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: enforce rust toolchain 1.90.0

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: enforce rust toolchain 1.92.0

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: enforce rust toolchain 1.90.0

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: enforce rust toolchain 1.92.0

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: enforce rust toolchain 1.92.0

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: enforce rust toolchain 1.92.0

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: replace slashes with dashes for version

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: fix incorrect artifact path

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: fix missing gpg signature for fluent binary

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: enable apple aarch64 and amd64 builds

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: disable apple aarch64 and amd64 builds for now

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* feat: download genesis files from github releases, remove genesis from repo

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix: tiny fixes for ci and docker builds

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

---------

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix(reqwest-native-tls): enable native tls for reqwest (#283)

* fix: enable native tls for reqwest

* chore: change println logs for fluent

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

---------

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: fix missing openssl dev for amd64 (#284)

* ci: fix missing openssl dev for amd64

* ci: fix openssl install

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: fix openssl install

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: replace native-tls with rustls

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: add missing pkgconfig

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: add docker pipeline, use native-tls for reqwest

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: downgrade reqwest to use ring tls instead of aws

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: fix incorrect build directory

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* ci: fix missing fluent artifact to be stored inside release

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

* fix: fix running benches

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

---------

Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>

---------

Signed-off-by: Dmitry Savonin <nwtsoas@gmail.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Dmitry Savonin <dmitry@fluentlabs.xyz>
Co-authored-by: Jaye Turner <jayeturnerjatu@gmail.com>
Co-authored-by: d1r1 <me@d1r1.me>
Co-authored-by: d1r1 <61736932+d1r1@users.noreply.github.com>
Co-authored-by: Stanislav Stepanov <105381376+bfdays@users.noreply.github.com>
Co-authored-by: chillhacker <85485830+chillhacker@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Stanislav Stepanov <stanislav@fluentlabs.xyz>
Co-authored-by: easy <shinbogdan@gmail.com>
Co-authored-by: Stanislav Stepanov <truebfday@gmail.com>
Co-authored-by: Stas Stepanov <stepanovstanisl@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Emirhan Yıldız <yildiz.emrhn@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant