Skip to content
/ zink Public

Rustic programming language that targets the Ethereum Virtual Machine

License

Notifications You must be signed in to change notification settings

zink-lang/zink

Repository files navigation

The Zink Language

Caution

This project is still under active development, please DO NOT use it in production.

zink ci telegram

Welcome to the Zink Language! Bounty issues are now available, join the development of Zink by reading the book.

//! ERC20 Example (WIP)
#[zink::contract]
pub struct ERC20;

#[zink::calls]
impl ERC20 {
  /// VMs that zink supports
  pub fn support() -> [zink::String; 4] {
    ["EVM", "WASM", "RISC-V", "...OTHER_VMS"]
  }
}

#[zink::interface]
impl ERC20 for ERC20 {
  fn name() -> zink::String {
    "Zink Language".to_string()
  }
}
  • Safe: rustc monitors your code!

  • Efficient: Efficient EVM bytecode from rustc, wasm-opt, and zinkc.

  • Modular: Upload and download your contract components via crates.io.

  • Rusty: All of the rust tools are available for your contracts!

Run cargo install zinkup to install the toolchain!

Testing & Development

Command Description
cargo cc Clippy all packages
cargo tt Run all tests
cargo be Build all examples
cargo te Run tests for examples

We're using cargo-nextest for testing, the commands above are described in .cargo/config.toml.

Special Thanks

  • MegaETH for the funding and trust!
  • revm for the EVM in rust!

LICENSE

GPL-3.0-only