Carthage 2.0 (PsCARTHAG)

Increase the gas limit per block and per operation by 30%, improve the accuracy and resiliency of the formula used for calculating baking and endorsing rewards and fix various small issues (see changelog).


The Carthage proposal, a joint effort from Nomadic Labs and Cryptium Labs, is referred to as a housekeeping proposal as it focuses on code cleanup, adding optimizations, and fixing small issues rather than adding significant new features. The only novelty is an increase in the gas limit which will allow executing more complex smart contracts:

  • The gas limit per operation was increased from 800,000 to 1,040,000
  • The gas limit per block was increased from 8,000,000 to 10,400,000

Another relevant change is that the formula used for calculating baking and endorsing rewards was improved in order to provide more accurate results:

  • The baking reward formula was changed to make it linear in the number of endorsements included instead of a step function.

The formula was further modified in order to make it more resistant to certain types of attacks.

Carthage also contains several minor improvements to Michelson.

Explanation Posts



This proposal doesn’t contain an invoice.

Proposal archive

View this proposal on Agora


As a relatively small baker who is getting less and less baking opportunities as time goes on and pretty much only gets endorsements, can anyone explain to me why I should vote for something that cuts my rewards nearly in half?

To me this seems it will only put large bakers even further ahead of the game by giving them more rewards for their bakes, of which they already have many opportunities. This in turn will give them even more rolls much more quickly, which further increases their baking opportunities while reducing my chance for rewards which makes it take even longer for me to gain additional rolls.


The way I understood it, over a large enough period of time, your average rewards will be the same. Even as a small baker.

1 Like

That seems to assume the number of rolls doesn’t change over time, or actually does increase proportionally over the long term.

But how is it possible that my rewards will be the same over the long term when, because I rarely get baking opportunities and almost exclusively get endorsements, I’ll be earning rewards at nearly half the rate I was earlier? Meanwhile large bakers who get lots of bakes are earning just as much as they used to?

Over the short term, on a cycle by cycle basis, my rate of growth is halved. This means I stay at the same number of rolls for the next cycle. Meanwhile large bakers with plenty of baking and endorsement opportunities are still earning more rolls each cycle.

This means I’m being slowly diluted each cycle and my chances of future bakes or endorsements gets worse and worse over the long term.

This problem is not new to Carthage, and I know I’m not the only person who has noticed it. I’m certain I saw someone (I think it was @jonas) mention it in the Baking Slack some months ago. But with these changes to the rewards in Carthage it seems it will only increase the rate at which the disparity increases.

Will there be detailed instructions for migrating wallet applications? If so, when can we expect this information to made available? Thanks

No, the formula affects variance but not expected reward. What you lose in slightly less rewarding endorsements you gain in higher block reward, even if those block rewards are very rare. The average is unchanged, but there’s a bit more randomness since you get lucky or unlucky with the number of baking rights.


The endorsement and baking right assignment is random and has no concept of how many rolls a baker has, it just selects random rolls.

It’s quite disappointing but this tweet is worded in a seriously misleading manner.


Within the changelog for Protocol 005_PsBabyM1, wallet developers were notified about changes made to the binary format of operations. In Protocol 006_PsCARTHA Carthage, it states “there are no changes made to the binary format of the operations”.

If the protocol were to make changes that required wallet developers to update their code, would it be solely related to changes made to the binary format of operations as in Protocol 005_PsBabyM1?

Thanks, Jovi!