MobileCoin MainNET offline wallet build

Hello,

I’m looking for some assistance in setting up an offline software wallet on (mostly) cold-storage VM. My understanding is that running the ‘mobilecoind’ daemon handles the connection to MAINnet and exposes an internal server to handle front-end requests. Unfortunately, there isn’t currently any front-end software to use this backend, just python bindings and a RESTful API library.

Once having ‘mobilecoind’ set up and connected, what set of commands would I need to issue or which front-end/API should I leverage to create a wallet address for deposit?

Afterwards, what files would I need to preserve to ensure that I can prove ownership, in say 1 or 2 years? Is it just ‘wallet.db’?

Thank you!

The full-service backend apparently supports offline transaction signing. See here at the bottom.

To prove ownership of outputs all you need is your root entropy AFAIK. However to prove you created/sent a specific transaction you probably need to store the wallet-db. Maybe one of the devs can clarify.

What I have found so far:

I was able to easily create a mobilecoin account (i.e. the seed to recover keys belonging to an address) using the mobilecoin-python-cli

This seems to work only, while running an instance of the full-service, providing access to the network.

I started the service like this (command is for the test net!):

./full-service \
                            --wallet-db /tmp/wallet-db/wallet.db \
                            --ledger-db /tmp/ledger-db/ \
                            --peer mc://node1.test.mobilecoin.com/ \
                            --peer mc://node2.test.mobilecoin.com/ \
                            --tx-source-url https://s3-us-west-1.amazonaws.com/mobilecoin.chain/node1.test.mobilecoin.com/ \
                            --tx-source-url https://s3-us-west-1.amazonaws.com/mobilecoin.chain/node2.test.mobilecoin.com/

This will AFAIR not work on an airgapped machine. The full-service seems to require an internet connection and the python-cli requires a connection to the service.

Therefore, I think cold storage on an airgapped machine is not possible currently. (please correct me if I’m wrong).

I have not yet sent mobilecoin to an adress created in this way. (I have no testnet mobilecoins. I read that I should have gotten an email with a testnet coin key. Have never seen this email…)

Assuming you installed the above python command line interface, you can use

$mobcli --help

to see the available obtions:

$mobcli --help
usage: mobilecoin [-h] [-v] {start,stop,create,rename,import,export,qr,remove,list,history,send} ...

MobileCoin command-line wallet.

positional arguments:
  {start,stop,create,rename,import,export,qr,remove,list,history,send}
                        Commands
    start               Start the local MobileCoin wallet server.
    stop                Stop the local MobileCoin wallet server.
    create              Create a new account.
    rename              Change account name.
    import              Import an account.
    export              Export seed phrase.
    qr                  Show account address as a QR code
    remove              Remove an account from local storage.
    list                List accounts.
    history             Show account transaction history.
    send                Send a transaction.

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         Show more information.

obvisouly with

mobcli create

you’ll create a new account.
The seed and everyting you need to back this up, you can put out to a file using

mobcli export YOUR_ACCOUNT_NAME

with YOUR_ACCOUNT_NAME as seen after (or set during) creation.

With

mobcli list

you can see all your accounts and the balance of all accounts.

When I find the time, I’ll test with actual coins.

For offline storage you could create an address once, back up the file you create with mobcli export ... and note down the address for receiving mob.
Use the address for sending MOB to yourself and never access your seed file again until the day you need it again, if that is what you want?

Edit: I wanted to mention: For the full-service, the latest release is called “Pre-release 1.0.0-pre.1” and I’d rather not use a pre-release version.
However, when there’s a pre relase of 1.0.0, the actual 1.0.0 release will likely be available soon. Maybe there will be more thorough documentation with 1.0.0

Hi @bbb - offline mode is possible, but you must sync the ledger first on the online machine.

Re: the python client, you should be able to use that on the offline machine as well. We will do a follow up post with more details!