mirror of
https://github.com/luxfi/migration.git
synced 2026-11-02 14:35:23 +00:00
Routes 100% of C-Chain transaction fees to the DAO Safe, so burn and distribution become on-chain governance decisions with arbitrary rules rather than protocol constants. Deliberately NOT the protocol 50/50 split. feeSplitTimestamp lives on ChainConfig, is absent from the live genesis (nil = never), and cannot be set by upgrade.json — it is fixed at genesis. Leaving it off is the right call anyway: with IsFeeSplit false, creditTxFee credits the FULL fee to the coinbase, which is exactly what the DAO wants to receive. Enabling it would halve the Safe's input and bake a ratio that needs a fork to change. No splitter contract either: fees arrive as a direct AddBalance state credit with no code execution, so the destination needs no receive(). Today 100% of fees are destroyed at keyless 0x0100…0000 (3746 LUX and climbing, codesize 0, nonce 0). This turns that into DAO revenue. Not applied — mainnet C-Chain is 404 and P-Chain is at height 0 after the v1.36.56 roll recreated all five validators at once. Co-authored-by: Hanzo Dev <[email protected]>
23 lines
2.1 KiB
JSON
23 lines
2.1 KiB
JSON
{
|
|
"_what": "Point the C-Chain coinbase at the DAO treasury Safe. Append this ONE entry to precompileUpgrades in luxfi/universe deploy/lux-mainnet/luxd.yaml (configMaps[0].data['cchain-upgrade.json']), stamp blockTimestamp off the CHAIN clock (+45m), push to GitHub, let the git.hanzo.ai mirror pull, then sync hanzo-cd.",
|
|
"_status": "PENDING — not applied. Blocked on mainnet C-Chain being down (v1.36.56 roll, P-Chain height 0).",
|
|
"_why_no_solidity": "Fees arrive at the coinbase as a direct AddBalance state credit — no code executes, so the destination does not need to be a contract. Sending 100% to the Safe lets the DAO decide burn vs distribution on-chain, with arbitrary rules, changeable any time. No splitter contract to deploy or maintain.",
|
|
"_why_no_node_change": "feeSplitTimestamp (the protocol 50/50) stays OFF deliberately. With IsFeeSplit false, creditTxFee credits the FULL fee to the coinbase — which is exactly the input the DAO wants. Turning the protocol split on would only halve what reaches the Safe and hard-code a ratio that then needs a fork to change.",
|
|
"_governable_after": "adminAddresses = the Safe, so the DAO can re-point the reward address later by an on-chain RewardManager transaction — no fork, no redeploy, no config edit.",
|
|
"_consensus_note": "dummy.verifyCoinbase rejects a block whose header coinbase disagrees with the configured one, so ALL 5 validators must carry this before blockTimestamp or they fork. Use program/state_upgrade.sh's mount-wait + one-at-a-time roll.",
|
|
"_verify_after": [
|
|
"cast balance 0xF0D19cCCB8e33663e9bDEe6e40474F1E3fD1f2BD -> climbing",
|
|
"cast balance 0x0100000000000000000000000000000000000000 -> FLAT (blackhole stops growing)",
|
|
"./fleet_verify.sh -> CONVERGED 5/5, one state root"
|
|
],
|
|
"entry": {
|
|
"rewardManagerConfig": {
|
|
"blockTimestamp": "<STAMP FROM CHAIN CLOCK — do not hand-write; an empty read becomes 0 = 1970 = fires next block>",
|
|
"adminAddresses": ["0xF0D19cCCB8e33663e9bDEe6e40474F1E3fD1f2BD"],
|
|
"initialRewardConfig": {
|
|
"rewardAddress": "0xF0D19cCCB8e33663e9bDEe6e40474F1E3fD1f2BD"
|
|
}
|
|
}
|
|
}
|
|
}
|