#virtual-machine #contract #smart-contracts #virtual #smart #machine #wasm

nightly no-std piecrust-uplink

在 Dusk 的 piecrust 虚拟机上直接构建智能合约

24 个版本 (15 个重大更新)

0.16.0 2024 年 8 月 1 日
0.15.0 2024 年 7 月 3 日
0.14.0 2024 年 6 月 26 日
0.11.0 2024 年 2 月 14 日
0.1.0 2023 年 3 月 15 日

#2972 in 神奇豆

Download history 5/week @ 2024-04-19 11/week @ 2024-04-26 110/week @ 2024-05-03 26/week @ 2024-05-10 34/week @ 2024-05-17 21/week @ 2024-05-24 132/week @ 2024-05-31 50/week @ 2024-06-07 11/week @ 2024-06-14 139/week @ 2024-06-21 117/week @ 2024-06-28 132/week @ 2024-07-05 18/week @ 2024-07-12 90/week @ 2024-07-26 43/week @ 2024-08-02

每月下载量 162
6 个crate中使用了(3 个直接使用)

MPL-2.0 许可证

30KB
565

π-crust Uplink

Repository Build Status Documentation

Piecrust Uplink 是一个库,允许您在 Dusk 的 Piecrust 虚拟机上直接构建智能合约。

用法

该库允许合约平台的用户管理与合约主机环境的接口和状态。以下示例描述了一个基本的合约。有关更详细的示例,请参阅合约文件夹。

piecrust_uplink 添加为您的合约项目的依赖项

cargo install piecrust_uplink

要使用 uplink,在您的项目中导入依赖项并将其标记为 no_std

#![no_std]

use piecrust_uplink as uplink;

要将状态附加到合约

/// Struct that describe the state for your contract
pub struct Counter {
    value: i64,
};

/// State of the contract
static mut STATE: Counter = Counter { value: 0x1 };

要定义您的合约逻辑,请定义一个实现

impl Counter {
    pub fn read_value(&self) -> i64 {
        self.value
    }

    pub fn increment(&mut self) {
        let value = self.value + 1;
    }
}

读写操作需要暴露给主机。在实现以下内容下方添加

unsafe fn read_value(arg_len: u32) -> u32 {
    uplink::wrap_call(arg_len, |_: ()| STATE.read_value())
}

#[no_mangle]
unsafe fn increment(arg_len: u32) -> u32 {
    uplink::wrap_call(arg_len, |panic: bool| STATE.increment(panic))
}

发布历史

要查看此crate的发布历史,请参阅CHANGELOG文件。

许可证

此代码根据Mozilla公共许可证版本2.0(MPL-2.0)授权。请参阅LICENSE以获取更多详细信息。

贡献

如果您想为此项目做出贡献,请查阅CONTRIBUTING文件。

依赖项

~4–11MB
~141K SLoC