0.6.1 |
|
---|---|
0.5.1 |
|
0.4.0 |
|
#5 in #key-name
在 4 个包中使用(3个直接使用)
330KB
6.5K SLoC
casperlabs-contract
开发CasperLabs智能合约的库。
许可协议
lib.rs
:
一个用于在CasperLabs平台上编写智能合约的Rust库。
no_std
默认情况下,该库为no_std
,但您可以通过启用crate的std
特性来启用完整的std
功能。
示例
以下示例包含会话代码,该代码在不可伪造的引用下持久化一个整数值。然后它将不可伪造的引用存储在上下文本地存储中的一个名称下。
#![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);
}
编写智能合约
编写智能合约的支持包含在contract_api
模块及其子模块中。
依赖项
~3MB
~61K SLoC