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://127.0.0.1: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