import useBaseUrl from '@docusaurus/useBaseUrl'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';
This page covers the necessary software for your Casper development environment. To develop comfortably, you should use Linux Ubuntu 20.04
or macOS
. Developing on Windows is not advised.
:::caution
Casper does not officially support macOS
. If you encounter any problems, reach out to the community on Telegram or Discord.
:::
sudo apt install curl
sudo apt install build-essential
sudo apt-get install pkg-config
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt install cargo
xcode-select --install
Verify the installation:
xcode-select -p
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install pkg-config
brew install openssl
Install the Rust programming language if you don't already have it on your computer.
The official Rust guide recommends installing Rust by using curl
:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
After your next login, the installation script automatically adds Rust to your system PATH. To start using Rust immediately, run the following command in your shell instead of restarting your terminal. The command will add Rust to your system PATH.
source $HOME/.cargo/env
Verify the installation:
rustup --version
Note: You can also use brew
on MacOS or apt
on Linux to install Rust.
The best and fastest way to set up a Casper Rust project is to use cargo casper
. Using this will create a simple contract, a runtime environment, and a testing framework with a simple test. Cargo is a build system and package manager for Rust (much like pip if you are familiar with Python, or npm and yarn for those familiar with Javascript). It is also possible to use this configuration in your CI/CD pipeline.
cargo install cargo-casper
If you run into any issues with this command and you have not recently installed Rust from scratch, please make sure to update your Rust version with this command:
rustup update
Verify the installation:
cargo-casper --version
The default Casper client is on crates.io. This client can transmit your deploys to a Casper network.
cargo install casper-client
Verify the installation:
casper-client --version
The Casper client can print out help information, which provides an up-to-date list of supported commands. To do so, use the following command:
casper-client --help
You can use help
for each command to get the most up-to-date arguments and descriptions.
casper-client <command> --help
You can access the Casper client source code here. The lib
directory contains the source for the client library, which may be called directly rather than through the CLI binary. The CLI app casper-client
uses this library to implement its functionality.
If you wish to compile it, you will need to first install the nightly Rust toolchain with this command:
rustup toolchain install nightly
Then, compile the source code:
cargo build --release
You will find the casper-client
executable in the target/release
directory.
If you plan to compile contracts from the source code, including those provided in the casper-node repository, install CMake
with the commands below.
CMake is a popular build tool that we will use, and you may have it installed. If you do, make sure that you have the latest version. If you need to install or upgrade it, follow the steps below or on the CMake website. Once installed, check your version as shown below.
sudo apt-get -y install cmake
brew install cmake
Check your version:
cmake --version
Sample output:
cmake version 3.20.0 (or above)
CMake suite maintained and supported by Kitware (kitware.com/cmake).
We advise using an integrated development environment such as Visual Studio Code (VSC) for development. There are many IDEs available for Rust development. The most popular IDEs for Rust are the following:
You can use any IDE you wish. Most of our documentation and examples use Visual Studio Code (VSC), a popular IDE with many extensions that might be helpful during development.
If you are using VSC, you might find the following extensions useful:
CodeLLDB
– An important extension for debugging Rust coderust-analyzer
– The official Rust language extensionBetter TOML
– Support for formatting TOML filescrates
– An extension to help manage cratesError Lens
– Enhances the programming experience by highlighting syntax errors
The Account creation process consists of two steps:
- Creating an Account
- Funding the Account
The following video complements the instructions below, showing you the expected output.
<iframe width="400" height="225" src="https://www.youtube.com/embed?v=sA1HTPjV_bc&list=PL8oWxbJ-csEqi5FP87EJZViE2aLz6X1Mj&index=3" frameborder="0" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
The Casper blockchain uses an on-chain account-based model, uniquely identified by an AccountHash
derived from a specific PublicKey
.
By default, a transactional interaction with the blockchain takes the form of a Deploy
cryptographically signed by the key-pair corresponding to the PublicKey
used to create the account.
Users can create accounts using the Casper command-line client.
Alternatively, some Casper networks, such as the official Testnet and Mainnet, provide a browser-based block explorer that allows account creation as outlined here.
Use either method to generate an account and its corresponding cryptographic key-pair.
As a developer, you will often use an account hash, which is a 32-byte hash of the public key. This is because responses from the node contain AccountHashes
instead of the direct hexadecimal-encoded public key. To view the account hash for a public key, use the account-address
option of the Casper CLI client:
casper-client account-address --public-key <path-to-public_key.pem/public-key-hex>
After generating the cryptographic key-pair for an Account, you must fund the account's main purse to create it on-chain.
On Testnet, you can fund an account by requesting test tokens according to this guide. You can request test tokens only once for each account.
On Mainnet, a pre-existing account must transfer CSPR tokens to the newly created account's main purse to finalize the setup. The source account needs to transfer CSPR tokens to the hexadecimal-encoded public key of the target account. This transfer will automatically create the target account if it does not exist. Currently, this is the only way to create an account on Mainnet.
Clients can interact with a node on the blockchain via requests sent to that node's JSON-RPC endpoint, http://<node-ip-address>:7777
by default.
The node address is the IP of a peer node.
Both the official Testnet and Mainnet provide block explorers that list the IP addresses of nodes on their respective networks.
You can get the node-ip-address
of a node on the network by visiting the following block explorers:
You will see a list of peers, and you can select the IP of any peer on the list.
Note: If the selected peer is unresponsive, pick a different peer and try again.