<img align="right" width="150" height="150" top="100" src = "https://avatars.githubusercontent.com/u/138247979?s=400&u=cbf4b9e9da048899a947f08d92e030806d5bd50b&v=4"/>

# The Zink Language

> [!CAUTION]
>
> This project is still under active development, please DO NOT use it in production.

[![zink][version-badge]][version-link]
[![ci][ci-badge]][ci-link]
[![telegram][telegram-badge]][telegram-group]

Welcome to the Zink Language! [Bounty issues](https://zink-lang.org/bounties) are now available, join the development of Zink by reading the [book](https://zink-lang.org/).

```rust
//! 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](.cargo/config.toml).

## Special Thanks

- [MegaETH](https://github.com/megaeth-labs) for the funding and trust!
- [revm](https://github.com/bluealloy/revm) for the EVM in rust!

## LICENSE

GPL-3.0-only

[book]: https://zink-lang.org/
[telegram-badge]: https://img.shields.io/endpoint?label=chat&style=flat&url=https%3A%2F%2Fmogyo.ro%2Fquart-apis%2Ftgmembercount%3Fchat_id%3Dzinklang
[telegram-group]: https://t.me/zinklang
[version-badge]: https://img.shields.io/crates/v/zinkc
[version-link]: https://docs.rs/zinkc
[ci-badge]: https://img.shields.io/github/actions/workflow/status/clearloop/zink/main.yml
[ci-link]: https://github.com/clearloop/zink/actions/workflows/main.yml
[rustc-codegen]: https://doc.rust-lang.org/rustc/codegen-options/index.html
[wasm-opt]: https://github.com/WebAssembly/binaryen#binaryen-optimizations