3 个版本
| 0.3.2 | 2024 年 7 月 31 日 |
|---|---|
| 0.3.1 | 2024 年 5 月 14 日 |
| 0.3.0 | 2024 年 4 月 23 日 |
#13 在 #waves
每月 155 次下载
在 we-cdk 中使用
13KB
157 行
we-cdk
用于在 Waves Enterprise 生态系统上开发 WASM 智能合约的工具包。
使用方法
编译智能合约的先决条件是安装 Rust 和 Cargo。这里是安装指南。
为了与合约一起工作,需要安装 cargo-we。它是一个 CLI 工具,有助于设置和管理 WASM 智能合约。
cargo install cargo-we --force
使用 --force 确保您已更新到最新的 cargo-we 版本。
还可以从该项目文件夹安装 CLI 工具。
cargo install --path ./crates/cargo-we/ --force
为了初始化新项目,可以使用
cargo we new flipper
这将在你工作目录中创建一个名为 flipper 的文件夹。该文件夹包含一个支架 Cargo.toml 和一个 lib.rs,它们都包含使用 WASM 智能合约所需的所有构建块。
lib.rs 包含我们的 hello world 合约 —— Flipper,我们将在下一节中进行解释。
要构建合约,只需在 flipper 文件夹中执行此命令
cargo we build
因此,您将在合约的 target/we/flipper.wasm 文件夹中获得一个 target/we/flipper.wasm 文件和一个 flipper.json 文件。
创建和更新合约
使用 cargo-we 还可以直接向网络节点发送 CreateContract 和 UpdateContract 交易。
为此,创建一个包含对节点访问描述和要发送的交易描述的文件。
要发送交易,您只需要执行以下命令
cargo we tx --send <path_json>
示例 JSON 文件
{
"nodeUrl": "https://:6862",
"apiKey": "we",
"transaction": {
"type" : 103,
"version" : 7,
"sender" : "3NA9hBGoVPfJVybremiFgWN8REi9oiDydEF",
"password": "",
"contractName": "flipper",
"params": [
{
"type": "boolean",
"key": "init_value",
"value": false
}
],
"isConfidential": false,
"fee" : 100000000,
"payments" : [ ],
"feeAssetId" : null,
"validationPolicy" : {
"type": "any"
},
"groupOwners" : [ ],
"groupParticipants" : [ ]
}
}
你好,世界!——翻转器
Flipper 合约是一个简单的合约,只包含一个 bool 值。
它提供了翻转其值从 true 到 false(反之亦然)的方法。
以下是可以看到使用 CDK 的代码。
#![no_std]
#![no_main]
use we_cdk::*;
// Declaring a function available for calling.
// `#[action]` keyword is used for this purpose.
// _constructor mandatory method that is called during CreateContract Transaction.
#[action]
fn _constructor(init_value: Boolean) {
// Write the obtained value as an argument of the function into contract state.
set_storage!(boolean :: "value" => init_value);
}
#[action]
fn flip() {
// Read the value from the contract state.
let value: Boolean = get_storage!(boolean :: "value");
// Write the inverted value to the contract state.
set_storage!(boolean :: "value" => !value);
}
依赖关系
~275–730KB
~17K SLoC