Transaction fees: bug or feature?

Hey there!

I wanted to share with you my wondering about transaction fees, to know if we should keep it in UCP or not. Indeed, I will work on transactions in a neer future.

I need your opinion. Here is my thought.

Why transaction fees

It a first place, fees were introduced in UCP just to do the same as Bitcoin. Indeed, I was sensible to the fact that node owners might need to be motivated in some way to let their computer on, and be part of the network for building the blockchain. Transaction fees looked OK to me, since we are not doing any money creation.

How it works

Concretely, when users make transactions over uCoin network, they may send less money than used for the transaction. This leads to a positive balance for the transaction which is not given to transaction’s recipients. UCP currently states that such transactions are valid, and that the rest would just be assigned to the issuer of the block validating this transaction.

Why to left it

Since the beginning, I was not completely convinced by this approach. Are fees a really useful feature? It seems to me we do not need it, for several reasons:

  • we could simply replace them by directly sending money to network maintainers, for rewarding them
  • fees could introduce frictions in transactions’ validation, making transaction with fees being validated first
  • fees could introduce competition behaviors, with all their (numerous) drawbacks. Plus, competition’s benefits are not obvious in a uCoin network.

To conclude, I am asking you since you may have arguments for transaction fees. I might be wrong on some points too, so I prefer to have your arguments!

2 « J'aime »

My thought about it is :

  • To be a member of a real life monetary community by being born into it should
    allow me to receive a UD as my activities participate to the wealth
    of the community.
  • To be member of a digital monetary community with a UD should involve some minimal commitment as having a node running on my computer and/or validate transaction to participate in the wealth of the community.
  • The UD I earn by my commitment to help the community network should be enough to cover the power consumption of my computer.
  • I shoudn’t be able to just “subscribe” to as many “UD coin systems” as possible to be the youngest billionaire in digital currencies. :wink:

I know that adding conditions to be a member is not compatible with the real life UD concept of the TRM, but I think real life is not digital life.

So to be brief (too late?), I don’t think we need more fees than the UD, and that the UD is the reward for bringing my computer life in the community.

Take a look at the Safe Network ( MaidSafe ) . It’s a techonlogy started 2 years before Bitcoin and improved during many years. Their idea of a proof of resource is interesting. Their idea of the actions being handled by groups of nodes only and not replicated on all the network is interesting too.

On uCoin, will a node handle only one community ?

1 « J'aime »

It is not a feature of a free money system to decide what is value and what is not value. Deciding any fee for any value is destroying the relativity principle, and so defining value by the system and for the system and denyning human.

1 « J'aime »

@vit Thanks for your reply.

Well, RMT does not say anything about this, afaik. RMT exists only after community definition, so we are free about how to build one.

However, it is not in uCoin’s philosophy to constraint people powering on their computer to support the currency. Transaction fees were rather an incitement. But you also answered that UD should be an enough incitement, so this is your answer to me :wink:

A physical node may handle as many currencies as its owner’s want. The only requirement is to be a member of these currencies.

@Galuel Is your answer taking into account of the facts that:

  • Fees are not mandatory: a user may not include it in its transactions
  • Fees are not an issuance of money, but a transfer


1 « J'aime »

Yes my answer take account those two facts. As it is not mandatory neither issuance of money, it should not be part of the kernel. It should be an optionnal plugin.

With a GNU/Linux kernel I can add a not-free software like steam, or even not-free drivers for graphical cards, but this must stay a free choice, absolutely not a kernel feature. Adding this to the kernel transform it to a not-free one, including the option you have to not activate it.

1 « J'aime »

In an ideal system, transaction fess should be zero. Why tax the main thing that system is meant for? All so, taxing would decrease the system activity, and make testing transactions very expensive.

Thanks for your comments everyone. It seems we do not have any opinion in favor of transaction fees.

So, unless someone have arguments for keeping them, I guess will just remove fees from UCP in the coming week.


I am not with you on this point, Bitcoin such as other bitcoin-like cryptocurrencies money supply do not solve the symmetrical issues though, have the benefit of attracting lot of users in their community and those in a few period of time. The key tool of such a system is their rewarding process + the transaction fees, but since we cant agree to supply money using a rewarding process anymore due to the symmetrical issues, we can still focus on the transaction fees to do so and it could still be seen such an efficient incentive way.

Lets remind that there is no requirement to define transaction fees, and even if some nodes are requiring users to pay some, there is still a race condition between nodes as long as others are chipper or even free of charge. Another issue to remind is the energy consumption of such networks, I believe that there are lot of possible business models that can optimize the energy cost efficiently, but what about other individuals that do not have an access to such architectures but still want to contribute to without being ruined ? We also know that the servers as well as bandwidths costs decrease with time, but there is still a non-zero cost that has to be considered and leave free node maintainers to define regarding their relative point of view.

Some can argue that it will encourage people to flood the system but this is wrong as long as the system belong to a WoR (Web of Recognition), that prevents such attacks. It is no more possible to create recurrently blocks since each member who maintain nodes has a relative difficulty variable unlike Bitcoin providing a global one. Things prevent the 51-attack well known on Bitcoin-like crypto-currencies.

Finally, this process is similar to the choice of money community we made based on their parameters, even if there are some communities that do not suit our needs we can still choose another one or create a new one, things are similar to the nodes, even if one node do not suit our relative view, we can still choose another one or create ours since we want to live in a system that believe in the symmetry of values hence symmetry of humans.

Was my 50 cents, thanks for reading :wink:

2 « J'aime »

Okay, since I am getting closer & closer to transactions’ system, I want to debate a bit more :slight_smile: (keeping in mind I will have the last word for uCoin, but that forks may change it thereafter).

Shouldn’t the incentive be the UD, like @vit said? I had this argument too in a first place (this can be found in commits), saying the free currency should be an enough incentive.

In other words: would we have free currency by making a community with people only interested in profits? Maybe, but with a different shape probably. I do not know if I want such shape in a first place.

That’s true. Here, @Galuel answered kinda “the system should not decide it is more valuable than anything else”. And if we want to be really coherent with our axioms, I think he is right on this point.

I think that here, @vit answered: UD should be the mecanism allowing us to support this cost. This is also linked with our preceding point!

Right :wink:

1 « J'aime »


I’m also wondering how a non fees blockchains can work.

In Bitcoin world, fees are not only used as reward to miners. Write access to distributed database should include a cost to prevent transactions spam.

If there is no cost to send transaction, an attacker can easily send billions of transaction into network with no cost at all, even maybe valid ones, resulting in huge blockchain if block are not limited in size over time.

1 « J'aime »

AFAIK, transaction fees are not mandatory in Bitcoin. So nodes of the network can already be spammed.

Also, nodes are free to include the transactions they want. They can just ignore spammers if needed.

Finally, uCoin does allow fees, but I recognize it is kinda unefficient: you can issue a transaction and put the public key of the node which will include it, with an amount for him. And to be ensure several nodes try to include it, you can issue multiple times the same transaction but with a different beneficiary’s pubkey. Only one will be written.

Maybe a “Fee” field on transactions could be helpful.

edit: ok, answering 10 month later without reading again the initial arguments was a bad idea. We do not need a Fee field.

in the beginning the spam problem in bitocoin was solved by using the coin age destroyed in the transaction as priority of the transaction.

whats is the reason to implement it like that? looks little bit strange to me. what is the benefit of that compared to just using the normal fee / coin age priority like in bitcoin?

my suggestion would be just to let the fee optional and use the destruction of coin age by default as priority, just like bitcoin did it. like in bitcoin the protocol should not define if fees are needed or not, but miners could define it (soft fork)

if the UD is incentive enough in the longer run to have enough validating nodes only time will show,

what was nice with mining in bitcoin was, that you could just start the computer mining in the beginning and see the coins coming in. what still is nice in mining is, that it helps to give liquidity to the market, because miners have an incentive to sell some part of their mined coins to cover the power costs.

by the way, we should think also about how many transactions per time we want to allow. I for my part dont want to end up in an situation where the hole community splits, because of an set spam protection limit of 1MB like in Bitcoin.
For example Ethereum uses an algorithm that allows an single block to be at max 20% bigger as an average block.


  • as long as we can only process a limited amount of transactions per time, we need some kind of spam protection
  • using the coin age as transaction priority and allowing optional transaction fees could solve the spam problem
  • if UD is enough incentive to run verifying nodes only time will show, still it would be nice at least to have some small incentive for running an verifying node.
  • We should think about using an dynamic algorithm like Ethereum has that limits the size of an single block to protect against spam

I agree it is very strange and not very efficient. And this is not about spam, but about rewarding nodes of the network for processing transactions.[quote=“Arcurus, post:12, topic:40”]
like in bitcoin the protocol should not define if fees are needed or not, but miners could define it (soft fork)

We have now another view of the fees: we consider this is not a core feature, it should not be included in the core protocol. Actually we should rather talk about “rewards” than “fees” in uCoin case, because this is what we used to be cared about. Rewards should be another system, something external.

This external reward system (that I have no idea yet what it could look like) might be an incentive, coupled with classic UD incentive.

That’s a very good idea :smile: added to GItHub issue #62.

Yes, why not. After all, the nodes may do what they want as long as they respect the protocol they were meant to follow.

2 « J'aime »

and what is the benefit to using normal transaction fees?
or is this feature so or so outdated and is / will be removed :smile:

lol sometimes its really ¨hard¨ here :smiley: at least, you havent linked to some kind of french manual :wink:

but back to the topic, what means exactly you have removed transaction fees? does it mean you even have no chance to give a fee even if you would want?

Lets say we would use the destroyed coin age as transaction priority. if i happen to make an low priority transaction, with no chance to give an optional fee my transaction would have to wait at worst very long time to come above the spam limit.

As said one main use-case of transactions fees is to overcome the spam level.
incentives / rewards for nodes is an fully different story thats good to discuss separately :smile:

I don’t agree at all with that point of view. You join different topics :

  • Technological solution to solve a technological problem
  • Economical solution to solve an economical problem
  • Money solution to solve a money problem

There is no economical cost relatively to a transaction. The solution cannot be an economical one.

There is a technological problem for a community if some of the members do anything to stop the other members to exchange through a technological way.

The solution is a software/protocol one.

uCoin prevents a node to write many blocks through a calculation power increase. uCoin can also prevent accounts to write many transactions through a technological cost too.

how is this solved currently? or if not how you suggest to solve it?

theoretically we could try to use some kind of member based priority.

technically as long as we use something like a blockchain, space per time in the blockchain is limited.
Everything that is limited has an value.
even if we use member based priority, still space in the blockchain would have some value, so members could trade it.
which would lead also to an fee market if we reach the current transaction limit.
so why to restrict what is possible on the protocol level?
or just wait and hope that this would be solved until we have significant transactions?

Technological solutions always have an economic impact.
economical solutions always stimulate or hinder technological solutions
money solutions always have an economic effect, which again has an technological effect
economical solutions and technological solutions have an influence what kind of money is good or even possible to use.

Further, we could see it also that way, that maybe someone want to give some voluntary donation in his transaction to support the network. why hinder him?

cgeek will answer that more precisely but it is simple to understand : once you have written a block, the calculation needed is more important for you (and you are known through your key, you cannot write without it). So the more you write with your key, the more difficult it will be to write again, so you will let the others write too.

This is an axiom, I refute :

You cannot decide what is value or not for me. Value is relative. Even more : if two men decide a same thing is a value, the price they decide for that value is relative too. Study RTM in english or french to know more about this point.

No. (idem) Your choice about what is value or not is only your choice, not other’s ones.

No (idem).

Incoherent axioms reveal incoherent questions about incoherent problems.

You can also study “La preuve de la valeur ?” you can translate into English through right English flag.

Axiom I refute too (idem).

You seem to have definitive answer about what are things and what they aren’t.

I refute this point of view.

i did not mean writing a block i meant writing / creating transactions / if someone tries to spam the network.
how writing a block is functioing in ucoin i know. how spam protection is handled currently in ucoin i dont know yet :smile:

that is what i do not understand. its my choice if something has value for me or not and if so how much.
so why to restrict my freedom how i can interact with someone if i want to exchange limited space for someucoins?

but I will read the RTM, maybe i have already read it, but i will read it again and again :smiley:

Your freedom is not restricted. You can propose to exchange what you define as “limited space” for some free money units.

Like TCP/IP allow computer to interact in a P2P way, it allows you also to develop something like a server using TCP/IP, that allows you to exchange what you want with money to connect to your server. This is just not part of TCP/IP protocol, it’s something TCP/IP allows but it’s a separated thing all the people don’t share.

A free money allows you to develop the values you want to develop, including money services or what you want. It’s a separated and relative thing all the people don’t share.

1 « J'aime »

For example, you could totally develop a service which has ucoin nodes and accepts to mine a block only if it was paid for it, and you’d ask people to pay for you to mine blocks. But this is not a protocol issue ! :slight_smile: