Skip to content

Commit e1bd791

Browse files
comments
1 parent da21dde commit e1bd791

File tree

3 files changed

+52
-4
lines changed

3 files changed

+52
-4
lines changed

.gas-snapshot

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ ERC20PriceOracleReceiptVaultAuthorizeReceiptTransferTest:testAuthorizeReceiptTra
1414
ERC20PriceOracleReceiptVaultCloneDeployerConstructTest:testERC20PriceOracleReceiptVaultCloneDeployerConstruct((address,address)) (runs: 246, μ: 467748, ~: 467748)
1515
ERC20PriceOracleReceiptVaultCloneDeployerConstructTest:testERC20PriceOracleReceiptVaultCloneDeployerConstructZeroReceiptImplementation(address) (runs: 254, μ: 37221, ~: 37221)
1616
ERC20PriceOracleReceiptVaultCloneDeployerConstructTest:testERC20PriceOracleReceiptVaultCloneDeployerConstructZeroVaultImplementation(address) (runs: 254, μ: 37221, ~: 37221)
17-
ERC20PriceOracleReceiptVaultCloneDeployerNewERC20PriceOracleReceiptVaultTest:testNewERC20PriceOracleReceiptVaultNonZeroReceipt((address,(address,string,string,address))) (runs: 256, μ: 5587754, ~: 5587754)
18-
ERC20PriceOracleReceiptVaultCloneDeployerNewERC20PriceOracleReceiptVaultTest:testNewERC20PriceOracleReceiptVaultSuccess((address,(address,string,string,address))) (runs: 0, μ: 0, ~: 0)
17+
ERC20PriceOracleReceiptVaultCloneDeployerNewERC20PriceOracleReceiptVaultTest:testNewERC20PriceOracleReceiptVaultNonZeroReceipt((address,(address,string,string,address))) (runs: 255, μ: 5587895, ~: 5587895)
18+
ERC20PriceOracleReceiptVaultCloneDeployerNewERC20PriceOracleReceiptVaultTest:testNewERC20PriceOracleReceiptVaultSuccess(address,(address,(address,string,string,address))) (runs: 1, μ: 5926009, ~: 5926009)
1919
ERC20PriceOracleReceiptVaultConvertToAssetsTest:testConvertToAssets(uint256,string,string,uint256,uint256) (runs: 256, μ: 397182, ~: 398287)
2020
ERC20PriceOracleReceiptVaultConvertToAssetsTest:testConvertToAssetsDifferentCaller(uint256,uint256,string,string,uint256,uint256) (runs: 256, μ: 457014, ~: 453843)
2121
ERC20PriceOracleReceiptVaultConvertToSharesTest:testConvertToShares(uint256,string,string,uint256,uint256) (runs: 256, μ: 397694, ~: 399131)
@@ -101,8 +101,8 @@ OffchainAssetReceiptVaultBeaconSetDeployerConstructTest:testOffchainAssetReceipt
101101
OffchainAssetReceiptVaultBeaconSetDeployerConstructTest:testOffchainAssetReceiptVaultBeaconSetDeployerConstructZeroBeaconOwner(address,address) (runs: 252, μ: 38613, ~: 38613)
102102
OffchainAssetReceiptVaultBeaconSetDeployerConstructTest:testOffchainAssetReceiptVaultBeaconSetDeployerConstructZeroReceiptImplementation(address,address) (runs: 252, μ: 38530, ~: 38530)
103103
OffchainAssetReceiptVaultBeaconSetDeployerConstructTest:testOffchainAssetReceiptVaultBeaconSetDeployerConstructZeroVaultImplementation(address,address) (runs: 252, μ: 38552, ~: 38552)
104-
OffchainAssetReceiptVaultBeaconSetDeployerNewOffchainAssetReceiptVaultTest:testNewOffchainAssetReceiptVault((address,(address,string,string,address))) (runs: 0, μ: 0, ~: 0)
105-
OffchainAssetReceiptVaultBeaconSetDeployerNewOffchainAssetReceiptVaultTest:testNewOffchainAssetReceiptVaultNonZeroReceipt((address,(address,string,string,address))) (runs: 253, μ: 7876816, ~: 7876816)
104+
OffchainAssetReceiptVaultBeaconSetDeployerNewOffchainAssetReceiptVaultTest:testNewOffchainAssetReceiptVault(address,(address,(address,string,string,address))) (runs: 0, μ: 0, ~: 0)
105+
OffchainAssetReceiptVaultBeaconSetDeployerNewOffchainAssetReceiptVaultTest:testNewOffchainAssetReceiptVaultNonZeroReceipt((address,(address,string,string,address))) (runs: 254, μ: 7876957, ~: 7876957)
106106
OffchainAssetReceiptVaultBeaconSetDeployerNewOffchainAssetReceiptVaultTest:testNewOffchainAssetReceiptVaultZeroInitialAdmin((address,(address,string,string,address))) (runs: 0, μ: 0, ~: 0)
107107
OffchainAssetReceiptVaultCertifyTest:testCertify(uint256,uint256,string,string,uint256,bytes,uint256,bool) (runs: 255, μ: 1108924, ~: 1107974)
108108
OffchainAssetReceiptVaultCertifyTest:testCertifyRevertOnZeroCertifyUntil(uint256,uint256,string,string,bytes,uint256,bool) (runs: 256, μ: 1072598, ~: 1073934)

src/concrete/deploy/ERC20PriceOracleReceiptVaultCloneDeployer.sol

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,50 @@ import {
1616
ERC20PriceOracleReceiptVaultConfigV2
1717
} from "../vault/ERC20PriceOracleReceiptVault.sol";
1818

19+
/// Configuration for the ERC20PriceOracleReceiptVaultCloneDeployer construction.
20+
/// @param receiptImplementation The address of the Receipt implementation
21+
/// contract to clone from.
22+
/// @param erc20PriceOracleReceiptVaultImplementation The address of the
23+
/// ERC20PriceOracleReceiptVault implementation contract to clone from.
1924
//forge-lint: disable-next-line(pascal-case-struct)
2025
struct ERC20PriceOracleReceiptVaultCloneDeployerConfig {
2126
address receiptImplementation;
2227
address erc20PriceOracleReceiptVaultImplementation;
2328
}
2429

30+
/// @title ERC20PriceOracleReceiptVaultCloneDeployer
31+
/// Deploys ERC20PriceOracleReceiptVault contracts as minimal proxy contracts
32+
/// and handles the necessary initialization atomically.
2533
contract ERC20PriceOracleReceiptVaultCloneDeployer {
34+
/// Emitted when a new deployment is successfully initialized.
35+
/// @param sender The address that initiated the deployment.
36+
/// @param erc20PriceOracleReceiptVault The address of the deployed
37+
/// ERC20PriceOracleReceiptVault contract.
38+
/// @param receipt The address of the deployed Receipt contract.
2639
event ERC20PriceOracleReceiptVaultCloneDeployerDeployment(
2740
address sender, address erc20PriceOracleReceiptVault, address receipt
2841
);
2942

43+
/// The address of the Receipt implementation contract to clone from.
3044
address public immutable I_RECEIPT_IMPLEMENTATION;
45+
46+
/// The address of the ERC20PriceOracleReceiptVault implementation contract
47+
/// to clone from.
3148
address public immutable I_ERC20_PRICE_ORACLE_RECEIPT_VAULT_IMPLEMENTATION;
3249

50+
/// @param config The configuration for the deployer.
3351
constructor(ERC20PriceOracleReceiptVaultCloneDeployerConfig memory config) {
3452
if (config.receiptImplementation == address(0)) revert ZeroReceiptImplementation();
3553
if (config.erc20PriceOracleReceiptVaultImplementation == address(0)) revert ZeroVaultImplementation();
3654
I_RECEIPT_IMPLEMENTATION = config.receiptImplementation;
3755
I_ERC20_PRICE_ORACLE_RECEIPT_VAULT_IMPLEMENTATION = config.erc20PriceOracleReceiptVaultImplementation;
3856
}
3957

58+
/// Deploys and initializes a new ERC20PriceOracleReceiptVault contract
59+
/// along with its associated Receipt contract.
60+
/// @param config The configuration for the ERC20PriceOracleReceiptVault.
61+
/// @return The address of the newly deployed ERC20PriceOracleReceiptVault
62+
/// contract.
4063
function newERC20PriceOracleReceiptVault(ERC20PriceOracleReceiptVaultConfigV2 memory config)
4164
external
4265
returns (ERC20PriceOracleReceiptVault)

src/concrete/deploy/OffchainAssetReceiptVaultBeaconSetDeployer.sol

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,37 @@ import {
1717
InitializeVaultFailed
1818
} from "../../error/ErrDeployer.sol";
1919

20+
/// Configuration for the OffchainAssetReceiptVaultBeaconSetDeployer
21+
/// construction.
22+
/// @param initialOwner The initial owner of the beacons.
23+
/// @param initialReceiptImplementation The address of the initial Receipt
24+
/// implementation contract.
25+
/// @param initialOffchainAssetReceiptVaultImplementation The address of the
26+
/// initial OffchainAssetReceiptVault implementation contract.
2027
struct OffchainAssetReceiptVaultBeaconSetDeployerConfig {
2128
address initialOwner;
2229
address initialReceiptImplementation;
2330
address initialOffchainAssetReceiptVaultImplementation;
2431
}
2532

33+
/// @title OffchainAssetReceiptVaultBeaconSetDeployer
34+
/// Deploys OffchainAssetReceiptVault contracts using beacon proxies and
35+
/// handles the necessary initialization atomically.
2636
contract OffchainAssetReceiptVaultBeaconSetDeployer {
37+
/// Emitted when a new deployment is successfully initialized.
38+
/// @param sender The address that initiated the deployment.
39+
/// @param offchainAssetReceiptVault The address of the deployed
40+
/// OffchainAssetReceiptVault contract.
41+
/// @param receipt The address of the deployed Receipt contract.
2742
event Deployment(address sender, address offchainAssetReceiptVault, address receipt);
2843

44+
/// The beacon for the Receipt implementation contracts.
2945
IBeacon public immutable I_RECEIPT_BEACON;
46+
47+
/// The beacon for the OffchainAssetReceiptVault implementation contracts.
3048
IBeacon public immutable I_OFFCHAIN_ASSET_RECEIPT_VAULT_BEACON;
3149

50+
/// @param config The configuration for the deployer.
3251
constructor(OffchainAssetReceiptVaultBeaconSetDeployerConfig memory config) {
3352
if (address(config.initialReceiptImplementation) == address(0)) {
3453
revert ZeroReceiptImplementation();
@@ -45,6 +64,12 @@ contract OffchainAssetReceiptVaultBeaconSetDeployer {
4564
new UpgradeableBeacon(address(config.initialOffchainAssetReceiptVaultImplementation), config.initialOwner);
4665
}
4766

67+
/// Deploys and initializes a new OffchainAssetReceiptVault contract along
68+
/// with its associated Receipt contract. Both are beacon proxies pointing
69+
/// to the respective immutable beacons.
70+
/// @param config The configuration for the OffchainAssetReceiptVault.
71+
/// @return The address of the newly deployed OffchainAssetReceiptVault
72+
/// contract.
4873
function newOffchainAssetReceiptVault(OffchainAssetReceiptVaultConfigV2 memory config)
4974
external
5075
returns (OffchainAssetReceiptVault)

0 commit comments

Comments
 (0)