Technical details

New smart contracts

Extend the Panther Protocol with the following, newly deployed smart contracts:On the Ethereum mainnet:

  • at 0xFED599513aB078Edea7Cf46574154f92b0B9FCAB: AdvancedStakeRewardAdviserAndMsgSender

On the Polygon network:

  • at 0x8f15a43961c27C74CB4F55234A78802401614de3: AdvancedStakeRewardController

  • at 0x47374FBE2289c0442f33a388590385A0b32a20Ff: AdvancedStakeActionMsgRelayer

  • at 0x9a423671e9Cde99Ae88853B701f98ca9e136877B: PantherPoolV0

  • at 0xE5da4955cBC480Eb9Bf9534def229F9D8339eE6d: PNftToken

  • at 0xb658B085144a0BEd098620BB829b676371B9B48c: ZAssetsRegistry

Existing smart contract affected

The following pre-existing smart contracts will be involved in the proposal transactions:On the Ethereum mainnet:

  • at 0x505796f5bc290269d2522cf19135ad7aa60dfd77: DAO_Multisig

  • at 0xf4d06d72dACdD8393FA4eA72FdcC10049711F899: Staking

  • at 0x347a58878D04951588741d4d16d54B742c7f60fC: RewardMaster

  • at 0xb476104aa9D1f30180a01987FB09b1e96dDCF14B: VestingPools

  • at 0x909E34d3f6124C324ac83DccA84b74398a6fa173: ZKPToken

On the Polygon network:

  • at 0x9A06Db14D639796B25A6ceC6A1bf614fd98815EC: PZkpToken

  • at 0x4cEc451F63DBE47D9dA2DeBE2B734E4CB4000Eac: Staking

  • at 0x09220DD0c342Ee92C333FAa6879984D63B4dff03: RewardMaster

Smart contracts of the Mainnet->Polygon PoS Bridge:

  • at 0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf: ERC20PredicateProxy

  • at 0xA0c68C638235ee32657e8f720a23ceC1bFc77C77: RootChainManagerProxy

Subgraph instances

The following Subgraph instances will be used to feed data to the front end dApp:

(Some more instances may be added to this list.)

Transactions

This proposal triggers execution of the following blockchain transactions. These transactions are already encoded during submission of the proposal to Snapshot.org, and can be independently verified via the Snapshot.org web interface.

Batch 1 transaction 1

Register $ZKP as an allowed:

ZAssetsRegistry_Proxy@matic::addZAsset(
    [0, 0, 1, 0, 11, "0x9A06Db14D639796B25A6ceC6A1bf614fd98815EC"])

Batch 1 transaction 2

Register PNFT as an allowed:

ZAssetsRegistry_Proxy@matic::addZAsset(
    [0, 0, 1, "0x10", 0, "0xE5da4955cBC480Eb9Bf9534def229F9D8339eE6d"])

Batch 1 transactions 3...5

Set existing contracts on Polygon to work with newly deployed contracts:

RewardMaster@matic::addRewardAdviser(
    "0x4cEc451F63DBE47D9dA2DeBE2B734E4CB4000Eac",
    "0xcc995ce8",
    "0x8f15a43961c27C74CB4F55234A78802401614de3")

RewardMaster@matic::addRewardAdviser(
    "0x47374FBE2289c0442f33a388590385A0b32a20Ff",
    "0xcc995ce8",
    "0x8f15a43961c27C74CB4F55234A78802401614de3")

RewardMaster@matic::addRewardAdviser(
    "0x4cEc451F63DBE47D9dA2DeBE2B734E4CB4000Eac",
    "0xb8372e55",
    "0x8f15a43961c27C74CB4F55234A78802401614de3")

Batch 1 transaction 6

Allow zAsset redemption since 2023-04-07T18:00:00.000Z:

PantherPoolV0_Proxy@matic::updateExitTimes(1680890400, 86400)

Batch 1 transaction 7

Allow AdvancedStakeRewardController to mint PNFT tokens:

PNftToken@matic::setMinter("0x8f15a43961c27C74CB4F55234A78802401614de3")

Batch 1 transaction 8

Set advance staking rewarding parameters - 15% APR to be effective since 2022-12-08T18:00:00.000Z for 180 days:

AdvancedStakeRewardController@matic::updateRewardParams(
    [1670522400, 1680804000, 15, 15])

Batch 1 transaction 9

Accept advanced stakes on Polygon since 2022-12-08T18:00:00.000Z for 119 days:

Staking@matic::addTerms(
    "0x7ec13a06",
    [true, true, 1000, 0, 1670522400, 1680804000, 0, 0, 5184000])

Batch 1 transaction 10

Reserve 2000 PNFT tokens for first 2000 stakes:

AdvancedStakeRewardController@matic::setNftRewardLimit(2000)

Batch 2 transactions 1...3

Mint 6,000,000 $ZKP as rewards for advanced stakes and send tokens to AdvancedStakeRewardController on Polygon via PoS bridge:

VestingPools@eth::releaseTo(
    16,
    "0x505796f5bc290269d2522cf19135ad7aa60dfd77",
    "6000000000000000000000000")

ZKPToken@eth::approve(
    "0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf",
    "6000000000000000000000000")

RootChainManagerProxy@eth::depositFor(
    "0x8f15a43961c27C74CB4F55234A78802401614de3",
    "0x909E34d3f6124C324ac83DccA84b74398a6fa173",
    "0x00000000000000000000000000000000000000000004f68ca6d8cd91c6000000")

Batch 3 transactions 1 and 2

Set existing contracts on mainnet to work with newly deployed contracts:

RewardMaster@eth::addRewardAdviser(
    "0xf4d06d72dACdD8393FA4eA72FdcC10049711F899",
    "0xcc995ce8",
    "0xFED599513aB078Edea7Cf46574154f92b0B9FCAB")

RewardMaster@eth::addRewardAdviser(
    "0xf4d06d72dACdD8393FA4eA72FdcC10049711F899",
    "0xb8372e55",
    "0xFED599513aB078Edea7Cf46574154f92b0B9FCAB")

Batch 3 transaction 3

Accept advanced stakes on mainnet since 2022-12-08T18:00:00.000Z for 119 days:

Staking@eth::addTerms(
    "0x7ec13a06",
    [true, true, 1000, 0, 1670522400, 1680804000, 0, 0, 5184000])

Batch 4 transaction 1

Allow AdvancedStakeRewardController to send all $ZKPs from its balance as rewards:

AdvancedStakeRewardController@matic::updateZkpRewardsLimit()

Batch 5 transactions 1...3

Mint 14,000 $ZKP as rewards for deployment and send 10,000 out of this amount to deployers:

VestingPools@eth::releaseTo(
    17,
    "0x505796f5bc290269d2522cf19135ad7aa60dfd77",
    "14000000000000000000000")

ZKPToken@eth::transfer(
    "0xf0886ac6B2E9A2A75C9537EAF1A3aa8398FB10e8",
    "8000000000000000000000")

ZKPToken@eth::transfer(
    "0xdfE35156b65e90D3Fbf7E0D438fAb7b564668848",
    "2000000000000000000000")

Last updated