diff --git a/.env.sample b/.env.sample index 8aa9c779..7baff038 100644 --- a/.env.sample +++ b/.env.sample @@ -8,7 +8,6 @@ BASE_SEPOLIA_RPC="https://rpc.ankr.com/base_sepolia" # EVMx key addresses # Find the most up to date addresses in deployments/dev_addresses.json ADDRESS_RESOLVER="0xf3046B22F98C25305E8040286fB1b33378BA10a1" -AUCTION_MANAGER="0x5d6d4DCb0F719F01441377F633F3EdD186e19360" FEES_MANAGER="0x603723100172D30171B7Fd9870ba80F8baf6FaD4" ARBITRUM_FEES_PLUG="0x89324F93d852cB4fcDC4Ee202456be466ce096bb" diff --git a/contracts/base/AppGatewayBase.sol b/contracts/base/AppGatewayBase.sol index f019ff3a..156f98bd 100644 --- a/contracts/base/AppGatewayBase.sol +++ b/contracts/base/AppGatewayBase.sol @@ -9,6 +9,7 @@ import "../interfaces/IPromise.sol"; import {FeesPlugin} from "../protocol/utils/FeesPlugin.sol"; import {InvalidPromise, FeesNotSet} from "../protocol/utils/common/Errors.sol"; +import {FAST} from "../protocol/utils/common/Constants.sol"; /// @title AppGatewayBase /// @notice Abstract contract for the app gateway @@ -51,12 +52,15 @@ abstract contract AppGatewayBase is AddressResolverUtil, IAppGateway, FeesPlugin /// @notice Constructor for AppGatewayBase /// @param addressResolver_ The address resolver address - constructor(address addressResolver_, address auctionManager_, bytes32 sbType_) { + constructor(address addressResolver_) { _setAddressResolver(addressResolver_); - auctionManager = auctionManager_; + sbType = FAST; + } + /// @notice Sets the switchboard type + /// @param sbType_ The switchboard type + function _setSbType(bytes32 sbType_) internal { sbType = sbType_; } - /// @notice Creates a contract ID /// @param contractName_ The contract name /// @return bytes32 The contract ID diff --git a/contracts/base/ProxyFactory.sol b/contracts/base/ProxyFactory.sol index d6dd269f..0f903337 100644 --- a/contracts/base/ProxyFactory.sol +++ b/contracts/base/ProxyFactory.sol @@ -4,4 +4,4 @@ import {ERC1967Factory} from "solady/utils/ERC1967Factory.sol"; contract ProxyFactory is ERC1967Factory { constructor() {} -} \ No newline at end of file +} diff --git a/contracts/interfaces/IAddressResolver.sol b/contracts/interfaces/IAddressResolver.sol index 89f5483a..a495af5d 100644 --- a/contracts/interfaces/IAddressResolver.sol +++ b/contracts/interfaces/IAddressResolver.sol @@ -22,6 +22,11 @@ interface IAddressResolver { /// @dev Returns interface pointing to zero address if not configured function feesManager() external view returns (address); + /// @notice Gets the address of the default auction manager contract + /// @return IAuctionManager The auction manager interface + /// @dev Returns interface pointing to zero address if not configured + function defaultAuctionManager() external view returns (address); + /// @notice Gets the watcher precompile contract interface /// @return IWatcherPrecompile The watcher precompile interface /// @dev Returns interface pointing to zero address if not configured diff --git a/contracts/protocol/AddressResolver.sol b/contracts/protocol/AddressResolver.sol index ab519e9f..82c329f4 100644 --- a/contracts/protocol/AddressResolver.sol +++ b/contracts/protocol/AddressResolver.sol @@ -46,8 +46,11 @@ abstract contract AddressResolverStorage is IAddressResolver { // slot 60 mapping(address => address) public override contractsToGateways; - // slots [61-110] reserved for gap - uint256[50] _gap_after; + // slot 61 + address public override defaultAuctionManager; + + // slots [62-110] reserved for gap + uint256[49] _gap_after; } /// @title AddressResolver Contract @@ -250,6 +253,12 @@ contract AddressResolver is AddressResolverStorage, Initializable, Ownable { feesManager = feesManager_; } + /// @notice Updates the address of the default auction manager + /// @param defaultAuctionManager_ The address of the default auction manager + function setDefaultAuctionManager(address defaultAuctionManager_) external onlyOwner { + defaultAuctionManager = defaultAuctionManager_; + } + /// @notice Updates the address of the watcher precompile contract /// @param watcherPrecompile_ The address of the watcher precompile contract function setWatcherPrecompile(address watcherPrecompile_) external onlyOwner { diff --git a/contracts/protocol/payload-delivery/app-gateway/BatchAsync.sol b/contracts/protocol/payload-delivery/app-gateway/BatchAsync.sol index f4415f3c..825a3149 100644 --- a/contracts/protocol/payload-delivery/app-gateway/BatchAsync.sol +++ b/contracts/protocol/payload-delivery/app-gateway/BatchAsync.sol @@ -63,6 +63,9 @@ abstract contract BatchAsync is QueueAsync { } // Default flow for other cases (including mixed read/write) + if (auctionManager_ == address(0)) { + auctionManager_ = IAddressResolver(addressResolver__).defaultAuctionManager(); + } return _deliverPayload(payloadDetailsArray, fees_, auctionManager_, onCompleteData_); } @@ -311,6 +314,9 @@ abstract contract BatchAsync is QueueAsync { amount_, receiver_ ); + if (auctionManager_ == address(0)) { + auctionManager_ = IAddressResolver(addressResolver__).defaultAuctionManager(); + } _deliverPayload(payloadDetailsArray, fees_, auctionManager_, new bytes(0)); } } diff --git a/contracts/protocol/payload-delivery/app-gateway/DeliveryHelper.sol b/contracts/protocol/payload-delivery/app-gateway/DeliveryHelper.sol index df7cb9bc..c3e5de15 100644 --- a/contracts/protocol/payload-delivery/app-gateway/DeliveryHelper.sol +++ b/contracts/protocol/payload-delivery/app-gateway/DeliveryHelper.sol @@ -62,6 +62,7 @@ contract DeliveryHelper is BatchAsync { if (payloadBatch.lastBatchPromises.length > 0) { // Check if all promises are resolved for (uint256 i = 0; i < payloadBatch.lastBatchPromises.length; i++) { + if (payloadBatch.lastBatchPromises[i] == address(0)) continue; if (!IPromise(payloadBatch.lastBatchPromises[i]).resolved()) { if (isCallback_) revert PromisesNotResolved(); } diff --git a/contracts/protocol/utils/common/Structs.sol b/contracts/protocol/utils/common/Structs.sol index 64c03016..3774291b 100644 --- a/contracts/protocol/utils/common/Structs.sol +++ b/contracts/protocol/utils/common/Structs.sol @@ -1,6 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.21; +//// ENUMS //// + enum CallType { READ, WRITE, @@ -8,9 +10,9 @@ enum CallType { WITHDRAW } -enum Read { - OFF, - ON +enum IsPlug { + YES, + NO } enum Parallel { @@ -18,11 +20,13 @@ enum Parallel { ON } -enum IsPlug { - YES, - NO +enum Read { + OFF, + ON } +//// STRUCTS //// + struct AppGatewayConfig { address plug; address appGateway; @@ -44,21 +48,25 @@ struct AsyncRequest { address[] next; } +struct AttestAndExecutePayloadParams { + bytes32 payloadId; + bytes32 digest; + address switchboard; + address appGateway; + address target; + uint256 executionGasLimit; + uint256 deadline; + bytes proof; + bytes transmitterSignature; + bytes payload; +} + struct Bid { address transmitter; uint256 fee; bytes extraData; } -struct CallFromChainParams { - bytes32 callId; - bytes32 params; - address plug; - address appGateway; - uint32 chainSlug; - bytes payload; -} - struct CallParams { IsPlug isPlug; address asyncPromise; @@ -72,24 +80,20 @@ struct CallParams { bytes initCallData; } +struct CallFromChainParams { + bytes32 callId; + bytes32 params; + address plug; + address appGateway; + uint32 chainSlug; + bytes payload; +} + struct DeployParams { address contractAddr; bytes bytecode; } -struct AttestAndExecutePayloadParams { - bytes32 payloadId; - bytes32 digest; - address switchboard; - address appGateway; - address target; - uint256 executionGasLimit; - uint256 deadline; - bytes proof; - bytes transmitterSignature; - bytes payload; -} - struct Fees { uint32 feePoolChain; address feePoolToken; diff --git a/hardhat-scripts/deploy/1.deploy.ts b/hardhat-scripts/deploy/1.deploy.ts index f00e6fad..645e82f7 100644 --- a/hardhat-scripts/deploy/1.deploy.ts +++ b/hardhat-scripts/deploy/1.deploy.ts @@ -172,6 +172,14 @@ const deployEVMxContracts = async () => { deployUtils.signer ); + await updateContractSettings( + addressResolver, + "defaultAuctionManager", + "setDefaultAuctionManager", + deployUtils.addresses[EVMxCoreContracts.AuctionManager], + deployUtils.signer + ); + await updateContractSettings( addressResolver, "watcherPrecompile__", diff --git a/hardhat-scripts/deploy/5.upload.ts b/hardhat-scripts/deploy/5.upload.ts index 1e08325e..b6d5aebb 100644 --- a/hardhat-scripts/deploy/5.upload.ts +++ b/hardhat-scripts/deploy/5.upload.ts @@ -1,9 +1,10 @@ import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3"; import { ChainAddressesObj, - EVMxAddressesObj, - ChainSlug, DeploymentMode, + EVMxAddressesObj, + chainSlugToHardhatChainName, + ChainSlug } from "@socket.tech/socket-protocol-common"; import { config as dotenvConfig } from "dotenv"; import fs from "fs"; @@ -58,52 +59,35 @@ type ConfigEntry = { eventBlockRange: number; addresses?: ChainAddressesObj | EVMxAddressesObj; }; - type S3Config = { [chainId: string]: ConfigEntry; }; + +const supportedChainSlugs = [EVMX_CHAIN_ID as ChainSlug, ...chains]; + export let config: S3Config = { - [ChainSlug.ARBITRUM_SEPOLIA]: { - eventBlockRangePerCron: 5000, - rpc: process.env.ARBITRUM_SEPOLIA_RPC, - wssRpc: process.env.ARBITRUM_SEPOLIA_WSS_RPC, - confirmations: 0, - eventBlockRange: 5000, - }, - [ChainSlug.OPTIMISM_SEPOLIA]: { - eventBlockRangePerCron: 5000, - rpc: process.env.OPTIMISM_SEPOLIA_RPC, - wssRpc: process.env.OPTIMISM_SEPOLIA_WSS_RPC, - confirmations: 0, - eventBlockRange: 5000, - }, - [ChainSlug.SEPOLIA]: { - eventBlockRangePerCron: 5000, - rpc: process.env.SEPOLIA_RPC, - wssRpc: process.env.SEPOLIA_WSS_RPC, - confirmations: 0, - eventBlockRange: 5000, - }, - [EVMX_CHAIN_ID]: { - eventBlockRangePerCron: 5000, - rpc: process.env.EVMX_RPC, - wssRpc: process.env.EVMX_WSS_RPC, - confirmations: 0, - eventBlockRange: 5000, - }, - [ChainSlug.BASE_SEPOLIA]: { + //@ts-ignore + supportedChainSlugs, +}; + +// Add config for each supported chain +supportedChainSlugs.forEach(chainSlug => { + let chainName = + chainSlug === EVMX_CHAIN_ID ? "EVMX" : chainSlugToHardhatChainName[chainSlug].toString().replace("-", "_"); + let rpcKey = `${chainName.toUpperCase()}_RPC`; + let wssRpcKey = `${chainName.toUpperCase()}_WSS_RPC`; + if (!process.env[rpcKey] || !process.env[wssRpcKey]) { + console.log(`Missing RPC or WSS RPC for chain ${chainName}`); + return; + } + config[chainSlug] = { eventBlockRangePerCron: 5000, - rpc: process.env.BASE_SEPOLIA_RPC, - wssRpc: process.env.BASE_SEPOLIA_WSS_RPC, + rpc: process.env[rpcKey], + wssRpc: process.env[wssRpcKey], confirmations: 0, eventBlockRange: 5000, - }, - //@ts-ignore - supportedChainSlugs: [ - ...chains, - EVMX_CHAIN_ID, - ], -}; + }; +}); // Read the addresses.json file const addressesPath = path.join(__dirname, getAddressesPath()); const addresses = JSON.parse(fs.readFileSync(addressesPath, "utf8")); diff --git a/package.json b/package.json index 505ed586..aee7ad7e 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@aws-sdk/client-s3": "^3.670.0", "@nomicfoundation/hardhat-verify": "^2.0.12", "@nomiclabs/hardhat-ethers": "2.2.3", - "@socket.tech/socket-protocol-common": "1.1.27", + "@socket.tech/socket-protocol-common": "1.1.31", "@typechain/ethers-v5": "^10.0.0", "@typechain/hardhat": "6.0.0", "dotenv": "^16.0.3", diff --git a/script/counter/DeployEVMxCounterApp.s.sol b/script/counter/DeployEVMxCounterApp.s.sol index 922baacd..05d9af02 100644 --- a/script/counter/DeployEVMxCounterApp.s.sol +++ b/script/counter/DeployEVMxCounterApp.s.sol @@ -5,12 +5,11 @@ import {Script} from "forge-std/Script.sol"; import {console} from "forge-std/console.sol"; import {CounterAppGateway} from "../../test/apps/app-gateways/counter/CounterAppGateway.sol"; import {Fees} from "../../contracts/protocol/utils/common/Structs.sol"; -import {ETH_ADDRESS, FAST} from "../../contracts/protocol/utils/common/Constants.sol"; +import {ETH_ADDRESS} from "../../contracts/protocol/utils/common/Constants.sol"; contract CounterDeploy is Script { function run() external { address addressResolver = vm.envAddress("ADDRESS_RESOLVER"); - address auctionManager = vm.envAddress("AUCTION_MANAGER"); string memory rpc = vm.envString("EVMX_RPC"); vm.createSelectFork(rpc); @@ -26,8 +25,6 @@ contract CounterDeploy is Script { CounterAppGateway gateway = new CounterAppGateway( addressResolver, - auctionManager, - FAST, fees ); diff --git a/test/DeliveryHelper.t.sol b/test/DeliveryHelper.t.sol index 04dc0d3e..597c113f 100644 --- a/test/DeliveryHelper.t.sol +++ b/test/DeliveryHelper.t.sol @@ -60,22 +60,6 @@ contract DeliveryHelperTest is SetupTest { feesManagerData ); - bytes memory deliveryHelperData = abi.encodeWithSelector( - DeliveryHelper.initialize.selector, - address(addressResolver), - address(feesManagerProxy), - owner, - bidTimeout - ); - - vm.expectEmit(true, true, true, false); - emit Initialized(version); - address deliveryHelperProxy = proxyFactory.deployAndCall( - address(deliveryHelperImpl), - watcherEOA, - deliveryHelperData - ); - bytes memory auctionManagerData = abi.encodeWithSelector( AuctionManager.initialize.selector, evmxSlug, @@ -92,16 +76,31 @@ contract DeliveryHelperTest is SetupTest { auctionManagerData ); + bytes memory deliveryHelperData = abi.encodeWithSelector( + DeliveryHelper.initialize.selector, + address(addressResolver), + owner, + bidTimeout + ); + + vm.expectEmit(true, true, true, false); + emit Initialized(version); + address deliveryHelperProxy = proxyFactory.deployAndCall( + address(deliveryHelperImpl), + watcherEOA, + deliveryHelperData + ); + // Assign proxy addresses to contract variables feesManager = FeesManager(address(feesManagerProxy)); deliveryHelper = DeliveryHelper(address(deliveryHelperProxy)); auctionManager = AuctionManager(address(auctionManagerProxy)); - hoax(watcherEOA); + vm.startPrank(watcherEOA); addressResolver.setDeliveryHelper(address(deliveryHelper)); - - hoax(watcherEOA); + addressResolver.setDefaultAuctionManager(address(auctionManager)); addressResolver.setFeesManager(address(feesManager)); + vm.stopPrank(); // chain core contracts arbConfig = deploySocket(arbChainSlug); diff --git a/test/FeesTest.t.sol b/test/FeesTest.t.sol index c04b7a85..793b4622 100644 --- a/test/FeesTest.t.sol +++ b/test/FeesTest.t.sol @@ -22,8 +22,6 @@ contract FeesTest is DeliveryHelperTest { counterGateway = new CounterAppGateway( address(addressResolver), - address(auctionManager), - FAST, createFees(feesAmount) ); depositFees(address(counterGateway), createFees(depositAmount)); diff --git a/test/Inbox.t.sol b/test/Inbox.t.sol index 4d01a599..07bad0a5 100644 --- a/test/Inbox.t.sol +++ b/test/Inbox.t.sol @@ -20,8 +20,6 @@ contract InboxTest is DeliveryHelperTest { // Deploy the gateway with fees gateway = new CounterAppGateway( address(addressResolver), - address(auctionManager), - FAST, createFees(feesAmount) ); gateway.setIsValidPlug(arbChainSlug, address(inbox)); diff --git a/test/SetupTest.t.sol b/test/SetupTest.t.sol index 8103bbd6..fa419020 100644 --- a/test/SetupTest.t.sol +++ b/test/SetupTest.t.sol @@ -140,11 +140,10 @@ contract SetupTest is Test { addressResolver = AddressResolver(address(addressResolverProxy)); watcherPrecompile = WatcherPrecompile(address(watcherPrecompileProxy)); - hoax(watcherEOA); + vm.startPrank(watcherEOA); watcherPrecompile.grantRole(WATCHER_ROLE, watcherEOA); - - hoax(watcherEOA); addressResolver.setWatcherPrecompile(address(watcherPrecompile)); + vm.stopPrank(); } function _createSignature( diff --git a/test/Storage.t.sol b/test/Storage.t.sol index 25b684e0..89b5b3b9 100644 --- a/test/Storage.t.sol +++ b/test/Storage.t.sol @@ -14,6 +14,10 @@ contract StorageTest is DeliveryHelperTest { // Test AddressResolver version at slot 59 bytes32 versionSlot = vm.load(address(addressResolver), bytes32(uint256(59))); assertEq(uint64(uint256(versionSlot)), 1); + + // Test auction manager address at slot 61 in AddressResolver + bytes32 slotValue = vm.load(address(addressResolver), bytes32(uint256(61))); + assertEq(address(uint160(uint256(slotValue))), address(auctionManager)); } function testWatcherPrecompileSlot() public view { diff --git a/test/apps/Counter.t.sol b/test/apps/Counter.t.sol index 0d3304ca..cd029d40 100644 --- a/test/apps/Counter.t.sol +++ b/test/apps/Counter.t.sol @@ -18,8 +18,6 @@ contract CounterTest is DeliveryHelperTest { counterGateway = new CounterAppGateway( address(addressResolver), - address(auctionManager), - FAST, createFees(feesAmount) ); depositFees(address(counterGateway), createFees(1 ether)); diff --git a/test/apps/ParallelCounter.t.sol b/test/apps/ParallelCounter.t.sol index beec26e5..56261031 100644 --- a/test/apps/ParallelCounter.t.sol +++ b/test/apps/ParallelCounter.t.sol @@ -18,8 +18,6 @@ contract ParallelCounterTest is DeliveryHelperTest { parallelCounterGateway = new CounterAppGateway( address(addressResolver), - address(auctionManager), - FAST, createFees(feesAmount) ); depositFees(address(parallelCounterGateway), createFees(1 ether)); diff --git a/test/apps/SuperToken.t.sol b/test/apps/SuperToken.t.sol index c3c98bdb..34b438ac 100644 --- a/test/apps/SuperToken.t.sol +++ b/test/apps/SuperToken.t.sol @@ -64,9 +64,7 @@ contract SuperTokenTest is DeliveryHelperTest { function deploySuperTokenApp() internal { SuperTokenAppGateway superTokenApp = new SuperTokenAppGateway( address(addressResolver), - address(auctionManager), owner, - FAST, createFees(maxFees), SuperTokenAppGateway.ConstructorParams({ name_: "SUPER TOKEN", diff --git a/test/apps/SuperTokenLockable.t.sol b/test/apps/SuperTokenLockable.t.sol index aee20b19..b1161169 100644 --- a/test/apps/SuperTokenLockable.t.sol +++ b/test/apps/SuperTokenLockable.t.sol @@ -34,9 +34,7 @@ contract SuperTokenLockableTest is DeliveryHelperTest { function deploySuperTokenApp() internal { SuperTokenLockableAppGateway superTokenLockableApp = new SuperTokenLockableAppGateway( address(addressResolver), - address(auctionManager), owner, - FAST, createFees(maxFees), SuperTokenLockableAppGateway.ConstructorParams({ _burnLimit: 10000000000000000000000, diff --git a/test/apps/app-gateways/counter/CounterAppGateway.sol b/test/apps/app-gateways/counter/CounterAppGateway.sol index 1b73aa47..bb415e70 100644 --- a/test/apps/app-gateways/counter/CounterAppGateway.sol +++ b/test/apps/app-gateways/counter/CounterAppGateway.sol @@ -19,10 +19,8 @@ contract CounterAppGateway is AppGatewayBase, Ownable { constructor( address addressResolver_, - address auctionManager_, - bytes32 sbType_, Fees memory fees_ - ) AppGatewayBase(addressResolver_, auctionManager_, sbType_) { + ) AppGatewayBase(addressResolver_) { creationCodeWithArgs[counter] = abi.encodePacked(type(Counter).creationCode); creationCodeWithArgs[counter1] = abi.encodePacked(type(Counter).creationCode); _setOverrides(fees_); diff --git a/test/apps/app-gateways/super-token-lockable/SuperTokenLockableAppGateway.sol b/test/apps/app-gateways/super-token-lockable/SuperTokenLockableAppGateway.sol index cb9fb514..e20bca57 100644 --- a/test/apps/app-gateways/super-token-lockable/SuperTokenLockableAppGateway.sol +++ b/test/apps/app-gateways/super-token-lockable/SuperTokenLockableAppGateway.sol @@ -33,12 +33,10 @@ contract SuperTokenLockableAppGateway is AppGatewayBase, Ownable { constructor( address addressResolver_, - address auctionManager_, address owner_, - bytes32 sbType_, Fees memory fees_, ConstructorParams memory params - ) AppGatewayBase(addressResolver_, auctionManager_, sbType_) { + ) AppGatewayBase(addressResolver_) { creationCodeWithArgs[superTokenLockable] = abi.encodePacked( type(SuperTokenLockable).creationCode, abi.encode( diff --git a/test/apps/app-gateways/super-token/SuperTokenAppGateway.sol b/test/apps/app-gateways/super-token/SuperTokenAppGateway.sol index 1b73ac90..08fd2eac 100644 --- a/test/apps/app-gateways/super-token/SuperTokenAppGateway.sol +++ b/test/apps/app-gateways/super-token/SuperTokenAppGateway.sol @@ -29,12 +29,10 @@ contract SuperTokenAppGateway is AppGatewayBase, Ownable { constructor( address addressResolver_, - address auctionManager_, address owner_, - bytes32 sbType_, Fees memory fees_, ConstructorParams memory params_ - ) AppGatewayBase(addressResolver_, auctionManager_, sbType_) { + ) AppGatewayBase(addressResolver_) { creationCodeWithArgs[superToken] = abi.encodePacked( type(SuperToken).creationCode, abi.encode( diff --git a/testScript.sh b/testScript.sh index d1515c5b..c3a1f30c 100644 --- a/testScript.sh +++ b/testScript.sh @@ -57,5 +57,5 @@ source .env && forge script script/admin/UpdateLimits.s.sol --broadcast --skip-s # add fees -source .env && forge script script/PayFeesInArbitrumETH.s.sol --broadcast --skip-simulation -source .env && forge script script/AppGatewayFeeBalance.s.sol +source .env && forge script script/helpers/PayFeesInArbitrumETH.s.sol --broadcast --skip-simulation +source .env && forge script script/helpers/AppGatewayFeeBalance.s.sol diff --git a/yarn.lock b/yarn.lock index c90b952e..3cf308a7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2071,16 +2071,22 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@socket.tech/socket-protocol-common@1.1.27": - version "1.1.27" - resolved "https://registry.yarnpkg.com/@socket.tech/socket-protocol-common/-/socket-protocol-common-1.1.27.tgz#62f1ecee76f9496e98095545a05a03b93bcb3423" - integrity sha512-6zZYNoU0N9dS1UMR0AXBYIqFO84HPopTTxOfM5WTJvOKTiAl/OODza499tOS6o6va/eyaiOaICYW27GoIBJXYw== +"@socket.tech/socket-protocol-common@1.1.31": + version "1.1.31" + resolved "https://registry.yarnpkg.com/@socket.tech/socket-protocol-common/-/socket-protocol-common-1.1.31.tgz#d95b1b6caf69a11c6bd13b18b7871c57e7d283fb" + integrity sha512-Hp1er4kRqCfeuvQFFgxooT0XBbO4nBrpL8/SYB/BNMdWfR9hk6PVE8MUnoIqTUJJTvIePKk+GOajl8MVqPD3VQ== dependencies: + "@socket.tech/socket-protocol" "^1.0.15" axios "^1.7.9" ethers "^5.6.5" pino "^9.6.0" sequelize "^6.21.6" +"@socket.tech/socket-protocol@^1.0.15": + version "1.0.15" + resolved "https://registry.yarnpkg.com/@socket.tech/socket-protocol/-/socket-protocol-1.0.15.tgz#091eaaf954a58658fa74370880a6fe54f09a7ee8" + integrity sha512-aBDYdpFkQro+NVNGUbridJQbtGSEk9ZoqMmtRPA+ti0gT0X2ZAryta0lS2TfqsL4sF2fqbmz1Vd+IuK3wb5dTg== + "@solidity-parser/parser@^0.19.0": version "0.19.0" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.19.0.tgz#37a8983b2725af9b14ff8c4a475fa0e98d773c3f"