Following our earlier guide on How to Mine Grin, we are happy to share our experience in terms of sending Grin using the official Grin wallet! Grin price has seen a significant volatility and there is huge interest from various party.

In this guide, we’ll be covering ways to receive Grins via file and HTTP listener for Windows 10. If you're looking for ways to withdraw Grins from mining pools or exchanges, look no further! If you are a Linux user, you can skip the setup of the VM Virtualbox section.

While there may be other methods out there that work better or faster, the methods shown in this guide is one of the ways that works for Windows 10! Feel free to tweak around if you are familiar with the things described below, and give us a shoutout if you find anything interesting!

Grin is slightly different from most of the cryptocurrencies you are used to in terms of sending and receiving. There are no addresses in Grin and there are mainly two modes of receiving Grin coins: (i) receive by file and (ii) receive via a HTTP listener which requires you to have a running node and wallet listener.

Note: While it's always tempting to mine at the largest pools, it's a better idea to spread out Grin network's graphrate - try out different pools to distribute the graphrates more evenly! There also appears to be ongoing effort in Grin's official community calling for better graphrate distribution.

There are 3 sections to this article:

1. Section A: Receiving Grin via File

2. Section B: Receiving Grin via HTTP Listener

3. Section C: Sending Grin

Let's get started!

To demonstrate this, we'll be using the Grinmint mining pool as an example to request for email payouts. This is basically how you receive Grin coins via a file. The methods described here would be similar if you would like to receive Grin coins from someone else via a file.

Step 1: Setting up the Virtual Machine for Grin Node & Wallet (Skip if Linux or OS X)

1. Download Oracle VM and Linux Mint

(i) Oracle VirtualBox (VM) - Select the one for Windows hosts.

(ii) Linux Mint - I used 19.1 Tessa, 64-bit Cinnamon edition.

It is IMPORTANT to use 64-bit as the Grin Wallet only has 64-bit edition for Linux.

2. Install and set up the Oracle VM VirtualBox.

Once it has been installed, start it and click on “New” to set up your Virtual Machine and select Ubuntu (64-bit)

Note: If Ubuntu (64-bit) is not available, you may not have enabled Virtualization for your processor. Here’s a guide to enable it (requires restart!).

3. 2048 MB of RAM should be enough for your VM to run on Mint (You can up this to 4096 MB if your PC has sufficient RAM. W10 takes about 4 GB to run smoothly)

4. Create a 20GB Virtual Disk that’s dynamically allocated for your VM and you can follow the rest of the settings by default.

5. Once you are done, you will see the “Mint” VM pop up on the left section of the Oracle VM Program. Double click on it and you should see this prompt, and this is where you select the Linux Mint file you’ve downloaded earlier.

6. Click on “Start” and it should boot up to its desktop after a short wait.

7. Click on "Install Linux Mint" - the reason for this is that your current Linux Mint is running "Live" (by CD only) and will need to be permanently installed. For installation, I selected all default settings, ticked "yes" for 3rd party software to run Wifi etc., and it took ~10 minutes to install Mint.

That’s it! You now have a VM running Linux Mint and are ready for the next step.

Step 2: Running Grin Node & Wallet

In the VM, use Firefox and download the Grin Core Linux 64-bit version (grin-v1.0.0-479973573-linux-amd64.tgz as of 22nd Jan 2018) from here.

Once you have it downloaded, go to the downloads folder, right click on any empty space and click “Open in Terminal” then enter the following:

tar xzf grin-v1.0.0-479973573-linux-amd64.tgz

mkdir ~/grin

cp grin ~/grin

echo export 'PATH=~/grin:$PATH' >> ~/.bashrc

source ~/.bashrc

After that, the next thing you will be doing is to run a Grin Node, which is necessary (and super simple) because your wallet needs it. In the same place, open the terminal and type:

grin

Note: since we already added grin to $PATH, we no longer have to prefix every command with "./". But if you run into issues, try with "./grin" and it should work.

You should see this screen:

Give the node about 10 minutes to sync. Once the sync is complete, you are now running a full node!

Now open a new tab in your terminal using “File” > “New Tab” and type in:

grin wallet init

The program will prompt you to enter your password (You will use it every time you transact) and your seed keys (Save them. Save them!). Once done, the wallet should be set up and will be ready for use! Official documentation is here and in this guide, we’ll be focusing on the ones you will need to transfer Grin.

To check your balance at any time, type in:

grin wallet info

Step 3: Request for Email Payout (to get your file)

Now that your VM, Grin Node and Grin Wallet are all up and running, it’s time to get some Grin coins in! Here we are using Grinmint’s email payout (which will be similar to someone else sending you Grin via file) as an example.

1. On Grinmint, navigate to your Dashboard (enter email on top left) and click on Payouts.

2. On the bottom right, under “Actions”, enter your miner’s password and click on “Request Email Payout”. You should receive a file in your email that looks something like the following name "tx-a-bunch-of-alphanumeric".

3. Download the file (defaults to downloads folder) and in the Grin Wallet, receive the file by typing:

cd downloads

grin wallet receive -i tx-bunch-of-alphanumeric

4. In the same folder, you will see the "tx-bunch-of-alphanumeric.response" file. Now you need to send it back to Grinmint to “finalize” the transaction. Similar to (b), enter your password and click finalize transaction to upload the file.

And that’s about it! Wait for a short while and type:

grin wallet info

The balance should be under “awaiting confirmation”. With a block time of approximately 1 minute, you should be able to spend them after 10 minutes!

Receiving Grin coins manually by sending files is no doubt a troublesome process - but you can automate it by having a HTTP listener, which basically means to have your machine actively listen to the network for transactions for you, and accept them.

With a running HTTP listener, all you need to do is to type grin wallet info to check your balance.

Step 1: Setting up VM, running Grin Node and Wallet.

See Step 1 and Step 2 from Section A: Receiving Grin via File.

Step 2: Configuring your VM to have public IP, and port forwarding.

1. Set your VM’s Network settings to “Bridged Adapter” instead of NAT under Machine > Settings.

2. Go to your router settings page, and forward port 3415 for TCP. Different routers have different settings, but for my Asus router, it is under WAN > Port Forwarding.

3. Now that’s done, go to http://www.canyouseeme.org/ to check if your port 3415 is open. If it is not, then you likely (i) did not forward the ports correctly, (ii) have a private IP instead of public IP - call your ISP for this, or (iii) can try to restart everything

4. If you see Success: I can see your service on <Your IP> on port 3415 then you’re good to go! Your Grin address to receive coins is now “http://<Your IP>:3415” (eg. http://123.45.67.89:3415)

5. Open a terminal, run your Grin node and open up the wallet (in a new tab) for listening by typing:

grin wallet -e listen

Ensure that you are listening to 0.0.0.0:3415, and you should be good to go.

6. Use a different tab (3rd tab) to check your balance.

IMPORTANT: To receive via HTTP listener it needs to be active at all times. You can open a new tab to check your balance when needed. This is how mine looks like:

And that’s about it! You have successfully set up your HTTP listener and it is now time to test sending small amounts of Grin coins to it!

If you are sending from exchanges, it might take a couple of hours for them to process your withdrawal requests. Personally I’ve waited for more than 5 hours for Bibox to withdraw to my HTTP listener so do expect to wait a little.

There are two ways to send Grin - by file and directly to a user with a HTTP listener. We have tested both and we have some interesting results that will make you more comfortable with sending!

I. Sending Grin via File

Requirements: Both parties must be online and active to transact.

Pros: Beginner Friendly

Cons: Multiple Steps

Step 1: With your Grin Node and Wallet running, enter the following command in your wallet’s terminal:

grin wallet send -m file -d any_transaction_name.tx 0.1

A file with the name “any_transaction_name.tx” should be generated and you can then send it to your recipient.

Step 2: Recipient accepts file using the following command:

grin wallet receive -i any_transaction_name.tx

This generates a file called "any_transaction_name.tx.response" which will be sent back to you for confirmation.

Step 3: Finalize/confirm transaction on your end. Upon receiving the .response file, enter the following command:

grin wallet finalize -i any_transaction_name.tx.response

This should complete the transaction and you can type in grin wallet info to see your balances.

That’s it! Even though it involves sending back and forth between two users, it is generally painless to get it to work. Read on for the HTTP method.

II. Sending Grin Via HTTP (to someone with an active HTTP Listener)

Requirements: Recipient must have an active HTTP listener.

Pros: Fast and doable once set up correctly.

Cons: Not as beginner friendly.

Sending to someone with an active HTTP listener is an easy, one-step process and we definitely prefer this over using a file sending method. With your Grin Node and Wallet running, enter the following command in your wallet’s terminal:

grin wallet send -d http://IP-Address:3415 amount

See the image below for the results. For your convenience, we have also tested to see what happens if the coins were sent to a wrong address that’s not listening.

In the first row, we can see that the wallet lets you know if the other end isn’t active/listening and does not send out any of yours funds. It tries to send for about a minute before it times out and displays the “Wallet Command Failed” error.

Secondly, when it is sent to the correct address, it took about 5 seconds to show the “completed successfully” message. When we checked on the other computer with grin wallet info, it showed up as well so sending to someone with an active HTTP listener is definitely much faster and easier than via file.

However, do note that if you enter the wrong address and that address happens to have an active HTTP listener, you coins WILL BE SENT OUT. Please exercise caution when sending!

That's it! If you're at this point in the guide you should be able to run a VM, Grin Node, Grin Wallet as well as Send/Receive Grins! I hope this has been helpful for you and that you have had fun reading it as much as I have writing it!