Lack of transparency and clarity regarding transaction fees

I’m very impressed with the Algorand technology. Just one things that keeps bothering me about the project: the lack of transparency and clarity on transaction fees and node incentives.

I have gone through the developer portal and already asked this multiple times on Discord, Reddit and this forum but never received a satisfying answer, I will ask one last time and would love if someone from the foundation could actually answer this.

  1. As far as I understood all transactions are currently sent to a fee sink. Who controls this address? What happens with this money? Doesn’t this make the protocol rather centralized if one address controls these funds? Why not transfer the yields to relay node operators as an incentive to run? What will be the incentive for relay nodes to keep running once the rewards pool is empty?

  2. How does Algorand intend to keep transaction fees low and stable in the long term? What if the price skyrockets? (for example: if Algorand where to reach Ethereum’s market cap, transaction fees would be around 5 cents per transaction, which is okay, but too high for some of the envisioned use cases and rather high compared to competitors like Ripple or IOTA. Unstable transaction fees are a huge barrier to mass adoption.

2 Likes

Hi @petew, to answer 1: see this https://github.com/algorand/go-algorand/blob/0e9cc6b0c2ddc43c3cfa751d61c1321d8707c0da/data/transactions/payment.go#L45

Basically no matter who controls the sink, eventually the money will go back to the rewards pool and the cycle start again.

@mxmauro thanks, but who decides when and how much? I don’t see anything clarifying that in the code. I mean, the protocol is supposed to be decentralized, but to me it seems like a huge flaw in the protocol if you give one address (likely owned by the Algorand foundation) such power. Maybe it’s a temporary measure, but nonetheless one would expect more transparency on the ins and outs of this mechanism.

As currently coded, the fees go to the FeeSink. The FeeSink account can ONLY send to the incentive/reward account. However, that’s not automatic. Algorand could dump the fees over to the reward sink if they wanted, but only there (short of a code change.) However, if nothing is done by Algorand then the transaction fees are effectively taken out of circulation (burned)

Changing this to instead just funnel directly into the reward account, or to pay out to block proposers, etc. is something that could easily be changed in the consensus version (assuming enough nodes validated it by upgrading to a compatible version within the voting range of the consensus change).
The chain is still young and there’s still a LOT of Algo to release.

Incentivizing nodes is a real issue though (you have to pay for that compute/storage somehow!). Algorand has the tech to support a massive number of nodes but at the moment, there are very few nodes. It’s ‘effectively’ a centralized chain at the moment even though it’s not in its ‘chain DNA’.

Hi, what is the address for the FeeSink ?

For which network ?
The mainnet address is Y76M3MSY6DKBRHBL7C3NNDXGS5IIMQVQVUAB6MP4XEMMGVF2QWNPL226CA.
You can find it in the genesis file in ./installer/genesis/mainnet/genesis.json

In a similar way, you could find the FeeSink for the testnet and betanet.

1 Like

to my understanding:

I think it is already centralized. For example, Bitcoin solves double-spending (ordering transactions or transaction processing) and coin distribution (who owns how much) problems in a decentralized manner. In Algorand, coin distribution is controlled by a trusted entity so it is centralized. On the other hand, in Algorand, transaction processing is done in a decentralized manner.

This is easy to say but hard to achieve. First of all, how we will know which nodes are relay. Assume that we know relay nodes then how we will know that a relay node is really contributing to the protocol (basically relaying protocol messages). Another problem, how we will distribute the reward in a fair manner? Assume that a relay has 1x resources dedicated to the job and assume that there is another relay which has 10x resources dedicated to the job. We can say those relay nodes can advertise the amount of dedicated resources but can we trust this? In my opinion, this is not an easy thing to achieve.

In my opinion,

Currently, Algorand does not have any incentive for relay nodes (in the algorithm). If they need more relay they can deploy it.

Currently, transaction fees protect the system from spam. A malicious entity can not issue transactions to spam the system without paying the required money.

If the number of waiting transactions increases in the memory pool, nodes are requiring a higher tx fee per byte by design. The default maximum tx pool size(pool.txPoolMaxSize) is 15000. Nodes reject new transactions if the maximum pool size is reached without considering paid fees in a transaction.

In my opinion, the Transaction fee can not go higher because nodes are not selecting transactions with a higher transaction fee because they do not have any incentive to do so.

Once all ALGO has been released from the genesis accounts, then I think the situation changes. Algorand is certainly designed to be decentralized, but it’s not a day 1 thing.
I would hope that Algorand / Foundation draw down their stake in the various ‘whale’ participation nodes as community stake and other nodes come online over time. Ensuring running ‘good actor’ nodes maintain that >2/3 stake is critical for the security of the network.