# Council Transparency Report: PIP 29 #### Report Author: Mudit Gupta #### Address: 0xf29722a899Aa9FD0836076CA1dA64212c451453C #### Relating to [PIP 29: Polygon Protocol Council](https://github.com/maticnetwork/Polygon-Improvement-Proposals/blob/main/PIPs/PIP-29.md) and discussed on [Polygon Protocol Governance Call 13](https://youtu.be/MwlxxnVh4no?feature=shared&t=185) #### Change type: Regular change with PC Consensus:7/13 ## Introduction This document is an official communication between the Polygon Protocol Council and the community. It aims to provide transparency to all token holders regarding upcoming regular network changes. In this transparency report, the Protocol Council (‘PC’) aims to outline the execution details of the removal of `0x0000000000000000000000000000000000000001` assigned to the `TIMELOCK_ADMIN_ROLE` on the OpenZeppelin contracts. After evaluating the efficacy, impact, execution specifications, and security considerations, the PC has reached a majority consensus of 7/13, thereby queuing the change in execution. ## Motivation The timelock contracts are maintained on OpenZeppelin. The proposed change removes the address `0x0000000000000000000000000000000000000001` that is assigned to `TIMELOCK_ADMIN_ROLE`, which was introduced when creating the timelock by default. The Open Zeppelin Defender UI configures this address as an optional timelock admin by default. Therefore, the proposed address removal has no security implications for the network. The motivation for this removal is to maintain contract hygiene and unambiguous attribution of roles. Furthermore, an [internal assessment](https://goerli.etherscan.io/tx/0x39e544ce3affe0f6c055e1d5c01ab781437f95ae535314d5299f22233114027c) was conducted to ensure that the removal of this address does not hamper the functioning of the network in any way. In order to check the current state to be fixed Go to https://etherscan.io/address/0x29A6f32f36EDeD399763524018F17F03B1435b18#readContract And check that function “hasRole” now returns “true” for the following input params: Role:0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5 Address: 0x0000000000000000000000000000000000000001 Which is wrong. PIP-29 will fix it. ## Execution The subsequent section of the code provides a detailed overview of the execution specifications related to the proposed system smart contract change. These specifications are essential to understand the functioning and implementation of the upgrade: **Part 1: Function Schedule** roleToRevoke (TIMELOCK_ADMIN_ROLE): `0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5` addressToRevokeSuchRole: `0x0000000000000000000000000000000000000001` The gnosis safe transaction to be created by any owner will have to use the following input parameters: To (address): `0x29A6f32f36EDeD399763524018F17F03B1435b18` Contract method selector: schedule Target (address): `0x29A6f32f36EDeD399763524018F17F03B1435b18 `(TIMELOCK_ADDRESS) Value (uint256): `0` Data (bytes): (This represents the calldata to execute the function revokeRole) `0xd547741f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca50000000000000000000000000000000000000000000000000000000000000001` Predecessor (bytes32): `0x0000000000000000000000000000000000000000000000000000000000000000` Salt (bytes32): `0x0000000000000000000000000000000000000000000000000000000000000000` Delay (uint256): `864000` **Part 2: Validate Schedule Call Data** The tx call data for the proposal creation should match the following: `0x01d5062a00000000000000000000000029a6f32f36eded399763524018f17f03b1435b18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d2f000000000000000000000000000000000000000000000000000000000000000044d547741f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000` **Part 3: Execution** Once the timelock delay has passed, the scheduled proposal can be executed by calling the function “execute” Execute (payable amount Ether): `0` Target (address): `0x29A6f32f36EDeD399763524018F17F03B1435b18` (TIMELOCK_ADDRESS) Value (uint256): `0` Data (bytes): (this represents the calldata to execute the function revokeRole) `0xd547741f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca50000000000000000000000000000000000000000000000000000000000000001` Predecessor (bytes32): `0x0000000000000000000000000000000000000000000000000000000000000000` Salt (bytes32): `0x0000000000000000000000000000000000000000000000000000000000000000` **Part 4: Validation** Once the execution is finished, it is time to check that the address 0x0000000000000000000000000000000000000001 has no longer TIMELOCK_ADMIN_ROLE. Go to https://etherscan.io/address/0x29A6f32f36EDeD399763524018F17F03B1435b18#readContract And check that function “hasRole” now returns “false” for input params: Role:0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5 Address: 0x0000000000000000000000000000000000000001 ## Resources and References 1. Polygon Forum: https://forum.polygon.technology/ is a discourse forum for governance related discussions. Community members must register for an account before sharing their views. 2. Read more about PIP29: Polygon Protocol Council here: https://github.com/maticnetwork/Polygon-Improvement-Proposals/blob/main/PIPs/PIP-29.md 3. Polygon Timelock: https://etherscan.io/address/0x29A6f32f36EDeD399763524018F17F03B1435b18 4. Testnet Review: Removal of the address from the timelock: https://goerli.etherscan.io/tx/0x39e544ce3affe0f6c055e1d5c01ab781437f95ae535314d5299f22233114027c 5. Testnet Review: Test Transaction after the removal of the address: https://goerli.etherscan.io/tx/0xca43d87dc429c745dd190e8ad1a3e479d2b7cc87cacf6120593760ce10556c91 6. Params of the execTransaction: to: 0x29A6f32f36EDeD399763524018F17F03B1435b18 (TIMELOCK) value: 0 data: 0x01d5062a00000000000000000000000029a6f32f36eded399763524018f17f03b1435b18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d2f000000000000000000000000000000000000000000000000000000000000000044d547741f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000 operation: 0 safeTxGas: 0 baseGas: 0 gasPrice: 0 gasToken: 0x0000000000000000000000000000000000000000 refundReceiver: 0x0000000000000000000000000000000000000000 signatures: This will be encoded n of m signature for the transaction ## Copyrights All copyrights and related rights in this work are waived under CC0 1.0 Universal.