Skip to content

Commit 9302446

Browse files
feat: improve safe nonce management
1 parent 3c252e3 commit 9302446

File tree

2 files changed

+10
-13
lines changed

2 files changed

+10
-13
lines changed

script/50_CoreAndPeriphery.s.sol

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
pragma solidity ^0.8.0;
44

55
import {BatchBuilder, Vm, console} from "./utils/ScriptUtils.s.sol";
6-
import {SafeMultisendBuilder, SafeTransaction, SafeUtil} from "./utils/SafeUtils.s.sol";
6+
import {SafeMultisendBuilder, SafeTransaction} from "./utils/SafeUtils.s.sol";
77
import {LayerZeroUtil} from "./utils/LayerZeroUtils.s.sol";
88
import {ERC20BurnableMintableDeployer, RewardTokenDeployer} from "./00_ERC20.s.sol";
99
import {Integrations} from "./01_Integrations.s.sol";
@@ -1030,14 +1030,7 @@ contract CoreAndPeriphery is BatchBuilder, SafeMultisendBuilder {
10301030
executeBatch();
10311031

10321032
if (multisendItemExists()) {
1033-
address safe = getSafe();
1034-
1035-
if (safeNonce == 0) {
1036-
SafeUtil util = new SafeUtil();
1037-
safeNonce = util.getNextNonce(safe);
1038-
}
1039-
1040-
executeMultisend(safe, safeNonce++);
1033+
executeMultisend(getSafe(), safeNonce++);
10411034
}
10421035

10431036
saveAddresses();

script/utils/ScriptUtils.s.sol

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {AmountCap, AmountCapLib} from "evk/EVault/shared/types/AmountCap.sol";
1818
import {IEVC} from "ethereum-vault-connector/interfaces/IEthereumVaultConnector.sol";
1919
import {IEVault, IGovernance} from "evk/EVault/IEVault.sol";
2020
import {EulerRouter, Governable} from "euler-price-oracle/EulerRouter.sol";
21-
import {SafeTransaction} from "./SafeUtils.s.sol";
21+
import {SafeTransaction, SafeUtil} from "./SafeUtils.s.sol";
2222
import {BaseFactory} from "../../src/BaseFactory/BaseFactory.sol";
2323
import {SnapshotRegistry} from "../../src/SnapshotRegistry/SnapshotRegistry.sol";
2424
import {BasePerspective} from "../../src/Perspectives/implementation/BasePerspective.sol";
@@ -407,7 +407,7 @@ abstract contract ScriptUtils is
407407
TokenAddresses internal tokenAddresses;
408408
GovernorAddresses internal governorAddresses;
409409
EulerSwapAddresses internal eulerSwapAddresses;
410-
uint256 internal safeNonce = getSafeNonce();
410+
uint256 internal safeNonce;
411411

412412
constructor() {
413413
multisigAddresses = deserializeMultisigAddresses(getAddressesJson("MultisigAddresses.json"));
@@ -419,6 +419,12 @@ abstract contract ScriptUtils is
419419
governorAddresses = deserializeGovernorAddresses(getAddressesJson("GovernorAddresses.json"));
420420
eulerSwapAddresses = deserializeEulerSwapAddresses(getAddressesJson("EulerSwapAddresses.json"));
421421
deserializeBridgeConfigCache(getBridgeConfigCacheJson("BridgeConfigCache.json"));
422+
423+
safeNonce = getSafeNonce();
424+
if (safeNonce == 0) {
425+
SafeUtil util = new SafeUtil();
426+
safeNonce = util.getNextNonce(getSafe());
427+
}
422428
}
423429

424430
modifier broadcast() {
@@ -944,8 +950,6 @@ abstract contract BatchBuilder is ScriptUtils {
944950

945951
dumpBatch(safe);
946952

947-
safeNonce = safeNonce == 0 ? transaction.getNextNonce(safe) : safeNonce;
948-
949953
if (timelock == address(0) || !allowTimelock) {
950954
console.log("Executing the batch via Safe (%s) using the EVC (%s)\n", safe, coreAddresses.evc);
951955
transaction.create(true, safe, coreAddresses.evc, getBatchValue(), getBatchCalldata(), safeNonce++);

0 commit comments

Comments
 (0)