diff --git a/addresses.json b/addresses.json index e5b1ab1..d17b695 100644 --- a/addresses.json +++ b/addresses.json @@ -1,5 +1,6 @@ { "mainnet": { + "testnet": false, "chainId": 137, "network": "polygon", "LensProfilesGuardianTimelock": 604800, @@ -153,261 +154,82 @@ "PermissionlessCreator": "0x0b5e6100243f793e480DE6088dE6bA70aA9f3872" }, "testnet": { - "chainId": 80001, - "network": "mumbai", + "testnet": true, + "chainId": 80002, + "network": "amoy", "LensProfilesGuardianTimelock": 300, "LensHandlesGuardianTimelock": 300, - "LensHubProxy": "0x4fbffF20302F3326B20052ab9C217C44F6480900", - "ModuleGlobals": "0x19E75039d17D580b66bD0Eb52cF011B2966A8582", - "ProfileCreator": "0x6C1e1bC39b13f9E0Af9424D76De899203F47755F", - "LensPeriphery": "0xFf7Ba2334dD8D50067c664561ffFddc7aecEA870", - "UIDataProvider": "0x2BcFaaCb0450d63860E3Ee7c62ea12330BdC96F5", - "WMATIC": "0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889", + "TreasuryFee": 500, + "ProfileRoyaltyFee": 500, + "HandleRoyaltyFee": 500, + "Currencies": [ + { + "symbol": "WMATIC", + "addy": "0x0ae690AAD8663aaB12a671A6A0d74242332de85f" + }, + { + "symbol": "USDC", + "addy": "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582" + } + ], "Modules": { "v1": { "collect": [ - { - "name": "FreeCollectModule", - "addy": "0x41564F744244D4221B87e4570A351F507f774245" - }, - { - "name": "FeeCollectModule", - "addy": "0x04DdbF98fA7D795A2c522fe501Eff5AdA68e0703" - }, - { - "name": "LimitedFeeCollectModule", - "addy": "0x0206b4123E2fdec8F98BC31132e13928a793D676" - }, - { - "name": "SimpleFeeCollectModule", - "addy": "0x01C43c11161B7A1960f95595445c8449a9c356D5" - }, - { - "name": "MultirecipientFeeCollectModule", - "addy": "0xBA377571F81D7225A5744911932aB5451b4Ca5d7" - }, - { - "name": "StepwiseCollectModule", - "addy": "0xfdf89C33b36331f7568a1885bcCf2AfaCe44084e" - } ], "follow": [ - { - "name": "FeeFollowModule", - "addy": "0x0000000000000000000000000000000000000000" - }, - { - "name": "ProfileFollowModule", - "addy": "0x0000000000000000000000000000000000000000" - }, - { - "name": "RevertFollowModule", - "addy": "0x0000000000000000000000000000000000000000" - } ], "reference": [ - { - "name": "TokenGatedReferenceModule", - "addy": "0xD7aE30dCD7bc74F98562C2E64B3762058289C884" - }, - { - "name": "FollowerOnlyReferenceModule", - "addy": "0x50c1E6f739ad1b7ADaCdf848656682e4644aF42F" - }, - { - "name": "DegreesOfSeparationReferenceModule", - "addy": "0xA740cb1f188FfF87b232cc9F5f27c473E1653d6A" - } ] }, "v2": { "follow": [ - { - "name": "FeeFollowModule", - "addy": "0xB7612562C63dDcAFE4349beE6Ca35e9170819504" - }, - { - "name": "RevertFollowModule", - "addy": "0xaaB7E564ECbb2D11bCb9592A18F2E9281BA9f73A" - } ], "act": [ - { - "name": "CollectPublicationAction", - "addy": "0x4FdAae7fC16Ef41eAE8d8f6578d575C9d64722f2" - } ], "collect": [ - { - "name": "SimpleFeeCollectModule", - "addy": "0x345Cc3A3F9127DE2C69819C2E07bB748dE6E45ee" - }, - { - "name": "MultirecipientFeeCollectModule", - "addy": "0xe9FabdC429640DC35153C9Ba13AE83A0A1996912" - } ], "reference": [ - { - "name": "DegreesOfSeparationReferenceModule", - "addy": "0xFb290857DBA5c24Ef548a8D98CEFba8E56293254" - }, - { - "name": "FollowerOnlyReferenceModule", - "addy": "0x9Dd0b6e39F8Ea8B8dE9D55acC4652573E2eCB16f" - } ] } - }, - "Treasury": "0x8c6a6488822a5Dad91CBBfFAF7Af3379Bd6d8306", - "TreasuryFee": "50", - "LegacyCollectNFTImpl": "0x712d529Fe13c075069d97A878243e3E5A826D012", - "FollowNFTImpl": "0xC2452BAAeffd6109750401bF83e15E5aaec98606", - "LensHandlesImpl": "0x4d2c60431D4Fb2484C82fdD8C05985FfF93851E1", - "LensHandles": "0x44e1668150A154f01D53d1f05B8Fa0d8f3f341a9", - "TokenHandleRegistryImpl": "0xe3a704FEe3260cbee9B54A300be53f534Ad6755A", - "TokenHandleRegistry": "0x66cA05cAc4e8D543028192dD28C0570a0b6e3413", - "ModuleRegistryImpl": "0xBa7b1C57e6168b2B910b24F26FEbe41B4552A47e", - "ModuleRegistry": "0x4BeB63842BB800A1Da77a62F2c74dE3CA39AF7C0", - "LensHubV2Impl": "0xb4A26f55Cc2d1473b8A7649d90d34ba52A480391", - "GovernanceContract": "0x6D90D6c3F66784f5b5AFEb68f856592e4ad158c3", - "GovernanceContractAdmin": "0x1A1cDf59C94a682a067fA2D288C2167a8506abd7", - "ProxyAdminContract": "0xfbAddb4efA038325800846238e928529b7DD4a67", - "ProxyAdminContractAdmin": "0xcB6C7b2E340D50701d45d55507f19A5cE5d72330", - "LensV2UpgradeContract": "0x0Bd9617289e79751a9e1a0a19232608E1F7C36A4", - "ProfileCreationProxy": "0x0554a7163C3aa423429719940FFE179F21cD83f6", - "PublicActProxyImpl": "0x8555ad9CaCf2DE9873C15ed8369FC8BE7E2675FA", - "PublicActProxy": "0x4ed64Eb32C96Df0eA60BB8934798F4DFd3098Ba1", - "CollectNFT": "0x15062A8b16EAe79D68EC6a583212349bdF679C5e", - "CollectPublicationActionImpl": "0x2f422811ABBc5AFA6d18f083e70Bc6326fD245E0", - "LitAccessControlImpl": "0x6F0512aC88DDEB0A4bE8EeCC716daC0793EeCff2", - "LitAccessControl": "0xc4F726a10fDEb0E98e16Fa658b606192d57FC71c", - "AnonymousProfileId": "3", - "FollowTokenURI": "0xB9136f393861822cF2CAEa7E7062f6c71354d46f", - "PermissionlessCreatorImpl": "0xBb841c444655558176aBf97993b7f653A2B24994", - "PermissionlessCreator": "0xCb4FB63c3f13CB83cCD6F10E9e5F29eC250329Cc", - "FreeCreditsProvider": "0xC3161EeE3A055860125eE0b70412e4e4081852dD", - "ProfileTokenURI": "0x19787A2E8b396077B99F381c39B2DB5781FF6D38" + } }, - "sandbox": { - "chainId": 80001, - "network": "mumbai", + "example": { + "testnet": true, + "chainId": 69, + "network": "example", "LensProfilesGuardianTimelock": 300, "LensHandlesGuardianTimelock": 300, - "LensHubProxy": "0x7582177F9E536aB0b6c721e11f383C326F2Ad1D5", - "ProfileCreator": "0x6C1e1bC39b13f9E0Af9424D76De899203F47755F", - "LensPeriphery": "0xa6bcF4398824A199965f89094796DFCcEa81b1a6", - "ModuleGlobals": "0xcbCC5b9611d22d11403373432642Df9Ef7Dd81AD", - "PoolAddressesProvider": "0x5343b5bA672Ae99d627A1C87866b8E53F47Db2E6", - "MockSandboxGovernance": "0x1677d9cC4861f1C85ac7009d5F06f49c928CA2AD", + "Currencies": [ + { + "symbol": "EXAMPLE", + "addy": "0x0000000000000000000000000000000000000006" + }, + { + "symbol": "BITCOIN", + "addy": "0x0000000000000000000000000000000000000009" + } + ], "Modules": { "v1": { "collect": [ - { - "name": "FreeCollectModule", - "addy": "0x11C45Cbc6fDa2dbe435C0079a2ccF9c4c7051595" - }, - { - "name": "FeeCollectModule", - "addy": "0xE98a40DB1170B3A46ffa7bA84335A0A0e9A65C2d" - }, - { - "name": "LimitedFeeCollectModule", - "addy": "0x27742f7e82356e1c1e4177C11f627B5Dc18E4686" - }, - { - "name": "TimedFeeCollectModule", - "addy": "0x6Bf382f52398DAdD3969Fb9C1AB3a1Bab8268F4E" - }, - { - "name": "LimitedTimedFeeCollectModule", - "addy": "0x75Df383C587B0de2EB00FeA95B9b8e3AF35EbCe6" - }, - { - "name": "RevertCollectModule", - "addy": "0x75fe7513709E6Ca573d017cE979F7d35192CE0d5" - }, - { - "name": "SimpleFeeCollectModule", - "addy": "0xb4a9874adc790eec88fd086e43d329bbc9520efd" - }, - { - "name": "MultirecipientFeeCollectModule", - "addy": "0x99d6c3eabf05435e851c067d2c3222716f7fcfe5" - }, - { - "name": "StepwiseCollectModule", - "addy": "0x7a7b8e7699e0492da1d3c7eab7e2f3bf1065aa40" - }, - { - "name": "ERC4626FeeCollectModule", - "addy": "0x79697402bd2caa19a53d615fb1a30a98e35b84d5" - }, - { - "name": "AaveFeeCollectModule", - "addy": "0x912860ed4ed6160c48a52d52fcab5c059d34fe5a" - } ], "follow": [ - { - "name": "FeeFollowModule", - "addy": "0xE98a40DB1170B3A46ffa7bA84335A0A0e9A65C2d" - }, - { - "name": "ProfileFollowModule", - "addy": "0x62D0EcAB45428087d91a94EE33E141B7496Ad7c3" - }, - { - "name": "RevertFollowModule", - "addy": "0x65004331Ae1c3D35DF81aEC6E8C259167Bbe64E2" - } ], "reference": [ - { - "name": "TokenGatedReferenceModule", - "addy": "0xb4ba8dccd35bd3dcc5d58dbb9c7dff9c9268add9" - }, - { - "name": "FollowerOnlyReferenceModule", - "addy": "0xB080AAc00E53FBeb04917F22096721d602c70759" - }, - { - "name": "DegreesOfSeparationReferenceModule", - "addy": "0xe20D64D25779D2Ae0d76711e5Aca23EE633f2E1E" - } ] }, - "v2": {} - } - }, - "devnet": { - "chainId": 80001, - "network": "mumbai", - "LensProfilesGuardianTimelock": 300, - "LensHandlesGuardianTimelock": 300, - "LensHubProxy": "0xE444E6C7Fa6d21637E2ee724276Ef0b2E9250B1e", - "LensHubImplementation": "0x82eA94D35C8589357222FE39d22076700a86a576", - "ModuleGlobals": "0x2D61Efe6e7c7F696D5e0A6aac43Bd5035F0302B3", - "ProfileCreationProxy": "0x334b503E75CD1900F174A0F5Acc01c57C3b8F962", - "LegacyRevertCollectModule": "0x4c9a09e4313B3AC6065853A38332fA71C8Fc80Ab", - "LegacyFreeCollectModule": "0xc124502653cb0bC5510515Ba63df643366ff6f52", - "LegacyFeeFollowModule": "0x03e3d4D799271f0c4287e2bb7050aBE8c8C18d25", - "LegacyProfileFollowModule": "0xc809B311994672c4547E80d12fEb757ED9EbBB64", - "LegacyMultirecipientFeeCollectModule": "0x1cff6c45b0de2fff70670ef4dc67a92a1ccfe0bb", - "LegacyStepwiseCollectModule": "0x6928d6127dfa0da401737e6ff421fcf62d5617a3", - "LegacyERC4626FeeCollectModule": "0x31126c602cf88193825a99dcd1d17bf1124b1b4f", - "LegacyAaveFeeCollectModule": "0x666e06215747879ee68b3e5a317dcd8411de1897", - "LegacyTokenGatedReferenceModule": "0x86d35562ceb9f10d7c2c23c098dfeacb02f53853", - "LegacySimpleFeeCollectModule": "0x372443083ecbb3a50b5c0c2f1b30f23a9c41f256", - "FollowNFTImpl": "0xF02673CAb69Da82C024267f0D43712Bba066FC56", - "LensHandlesImpl": "0x8e9d7401379E012bb98846033164B8506f78a895", - "LensHandles": "0x1D21Ca2BEe708E12419A3e2564668F150817C2A5", - "TokenHandleRegistryImpl": "0x7Bf77E1F9E85C6d7437B29Fdfd48Ce41c05129C6", - "TokenHandleRegistry": "0x6968000D5c3B2569491706728D59e9a9bBc7f98B", - "FeeFollowModule": "0xB5bF585e14b26Ac59eF416e42C422a4a2356bC6B", - "LensHubV2Impl": "0x530Bc44E8722C61B657f80b74d64BAABD767782B", - "GovernanceContract": "0x0Dc07bEB61a71AbD9E156D428D693f7ea24401b3", - "ProxyAdminContract": "0xe7975519721fA50999636684439B395651fBb9CA", - "LensV2UpgradeContract": "0x7daE0aCb7cF72639c4efbBeAB4aA5739745E6812" + "v2": { + "follow": [ + ], + "act": [ + ], + "collect": [ + ], + "reference": [ + ] + } + }, + "TreasuryFee": "50", + "AnonymousProfileId": "3" } } diff --git a/foundry.toml b/foundry.toml index e94572c..ee9dd34 100644 --- a/foundry.toml +++ b/foundry.toml @@ -44,6 +44,7 @@ via_ir = true [rpc_endpoints] polygon = "${POLYGON_RPC_URL}" mumbai = "${MUMBAI_RPC_URL}" +amoy = "${AMOY_RPC_URL}" [fuzz] runs = 50 diff --git a/script/helpers/ForkManagement.sol b/script/helpers/ForkManagement.sol index 616a5d5..faa6947 100644 --- a/script/helpers/ForkManagement.sol +++ b/script/helpers/ForkManagement.sol @@ -14,6 +14,7 @@ contract ForkManagement is Script { string network; string json; uint256 forkBlockNumber; + bool isTestnet; // TODO: Replace with forge-std/StdJson.sol::keyExists(...) when/if this PR is approved: // https://github.com/foundry-rs/forge-std/pull/226 @@ -65,11 +66,13 @@ contract ForkManagement is Script { function checkNetworkParams() internal { network = json.readString(string(abi.encodePacked('.', targetEnv, '.network'))); uint256 chainId = json.readUint(string(abi.encodePacked('.', targetEnv, '.chainId'))); + isTestnet = json.readBool(string.concat('.', targetEnv, '.testnet')); console.log('\nTarget environment:', targetEnv); console.log('Network:', network); if (block.chainid != chainId) revert('Wrong chainId'); console.log('ChainId:', chainId); + console.log('\n\n Testnet: ', isTestnet ? 'true' : 'false'); } function getNetwork() internal returns (string memory) { diff --git a/script/helpers/envGen.js b/script/helpers/envGen.js index fdaf22d..ac8bc56 100644 --- a/script/helpers/envGen.js +++ b/script/helpers/envGen.js @@ -7,12 +7,16 @@ const findModule = (moduleType, moduleName, version) => { (module) => module.name === moduleName ); if (!module) { - return 'undefined'; + return '0x0000000000000000000000000000000000000000'; } else { return module.addy; } }; +const addressOrZero = (addressKey) => { + return addresses[addressKey] || '0x0000000000000000000000000000000000000000' +}; + const addressesPath = '../../addresses.json'; const addressesJson = require(path.join(__dirname, addressesPath)); @@ -32,6 +36,8 @@ fs.writeFileSync(`./backendEnv_${targetEnv}.txt`, ''); // And then write to backendEnv.txt line by line const str = fs.createWriteStream(`./backendEnv_${targetEnv}.txt`, { flags: 'a' }); + + str.write(`# Hub\n`); str.write(`LENS_HUB_PROXY=${addresses['LensHubProxy']}\n`); @@ -45,16 +51,22 @@ str.write(`\n# Public Act Proxy\n`); str.write(`LENS_PUBLIC_ACT_PROXY=${addresses['PublicActProxy']}\n`); str.write(`\n# Profile creation proxy\n`); -str.write(`PROFILE_CREATION_PROXY=${addresses['ProfileCreationProxy']}\n`); +str.write(`PROFILE_CREATION_PROXY=${addressOrZero('ProfileCreationProxy')}\n`); + +str.write(`\n# Permissionless creator\n`); +str.write(`PERMISSONLESS_CREATOR=${addresses['PermissionlessCreator']}\n`); + +str.write(`\n# Credits faucet\n`); +str.write(`CREDITS_FAUCET=${addressOrZero('CreditsFaucet')}\n`); str.write(`\n# Legacy ModuleGlobals for V1 (deprecated and removed in v2)\n`); -str.write(`LEGACY_MODULE_GLOBALS=${addresses['ModuleGlobals']}\n`); +str.write(`LEGACY_MODULE_GLOBALS=${addressOrZero('ModuleGlobals')}\n`); str.write(`\n# ModuleRegistry (for V2)\n`); str.write(`GLOBAL_MODULE_REGISTRY=${addresses['ModuleRegistry']}\n`); str.write(`\n# Legacy metadata updates\n`); -str.write(`LEGACY_PERIPHERY_DATA_PROVIDER=${addresses['LensPeriphery']}\n`); +str.write(`LEGACY_PERIPHERY_DATA_PROVIDER=${addressOrZero('LensPeriphery')}\n`); // LEGACY COLLECT MODULES