From bcf51f142be61f73b0afbe17d7e09fda0f368f4e Mon Sep 17 00:00:00 2001 From: AL Date: Tue, 4 Mar 2025 12:32:57 +0000 Subject: [PATCH 01/10] doc: internal audit 0.4.1 --- audit/README.md | 1 + audit/internal6/README.md | 47 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 audit/internal6/README.md diff --git a/audit/README.md b/audit/README.md index 25079c0..8cd541c 100644 --- a/audit/README.md +++ b/audit/README.md @@ -8,6 +8,7 @@ An internal audit with a focus on updated marketplace contracts is located in th An internal audit with a focus on re-design marketplace contracts is located in this folder: [internal audit 3](https://github.com/valory-xyz/ai-registry-mech/blob/main/audits/internal3).
An internal audit with a focus on latest re-design marketplace contracts is located in this folder: [internal audit 4](https://github.com/valory-xyz/ai-registry-mech/blob/main/audits/internal4).
An internal audit with a focus on latest re-design ref:nmv marketplace contracts is located in this folder: [internal audit 5](https://github.com/valory-xyz/ai-registry-mech/blob/main/audits/internal5).
+An internal audit with a focus on token-usdc ref:nmv marketplace contracts is located in this folder: [internal audit 6](https://github.com/valory-xyz/ai-registry-mech/blob/main/audits/internal6).
### External audits diff --git a/audit/internal6/README.md b/audit/internal6/README.md new file mode 100644 index 0000000..1b22fee --- /dev/null +++ b/audit/internal6/README.md @@ -0,0 +1,47 @@ +# Internal audit of ai-registry-mech +The review has been performed based on the contract code in the following repository:
+`https://github.com/valory-xyz/ai-registry-mech`
+commit: c72195a6be5bbefcfa40af87f2e1c1bfed2fa9e7 (tag: v0.4.1-pre-internal-audit)
+ +## Objectives +The audit focused on NVM-usdc marketplace contracts in this repo.
+Limits: The subject of the audit is not contracts used as library contracts. Thus, this audit is not a full-fledged audit of contracts underlying the contract ERC721Mech.
+ + +## Coverage +``` +------------------------------------------|----------|----------|----------|----------|----------------| +File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines | +------------------------------------------|----------|----------|----------|----------|----------------| + contracts/mechs/nevermined_token/ | 94.12 | 87.5 | 57.14 | 85.71 | | + BalanceTrackerNvmSubscriptionToken.sol | 94.12 | 87.5 | 57.14 | 85.71 |... 122,160,166 | + contracts/mechs/nevermined_token/usdc/ | 100 | 100 | 100 | 100 | | + MechFactoryNvmSubscriptionTokenUSDC.sol | 100 | 100 | 100 | 100 | | + MechNvmSubscriptionTokenUSDC.sol | 100 | 100 | 100 | 100 | | + +``` +insufficient testing coverage +[] + +### Security issues. +#### Notes +``` +Does different decimals in ERC20 affect it somehow? I don't think so, and everything is calculated and compared in raw values. For discussion. + // Convert mech credits balance into tokens + balance = (balance * tokenCreditRatio) / 1e18; + mapMechBalances[mech] = balance; + + // Check current contract balance + uint256 trackerBalance = IERC20(token).balanceOf(address(this)); + if (balance > trackerBalance) { + revert Overflow(balance, trackerBalance); + } +``` +[] + + + + + + + From 64c1d085d7163abc38264120b05d8a3de7470cb2 Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Tue, 4 Mar 2025 16:12:17 +0000 Subject: [PATCH 02/10] chore: addressing audit --- audit/internal6/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/audit/internal6/README.md b/audit/internal6/README.md index 1b22fee..4cc8dbb 100644 --- a/audit/internal6/README.md +++ b/audit/internal6/README.md @@ -37,7 +37,7 @@ Does different decimals in ERC20 affect it somehow? I don't think so, and everyt revert Overflow(balance, trackerBalance); } ``` -[] +[x] Discussed, not an issue From 7a42f5e068c42d03693f0aafef53ea7d779a2a1a Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Wed, 5 Mar 2025 09:50:29 +0000 Subject: [PATCH 03/10] chore: mech verification --- scripts/deployment/e_check_00_agent_mech.js | 28 ----------------- scripts/deployment/e_verify_olas_mech.js | 33 +++++++++++++++++++++ 2 files changed, 33 insertions(+), 28 deletions(-) delete mode 100644 scripts/deployment/e_check_00_agent_mech.js create mode 100644 scripts/deployment/e_verify_olas_mech.js diff --git a/scripts/deployment/e_check_00_agent_mech.js b/scripts/deployment/e_check_00_agent_mech.js deleted file mode 100644 index 0f1acfe..0000000 --- a/scripts/deployment/e_check_00_agent_mech.js +++ /dev/null @@ -1,28 +0,0 @@ -/*global process*/ - -async function main() { - const fs = require("fs"); - const globalsFile = "globals.json"; - const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); - let parsedData = JSON.parse(dataFromJSON); - const providerName = parsedData.providerName; - const agentType = parsedData.agentType; - let agentMechAddress; - if (agentType === "subscription") { - agentMechAddress = parsedData.agentMechSubscriptionAddress; - } else { - agentMechAddress = parsedData.agentMechAddress; - } - - // Contract verification - const execSync = require("child_process").execSync; - execSync("npx hardhat verify --constructor-args scripts/deployment/verify_00_agent_mech.js --network " + providerName + " " + agentMechAddress, { encoding: "utf-8" }); -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); - diff --git a/scripts/deployment/e_verify_olas_mech.js b/scripts/deployment/e_verify_olas_mech.js new file mode 100644 index 0000000..9b8eb2e --- /dev/null +++ b/scripts/deployment/e_verify_olas_mech.js @@ -0,0 +1,33 @@ +/*global process, hre*/ + +async function main() { + const fs = require("fs"); + const globalsFile = "globals.json"; + const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); + let parsedData = JSON.parse(dataFromJSON); + + const provider = new ethers.providers.JsonRpcProvider(parsedData.networkURL); + const signers = await ethers.getSigners(); + + const deployer = signers[0]; + console.log("Deployer is:", deployer.address); + + const mechAddress = ""; + const mech = await ethers.getContractAt("MechFixedPriceNative", mechAddress); + const mechMarketplaceAddress = await mech.mechMarketplace(); + const serviceRegistryAddress = await mech.serviceRegistry(); + const serviceId = await mech.tokenId(); + const maxDeliveryRate = await mech.maxDeliveryRate(); + await hre.run("verify:verify", { + address: mechAddress, + constructorArguments: [mechMarketplaceAddress, serviceRegistryAddress, serviceId, maxDeliveryRate], + }); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); + From b596c1ab10670443e2cc97733bd82656ae3f4bb7 Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Thu, 6 Mar 2025 10:00:59 +0000 Subject: [PATCH 04/10] chore: linters --- scripts/deployment/e_verify_olas_mech.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/deployment/e_verify_olas_mech.js b/scripts/deployment/e_verify_olas_mech.js index 9b8eb2e..ab54a02 100644 --- a/scripts/deployment/e_verify_olas_mech.js +++ b/scripts/deployment/e_verify_olas_mech.js @@ -6,14 +6,14 @@ async function main() { const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); let parsedData = JSON.parse(dataFromJSON); - const provider = new ethers.providers.JsonRpcProvider(parsedData.networkURL); - const signers = await ethers.getSigners(); + const provider = new hre.ethers.providers.JsonRpcProvider(parsedData.networkURL); + const signers = await hre.ethers.getSigners(); const deployer = signers[0]; console.log("Deployer is:", deployer.address); const mechAddress = ""; - const mech = await ethers.getContractAt("MechFixedPriceNative", mechAddress); + const mech = await hre.ethers.getContractAt("MechFixedPriceNative", mechAddress); const mechMarketplaceAddress = await mech.mechMarketplace(); const serviceRegistryAddress = await mech.serviceRegistry(); const serviceId = await mech.tokenId(); From 4d26f283d166cdf560458e9902fa399673d0601f Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Tue, 11 Mar 2025 11:41:07 +0000 Subject: [PATCH 05/10] chore: updating deployment scripts --- .../deployment/deploy_03_mech_marketplace.js | 6 +- ...t_factories_nvm_subscription_token_usdc.js | 67 +++++++++++++++++++ ...ace_set_balance_tracker_nvm_token_usdc.js} | 2 +- ...racker_nvm_subscription_token_usdc_set.js} | 8 +-- 4 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 scripts/deployment/deploy_19_marketplace_set_factories_nvm_subscription_token_usdc.js rename scripts/deployment/{deploy_19_marketplace_set_balance_tracker_nevermined_token_usdc.js => deploy_20_marketplace_set_balance_tracker_nvm_token_usdc.js} (97%) rename scripts/deployment/{deploy_20_balance_tracker_nvm_subscription_token_usdc_set.js => deploy_21_balance_tracker_nvm_subscription_token_usdc_set.js} (91%) diff --git a/scripts/deployment/deploy_03_mech_marketplace.js b/scripts/deployment/deploy_03_mech_marketplace.js index e306d9b..4798646 100644 --- a/scripts/deployment/deploy_03_mech_marketplace.js +++ b/scripts/deployment/deploy_03_mech_marketplace.js @@ -66,8 +66,10 @@ async function main() { // Contract verification if (parsedData.contractVerification) { - const execSync = require("child_process").execSync; - execSync("npx hardhat verify --constructor-args scripts/deployment/verify_03_mech_marketplace.js --network " + providerName + " " + mechMarketplace.address, { encoding: "utf-8" }); + await hre.run("verify:verify", { + address: mechMarketplace.address, + constructorArguments: [serviceRegistryAddress, karmaProxyAddress] + }); } } diff --git a/scripts/deployment/deploy_19_marketplace_set_factories_nvm_subscription_token_usdc.js b/scripts/deployment/deploy_19_marketplace_set_factories_nvm_subscription_token_usdc.js new file mode 100644 index 0000000..93403e2 --- /dev/null +++ b/scripts/deployment/deploy_19_marketplace_set_factories_nvm_subscription_token_usdc.js @@ -0,0 +1,67 @@ +/*global process*/ + +const { ethers } = require("hardhat"); +const { LedgerSigner } = require("@anders-t/ethers-ledger"); + +async function main() { + const fs = require("fs"); + const globalsFile = "globals.json"; + const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); + let parsedData = JSON.parse(dataFromJSON); + const useLedger = parsedData.useLedger; + const derivationPath = parsedData.derivationPath; + const providerName = parsedData.providerName; + const gasPriceInGwei = parsedData.gasPriceInGwei; + const mechMarketplaceProxyAddress = parsedData.mechMarketplaceProxyAddress; + const mechFactoryNvmSubscriptionTokenUSDCAddress = parsedData.mechFactoryNvmSubscriptionTokenUSDCAddress; + + let networkURL = parsedData.networkURL; + if (providerName === "polygon") { + if (!process.env.ALCHEMY_API_KEY_MATIC) { + console.log("set ALCHEMY_API_KEY_MATIC env variable"); + } + networkURL += process.env.ALCHEMY_API_KEY_MATIC; + } else if (providerName === "polygonMumbai") { + if (!process.env.ALCHEMY_API_KEY_MUMBAI) { + console.log("set ALCHEMY_API_KEY_MUMBAI env variable"); + return; + } + networkURL += process.env.ALCHEMY_API_KEY_MUMBAI; + } + + const provider = new ethers.providers.JsonRpcProvider(networkURL); + const signers = await ethers.getSigners(); + + let EOA; + if (useLedger) { + EOA = new LedgerSigner(provider, derivationPath); + } else { + EOA = signers[0]; + } + // EOA address + const deployer = await EOA.getAddress(); + console.log("EOA is:", deployer); + + // Get the contract instance + const mechMarketplace = await ethers.getContractAt("MechMarketplace", mechMarketplaceProxyAddress); + + // Transaction signing and execution + console.log("19. EOA to set Mech factories"); + console.log("You are signing the following transaction: MechMarketplaceProxy.connect(EOA).setMechFactoryStatuses()"); + const gasPrice = ethers.utils.parseUnits(gasPriceInGwei, "gwei"); + const result = await mechMarketplace.connect(EOA).setMechFactoryStatuses( + [mechFactoryNvmSubscriptionTokenUSDCAddress], [true], { gasPrice } + ); + + // Transaction details + console.log("Contract deployment: MechMarketplaceProxy"); + console.log("Contract address:", mechMarketplace.address); + console.log("Transaction:", result.hash); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/deployment/deploy_19_marketplace_set_balance_tracker_nevermined_token_usdc.js b/scripts/deployment/deploy_20_marketplace_set_balance_tracker_nvm_token_usdc.js similarity index 97% rename from scripts/deployment/deploy_19_marketplace_set_balance_tracker_nevermined_token_usdc.js rename to scripts/deployment/deploy_20_marketplace_set_balance_tracker_nvm_token_usdc.js index d169496..a64818a 100644 --- a/scripts/deployment/deploy_19_marketplace_set_balance_tracker_nevermined_token_usdc.js +++ b/scripts/deployment/deploy_20_marketplace_set_balance_tracker_nvm_token_usdc.js @@ -46,7 +46,7 @@ async function main() { const mechMarketplace = await ethers.getContractAt("MechMarketplace", mechMarketplaceProxyAddress); // Transaction signing and execution - console.log("19. EOA to set Balance tracker NVM subscription token USDC"); + console.log("20. EOA to set Balance tracker NVM subscription token USDC"); console.log("You are signing the following transaction: MechMarketplaceProxy.connect(EOA).setMechFactoryStatuses()"); const gasPrice = ethers.utils.parseUnits(gasPriceInGwei, "gwei"); const result = await mechMarketplace.connect(EOA).setPaymentTypeBalanceTrackers( diff --git a/scripts/deployment/deploy_20_balance_tracker_nvm_subscription_token_usdc_set.js b/scripts/deployment/deploy_21_balance_tracker_nvm_subscription_token_usdc_set.js similarity index 91% rename from scripts/deployment/deploy_20_balance_tracker_nvm_subscription_token_usdc_set.js rename to scripts/deployment/deploy_21_balance_tracker_nvm_subscription_token_usdc_set.js index 11c6358..f84e922 100644 --- a/scripts/deployment/deploy_20_balance_tracker_nvm_subscription_token_usdc_set.js +++ b/scripts/deployment/deploy_21_balance_tracker_nvm_subscription_token_usdc_set.js @@ -45,17 +45,17 @@ async function main() { console.log("EOA is:", deployer); // Get the contract instance - const balanceTrackerNvmSubscription = await ethers.getContractAt("BalanceTrackerNvmSubscriptionNative", balanceTrackerNvmSubscriptionTokenAddress); + const balanceTrackerNvmSubscription = await ethers.getContractAt("BalanceTrackerNvmSubscriptionToken", balanceTrackerNvmSubscriptionTokenAddress); // Transaction signing and execution - console.log("14. EOA to set Balance trackers NVM subscription"); - console.log("You are signing the following transaction: BalanceTrackerNvmSubscriptionNative.connect(EOA).setSubscription()"); + console.log("21. EOA to set Balance trackers NVM subscription Token"); + console.log("You are signing the following transaction: BalanceTrackerNvmSubscriptionToken.connect(EOA).setSubscription()"); const gasPrice = ethers.utils.parseUnits(gasPriceInGwei, "gwei"); const result = await balanceTrackerNvmSubscription.connect(EOA).setSubscription(subscriptionNFTAddress, subscriptionTokenIdUSDC, tokenCreditRatio, { gasPrice }); // Transaction details - console.log("Contract deployment: BalanceTrackerNvmSubscriptionNative"); + console.log("Contract deployment: BalanceTrackerNvmSubscriptionToken"); console.log("Contract address:", balanceTrackerNvmSubscription.address); console.log("Transaction:", result.hash); } From 9065b44d1180873f40f916178f7488d38ae092f7 Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Tue, 11 Mar 2025 12:08:23 +0000 Subject: [PATCH 06/10] chore: base test re-deployment --- scripts/deployment/deploy_04_mech_marketplace_proxy.js | 6 ++++-- ...loy_20_marketplace_set_balance_tracker_nvm_token_usdc.js | 2 +- scripts/deployment/globals_base_mainnet_test.json | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/deployment/deploy_04_mech_marketplace_proxy.js b/scripts/deployment/deploy_04_mech_marketplace_proxy.js index 900b169..7d52897 100644 --- a/scripts/deployment/deploy_04_mech_marketplace_proxy.js +++ b/scripts/deployment/deploy_04_mech_marketplace_proxy.js @@ -73,8 +73,10 @@ async function main() { // Contract verification if (parsedData.contractVerification) { - const execSync = require("child_process").execSync; - execSync("npx hardhat verify --constructor-args scripts/deployment/verify_04_mech_marketplace_proxy.js --network " + providerName + " " + mechMarketplaceProxy.address, { encoding: "utf-8" }); + await hre.run("verify:verify", { + address: mechMarketplaceProxy.address, + constructorArguments: [mechMarketplaceAddress, proxyPayload] + }); } } diff --git a/scripts/deployment/deploy_20_marketplace_set_balance_tracker_nvm_token_usdc.js b/scripts/deployment/deploy_20_marketplace_set_balance_tracker_nvm_token_usdc.js index a64818a..248f67e 100644 --- a/scripts/deployment/deploy_20_marketplace_set_balance_tracker_nvm_token_usdc.js +++ b/scripts/deployment/deploy_20_marketplace_set_balance_tracker_nvm_token_usdc.js @@ -47,7 +47,7 @@ async function main() { // Transaction signing and execution console.log("20. EOA to set Balance tracker NVM subscription token USDC"); - console.log("You are signing the following transaction: MechMarketplaceProxy.connect(EOA).setMechFactoryStatuses()"); + console.log("You are signing the following transaction: MechMarketplaceProxy.connect(EOA).setPaymentTypeBalanceTrackers()"); const gasPrice = ethers.utils.parseUnits(gasPriceInGwei, "gwei"); const result = await mechMarketplace.connect(EOA).setPaymentTypeBalanceTrackers( ["0x0d6fd99afa9c4c580fab5e341922c2a5c4b61d880da60506193d7bf88944dd14"], diff --git a/scripts/deployment/globals_base_mainnet_test.json b/scripts/deployment/globals_base_mainnet_test.json index 1a778bc..99c4eaf 100644 --- a/scripts/deployment/globals_base_mainnet_test.json +++ b/scripts/deployment/globals_base_mainnet_test.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"base","networkURL":"https://mainnet.base.org","gasPriceInGwei":"0.002","bridgeMediatorAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","serviceRegistryAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","karmaAddress":"0x94676070018ff7D09BC32DAc6bb01Ae67282b8E8","karmaProxyAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","fee":"100","minResponseTimeout":"60","maxResponseTimeout":"300","mechMarketplaceAddress":"0xd6AA4Ec948d84f6Db8EEf25104CeE0Ecd280C74e","mechMarketplaceProxyAddress":"0x95dA0F8C3eC5D40209f0EF1ED5E61deD28307d8d","mechFactoryNvmSubscriptionNativeAddress":"0x4cEB52802ef86edF8796632546d89e55c87a0901","drainerAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","wrappedNativeTokenAddress":"0x4200000000000000000000000000000000000006","tokenCreditRatio":"990000000000000000","balanceTrackerNvmSubscriptionNativeAddress":"0xaC26774616bbeD41b0CB69EA2ae7de366F430b23","mechFactoryFixedPriceNativeAddress":"0x0338893fB1A1D9Df03F72CC53D8f786487d3D03E","mechFactoryFixedPriceTokenAddress":"0x1d333b46dB6e8FFd271b6C2D2B254868BD9A2dbd","balanceTrackerFixedPriceNativeAddress":"0x6d9b08701Af43D68D991c074A27E4d90Af7f2276","balanceTrackerFixedPriceTokenAddress":"0x3c3007a2e4ba7f73C764F69f6D6C1983D9EB6B26","subscriptionNFTAddress":"0xd5318d1a17819f65771b6c9277534c08dd765498","subscriptionTokenId":"0x635b227e2fffa750c1914009b33462e9c24b18a167dfe6c972ea5d17ed104a59","usdcAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","mechFactoryNvmSubscriptionTokenUSDCAddress":"0x9385d4E53c72a858C451D41f58Fcb8C070bDd18A","balanceTrackerNvmSubscriptionTokenAddress":"0xd64Cf67500b7d15A41E02DDeb40F3A73CB533eB5","subscriptionTokenIdUSDC":"0x122541dc74587bf519d2a7bd2d3f018596329a08b0f7b2edbbdd179189ec117f"} \ No newline at end of file +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"base","networkURL":"https://mainnet.base.org","gasPriceInGwei":"0.003","bridgeMediatorAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","serviceRegistryAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","karmaAddress":"0x94676070018ff7D09BC32DAc6bb01Ae67282b8E8","karmaProxyAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","fee":"100","minResponseTimeout":"60","maxResponseTimeout":"300","mechMarketplaceAddress":"0x1570b1F3A32006e4bA3E321E745916e92EFbB026","mechMarketplaceProxyAddress":"0x5FDc466f4A7547c876eF40CD30fFA2A89F1EcDE7","mechFactoryNvmSubscriptionNativeAddress":"0x4cEB52802ef86edF8796632546d89e55c87a0901","drainerAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","wrappedNativeTokenAddress":"0x4200000000000000000000000000000000000006","tokenCreditRatio":"990000000000000000","balanceTrackerNvmSubscriptionNativeAddress":"0xaC26774616bbeD41b0CB69EA2ae7de366F430b23","mechFactoryFixedPriceNativeAddress":"0x0338893fB1A1D9Df03F72CC53D8f786487d3D03E","mechFactoryFixedPriceTokenAddress":"0x1d333b46dB6e8FFd271b6C2D2B254868BD9A2dbd","balanceTrackerFixedPriceNativeAddress":"0x6d9b08701Af43D68D991c074A27E4d90Af7f2276","balanceTrackerFixedPriceTokenAddress":"0x3c3007a2e4ba7f73C764F69f6D6C1983D9EB6B26","subscriptionNFTAddress":"0xd5318d1a17819f65771b6c9277534c08dd765498","subscriptionTokenId":"0x635b227e2fffa750c1914009b33462e9c24b18a167dfe6c972ea5d17ed104a59","usdcAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","mechFactoryNvmSubscriptionTokenUSDCAddress":"0xFf3953e3bCe4A9AA73b4cE2DeBD0A534681b5488","balanceTrackerNvmSubscriptionTokenAddress":"0xd64Cf67500b7d15A41E02DDeb40F3A73CB533eB5","subscriptionTokenIdUSDC":"0x122541dc74587bf519d2a7bd2d3f018596329a08b0f7b2edbbdd179189ec117f"} \ No newline at end of file From 9678b3f4327a06edb38fdb01b7b2e06f387a118f Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Tue, 11 Mar 2025 12:10:00 +0000 Subject: [PATCH 07/10] chore: linters --- .gitleaksignore | 1 + scripts/deployment/deploy_03_mech_marketplace.js | 2 +- scripts/deployment/deploy_04_mech_marketplace_proxy.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitleaksignore b/.gitleaksignore index 5940e92..aa04774 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -63,3 +63,4 @@ c57df5039fd4af8690d29223479c36d2942dd91c:scripts/deployment/globals_gnosis_mainn cf6cd64b418ace3c970d6029924ebb6dda9eec69:scripts/deployment/globals_gnosis_mainnet.json:generic-api-key:1 b43071abd7ec99b44cda56279b0df8f0c2eb617e:scripts/deployment/globals_base_mainnet_test.json:generic-api-key:1 cc8e19cb3e80831b83e808ce99c7663c829f4476:scripts/deployment/globals_base_mainnet_test.json:generic-api-key:1 +9065b44d1180873f40f916178f7488d38ae092f7:scripts/deployment/globals_base_mainnet_test.json:generic-api-key:1 diff --git a/scripts/deployment/deploy_03_mech_marketplace.js b/scripts/deployment/deploy_03_mech_marketplace.js index 4798646..39c3b05 100644 --- a/scripts/deployment/deploy_03_mech_marketplace.js +++ b/scripts/deployment/deploy_03_mech_marketplace.js @@ -1,4 +1,4 @@ -/*global process*/ +/*global process, hre*/ const { ethers } = require("hardhat"); const { LedgerSigner } = require("@anders-t/ethers-ledger"); diff --git a/scripts/deployment/deploy_04_mech_marketplace_proxy.js b/scripts/deployment/deploy_04_mech_marketplace_proxy.js index 7d52897..88cbd95 100644 --- a/scripts/deployment/deploy_04_mech_marketplace_proxy.js +++ b/scripts/deployment/deploy_04_mech_marketplace_proxy.js @@ -1,4 +1,4 @@ -/*global process*/ +/*global process, hre*/ const { ethers } = require("hardhat"); const { LedgerSigner } = require("@anders-t/ethers-ledger"); From fc12c6214c593ed2ae5f4ff4295bc4622e814872 Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Tue, 11 Mar 2025 12:42:19 +0000 Subject: [PATCH 08/10] chore: base test re-deployment --- scripts/deployment/globals_base_mainnet_test.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/deployment/globals_base_mainnet_test.json b/scripts/deployment/globals_base_mainnet_test.json index 99c4eaf..5c61ebf 100644 --- a/scripts/deployment/globals_base_mainnet_test.json +++ b/scripts/deployment/globals_base_mainnet_test.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"base","networkURL":"https://mainnet.base.org","gasPriceInGwei":"0.003","bridgeMediatorAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","serviceRegistryAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","karmaAddress":"0x94676070018ff7D09BC32DAc6bb01Ae67282b8E8","karmaProxyAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","fee":"100","minResponseTimeout":"60","maxResponseTimeout":"300","mechMarketplaceAddress":"0x1570b1F3A32006e4bA3E321E745916e92EFbB026","mechMarketplaceProxyAddress":"0x5FDc466f4A7547c876eF40CD30fFA2A89F1EcDE7","mechFactoryNvmSubscriptionNativeAddress":"0x4cEB52802ef86edF8796632546d89e55c87a0901","drainerAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","wrappedNativeTokenAddress":"0x4200000000000000000000000000000000000006","tokenCreditRatio":"990000000000000000","balanceTrackerNvmSubscriptionNativeAddress":"0xaC26774616bbeD41b0CB69EA2ae7de366F430b23","mechFactoryFixedPriceNativeAddress":"0x0338893fB1A1D9Df03F72CC53D8f786487d3D03E","mechFactoryFixedPriceTokenAddress":"0x1d333b46dB6e8FFd271b6C2D2B254868BD9A2dbd","balanceTrackerFixedPriceNativeAddress":"0x6d9b08701Af43D68D991c074A27E4d90Af7f2276","balanceTrackerFixedPriceTokenAddress":"0x3c3007a2e4ba7f73C764F69f6D6C1983D9EB6B26","subscriptionNFTAddress":"0xd5318d1a17819f65771b6c9277534c08dd765498","subscriptionTokenId":"0x635b227e2fffa750c1914009b33462e9c24b18a167dfe6c972ea5d17ed104a59","usdcAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","mechFactoryNvmSubscriptionTokenUSDCAddress":"0xFf3953e3bCe4A9AA73b4cE2DeBD0A534681b5488","balanceTrackerNvmSubscriptionTokenAddress":"0xd64Cf67500b7d15A41E02DDeb40F3A73CB533eB5","subscriptionTokenIdUSDC":"0x122541dc74587bf519d2a7bd2d3f018596329a08b0f7b2edbbdd179189ec117f"} \ No newline at end of file +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"base","networkURL":"https://mainnet.base.org","gasPriceInGwei":"0.003","bridgeMediatorAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","serviceRegistryAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","karmaAddress":"0x94676070018ff7D09BC32DAc6bb01Ae67282b8E8","karmaProxyAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","fee":"100","minResponseTimeout":"60","maxResponseTimeout":"300","mechMarketplaceAddress":"0x1570b1F3A32006e4bA3E321E745916e92EFbB026","mechMarketplaceProxyAddress":"0x5FDc466f4A7547c876eF40CD30fFA2A89F1EcDE7","mechFactoryNvmSubscriptionNativeAddress":"0x4cEB52802ef86edF8796632546d89e55c87a0901","drainerAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","wrappedNativeTokenAddress":"0x4200000000000000000000000000000000000006","tokenCreditRatio":"990000000000000000","balanceTrackerNvmSubscriptionNativeAddress":"0xaC26774616bbeD41b0CB69EA2ae7de366F430b23","mechFactoryFixedPriceNativeAddress":"0x0338893fB1A1D9Df03F72CC53D8f786487d3D03E","mechFactoryFixedPriceTokenAddress":"0x1d333b46dB6e8FFd271b6C2D2B254868BD9A2dbd","balanceTrackerFixedPriceNativeAddress":"0x6d9b08701Af43D68D991c074A27E4d90Af7f2276","balanceTrackerFixedPriceTokenAddress":"0x3c3007a2e4ba7f73C764F69f6D6C1983D9EB6B26","subscriptionNFTAddress":"0xd5318d1a17819f65771b6c9277534c08dd765498","subscriptionTokenId":"0x635b227e2fffa750c1914009b33462e9c24b18a167dfe6c972ea5d17ed104a59","usdcAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","mechFactoryNvmSubscriptionTokenUSDCAddress":"0x7ED124AF35f5e12318C898ba35b63863908e1eB8","balanceTrackerNvmSubscriptionTokenAddress":"0xc53B500b4d8FcC6865ec91b977651eec045ad8D1","subscriptionTokenIdUSDC":"0x122541dc74587bf519d2a7bd2d3f018596329a08b0f7b2edbbdd179189ec117f"} \ No newline at end of file From 62b20a62c6fbdabebc1566ad871cc1e9aa0b0b37 Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Tue, 11 Mar 2025 12:46:43 +0000 Subject: [PATCH 09/10] chore: base test re-deployment --- scripts/deployment/globals_base_mainnet_test.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/deployment/globals_base_mainnet_test.json b/scripts/deployment/globals_base_mainnet_test.json index 5c61ebf..d2e0818 100644 --- a/scripts/deployment/globals_base_mainnet_test.json +++ b/scripts/deployment/globals_base_mainnet_test.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"base","networkURL":"https://mainnet.base.org","gasPriceInGwei":"0.003","bridgeMediatorAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","serviceRegistryAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","karmaAddress":"0x94676070018ff7D09BC32DAc6bb01Ae67282b8E8","karmaProxyAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","fee":"100","minResponseTimeout":"60","maxResponseTimeout":"300","mechMarketplaceAddress":"0x1570b1F3A32006e4bA3E321E745916e92EFbB026","mechMarketplaceProxyAddress":"0x5FDc466f4A7547c876eF40CD30fFA2A89F1EcDE7","mechFactoryNvmSubscriptionNativeAddress":"0x4cEB52802ef86edF8796632546d89e55c87a0901","drainerAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","wrappedNativeTokenAddress":"0x4200000000000000000000000000000000000006","tokenCreditRatio":"990000000000000000","balanceTrackerNvmSubscriptionNativeAddress":"0xaC26774616bbeD41b0CB69EA2ae7de366F430b23","mechFactoryFixedPriceNativeAddress":"0x0338893fB1A1D9Df03F72CC53D8f786487d3D03E","mechFactoryFixedPriceTokenAddress":"0x1d333b46dB6e8FFd271b6C2D2B254868BD9A2dbd","balanceTrackerFixedPriceNativeAddress":"0x6d9b08701Af43D68D991c074A27E4d90Af7f2276","balanceTrackerFixedPriceTokenAddress":"0x3c3007a2e4ba7f73C764F69f6D6C1983D9EB6B26","subscriptionNFTAddress":"0xd5318d1a17819f65771b6c9277534c08dd765498","subscriptionTokenId":"0x635b227e2fffa750c1914009b33462e9c24b18a167dfe6c972ea5d17ed104a59","usdcAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","mechFactoryNvmSubscriptionTokenUSDCAddress":"0x7ED124AF35f5e12318C898ba35b63863908e1eB8","balanceTrackerNvmSubscriptionTokenAddress":"0xc53B500b4d8FcC6865ec91b977651eec045ad8D1","subscriptionTokenIdUSDC":"0x122541dc74587bf519d2a7bd2d3f018596329a08b0f7b2edbbdd179189ec117f"} \ No newline at end of file +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"base","networkURL":"https://mainnet.base.org","gasPriceInGwei":"0.003","bridgeMediatorAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","serviceRegistryAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","karmaAddress":"0x94676070018ff7D09BC32DAc6bb01Ae67282b8E8","karmaProxyAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","fee":"100","minResponseTimeout":"60","maxResponseTimeout":"300","mechMarketplaceAddress":"0x1570b1F3A32006e4bA3E321E745916e92EFbB026","mechMarketplaceProxyAddress":"0x5FDc466f4A7547c876eF40CD30fFA2A89F1EcDE7","mechFactoryNvmSubscriptionNativeAddress":"0x4cEB52802ef86edF8796632546d89e55c87a0901","drainerAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","wrappedNativeTokenAddress":"0x4200000000000000000000000000000000000006","tokenCreditRatio":"990000000000000000","balanceTrackerNvmSubscriptionNativeAddress":"0xaC26774616bbeD41b0CB69EA2ae7de366F430b23","mechFactoryFixedPriceNativeAddress":"0x0338893fB1A1D9Df03F72CC53D8f786487d3D03E","mechFactoryFixedPriceTokenAddress":"0x1d333b46dB6e8FFd271b6C2D2B254868BD9A2dbd","balanceTrackerFixedPriceNativeAddress":"0x6d9b08701Af43D68D991c074A27E4d90Af7f2276","balanceTrackerFixedPriceTokenAddress":"0x3c3007a2e4ba7f73C764F69f6D6C1983D9EB6B26","subscriptionNFTAddress":"0xd5318d1a17819f65771b6c9277534c08dd765498","subscriptionTokenId":"0x635b227e2fffa750c1914009b33462e9c24b18a167dfe6c972ea5d17ed104a59","usdcAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","mechFactoryNvmSubscriptionTokenUSDCAddress":"0x7ED124AF35f5e12318C898ba35b63863908e1eB8","balanceTrackerNvmSubscriptionTokenAddress":"0xc53B500b4d8FcC6865ec91b977651eec045ad8D1","subscriptionTokenIdUSDC":"0x8ef4e097f4e4b9a77dfc2d311e827fb94d15328e6631a348e25a07e3748eb542"} \ No newline at end of file From 7ff48c7ee05ffb894096eb19a053f72e701f3f6c Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Tue, 11 Mar 2025 12:47:41 +0000 Subject: [PATCH 10/10] chore: linters --- .gitleaksignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitleaksignore b/.gitleaksignore index aa04774..75e1687 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -64,3 +64,5 @@ cf6cd64b418ace3c970d6029924ebb6dda9eec69:scripts/deployment/globals_gnosis_mainn b43071abd7ec99b44cda56279b0df8f0c2eb617e:scripts/deployment/globals_base_mainnet_test.json:generic-api-key:1 cc8e19cb3e80831b83e808ce99c7663c829f4476:scripts/deployment/globals_base_mainnet_test.json:generic-api-key:1 9065b44d1180873f40f916178f7488d38ae092f7:scripts/deployment/globals_base_mainnet_test.json:generic-api-key:1 +62b20a62c6fbdabebc1566ad871cc1e9aa0b0b37:scripts/deployment/globals_base_mainnet_test.json:generic-api-key:1 +fc12c6214c593ed2ae5f4ff4295bc4622e814872:scripts/deployment/globals_base_mainnet_test.json:generic-api-key:1