Symbol from NEM launched in March 2021 and provides Staking features, codenamed Harvesting, that are unheard of in the blockchain space.
In this article, we’ll go through the process of enabling your account(s) to harvest using different techniques.

Table of contents

What is harvesting?

First, let’s try to come up with a plausible, understandable explanation of what harvesting means.
Harvesting in Symbol from NEM is simply the process of creating new blocks for the network. When a harvester successfully harvests new blocks, the harvester account will also receive fees. Some of these fees are from the transactions it includes.
Sending transactions with blockchain networks always comes with a cost in network fees.
In Symbol from NEM, most of these fees are paid to harvesters as an incentive to include more transactions when they produce blocks.
Unlike other blockchain solutions, Symbol provides a predefined set of tested built-in features that solve the most common use cases for using blockchain technology through API calls. For instance, Symbol comes with plugins to handle assets management, access control, multi-signature and escrow services, and cross-chain swaps, among others.
Symbol is different – this rule also applies to the mining process, known in other blockchain projects. With Symbol, this process is called the process of harvesting.
By the end of this article, you will be able to start harvesting new blocks for the Symbol from NEM public network.

Is harvesting the same as mining?

Not really. Harvesting is based on the activity of accounts on the network – expressed in paid fees and number of created blocks – whereas mining is a mathematical process which maps back to actual energy consumption.
In terms of energy usage, harvesting is more efficient and more planet-friendly than legacy Proof-of-Work systems.
In proof-of-stake systems, such as Symbol from NEM, the balance of an account is determinant in defining it’s stake. This stake is used during the harvesting process. It is similar to buying lottery tickets: the more of them you own, the better your chances.
In contrast, with Bitcoin and other proof-of-work systems, a mathematical process is executed until a favorable solution is found, requiring a certain amount of energy to focus on creating new blocks.
But Symbol does not stop there. As a solution to one of the recurring problems of proof-of-stake systems – namely that of the rich getting richer – Symbol introduces multiple layers of network activity indicators that are also used in the harvesting process. As such, it is not only the balance of an account which determines its so-called importance, but also the number of blocks produced and the amount of fees paid over a predefined period of time.
In fact, Symbol incentivizes activity and support of its public network by distributing fees through different layers of participation, including:

Harvester rewards: Supporting the participants

The first layer of fees attribution, and the most important one in terms of numbers, is that of harvesters rewards. A harvester gets up to 75% of fees amassed in a particular block it harvested.
This way, harvesters are incentivized to include [more] transactions in the blocks they produce. Harvesters are the backbone of any Symbol blockchain network, as such they are rewarded for their participation.
In order to become an elligible harvester on the Symbol from NEM public network, you need at least 10’000 XYM. Once you have added this amount to your account, you have to wait for the next importance grouping to take place – which happens every 720 blocks on the Symbol public network.

Node rewards: Supporting the supporters

A blockchain network can be distributed among many so-called nodes, which are computers/containers/servers that actively run a specific node software. The more nodes in the network, the more distributed it becomes. At this, Symbol from NEM comes with a strategy that is unheard of in the blockchain space.
In fact, for running a node on the Symbol from NEM public network and opening it up for delegated harvesting, you will be rewarded with a share of fees in blocks harvested on your node.
This is pretty and new, shiny and all! Right?
But where do these coins actually come from? Node rewards are possible because of the issuance protocol tight to Symbol from NEM. In fact, pre-dating the Symbol from NEM network, a series of researches were done to come up with an augmented tokenomics scheme that would permit the incentivization of running node software. More information can be found here.
Different Symbol networks may configure different beneficiary percentages. For the current public network, node rewards consist of up to 25% of fees of a block.

Network rewards: Supporting the maintainers

The last layer of incentives introduced in Symbol from NEM is that which incentivizes network maintainers. In fact, creating a network with Symbol lets you configure a network fee, which will always be paid to one account.
An example of this includes the network fee of 5% that is added to the current Symbol from NEM public network. These fees are used for the re-iteration of a Supernodes program running on Symbol. Other projects, like dHealth, prefer to re-distribute these network fees into so-called community funds that can later be used for development initiatives and for supporting a community of participants.

How to stake my balance of XYM?

Now to the core of it. Let’s have a look at how to stake your balance of XYM on the network.
There is no rocket-science linked to this. In fact, all you need is to own at least 10’000 XYM (ten thousand) and wait for another so-called importance grouping to happen for your account to be counted in as an elligible harvester.
Importance groupings happen every 720 blocks on Symbol. They represent checkpoints that permit to determine an account’s importance at a given point in time – i.e. at the time of the checkpoint. This mechanism is used in Symbol to keep track of accounts that are elligible for harvesting the next block.
The balance of your account will be fully staked as soon as the next importance grouping happens. In order to find out the time of the next importance grouping you can use the following formula:
(Math.floor(block_number / 720) + 1) * 720

Harvesting in practice

As pointed out above, you first have to wait for your account to be eligible for harvesting. But you also have to configure your account before it can actively harvest blocks. This configuration step includes:
In the following steps, we assume that you imported your main account with symbol-cli, and named it my.main.account. If you did not do so, please import it now with the following: symbol-cli profile import –profile my.main.account

How to link my account public keys?

As we mentioned in the previous section, your will first need to enable harvesting by sending account links on the network. This is to announce your elligibility in harvesting practices and for nodes to be able to easily tell if and where your account is able to harvest.
This step is mandatory when you use any of the harvesting techniques introduced in this article.

Linking your account with a VRF Public Key

In the process of harvesting new blocks, the algorithm behind Symbol involve a verifiable random function. This function uses an account’s so-called VRF Private Key when said account harvests a new block. In order to make this possible, your account must first be linked to a VRF public key.
The linking process is simple enough and requires only one transaction to be sent on the network. Using the symbol-cli, you can prepare and announce said transaction with the following command:

1. Generate a new virgin account

First things first, we must create a fresh account that has never served before. This is trivial enough with the following command:

                    
$ symbol-cli profile create \
–profile my.vrf.account \
–url http://dual-001.symbol.ninja:3000 \
–network MAIN_NET

The above will ask you some input such as to enter a new password used for the safe storage of your profile, as well as ask you whether this account should be made the default account. Because we are creating a VRF account here, and because it needs to be an empty account, you must not use this one as your default account.
Make sure to backup the pair of VRF private- and public key. We will use those in the next step.

2. Link your main account with the VRF public key

Next, you must link your main account with the new account we just created. This time, you should use your default account to send the transaction, as shown below:

                    
$ symbol-cli transaction vrfkeylink \
–profile my.main.account \
–linked-public-key VRF_PUBLIC_KEY \
–max-fee 100000

In the above, please make sure to replace VRF_PUBLIC_KEY with the public key of the account you created in the first step, i.e. the public key of “my.vrf.account”. The software will ask you to confirm and whether you want to announce the transaction on the network.
Linking your main account to a VRF public key only costs the fees of the transaction you are sending. We generally use a fee of 0.1 XYM because it is double so much as the usual transaction size’s fee prices and permits to have the transaction included fast enough.

Linking your account with a Remote Public Key

In order to secure your harvesting funds correctly, it is possible to enable remote harvesting for your account. This means that instead of harvesting with your actual account, you allow another account to harvest on its behalf. This adds one layer of protection to your actual funds because a compromised remote account private key would not give an attacker access to your funds.
We highly recommend activating remote harvesting for your accounts if you are a node operator. Linking your account with a remote public key is done using another link transaction, similarly to the above example:

1. Generate a new virgin account

First things first, we must create a fresh account that has never served before. This is trivial enough with the following command:

                    
$ symbol-cli profile create \
–profile my.remote.account \
–url http://dual-001.symbol.ninja:3000 \
–network MAIN_NET

2. Link your main account with the Remote public key

Next, you must link your main account with the new account we just created. This time, you should use your default account to send the transaction, as shown below:

                    
$ symbol-cli transaction accountkeylink \
–profile my.main.account \
–linked-public-key REMOTE_PUBLIC_KEY \
–max-fee 100000

In the above, please make sure to replace REMOTE_PUBLIC_KEY with the public key of the account you created in the first step, i.e. the public key of “my.remote.account”. The software will ask you to confirm and whether you want to announce the transaction on the network.
Linking your main account to a Remote public key only costs the fees of the transaction you are sending. We generally use a fee of 0.1 XYM because it is double so much as the usual transaction size’s fee prices and permits to have the transaction included fast enough.

How to connect with our nodes?

As one of the main contributor/supporter to the development of Catapult and Symbol over the past four years, of course, our magazine hosts multiple nodes on the network. We host dual and peer nodes as to provide the community with more choices on their privacy.

Delegated harvesting

To enable delegated harvesting on one of our nodes, there is one more supplemental key that you have to link with your main account.
Performance of our nodes vary depending on the type of node and on whether it provides API features, or not. Our team is commited to keeping nodes almost-always-up – “almost“, because you know… things.
Anyways, you’ll have to link your account to our node, so let’s go ahead with this.

Link your account with our Node Public Key

This third and last type of supplemental public key that you can link to your account is used to give a node the permission to harvest with your [remote] account. Note that this step is necessary only if you want to delegate harvesting to a node that you don’t operate yourself.
A node’s public key is used in the context of a secure TLS communication protocol implemented in Symbol. If you are looking for a node that accepts harvesters, feel free to pick from the following list:

Nodes operated by us

HostPublic Keys

0-0-0-1.natterer.tech Identity: A889780783DB9C1AFD43A1AE968FE749376345E28C3B540EF4202FA5D0387FD3
Node (TLS): A5C33734056770013E415691024CF6A1B7CA06C4F886C24611137A35F61BDA1D
0-0-0-2.natterer.tech Identity: 5DCFC74FBAF3073B31DB9BCA1702CAA2C5E2684A620EA25D816103DF9D97041A
Node (TLS): DF19524BD473BB260FD6B72FE3EEB0BC4BE03BF3698554941F211C0CFB792B9D
dual-001.symbol.ninja Identity: 306FA94E0AB682964416C8172F858939533E5998906B8AFAD4A4585C7CDD722C
Node (TLS): 71C40FA12D94B43D1A2073E7BC0317B3ACB6E79626A190CF80B75C105EF0F69A
peer-001.symbol.ninja Identity: 036019A541F384BB4E3F28EC3C41C656FE64923D4BCBD596D5DBBCDF26F4EC23
Node (TLS): B19792360F326218DDC3032635672295F0DED83F1CF2E947A6AEA7865CCD3A91

When you have chosen a Node (TLS) public key above, you can link your main account to the node by executing the following command:

                    
$ symbol-cli transaction nodekeylink \
–profile my.main.account \
–linked-public-key NODE_PUBLIC_KEY_TLS \
–max-fee 100000

In the above, please make sure to replace NODE_PUBLIC_KEY_TLS with the corresponding Node (TLS) public key of the node as listed above. The software will ask you to confirm and whether you want to announce the transaction on the network.
Linking your main account to a node public key only costs the fees of the transaction you are sending. We generally use a fee of 0.1 XYM because it is double so much as the usual transaction size’s fee prices and permits to have the transaction included fast enough.

Activate delegated harvesting on our node

You are now one step away from delegated harvesting on our nodes. This last step you have to execute is called a persistent delegation request. In fact, what you need to do now is to ask our node to activate harvesting on your behalf.
It is important to note that you must only send a persistent delegation request to the node with which you have linked your account in the previous step. Sending the request can be done with the following:
The following command requires you to send your remote- and VRF private key to the node. Please, make sure to use the correct public key for the node, note that this time you must use the identity public key of the node as listed above.

1. Find your remote private key

To find your remote private key, if you followed the instructions in this article, you just have to execute the following command:

                    
$ symbol-cli profile decrypt \
–profile my.remote.account
2. Find your VRF private key

To find your VRF private key, if you followed the instructions in this article, you just have to execute the following command:

                    
$ symbol-cli profile decrypt \
–profile my.vrf.account
3. Send a delegation request

This is now the last step you have to execute. Sending the following transaction will activate delegated harvesting for your account on our node, provided that your account is elligible for harvesting.
Note: In Symbol, the node operator can disable harvesting, our team commits to running nodes that always have the configuration field enableDelegatedHarvestersAutoDetection set to true.

                    
$ symbol-cli transaction persistentharvestdelegation \
–profile my.main.account \
–recipient-public-key A889780783DB9C1AFD43A1AE968FE749376345E28C3B540EF4202FA5D0387FD3 \
–remote-private-key YOUR_REMOTE_PRIVATE_KEY \
–vrf-private-key YOUR_VRF_PRIVATE_KEY \
–max-fee 100000

In the above, please make sure to replace YOUR_REMOTE_PRIVATE_KEY and YOUR_VRF_PRIVATE_KEY with the corresponding account private keys as found in step 1 and 2, respectively.
Note that in the above example, we are using the identity public key of the node http://0-0-0-1.natterer.tech:3000. You are free to pick a different one from this list here.

Benefit of harvesting with Symbol from NEM

Take this opportunity to use a protocol based Staking on Symbol from NEM to grow your stake on the network. With Symbol, your stake is secure and accessible only by you, requiring no other central authority to own your funds.
The team at Using Blockchain Ltd focusses mainly on showcases around Symbol and supports the network with multiple nodes – and will continue to do so for a long time to come.

Book a call with a UBC blockchain expert for assistance or guidance on integrating the technology in your business.

We hope that this article was insightful for you and are looking forward to any feedback and messages. Please share your thoughts in the comments section below!

Disclaimer

This website may contain information about financial firms, employees of such firms, and/or their products and services such as real estate, stocks, bonds, and other types of investments. While this website may intend - as the author deem necessary - to provide information on financial matters and investments, such information or references should not be construed or interpreted as investment advice or viewed as an endorsement.