#smart-contracts #setup #cargo #tool #enterprise #waves #ecosystem

app cargo-we

WASM智能合约开发的设置和部署工具

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

Download history 120/week @ 2024-04-22 122/week @ 2024-05-13 9/week @ 2024-05-20 3/week @ 2024-06-10 147/week @ 2024-06-24 9/week @ 2024-07-01 141/week @ 2024-07-29

141 每月下载次数

MIT 许可证

23KB
497

we-cdk

we-cdk crates.io cargo-we crates.io

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还可以直接将CreateContractUpdateContract交易发送到网络节点。

要完成此操作,请创建一个包含对节点访问描述和要发送的事务的文件。

要发送事务,您只需执行以下命令

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