Pool Verification
Apologies in advanced. This process is fairly complicated, but it's the only reliable way we've found to consistently verify Pool contracts. Once you've deployed your pool using the Pool Composer, it's useful to verify the contract. It makes it easier for people to interact with without the UI, as well as allows people to inspect the code of the contracts they are interacting with.
1. Get the contract address of your deployed pool.
If you've just deployed your Pool with the Pool Composer, you can find the contract address displayed next to the Create Pool step.
If you've already left the Pool Composer screen, the easiest way to get the contract address is from the url of the pool detail screen.
The pool contract address in the url above is 0xd47d2791d3b46f9452709fa41855a045304d6f9d. It is most often times everything until the first 0, but can sometimes also include the first 0. You can verify that you have the correct address by checking it on FTMScan.
2. Retrieve the ABI-encoded arguments
Apologies ahead of time, but the process of finding the ABI encoded arguments is the most difficult step of this entire process.
First we need to find the transaction hash for the contract creation. If you navigate to the Internal Txns tab of your contract you're looking for the entry that says Contract Creation in the To column. Once you've found the right transaction, click the link under Parent Txn Hash.
Copy the Transaction Hash.
Navigate to Tenderly Explorer and copy the transaction hash into the search bar.
Find the CREATE function in the execution trace and click the View in Debugger link
The ABI Encoded constructor arguments are part of the INPUT to the create function. You'll need to copy the entire INPUT to a separate text editor. It is a very long encoded string, apologies sir!
Make sure to copy the INPUT and not the OUTPUT. The ABI-encoded arguments are everything after the 0033 seen in the picture below. The actual string will be different for every deployed contract, but the contents you need always starts after the 0033. The easiest is to keep only the necessary part and delete the rest, you will need it for the next step.
3. Verify your Pool contract
Once you have the contract address and ABI-encoded constructor arguments, navigate to the Contract tab and select Verify and Publish
Configure the submission form exactly as shown in the image below and click Continue. Do not change the contract address to match the image below, leave it as is.
Provide the appropriate source file and press the Click to Upload selected file button.
The Pool Composer currently supports only the Weighted Pool 2 Token (if the pool consists of two tokens) or standard Weighted Pool (if the pool consists of more than two tokens). Right click the appropriate link below and save the file.
Pool Type | Source File |
---|---|
Weighted Pool | https://beethoven-assets.s3.eu-central-1.amazonaws.com/weightedPool.json |
Stable Pool | https://beethoven-assets.s3.eu-central-1.amazonaws.com/stablePool.json |
Weighted Pool 2 Token | https://beethoven-assets.s3.eu-central-1.amazonaws.com/weightedPool2Token.json |
Liquidity Bootstrap Pool | https://beethoven-assets.s3.eu-central-1.amazonaws.com/no-fee-lbp.json |
Phantom Stable Pool | https://beethoven-assets.s3.eu-central-1.amazonaws.com/phantomstablepool.json |
MetaStable Pool | https://beethoven-assets.s3.eu-central-1.amazonaws.com/meta-stable-pool-2.json |
Stable Pool v2 | https://beethoven-assets.s3.eu-central-1.amazonaws.com/stablePoolV2.json |
Weighted Pool v2 | https://beethoven-assets.s3.eu-central-1.amazonaws.com/weightedPoolV2.json |
Copy the ABI-encoded constructor arguments into text field, and click the Verify and Publish button.
If everything went well, your contract should be successfully verified after a few seconds of waiting. CONGRATS!!!