0.6.1 |
|
---|---|
0.5.1 |
|
0.4.0 |
|
#22 in #casper-labs
Used in 4 crates
(3 directly)
330KB
6.5K
SLoC
casperlabs-contract
A library for developing CasperLabs smart contracts.
License
Licensed under the CasperLabs Open Source License (COSL).
lib.rs
:
A Rust library for writing smart contracts on the CasperLabs Platform.
no_std
By default, the library is no_std
, however you can enable full std
functionality by enabling
the crate's std
feature.
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.
#![no_std]
use casperlabs_contract::{
contract_api::{runtime, storage},
};
use casperlabs_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);
}
Writing Smart Contracts
Support for writing smart contracts are contained in the contract_api
module and its
submodules.
Dependencies
~3MB
~64K SLoC