Repository files navigation

Hybrid Framework

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Overview

The Hybrid framework comprises a two-part system:

  1. Hybrid Node: A standalone Ethereum node with native RISC-V contract execution, also enabling EVM execution using a mini-evm-interpreter.
  2. Cargo Hybrid: A development tool that enables the development, deployment, testing, and interaction with smart contracts written in Rust, compiled to RISC-V IMAC 64-bit.

Key Features

  • RISC-V Smart Contract Development: Write contracts in Rust compiled to RISC-V bytecode
  • Local Blockchain Node: Run a development blockchain with RISC-V VM support
  • Deployment Tools: Deploy RISC-V contracts with simple commands
  • Dual VM Integration: Support for both RISC-V VM and EVM in a single node
  • Hybrid Execution Environment: Seamlessly switch between EVM and RISC-V execution, enabled by an EVM emulator

Getting Started

Prerequisites

macOS

brew tap riscv-software-src/riscv
brew install riscv-gnu-toolchain gettext
rustup target add x86_64-unknown-linux-gnu

General Requirements

  • Rust toolchain (stable)
  • Cargo package manager

Installation

Method 1: One-line Installation Script (Recommended)

curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/developeruche/hybrid/main/scripts/install.sh -sSf | sh

This script will:

  1. Check for required dependencies (Git, Rust)
  2. Clone the repository
  3. Install both cargo-hybrid and hybrid-node
  4. Clean up temporary files

Method 2: Manual Installation

If you prefer to install manually:

# Clone the repository
git clone https://github.com/developeruche/hybrid.git
# Install the binaries
cargo install --path hybrid/bins/cargo-hybrid
cargo install --path hybrid/bins/hybrid-node
# Optional: Remove the cloned repository if no longer needed
rm -rf hybrid

Using cargo-hybrid

The cargo-hybrid tool provides a complete workflow for RISC-V-based smart contract development, extending the Rust ecosystem to support blockchain development.

Available Commands

CommandDescription
newCreate a new smart contract project
buildBuild a smart contract
checkCheck if a smart contract compiles
deployDeploy a smart contract to the blockchain
nodeStart a local development node

Creating a New Contract

cargo hybrid new [NAME] --template [TEMPLATE]

Available templates:

  • storage (default) - Contract with storage examples
  • bare - Minimal contract template
  • erc20 - ERC20 token implementation

Example:

cargo hybrid new my-token --template erc20

Building Contracts

cd my-token
cargo hybrid build

This compiles your Rust smart contract to RISC-V bytecode and outputs the binary to the out directory.

Options:

  • --out DIR - Specify a custom output directory (default: "out")

Checking Contracts

To check if your contract compiles without generating output:

cargo hybrid check

Deploying Contracts

cargo hybrid deploy --rpc [RPC_URL]

Options:

  • --out DIR - Specify the directory containing compiled contracts (default: "out")
  • --rpc URL - RPC endpoint to deploy to (default: "http://localhost:8545")
  • --private-key KEY - Private key to use for deployment (default key provided)
  • --encoded-args ARGS - Constructor arguments (hex encoded, with or without 0x prefix)

Example with constructor arguments:

cargo hybrid deploy --encoded-args 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266

Starting a Local Node

You can start a local development node directly using cargo-hybrid:

cargo hybrid node

This starts the hybrid node in development mode.

Running the Hybrid Node

The Hybrid blockchain node is a RETH-based implementation that supports both EVM and RISC-V VM (r55) in a unified execution environment.

Starting the Node

hybrid-node start

Options:

  • --dev - Run in development mode with additional debugging features

Example:

hybrid-node start --dev

Viewing Node Configuration

hybrid-node config

Architecture

The framework consists of several key components:

  • hybrid-derive: Procedural macros for contract development (#[contract], #[storage], etc.)
  • hybrid-compile: Rust-to-RISC-V compilation pipeline
  • hybrid-vm: Virtual machine for executing RISC-V contracts in EVM context
  • hybrid-ethereum: Custom Ethereum node implementation using Reth
  • rvemu: RISC-V emulator implementation, a clone and modification of the RISC-V emulator
  • cargo-hybrid: Command-line interface for development workflow

Development Workflow

  1. Create Project: Use cargo hybrid new to scaffold a new contract
  2. Implement Logic: Write contract in src/lib.rs using Hybrid macros
  3. Local Testing: Use cargo test for unit tests
  4. Build: Compile with cargo hybrid build
  5. Deploy: Deploy with cargo hybrid deploy
  6. Interact: Use standard Ethereum tools for interaction

Contract Structure

Hybrid contracts require a specific project structure:

my_contract/
├── Cargo.toml # Must include required features and dependencies
├── src/
│ └── lib.rs # Contract implementation
└── out/ # Generated bytecode (after build)
└── my_contract.bin

Examples

Basic Storage Contract

use hybrid_derive::{contract, storage};#[storage]pubstructStorage{value:u64,}#[contract]implStorage{pubfnnew() -> Self{Self{value:0}}pubfnset_value(&mutself,new_value:u64){self.value = new_value;}pubfnget_value(&self) -> u64{self.value}}

Contributing

We welcome contributions! Please see our contributing guidelines for details.

Development Setup

  1. Clone the repository
  2. Install prerequisites
  3. Run tests: cargo test
  4. Build: cargo build

Acknowledgments

This project was inspired by and builds upon the work of the r55 team. The hybrid_evm crate and parts of the VM implementation were adapted from the r55 project, with modifications to support our hybrid execution environment.

Special thanks to the r55 team for their pioneering work in bringing RISC-V execution to the Ethereum ecosystem.

License

MIT License

Disclaimer

Note: This is experimental technology. Use with caution in production environments.

About

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Hybrid Framework

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Overview

The Hybrid framework comprises a two-part system:

  1. Hybrid Node: A standalone Ethereum node with native RISC-V contract execution, also enabling EVM execution using a mini-evm-interpreter.
  2. Cargo Hybrid: A development tool that enables the development, deployment, testing, and interaction with smart contracts written in Rust, compiled to RISC-V IMAC 64-bit.

Key Features

  • RISC-V Smart Contract Development: Write contracts in Rust compiled to RISC-V bytecode
  • Local Blockchain Node: Run a development blockchain with RISC-V VM support
  • Deployment Tools: Deploy RISC-V contracts with simple commands
  • Dual VM Integration: Support for both RISC-V VM and EVM in a single node
  • Hybrid Execution Environment: Seamlessly switch between EVM and RISC-V execution, enabled by an EVM emulator

Getting Started

Prerequisites

macOS

brew tap riscv-software-src/riscv
brew install riscv-gnu-toolchain gettext
rustup target add x86_64-unknown-linux-gnu

General Requirements

  • Rust toolchain (stable)
  • Cargo package manager

Installation

Method 1: One-line Installation Script (Recommended)

curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/developeruche/hybrid/main/scripts/install.sh -sSf | sh

This script will:

  1. Check for required dependencies (Git, Rust)
  2. Clone the repository
  3. Install both cargo-hybrid and hybrid-node
  4. Clean up temporary files

Method 2: Manual Installation

If you prefer to install manually:

# Clone the repository
git clone https://github.com/developeruche/hybrid.git
# Install the binaries
cargo install --path hybrid/bins/cargo-hybrid
cargo install --path hybrid/bins/hybrid-node
# Optional: Remove the cloned repository if no longer needed
rm -rf hybrid

Using cargo-hybrid

The cargo-hybrid tool provides a complete workflow for RISC-V-based smart contract development, extending the Rust ecosystem to support blockchain development.

Available Commands

CommandDescription
newCreate a new smart contract project
buildBuild a smart contract
checkCheck if a smart contract compiles
deployDeploy a smart contract to the blockchain
nodeStart a local development node

Creating a New Contract

cargo hybrid new [NAME] --template [TEMPLATE]

Available templates:

  • storage (default) - Contract with storage examples
  • bare - Minimal contract template
  • erc20 - ERC20 token implementation

Example:

cargo hybrid new my-token --template erc20

Building Contracts

cd my-token
cargo hybrid build

This compiles your Rust smart contract to RISC-V bytecode and outputs the binary to the out directory.

Options:

  • --out DIR - Specify a custom output directory (default: "out")

Checking Contracts

To check if your contract compiles without generating output:

cargo hybrid check

Deploying Contracts

cargo hybrid deploy --rpc [RPC_URL]

Options:

  • --out DIR - Specify the directory containing compiled contracts (default: "out")
  • --rpc URL - RPC endpoint to deploy to (default: "http://localhost:8545")
  • --private-key KEY - Private key to use for deployment (default key provided)
  • --encoded-args ARGS - Constructor arguments (hex encoded, with or without 0x prefix)

Example with constructor arguments:

cargo hybrid deploy --encoded-args 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266

Starting a Local Node

You can start a local development node directly using cargo-hybrid:

cargo hybrid node

This starts the hybrid node in development mode.

Running the Hybrid Node

The Hybrid blockchain node is a RETH-based implementation that supports both EVM and RISC-V VM (r55) in a unified execution environment.

Starting the Node

hybrid-node start

Options:

  • --dev - Run in development mode with additional debugging features

Example:

hybrid-node start --dev

Viewing Node Configuration

hybrid-node config

Architecture

The framework consists of several key components:

  • hybrid-derive: Procedural macros for contract development (#[contract], #[storage], etc.)
  • hybrid-compile: Rust-to-RISC-V compilation pipeline
  • hybrid-vm: Virtual machine for executing RISC-V contracts in EVM context
  • hybrid-ethereum: Custom Ethereum node implementation using Reth
  • rvemu: RISC-V emulator implementation, a clone and modification of the RISC-V emulator
  • cargo-hybrid: Command-line interface for development workflow

Development Workflow

  1. Create Project: Use cargo hybrid new to scaffold a new contract
  2. Implement Logic: Write contract in src/lib.rs using Hybrid macros
  3. Local Testing: Use cargo test for unit tests
  4. Build: Compile with cargo hybrid build
  5. Deploy: Deploy with cargo hybrid deploy
  6. Interact: Use standard Ethereum tools for interaction

Contract Structure

Hybrid contracts require a specific project structure:

my_contract/
├── Cargo.toml # Must include required features and dependencies
├── src/
│ └── lib.rs # Contract implementation
└── out/ # Generated bytecode (after build)
└── my_contract.bin

Examples

Basic Storage Contract

use hybrid_derive::{contract, storage};#[storage]pubstructStorage{value:u64,}#[contract]implStorage{pubfnnew() -> Self{Self{value:0}}pubfnset_value(&mutself,new_value:u64){self.value = new_value;}pubfnget_value(&self) -> u64{self.value}}

Contributing

We welcome contributions! Please see our contributing guidelines for details.

Development Setup

  1. Clone the repository
  2. Install prerequisites
  3. Run tests: cargo test
  4. Build: cargo build

Acknowledgments

This project was inspired by and builds upon the work of the r55 team. The hybrid_evm crate and parts of the VM implementation were adapted from the r55 project, with modifications to support our hybrid execution environment.

Special thanks to the r55 team for their pioneering work in bringing RISC-V execution to the Ethereum ecosystem.

License

MIT License

Disclaimer

Note: This is experimental technology. Use with caution in production environments.

About

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hybrid Framework

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Overview

The Hybrid framework comprises a two-part system:

  1. Hybrid Node: A standalone Ethereum node with native RISC-V contract execution, also enabling EVM execution using a mini-evm-interpreter.
  2. Cargo Hybrid: A development tool that enables the development, deployment, testing, and interaction with smart contracts written in Rust, compiled to RISC-V IMAC 64-bit.

Key Features

  • RISC-V Smart Contract Development: Write contracts in Rust compiled to RISC-V bytecode
  • Local Blockchain Node: Run a development blockchain with RISC-V VM support
  • Deployment Tools: Deploy RISC-V contracts with simple commands
  • Dual VM Integration: Support for both RISC-V VM and EVM in a single node
  • Hybrid Execution Environment: Seamlessly switch between EVM and RISC-V execution, enabled by an EVM emulator

Getting Started

Prerequisites

macOS

brew tap riscv-software-src/riscv
brew install riscv-gnu-toolchain gettext
rustup target add x86_64-unknown-linux-gnu

General Requirements

  • Rust toolchain (stable)
  • Cargo package manager

Installation

Method 1: One-line Installation Script (Recommended)

curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/developeruche/hybrid/main/scripts/install.sh -sSf | sh

This script will:

  1. Check for required dependencies (Git, Rust)
  2. Clone the repository
  3. Install both cargo-hybrid and hybrid-node
  4. Clean up temporary files

Method 2: Manual Installation

If you prefer to install manually:

# Clone the repository
git clone https://github.com/developeruche/hybrid.git
# Install the binaries
cargo install --path hybrid/bins/cargo-hybrid
cargo install --path hybrid/bins/hybrid-node
# Optional: Remove the cloned repository if no longer needed
rm -rf hybrid

Using cargo-hybrid

The cargo-hybrid tool provides a complete workflow for RISC-V-based smart contract development, extending the Rust ecosystem to support blockchain development.

Available Commands

CommandDescription
newCreate a new smart contract project
buildBuild a smart contract
checkCheck if a smart contract compiles
deployDeploy a smart contract to the blockchain
nodeStart a local development node

Creating a New Contract

cargo hybrid new [NAME] --template [TEMPLATE]

Available templates:

  • storage (default) - Contract with storage examples
  • bare - Minimal contract template
  • erc20 - ERC20 token implementation

Example:

cargo hybrid new my-token --template erc20

Building Contracts

cd my-token
cargo hybrid build

This compiles your Rust smart contract to RISC-V bytecode and outputs the binary to the out directory.

Options:

  • --out DIR - Specify a custom output directory (default: "out")

Checking Contracts

To check if your contract compiles without generating output:

cargo hybrid check

Deploying Contracts

cargo hybrid deploy --rpc [RPC_URL]

Options:

  • --out DIR - Specify the directory containing compiled contracts (default: "out")
  • --rpc URL - RPC endpoint to deploy to (default: "http://localhost:8545")
  • --private-key KEY - Private key to use for deployment (default key provided)
  • --encoded-args ARGS - Constructor arguments (hex encoded, with or without 0x prefix)

Example with constructor arguments:

cargo hybrid deploy --encoded-args 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266

Starting a Local Node

You can start a local development node directly using cargo-hybrid:

cargo hybrid node

This starts the hybrid node in development mode.

Running the Hybrid Node

The Hybrid blockchain node is a RETH-based implementation that supports both EVM and RISC-V VM (r55) in a unified execution environment.

Starting the Node

hybrid-node start

Options:

  • --dev - Run in development mode with additional debugging features

Example:

hybrid-node start --dev

Viewing Node Configuration

hybrid-node config

Architecture

The framework consists of several key components:

  • hybrid-derive: Procedural macros for contract development (#[contract], #[storage], etc.)
  • hybrid-compile: Rust-to-RISC-V compilation pipeline
  • hybrid-vm: Virtual machine for executing RISC-V contracts in EVM context
  • hybrid-ethereum: Custom Ethereum node implementation using Reth
  • rvemu: RISC-V emulator implementation, a clone and modification of the RISC-V emulator
  • cargo-hybrid: Command-line interface for development workflow

Development Workflow

  1. Create Project: Use cargo hybrid new to scaffold a new contract
  2. Implement Logic: Write contract in src/lib.rs using Hybrid macros
  3. Local Testing: Use cargo test for unit tests
  4. Build: Compile with cargo hybrid build
  5. Deploy: Deploy with cargo hybrid deploy
  6. Interact: Use standard Ethereum tools for interaction

Contract Structure

Hybrid contracts require a specific project structure:

my_contract/
├── Cargo.toml # Must include required features and dependencies
├── src/
│ └── lib.rs # Contract implementation
└── out/ # Generated bytecode (after build)
└── my_contract.bin

Examples

Basic Storage Contract

use hybrid_derive::{contract, storage};#[storage]pubstructStorage{value:u64,}#[contract]implStorage{pubfnnew() -> Self{Self{value:0}}pubfnset_value(&mutself,new_value:u64){self.value = new_value;}pubfnget_value(&self) -> u64{self.value}}

Contributing

We welcome contributions! Please see our contributing guidelines for details.

Development Setup

  1. Clone the repository
  2. Install prerequisites
  3. Run tests: cargo test
  4. Build: cargo build

Acknowledgments

This project was inspired by and builds upon the work of the r55 team. The hybrid_evm crate and parts of the VM implementation were adapted from the r55 project, with modifications to support our hybrid execution environment.

Special thanks to the r55 team for their pioneering work in bringing RISC-V execution to the Ethereum ecosystem.

License

MIT License

Disclaimer

Note: This is experimental technology. Use with caution in production environments.

About

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hybrid Framework

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Overview

The Hybrid framework comprises a two-part system:

  1. Hybrid Node: A standalone Ethereum node with native RISC-V contract execution, also enabling EVM execution using a mini-evm-interpreter.
  2. Cargo Hybrid: A development tool that enables the development, deployment, testing, and interaction with smart contracts written in Rust, compiled to RISC-V IMAC 64-bit.

Key Features

  • RISC-V Smart Contract Development: Write contracts in Rust compiled to RISC-V bytecode
  • Local Blockchain Node: Run a development blockchain with RISC-V VM support
  • Deployment Tools: Deploy RISC-V contracts with simple commands
  • Dual VM Integration: Support for both RISC-V VM and EVM in a single node
  • Hybrid Execution Environment: Seamlessly switch between EVM and RISC-V execution, enabled by an EVM emulator

Getting Started

Prerequisites

macOS

brew tap riscv-software-src/riscv
brew install riscv-gnu-toolchain gettext
rustup target add x86_64-unknown-linux-gnu

General Requirements

  • Rust toolchain (stable)
  • Cargo package manager

Installation

Method 1: One-line Installation Script (Recommended)

curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/developeruche/hybrid/main/scripts/install.sh -sSf | sh

This script will:

  1. Check for required dependencies (Git, Rust)
  2. Clone the repository
  3. Install both cargo-hybrid and hybrid-node
  4. Clean up temporary files

Method 2: Manual Installation

If you prefer to install manually:

# Clone the repository
git clone https://github.com/developeruche/hybrid.git
# Install the binaries
cargo install --path hybrid/bins/cargo-hybrid
cargo install --path hybrid/bins/hybrid-node
# Optional: Remove the cloned repository if no longer needed
rm -rf hybrid

Using cargo-hybrid

The cargo-hybrid tool provides a complete workflow for RISC-V-based smart contract development, extending the Rust ecosystem to support blockchain development.

Available Commands

CommandDescription
newCreate a new smart contract project
buildBuild a smart contract
checkCheck if a smart contract compiles
deployDeploy a smart contract to the blockchain
nodeStart a local development node

Creating a New Contract

cargo hybrid new [NAME] --template [TEMPLATE]

Available templates:

  • storage (default) - Contract with storage examples
  • bare - Minimal contract template
  • erc20 - ERC20 token implementation

Example:

cargo hybrid new my-token --template erc20

Building Contracts

cd my-token
cargo hybrid build

This compiles your Rust smart contract to RISC-V bytecode and outputs the binary to the out directory.

Options:

  • --out DIR - Specify a custom output directory (default: "out")

Checking Contracts

To check if your contract compiles without generating output:

cargo hybrid check

Deploying Contracts

cargo hybrid deploy --rpc [RPC_URL]

Options:

  • --out DIR - Specify the directory containing compiled contracts (default: "out")
  • --rpc URL - RPC endpoint to deploy to (default: "http://localhost:8545")
  • --private-key KEY - Private key to use for deployment (default key provided)
  • --encoded-args ARGS - Constructor arguments (hex encoded, with or without 0x prefix)

Example with constructor arguments:

cargo hybrid deploy --encoded-args 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266

Starting a Local Node

You can start a local development node directly using cargo-hybrid:

cargo hybrid node

This starts the hybrid node in development mode.

Running the Hybrid Node

The Hybrid blockchain node is a RETH-based implementation that supports both EVM and RISC-V VM (r55) in a unified execution environment.

Starting the Node

hybrid-node start

Options:

  • --dev - Run in development mode with additional debugging features

Example:

hybrid-node start --dev

Viewing Node Configuration

hybrid-node config

Architecture

The framework consists of several key components:

  • hybrid-derive: Procedural macros for contract development (#[contract], #[storage], etc.)
  • hybrid-compile: Rust-to-RISC-V compilation pipeline
  • hybrid-vm: Virtual machine for executing RISC-V contracts in EVM context
  • hybrid-ethereum: Custom Ethereum node implementation using Reth
  • rvemu: RISC-V emulator implementation, a clone and modification of the RISC-V emulator
  • cargo-hybrid: Command-line interface for development workflow

Development Workflow

  1. Create Project: Use cargo hybrid new to scaffold a new contract
  2. Implement Logic: Write contract in src/lib.rs using Hybrid macros
  3. Local Testing: Use cargo test for unit tests
  4. Build: Compile with cargo hybrid build
  5. Deploy: Deploy with cargo hybrid deploy
  6. Interact: Use standard Ethereum tools for interaction

Contract Structure

Hybrid contracts require a specific project structure:

my_contract/
├── Cargo.toml # Must include required features and dependencies
├── src/
│ └── lib.rs # Contract implementation
└── out/ # Generated bytecode (after build)
└── my_contract.bin

Examples

Basic Storage Contract

use hybrid_derive::{contract, storage};#[storage]pubstructStorage{value:u64,}#[contract]implStorage{pubfnnew() -> Self{Self{value:0}}pubfnset_value(&mutself,new_value:u64){self.value = new_value;}pubfnget_value(&self) -> u64{self.value}}

Contributing

We welcome contributions! Please see our contributing guidelines for details.

Development Setup

  1. Clone the repository
  2. Install prerequisites
  3. Run tests: cargo test
  4. Build: cargo build

Acknowledgments

This project was inspired by and builds upon the work of the r55 team. The hybrid_evm crate and parts of the VM implementation were adapted from the r55 project, with modifications to support our hybrid execution environment.

Special thanks to the r55 team for their pioneering work in bringing RISC-V execution to the Ethereum ecosystem.

License

MIT License

Disclaimer

Note: This is experimental technology. Use with caution in production environments.

About

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Hybrid Framework

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Overview

The Hybrid framework comprises a two-part system:

  1. Hybrid Node: A standalone Ethereum node with native RISC-V contract execution, also enabling EVM execution using a mini-evm-interpreter.
  2. Cargo Hybrid: A development tool that enables the development, deployment, testing, and interaction with smart contracts written in Rust, compiled to RISC-V IMAC 64-bit.

Key Features

  • RISC-V Smart Contract Development: Write contracts in Rust compiled to RISC-V bytecode
  • Local Blockchain Node: Run a development blockchain with RISC-V VM support
  • Deployment Tools: Deploy RISC-V contracts with simple commands
  • Dual VM Integration: Support for both RISC-V VM and EVM in a single node
  • Hybrid Execution Environment: Seamlessly switch between EVM and RISC-V execution, enabled by an EVM emulator

Getting Started

Prerequisites

macOS

brew tap riscv-software-src/riscv
brew install riscv-gnu-toolchain gettext
rustup target add x86_64-unknown-linux-gnu

General Requirements

  • Rust toolchain (stable)
  • Cargo package manager

Installation

Method 1: One-line Installation Script (Recommended)

curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/developeruche/hybrid/main/scripts/install.sh -sSf | sh

This script will:

  1. Check for required dependencies (Git, Rust)
  2. Clone the repository
  3. Install both cargo-hybrid and hybrid-node
  4. Clean up temporary files

Method 2: Manual Installation

If you prefer to install manually:

# Clone the repository
git clone https://github.com/developeruche/hybrid.git
# Install the binaries
cargo install --path hybrid/bins/cargo-hybrid
cargo install --path hybrid/bins/hybrid-node
# Optional: Remove the cloned repository if no longer needed
rm -rf hybrid

Using cargo-hybrid

The cargo-hybrid tool provides a complete workflow for RISC-V-based smart contract development, extending the Rust ecosystem to support blockchain development.

Available Commands

CommandDescription
newCreate a new smart contract project
buildBuild a smart contract
checkCheck if a smart contract compiles
deployDeploy a smart contract to the blockchain
nodeStart a local development node

Creating a New Contract

cargo hybrid new [NAME] --template [TEMPLATE]

Available templates:

  • storage (default) - Contract with storage examples
  • bare - Minimal contract template
  • erc20 - ERC20 token implementation

Example:

cargo hybrid new my-token --template erc20

Building Contracts

cd my-token
cargo hybrid build

This compiles your Rust smart contract to RISC-V bytecode and outputs the binary to the out directory.

Options:

  • --out DIR - Specify a custom output directory (default: "out")

Checking Contracts

To check if your contract compiles without generating output:

cargo hybrid check

Deploying Contracts

cargo hybrid deploy --rpc [RPC_URL]

Options:

  • --out DIR - Specify the directory containing compiled contracts (default: "out")
  • --rpc URL - RPC endpoint to deploy to (default: "http://localhost:8545")
  • --private-key KEY - Private key to use for deployment (default key provided)
  • --encoded-args ARGS - Constructor arguments (hex encoded, with or without 0x prefix)

Example with constructor arguments:

cargo hybrid deploy --encoded-args 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266

Starting a Local Node

You can start a local development node directly using cargo-hybrid:

cargo hybrid node

This starts the hybrid node in development mode.

Running the Hybrid Node

The Hybrid blockchain node is a RETH-based implementation that supports both EVM and RISC-V VM (r55) in a unified execution environment.

Starting the Node

hybrid-node start

Options:

  • --dev - Run in development mode with additional debugging features

Example:

hybrid-node start --dev

Viewing Node Configuration

hybrid-node config

Architecture

The framework consists of several key components:

  • hybrid-derive: Procedural macros for contract development (#[contract], #[storage], etc.)
  • hybrid-compile: Rust-to-RISC-V compilation pipeline
  • hybrid-vm: Virtual machine for executing RISC-V contracts in EVM context
  • hybrid-ethereum: Custom Ethereum node implementation using Reth
  • rvemu: RISC-V emulator implementation, a clone and modification of the RISC-V emulator
  • cargo-hybrid: Command-line interface for development workflow

Development Workflow

  1. Create Project: Use cargo hybrid new to scaffold a new contract
  2. Implement Logic: Write contract in src/lib.rs using Hybrid macros
  3. Local Testing: Use cargo test for unit tests
  4. Build: Compile with cargo hybrid build
  5. Deploy: Deploy with cargo hybrid deploy
  6. Interact: Use standard Ethereum tools for interaction

Contract Structure

Hybrid contracts require a specific project structure:

my_contract/
├── Cargo.toml # Must include required features and dependencies
├── src/
│ └── lib.rs # Contract implementation
└── out/ # Generated bytecode (after build)
└── my_contract.bin

Examples

Basic Storage Contract

use hybrid_derive::{contract, storage};#[storage]pubstructStorage{value:u64,}#[contract]implStorage{pubfnnew() -> Self{Self{value:0}}pubfnset_value(&mutself,new_value:u64){self.value = new_value;}pubfnget_value(&self) -> u64{self.value}}

Contributing

We welcome contributions! Please see our contributing guidelines for details.

Development Setup

  1. Clone the repository
  2. Install prerequisites
  3. Run tests: cargo test
  4. Build: cargo build

Acknowledgments

This project was inspired by and builds upon the work of the r55 team. The hybrid_evm crate and parts of the VM implementation were adapted from the r55 project, with modifications to support our hybrid execution environment.

Special thanks to the r55 team for their pioneering work in bringing RISC-V execution to the Ethereum ecosystem.

License

MIT License

Disclaimer

Note: This is experimental technology. Use with caution in production environments.

About

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hybrid Framework

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Overview

The Hybrid framework comprises a two-part system:

  1. Hybrid Node: A standalone Ethereum node with native RISC-V contract execution, also enabling EVM execution using a mini-evm-interpreter.
  2. Cargo Hybrid: A development tool that enables the development, deployment, testing, and interaction with smart contracts written in Rust, compiled to RISC-V IMAC 64-bit.

Key Features

  • RISC-V Smart Contract Development: Write contracts in Rust compiled to RISC-V bytecode
  • Local Blockchain Node: Run a development blockchain with RISC-V VM support
  • Deployment Tools: Deploy RISC-V contracts with simple commands
  • Dual VM Integration: Support for both RISC-V VM and EVM in a single node
  • Hybrid Execution Environment: Seamlessly switch between EVM and RISC-V execution, enabled by an EVM emulator

Getting Started

Prerequisites

macOS

brew tap riscv-software-src/riscv
brew install riscv-gnu-toolchain gettext
rustup target add x86_64-unknown-linux-gnu

General Requirements

  • Rust toolchain (stable)
  • Cargo package manager

Installation

Method 1: One-line Installation Script (Recommended)

curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/developeruche/hybrid/main/scripts/install.sh -sSf | sh

This script will:

  1. Check for required dependencies (Git, Rust)
  2. Clone the repository
  3. Install both cargo-hybrid and hybrid-node
  4. Clean up temporary files

Method 2: Manual Installation

If you prefer to install manually:

# Clone the repository
git clone https://github.com/developeruche/hybrid.git
# Install the binaries
cargo install --path hybrid/bins/cargo-hybrid
cargo install --path hybrid/bins/hybrid-node
# Optional: Remove the cloned repository if no longer needed
rm -rf hybrid

Using cargo-hybrid

The cargo-hybrid tool provides a complete workflow for RISC-V-based smart contract development, extending the Rust ecosystem to support blockchain development.

Available Commands

CommandDescription
newCreate a new smart contract project
buildBuild a smart contract
checkCheck if a smart contract compiles
deployDeploy a smart contract to the blockchain
nodeStart a local development node

Creating a New Contract

cargo hybrid new [NAME] --template [TEMPLATE]

Available templates:

  • storage (default) - Contract with storage examples
  • bare - Minimal contract template
  • erc20 - ERC20 token implementation

Example:

cargo hybrid new my-token --template erc20

Building Contracts

cd my-token
cargo hybrid build

This compiles your Rust smart contract to RISC-V bytecode and outputs the binary to the out directory.

Options:

  • --out DIR - Specify a custom output directory (default: "out")

Checking Contracts

To check if your contract compiles without generating output:

cargo hybrid check

Deploying Contracts

cargo hybrid deploy --rpc [RPC_URL]

Options:

  • --out DIR - Specify the directory containing compiled contracts (default: "out")
  • --rpc URL - RPC endpoint to deploy to (default: "http://localhost:8545")
  • --private-key KEY - Private key to use for deployment (default key provided)
  • --encoded-args ARGS - Constructor arguments (hex encoded, with or without 0x prefix)

Example with constructor arguments:

cargo hybrid deploy --encoded-args 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266

Starting a Local Node

You can start a local development node directly using cargo-hybrid:

cargo hybrid node

This starts the hybrid node in development mode.

Running the Hybrid Node

The Hybrid blockchain node is a RETH-based implementation that supports both EVM and RISC-V VM (r55) in a unified execution environment.

Starting the Node

hybrid-node start

Options:

  • --dev - Run in development mode with additional debugging features

Example:

hybrid-node start --dev

Viewing Node Configuration

hybrid-node config

Architecture

The framework consists of several key components:

  • hybrid-derive: Procedural macros for contract development (#[contract], #[storage], etc.)
  • hybrid-compile: Rust-to-RISC-V compilation pipeline
  • hybrid-vm: Virtual machine for executing RISC-V contracts in EVM context
  • hybrid-ethereum: Custom Ethereum node implementation using Reth
  • rvemu: RISC-V emulator implementation, a clone and modification of the RISC-V emulator
  • cargo-hybrid: Command-line interface for development workflow

Development Workflow

  1. Create Project: Use cargo hybrid new to scaffold a new contract
  2. Implement Logic: Write contract in src/lib.rs using Hybrid macros
  3. Local Testing: Use cargo test for unit tests
  4. Build: Compile with cargo hybrid build
  5. Deploy: Deploy with cargo hybrid deploy
  6. Interact: Use standard Ethereum tools for interaction

Contract Structure

Hybrid contracts require a specific project structure:

my_contract/
├── Cargo.toml # Must include required features and dependencies
├── src/
│ └── lib.rs # Contract implementation
└── out/ # Generated bytecode (after build)
└── my_contract.bin

Examples

Basic Storage Contract

use hybrid_derive::{contract, storage};#[storage]pubstructStorage{value:u64,}#[contract]implStorage{pubfnnew() -> Self{Self{value:0}}pubfnset_value(&mutself,new_value:u64){self.value = new_value;}pubfnget_value(&self) -> u64{self.value}}

Contributing

We welcome contributions! Please see our contributing guidelines for details.

Development Setup

  1. Clone the repository
  2. Install prerequisites
  3. Run tests: cargo test
  4. Build: cargo build

Acknowledgments

This project was inspired by and builds upon the work of the r55 team. The hybrid_evm crate and parts of the VM implementation were adapted from the r55 project, with modifications to support our hybrid execution environment.

Special thanks to the r55 team for their pioneering work in bringing RISC-V execution to the Ethereum ecosystem.

License

MIT License

Disclaimer

Note: This is experimental technology. Use with caution in production environments.

About

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hybrid Framework

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Overview

The Hybrid framework comprises a two-part system:

  1. Hybrid Node: A standalone Ethereum node with native RISC-V contract execution, also enabling EVM execution using a mini-evm-interpreter.
  2. Cargo Hybrid: A development tool that enables the development, deployment, testing, and interaction with smart contracts written in Rust, compiled to RISC-V IMAC 64-bit.

Key Features

  • RISC-V Smart Contract Development: Write contracts in Rust compiled to RISC-V bytecode
  • Local Blockchain Node: Run a development blockchain with RISC-V VM support
  • Deployment Tools: Deploy RISC-V contracts with simple commands
  • Dual VM Integration: Support for both RISC-V VM and EVM in a single node
  • Hybrid Execution Environment: Seamlessly switch between EVM and RISC-V execution, enabled by an EVM emulator

Getting Started

Prerequisites

macOS

brew tap riscv-software-src/riscv
brew install riscv-gnu-toolchain gettext
rustup target add x86_64-unknown-linux-gnu

General Requirements

  • Rust toolchain (stable)
  • Cargo package manager

Installation

Method 1: One-line Installation Script (Recommended)

curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/developeruche/hybrid/main/scripts/install.sh -sSf | sh

This script will:

  1. Check for required dependencies (Git, Rust)
  2. Clone the repository
  3. Install both cargo-hybrid and hybrid-node
  4. Clean up temporary files

Method 2: Manual Installation

If you prefer to install manually:

# Clone the repository
git clone https://github.com/developeruche/hybrid.git
# Install the binaries
cargo install --path hybrid/bins/cargo-hybrid
cargo install --path hybrid/bins/hybrid-node
# Optional: Remove the cloned repository if no longer needed
rm -rf hybrid

Using cargo-hybrid

The cargo-hybrid tool provides a complete workflow for RISC-V-based smart contract development, extending the Rust ecosystem to support blockchain development.

Available Commands

CommandDescription
newCreate a new smart contract project
buildBuild a smart contract
checkCheck if a smart contract compiles
deployDeploy a smart contract to the blockchain
nodeStart a local development node

Creating a New Contract

cargo hybrid new [NAME] --template [TEMPLATE]

Available templates:

  • storage (default) - Contract with storage examples
  • bare - Minimal contract template
  • erc20 - ERC20 token implementation

Example:

cargo hybrid new my-token --template erc20

Building Contracts

cd my-token
cargo hybrid build

This compiles your Rust smart contract to RISC-V bytecode and outputs the binary to the out directory.

Options:

  • --out DIR - Specify a custom output directory (default: "out")

Checking Contracts

To check if your contract compiles without generating output:

cargo hybrid check

Deploying Contracts

cargo hybrid deploy --rpc [RPC_URL]

Options:

  • --out DIR - Specify the directory containing compiled contracts (default: "out")
  • --rpc URL - RPC endpoint to deploy to (default: "http://localhost:8545")
  • --private-key KEY - Private key to use for deployment (default key provided)
  • --encoded-args ARGS - Constructor arguments (hex encoded, with or without 0x prefix)

Example with constructor arguments:

cargo hybrid deploy --encoded-args 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266

Starting a Local Node

You can start a local development node directly using cargo-hybrid:

cargo hybrid node

This starts the hybrid node in development mode.

Running the Hybrid Node

The Hybrid blockchain node is a RETH-based implementation that supports both EVM and RISC-V VM (r55) in a unified execution environment.

Starting the Node

hybrid-node start

Options:

  • --dev - Run in development mode with additional debugging features

Example:

hybrid-node start --dev

Viewing Node Configuration

hybrid-node config

Architecture

The framework consists of several key components:

  • hybrid-derive: Procedural macros for contract development (#[contract], #[storage], etc.)
  • hybrid-compile: Rust-to-RISC-V compilation pipeline
  • hybrid-vm: Virtual machine for executing RISC-V contracts in EVM context
  • hybrid-ethereum: Custom Ethereum node implementation using Reth
  • rvemu: RISC-V emulator implementation, a clone and modification of the RISC-V emulator
  • cargo-hybrid: Command-line interface for development workflow

Development Workflow

  1. Create Project: Use cargo hybrid new to scaffold a new contract
  2. Implement Logic: Write contract in src/lib.rs using Hybrid macros
  3. Local Testing: Use cargo test for unit tests
  4. Build: Compile with cargo hybrid build
  5. Deploy: Deploy with cargo hybrid deploy
  6. Interact: Use standard Ethereum tools for interaction

Contract Structure

Hybrid contracts require a specific project structure:

my_contract/
├── Cargo.toml # Must include required features and dependencies
├── src/
│ └── lib.rs # Contract implementation
└── out/ # Generated bytecode (after build)
└── my_contract.bin

Examples

Basic Storage Contract

use hybrid_derive::{contract, storage};#[storage]pubstructStorage{value:u64,}#[contract]implStorage{pubfnnew() -> Self{Self{value:0}}pubfnset_value(&mutself,new_value:u64){self.value = new_value;}pubfnget_value(&self) -> u64{self.value}}

Contributing

We welcome contributions! Please see our contributing guidelines for details.

Development Setup

  1. Clone the repository
  2. Install prerequisites
  3. Run tests: cargo test
  4. Build: cargo build

Acknowledgments

This project was inspired by and builds upon the work of the r55 team. The hybrid_evm crate and parts of the VM implementation were adapted from the r55 project, with modifications to support our hybrid execution environment.

Special thanks to the r55 team for their pioneering work in bringing RISC-V execution to the Ethereum ecosystem.

License

MIT License

Disclaimer

Note: This is experimental technology. Use with caution in production environments.

About

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Hybrid Framework

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Overview

The Hybrid framework comprises a two-part system:

  1. Hybrid Node: A standalone Ethereum node with native RISC-V contract execution, also enabling EVM execution using a mini-evm-interpreter.
  2. Cargo Hybrid: A development tool that enables the development, deployment, testing, and interaction with smart contracts written in Rust, compiled to RISC-V IMAC 64-bit.

Key Features

  • RISC-V Smart Contract Development: Write contracts in Rust compiled to RISC-V bytecode
  • Local Blockchain Node: Run a development blockchain with RISC-V VM support
  • Deployment Tools: Deploy RISC-V contracts with simple commands
  • Dual VM Integration: Support for both RISC-V VM and EVM in a single node
  • Hybrid Execution Environment: Seamlessly switch between EVM and RISC-V execution, enabled by an EVM emulator

Getting Started

Prerequisites

macOS

brew tap riscv-software-src/riscv
brew install riscv-gnu-toolchain gettext
rustup target add x86_64-unknown-linux-gnu

General Requirements

  • Rust toolchain (stable)
  • Cargo package manager

Installation

Method 1: One-line Installation Script (Recommended)

curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/developeruche/hybrid/main/scripts/install.sh -sSf | sh

This script will:

  1. Check for required dependencies (Git, Rust)
  2. Clone the repository
  3. Install both cargo-hybrid and hybrid-node
  4. Clean up temporary files

Method 2: Manual Installation

If you prefer to install manually:

# Clone the repository
git clone https://github.com/developeruche/hybrid.git
# Install the binaries
cargo install --path hybrid/bins/cargo-hybrid
cargo install --path hybrid/bins/hybrid-node
# Optional: Remove the cloned repository if no longer needed
rm -rf hybrid

Using cargo-hybrid

The cargo-hybrid tool provides a complete workflow for RISC-V-based smart contract development, extending the Rust ecosystem to support blockchain development.

Available Commands

CommandDescription
newCreate a new smart contract project
buildBuild a smart contract
checkCheck if a smart contract compiles
deployDeploy a smart contract to the blockchain
nodeStart a local development node

Creating a New Contract

cargo hybrid new [NAME] --template [TEMPLATE]

Available templates:

  • storage (default) - Contract with storage examples
  • bare - Minimal contract template
  • erc20 - ERC20 token implementation

Example:

cargo hybrid new my-token --template erc20

Building Contracts

cd my-token
cargo hybrid build

This compiles your Rust smart contract to RISC-V bytecode and outputs the binary to the out directory.

Options:

  • --out DIR - Specify a custom output directory (default: "out")

Checking Contracts

To check if your contract compiles without generating output:

cargo hybrid check

Deploying Contracts

cargo hybrid deploy --rpc [RPC_URL]

Options:

  • --out DIR - Specify the directory containing compiled contracts (default: "out")
  • --rpc URL - RPC endpoint to deploy to (default: "http://localhost:8545")
  • --private-key KEY - Private key to use for deployment (default key provided)
  • --encoded-args ARGS - Constructor arguments (hex encoded, with or without 0x prefix)

Example with constructor arguments:

cargo hybrid deploy --encoded-args 0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266

Starting a Local Node

You can start a local development node directly using cargo-hybrid:

cargo hybrid node

This starts the hybrid node in development mode.

Running the Hybrid Node

The Hybrid blockchain node is a RETH-based implementation that supports both EVM and RISC-V VM (r55) in a unified execution environment.

Starting the Node

hybrid-node start

Options:

  • --dev - Run in development mode with additional debugging features

Example:

hybrid-node start --dev

Viewing Node Configuration

hybrid-node config

Architecture

The framework consists of several key components:

  • hybrid-derive: Procedural macros for contract development (#[contract], #[storage], etc.)
  • hybrid-compile: Rust-to-RISC-V compilation pipeline
  • hybrid-vm: Virtual machine for executing RISC-V contracts in EVM context
  • hybrid-ethereum: Custom Ethereum node implementation using Reth
  • rvemu: RISC-V emulator implementation, a clone and modification of the RISC-V emulator
  • cargo-hybrid: Command-line interface for development workflow

Development Workflow

  1. Create Project: Use cargo hybrid new to scaffold a new contract
  2. Implement Logic: Write contract in src/lib.rs using Hybrid macros
  3. Local Testing: Use cargo test for unit tests
  4. Build: Compile with cargo hybrid build
  5. Deploy: Deploy with cargo hybrid deploy
  6. Interact: Use standard Ethereum tools for interaction

Contract Structure

Hybrid contracts require a specific project structure:

my_contract/
├── Cargo.toml # Must include required features and dependencies
├── src/
│ └── lib.rs # Contract implementation
└── out/ # Generated bytecode (after build)
└── my_contract.bin

Examples

Basic Storage Contract

use hybrid_derive::{contract, storage};#[storage]pubstructStorage{value:u64,}#[contract]implStorage{pubfnnew() -> Self{Self{value:0}}pubfnset_value(&mutself,new_value:u64){self.value = new_value;}pubfnget_value(&self) -> u64{self.value}}

Contributing

We welcome contributions! Please see our contributing guidelines for details.

Development Setup

  1. Clone the repository
  2. Install prerequisites
  3. Run tests: cargo test
  4. Build: cargo build

Acknowledgments

This project was inspired by and builds upon the work of the r55 team. The hybrid_evm crate and parts of the VM implementation were adapted from the r55 project, with modifications to support our hybrid execution environment.

Special thanks to the r55 team for their pioneering work in bringing RISC-V execution to the Ethereum ecosystem.

License

MIT License

Disclaimer

Note: This is experimental technology. Use with caution in production environments.

About

A comprehensive framework and node for developing, deploying, and interacting with smart contracts written in Rust and Solidity (including any language that compiles to EVM bytecode, such as Vyper, Yul, Huff, etc.)

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages