#key #contract #smart-contracts #casperlabs #value #key-name #run-time

已删除 casperlabs-contract

用于开发CasperLabs智能合约的库

0.6.1 2020年7月31日
0.5.1 2020年7月2日
0.4.0 2020年3月24日

#5 in #key-name


4 个包中使用(3个直接使用)

自定义许可协议

330KB
6.5K SLoC

casperlabs-contract

LOGO

Build Status Crates.io Documentation License

开发CasperLabs智能合约的库。

许可协议

遵循CasperLabs开源许可证(COSL)


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