Blazing fast toolkit for developing Starknet contracts.

Overview

logo

Starknet Foundry

Telegram Chat Telegram Support

Blazingly fast toolkit for developing Starknet contracts designed & developed by ex Protostar team from Software Mansion based on native Cairo test runner and Blockifier, written in Rust 🦀 .

Need help getting started with Starknet Foundry? Read the 📖 Starknet Foundry Book!

Example run

Starknet Foundry, like its Ethereum counterpart, consists of different modules

  • Forge: Starknet testing framework (like Truffle, Hardhat and DappTools but for Starknet).
  • Cast: All-in-one tool for interacting with Starknet smart contracts, sending transactions and getting chain data.

Installation

To install Starknet Foundry, run:

curl -L https://raw.githubusercontent.com/foundry-rs/starknet-foundry/master/scripts/install.sh | sh

You can also specify a version you wish to install:

curl -L https://raw.githubusercontent.com/foundry-rs/starknet-foundry/master/scripts/install.sh | sh -s -- -v 0.1.0

To verify that the Starknet Foundry is installed correctly, run snforge --version and sncast --version.

Features

  • Fast testing framework Forge written in Rust
  • High-quality dependency management using scarb
  • Intuitive interactions and deployment of Starknet contracts through Cast

Roadmap

Starknet Foundry is under active development! Expect a lot of new features to appear soon! 🔥

  • Running tests written in Cairo
  • Contract interactions testing
  • Interacting with Starknet from command line
  • Multicall support
  • Cheatcodes
  • Parallel tests execution
  • Performance improvements
  • Deployment scripts written in Cairo
  • Starknet state forking
  • Advanced debugging utilities
  • L1 L2 messaging and cross-chain testing
  • Transactions profiling
  • Fuzz testing
  • Test coverage reports

Performance

Forge achieves performance comparable to the Cairo Test Runner with improved user experience. All that is possible on just a single thread and multithreading is well on its way!

Starknet test framework speed comparison

To learn more about our benchmark methodology check here.

Getting Help

You haven't found your answer to your question in the Starknet Foundry Book?

Found a bug? Open an issue.

Contributions

Starknet Foundry is under active development, and we appreciate any help from the community! Want to contribute? Read the contribution guidelines.

Check out development guide for local environment setup guide.

Comments
  • Split forge tests, so they can be filtered out

    Split forge tests, so they can be filtered out

    Introduced changes

    • split e2e and integration tests, so they can now be invoked separately:
    cargo test integration --manifest-path ./starknet-foundry/Cargo.toml -p forge
    cargo test e2e --manifest-path ./starknet-foundry/Cargo.toml -p forge
    

    of course running all tests is still possible using the same command as prviously

    • Run e2e tests on separate runner, to decrease overall forge tests execution time

    Breaking changes

    None

    Checklist

    • [X] Linked relevant issue
    • [X] Updated relevant documentation
    • [X] Added relevant tests
    • [X] Performed self-review of the code
    opened by THenry14 9
  • Return `Result` from `vm_memory.rs` methods instead of using `expect`

    Return `Result` from `vm_memory.rs` methods instead of using `expect`

    https://github.com/software-mansion/protostar/issues/2006

    There are methods in vm_memory.rs using expect. These should be changed to return anyhow result with relevant message. It should panic at the cheatcodes_hint_processor level, or this method should be moved there.

    blocked Component: Forge 
    opened by cptartur 5
  • State testing

    State testing

    Closes #104

    Introduced changes

    Checklist

    • [x] Linked relevant issue
    • [x] Updated relevant documentation
    • [x] Added relevant tests
    • [x] Performed self-review of the code
    opened by cptartur 4
  • fix: remove starknet foundry folder

    fix: remove starknet foundry folder

    Closes #298

    Introduced changes

    • Move all content of folder /starknet-foundry to /
    • Fix all paths in pipeline, documentation, scripts and includes.

    Breaking changes

    • /starknet-foundry -> /

    Checklist

    • [x] Linked relevant issue
    • [x] Updated relevant documentation
    • [x] Added relevant tests
    • [x] Performed self-review of the code
    opened by julio4 2
  • Add start_warp

    Add start_warp

    Closes #56

    Introduced changes

    • Introduced start_warp

    Checklist

    • [x] Linked relevant issue
    • [x] Updated relevant documentation
    • [x] Added relevant tests (up to forge)
    • [x] Performed self-review of the code
    opened by Arcticae 2
  • Deploying docs from release fails

    Deploying docs from release fails

    Because of the settings of gh-pages environment, deployment of docs from releases (tags) fails. We should update these settings or the workflow so the docs build passes.

    bug 
    opened by cptartur 2
  • Duplicated test results in `src` when modules are added to `lib.cairo`

    Duplicated test results in `src` when modules are added to `lib.cairo`

    With the project structure like

    /src/fib.rs

    fn fib(a: felt252, b: felt252, n: felt252) -> felt252 {
        match n {
            0 => a,
            _ => fib(b, a + b, n - 1),
        }
    }
    
    #[test]
    fn test_fib() {
        assert(fib(0, 1, 10) == 55, fib(0, 1, 10));
    }
    

    /src/lib.rs

    mod fib;
    

    Test results are duplicated in the output

    Collected 2 test(s) and 2 test file(s)
    Running 1 test(s) from src/fib.cairo
    [PASS] fib::fib::test_fib
    Running 1 test(s) from src/lib.cairo
    [PASS] src::fib::test_fib
    Tests: 2 passed, 0 failed, 0 skipped
    

    Most likely the tests from fib.rs get collected when running collect_tests on lib.rs since they are reachable from there. Then we collect them again from fib.rs directly, causing the duplication. This should be fixed, so we do not collect test duplicates.

    bug Component: Forge 
    opened by cptartur 2
  • Deploy panics when passing incorrect constructor calldata

    Deploy panics when passing incorrect constructor calldata

    When passing incorrect constructor calldata to deploy forge panics

    thread 'main' panicked at 'Unparseable error message, {revert_error}', crates/forge/src/cheatcodes_hint_processor.rs:538:14
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    bug Component: Forge 
    opened by piotmag769 2
  • Hotfix deploy bug

    Hotfix deploy bug

    It basically made forge panic every time deploy was called. We didn't notice it since the path to predeployed contracts were valid on our machines (since we built forge manually)

    opened by piotmag769 2
  • Docs: First steps

    Docs: First steps

    A very minimal tutorial on using Forge. Similar to https://book.getfoundry.sh/getting-started/first-steps

    Avoid including or explaining any technical details here.

    Component: Forge 
    opened by cptartur 2
  • Add broken test result

    Add broken test result

    Sometimes a test case may have not run correctly regardless of actual logic (e.g. invalid setup), it can be made more explicit with a special Broken test result variant.

    opened by Radinyn 2
  • Bump serde from 1.0.175 to 1.0.180

    Bump serde from 1.0.175 to 1.0.180

    Bumps serde from 1.0.175 to 1.0.180.

    Release notes

    Sourced from serde's releases.

    v1.0.180

    • Update to 2018 edition

    v1.0.179

    • Support serialization of tuple variants inside a flattened field (#2448, thanks @​Mingun)

    v1.0.178

    • Fix build error when using serde with "std" feature turned off and "unstable" feature turned on (#2541)

    v1.0.177

    • Add serde(rename_all_fields = "...") attribute to apply a rename_all on every struct variant of an enum (#1695, thanks @​jplatte)
    • Improve diagnostics for attribute parse errors (#2536, thanks @​jplatte)

    v1.0.176

    • Allow tag field of an internally tagged enum to have same name as a field inside a skipped struct variant (#2266, thanks @​flisky)
    Commits
    • 033d05f Release 1.0.180
    • fe4e3fd Merge pull request #2547 from dtolnay/tombstone
    • 8a8a8a7 Delete tombstones of the __private module
    • 339dca8 Merge pull request #2546 from dtolnay/edition
    • 0d7349f Resolve ambiguous core import on rustc 1.64 through 1.71
    • 830528d Update to 2018 edition
    • ab90fbc Apply 'cargo fix --edition'
    • 3eec111 Delete support for compilers without crate::-based module system
    • 9388433 Rename 'try!' macro to 'tri!' in preparation for 2018 edition
    • ba12070 Merge pull request #2545 from dtolnay/up
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump cairo-vm from 0.5.2 to 0.8.2

    Bump cairo-vm from 0.5.2 to 0.8.2

    Bumps cairo-vm from 0.5.2 to 0.8.2.

    Release notes

    Sourced from cairo-vm's releases.

    v0.8.2

    • chore: update dependencies, particularly lamdaworks 0.1.2 -> 0.1.3 #1323

    • fix: fix UINT256_MUL_DIV_MOD hint #1320

    • feat: add dependency installation script install.sh #1298

    • fix: specify resolver version 2 in the virtual workspace's manifest #1311

    • feat: add lambdaworks-felt feature to cairo-vm-cli #1308

    • chore: update dependencies, particularly clap 3.2 -> 4.3 #1309

      • this removes dependency on atty, that's no longer mantained
    • chore: remove unused dependencies #1307

      • rand_core
      • serde_bytes
      • rusty-hook (dev-dependency)
    • chore: bump cairo-lang-starknet and cairo-lang-casm dependencies to 2.0.0 #1313

    v0.8.1

    • chore: change mentions of cairo-rs-py to cairo-vm-py #1296

    • rename github repo from https://github.com/lambdaclass/cairo-rs to https://github.com/lambdaclass/cairo-vm #1289

    • fix(security): avoid OOM crashes when programs jump to very high invalid addresses.

    • fix: add to_bytes_be to the felt when lambdaworks-felt feature is active #1290

    • chore: mark modpow and to_signed_bytes_le as deprecated #1290

    • fix: bump lambdaworks-math to latest version, that fixes no-std support #1293

    • build: remove dependency to thiserror (use thiserror-no-std/std instead)

    • chore: use LambdaWorks' implementation of bit operations for Felt252 #1291

    • update cairo-lang-starknet and cairo-lang-casm dependencies to v2.0.0-rc6 #1299

    v0.8.0

    • feat: Add feature lambdaworks-felt to felt & cairo-vm crates #1218

      Changes under this feature:

      • Felt252 now uses lambdaworks' FieldElement internally
      • BREAKING: some methods of Felt252 were removed, namely: modpow and to_bytes_be

    v0.7.0

    • BREAKING: Integrate RunResources logic into HintProcessor trait #1274
      • Rename trait HintProcessor to HintProcessorLogic

    ... (truncated)

    Changelog

    Sourced from cairo-vm's changelog.

    [0.8.2] - 2023-7-10

    • chore: update dependencies, particularly lamdaworks 0.1.2 -> 0.1.3 #1323

    • fix: fix UINT256_MUL_DIV_MOD hint #1320

    • feat: add dependency installation script install.sh #1298

    • fix: specify resolver version 2 in the virtual workspace's manifest #1311

    • feat: add lambdaworks-felt feature to cairo-vm-cli #1308

    • chore: update dependencies, particularly clap 3.2 -> 4.3 #1309

      • this removes dependency on atty, that's no longer mantained
    • chore: remove unused dependencies #1307

      • rand_core
      • serde_bytes
      • rusty-hook (dev-dependency)
    • chore: bump cairo-lang-starknet and cairo-lang-casm dependencies to 2.0.0 #1313

    [0.8.1] - 2023-6-29

    • chore: change mentions of cairo-rs-py to cairo-vm-py #1296

    • rename github repo from https://github.com/lambdaclass/cairo-rs to https://github.com/lambdaclass/cairo-vm #1289

    • fix(security): avoid OOM crashes when programs jump to very high invalid addresses #1285

    • fix: add to_bytes_be to the felt when lambdaworks-felt feature is active #1290

    • chore: mark modpow and to_signed_bytes_le as deprecated #1290

    • fix: bump lambdaworks-math to latest version, that fixes no-std support #1293

    • build: remove dependency to thiserror (use thiserror-no-std/std instead)

    • chore: use LambdaWorks' implementation of bit operations for Felt252 #1291

    • update cairo-lang-starknet and cairo-lang-casm dependencies to v2.0.0-rc6 #1299

    [0.8.0] - 2023-6-26

    • feat: Add feature lambdaworks-felt to felt & cairo-vm crates #1281

      Changes under this feature:

      • Felt252 now uses LambdaWorks' FieldElement internally
      • BREAKING: some methods of Felt252 were removed, namely: modpow and to_signed_bytes_le

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump serde_json from 1.0.103 to 1.0.104

    Bump serde_json from 1.0.103 to 1.0.104

    Bumps serde_json from 1.0.103 to 1.0.104.

    Release notes

    Sourced from serde_json's releases.

    v1.0.104

    Commits
    • ab08483 Release 1.0.104
    • f6cc4f3 Merge pull request #1045 from ZetaNumbers/value-ref-into-deserializer
    • 8e8db8c Implement IntoDeserializer for &Value
    • 8f90eac Delete inline attributes throughout test suite
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump toml from 0.5.11 to 0.7.6

    Bump toml from 0.5.11 to 0.7.6

    Bumps toml from 0.5.11 to 0.7.6.

    Commits
    • 59ae12d chore: Release
    • 501bbcd docs: Update changelog
    • c2a36b0 Merge pull request #576 from marcospb19/toml-edit-add-retain-method-to-collec...
    • 4b2d3c9 toml_edit: add retain to arrays and tables
    • bb108a8 feat(toml): add Map::retain method (#575)
    • 22fb58e chore: Don't release serde_toml
    • bd45f69 chore: Release
    • 8ef76fb docs: Update changelog
    • 224dca8 Merge pull request #574 from cuviper/indexmap-2
    • ef0a3fc chore: Upgrade to indexmap 2
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump ark-std from 0.3.0 to 0.4.0

    Bump ark-std from 0.3.0 to 0.4.0

    Bumps ark-std from 0.3.0 to 0.4.0.

    Changelog

    Sourced from ark-std's changelog.

    v0.4.0

    Breaking changes

    • #35 Change test_rng to return impl Rng, and make the output randomized by default when the std feature is set. Introduces a DETERMINISTIC_TEST_RNG environment variable that forces the old deterministic behavior when DETERMINISTIC_TEST_RNG=1 is set.

    Features

    Improvements

    Bug fixes

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
Releases(v0.2.0)
Owner
Foundry
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
Foundry
🥷🩸 Madara is a ⚡ blazing fast ⚡ Starknet sequencer, based on substrate, powered by Rust 🦀

Report a Bug - Request a Feature - Ask a Question ⚡ Madara: Starknet Sequencer on Substrate ?? Welcome to Madara, a blazing fast ⚡ Starknet sequencer

Keep StarkNet Strange 138 Apr 22, 2023
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.

foundry Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust. Foundry consists of: Forge: Ethe

Georgios Konstantopoulos 5.1k Jan 9, 2023
Helpful functions and macros for developing smart contracts on NEAR Protocol.

near-contract-tools Helpful functions and macros for developing smart contracts on NEAR Protocol. This package is a collection of common tools and pat

Jacob 27 Dec 17, 2022
Helpful functions and macros for developing smart contracts on NEAR Protocol.

near-contract-tools Helpful functions and macros for developing smart contracts on NEAR Protocol. This package is a collection of common tools and pat

NEARFoundation 9 Aug 3, 2022
zink! is a library for developing ink! smart contracts with useful Rust macros that extend functionality and reduce boilerplate code.

zink! Smart Contract Macros This is a helper library for developing ink! smart contracts. It contains useful Rust macros that extend functionality and

Scio Labs 3 Nov 3, 2023
Minimal Substrate node configured for smart contracts via pallet-contracts.

substrate-contracts-node This repository contains Substrate's node-template configured to include Substrate's pallet-contracts ‒ a smart contract modu

Parity Technologies 73 Dec 30, 2022
evm2near compiles Solidity contracts into NEAR WebAssembly contracts.

EVM → NEAR evm2near is a project for compiling EVM bytecode into wasm bytecode, with the particular goal of having that wasm artifact be executable on

Aurora 125 Dec 3, 2022
Ticketed Discreet Log Contracts (DLCs) to enable instant buy-in for wager-like contracts on Bitcoin.

dlctix Ticketed Discreet Log Contracts (DLCs) to enable instant buy-in for wager-like contracts on Bitcoin. This project is part of the Backdrop Build

null 7 Feb 29, 2024
🐺 Starknet Rust types 🦀

types-rs ?? Starknet Rust types ?? This repository is an initiative by a group of maintainers to address the fragmentation in the Starknet Rust ecosys

Starknet 22 Jun 2, 2023
Kraken is a Starknet modular decentralized sequencer implementation.

Lambda Starknet Sequencer A Starknet decentralized sequencer implementation. Getting started The objective of this project is to create an L2 decentra

Lambdaclass 10 Jun 25, 2023
Exploratory work on abigen in rust for Starknet 🦀

Starknet abigen for rust bindings This exploratory work aims at generating rust bindings from a contract ABI. Before the first release, we are termina

null 9 Sep 11, 2023
Channel some Ki with Lua scripts for sending transactions to Starknet, powered by Rust.

Kipt Kipt is leveraging the simplicity of Lua scripts to manage Starknet contracts using starknet-rs under the hood. With few lines, you can declare,

null 3 Nov 3, 2023
A blazing fast, type-safe template engine for Rust.

markup.rs A blazing fast, type-safe template engine for Rust. markup.rs is a template engine for Rust powered by procedural macros which parses the te

Utkarsh Kukreti 209 Dec 24, 2022
A low-level assembly language for the Ethereum Virtual Machine built in blazing-fast pure rust.

huff-rs • huff-rs is a Huff compiler built in rust. What is a Huff? Huff is a low-level programming language designed for developing highly optimized

Huff 276 Dec 31, 2022
Blazing fast Pedersen hash implementation for Node.JS

pedersen-fast Blazing fast Pedersen hash implementation for Node.JS Exposes starknet-crypto's implementation written in Rust as WASM package. Usage np

L2BEAT 7 Mar 10, 2023
Open sourcing a profitable MEV Arbitrage Bot written in blazing fast Rust.

Dex Arbitrage - MEV Bot Open sourcing a profitable MEV Arbitrage Bot written in blazing fast Rust. Before Starting I am a self-taught programmer, a co

null 4 Sep 18, 2023
A secure development tool box and fintech application made with Rust to be used for developing cryptocurrencies on the blockchain.

Crypto Fintech Tools for Rust (CFT) Dependencies Rust MacOS Homebrew # xcode cli tools xcode-select --install # install dependencies using Homebrew b

Phil Hills 1 Apr 15, 2022
Selendra is a multichains interoperable nominated Proof-of-Stake network for developing and running Substrate-based and EVM compatible blockchain applications.

Selendra An interoperable nominated Proof-of-Stake network for developing and running Substrate-based and EVM compatible blockchain applications. Read

Selendra 16 Nov 29, 2022
Reference library that implements all the necessary functionality for developing a client that is compatible with TAPLE's DLT network.

⚠️ TAPLE is in early development and should not be used in production ⚠️ TAPLE Core TAPLE (pronounced T+ ?? ['tapəl]) stands for Tracking (Autonomous)

Open Canarias 6 Jan 25, 2023