#productivity #smart-contracts #cosmwasm #archway #blockchain #cli-tool #front-end

app arch-warp-cli

比以往任何时候都更快地搭建、构建、测试和部署Archway网络智能合约

4个版本 (2个破坏性更新)

0.3.0 2024年2月15日
0.2.1 2023年7月3日
0.2.0 2023年6月26日
0.1.0 2023年5月6日

#124 in 魔法豆

MIT 许可证

91KB
2K SLoC

Warp CLI

此工具仍处于开发初期阶段。请将您在此处GitHub上发现的所有问题报告 用于构建、测试和部署Archway智能合约的全能生产力工具链。

此工具已为Archway黑客马拉松的EvolvNFT项目进行了适配。

要求

此工具旨在支持当前的工具栈,因此您仍然需要开发智能合约所需的所有内容

  • Rust 1.50+,
  • archwayd CLI工具
  • 如果您想运行测试,需要Node和Npm,
  • 构建合约和运行节点需要Docker

我计划在未来减少这个列表,但现在这不是优先事项。

变更日志

v0.2.0的变更日志可在此处找到

安装

您可以从此仓库的主分支构建二进制文件

cargo install --git https://github.com/archway-warp/warp-cli.git

或者,还有一个crates.io选项

cargo install arch-warp-cli

用法

Usage: warp <COMMAND>

Commands:
  init    Initialize a new Warp project
  build   Build the current workspace
  deploy  Execute the 'Auto Deploy' script for the workspace (see Warp.toml)
  new     Scaffold a new contract
  node    Start the local validator node
  test    Run the JavaScript tests from the '/tests/' directory
  help    Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help information
  -V, --version  Print version information

初始化一个新的工作区

使用warp init <WORKSPACE_PATH>命令创建一个新的Cargo工作区,该工作区预配置为与Warp CLI一起使用。

此命令将克隆warp-template仓库并执行一些基本设置。工作区默认支持以下功能

  • 使用ts-mochachai(tests/目录 - 在其中运行npm iyarn以获取所有包)的Node.JS测试环境
  • 基本的Warp.toml文件,用于管理项目配置(部署脚本、测试设置等)
  • 一个共享库,用于轻松共享工作区中所有合约的ExecuteMsgQueryMsg模型(Warp CLI处理所有事宜)

智能合约模板框架

使用warp new <CONTRACT_NAME>,您可以快速向工作区添加新的合约。该命令克隆合约并为您处理所有样板设置

  • msg.rs模块添加到shared库,以便其他合约易于访问
  • (目前正在开发中)在Warp.toml中的AutoDeploy脚本中添加条目,以准备您的合约进行部署(当然,您可能需要稍后对其进行修改以使其与您的合约一起工作)

构建合约

要构建您的合约,您可以使用warp build命令

Usage: warp build [OPTIONS]

Options:
  -o, --optimized  Build for production with 'workspace-optimizer' docker image

这很简单,正如广告中所说。此外,一些其他命令可以在执行前使用-(重新构建)标志调用此命令。

启动本地节点

您可以使用warp node命令快速启动新的本地节点。这是通过使用localsecret映像实现的。这是一个正在开发中的功能。

测试您的智能合约

如果您与EVM端口、Warp或Warp CLI一起工作,您会熟悉这一点。您可以使用warp test命令启动本地节点。这是一个正在开发中的功能。

如果您已经熟悉了与EVM端口、Warp或Warp CLI一起工作,您会熟悉这一点。您可以使用warp test命令启动本地节点。这是一个正在开发中的功能。

Run the JavaScript tests from the '/tests/' directory

Usage: warp test [OPTIONS]

Options:
  -r, --rebuild           Rebuild the contracts before running tests
  -s, --skip-environment  Don't start a new instance of localsecret for this testing session

(目前正在开发中)如果您已经熟悉了与EVM端口、Warp或Warp CLI一起工作,您会熟悉这一点。您可以使用warp test命令启动本地节点。这是一个正在开发中的功能。

  • (目前正在开发中)如果您已经熟悉了与EVM端口、Warp或Warp CLI一起工作,您会熟悉这一点。您可以使用warp test命令启动本地节点。这是一个正在开发中的功能。
  • (目前正在开发中)如果您已经熟悉了与EVM端口、Warp或Warp CLI一起工作,您会熟悉这一点。您可以使用warp test命令启动本地节点。这是一个正在开发中的功能。
  • (目前正在开发中)如果您已经熟悉了与EVM端口、Warp或Warp CLI一起工作,您会熟悉这一点。您可以使用warp test命令启动本地节点。这是一个正在开发中的功能。
  • (目前正在开发中)如果您已经熟悉了与EVM端口、Warp或Warp CLI一起工作,您会熟悉这一点。您可以使用warp test命令启动本地节点。这是一个正在开发中的功能。

将合约部署到本地节点

(目前正在开发中)如果您已经熟悉了与EVM端口、Warp或Warp CLI一起工作,您会熟悉这一点。您可以使用warp test命令启动本地节点。这是一个正在开发中的功能。

命令 warp deploy 使用在 Warp.toml 文件中定义的 autodeploy 脚本。部署步骤按从上到下的顺序执行,队列中较下面的脚本实际上可以引用前面合约的地址。这是我自己的项目中最需要的特性之一,因为我不太喜欢 TypeScript,这也是创建 Warp CLI 的主要原因。

示例 AutoDeploy 脚本

以下脚本将使用 deployer 账户(secretcli keys show deployer)将三个合约部署到网络上。第一个脚本只指定了所有者参数,而其他两个既依赖于部署者账户也依赖于彼此

[autodeploy]
account_id = 'deployer' # The account to use for deployment
make_labels_unique = true # Append the labels with pseudo-random numbers

[[autodeploy.steps]]
id = '$_acl' # Internal id for use in `init_msg` parameters of later contracts
contract = 'artifacts/acl.wasm' # Path to the compiled file
init_msg = '{ "default_role": "CALLER", "owner": "$account_id" }' # `$account_id` will be parsed into the actual secret address of the deployer wallet
label = 'Dapp: ACL'
coins = '' # Optional: Attach a deposit to the Instantiate call

[[autodeploy.steps]]
id = '$_system'
contract = 'artifacts/system_manager.wasm'
init_msg = '{ "acl": "$_acl", "owner": "$account_id" }'
label = 'Dapp: System Manager'

[[autodeploy.steps]]
id = '$_factory'
contract = 'artifacts/factory.wasm'
init_msg = '{ "acl": "$_acl", "system": "$_system", "owner": "$account_id" }'
label = 'Dapp: Factory'

前端如何?

目前不包括前端。我不是前端开发者,因此无法对前端世界中的使用舒适度提出意见。将来将通过 CLI 提供各种前端选项。

路线图

这个工具可以工作,但绝对不能被认为“稳定”。因此,除了添加一些杀手级功能外,还有大量的重构和错误修复要做。请报告您发现的任何问题!

长期目标

请记住,在这个早期阶段,计划可能会根据最需要的功能有很大的变化。这目前更像是一个指导方针。

  • 改进用户体验 - 修复错误并消除/减少尴尬的等待时间
  • 将合约迁移机制作为 warp deploy 的可选或默认行为实现 - 优先级
  • 添加对各种前端模板的构建支持
  • 添加对模板的一般支持 - 不同版本的 cosmwasm 的合约模板,或者预配置的 CW 标准合约(例如 warp new main_token -t cw20-staking?)
  • 找出尽可能自动生成合约消息模式的方法
  • 使与 dockerized localsecret 的接口更简洁 - docker exec -it secretdev secret cli blah blah
  • 编写适当的文档
  • 自动配置 archwayd 节点以减少测试目的的区块时间
  • 可能移除对本地安装的 archwayd 的依赖,以实现更“便携”的设置,该设置开箱即用

依赖关系

~4–16MB
~153K SLoC