Crate casper_contract
source ·Expand description
A Rust library for writing smart contracts on the Casper Platform.
no_std
The library is no_std
, but uses the core
and alloc
crates.
Example
The following example contains session code which persists an integer value under an unforgeable reference. It then stores the unforgeable reference under a name in context-local storage.
Writing Smart Contracts
#![no_std]
#![no_main]
use casper_contract::contract_api::{runtime, storage};
use casper_types::{Key, URef};
const KEY: &str = "special_value";
const ARG_VALUE: &str = "value";
fn store(value: i32) {
// Store `value` under a new unforgeable reference.
let value_ref: URef = storage::new_uref(value);
// Wrap the unforgeable reference in a value of type `Key`.
let value_key: Key = value_ref.into();
// Store this key under the name "special_value" in context-local storage.
runtime::put_key(KEY, value_key);
}
// All session code must have a `call` entrypoint.
#[no_mangle]
pub extern "C" fn call() {
// Get the optional first argument supplied to the argument.
let value: i32 = runtime::get_named_arg(ARG_VALUE);
store(value);
}
Support for writing smart contracts are contained in the contract_api
module and its
submodules.
Modules
- Contains support for writing smart contracts.
- Contains low-level bindings for host-side (“external”) functions.
- Home of
UnwrapOrRevert
, a convenience trait for unwrapping values.
Statics
- An instance of
WeeAlloc
which allows contracts built asno_std
to avoid having to provide a global allocator themselves.