Skip to content

Commit

Permalink
Merge pull request #41 from bgd-labs/fix/update-ccf-interface
Browse files Browse the repository at this point in the history
fix: use interfaces from lib instead of address book
  • Loading branch information
sendra authored Feb 11, 2025
2 parents c13f2cc + b2607a5 commit 4e2b266
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/templates/interfaces/IBaseForwarderAdaptersUpdate.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {ICrossChainForwarder} from 'aave-address-book/common/ICrossChainController.sol';
import {ICrossChainForwarder} from 'adi/interfaces/ICrossChainForwarder.sol';

/**
* @title Interface for base forwarder payload.
Expand Down
2 changes: 1 addition & 1 deletion src/templates/interfaces/IBaseReceiverAdaptersUpdate.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {ICrossChainReceiver} from 'aave-address-book/common/ICrossChainController.sol';
import {ICrossChainReceiver} from 'adi/interfaces/ICrossChainReceiver.sol';

/**
* @title Interface of the base payload aDI and bridge adapters update
Expand Down
49 changes: 46 additions & 3 deletions tests/adi/ADITestBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import {ChainHelpers, ChainIds} from 'solidity-utils/contracts/utils/ChainHelper
import {GovV3Helpers} from 'aave-helpers/GovV3Helpers.sol';
import {ProxyHelpers} from 'aave-v3-origin/../tests/utils/ProxyHelpers.sol';

import {ICrossChainReceiver, ICrossChainForwarder} from 'aave-address-book/common/ICrossChainController.sol';
import {ICrossChainForwarder} from 'adi/interfaces/ICrossChainForwarder.sol';
import {ICrossChainReceiver} from 'adi/interfaces/ICrossChainReceiver.sol';
import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol';
import {GovernanceV3Polygon} from 'aave-address-book/GovernanceV3Polygon.sol';
import {GovernanceV3Avalanche} from 'aave-address-book/GovernanceV3Avalanche.sol';
Expand Down Expand Up @@ -41,11 +42,17 @@ contract ADITestBase is Test {
ICrossChainForwarder.ChainIdBridgeConfig[] forwarders;
}

struct OptimalBandwidthByChain {
uint256 chainId;
uint256 optimalBandwidth;
}

struct CCCConfig {
address crossChainControllerImpl;
ReceiverConfigByChain[] receiverConfigs;
ReceiverAdaptersByChain[] receiverAdaptersConfig;
ForwarderAdaptersByChain[] forwarderAdaptersConfig;
OptimalBandwidthByChain[] optimalBandwidthConfig;
}

struct ForwarderAdapters {
Expand All @@ -69,6 +76,7 @@ contract ADITestBase is Test {
bool receiverAdapterConfigs;
bool forwarderAdapterConfigs;
bool cccImplUpdate;
bool optimalBandwidth;
string reportName;
}

Expand Down Expand Up @@ -401,30 +409,57 @@ contract ADITestBase is Test {
receiverAdapterConfigs: true,
forwarderAdapterConfigs: true,
cccImplUpdate: true,
optimalBandwidth: true,
reportName: reportName
})
);
}



function createConfigurationSnapshot(
SnapshotParams memory snapshotParams
) public returns (CCCConfig memory) {
string memory path = string(abi.encodePacked('./reports/', snapshotParams.reportName, '.json'));
// overwrite with empty json to later be extended
vm.writeFile(
path,
'{ "cccImplementation": {}, "receiverConfigsByChain": {}, "receiverAdaptersByChain": {}, "forwarderAdaptersByChain": {}}'
'{ "cccImplementation": {}, "receiverConfigsByChain": {}, "receiverAdaptersByChain": {}, "forwarderAdaptersByChain": {}, "optimalBandwidthByChain": {}}'
);
vm.serializeUint('root', 'chainId', block.chainid);
CCCConfig memory config = _getCCCConfig(snapshotParams.crossChainController);
if (snapshotParams.receiverConfigs) _writeReceiverConfigs(path, config);
if (snapshotParams.receiverAdapterConfigs) _writeReceiverAdapters(path, config);
if (snapshotParams.forwarderAdapterConfigs) _writeForwarderAdapters(path, config);
if (snapshotParams.cccImplUpdate) _writeCCCImplUpdate(path, config);

if (snapshotParams.optimalBandwidth) _writeOptimalBandwidth(path, config);
return config;
}

function _writeOptimalBandwidth(string memory path, CCCConfig memory config) internal {
// keys for json stringification
string memory optimalBandwidth = 'optimalBandWidth';
string memory content = '{}';
vm.serializeJson(optimalBandwidth, '{}');
OptimalBandwidthByChain[] memory optimalBandwidthConfig = config.optimalBandwidthConfig;

for (uint256 i = 0; i < optimalBandwidthConfig.length; i++) {
uint256 chainId = optimalBandwidthConfig[i].chainId;
string memory key = vm.toString(chainId);
vm.serializeJson(key, '{}');
string memory object;

object = vm.serializeString(
key,
'optimalBandwidth',
vm.toString(optimalBandwidthConfig[i].optimalBandwidth)
);
content = vm.serializeString(optimalBandwidth, key, object);
}
string memory output = vm.serializeString('root', 'optimalBandwidthByChain', content);
vm.writeJson(output, path);
}

function _writeCCCImplUpdate(string memory path, CCCConfig memory config) internal {
string memory output = vm.serializeAddress(
'root',
Expand Down Expand Up @@ -570,14 +605,22 @@ contract ADITestBase is Test {
ForwarderAdaptersByChain[] memory forwardersByChain = new ForwarderAdaptersByChain[](
supportedForwardingNetworks.length
);
OptimalBandwidthByChain[] memory optimalBandwidth = new OptimalBandwidthByChain[](
supportedForwardingNetworks.length
);
for (uint256 i = 0; i < supportedForwardingNetworks.length; i++) {
uint256 chainId = supportedForwardingNetworks[i];
forwardersByChain[i] = ForwarderAdaptersByChain({
chainId: chainId,
forwarders: ICrossChainForwarder(ccc).getForwarderBridgeAdaptersByChain(chainId)
});
optimalBandwidth[i] = OptimalBandwidthByChain({
chainId: chainId,
optimalBandwidth: ICrossChainForwarder(ccc).getOptimalBandwidthByChain(chainId)
});
}
config.forwarderAdaptersConfig = forwardersByChain;
config.optimalBandwidthConfig = optimalBandwidth;

return config;
}
Expand Down

0 comments on commit 4e2b266

Please sign in to comment.