diff --git a/.gitignore b/.gitignore index 86c4727c..684da944 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ src/types typechain-types/ .env +.env.* .DS_Store .gas-snapshot/ @@ -26,8 +27,9 @@ broadcast/ .cursorrules -deployments/local_addresses.json -deployments/local_verification.json +deployments/local_addresses*.json +deployments/local_verification*.json +deployments/stage_addresses_*.json testScript.sh CLAUDE.md diff --git a/contracts/evmx/fees/Credit.sol b/contracts/evmx/fees/Credit.sol index c62140b1..50833439 100644 --- a/contracts/evmx/fees/Credit.sol +++ b/contracts/evmx/fees/Credit.sol @@ -65,7 +65,6 @@ abstract contract FeesManagerStorage is IFeesManager { ForwarderSolana public forwarderSolana; - bytes32 public susdcSolanaProgramId; bytes32 public feesPlugSolanaProgramId; // slots [60-107] reserved for gap diff --git a/contracts/evmx/fees/FeesManager.sol b/contracts/evmx/fees/FeesManager.sol index 69ce7ee4..7da63b08 100644 --- a/contracts/evmx/fees/FeesManager.sol +++ b/contracts/evmx/fees/FeesManager.sol @@ -68,10 +68,6 @@ contract FeesManager is Credit { feesPlugSolanaProgramId = feesPlugSolanaProgramId_; } - function setSusdcSolanaProgramId(bytes32 susdcSolanaProgramId_) external onlyOwner { - susdcSolanaProgramId = susdcSolanaProgramId_; - } - function setChainMaxFees( uint32[] calldata chainSlugs_, uint256[] calldata maxFees_ diff --git a/contracts/evmx/interfaces/IWatcher.sol b/contracts/evmx/interfaces/IWatcher.sol index 95cf217a..b0e2f4f0 100644 --- a/contracts/evmx/interfaces/IWatcher.sol +++ b/contracts/evmx/interfaces/IWatcher.sol @@ -29,6 +29,8 @@ interface IWatcher is IConfigurations { function transmitter() external view returns (address); + function transmitterSolana() external view returns (bytes32); + function isNonceUsed(uint256 nonce) external view returns (bool); function triggerFromChainSlug() external view returns (uint32); diff --git a/contracts/evmx/watcher/Watcher.sol b/contracts/evmx/watcher/Watcher.sol index 898baf1a..bd849fe2 100644 --- a/contracts/evmx/watcher/Watcher.sol +++ b/contracts/evmx/watcher/Watcher.sol @@ -33,6 +33,7 @@ contract Watcher is Initializable, Configurations, Pausable { address public latestAppGateway; RawPayload public payloadData; address public transmitter; + bytes32 public transmitterSolana; error PayloadAlreadyCancelled(); error PayloadAlreadySettled(); @@ -48,10 +49,12 @@ contract Watcher is Initializable, Configurations, Pausable { address owner_, address addressResolver_, address transmitter_, + bytes32 transmitterSolana_, uint256 triggerFees_ ) external reinitializer(1) { evmxSlug = evmxSlug_; transmitter = transmitter_; + transmitterSolana = transmitterSolana_; triggerFees = triggerFees_; _initializeOwner(owner_); _setAddressResolver(addressResolver_); diff --git a/contracts/evmx/watcher/precompiles/WritePrecompile.sol b/contracts/evmx/watcher/precompiles/WritePrecompile.sol index 9a01ff7b..95a1e46d 100644 --- a/contracts/evmx/watcher/precompiles/WritePrecompile.sol +++ b/contracts/evmx/watcher/precompiles/WritePrecompile.sol @@ -271,17 +271,10 @@ contract WritePrecompile is WritePrecompileStorage, Initializable, Ownable { functionArgsPacked ); - // TODO: this is temporary, must be injected from function arguments - // bytes32 of Solana Socket address : 9vFEQ5e3xf4eo17WttfqmXmnqN3gUicrhFGppmmNwyqV - bytes32 hardcodedSocket = 0x84815e8ca2f6dad7e12902c39a51bc72e13c48139b4fb10025d94e7abea2969c; - // bytes32 of Solana transmitter address : pFCBP4bhqdSsrWUVTgqhPsLrfEdChBK17vgFM7TxjxQ - bytes32 transmitterSolana = 0x0c1a5886fe1093df9fc438c296f9f7275b7718b6bc0e156d8d336c58f083996d; return DigestParams( - // watcherPrecompileConfig__.sockets(params_.payloadHeader.getChainSlug()), // TODO: this does not work, for some reason it returns 0x000.... address - hardcodedSocket, - // toBytes32Format(transmitter_), - transmitterSolana, + watcher__.sockets(rawPayload_.transaction.chainSlug), + watcher__.transmitterSolana(), payloadId_, deadline_, rawPayload_.overrideParams.callType, diff --git a/deprecated/test/SetupTest.t.sol b/deprecated/test/SetupTest.t.sol index bb0e18ed..2578dffa 100644 --- a/deprecated/test/SetupTest.t.sol +++ b/deprecated/test/SetupTest.t.sol @@ -418,9 +418,11 @@ contract DeploySetup is SetupStore { abi.encodeWithSelector( Watcher.initialize.selector, evmxSlug, - triggerFees, watcherEOA, - address(addressResolver) + address(addressResolver), + transmitterEOA, + bytes32(0), // transmitterSolana - using 0 for now + triggerFees ) ); watcher = Watcher(watcherProxy); diff --git a/hardhat-scripts/deploy/1.deploy.ts b/hardhat-scripts/deploy/1.deploy.ts index 35e6792a..cb0bd98c 100644 --- a/hardhat-scripts/deploy/1.deploy.ts +++ b/hardhat-scripts/deploy/1.deploy.ts @@ -182,6 +182,7 @@ const deployEVMxContracts = async () => { EVMxOwner, addressResolver.address, transmitter, + "0x0000000000000000000000000000000000000000000000000000000000000000", // transmitterSolana - using 0 for now TRIGGER_FEES, ], proxyFactory, diff --git a/lib/forge-std b/lib/forge-std index 1eea5bae..f9062359 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 1eea5bae12ae557d589f9f0f0edae2faa47cb262 +Subproject commit f90623596aecbf678c41d4d45ca81ce0e43c8219 diff --git a/lib/solady b/lib/solady index 6c2d0da6..836c169f 160000 --- a/lib/solady +++ b/lib/solady @@ -1 +1 @@ -Subproject commit 6c2d0da6397e3c016aabc3f298de1b92c6ce7405 +Subproject commit 836c169fe357b3c23ad5d5755a9b4fbbfad7a99b diff --git a/script/counter/DeployCounterPlug.s.sol b/script/counter/DeployCounterPlug.s.sol index 065d404a..5ba86cb0 100644 --- a/script/counter/DeployCounterPlug.s.sol +++ b/script/counter/DeployCounterPlug.s.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.21; import {Script} from "forge-std/Script.sol"; import {console} from "forge-std/console.sol"; import {Counter} from "../../test/apps/counter/Counter.sol"; -import {toBytes32Format} from "../../../../contracts/utils/common/Converters.sol"; +import {toBytes32Format} from "../../contracts/utils/common/Converters.sol"; // source .env && forge script script/counter/DeployCounterPlug.s.sol --broadcast --skip-simulation contract DeployCounterPlug is Script { diff --git a/script/counter/IncrementCountersFromApp.s.sol b/script/counter/IncrementCountersFromApp.s.sol index 2014aa22..ab66b4e1 100644 --- a/script/counter/IncrementCountersFromApp.s.sol +++ b/script/counter/IncrementCountersFromApp.s.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.21; import {Script} from "forge-std/Script.sol"; import {console} from "forge-std/console.sol"; import {CounterAppGateway} from "../../test/apps/counter/CounterAppGateway.sol"; -import {toBytes32Format} from "../../../../contracts/utils/common/Converters.sol"; +import {toBytes32Format} from "../../contracts/utils/common/Converters.sol"; // source .env && forge script script/counter/IncrementCountersFromApp.s.sol --broadcast --skip-simulation // source .env && cast send 0x1Bb3770C1e25Ff498Cb25E4f91481E610428f0fd "incrementCounters(address)" '0x4382D89Db86dBFBDa96366E4029Ca962E01c232F' --private-key $PRIVATE_KEY diff --git a/test/SetupTest.t.sol b/test/SetupTest.t.sol index 48f5f7fe..4aa32498 100644 --- a/test/SetupTest.t.sol +++ b/test/SetupTest.t.sol @@ -306,6 +306,7 @@ contract DeploySetup is SetupStore { watcherEOA, address(addressResolver), address(transmitterEOA), + bytes32(0), // transmitterSolana - using 0 for now triggerFees ) );