Hey there π Welcome to Ajuna Network, the ecosystem for gamers and creators. This site is the entry point for all creators building or integrating on top of Ajuna Network!
Ajuna Network is built using the Substrate framework and relies heavily on Rust as the programming language. Any level of familiarity with either of the subjects will be useful but is not required as we can provide support on filling knowledge gaps on those subjects.
To start developing on Ajuna Network, we recommend reading through our suggestions below.
Also see Tools and Extensions for more recommendations.
The main binary required to build our blockchain project is OpenSSL. Follow these instructions to install it for your operating system.
Rust can be installed using package managers such as Homebrew but we recommend following the official way as shown below.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Once the installation finishes, Rustβs toolchain manager rustup should be available. Run the following to make sure the stable release channel is referenced by default and update to the latest stable releases.
rustup default stable && rustup update
Substrate uses WebAssembly to allow runtime modules to be compiled down to Wasm blobs, which can then be shared across a compatible Substrate-based blockchain network to achieve forkless upgrades of the chain. To do so, we need to be able to target Wasm binaries when building our project.
Run the below command to install necessary components, only available via nightly releases, to target Wasm.
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
You can choose any IDEs as long as it supports either the official Rust Language Server (RLS) or the alternative rust-analyzer. However we recommend the following extensions (or plugins) for your IDE of choice. The examples below are given based on VS Code but any tools that serve similar purposes for your IDE are acceptable.
cargo fmt is enabledFinally make sure these are set in settings.json:
{
"[rust]": {
"editor.defaultFormatter": "matklad.rust-analyzer"
},
"cSpell.language": "en",
"editor.formatOnSave": true,
"evenBetterToml.formatter.reorderKeys": true,
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true
}