Stage 0

For the current dApp, see the entrypoint. Note that, each stage's entrypoint is deprecated in favor of the next stage.

Status: Complete (but the docker Panther Miner is still working!)

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, along with explanations of the components tested, click here.

Testing scope

Stage 0 launches the Panther Miner, a specialized miner designed to interact with a blockchain network.

Within Panther, Ecosystem Operators run an Oshiya node — code that fetches the pending mining queue. Oshiya then computes 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.

Test in app

  1. Visit the miner test page at the latest link (see entrypoint.

  2. Understand the following three variables:

2.1 Interval (in seconds): the designated pause between iterations produced automatically by the miner. You may reduce this down if your system and the RPC provider handles the load, or you may increase this to lengthen the space between iterations.

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.

2.2 Private Key: the private key of the wallet used to sign batch transactions and receive rewards.

There are two options for this field:

  1. Use an existing key, e.g. exported from your MetaMask; or

  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.

2.3 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

Last updated