{ "contract": "governance", "version": "1.0.0", "description": "On-chain parameter governance. The deployer becomes the admin. Anyone can propose a parameter change; the admin approves or rejects it. Used to manage gas_price, messenger_entry_fee, relay_fee, etc.", "methods": [ { "name": "init", "description": "Initialize the contract, setting the caller as the admin. Must be called once after deployment.", "args": [] }, { "name": "propose", "description": "Submit a proposal to change a named parameter. Anyone can propose. Logs 'proposed: ='.", "args": [ {"name": "key", "type": "string", "description": "Parameter name (max 64 chars)"}, {"name": "value", "type": "string", "description": "Proposed new value (max 256 chars)"} ] }, { "name": "approve", "description": "Admin approves the pending proposal for a key, committing it as the live value. Logs 'approved: '.", "args": [ {"name": "key", "type": "string", "description": "Parameter key to approve"} ] }, { "name": "reject", "description": "Admin rejects and removes the pending proposal for a key. Logs 'rejected: '.", "args": [ {"name": "key", "type": "string", "description": "Parameter key to reject"} ] }, { "name": "get", "description": "Read the current live value of a parameter. Logs 'value: ' or 'not set: '.", "args": [ {"name": "key", "type": "string", "description": "Parameter key"} ] }, { "name": "get_pending", "description": "Read the pending proposed value. Logs 'pending: ' or 'no pending: '.", "args": [ {"name": "key", "type": "string", "description": "Parameter key"} ] }, { "name": "set_admin", "description": "Transfer the admin role to a new address. Only the current admin may call this. Logs 'admin: '.", "args": [ {"name": "new_admin", "type": "string", "description": "New admin address (hex pubkey)"} ] } ] }