Skip to content

Commit

Permalink
Update deployment script (#172)
Browse files Browse the repository at this point in the history
* Remove  from the Validator struct

* forge fmt

* Fix deploy to anvil, remove cancelRegistration

* remove unused dependency

* remove solady

* remove dead code

* update readme

* update guardian signature

* snapshot

* solhint fix

* Update scripts

* Update pufETH repo, refactor permit struct

* solhint fix

* update comments

---------

Co-authored-by: JasonVranek <[email protected]>
  • Loading branch information
bxmmm1 and JasonVranek authored Feb 20, 2024
1 parent 778054b commit 737fcbe
Show file tree
Hide file tree
Showing 32 changed files with 256 additions and 622 deletions.
179 changes: 83 additions & 96 deletions .gas-snapshot
Original file line number Diff line number Diff line change
@@ -1,100 +1,87 @@
EigenPodRewards:testNoRestakingRewardsClaiming() (gas: 777225)
EnclaveVerifierTest:testAddLeafX509() (gas: 193061)
EnclaveVerifierTest:testRaveEvidence1() (gas: 901153)
EnclaveVerifierTest:testRaveEvidence2() (gas: 901196)
EigenPodRewards:testNoRestakingRewardsClaiming() (gas: 777449)
EnclaveVerifierTest:testAddLeafX509() (gas: 193062)
EnclaveVerifierTest:testRaveEvidence1() (gas: 901175)
EnclaveVerifierTest:testRaveEvidence2() (gas: 901130)
EnclaveVerifierTest:testRaveEvidence3() (gas: 901150)
EnclaveVerifierTest:testRemoveLeafX509() (gas: 200998)
EnclaveVerifierTest:testSetup() (gas: 89268)
EnclaveVerifierTest:testVerifyingStaleEvidence() (gas: 739311)
GuardianModuleTest:testAddGuardian(address) (runs: 256, μ: 133524, ~: 133524)
GuardianModuleTest:testChangeThreshold() (gas: 35386)
GuardianModuleTest:testChangeThresholdReverts() (gas: 27703)
GuardianModuleTest:testPostWithdrawalsRootReverts(address[],uint256[]) (runs: 256, μ: 84793, ~: 86424)
GuardianModuleTest:testRave() (gas: 69921368)
GuardianModuleTest:testRemoveGuardian(address) (runs: 256, μ: 113383, ~: 113367)
EnclaveVerifierTest:testRemoveLeafX509() (gas: 200977)
EnclaveVerifierTest:testSetup() (gas: 89247)
EnclaveVerifierTest:testVerifyingStaleEvidence() (gas: 739290)
GuardianModuleTest:testAddGuardian(address) (runs: 256, μ: 133942, ~: 133942)
GuardianModuleTest:testChangeThreshold() (gas: 35364)
GuardianModuleTest:testChangeThresholdReverts() (gas: 27659)
GuardianModuleTest:testPostWithdrawalsRootReverts(address[],uint256[]) (runs: 256, μ: 84728, ~: 86359)
GuardianModuleTest:testRave() (gas: 117386099)
GuardianModuleTest:testRemoveGuardian(address) (runs: 256, μ: 114105, ~: 114088)
GuardianModuleTest:testRotateGuardianKeyFromNonGuardianReverts() (gas: 12201)
GuardianModuleTest:testRotateGuardianKeyWithInvalidRaveReverts() (gas: 843560)
GuardianModuleTest:testRotateGuardianToInvalidPubKeyReverts() (gas: 14683)
GuardianModuleTest:testSplitFunds() (gas: 125793)
GuardianModuleTest:testSplitFundsRounding() (gas: 130017)
GuardianModuleTest:testValidateSkipProvisioningReverts() (gas: 29704)
GuardianModuleTest:testRotateGuardianKeyWithInvalidRaveReverts() (gas: 843516)
GuardianModuleTest:testRotateGuardianToInvalidPubKeyReverts() (gas: 14706)
GuardianModuleTest:testSplitFunds() (gas: 126256)
GuardianModuleTest:testSplitFundsRounding() (gas: 130854)
GuardianModuleTest:testValidateSkipProvisioningReverts() (gas: 29705)
LibBeaconChainTest:testUpdatedVersion(bytes32) (runs: 256, μ: 24088, ~: 24088)
NoRestakingModuleTest:testClaimingMultipleProofs() (gas: 250655)
NoRestakingModuleTest:testCollectRewards() (gas: 254929)
NoRestakingModuleTest:testCollectRewardsRevertsForZeroValues() (gas: 28228)
NoRestakingModuleTest:testDonation() (gas: 11855)
NoRestakingModuleTest:testDoubleClaimInSameTransaction() (gas: 196173)
NoRestakingModuleTest:testPostRewardsRoot(bytes32,uint256) (runs: 256, μ: 103848, ~: 103848)
NoRestakingModuleTest:testPostRewardsRootReverts(address,bytes32,uint256) (runs: 256, μ: 41986, ~: 42519)
NoRestakingModuleTest:testPostingRewardsForSameBlockReverts() (gas: 106249)
NoRestakingModuleTest:testRewardsClaimingForAnotherUser(address) (runs: 256, μ: 264135, ~: 264135)
NoRestakingModuleTest:testSetup() (gas: 16008)
PufferModuleTest:testBeaconUpgrade() (gas: 379702)
PufferModuleTest:testCollectNoRestakingRewards(bytes32) (runs: 256, μ: 1223173, ~: 1223173)
PufferModuleTest:testCreatePufferModule(bytes32) (runs: 256, μ: 303410, ~: 303410)
PufferModuleTest:testDonation(bytes32) (runs: 256, μ: 309589, ~: 309589)
PufferModuleTest:testPostRewardsRoot(bytes32,uint256) (runs: 256, μ: 395172, ~: 395172)
PufferModuleTest:testPostRewardsRootReverts(bytes32,address,bytes32,uint256) (runs: 256, μ: 328147, ~: 328834)
NoRestakingModuleTest:testClaimingMultipleProofs() (gas: 250640)
NoRestakingModuleTest:testCollectRewards() (gas: 257753)
NoRestakingModuleTest:testCollectRewardsRevertsForZeroValues() (gas: 28118)
NoRestakingModuleTest:testDonation() (gas: 11878)
NoRestakingModuleTest:testDoubleClaimInSameTransaction() (gas: 196031)
NoRestakingModuleTest:testPostRewardsRoot(bytes32,uint256) (runs: 256, μ: 103888, ~: 103888)
NoRestakingModuleTest:testPostRewardsRootReverts(address,bytes32,uint256) (runs: 256, μ: 42077, ~: 42612)
NoRestakingModuleTest:testPostingRewardsForSameBlockReverts() (gas: 106179)
NoRestakingModuleTest:testRewardsClaimingForAnotherUser(address) (runs: 256, μ: 264099, ~: 264099)
NoRestakingModuleTest:testSetup() (gas: 15987)
PufferModuleTest:testBeaconUpgrade() (gas: 379881)
PufferModuleTest:testCollectNoRestakingRewards(bytes32) (runs: 256, μ: 1221415, ~: 1221415)
PufferModuleTest:testCreatePufferModule(bytes32) (runs: 256, μ: 303568, ~: 303568)
PufferModuleTest:testDonation(bytes32) (runs: 256, μ: 309768, ~: 309768)
PufferModuleTest:testPostRewardsRoot(bytes32,uint256) (runs: 256, μ: 395499, ~: 395499)
PufferModuleTest:testPostRewardsRootReverts(bytes32,address,bytes32,uint256) (runs: 256, μ: 328412, ~: 329102)
PufferPoolIntegrationTest:testMulticallStrategyDepositOnGoerli() (gas: 302738)
PufferPoolTest:testBurn(address) (runs: 256, μ: 104773, ~: 104758)
PufferPoolTest:testDeposit(address,uint256) (runs: 256, μ: 145055, ~: 145172)
PufferPoolTest:testDepositAndRedeemRoundingError(address,uint256) (runs: 256, μ: 189737, ~: 189797)
PufferPoolTest:testDepositAndRedeemRoundingErrorForDifferentExchangeRate(address,uint256) (runs: 256, μ: 323830, ~: 323947)
PufferPoolTest:testDepositForOneWei() (gas: 89277)
PufferPoolTest:testMintZero() (gas: 20152)
PufferPoolTest:testMultipleDeposits() (gas: 138195)
PufferPoolTest:testRatioChange() (gas: 230866)
PufferPoolTest:testRatioChangeSandwichAttack(uint256,uint256) (runs: 256, μ: 207753, ~: 207919)
PufferPoolTest:testRecoverERC20() (gas: 516930)
PufferPoolTest:testSetup() (gas: 32675)
PufferPoolTest:testStorageS() (gas: 19397)
PufferProtocolInvariants:invariant_callSummary() (runs: 100, calls: 11000, reverts: 0)
PufferProtocolInvariants:invariant_pufEthToETHRate() (runs: 100, calls: 11000, reverts: 0)
PufferProtocolInvariants:invariant_pufferPoolETHCanOnlyGoUp() (runs: 100, calls: 11000, reverts: 0)
PufferProtocolInvariants:invariant_pufferProtocolBond() (runs: 100, calls: 11000, reverts: 3)
PufferProtocolTest:testBurstThreshold() (gas: 542429)
PufferProtocolTest:testChangeModule() (gas: 30488)
PufferProtocolTest:testChangeModuleToCustom() (gas: 51182)
PufferProtocolTest:testClaimBackBond() (gas: 2306995)
PufferProtocolTest:testClaimBackBondForSingleWithdrawal() (gas: 1181519)
PufferProtocolTest:testCreateExistingModuleShouldFail() (gas: 33439)
PufferProtocolTest:testCreatePufferModule() (gas: 297987)
PufferProtocolTest:testEmptyQueue() (gas: 32527)
PufferProtocolTest:testExtendCommitment() (gas: 527528)
PufferProtocolTest:testFeeCalculations() (gas: 134657)
PufferProtocolTest:testFeeCalculationsEverythingToPufferPool() (gas: 145417)
PufferProtocolTest:testFeeCalculationsEverythingToWithdrawalPool() (gas: 147229)
PufferProtocolTest:testFuzzRegisterManyValidators(uint8) (runs: 256, μ: 25827721, ~: 14412279)
PufferProtocolTest:testGetPayload() (gas: 143448)
PufferProtocolTest:testModuleDOS() (gas: 3640642)
PufferProtocolTest:testPause() (gas: 135102)
PufferProtocolTest:testProofOfReserve() (gas: 176865)
PufferProtocolTest:testProvisionNode() (gas: 3842249)
PufferProtocolTest:testProvisioning() (gas: 61485)
PufferProtocolTest:testRegisterInvalidPrivKeyShares() (gas: 77957)
PufferProtocolTest:testRegisterInvalidPubKeyShares() (gas: 81090)
PufferProtocolTest:testRegisterMoreValidatorsThanTheLimit() (gas: 782341)
PufferProtocolTest:testRegisterMultipleValidatorKeysAndDequeue(bytes32,bytes32) (runs: 256, μ: 2044772, ~: 2044772)
PufferProtocolTest:testRegisterToInvalidModule() (gas: 70378)
PufferProtocolTest:testRegisterValidatorKeyWithPermit() (gas: 497588)
PufferProtocolTest:testRegisterValidatorKeyWithPermitSignature() (gas: 506678)
PufferProtocolTest:testRegisterValidatorKeyWithPermitSignatureRevertsInvalidSC() (gas: 224665)
PufferProtocolTest:testRegisterValidatorWithHugeCommitment() (gas: 83606)
PufferProtocolTest:testRegisterWithInvalidAmountPaid() (gas: 86207)
PufferProtocolTest:testRegisterWithInvalidBLSPubKey() (gas: 47067)
PufferProtocolTest:testRegisterWithoutRAVE() (gas: 336942)
PufferProtocolTest:testSetGuardiansFeeRateOverTheLimit() (gas: 28419)
PufferProtocolTest:testSetProtocolFeeRate() (gas: 33505)
PufferProtocolTest:testSetProtocolFeeRateOverTheLimit() (gas: 28321)
PufferProtocolTest:testSetSmoothingCommitment() (gas: 86893)
PufferProtocolTest:testSetSmoothingCommitment(bytes32) (runs: 256, μ: 86826, ~: 86804)
PufferProtocolTest:testSetWithdrawalPoolRateMax() (gas: 36372)
PufferProtocolTest:testSetup() (gas: 18933)
PufferProtocolTest:testSkipProvisioning() (gas: 993061)
PufferProtocolTest:testStopRegistration() (gas: 1059256)
PufferProtocolTest:testUpgrade() (gas: 4737990)
PufferProtocolTest:testValidatorGriefingAttack() (gas: 951773)
PufferProtocolTest:testValidatorLimitPerModule() (gas: 500033)
WithdrawalPoolTest:testWithdrawETH() (gas: 183692)
WithdrawalPoolTest:testWithdrawETHWithSignature() (gas: 195572)
WithdrawalPoolTest:testWithdrawSomebodyElsesPufETHReverts() (gas: 195887)
PufferProtocolTest:test_burst_threshold() (gas: 511573)
PufferProtocolTest:test_changeMinimumVTAmount() (gas: 39328)
PufferProtocolTest:test_change_module() (gas: 30487)
PufferProtocolTest:test_change_module_to_custom_module() (gas: 51158)
PufferProtocolTest:test_claim_bond() (gas: 2587400)
PufferProtocolTest:test_claim_bond_for_single_withdrawal() (gas: 1352588)
PufferProtocolTest:test_create_existing_module_fails() (gas: 33439)
PufferProtocolTest:test_create_puffer_module() (gas: 298277)
PufferProtocolTest:test_deposit_validator_tickets_approval() (gas: 229352)
PufferProtocolTest:test_deposit_validator_tickets_permit_for_bob() (gas: 244221)
PufferProtocolTest:test_double_deposit_validator_tickets_approval() (gas: 255922)
PufferProtocolTest:test_double_deposit_validator_tickets_permit_for_bob() (gas: 292674)
PufferProtocolTest:test_empty_queue() (gas: 56822)
PufferProtocolTest:test_fuzz_register_many_validators(uint8) (runs: 256, μ: 20573017, ~: 14116924)
PufferProtocolTest:test_get_payload() (gas: 144437)
PufferProtocolTest:test_proof_of_reserve() (gas: 145740)
PufferProtocolTest:test_provision_node() (gas: 3407639)
PufferProtocolTest:test_provision_reverts() (gas: 90311)
PufferProtocolTest:test_register_both_approve() (gas: 533332)
PufferProtocolTest:test_register_both_permit() (gas: 607279)
PufferProtocolTest:test_register_invalid_bls_key() (gas: 59991)
PufferProtocolTest:test_register_invalid_privKey_shares() (gas: 89300)
PufferProtocolTest:test_register_invalid_pubkey_shares_length() (gas: 92612)
PufferProtocolTest:test_register_multiple_validator_keys_and_dequeue(bytes32,bytes32) (runs: 256, μ: 1828194, ~: 1828194)
PufferProtocolTest:test_register_no_sgx() (gas: 404231)
PufferProtocolTest:test_register_pufETH_approve_buy_VT() (gas: 489069)
PufferProtocolTest:test_register_pufETH_pay_vt_approve() (gas: 524780)
PufferProtocolTest:test_register_pufETH_permit_pay_VT() (gas: 516383)
PufferProtocolTest:test_register_skip_provision_withdraw_vt() (gas: 551288)
PufferProtocolTest:test_register_to_invalid_module() (gas: 83315)
PufferProtocolTest:test_register_validator_key() (gas: 432759)
PufferProtocolTest:test_register_validator_key_with_permit_reverts_invalid_vt_amount() (gas: 265414)
PufferProtocolTest:test_register_validator_with_huge_commitment() (gas: 73473)
PufferProtocolTest:test_register_with_invalid_amount_paid() (gas: 131675)
PufferProtocolTest:test_setup() (gas: 17438)
PufferProtocolTest:test_skip_provisioning() (gas: 965706)
PufferProtocolTest:test_stop_validator_provision_another_claim_bond_for_the_first() (gas: 2570925)
PufferProtocolTest:test_upgrade() (gas: 4625767)
PufferProtocolTest:test_validator_griefing_attack() (gas: 920296)
PufferProtocolTest:test_validator_limit_per_module() (gas: 481316)
PufferProtocolTest:test_vt_balance_different_provision_time() (gas: 1210649)
PufferProtocolTest:test_vt_balance_multiple_validators() (gas: 1219311)
PufferProtocolTest:test_vt_balance_single_validator() (gas: 685783)
PufferProtocolTest:test_vt_burning() (gas: 806173)
PufferProtocolTest:test_withdraw_vt_before_provisioning() (gas: 507779)
ValidatorTicketTest:test_change_protocol_fee_rate() (gas: 40133)
ValidatorTicketTest:test_funds_splitting() (gas: 128624)
ValidatorTicketTest:test_overflow_protocol_fee_rate() (gas: 32926)
ValidatorTicketTest:test_setup() (gas: 27805)
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
[submodule "lib/forge-std"]
path = lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "lib/solady"]
path = lib/solady
url = https://github.com/Vectorized/solady
[submodule "lib/eigenlayer-contracts"]
path = lib/eigenlayer-contracts
url = https://github.com/Layr-Labs/eigenlayer-contracts
Expand Down
5 changes: 2 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,12 @@ All of our smart contract inherit from **AccessManaged | AccessManagedUpgradeabl
- MerkleProof
- MessageHashUtils
- Strings
- Address
- SafeCast
- [Openzeppelin upgradeable smart contracts](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable)
- AccessManagedUpgradeable
- UUPSUpgradeable
- Initializable
- [Solady](https://github.com/Vectorized/solady)
- FixedPointMathLib
- SafeTransferLib
- [EigenLayer](https://github.com/Layr-Labs/eigenlayer-contracts)


Expand Down
1 change: 0 additions & 1 deletion lib/solady
Submodule solady deleted from 23cb3c
1 change: 0 additions & 1 deletion remappings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ eigenlayer-test/=lib/eigenlayer-contracts/src/test
openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
puffer/=src/
script/=script/
solady/=lib/solady/src/
rave/=lib/rave/src/
rave-test/=lib/rave/test/
murky/=lib/murky/src/
Expand Down
4 changes: 1 addition & 3 deletions script/AddLeafX509.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ pragma solidity >=0.8.0 <0.9.0;
import { BaseScript } from "script/BaseScript.s.sol";
import { IEnclaveVerifier } from "puffer/interface/IEnclaveVerifier.sol";
import { stdJson } from "forge-std/StdJson.sol";
import { Strings } from "openzeppelin/utils/Strings.sol";

/**
* @title Deposit ETH script
Expand All @@ -15,8 +14,7 @@ import { Strings } from "openzeppelin/utils/Strings.sol";
*/
contract AddLeaftX509 is BaseScript {
function run(bytes calldata leafX509Cert) external broadcast {
string memory guardiansDeployment =
vm.readFile(string.concat("./output/", Strings.toString(block.chainid), "-guardians.json"));
string memory guardiansDeployment = vm.readFile("./output/puffer.json");
address payable enclaveVerifier = payable(stdJson.readAddress(guardiansDeployment, ".enclaveVerifier"));

IEnclaveVerifier(enclaveVerifier).addLeafX509(leafX509Cert);
Expand Down
7 changes: 6 additions & 1 deletion script/BaseScript.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ import "forge-std/Script.sol";
abstract contract BaseScript is Script {
uint256 internal PK = 55358659325830545179143827536745912452716312441367500916455484419538098489698; // makeAddr("pufferDeployer")

// Anvil and `forge test` environment share the same chainId
// Our shell-scripts/deploy_puffer_protocol.sh is setting this env variable
// So that we can adapt our deployment for local testing
bool internal _localAnvil = vm.envOr("IS_LOCAL_ANVIL", false);

/**
* @dev Deployer private key is in `PK` env variable
*/
Expand All @@ -19,7 +24,7 @@ abstract contract BaseScript is Script {
constructor() {
// For local chain (ANVIL) hardcode the deployer as first account from the blockchain
if (isAnvil()) {
// Fist account from ANVIL
// Fist account from ANVIL: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
_deployerPrivateKey = uint256(0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80);
_broadcaster = vm.addr(_deployerPrivateKey);
}
Expand Down
40 changes: 38 additions & 2 deletions script/DeployEverything.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ import { UpgradePuffETH } from "pufETHScript/UpgradePuffETH.s.sol";
import { DeployPufferOracle } from "script/DeployPufferOracle.s.sol";
import { GuardiansDeployment, PufferProtocolDeployment } from "./DeploymentStructs.sol";

/**
* @title Deploy all protocol contracts
* @author Puffer Finance
* @notice Deploys pufETH (upgrade it in test environment), Guardians, Oracle, Puffer, and sets up the access control
* @dev Example on how to run the script
* forge script script/DeployEverything.s.sol:DeployEverything --rpc-url=$RPC_URL --sig 'run(address[] calldata, uint256)' "[$DEV_WALLET]" 1 --broadcast
*/
contract DeployEverything is BaseScript {
address DAO;

Expand Down Expand Up @@ -46,14 +53,43 @@ contract DeployEverything is BaseScript {
pufferDeployment.stETH = puffETHDeployment.stETH;
pufferDeployment.weth = puffETHDeployment.weth;

if (!isAnvil()) {
// `anvil` in the terminal
if (_localAnvil) {
DAO = _broadcaster;
} else {
} else if (isAnvil()) {
// Tests environment `forge test ...`
DAO = makeAddr("DAO");
} else {
// Testnet deployments
DAO = _broadcaster;
}

new SetupAccess().run(pufferDeployment, DAO);

_writeJson(pufferDeployment);

return pufferDeployment;
}

function _writeJson(PufferProtocolDeployment memory deployment) internal {
string memory obj = "";

vm.serializeAddress(obj, "noRestakingModule", deployment.NoRestakingModule);
vm.serializeAddress(obj, "protocol", deployment.pufferProtocol);
vm.serializeAddress(obj, "guardianModule", deployment.guardianModule);
vm.serializeAddress(obj, "accessManager", deployment.accessManager);

vm.serializeAddress(obj, "enclaveVerifier", deployment.enclaveVerifier);
vm.serializeAddress(obj, "moduleBeacon", deployment.beacon);
vm.serializeAddress(obj, "moduleFactory", deployment.moduleFactory);
vm.serializeAddress(obj, "validatorTicket", deployment.validatorTicket);
vm.serializeAddress(obj, "oracle", deployment.pufferOracle);
vm.serializeAddress(obj, "depositor", deployment.pufferDepositor);
vm.serializeAddress(obj, "vault", deployment.pufferVault);
vm.serializeAddress(obj, "stETH/stETH Mock", deployment.stETH);
vm.serializeAddress(obj, "weth/weth Mock", deployment.weth);

string memory finalJson = vm.serializeString(obj, "", "");
vm.writeJson(finalJson, "./output/puffer.json");
}
}
10 changes: 0 additions & 10 deletions script/DeployGuardians.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { BaseScript } from "script/BaseScript.s.sol";
import { GuardianModule } from "../src/GuardianModule.sol";
import { EnclaveVerifier } from "puffer/EnclaveVerifier.sol";
import { AccessManager } from "openzeppelin/access/manager/AccessManager.sol";
import { Strings } from "openzeppelin/utils/Strings.sol";
import { GuardiansDeployment } from "./DeploymentStructs.sol";

// forge script script/1_DeployGuardians.s.sol:DeployGuardians --rpc-url=$EPHEMERY_RPC_URL --sig 'run(address[] calldata, uint256)' "[0xDDDeAfB492752FC64220ddB3E7C9f1d5CcCdFdF0]" 1
Expand All @@ -21,15 +20,6 @@ contract DeployGuardians is BaseScript {

GuardianModule module = new GuardianModule(verifier, guardians, threshold, address(accessManager));

string memory obj = "";
vm.serializeAddress(obj, "accessManager", address(accessManager));
vm.serializeAddress(obj, "guardianModule", address(module));
vm.serializeAddress(obj, "enclaveVerifier", address(verifier));

string memory finalJson = vm.serializeString(obj, "", "");

vm.writeJson(finalJson, string.concat("./output/", Strings.toString(block.chainid), "-guardians.json"));

GuardiansDeployment memory deployment;
deployment.accessManager = address(accessManager);
deployment.guardianModule = address(module);
Expand Down
Loading

0 comments on commit 737fcbe

Please sign in to comment.