{"id":31923318,"url":"https://github.com/fuellabs/fuel-vm","last_synced_at":"2026-04-16T22:02:13.012Z","repository":{"id":37593638,"uuid":"373013401","full_name":"FuelLabs/fuel-vm","owner":"FuelLabs","description":"Fuel v2 interpreter in Rust","archived":false,"fork":false,"pushed_at":"2026-04-09T20:03:09.000Z","size":418435,"stargazers_count":373,"open_issues_count":46,"forks_count":96,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-04-16T04:10:31.639Z","etag":null,"topics":["blockchain","fuel","vm"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FuelLabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-06-02T02:13:24.000Z","updated_at":"2026-03-23T20:51:25.000Z","dependencies_parsed_at":"2024-02-05T03:28:33.763Z","dependency_job_id":"381b1ce7-e41d-4d6f-a4a5-55fbbb94a02d","html_url":"https://github.com/FuelLabs/fuel-vm","commit_stats":{"total_commits":561,"total_committers":34,"mean_commits":16.5,"dds":0.7896613190730838,"last_synced_commit":"606c6b0f6b016df97f08656d60488feed29a65fd"},"previous_names":[],"tags_count":115,"template":false,"template_full_name":null,"purl":"pkg:github/FuelLabs/fuel-vm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FuelLabs%2Ffuel-vm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FuelLabs%2Ffuel-vm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FuelLabs%2Ffuel-vm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FuelLabs%2Ffuel-vm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FuelLabs","download_url":"https://codeload.github.com/FuelLabs/fuel-vm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FuelLabs%2Ffuel-vm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31905895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","fuel","vm"],"created_at":"2025-10-13T23:49:18.012Z","updated_at":"2026-04-16T22:02:12.976Z","avatar_url":"https://github.com/FuelLabs.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fuel execution environment\n\n [![build](https://github.com/FuelLabs/fuel-vm/actions/workflows/ci.yml/badge.svg)](https://github.com/FuelLabs/fuel-vm/actions/workflows/ci.yml)[![discord](https://img.shields.io/badge/chat%20on-discord-orange?\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2)](https://discord.gg/xfpK4Pe)\n\n\nThe repository contains crates implementing the \n[FuelVM specification](https://github.com/FuelLabs/fuel-specs/blob/master/src/fuel-vm/index.md) \nused by [fuel-core](https://github.com/FuelLabs/fuel-core) \nand [the Sway compiler](https://github.com/FuelLabs/sway/).\n\n## Crates living here\n\n| Crate        | Version                                                                                             | Description                                                                                                                                                                                                                        | \n|--------------|-----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| \n| fuel-asm     | [![crates.io](https://img.shields.io/crates/v/fuel-asm)](https://crates.io/crates/fuel-asm)         | Contains the FuelVM instruction set - opcodes used by the Sway and VM.                                                                                                                                                             | \n| fuel-compression | [![crates.io](https://img.shields.io/crates/v/fuel-compression)](https://crates.io/crates/fuel-compression)   | DA-layer compression of Fuel transaction types | \n| fuel-crypto  | [![crates.io](https://img.shields.io/crates/v/fuel-crypto)](https://crates.io/crates/fuel-crypto)   | Cryptographic primitives used across Fuel Rust based projects.                                                                                                                                                                     | \n| fuel-merkle  | [![crates.io](https://img.shields.io/crates/v/fuel-merkle)](https://crates.io/crates/fuel-merkle)   | Implementations of the Merkle Tree used by the `fuel-core` to fulfill fraud proofs requirements, and `fuel-tx` to validate transaction validity.                                                                                   | \n| fuel-storage | [![crates.io](https://img.shields.io/crates/v/fuel-storage)](https://crates.io/crates/fuel-storage) | Storage abstraction is used to connect FuelVM, `fuel-merkle`, and `fuel-core` together without direct access.                                                                                                                      | \n| fuel-tx      | [![crates.io](https://img.shields.io/crates/v/fuel-tx)](https://crates.io/crates/fuel-tx)           | Contains a definition of types from the specification, with canonical serialization and deserialization. The `Transaction` and `Checked\u003cTx\u003e` type implements fee calculation and validation of rules defined by the specification. | \n| fuel-types   | [![crates.io](https://img.shields.io/crates/v/fuel-types)](https://crates.io/crates/fuel-types)     | Atomic types are used by almost all Fuel Rust-based crates. The crate defines the most common entities and implements their serialization/deserialization.                                                                         | \n| fuel-vm      | [![crates.io](https://img.shields.io/crates/v/fuel-vm)](https://crates.io/crates/fuel-vm)           | The VM itself executes `fuel-asm` opcodes generated by the Sway compiler. It is used as a core component of the `fuel-core` block executor to validate, estimate, and execute `Create` and `Script` transactions.                  | \n\n## Testing\n\nThe [ci_checks.sh](ci_checks.sh) script file can be used to run all CI checks, \nincluding the running of tests.\n\n```shell\nsource ci_checks.sh\n```\n\nThe script requires pre-installed tools. For more information run:\n\n```shell\ncat ci_checks.sh\n```\n\n## Bug reporting and reproduction\n\nIf you find any bug or unexpected behavior, please open an issue. It would be helpful to provide a scenario of how to reproduce the problem:\n- A text description of the problem(maybe with links)\n- A runnable script with instruction\n- A repository with reproduction code and instructions on how to compile/run\n- A unit test with the usage of the pure opcodes from `fuel-asm`\n\n### How to use pure opcodes\n\nThe `fuel-vm` has many [unit tests](https://github.com/FuelLabs/fuel-vm/tree/master/fuel-vm/src/tests), almost for each opcode.\nSupporting a huge test codebase requires proper test utils that you can re-use to reproduce a bug.\n\n#### Add a new test case\n\nIf a specific opcode has unexpected behaviors, maybe there is a unit test \nalready that you can reuse to reproduce a bug. You need to add a new `test_case` like:\n\n```rust\n#[test_case(JumpMode::RelativeIS, 0, 0, 100 =\u003e Ok(4); \"is-relative jump\")]\n```\n\nBefore the test and run this specific test or all tests.\n\n#### Build custom scripts\n\nIf you need to write your own specific script and run it, you can use `test_helpers::run_script`.\n\nFor example:\n\n```rust\n#[test]\nfn dynamic_call_frame_ops_bug_missing_ssp_check() {\n    let ops = vec![\n        op::cfs(RegId::SP),\n        op::slli(0x10, RegId::ONE, 26),\n        op::aloc(0x10),\n        op::sw(RegId::ZERO, 0x10, 0),\n        op::ret(RegId::ONE),\n    ];\n    let receipts = run_script(ops);\n    assert_panics(\u0026receipts, PanicReason::MemoryOverflow);\n}\n```\n\nIt returns `receipts` that contain result of execution. The `assert_panics` can be used to check for panics.\n\n#### Build custom transactions\n\nThe `fuel-tx` provides `fuel_tx::TransactionBuilder` that simplifies the building \nof custom transaction for testing purposes.\n\nYou can check how `TransactionBuilder::script` or `TransactionBuilder::create` are used for better understanding.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuellabs%2Ffuel-vm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuellabs%2Ffuel-vm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuellabs%2Ffuel-vm/lists"}