Just thinking out loud here … haven’t thought it through.
The price of executing smart contracts (gas price) should increase if servers are slowing down from too many contracts. On the other hand, it also won’t make sense to keep the price so high that few use smart contracts.
This is basic economics. The amount of calculations depends of the price of executing contracts.
Why not have periodic votes built into the protocol to adjust the gas price?
Within every 1000 block period, all XCP holders can vote. Send a broadcast
XCPFEES X where X is an integer from -7 to 7. If you set X at -7 you vote to reduce the fee by 7% at the end of the 1000 block period. Your number of votes is the amount of XCP on your address, thus someone with 100 XCP has 50x times more voting power than someone with 2 XCP.
The outcome of the vote shall be the median vote.
We should be able to vote on the asset fee, dividend fee, etc, so the format should rather be
XCPFEES X Y Z.
A problem with this system is that far from everyone would vote. This would (kinda) be self-adjusting because if the fee drifts too far from what’s consider sensible, then more people will get a strong opinion and vote.
Another solution (I don’t recommend) is to compensate those who vote by paying them the fees. The problem with this is that it would give an incentive to milk fees (set fees too high) rather than to focus on the long term.