pcaversaccio / createx

Factory smart contract to make easier and safer usage of the `CREATE` and `CREATE2` EVM opcodes as well as of `CREATE3`-based (i.e. without an initcode factor) contract creations.
https://createx.rocks
GNU Affero General Public License v3.0
304 stars 18 forks source link

🔥 Add Production Network Deployments #57

Closed pcaversaccio closed 9 months ago

pcaversaccio commented 9 months ago

🕓 Changelog

This PR adds the initial 28 production network deployments. "Harmony" and "Filecoin" contract verifications fail due to technical issues on their side (see https://github.com/pcaversaccio/createx/pull/56 for the details), but it's a non-issue since the bytecode is the same as on all other deployed and verified chains, as well as I have verified "Filecoin" on Sourcify.

Furthermore, all Etherscan pages for the production networks have a CreateX tag that links to createx.rocks:

image

What is really cool is that the presigned transaction worked like charm 😄:

image

Finally, I also address https://github.com/pcaversaccio/createx/pull/56#discussion_r1432893920 regarding the URL entries.

🔥 We've come a long way, but we fucking made it!

🐶 Cute Animal Picture

image

github-actions[bot] commented 9 months ago

Coverage after merging prod-deployments into main will be

100.00%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   CreateX.sol100%100%100%100%
pcaversaccio commented 8 months ago

UPDATE: I managed to verify CreateX on Filfox (i.e. Filecoin) test and production network using the following Python script:

import json
import requests

# See the Filfox API documentation here: https://filfox.notion.site/Filfox-Contract-Verification-API-Documents-c48d361c949348acb0bf806871ddd2c2

address = "0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed"
compiler = "v0.8.23+commit.f704f362"
optimize = True
optimizeRuns = 10000000
metadata = '{"bytecodeHash": "none"}'

sourceFiles = dict()
files = ["CreateX.sol"]

for file in files:
    with open(file) as f:
        sourceFiles[file] = {"content": f.read()}

data = {
    "address": address,
    "compiler": compiler,
    "optimize": optimize,
    "optimizeRuns": optimizeRuns,
    "sourceFiles": sourceFiles,
    "license": "AGPL-3.0-only",
    "evmVersion": "paris",
    "metadata": metadata,
}

# url = "https://calibration.filfox.info/api/v1/tools/verifyContract" # For testnet
url = "https://filfox.info/api/v1/tools/verifyContract" # For mainnet
header = {"Content-Type": "application/json"}

r = requests.post(url, data=json.dumps(data), headers=header)
print(r.status_code)
print(r.text)