4个版本
0.2.4 | 2024年7月31日 |
---|---|
0.2.3 | 2024年6月24日 |
0.2.2 | 2024年5月14日 |
0.2.1 | 2024年4月23日 |
#10 in #waves
141 每月下载次数
23KB
497 行
we-cdk
Waves Enterprise生态系统上开发WASM智能合约的工具包。
使用方法
编译智能合约的前提是已安装Rust和Cargo。以下是安装指南。
要使用合约,需要安装cargo-we
。这是一个命令行工具,有助于设置和管理WASM智能合约。
cargo install cargo-we --force
使用--force
确保您已更新到最新的cargo-we
版本。
还可以从本项目文件夹安装CLI工具。
cargo install --path ./crates/cargo-we/ --force
要初始化一个新项目,可以使用
cargo we new flipper
这将在您的工 作目录中创建一个名为flipper
的文件夹。该文件夹包含一个scaffold Cargo.toml
和一个lib.rs
,它们都包含使用WASM智能合约所需的基本构建模块。
lib.rs
包含我们的hello world合约——Flipper
,我们将在下一节中解释。
要构建合约,只需在flipper
文件夹中执行此命令
cargo we build
结果,您将在合约的target/we/flipper.wasm
文件和flipper.json
文件中找到target/we
文件夹。
创建和更新合约
使用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
值。
它提供了方法 flip
,可以将值从 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);
}
依赖项
~11-24MB
~374K SLoC