10 个版本

0.2.0 2022年12月1日
0.1.6 2022年11月12日
0.1.4 2022年10月10日
0.0.4 2022年9月27日
0.0.2 2022年8月14日

#7 in #off-chain

每月41次下载
用于 trireme

Apache-2.0

165KB
4K SLoC

Naumachia


🌊 在出海之前模拟你的战斗 🌊

Licence Crates.io Rust Build


Naumachia 是一个使用 Rust 在 Cardano 区块链上编写智能合约的框架!

正在进行中 :)

查看功能进度 路线图

Cardano 智能合约方案将大量代码推送到链下。Naumachia 的设计旨在尽可能简化链下代码的开发,同时也提供一个环境来测试你的链上代码。

库中包含声明式编排与验证者脚本、铸造策略和钱包交互的工具;构建和检查你的交易与你的链上代码;在多个抽象层测试所有这些代码;部署、管理和与你的智能合约在生产环境中交互。

旨在用作 Aiken 或任何其他链上脚本(UPLC)源的后端。

Naumachia 意在作为 Plutus 应用后端(PAB)的替代品。

目标

  • 让 Cardano 智能合约变得简单
  • 帮助智能合约开发者几分钟内进行原型设计
  • 将测试驱动开发(TDD)作为智能合约开发的首要任务
    • 使用 Aiken CEK 模拟器为你的 Plutus/Aiken/Helios/Raw UPLC 脚本启用单元测试
    • 使用模拟后端为你的整个智能合约启用单元测试
    • 为外部各方提供一个干净的接口来编写
  • 提供用于部署和生产环境中与你的实时智能合约交互的适配器
  • Trireme 将是一个 CLI 工具,供开发人员和最终用户管理他们的密钥、机密和 dApps。

长期目标

  • 允许你的智能合约编译成 WASM 并注入到你的 web dApp 中
    • 提供与浏览器钱包和你的选择的外部服务交互的适配器
  • 自动生成简单的 UI,例如 CLI、web 界面等

🚣 Trireme 👁

客户端 FTW

Trireme 是一个用于管理所有 dApps 和机密的 CLI。

目前,它只是一个 MVP,允许你的 Naumachia dApps 与区块链交互。最终,它将是一个完整的 CLI 钱包,你的 dApps 的包管理器,等等。

不稳定。

要本地安装,请运行

cargo install --path ./trireme

或者通过 crates.io 进行安装

cargo install trireme

使用以下方法进行设置

trireme init

并按照说明操作。

⚠️⚠️您的配置文件将存储在本地文件系统中的纯文本格式下,位于 ~/.trireme。请仅在 Trireme 仍处于新阶段时使用测试钱包。

演示

虽然功能仍然相当有限,但我很高兴地说 Naumachia 现在正在运行!您可以在 Testnet 上构建、部署并交互您的智能合约。随着时间的推移,我们将添加更多示例 dApps 来展示更多功能。

/sample-dApps 目录包括 always-succeeds-contract,只要您在您的机器上安装了

  1. Rust v1.64+ 工具链
  2. Blockfrost API 测试网项目(目前仍在旧测试网上,但这可能很快就会改变)
  3. 一个在 Testnet 上有一定资金的账户的秘密短语。您可以使用 YoroiNamiFlint 或任何 Cardano 钱包创建一个新的短语,并用 Testnet Faucet(我们很快将添加使用 Trireme 生成新短语的功能,但在此期间您需要在其他地方构建它))对其进行资金充值

我仅在 Linux 上进行了测试。

⚠️⚠️请务必小心不要使用您的持有密钥!请仅使用测试网钱包中您愿意损失资金的秘密短语。⚠️⚠️Naumachia 和 Trireme CLI 仍在开发中!

要与您的合约交互,您需要安装 trireme CLI

cargo install --path ./trireme

Trireme 允许您管理所有 Naumachia dApps 的密钥。

要添加您的 API 密钥和您的秘密短语,运行

trireme init

这将提示您输入您的信息。⚠️⚠️您的配置文件将存储在本地文件系统中的 ~/.trireme 目录下。

使用 Trireme 检查您的初始余额!

trireme balance

现在 Trireme 已经设置好了,您可以与区块链交互了!

首先,安装 dApp CLI

cargo install --path ./sample-dApps/always-succeeds-contract

并在合约地址上锁定 10 ADA

always-cli lock 10

您的交易可能需要几分钟才能显示在链上。

您可以使用 trireme balance 再次检查您的余额。或者,使用返回的 TxId 在 测试网浏览器 或您的钱包界面(Yoroi、Nami 等)中跟踪。您的余额应该减少了 10 + 手续费。

一旦交易完成,您可以运行

always-cli list 5

这将显示在脚本地址上的 5 个最新锁定 UTxOs(您可以随意查看更多)。您可能会看到在脚本地址上锁定的大量其他 UTxOs。您可以尝试索回这些,但由于多种原因,其中许多是不可索回的。

您需要找到您的,并在您的 claim 命令中包含 Output Id 信息。它看起来可能像

always-cli claim <tx_hash> <index>

再次,这可能需要几分钟才能执行。但请检查 trireme balance 或您的钱包界面,以查看您的余额已回到原始余额减去两次交易的手续费。

完成!

贡献

很高兴接受 PR 和一般反馈。还有很多工作要做,以使这个框架成为最好的框架,所以我会尽力帮助任何有兴趣贡献的人。

现代编程技术的忠实粉丝。我希望优先考虑

  1. 最终用户体验(开发者和小应用程序用户)
  2. 贡献者体验 + 维护性
  3. 性能,一旦其他东西都稳固了

如果您觉得缺少某些东西或者任何其他问题,请随意发起问题/讨论。我喜欢反馈,因为我一边进行一边在解决很多问题。我想确保设计正确。欢迎提问。

查看我们的架构图

请注意,持续集成(CI)需要这些命令才能通过。所以,请尝试在本地运行它们以节省时间。

cargo build --workspace
cargo test --workspace
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings

依赖关系

~15–33MB
~517K SLoC