mostro-cli 0.14.0

Mostro P2P cli client
Documentation
# Mostro CLI 🧌

![Mostro-logo](static/logo.png)

Very simple command line interface that show all new replaceable events from [Mostro](https://github.com/MostroP2P/mostro)

## Requirements

0. You need Rust version 1.64 or higher to compile.
1. You will need a lightning network node

## Install dependencies

To compile on Ubuntu/Pop!\_OS, please install [cargo](https://www.rust-lang.org/tools/install), then run the following commands:

```bash
sudo apt update
sudo apt install -y cmake build-essential pkg-config
```

## Install

To install you need to fill the env vars (`.env`) on the with your own private key and add a Mostro pubkey.

```bash
git clone https://github.com/MostroP2P/mostro-cli.git
cd mostro-cli
cp .env-sample .env
cargo run
```

## Usage

```text
Commands:
  listorders         Requests open orders from Mostro pubkey
  neworder           Create a new buy/sell order on Mostro
  takesell           Take a sell order from a Mostro pubkey
  takebuy            Take a buy order from a Mostro pubkey
  addinvoice         Buyer add a new invoice to receive the payment
  getdm              Get the latest direct messages
  getadmindm         Get the latest direct messages for admin
  senddm             Send direct message to a user
  fiatsent           Send fiat sent message to confirm payment to other user
  release            Settle the hold invoice and pay to buyer
  cancel             Cancel a pending order
  rate               Rate counterpart after a successful trade
  restore            Restore session to recover all pending orders and disputes
  dispute            Start a dispute
  admcancel          Cancel an order (only admin)
  admsettle          Settle a seller's hold invoice (only admin)
  admlistdisputes    Requests open disputes from Mostro pubkey
  admaddsolver       Add a new dispute's solver (only admin)
  admtakedispute     Admin or solver take a Pending dispute (only admin)
  admsenddm          Send gift wrapped direct message to a user (only admin)
  conversationkey    Get the conversation key for direct messaging with a user
  getlasttradeindex  Get last trade index of user
  help               Print this message or the help of the given subcommand(s)

Options:
  -v, --verbose
  -m, --mostropubkey <MOSTROPUBKEY>
  -r, --relays <RELAYS>
  -p, --pow <POW>
  -h, --help                         Print help
  -V, --version                      Print version
```

## Examples

```bash
$ mostro-cli -m npub1ykvsmrmw2hk7jgxgy64zr8tfkx4nnjhq9eyfxdlg3caha3ph0skq6jr3z0 -r 'wss://nos.lol,wss://relay.damus.io,wss://nostr-pub.wellorder.net,wss://nostr.mutinywallet.com,wss://relay.nostr.band,wss://nostr.cizmar.net,wss://140.f7z.io,wss://nostrrelay.com,wss://relay.nostrr.de' listorders

# You can set the env vars to avoid the -m, -n and -r flags
$ export MOSTROPUBKEY=npub1ykvsmrmw2hk7jgxgy64zr8tfkx4nnjhq9eyfxdlg3caha3ph0skq6jr3z0
$ export RELAYS='wss://nos.lol,wss://relay.damus.io,wss://nostr-pub.wellorder.net,wss://nostr.mutinywallet.com,wss://relay.nostr.band,wss://nostr.cizmar.net,wss://140.f7z.io,wss://nostrrelay.com,wss://relay.nostrr.de'
$ mostro-cli listorders

# Create a new buy order
$ mostro-cli neworder -k buy -c ves -f 1000 -m "face to face"

# Cancel a pending order
$ mostro-cli cancel -o eb5740f6-e584-46c5-953a-29bc3eb818f0

# Create a new sell range order with Proof or work difficulty of 10
$ mostro-cli neworder -p 10 -k sell -c ars -f 1000-10000 -m "face to face"
```

## Progress Overview

- [x] Displays order list
- [x] Take orders (Buy & Sell)
- [x] Posts Orders (Buy & Sell)
- [x] Sell flow
- [x] Buy flow
- [x] Maker cancel pending order
- [x] Cooperative cancellation
- [x] Buyer: add new invoice if payment fails
- [x] Rate users
- [x] Dispute flow (users)
- [x] Dispute management (for admins)
- [x] Create buy orders with LN address
- [x] Direct message with peers (use nip-17)
- [x] Conversation key management
- [x] Add a new dispute's solver (for admins)
- [ ] Identity management (Nip-06 support)
- [ ] List own orders