Beginner’s guide to setting up and operating a masternode

In a previous article, I discussed three options for earning passive income in the crypto space, one of which was the running of a masternode.

When I first got into crypto, running a masternode seemed like something beyond my level of expertise. What I eventually discovered, though, was that the problem wasn’t my level of expertise; instead, it was knowledge assumptions made by tutorial authors, and the glossing over of important concepts and details.

In this article, I’m going to explain the basic concepts, and walk the reader through the detailed setup of a masternode, such that he or she will hopefully be able to do the same with minimal assistance.

In short, this is the article I wish I’d had, when getting started!

Fundamental concepts

A masternode provides services to its blockchain network. For example, PIVX masternodes facilitate transactions that are private. Operators of masternodes are required to stake, or lock-up, a specific number of coins. As compensation, masternode operators receive periodic rewards.

Since a masternode is an operational component, and therefore needs to be available at all times, it’s usually best to run a masternode on a virtual private server, or “VPS”.

Since storing your coins on an internet-connected server wouldn’t be a good idea, masternoding allows you to store your locked-up coins offline on your local machine, in the project’s wallet.

Overview of the process

Following is a high-level overview of the procedure for setting up a masternode:

  1. Setup a VPS — Create a VPS, and install the blockchain project’s node software.
  2. Setup a local wallet — Download and install the project’s wallet on your local computer.
  3. Send some coins to yourself — Transfer the project’s minimum required coins into the local wallet. In the case of PIVX, that’s 10,000 coins. Within the local wallet, create a new receive address, and send the required number of coins to that address. By sending precisely this number of coins to a new address in the local wallet, it will recognize the availability of those coins for masternoding.
  4. Generate a private key — Within the local wallet, generate a masternode private key.
  5. Tell the local wallet about the server — Add your masternode private key, along with some other data, to your local masternode configuration file.
  6. Tell the server about the local wallet — Add some information, including your masternode private key, to the server’s configuration file.
  7. Restart everything — Restart the server software and local wallet, and enable the masternode.

Conceptually, that’s it! We’ll now walk through the detailed process of setting up a PIVX masternode. Once you’ve done this for one project, it’s almost trivial to do it for any other.

Before moving on, here’s a couple additional points to mention:

  • While masternoding, your staked coins will be locked up in your local wallet, unavailable for spending.
  • If your project supports staking, like PIVX does, any surplus coins in your local wallet can still be used for staking. (That would require your local wallet to be permanently online, however.)
  • You can support multiple masternodes with a single local wallet, by following the same procedure outlined here, but on a new receive address, and a new VPS.

Setup a VPS

To run a masternode, you need a VPS with at least 1GB of memory, which means you can select the $5/month option at a provider like DigitalOcean.

Two important points when setting up your server:

  1. Be sure to choose Ubuntu as the OS, so we can connect it to ServerPilot.
  2. Be sure to include your SSH key in the process of creating the server, so you can later login as root without a password. (For my masternodes, I just use the root user.)
  3. Be sure to enable automatic backups. This adds about 20% to the server cost, but is worth it.

Connect the VPS to ServerPilot

ServerPilot is a great service, which connects to all your VPSs, and maintains them with security updates and patches for free, allowing people like me, with little system administration skills, to operate servers. (Beyond security updates, you can use ServerPilot to setup and mangage WordPress and PHP sites, and the paid version gets you SSL, graphs and other features.)

Although ServerPilot promotes their integration with DigitalOcean, they actually can manage any Ubuntu server, such that if you choose another VPS provider, as long as you install Ubuntu, you can have ServerPilot manage it.

When connecting a new server at ServerPilot, you’ll see the following screen. If you added your SSH key to your DigitalOcean server, then by default root password login will be disabled, so you’ll need to check that box.

Submitting the form, you’ll then see a screen containing some unix commands:

Copy the complete contents of the unix commands to your local computer’s clipboard, and then paste them into your VPS, after logging in as root:

ssh [email protected]<vps_ip_address>

After pasting in your ServerPilot commands, you’ll soon see the ServerPilot website screen come to life with an indication that your server has successfully phoned home, and you’ll watch as ServerPilot completes its setup.

BTW, if you decide to use ServerPilot, and like this article, consider signing up with my referral link, and I’ll get a small credit on my account there.

Install a local SFTP client

For local editing of the remove VPS files, we’ll want to use a local SFTP client. On my Mac, I use Transmit. Be sure to create and test a connection to your VPS, logging in as root.

Install and setup the local wallet

Download and install your project’s local wallet software, which, as a general curiosity, is usually based on the “Qt” framework. Launch it and do the following:

  • Allow it to fully synchronize with the network.

  • Encrypt your wallet by going to the menu Settings → Encrypt Wallet

  • In the wallet options area of the settings, enable the “Show Masternode Tab” and “Coin Control”:

  • Be sure to backup your wallet file with the menu File → Backup Wallet.... Remember that most Qt wallets are not hierarchically deterministic, so you’ll need to create a new backup whenever you create a new receive address.

  • Finally, be sure that your wallet has, at least, slightly more than the minimum required coins for your masternode, e.g. 10,001 for PIVX (which requires 10,000).

Setup the masternode

Now we get to the fun part! I’m going to walk you through the process of setting up a PIVX masternode. Although the terminology may slightly differ in other projects, the approach should be nearly identical.

Step 1: Generate a new receive address

In the local wallet, enter the “Receive” tab and create a new receive address by entering any label you like, and clicking the “Request Payment” button.

On the next screen, click the “Copy Address” button, to copy your new address to your clipboard.

Step 2: Send coins to yourself

In the local wallet, enter the “Send” tab, and paste your receive address into the “Pay to” field. If you copied and pasted it correctly, the label you previously created will appear in the label field.

Step 3: Generate your private key, transaction hash and index

In this step, you’re going to generate three pieces of data you’ll need related to your new masternode. For all of these, you’ll need to be in the local wallet’s “Debug Console” which you can get to from the menu, Tools → Debug Console

First, generate your masternode private key, with this command:

masternode genkey

…after which you should see a long string appear, which is your private key:

Note down the private key, as you’ll need it later.

Next, generate the transaction hash and index that serve as proof of the transfer of coins you made to yourself:

masternode outputs

You’ll then see something like this:

Note down the transaction hash and the index, as you’ll need them in the next step.

Step 4: Update your local masternode configuration file

We’re now going to enter some information into our local masternode configuration file, that will allow our wallet and the server software to recognize each other.

To open the masternode configuration file for editing, access the menu Tools → Open Masternode Configuration File. In that file, you’ll want to add a single line (for each masternode you run), in the following format, with all fields separated by a space:

<mn_name> <vps_ip>:<port> <private_key> <trans_hash> <index>

Where:

  • mn_name — is any name you want.
  • vps_ip — is the IP address of your VPS.
  • port — is the port on which your masternode will communicate with others. This will be project specific; for PIVX it’s 51472.
  • private_key — is the masternode private key you generated earlier.
  • trans_hash — is the transaction hash you generated earlier.
  • index — is the transaction index you generated earlier.

For PIVX, my masternode configuration file might have a line like this:

mn1 123.456.789.012:51472 Lkj23lkj438s9d78sdf879sd0980fsdf0s98sad9a87dadsa9ds Dfg98d7f9d7f9g79d7gd97gdfs09d8f0s8df6d876sd87fs8s8df8df8g0d8s08d 0

Before moving on to the next step, be sure to also do the following:

  • Quit and restart your local wallet.
  • Unlock your local wallet with the menu item Settings → Unlock Wallet...

Step 5: Install the project node software on your VPS

We’re now going to download the project’s node software to our VPS. After logging in as root, make sure you’re in your home directory:

cd ~

Now we need to download the software. You’ll want to find the URL to the x86_64 linux version, for the latest release of the project’s software. You can find that by visiting the project’s GitHub repository, and navigating into the “Releases” area.

Once you have the URL, use the unix wget utility to download it. The command will look something like this:

wget https://github.com/project/releases/download/project-x86_64-linux-gnu.tar.gz

When the download finishes, unpack it with a command like this:

tar -zxvf project-x86_64-linux-gnu.tar.gz

Step 6: Understanding the project’s software

Before moving on, let’s quickly overview some relevant bits and pieces of what you just downloaded. Once you’ve unpacked and run your project’s node software—and don’t worry, I know we haven’t run it yet!—we’ll be working with the following directories, utilities and files:

  • Executables directory — This is where the project’s application software resides. For the current version of PIVX, it’s:

~/pivx-3.0.6/bin/

  • Server daemon — Located in the executables directory, this is the actual server application, and almost always end in ‘d’, since it’s known as a daemon. For PIVX, it’s:

pivxd

  • Command-line interface — We’ll use this application to interact with the daemon, e.g. telling it to shut down, or asking for its status:

pivx-cli

  • Data directory — This is where the software’s configuration files and local data are stored. For PIVX, it’s:

~/.pivx/

  • Project configuration file — Located in the data directory, this is the file that contains the configuration for the application software. For PIVX, it’s:

pivx.conf

There are many other files in the data directory, but for masternoding according to this procedure, we won’t be interacting with them.

Step 7: Configuring the server software

We’ll now configure the server software.

Since we haven’t yet run the software, we’ll start it, so that it will create its data directory:

~/pivx-3.0.6/bin/pivxd

This should fail, since the data directory wasn’t present, and therefore no configuration file would have been found. If it doesn’t, you can quit the server software with ctrl d

We’ll now use our local SFTP clientTransmit, in my case) to connect to the server, and open the project configuration file for editing:

~/.pivx/pivx.conf

What goes in the configuration file might vary slightly from project to project, but here’s the PIVX contents (with some placeholders):

rpcuser=<random_string>
rpcpassword=<longer_random_string>
rpcallowip=127.0.0.1
listen=0
server=1
daemon=1
logtimestamps=1
maxconnections=256
masternode=1
externalip=<vps_ip_address>
bind=<vps_ip_address>
masternodeaddr=<vps_ip_address>:<port>
masternodeprivkey=<masternode_private_key>

Here’s what you need to know:

  • rpcuser — This can be any random string, e.g. pivxmasternode
  • rpcpassword — This can be any random string, e.g. ju83FRT98Iuh64
  • masternodeaddr — Your VPS IP address is followed (after a colon) with your project’s port. This is the port on which your masternode will communicate with other members of the network.
  • masternodeprivkey — This is the masternode private key you generated earlier. It allows authentication between your local wallet and your masternode software.

Once you’ve finished editing your configuration file, save and close it.

Step 8: Start your masternode

We’ll now start the masternode on both the VPS, as well as our local wallet.

  • On the VPS, we start the daemon software:

~/pivx-3.0.6/bin/pivxd

  • In the local wallet, in the Masternodes tab, right-click on your masternode entry, and choose Start Alias.

Step 9: Check the masternode status

After step 8, you should allow some time, perhaps 20 minutes or so, for everything to sync and settle, after which you can check the status of things both on the server and the local wallet.

On the server, we’ll interact with the command-line utility:

~/pivx-3.0.6/bin/pivx-cli masternode status

If things are OK, we’ll see Masternode successfully started:

In the local wallet, in the Masternodes tab, we should see our masternode with a status of Enabled:

If everything looks good, congratulations, you’re now running a masternode!

  • You can now close your local wallet, as it doesn’t need to remain open.
  • Depending on the project, you should soon start to see rewards flowing into your local wallet. (For PIVX, it can take four or five days.)

Miscellaneous topics

Before concluding the article, here’s a couple of miscellaneous topics you should be aware of.

Remember, your coins are locked

If you click the “Coin Control” button in the “Send” tab of your local wallet, you’ll see that your masternode coins are locked, and will remain that way while your masternode is operational.

Unlocking your coins

If you want access to your coins again, you’ll need to do the following:

  • Stop the masternode software on the VPS:

~/pivx-3.0.6/bin/pivx-cli stop

  • In your local wallet, edit your masternode configuration file, removing the line you entered in step 4.
  • Restart your local wallet, at which point your coins will be available for spending.

Monitoring your masternode

I run several masternodes, and have created a Keyboard Maestro macro on my Mac that runs each 30 minutes, checking that my masternodes report correct status, and checking that they are running on the correct chain. (Chain checking is more relevant to new projects, that don’t have strong networks, and frequently fork.)

If you happen to run Keyboard Maestro, you can download my macros here. You’ll need to edit the server variable with the IP of your VPS.

If you don’t run Keyboard Maestro, and want to setup something yourself, here is the basic logic:

  • Query the server’s masternode status, and grep for the success string.

ssh [email protected]<server> "~/pivx-3.0.6/bin/pivx-cli masternode status"

  • Grab the current HTML from the PIVX block explorer:

curl http://www.presstab.pw/phpexplorer/PIVX/block.php

  • Grep to extract the hash of the latest block, using this regex:

Block\ Height:</th><td>([^<]+)<([^B]+)Block\ Hash:</th><td>([^<]+)

The latest hash will be found in \1 and the hash of the latest block will be found in \3.

  • Grab the hash of the latest block from my masternode.

ssh [email protected]<server> "~/pivx-3.0.6/bin/pivx-cli getblockhash <latest_block>"

  • Compare the two hashes. If they are different, then our masternode is off-chain, and needs to be re-synchronized, which involves stopping the server, deleting some files, and restarting. (My Keyboard Maestro macro handles that task as well.)

To re-sync, between stopping and starting the node software, here’s the command for deleting the files. (Thanks to moocowmoo of the Dash project for dramatically shortening the command I previously used):

ssh [email protected]<server> "cd ~/.pivx ; mv wallet{.dat,.k} ; rm -rf *.dat *.log blocks chainstate ; mv wallet{.k,.dat} ;"

Finally, if you ever need to confirm the version you’re running:

~/pivx-3.0.6/bin/pivx-cli --version

Troubleshooting

If this is your first time setting up a masternode, you’ll probably run into some hiccups. (Hopefully less than I did, with the available of this article!). If you need help, here’s two recommendations:

  • You can feel free to contact me, either by posting a comment on this article (which might help others), or emailing me through the contact form.
  • Most projects have a Discord online chat, with a #support channel in which you can ask questions. The PIVX project have paid personnel working in theirs, which have proven tremendously helpful in my experience.

Conclusion

As you’ll have noticed from my previous articles, I’m transitioning from the world of traditional investing, to the world of crypto investing, and in the process am doing a lot of hands-on learning to make sure I understand the ins and outs of this space.

Through this blog, and for the benefit of new entrants to this space, I hope to write articles that simplify some of the complex topics that I’ve struggled with, including details that many others have glossed over or left out entirely.

I hope you’ve enjoyed this one about operating a masternode, and if you have any questions or feedback, don’t hesitate to leave a comment below or email me through the contact form.

Earn passive income through staking, masternodes and lending

If you’re a long-term investor in cryptocurrencies, you’re probably holding some coins that you don’t intend to sell for many years. In this article, I’m going to discuss three ways you may be able to put those coins to work earning passive income, through staking, masternodes and lending.

I’m going to organize this article into an introduction to the concepts of staking and masternodes, then dive into the details of my approach to both, and conclude with a description of how I earn interest through lending.

Introduction to Staking

Readers will probably be familiar with Bitcoin’s consensus approach, called “Proof-of-Work” (PoW), in which miners spend energy computing hashes in order to validate transaction blocks and earn rewards. A more energy-efficient alternative to PoW is called “Proof-of-Stake”, in which the actors who validate blocks can be anyone who holds the blockchain’s token and is willing to “stake”, or lock-up, those tokens.

In a Proof-of-Stake network, the staker’s local wallet joins the global pool of stakers who are available to validate the blocks of transactions. When the network has a block of transactions to be validated, a staking wallet will be selected deterministically. The frequency with which a given wallet will be selected, is a function both of the number of coins being staked, and how long those coins have been staking, such that the stakers most dedicated to the network are chosen more often.

What’s in it for the stakers? Unlike PoW systems, there is no “block reward”. Instead, the staker that is chosen to validate a given block of transactions gets to keep the fees associated with the transactions in that block. For someone holding a PoS coin for the long-term, staking can be a source of passive income.

Introduction to Masternodes

Another interesting concept is the Masternode. In Bitcoin, the network is secured exclusively by miners. Networks like DASH, however, which involve additional functionality beyond validating blocks, add a second layer of “nodes”, called masternodes.

Masternodes, like miners, are permanently-available servers that provide second-layer functionality to a blockchain’s network. In the case of DASH, masternodes provide services such as its “Instant Send” feature, and “Private transactions”, in which the masternode mixes (obscures) transactions, like traditional bitcoin tumblers.

Masternode systems also require their operators to stake coins, and for their services, masternodes receive a percentage of the network’s mining fees, resulting in another potential form of passive income for the masternode coin holder.

Choosing your strategy

Let’s now think about staking and masternode strategies. Here are some considerations:

  • Opportunity cost — The total return you’ll receive on your investment is the sum of the coin’s annual price appreciation plus any returns you receive from staking or masternoding. Therefore, an investment in a coin whose price appreciates 15% per year is a better investment than a coin which provides 5% staking returns, but whose price is declining over time.

  • Minimum investment — While most staking systems don’t impose a minimum balance, all of the masternode systems I’ve seen do. The minimums vary by coin. In the case of DASH, it’s 1,000 coins, or at today’s prices, almost $500,000 USD. In the case of PIVX, it’s 10,000 coins, or about $50,000 USD.

  • Complexity — Staking involves leaving your GUI wallet open at all times, and can be achieved by anyone. Masternoding, on the other hand, involves running masternode software on a server that’s always connected to the internet—e.g. a hosted VPS at DigitalOcean—and therefore requires expertise of Unix-based system operation and administration. (Note that there are services available that will run a masternode for you, for a fee, but these are not covered in this article.)

  • Annual return — There are websites such as Masternodes.online that rank blockchain projects by the ROI of their masternodes:

As you can see, some master nodes offer annual returns in the four digits! Any student of history or economics, however, will know such returns are not sustainable. For the most part, I would ignore lists like these, and only stake or masternode a coin in which I would invest without any potential for passive income.

(An aside before moving on — In reporting returns of staking and masternodes, I commonly see the term ROI, return on investment, misused. ROI is a measure of total return, and what we’re interested in is the annual return. That measure is called IRR, or internal rate of return. If you have a savings account paying you 5% per year, its IRR is 5%. If you put money in that account, and leave it there for 5 years, your ROI will be 27.6%, or 1.055-1.)

In light of the above, here are coins that I masternode or stake:

  • DASH — For the next handful of years, one focus-area for me will be coins that address the use-case of money, and in that realm, I believe a small set of anonymous/privacy coins will flourish. I believe one of those will be DASH, based on its momentum and funding. Since I don’t hold 1,000 DASH coins, running my own masternode is out of the question, but I did find a great shared masternode service that I’ll describe in detail below. I’m currently earning around 7.5% IRR with DASH.

  • PIVX — PIVX is another anon/privacy coin that I like, on the basis of its technology and community. By design, there’s not a lot of economic benefit to masternoding with PIVX versus staking, and so for simplicity I just stake my coins and am currently earning around 5.0% IRR.

  • BLOCK — Blocknet is an interoperability project that I was turned on to by @notsofast, which I like based on its role—I believe cross-chain interoperability will be increasingly important—and by the pace of work I’ve observed from the project. I’m currently staking Blocknet, and am seeing an IRR of over 30%. I didn’t choose the project for that return, and I don’t imagine it will be sustainable for too long, but while it lasts, I’m not complaining!

What I do…

At this point, I’ll now dive into the details of DASH shared masternoding, PIV staking on Mac OS X, and then conclude with a discussion of margin lending at Bitfinex.

DASH Shared Masternoding

In a shared masternoding system, the masternode operator funds the masternode—1,000 coins in the case of DASH—from the contributions of multiple people, and then distributes the rewards pro-rata to the participants, minus a fee for providing the service. A critical difference between operating your own masternode, and participating in a shared service, is that in the latter you have to send the operator your DASH, rather than retaining them in your wallet. So shared systems require that you trust the operator.

For DASH, I was able to find two such services, Masternode.me, run by “Moocowmoo”, and Dashmasternode.io, run by “Splawik”. Both of these individuals have good reputations in the community. Moocowmoo charges 15% for his service, while Splawik charges 10%. Despite paying more, I went with Moocowmoo for the following reasons:

  1. Automation — Moocow has completely automated his service. Upon signing up, you receive a PGP signed welcome message containing a unique DASH deposit address assigned to you. You can, at any time, deposit DASH to this address, in multiples of 25 DASH, i.e. your deposits can be 25, 50, 75 DASH, etc. Upon deposit, you receive a PGP signed deposit receipt, indicating the address of the masternode to which you are contributing, the percentage of the masternode’s payout you will receive, and the address to which you will receive those payments. To redeem you DASH, you simply return the welcome message by email, and all your deposits are returned to their sending addresses. (For that reason, it’s important to deposit from a local wallet, and not an exchange.)

  2. Security — Moocow has engineered a “dead man’s switch” system that will ensure all customer funds are returned in case something happens to him. The way his system works is, should any of his session logins remain idle for 30 days, his dead man’s switch monitor will assume something has happened, and will automatically dispatch pre-signed transactions to return customer funds.

So far, so good. I’ve made a couple of deposits, and am regularly (roughly weekly) receiving payments and payment receipts, and earning about 7.5% IRR.

PIVX Staking

The PIVX network applies a dynamic algorithm that shifts the proportion of rewards between stakers and operators of masternodes. An estimation of rewards between the two options can be found at this convenient online calculator. In my case, I chose simplicity over rewards maximization, and went with staking. Following are the details.

One begins by downloading the wallet from the PIVX site. After downloading and installing the wallet, here’s how you get going:

  • From the PIVX-Qt → Preferences → Main area, enable “Start PIVX on system login”—since your wallet can only stake coins when it’s open!—and set “Preferred Automint zPIV Denomination” to a large number like 5000.

Why the 5000 number? Starting in version 3 of the wallet, PIVX introduced their next-generation zPIV “Zerocoin”. At some point in the future, staking zPIV coins will be more profitable than staking PIVX, but at the time of this writing, it’s not possible to stake zPIV at all. So for now, we only want PIVX in the wallet.

By default, the wallet will auto-convert 10% of your received PIVX coins to zPIV, and by entering 5000 in the above setting, we can prevent that from happening. (There’s also a setting you can enter in the pivx.conf file to disable the conversion altogether, but I didn’t want to risk forgetting about that in the future.)

  • From the PIVX-Qt → Preferences → Wallet area, enable “Coin Control”, the purpose of which I’ll explain later in the article.

  • Now do Settings → Encrypt Wallet... and create a password for your wallet.

  • Create a new receive address from the Receive tab, and transfer some PIVX into your wallet (from an exchange, or wherever.)

  • Click (or toggle) the lock icon in the bottom right corner, enter your wallet password, and enable “For anonymization and staking only”. This will allow your wallet to safely keep the wallet unlocked for staking.

After unlocking your wallet for staking, and after the coins in your wallet have received something like 101 confirmations, you’ll see the staking icon (next to the lock icon) become green, indicating that you’re currently staking your coins.

Within a day or so, you should start seeing staking rewards flow in. Yeah! The value of the reward will be a more or less a constant, corresponding the block transaction fees, but the frequency with which you receive them will be a function of the number of coins you are staking and how long you’ve been staking them.

Before concluding this section, there’s a couple of important things to notes:

Backups — If you’ve used an HD (hierarchically deterministic) wallet in the past, like Exodus, you’ve probably gotten accustomed to backing up your private key or mnemonic once, knowing that any time in the future you can recover the wallet, and all its derived addresses, from that original backup. That’s not the case with the current PIVX wallet. In principle, each time you receive staking rewards, or add a new receive address, you should backup your wallet, by doing File → Backup Wallet and giving the backup file the extension “.dat” (e.g. wallet.dat).

I wish that could be automated, but for the moment, I try to remember to backup every week or so.

Input consolidation — Each time you receive a staking reward, it will create an “Unspent Transaction Output”, or UTXO, on the address holding the staked coins. Over time, as the number of UTXOs grows, your wallet file will grow in size, and the wallet software itself may lose stability. This requires some periodic maintenance, called “inputs consolidation”, and here’s how you do that.

  • In the Receive area, create a new receive address.

  • In the Send area, click the “Coin control” button. This will open a window listing all your UTXOs. Click “Select all”, and then then “OK”, to close the window.

  • Back in the Send area, you’ll see the number of selected UTXOs indicated at the top left. At the top right, you’ll see a value representing something like “total value minus transaction fees”. Precisely type that into the “Amount” field. (Maybe the Qt team will pre-fill that in the future.)

  • In the destination field, paste in the receive address you created in the first step, and then click “Send”.

So what we’re doing is sending ourselves the value of all our UTXOs, and consolidating those values into one single address. You’ll have to wait for that self-send transaction to confirm something like 101 times, after which staking will again be enabled, and you’ll have a nice, squeaky-clean wallet (for the time being).

Margin Lending at Bitfinex

In this section, I’m going to discuss the third and final way in which I earn passive income—margin lending.

Bitfinex is one of the world’s largest exchanges, and like many, provides margin to its traders, allowing them to access up to three times the funds they have on deposit. Rather than funding this margin using the exchange’s reserves, Bitfinex have implemented a peer-to-peer system in which Bitfinex customers themselves can provide margin funding, thereby earning interest.

Assuming you trust the platform, the risks associated with margin lending are relatively low. I was affected by the Bitfinex hack a few years ago, and was impressed by the innovative recovery model they put in place, socializing the losses and issuing the BFX tokens with a par value of $1, which they eventually paid back.

Due to that experience, along with observation of the technology and UI innovations they regularly push out, I trust the platform, to an extent at least. However, we should never forget that exchanges are continual targets for hackers, and should weigh that fact when deciding how much of your funds you want to keep lent out on any exchange.

As you can see below, it’s possible to lend everything from USD to any of several cryptocurrencies. The interest rates indicated are daily, so USD loans are currently paying about 5%, while ETC loans, for example, are paying about 18%.

What I’ve observed is that when the price of bitcoin is increasing, the USD lending rates increase, as traders borrow USD to purchase bitcoin now, with the expectation of selling those bitcoins for USD at a higher price later. Upon returning the lent USD, they’re left with a USD profit. Inversely, when the price of bitcoin is dropping, bitcoin lending rates increase, as traders want to borrow bitcoin to sell now for USD, with the expectation of buying them back at a lower price. After returning the lent bitcoin, they are left with a profit in bitcoin.

Since the lending rates of bitcoin and the USD move in opposite directions to each other, I keep some of both continually lent out on the platform. When times are quiet, the lending rates tend to drop to around 5%, and when there are sharp moves in the market of bitcoin, the rates of one or the other can suddenly increase to 50% or more.

There is an area in the left-hand side of the platform where one can make a lending offer:

You can enter a specific daily interest rate, or you can specify to use the “flash-rate”, or FRR, which is a dynamic market rate computed by the platform. As a consequence of most people auto-renewing their loans (see below), the manual offer form provides a “variable FRR” feature allowing you to place an offer for an interest rate that’s some discount to the FRR. The terms of the loans can be anything between two and 30 days.

If you make a manual offer that’s accepted, you’ll need to remember to return to the site when the term expires if you want to try to renew it. There’s a few problems with this. First, your offer might be taken in chunks, by multiple traders. Second, a trader can return the loan at any time. He or she doesn’t have to wait for the term to expire.

For this reason, most people use the auto-renew feature, and set the lending rate to the FRR, in order to allow the platform to determine the current market rate.

With an auto-renewing loan, set at the FRR, you can start lending your money and/or coins, and then forget about it, as the platform will attempt to keep your funds continually lent out at the FRR.

The only downside to auto-renewed lending, is that since most people use it, there is usually a lot of money on offer at the FRR. And those offers are consumed on a first-in-first-out basis, which means your auto-renewing funds will sit un-loaned for a period of time while working their way to the front of the queue. Not the end of the world, of course, but that does result in a slight drag on your potential returns. (To address that problem, and optimize the lending term, I run some custom software that I developed.)

The average interest rate you’ll earn over the period of a year can vary greatly, depending on factors like the market dynamics of the coins, the total availability of funds, and behavior of the lenders. On average, one should expect something between about 5% and, say, 10%.

Update — The CryptoLend service can fully automate lending not only at Bitfinex, but other exchanges as well.

Crypto Lending at Celsius & Compound

Since publishing this article, some new options for earning yield have emerged:

  • Celcius — Celsius loan cryptocurriencies like Bitcoin and Ethereum to hedge funds who want to short the currencies, and require USD collateral of around 120% to 150%. To source the crypto for the loans, they allow their own customers to deposit crypto with Celsius, and they share the yield with their customers. At the time of this writing, they are paying about 3.5% APR on deposited Ethereum, and 3.75% APR on deposited Bitcoin. Currently they pay interest in the deposited currency, but plan to pay in their own token, CEL, at some point in the future. The risks, as I see them, are two-fold: (1) You’re handing over custody to a third party, who in theory could simply run off with it, and (2) if a Celcius customer defaults on their loan, you have to hope Celcius have enough collateral to make you whole.

  • Compound — Compound is a Smart-Contracts based lending platform on the Ethereum network. It seems the yield on various ECR-20 tokens is quite low at the moment (c.a. half a percent). In this case, one would hope the custody risk is less than with a centralized organization like Celcius, but you’re also exposed to the risk of bugs in the smart contracts.

Conclusions

If you’re a long-term investor in cryptocurrencies, there are opportunities to put those held funds to use earning passive income. This article has discussed staking, masternoding and margin lending. I hope you’ve enjoyed it.