• Stars
    star
    351
  • Rank 120,906 (Top 3 %)
  • Language
    Rust
  • License
    Other
  • Created over 3 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fuel v2 interpreter in Rust

Fuel execution environment

builddiscord

The repository contains crates implementing the FuelVM specification used by fuel-core and the Sway compiler.

Crates living here

Crate Version Description
fuel-asm crates.io Contains the FuelVM instruction set - opcodes used by the Sway and VM.
fuel-crypto crates.io Cryptographic primitives used across Fuel Rust based projects.
fuel-merkle crates.io Implementations of the Merkle Tree used by the fuel-core to fulfill fraud proofs requirements, and fuel-tx to validate transaction validity.
fuel-storage crates.io Storage abstraction is used to connect FuelVM, fuel-merkle, and fuel-core together without direct access.
fuel-tx crates.io Contains a definition of types from the specification, with canonical serialization and deserialization. The Transaction and Checked<Tx> type implements fee calculation and validation of rules defined by the specification.
fuel-types crates.io Atomic types are used by almost all Fuel Rust-based crates. The crate defines the most common entities and implements their serialization/deserialization.
fuel-vm crates.io 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.

Testing

The ci_checks.sh script file can be used to run all CI checks, including the running of tests.

source ci_checks.sh

The script requires pre-installed tools. For more information run:

cat ci_checks.sh

Bug reporting and reproduction

If 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:

  • A text description of the problem(maybe with links)
  • A runnable script with instruction
  • A repository with reproduction code and instructions on how to compile/run
  • A unit test with the usage of the pure opcodes from fuel-asm

How to use pure opcodes

The fuel-vm has many unit tests, almost for each opcode. Supporting a huge test codebase requires proper test utils that you can re-use to reproduce a bug.

Add a new test case

If a specific opcode has unexpected behaviors, maybe there is a unit test already that you can reuse to reproduce a bug. You need to add a new test_case like:

#[test_case(JumpMode::Absolute, 0, 0, 100 => Ok(4); "absolute jump")]

Before the test and run this specific test or all tests.

Build custom scripts

If you need to write your own specific script and run it, you can use test_helpers::run_script.

For example:

#[test]
fn dynamic_call_frame_ops_bug_missing_ssp_check() {
    let ops = vec![
        op::cfs(RegId::SP),
        op::slli(0x10, RegId::ONE, 26),
        op::aloc(0x10),
        op::sw(RegId::ZERO, 0x10, 0),
        op::ret(RegId::ONE),
    ];
    let receipts = run_script(ops);
    assert_panics(&receipts, PanicReason::MemoryOverflow);
}

It returns receipts that contain result of execution. The assert_panics can be used to check for panics.

Build custom transactions

The fuel-tx provides fuel_tx::TransactionBuilder that simplifies the building of custom transaction for testing purposes.

You can check how TransactionBuilder::script or TransactionBuilder::create are used for better understanding.

More Repositories

1

sway

🌴 Empowering everyone to build reliable and efficient smart contracts.
Rust
62,819
star
2

fuel-core

Rust full node implementation of the Fuel v2 protocol.
Rust
58,200
star
3

fuels-ts

Fuel Network Typescript SDK
TypeScript
44,282
star
4

fuels-rs

Fuel Network Rust SDK
Rust
44,281
star
5

fuel-specs

πŸ“ Specifications for the Fuel protocol and the FuelVM, a blazingly fast blockchain VM.
1,779
star
6

sway-applications

Swaypplications
Rust
1,580
star
7

sway-farm

Farm πŸ… on the Fuel network.
TypeScript
1,411
star
8

swayswap

SwaySwap is a blazingly fast DEX built on the fastest modular execution layer: Fuel.
TypeScript
1,098
star
9

fuels-wallet

πŸ’³ The official Fuel wallet.
TypeScript
918
star
10

fuelup

β›½ The Fuel toolchain installer
Rust
277
star
11

awesome-fuel

A maintained and comprehensive list of awesome Fuel resources!
239
star
12

yulp

βž• A low-level, highly efficient extension to Yul, an intermediate language for the Ethereum Virtual Machine.
Nearley
173
star
13

fuel-bridge

The canonical Fuel bridge mono repo.
TypeScript
173
star
14

sway-standards

SRC Standards set for the Sway language
Sway
159
star
15

sway-libs

Miscellaneous Sway libraries.
Sway
143
star
16

fuel-indexer

πŸ—ƒ The Fuel indexer is a standalone service that can be used to index various components of the Fuel blockchain.
Rust
140
star
17

docs-hub

The documentation hub for Fuel
TypeScript
113
star
18

forc-wallet

A forc plugin for managing Fuel wallets.
Rust
98
star
19

fuel.nix

A Nix flake for the Fuel Labs ecosystem.
Nix
97
star
20

fuel-v1-contracts

⚑ The Fuel optimistic rollup in Yul+ for the Ethereum Virtual Machine
JavaScript
87
star
21

fuel-ui

Fuel design system
TypeScript
85
star
22

fuel-explorer

TypeScript
85
star
23

fuel-js

⚑ All Fuel javascript utilities and implementations.
JavaScript
82
star
24

fuel-connectors

TypeScript
78
star
25

faucet

The official Fuel faucet
Rust
70
star
26

sway-playground

πŸŒ΄β–ΆοΈ Sway in the browser
TypeScript
65
star
27

fuel-merkle-sol

A Solidity implementation of binary, sum, and sparse Merkle trees
Solidity
56
star
28

fuel-block-committer

A standalone service that commits Fuel block data to L1 / DA
Rust
52
star
29

sway-vscode-plugin

Sway Visual Studio Code plugin
TypeScript
48
star
30

fuels-npm-packs

TypeScript
47
star
31

fuel-subgraph

Rust
45
star
32

bridge-message-predicates

Predicate for relaying messages from Ethereum to a Fuel contract
Rust
44
star
33

fuel-docs

πŸ“ƒ Top-level documentation for Fuel
JavaScript
43
star
34

fuels-portal

The user facing portal and Fuel landing page
TypeScript
43
star
35

quickstart

TypeScript
29
star
36

fuel-bft

Tendermint consensus in Rust
Rust
26
star
37

sway-nightly-binaries

Fuel v2 full node and Sway toolchain nightly binaries
26
star
38

authn-sign

✍️ authn-sign - A simplified browser interface for WebAuthn focused on secp256r1 (P-256).
JavaScript
25
star
39

intro-to-sway

Learn how to build a marketplace contract with Sway
TypeScript
24
star
40

sway-lib-std

Sway standard library.
Rust
24
star
41

sway-rfcs

RFCs for changes to Sway
Sway
23
star
42

fuel-crypto

Fuel cryptographic primitives.
Rust
22
star
43

sway-performance-data

Sway performance data
19
star
44

fuel-burner-wallet

πŸ”₯ An experimental version of Burner Wallet using the Fuel open-beta.
HTML
19
star
45

sway.vim

Vim syntax file for Sway.
Vim Script
18
star
46

chain-configuration

18
star
47

sway-by-example-lib

Library for compiled sway programs
17
star
48

block-explorer-v2

Block explorer frontend for Fuel.
TypeScript
17
star
49

sway-lib-core

Sway standard library core primitives.
Rust
15
star
50

infrastructure

Shared infrastructure templates for Fuel services
HCL
15
star
51

EVM-Wallet-Connector

TypeScript
14
star
52

bridge-fungible-token

Fuel contract for managing and issuing bridged versions of ERC-20 tokens
Rust
14
star
53

fuel-tx

Fuel v2 transaction processing module in Rust.
Rust
14
star
54

sway-vs-solidity

1:1 code examples comparing Sway to Solidity
Solidity
13
star
55

github-actions

Reusable Actions workflows
TypeScript
12
star
56

tree-sitter-sway

C
12
star
57

docs

πŸ“ Documentation for the Fuel v1 tools and services.
CSS
11
star
58

fuel-graphql-docs

Documentation for the Fuel GraphQL API
TypeScript
11
star
59

action-fuel-toolchain

πŸ› οΈ GitHub Action for `fuelup` commands
TypeScript
10
star
60

fuel-burner-plugin

πŸ”₯βš™οΈ Wallet plugin which connects Fuel network to the Burner architecture.
TypeScript
10
star
61

reddit-cash

πŸŒ• A Fuel-powered Reddit community tokens build on a Burner Wallet
TypeScript
9
star
62

smt-test-generation

Generate specification compliant test data used for data-driven sparse Merkle tree testing
Go
9
star
63

rfcs

RFCs for changes to Fuel, and standards
Shell
8
star
64

fuel-contributors

An exhaustive list of all Fuel Contributors
8
star
65

fuel-debugger

Debugger for Fuel v2
Rust
8
star
66

fuel-asm

Fuel assembly and opcodes module
Rust
8
star
67

sway-by-example

Examples of Sway programs
Solidity
8
star
68

fuel-design-tokens

Design tokens that we are using across Figma and Fuel
JavaScript
8
star
69

fuel-types

Common types for Fuel v2
Rust
8
star
70

fuel-dev-env

Full stack Fuel development environment
Shell
7
star
71

fuel-wasm-examples

WASM examples for Fuel
Rust
7
star
72

migrations-and-disclosures

Biweekly consolidated breaking change log across the Fuel stack
JavaScript
7
star
73

developer-quickstart

scratch space for code behind developer quickstart section in book
TypeScript
7
star
74

hacker-starter-kit

A resource for developers preparing to build on Fuel.
7
star
75

fuel-merkle

Fuel Merkle trees in Rust.
Rust
7
star
76

fuel-v2-contracts

The Fuel Solidity smart contract architecture.
TypeScript
6
star
77

fuel-storage

Storage traits for Fuel storage-backed data structures.
Rust
6
star
78

fuel-abi-types

Rust
6
star
79

demo-block-explorer

A bare-bones block explorer that demos the Fuel GraphQL API
TypeScript
6
star
80

typedoc-just-the-docs-theme

TypeScript
6
star
81

releasy

Release Automation Tooling
Rust
6
star
82

Pyth-integration

Sway
6
star
83

cargo-toml-lint

A linter for Cargo.toml files
Rust
6
star
84

docs-portal

Fuel's Documentation Portal
TypeScript
6
star
85

audits

5
star
86

sway-by-example-archive

Let's explore how to design, write and test a contract
Rust
5
star
87

Solana-Wallet-Connector

TypeScript
5
star
88

fuel-low-level

Rust
4
star
89

data-systems

Fuel data systems related projects
Rust
4
star
90

devcontainer-features

Features for Github Dev Containers for the Fuel ecosystem
Shell
4
star
91

sway-performance-dashboard

Sway performance dashboard
JavaScript
4
star
92

action-forc

πŸ“¦ GitHub Action for Sway `forc` command
4
star
93

sway-test-rs

A cargo-generate template for Rust + Sway integration testing.
Rust
4
star
94

sway-workshops

A set of example apps for workshops.
4
star
95

forc-explorer

Forc block explorer plugin
Rust
3
star
96

.github

3
star
97

ETHDubai-2022-Workshop

Rust
3
star
98

sway-std

A mirror repo of sway lang's standard library
Sway
3
star
99

bridge-message-executor

Service for executing predicate based messages on Fuel
Rust
3
star
100

bridge-integration-tests

Integration tests for the Fuel Messaging Bridge
TypeScript
3
star