PIP-41: Restore Base V1 Deployment, Initiate Ethereum Deployment and Compliance Role Funding
Proposal Summary
This proposal seeks governance approval to:
-
Restore the required ZKP balances to the Base V1 deployment using ZKP minted from the rewards pool.
-
Restore the non-ZKP test asset balances required by VaultV1 to support withdrawals on Base.
-
Use DAO Council operational funding to acquire the required non-ZKP assets.
-
Initiate the build and deployment process for Panther V1 on Ethereum.
-
Authorize the Compliance Role funding to be handled via DAO Grants.
Motivation
1. Restore Base V1 ZKP balances
To restore the Base V1 deployment to its required operational state, ZKP balances must be returned to three contracts:
-
ZkpReserveController: 3,840,888.4 ZKP
-
VaultV1: 1,000,546.507790072217357505 ZKP
-
PantherPoolV1: 280,766.6906 ZKP
This represents approximately 5,122,201.6 ZKP in total.
The required ZKP will be minted from the rewards pool and distributed to the respective Base V1 contracts.
2. Restore VaultV1 test assets
VaultV1 also requires the other test assets used by the Base deployment to be restored. Without sufficient balances of these assets in the vault, withdrawals of the corresponding tokens will revert.
The following assets are required:
-
0.000119127498140994 WETH
-
0.434819 USDC
-
0.100842079824413618 AERO
-
0.066781363580384114 VIRTUAL
-
0.018154422481002229 MORPHO
-
0.000335444255711905 AAVE
-
5.49509528069306407 ZORA
-
0.00000325 cbBTC
These assets will be acquired using DAO Council operational funding and transferred to VaultV1 on Base.
3. Initiate Panther V1 deployment on Ethereum
With the Base deployment being restored, this proposal also seeks approval to begin the build and deployment process for Panther V1 on Ethereum.
The Ethereum deployment will extend the V1 architecture to Ethereum and begin the technical work required to prepare the deployment for testing and subsequent launch.
Approval of this proposal authorizes the development team to begin the necessary build, configuration, integration, testing, and deployment preparation work for Ethereum.
Exact details regarding contract addresses, token and reward parameters, limits, token whitelist, and rewards and subsidies minting will be prepared and presented in the next PIP.
4. DAO Council management of Compliance Role funding
This proposal also seeks authorization for the DAO Council to manage the monthly funding of the Compliance Role via DAO Grants.
The DAO Council treasury has exhausted its ZKP reserves allocated for the Compliance Role. This proposal will therefore authorize DAO Grants to cover the ongoing Compliance Role costs, maintaining the intent of the funding arrangement originally approved under PIP-24.
Proposed Changes
1. Restore ZKP to Base V1
Mint approximately 5,122,201.6 ZKP from the rewards pool and distribute it as follows:
-
ZkpReserveController ā 3,840,888.4 ZKP
-
VaultV1 ā 1,000,546.507790072217357505 ZKP
-
PantherPoolV1 ā 280,766.6906 ZKP
-
Total ā approximately 5,122,201.6 ZKP
2. Restore non-ZKP assets to VaultV1
Using DAO Council operational funding, acquire and transfer the following assets to VaultV1 on Base:
-
WETH ā 0.000119127498140994
-
USDC ā 0.434819
-
AERO ā 0.100842079824413618
-
VIRTUAL ā 0.066781363580384114
-
MORPHO ā 0.018154422481002229
-
AAVE ā 0.000335444255711905
-
ZORA ā 5.49509528069306407
-
cbBTC ā 0.00000325
These balances are required to ensure withdrawals of the corresponding assets can be processed successfully by VaultV1.
3. Begin Ethereum deployment
Authorize the development team to initiate the Panther V1 Ethereum deployment, including the technical work necessary to:
-
Prepare and configure the V1 contracts for Ethereum.
-
Build and configure the required deployment infrastructure.
-
Perform integration and deployment testing.
-
Prepare the Ethereum deployment for subsequent launch and governance actions where required.
Exact details regarding contract addresses, token and reward parameters, limits, token whitelist, and rewards and subsidies minting will be prepared and presented in the next PIP.
4. DAO Council manages Compliance Role funding
Authorize the DAO Council to manage the Compliance Role monthly funding via DAO Grants.
This will allow DAO Grants to cover the ongoing Compliance Role costs while maintaining the intent of the arrangement originally approved under PIP-24.
Next Steps
Base restoration
Following approval:
-
Mint the required ZKP from the rewards pool.
-
Transfer the required ZKP balances to ZkpReserveController, VaultV1, and PantherPoolV1 on Base.
-
Acquire the required non-ZKP assets using DAO Council operational funding.
-
Transfer the acquired assets to VaultV1.
-
Verify the restored balances and test Base V1 deposit and withdrawal functionality.
Ethereum deployment
Following approval, the development team may begin the technical build and deployment process for Panther V1 on Ethereum.
The Ethereum deployment will proceed through the required development, testing, compliance, and governance stages before being made available to users.
Exact details regarding contract addresses, token and reward parameters, limits, token whitelist, and rewards and subsidies minting will be prepared and presented in the next PIP.
Compliance Role funding
Following approval, the DAO Council will be authorized to use DAO Grants to fund the Compliance Role, consistent with the intent of PIP-24.
Voting
PIP-41 will be published on Snapshot for a 3-day vote, with voting eligibility defined in PIP-7.
Transactions for the Snapshot
Addresses
Panther contracts on Ethereum:
- DAO_Multisig@eth:
0x505796f5Bc290269D2522cf19135aD7Aa60dfd77 - VestingPools@eth:
0xb476104aa9D1f30180a01987FB09b1e96dDCF14B - ZKP@eth:
0x909E34d3f6124C324ac83DccA84b74398a6fa173
Transactions for the Snapshot
Transactions Overview
The Base V1 deployment was drained on 2026-08-06 through a compromised Reality.eth Zodiac module on the Base Safe. The contract implementations have been restored; this proposal replaces the lost ZKP.
It mints 5,122,201.598391 ZKP to the Ethereum DAO Multisig and nothing else. Bridging to Base and distributing to ZkpReserveController (3,840,888.4 ZKP), VaultV1 (1,000,546.507790072217357505 ZKP) and PantherPoolV1 (280,766.6906 ZKP) are performed manually afterwards and are not part of this proposal.
Existing allocation is used first: pool #18 still holds 57,155.0 ZKP releasable, so a new pool #25 covers only the remaining 5,065,046.598391 ZKP.
The exact requirement is 5,122,201.598390072217357505 ZKP. The new pool is rounded up to the 1e-6 ZKP grid that VestingPools can represent, a surplus of 927782642495 wei.
Note: Tx #1 must execute before 2026-08-31 or it reverts, as the pool start would be in the past.
All four transactions are signed by the Ethereum DAO Multisig.
addVestingPoolson VestingPools@eth ā Add vesting pool #25: 5,065,046.598391 ZKP, wallet = DAO Multisig, start 2026-08-31 (future), 1 vesting day.updatePoolTimeon VestingPools@eth ā Move pool #25 start to 2026-08-01 (past) so the whole allocation is releasable.releaseToon VestingPools@eth ā Release (mint) 5,065,046.598391 ZKP from pool #25 to the DAO Multisig.releaseToon VestingPools@eth ā Release (mint) the remaining 57,155.0 ZKP from existing pool #18 to the DAO Multisig.
Ethereum Direct Actions ā 4 Transactions
Tx #1: Add Vesting Pool #25
Purpose: Add vesting pool #25: 5,065,046.598391 ZKP, wallet = DAO Multisig, start 2026-08-31 (future), 1 vesting day, adjustable, not pre-minted.
To:
0xb476104aa9D1f30180a01987FB09b1e96dDCF14B ā VestingPools@eth
Value:
0
Data:
0xe11d1a98000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000505796f5bc290269d2522cf19135ad7aa60dfd77000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006a94c40000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000049b4c4da2f70000000000000000000000000000000000000000000000000000049b4c4da2f70000000000000000000000000000000000000000000000000000000000000000
Method:
addVestingPools(address[],(bool,bool,uint32,uint16,uint48,uint48,uint96)[])
Tx #2: Move Pool #25 Start to 2026-08-01
Purpose: Move pool #25 start to 2026-08-01 (past) so the whole allocation is releasable.
To:
0xb476104aa9D1f30180a01987FB09b1e96dDCF14B ā VestingPools@eth
Value:
0
Data:
0xdb66bbd10000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000006a6d37000000000000000000000000000000000000000000000000000000000000000001
Method:
updatePoolTime(uint256,uint32,uint16)
Tx #3: Release 5,065,046.598391 ZKP From Pool #25
Purpose: Release (mint) 5,065,046.598391 ZKP from pool #25 to the DAO Multisig.
To:
0xb476104aa9D1f30180a01987FB09b1e96dDCF14B ā VestingPools@eth
Value:
0
Data:
0x2a7d7bc50000000000000000000000000000000000000000000000000000000000000019000000000000000000000000505796f5bc290269d2522cf19135ad7aa60dfd77000000000000000000000000000000000000000000043090b9eddd9b6f627000
Method:
releaseTo(uint256,address,uint256)
Tx #4: Release Remaining 57,155.0 ZKP From Pool #18
Purpose: Release (mint) the remaining 57,155.0 ZKP from existing pool #18 to the DAO Multisig.
To:
0xb476104aa9D1f30180a01987FB09b1e96dDCF14B ā VestingPools@eth
Value:
0
Data:
0x2a7d7bc50000000000000000000000000000000000000000000000000000000000000012000000000000000000000000505796f5bc290269d2522cf19135ad7aa60dfd77000000000000000000000000000000000000000000000c1a60f64fd4eb2c0000
Method:
releaseTo(uint256,address,uint256)
JSON for Gnosis Safe Transaction Builder
[
{
"to": "0xb476104aa9D1f30180a01987FB09b1e96dDCF14B",
"operation": "0",
"value": "0.0",
"data": "0xe11d1a98000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000505796f5bc290269d2522cf19135ad7aa60dfd77000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006a94c40000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000049b4c4da2f70000000000000000000000000000000000000000000000000000049b4c4da2f70000000000000000000000000000000000000000000000000000000000000000"
},
{
"to": "0xb476104aa9D1f30180a01987FB09b1e96dDCF14B",
"operation": "0",
"value": "0.0",
"data": "0xdb66bbd10000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000006a6d37000000000000000000000000000000000000000000000000000000000000000001",
"method": "updatePoolTime(uint256,uint32,uint16)",
"params": ["25","1785542400","1"]
},
{
"to": "0xb476104aa9D1f30180a01987FB09b1e96dDCF14B",
"operation": "0",
"value": "0.0",
"data": "0x2a7d7bc50000000000000000000000000000000000000000000000000000000000000019000000000000000000000000505796f5bc290269d2522cf19135ad7aa60dfd77000000000000000000000000000000000000000000043090b9eddd9b6f627000",
"method": "releaseTo(uint256,address,uint256)",
"params": ["25","0x505796f5Bc290269D2522cf19135aD7Aa60dfd77","5065046598391000000000000"]
},
{
"to": "0xb476104aa9D1f30180a01987FB09b1e96dDCF14B",
"operation": "0",
"value": "0.0",
"data": "0x2a7d7bc50000000000000000000000000000000000000000000000000000000000000012000000000000000000000000505796f5bc290269d2522cf19135ad7aa60dfd77000000000000000000000000000000000000000000000c1a60f64fd4eb2c0000",
"method": "releaseTo(uint256,address,uint256)",
"params": ["18","0x505796f5Bc290269D2522cf19135aD7Aa60dfd77","57155000000000000000000"]
}
]