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 魔法豆
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-mocha
和chai
(tests/目录 - 在其中运行npm i
和yarn
以获取所有包)的Node.JS测试环境 - 基本的
Warp.toml
文件,用于管理项目配置(部署脚本、测试设置等) - 一个共享库,用于轻松共享工作区中所有合约的
ExecuteMsg
和QueryMsg
模型(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