3 个不稳定版本

0.2.1 2024年2月22日
0.1.2 2023年10月21日
0.1.1 2023年10月21日

神奇豆子

MIT 许可证

215KB
5.5K SLoC

crate rust wasm coverage

⚠️ 不要鲁莽:此项目处于早期开发阶段,但它确实可以使用真实的 sat!请始终使用您不介意丢失的金额。

moksha

moksha 是一个基于 David Wagner 的 Chaumian 混淆变体的 Ecash 实现,它是一个用 Rust 编写的 cashu 库、铸币和 CLI 钱包。

内容

关于

Cashu 是一个基于 David Wagner 的 Chaumian 混淆变体的 Ecash 实现。代币逻辑基于 minicash (描述),该方案实现了 Ruben Somsen 在此处记录的 盲 Diffie-Hellman 密钥交换 方案。有关更多信息,请参阅 Cashu 文档。

进度

铸币功能

  • 支持的后端
    • LNbits
    • Lnd
    • Alby
    • Strike
    • core-lightning (WIP)

钱包功能

  • 连接到铸币(加载密钥)
  • 请求铸币代币
  • 铸币代币
  • 发送代币(为所选值获取编码的代币)
  • 接收代币
  • 融化代币
  • 检查代币是否已花费
  • 多铸币支持

实现了 NUTs

软件包

用法

部署铸造

Docker-compose

Docker-compose 简化了运行多容器 Docker 应用程序的过程。以下是您如何使用它来运行 moksha -mint 的方法

  1. 首先,您需要在您的机器上安装 Docker Compose。如果没有安装,您可以从官方 Docker 网站下载。

  2. 将您的 LND 实例中的 tls.cert 和 admin.macaroon 文件复制到 ./data/mutinynet/ 目录中。

  3. docker-compose.yml 文件中配置 LND_GRPC_HOST 环境变量,使其指向您的 LND 实例。

  4. 在您的 docker-compose.yml 文件所在的目录中运行以下命令以启动铸造和 PostgreSQL 数据库

docker-compose up -d app database

开发

设置 rust

git clone https://github.com/ngutech21/moksha.git
cargo install just typos-cli sqlx-cli grcov wasm-pack wasm-opt
rustup component add llvm-tools-preview
cd moksha

为您的平台安装 protobuf

这是 LND 后端所需的。

sudo apt install protobuf-compiler
brew install protobuf
choco install protoc

配置

mv .env.example .env
# edit .env file
vim .env

运行铸造(cashu-server)

要运行铸造,您需要设置一个类似 Polar 的闪电 regtest 环境和一个 Lnbits 或 Lnd 实例。在 Lnbits 中创建一个新的钱包,将管理员密钥复制到 .env 文件中,并将 URL 设置为您的 Lnbits 实例。铸造使用 PostgreSQL 存储已使用证明和待处理发票。数据库 URL 可以在 .env 文件中配置。

install docker and docker-compose
docker compose up -d
just db-create
just run-mint

运行 cli-wallet

显示信息

显示当前版本、数据库目录和铸造 URL。

just run-cli info

检查余额

just run-cli balance

铸造令牌

此命令将返回一个 Lightning 发票,您需要支付以铸造新的 ecash 令牌。

just run-cli mint 42

发送令牌

要将令牌发送给其他用户,请输入。令牌将被打印到 STOUT。然后您可以通过任何消息应用将它们发送给接收者。

just run-cli send 21

接收令牌

要接收令牌,您需要在接收命令的第一个参数中输入令牌。令牌将被验证,并且值将添加到您的余额中。

just run-cli receive cashuAeyJ0...

开发

要运行覆盖率、检查错误等,请使用 just 命令

Available recipes:
    build-docker   # build the mint docker-image
    build-wasm     # compile all rust crates, that are relevant for the client, to wasm
    clean          # clean cargo
    db-create      # creates the postgres database
    db-migrate     # runs sqlx prepare
    db-prepare     # runs sqlx prepare
    default        # list all tasks
    deps           # install all dependencies
    final-check    # format code, check typos and run tests
    publish        # publish everything on crates.io
    run-cli *ARGS  # run cli-wallet with the given args
    run-coverage   # run coverage
    run-itests     # run integrationtests
    run-mint *ARGS # run the cashu-mint
    run-tests      # runs all tests
    typos          # check code for typos
    typos-fix-all  # fix all typos

许可证

moksha 根据 MIT 许可证分发。请参阅 LICENSE

依赖关系

~91MB
~1.5M SLoC