Public peer-to-peer note transactions
In this section, we show you how to execute transactions and send funds to another account using the Miden client and public notes.
Prerequisite steps
- You should have already followed the prerequisite steps and get started documents.
- You should have not reset the state of your local client.
Create a second client¶
Tip
Remember to use the Miden client documentation for clarifications.
This is an alternative to the private P2P transactions process.
In this tutorial, we use two different clients to simulate two different remote users who don’t share local state.
To do this, we use two terminals with their own state (using their own miden-client.toml
).
-
Create a new directory to store the new client.
mkdir miden-client-2 cd miden-client-2
-
Initialize the client. This creates the
miden-client.toml
file line-by-line.For themiden init --rpc 18.203.155.106
--rpc
flag, enter the IP that the Miden team supplied. -
On the new client, create a new basic account:
miden new-wallet --mutable -s on-chain
We refer to this account as Account C. Note that we set the account’s storage mode to
on-chain
, which means that the account details are public and its latest state can be retrieved from the node. -
List and view the account with the following command:
miden account -l
Transfer assets between accounts¶
-
Now we can transfer some of the tokens we received from the faucet to our new account C. Remember to switch back to
miden-client
directory, since you’ll be making the txn from Account ID A.To do this, from the first client run:
miden send --sender <basic-account-id-A> --target <basic-account-id-C> --asset 50::<faucet-account-id> --note-type public
Note
The faucet account id is
0xad904b3138d71d3e
and can also be found on the Miden faucet website under the title Miden faucet.This generates a Pay-to-ID (
P2ID
) note containing50
tokens, transferred from one account to the other. As the note is public, the second account can receive the necessary details by syncing with the node. -
First, sync the account on the new client.
miden sync
-
At this point, we should have received the public note details.
miden notes --list
Because the note was retrieved from the node, the commit height will be included and displayed.
-
Have account C consume the note.
miden consume-notes --account <regular-account-ID-C> <input-note-id>
Tip
It’s possible to use a short version of the note id: 7 characters after the
0x
is sufficient, e.g.0x6ae613a
.
That’s it!
Account C has now consumed the note and there should be new assets in the account:
miden account --show <account-ID>
Clear state¶
All state is maintained in store.sqlite3
, located in the directory defined in the miden-client.toml
file.
To clear all state, delete this file. It recreates on any command execution.