Dynamic Listing Fees

One of the main feedback the Particl team has received a lot during the first week of the Open Marketplace going mainnet is the actual cost of the listing fee — what you pay to put an item or service up for sale. The cost of listing fees is also something the team has been discussing a lot internally as it affects a lot of areas.

Luckily, the Particl network is entirely controlled by its community of users and doesn’t require any party to operate. The same is true for Particl’s Open Marketplace, the first official Dapp of the network. Therefore, it is entirely possible for the stakers to adjust themselves the listing fees of the marketplace. It’s also quite easy to do so, and this blog post will walk you through the simple process of doing it. But first, let’s go over the main implications of having listing fees on the marketplace in the first place. That will serve as a good indicator for you to make an informed decision on how much you want to change the listing fees of the network.

Why are Listing Fees Good?

There are several reasons as to why Particl’s Open Marketplace charges fees for listing items. It is usually believed that as little fees as possible, or no fee at all, is the ultimate goal for decentralized marketplaces. It is, of course, a very appealing proposition, but it does come with some pretty important trade-offs.

Fighting spam: The first obvious use of listing fees is to deter spam on the network. Because there is no central authority governing the Open Marketplace, there isn’t any person with special moderating powers to prevent ill-intended users from spamming the marketplace with dummy listings. Particl instead uses listing fees to introduce a financial cost behind posting listings. That cost is low, but if a spammer starts posting hundreds or thousands of spam listings, then it quickly adds up en ends up being costly for the attacker.

That’s the main reason why the Open Marketplace charges a listing fee, and it’s the same reason why you have to pay a transaction fee when sending Bitcoin, or Particl, to someone. If such fees wouldn’t be in place, then decentralized networks could fall victim to many kinds of spam attacks with little to no recourse.

Keeping the marketplace up-to-date: Another lesser-known use of listing fees on a decentralized marketplace is to keep it “clean” of old listings that aren’t maintained by sellers anymore. That’s because, once again, there is no central party with special moderation powers that can curate content and trim off inactive listings. This can be quite problematic in terms of user experience — imagine yourself placing an order for a certain product, but never getting your order accepted or rejected by the seller. Now imagine the same thing happening 80% of the time you place an order. Pretty annoying, right?

How listing fees work on Particl’s Open Marketplace is that you pay fees depending on two factors: the size of your listing (number of images, amount of text, etc) and the duration it stays listed on the marketplace. That means the longer you set your listing to stay up, the higher the fee is going to be. This system works in keeping the marketplace free of inactive listings by associating a financial cost to its duration. Theoretically, if you pay for your listing to stay up for X amount of days, then it is more than likely that you will keep an eye on it for the full duration of the listing. Failure to do so would result in a net waste of funds.

Incentivizing stakers to secure the network: Another important aspect of the listing fees is in how they help strengthen the security of the network by incentivizing stakers to run staking nodes. In fact, all Open Marketplace’s listing fees are redistributed, in full, to stakers, meaning that as more people start using the marketplace, the staking rewards will keep on getting more lucrative. This also not only contributes to getting a greater number of nodes running on the network, but it also helps with the network effect of the platform, an important aspect that tremendously helps to spread the word around in an organic manner.

High Listing Fees vs Low Listing Fees

Before you go ahead and adjust how you would like listing fees to be, it is important to understand the impact behind lowering or increasing them. Some arguments can be made from both sides, and it is important to be aware of both perspectives to make the best-informed decision possible.

Lower fees

Easier to onboard large scale vendors and lowers the barrier to entry

Makes the financial cost of spamming the network smaller

Makes the financial cost of not maintaining a listing smaller

Smaller increase in staking rewards per listing posted

Higher fees

More costly for large scale vendors to post their inventory on the marketplace and higher barrier to entry

Makes the financial cost of spamming the network greater

Makes the financial cost of not maintaining a listing greater

Bigger increase in staking rewards per listing posted

It’s important to note, though, that lower fees don’t necessarily mean smaller staking rewards for stakers. It does make a smaller increase on staking rewards per listing published, but lower fees enable larger sellers to set up shop on the marketplace and post their entire inventories. So while the impact on staking rewards per listing posted might be smaller, it may very well be possible that the greater number of listings available might make up for the reduced staking rewards.

To understand this, let’s illustrate this concept in an easy to understand example. For the sake of simplicity, let’s assume that a listing costs $1 per day to list. Then, let’s say a fictive large seller comes in with an inventory of 2,500 items.

Cost of higher fees

Number of listings: 2,500

2,500 Listing fee per day: $1

$1 Cost of listing inventory of 1 week: ((2,500*1)*7) = $17,500

Cost of lower fees

Number of listings: 2,500

2,500 Listing fee per day: $0.01 (100 times cheaper than the example above)

$0.01 (100 times cheaper than the example above) Cost of listing inventory of 1 week: ((2,500*1)*7) = $175

In both examples above, it is clear to see which fee structure would lead larger vendors to list their inventories and which one would lead them to not do it. In the “lower fees” example, the cost of listing 2,500 items is only $175, which is generally much cheaper than listing fees on traditional marketplaces. Add to that the fact that there is no other cost associated with the sale of a product such as commission (sales fee), subscription fee, or payment processing fee…the Particl Open Marketplace then becomes very attractive for large sellers.

What the “lower fees” example does not do, however, is create a huge bonus on the staking rewards for stakers. What it does is help populate the marketplace with a ton of listings, making the platform much more appealing and usable. This might very well attract other large scale vendors which, in turn, will attract more users. It goes a long way in contributing to the “chicken and egg” problem all new marketplaces and platforms are faced with when they first start off.

So which is better? Lower or higher fees? This is probably a matter of personal opinion, and the great thing about Particl is that you can voice your opinion in a provably fair and private way. Whatever fee structure you prefer, you can set up your staking node to broadcast that information and it will instantly start affecting the network’s listing fees. Want to get started? Then just keep on reading!

Tutorial — How to Adjust Listing Fees

So you now have a pretty good idea how you’d like listing fees to cost but don’t know how to make it happen. You find yourself in the right place! In fact, since Particl Core 0.18.0.10, it is now possible for stakers to broadcast their target listing fee to the network.

A Community-Powered Tug-of-War

One staker obviously cannot single-handedly modify listing fees to whatever he wants them to be. That’s because this value is attained through community consensus.

Listing fees on Particl are updated every 5,040 blocks, or roughly every week (10,080 minutes). This is done according to the consensus established by stakers. In between those updates in the listing fee, the network’s consensus is in a constant discovery phase. A target listing fee value (identified by the smsgfeeratetarget parameter) is dynamically adjusted each time a block is staked based on a weighted average of all desired listing fee being broadcast to the network by stakers. The smsgfeeratetarget can only increase or decrease in small. Then, once the 5,040th block is reached, the network looks up at the current smsgfeeratetarget value and makes it its base listing fee until the next 5,040th block.

This can be seen as a giant game of digital tug-of-war. Each staker broadcasts to the network what kind of listing fees it wants to see on the marketplace (higher or lower fees?). Then, the smsgfeeratetarget value either trends upwards or downwards depending on where the consensus lies. If the majority of stakers want fees to remain the same, then that consensus won’t move by a whole lot. If the majority wants to lower the fees by just a little, the smsgfeeratetarget will slowly trend lower, in small increments. If the majority of stakers want dramatically lower listing fees, then smsgfeeratetarget will trend lower at a much faster pace. In other words, the more people pull the metaphorical rope to their side, the faster the network’s going to adjust its fees. It is just like a digital game of tug-of-war.

The fact that smsgfeeratetarget can only trend upwards or downwards in small increments enhances the stability of fees on the marketplace and makes the process of establishing consensus smoother and less bumpy (less dramatic and unpredictable changes).

Broadcast a Different Listing Fee Target

Broadcasting your desired smsgfeeratetarget value depends on how you're currently staking your coins. To broadcast your target, you need to do two things:

Get the current value of smsgfeeratetarget

Broadcast your desired target to the network

Note: It is currently recommended to input an smsgfeeratetarget of 0.0002 to maintain an optimal level of privacy. That’s a ~60% reduction over current fees. It is also possible to input any value if you desire.

If You’re Staking on Either Particl Desktop or Particl-Qt

If you are not cold staking your coins and only keeping a Particl wallet “unlocked for staking only”, then adjusting your smsgfeeratetarget parameter is pretty simple. To do so, you first need to know the current value of smsgfeeratetarget so that you can figure out your desired target. To do so, simply open up the console and enter the following command:

smsggetfeerate

Typing this command will return the current value of smsgfeeratetarget in the console window. This is the current base value being used by the marketplace to establish listing fees. In the example illustrated in the screenshot, this command returns the value 49316 . This means the current value of smsgfeeratetarget is 0.00049316 . This is important to know as it will tell you what value you want to broadcast depending on your preference.

Now you need to broadcast to the network your desired target. To do it, type the following command in the console by replacing 0.00049316 by whatever target you want to set.

walletsettings stakingoptions {"smsgfeeratetarget":0.00020000}

For example, if you would like fees to be 10x lower, then you would put the value at 0.000049316 . If you want to reduce fees by 100x, then simply put the value at 0.0000049316 . The Particl team currently recommends putting the fees at 0.0002, although whatever value you put on there is entirely up to you.

Important: If you already have a custom stakingoptions parameter, like a custom rewardaddress , for example, then please enter the following command and replace addr by the rewardaddress you set up previously: walletsettings stakingoptions {"rewardaddress": "addr","smsgfeeratetarget":0.0002}

If You’re Cold Staking Coins on a Staking Node

If you cold staking your coins on a staking node you control, then you will need to broadcast your listing fee target from the staking node itself. To do so, you first need to know the current value of smsgfeeratetarget so that you can figure out your desired target. To do so, simply open up the console and enter the following command:

~/particlcore/particl-cli — smsggetfeerate

Typing this command will return the current value of smsgfeeratetarget in the terminal. This is the current base value being used by the marketplace to establish listing fees. At the time of writing this blog post, this command returned the value 49316 . This means the current value of smsgfeeratetarget is 0.00049316 . This is important to know as it will tell you what value you want to broadcast depending on your preference.

Now you need to broadcast to the network your desired target. To do it, type the following command. First, update your partyman application to make sure you are on the latest version. To do so, type the following command: cd partyman && git pull. Then, open up the smsgfeeratetarget option by typing this command:

./partyman stakingnode smsgfeeratetarget

This command will first give you the current value of smsgfeeratetarget and ask you whether you would like to configure a new target or not. If you wish to do so, type y to move forward through the process. Once that is done, the partyman application will prompt you to type in your desired target. Simply write the target you want to broadcast. For example, if you would like fees to be 10x lower, then you would put the value at 0.000049316 . If you want to reduce fees by 100x, then simply put the value at 0.0000049316 . Once you’ve chosen and written your new target, press Enter to apply the change and start broadcasting it to the network.

Note: Partyman currently recommends an smsgfeeratetarget of 0.0002 to maintain an optimal level of privacy. That’s a ~60% reduction over current fees. It is also possible to input any value if you desire.

If You’re Staking on a Cold Staking Pool

If you’re staking your coins on a staking pool, then you cannot broadcast your desired target. You will need to either stake your coins on your own staking node or find a staking pool that broadcasts a target that’s close to your liking.

If You’re Operating a Cold Staking Pool

If you are the operator of a cold staking pool and want to broadcast a different target, then simply follow the instructions available on Github by following the link below:

If You’re Not Staking

If you’re not staking your coins, then you cannot broadcast your target to the network. This is a golden opportunity for you to get started with staking and be part of Particl’s fully decentralized consensus-finding process. If you want to get started with cold staking, simply follow the steps available in this tutorial: