Council Transparency Report: PIP 29

Report Author: Mudit Gupta

Address: 0xf29722a899Aa9FD0836076CA1dA64212c451453C

Relating to PIP 29: Polygon Protocol Council and discussed on Polygon Protocol Governance Call 13

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 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.

3 Likes