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 神奇豆
每月下载量 162
在 6 个crate中使用了(3 个直接使用)
30KB
565 行
π-crust Uplink
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