Comment on page

Stage 0

This testing stage (and activity in production) is directed towards miners, a key role in the Panther ecosystem, as opposed to DeFi users. It started in July 10th, 2023, and is projected to last for two weeks.
To see the original announcement for it, along with explanations of the components tested, click here.

Testing scope

In this Stage, we’re launching the Panther Miner, a specialized miner designed to interact with a blockchain network.
Within Panther, Miners are responsible for running a piece of code that fetches the pending mining queue. They then compute updates to the Merkle trees needed to append the UTXOs of the queue to the trees, create a SNARK-proof that proves the correctness of the updates, and submit these updates to be written on-chain together with the proof to smart contracts. As such, the Panther Miner software acts as the “Bus operator” for the Bus Tree (see Shielded Pools) on behalf of a user. In this implementation, the algorithm to reward miners is fairly simple. Eventually, the Panther community may want to implement a more sophisticated algorithm after some initial usage statistics are collected.

How to test

To test at this stage, follow the steps below.

Testing on a browser

Note: This option was active during the first rounds of Stage 0, but it has since been turned off. Starting from August 30th, 2023, only docker mining (see below) will work.
  1. 1.
    Visit the miner test page at the latest updated link (June 15th, 2023):
  2. 2.
    Fill in the following three variables:
  • Interval (in seconds): the designated pause between iterations produced automatically by the miner. An iteration includes:
1) Checking the BusTree contract for a queue expecting processing and selecting the most profitable one to process.
2) Generating a zk-proof by processing the chosen queue.
3) Submitting the zk-proof to the blockchain.
  • Private Key: the private key of the wallet used to sign batch transactions and receive rewards.
There are two options for this field:
  1. 1.
    Use an existing key, e.g., exported from your MetaMask; or
  2. 2.
    Generate a new key pair. Click “Generate private key using MetaMask” and get a new private key inserted into the corresponding field. You can add the new address to your MetaMask (click “Show Private Key” to unveil and copy the data) afterward.
A new public key (address) will be reflected as soon as you start mining. Find it in the “Mining statistics” section.
  • RPC URL: use any RPC you prefer, as long as it’s valid for the Mumbai network.
3. Ensure you have a positive balance of MATIC in your wallet to interact with the product. You can visit faucet_1 or faucet_2 to get test MATIC tokens.
4. (Optional) Add the tZKP token to your wallet using the following contract address 0x4004C49aBb96B11D89A52DeCCa2D1522da7f3089 (it is reflected within the “Mining Statistics section”/”Reward” field). You will see your ZKP balance increasing as soon as you start mining queues. Your reward balance is also available on the UI (see below).
5. Click the “Start Mining” button to start the process.
6. Check that the “Logs” section is updating.
7. Check that the “Mining Statistics” section is updating.
Please, note:
  • The “Generated Proof” amount can be bigger than “Submitted Proof,” meaning other miners submitted a generated proof earlier than you.
  • “Mining Success” = “Submitted Proof”(s).
  • Your Balance (of MATIC) will decline over time because the miner client generates UTXOs to let you interact with them to test the functionality. Submitting UTXOs incurs a cost.
  • “Reward” ($ZKP balance) will grow over time if your mining activity is successful. Rewards are distributed as soon as data is processed.
8. Check that you’re receiving rewards correctly.
9. Stop mining. (Note: the miner will finish the ongoing iteration before entirely stopping).

Using a docker image

For users interested in running the Panther Miner themselves instead of using a browser version, the dockerized version has the same functionalities and logic outlined above. Here’s the link to the docker image page: Smart contract details (on Mumbai)
  • BusTree: 0x678D34aA4fc546bA806287a8289FfdAA84681a03
  • tZKP Token (test token on Mumbai, replica of Polygon version of ZKP): 0x4004C49aBb96B11D89A52DeCCa2D1522da7f3089
  • VPool: 0xCd85e3E918F1A36F939281d3ca707EE262a364c6
  • test DAO multisig: 0xfB474a7FeCDaFBD412ebF0d60A0C32794F82d3dD
  • PantherVerifier: 0xeeAfce13506847a19141A4513718df17383f4f7b
  • PantherPool: 0xfDfD920F2152565E9D7b589e4e9faeE6699AD4bd
  • Vault: 0x9619bd59411a8387a4119e548017C5b86c7bCec5
  • FXPortalBridge: 0x542c2c3e6BBfD5979E5FEC6708764B93Ba210c51
  • Test ZKP Token (replica of ZKP on Ethereum Mainnet for e2e simulation purposes): 0xfD466eF2c700E2f66b2d05D92896b95d541e66e5