@d5000, thanks for your contribution too.
There is no way to do an ICO or other kinds of sales if there is no premine, so this requirement already covers some other "unfair" tokenomic cases.
In general I agree, but I think there is still a tokenomic loophole here: even without a premine, a project can launch a token or IOU on a different chain before the actual coin mainnet, and later promise that it will be swappable into mainnet coins.
There is also a separate trust problem around bridges and project-controlled infrastructure. A coin developer can create a bridge service, contract, backend or relayer setup that only he owns or controls. If this bridge dies, has bugs, or if he is simply not willing to help with problems that occur, then you basically got scammed, even if there was no premine.
I saw this exact case. There was a bridge, exactly as described, and the code was even open-source. But there was a bug where the bridge wrongly returned coins after a swap, even though the transaction was successful. In one of the transactions the bridge threw a general error, marked the transaction as successful, and that was it. Resulting in coins gone and no swap processed.
There was no mention anywhere, no commits on GitHub. I looked it up, tried to find the error, and tried to understand if it was a bug or some kind of ban/shadow-ban. In the end I found out that the owner had identified the bug, thought I was doing it on purpose, and rolled out new code that would block swaps through the bridge if there was any "debt". I had not checked the balance and was not even aware of the returned transaction from the bridge.
So to wrap it up,
code was injected that was not publicly visible, even though the project was supposed to be open-source and had a GitHub repository for everyone to check. Audits can show that everything is fine, no scam, but the owner can still block specific behaviour or addresses without anyone even knowing. Or he can decide that everything under amount X is fine, but if it is 20k USD, then he just scams and keeps the money.
This is the point that is missing for me: how do we verify that something is really open-source, and how do we verify that the exact code is running without further modifications?
In many cases, you can't really verify it. There are loopholes. There is no useful checksum you can display if the same party controls the output of the webserver and can show whatever he wants. So there is trust involved, and in my opinion that should not be required in the first place. I know this is hard for many projects, because some are intentionally designed that way and some are just badly structured, but it is still a real problem.
This is also why my tokenomic list is kind of an extended version. There are really a lot of loopholes, even just by launching a token before mainnet on a different chain, promising that it will be swappable in the future, and so on.
There is no way to do an ICO or other kinds of sales if there is no premine, so this requirement already covers some other "unfair" tokenomic cases.
Back to this part, I have a perfect demonstration of how it unfortunately works in practice. There is a ANN in BitcoinTalk, title contains literally "No Premine".
Open the thread, you will find there a 10% "Development Allocation". And I am sorry to tell you, it is not only a one single coin, there are many of them.
Some openly market themselves as "fair launch", others (like the example above) don't claim "fair launch" outright, but still state "fair" in some form.
And the "dev tax" is hidden by such a beautiful words like "Community Contribution", "Market Liquidity Asset", "Team Allocation / Development Funding", "Infrastructure Extension".
I totally get the goal of it and it can be fair if done properly, but this would fall into the dev tax section of our Manifest. There is technical no difference on the purpose or amount.
It only sounds different if you add REAL transparency to that.
I'm almost sure the consensus change item is also not really needed: the open source requirement basically removes the possibility of a retroactive consensus change, because if the code is open source, everybody could just run the code without consensus change.
About this point, I don't fully agree. In theory yes, everybody can just run the old code. In practice, especially with new coins, it is unfortunately very easy to force people into the "official" version.
Most people go for the official coin. They mine it, they run nodes from the official public GitHub repository, and they do not do much research or due diligence. So everything can look like a fair launch, and a few days later an updated version can invalidate a chain because there was some kind of bug and a quick fix was needed. This is also a real story: no warning, no announcement, no future height activation.
But of course the "team" could try to force people into the forked code by committing to promote only that version and threaten to sell all (legitimately mined) coins on the fork without the change.
That is basically the problem, but I think it does not even need to be that explicit. The "official" repository and the "official" team already have a lot of power in the first days. Mining pools are often small services that just update to the latest node version and mine with massive hashrate for that small coin. They usually do not care about the deeper fairness question, they just run what the project tells them to run.
And once that worked once, it can happen again in a more polished way. A few days later the team can announce a future height activation (after critique and complaints on the non-announced bad managed case, the one with immediate activation), push update notices, and add something like a x% dev fee from each block. Also a real story here.
So an initially fair-looking coin can become totally unfair in a matter of days.
I think the point by Bray_marcelo is not that important in tradtitional cryptocurrencies, it is also covered by the "open source" rule, but there may be cryptos where checkpoints are very important, so it can be a good recommendation, but I don't think a "proof" is needed here.
I understand the argument, but this again depends on how much trust is hidden behind "open-source". If the published code is not necessarily the exact running code, or if the project can silently control infrastructure around it, then "open-source" alone is not always enough.
For traditional cryptocurrencies this may be less important, yes. But for projects that depend on bridges, checkpoints, bootstrap servers, special launch tooling, or any kind of centrally controlled service, I think it becomes important very quickly. The user should not have to trust that the team runs the same thing they published.
mainnet launch should be from a new genesis block and be called "mainnet" right away, no "rights" on coins/tokens should be possible to be acquired by previous "testnets" or "bootstrap nets".
About testnet rewards going to mainnet: yes, it is a good promotion technique to engage people, make them participate, test the network, and so on. I would compare it to an airdrop or eligibility program: past activity creates a later mainnet allocation. That does not make every airdrop unfair, but if a "testnet" creates rights to mainnet coins, then it is no longer just a testnet in the fair-launch sense.
But I also would not call it fair. If a testnet can create mainnet rights, then the "real" testnet basically has to be treated like mainnet: public announcement, launch date, equal preparation time, and fair access for everyone. Otherwise it is just another hidden allocation mechanism.
That "trick" is really annoying but some seem to fall for it.
Yes, exactly. It looks harmless because it is called testnet, bootstrap net, community reward, early support reward or something similar. But in the end it can still create rights before the real fair launch, and that is the part I would avoid. This is why the wording in the PoFL is very strict: it doesn't matter how it is called, more important is how it works.
For the Proof of Fair Launch checklist, I would add it like this: "
no pre-mainnet token, bridge claim, testnet/bootstrap reward, or other IOU should create any right to mainnet coins; mainnet should start from a fresh, publicly announced genesis with reproducible public code."
Would you agree with that wording?