Official Counterparty Fee Policy?

Do we have an overall policy for when XCP fees shall apply and how they should be adjusted in the future? Also, should XCP always be used when BTC or other assets could be used instead?

Today there is a myriad of different fees:

  • BTC miner fee - this is the only fee for most transaction types. The BTC fee is usually more than high enough so no other fee is needed

  • BTC to recipient - at least 5040 satoshis ($0.10) is sent along with the tokens. With new send encoding this is soon obsolete, which is good. The regular BTC fee is high enough to prevent fee and the 5040 sat output is expensive to spend again (makes next transaction heavy, think of it as paying with pennies)

  • XCP dividend fee - a small fee proportional to number of recipient discourages sending out dividends too often, especially to an asset with thousands of holders. This is necessary as updating thousands of balances is computationally expensive. A rule is also in place to restrict dividend usage; only the owner can pay out dividends.

  • XCP anti squatting fee - to prevent assets to be excessively bought up for resale later, a 0.5 XCP fee is in place. This is for named assets. The same principle applies to numeric assets, however no fee is in place here. Ironically, there is a 0.25 XCP fee on subassets while no squatting can ever take place since the owner has a monopoly over the namespace.

  • Oracle XCP fee - a feed operator can claim a fee on bets based off its broadcasts.


I have some recommendations on a fees policy:

  • For alphabetic assets, adjust down the fee with time. Every 4400 blocks reduce the fee by 1%. It’s simple and should be a policy we can agree on forever. If XCP goes to $1000, well, for some time we can rely on 2nd hand assets or subassets. but sure enough the fee will eventually be reasonable. If XCP goes down in price, a lower fee isn’t that bad anyway since the more assets that have been registered, the less valuable the remaining ones are.

  • Subassets and numeric assets can be 1/10th that of alphabetic assets. Subassets don’t really need a fee at all to protect the namespace but a low fee is anyway good to prevent flooding the protocol with valueless assets.

  • Dividends fees paid lately range from 0.003 XCP to 0.232 XCP (16 to 1100 recipients). If the XCP price grows significantly, as does the number of recipients for these projects, dividends will become really expensive. But that’s maybe how it has to be?

  • The new MPMA send will not need any XCP fee. Although the marginal size can be very low (when reusing address and asset from MPMA table) there’s still 8 bytes for amount, and at today’s btc fees of $0.01 per byte this should be enough.

  • The MCAT send, where a centralized server groups together signed transaction and claims a fee, the fee is set by the operator and can be in XCP or any asset (or even BTC if technically possible). The marginal send size is still more than 8 bytes, right? So no need for anything to the protocol directly. The btc tx fee prevents spam.

1 Like

Thanks for starting this thread. Some good ideas.

Can you discuss your thoughts on pegging fees to USD amounts?

It would require an oracle, right?

In principle I’m against giving one entity/address the right to manipulate the platform. On the other hand, today’s model where fees are changed through an update (consensus change) is worse. The larger Counterparty becomes, the harder this will get.

I’m generally in favor of keeping as much as possible free, i.e. btc fee only, which is more than high enough. For computationally intensive transaction types (dividends and possibly MPMA and MCAT) I suggest dynamic fees adjusted by 1) the complexity of the actual transaction and 2) total platform usage. Asset issuance is a special case where the anti squatting fee can decrease with time.