Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: hot fix to v1 paymentHelper #461

Merged
merged 8 commits into from
Jan 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 71 additions & 4 deletions script/Abstract.UpdatePaymentHelper.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@
pragma solidity ^0.8.23;

import "./Abstract.Deploy.Single.s.sol";
import "forge-std/console.sol";

struct UpdateVars {
uint64 chainId;
uint64 dstChainId;
uint256 dstTrueIndex;
address paymentHelper;
address superRegistry;
SuperRegistry superRegistryC;
}

abstract contract AbstractUpdatePaymentHelper is AbstractDeploySingle {
Expand All @@ -15,28 +19,91 @@ abstract contract AbstractUpdatePaymentHelper is AbstractDeploySingle {
uint256 trueIndex,
Cycle cycle,
uint64[] memory targetDeploymentChains,
uint64[] memory finalDeployedChains
uint64[] memory finalDeployedChains,
bytes32 salt
)
internal
setEnvDeploy(cycle)
{
UpdateVars memory vars;

vars.chainId = targetDeploymentChains[i];
vm.startBroadcast(deployerPrivateKey);
vm.startBroadcast();
vars.superRegistry = _readContract(chainNames[trueIndex], vars.chainId, "SuperRegistry");
vars.paymentHelper = address(new PaymentHelper{ salt: salt }(vars.superRegistry));
contracts[vars.chainId][bytes32(bytes("PaymentHelper"))] = vars.paymentHelper;

vars.paymentHelper = _readContract(chainNames[trueIndex], vars.chainId, "PaymentHelper");
console.log("vars.paymentHelper", vars.paymentHelper);
vars.superRegistryC = SuperRegistry(vars.superRegistry);

vars.superRegistryC.setAddress(vars.superRegistryC.PAYMENT_HELPER(), vars.paymentHelper, vars.chainId);

/// @dev configure payment helper
PaymentHelper(payable(vars.paymentHelper)).updateRemoteChain(
vars.chainId, 1, abi.encode(PRICE_FEEDS[vars.chainId][vars.chainId])
);
PaymentHelper(payable(vars.paymentHelper)).updateRemoteChain(
vars.chainId, 7, abi.encode(nativePrices[trueIndex])
);

PaymentHelper(payable(vars.paymentHelper)).updateRemoteChain(vars.chainId, 8, abi.encode(gasPrices[trueIndex]));

/// @dev gas per byte
PaymentHelper(payable(vars.paymentHelper)).updateRemoteChain(vars.chainId, 9, abi.encode(750));

/// @dev ackGasCost to mint superPositions
PaymentHelper(payable(vars.paymentHelper)).updateRemoteChain(
vars.chainId, 10, abi.encode(vars.chainId == ARBI ? 500_000 : 150_000)
);

PaymentHelper(payable(vars.paymentHelper)).updateRemoteChain(vars.chainId, 11, abi.encode(50_000));

PaymentHelper(payable(vars.paymentHelper)).updateRemoteChain(vars.chainId, 12, abi.encode(10_000));

/// @dev Set all trusted remotes for each chain & configure amb chains ids
for (uint256 j = 0; j < finalDeployedChains.length; j++) {
if (j != i) {
vars.dstChainId = finalDeployedChains[j];

PaymentHelper(payable(vars.paymentHelper)).updateRemoteChain(vars.dstChainId, 9, abi.encode(750));
for (uint256 k = 0; k < chainIds.length; k++) {
if (vars.dstChainId == chainIds[k]) {
vars.dstTrueIndex = k;

break;
}
}
PaymentHelper(payable(vars.paymentHelper)).addRemoteChain(
vars.dstChainId,
IPaymentHelper.PaymentHelperConfig(
PRICE_FEEDS[vars.chainId][vars.dstChainId],
address(0),
vars.dstChainId == ARBI ? 2_000_000 : 1_000_000,
vars.dstChainId == ARBI ? 1_000_000 : 200_000,
vars.dstChainId == ARBI ? 1_000_000 : 200_000,
vars.dstChainId == ARBI ? 750_000 : 150_000,
nativePrices[vars.dstTrueIndex],
gasPrices[vars.dstTrueIndex],
750,
2_000_000,
10_000,
10_000
)
);

PaymentHelper(payable(vars.paymentHelper)).updateRegisterAERC20Params(abi.encode(4, abi.encode(0, "")));
address dstPaymentHelper =
_readContract(chainNames[vars.dstTrueIndex], vars.dstChainId, "PaymentHelper");

vars.superRegistryC.setAddress(vars.superRegistryC.PAYMENT_HELPER(), dstPaymentHelper, vars.dstChainId);
}
}
vm.stopBroadcast();

/// @dev Exports
for (uint256 j = 0; j < contractNames.length; j++) {
_exportContract(
chainNames[trueIndex], contractNames[j], getContract(vars.chainId, contractNames[j]), vars.chainId
);
}
}
}
7 changes: 5 additions & 2 deletions script/UpdatePaymentHelper.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ contract UpdatePaymentHelper is AbstractUpdatePaymentHelper {
SELECT CHAIN IDS TO DEPLOY HERE
//////////////////////////////////////////////////////////////*/

uint64[] TARGET_DEPLOYMENT_CHAINS = [BSC, POLY, AVAX];
uint64[] TARGET_DEPLOYMENT_CHAINS = [ETH, BSC, AVAX, POLY, ARBI, OP, BASE];

///@dev ORIGINAL SALT
bytes32 constant salt = "SunNeverSetsOnSuperformRealm";

function updatePaymentHelper(uint256 selectedChainIndex) external {
uint256 trueIndex;
Expand All @@ -20,7 +23,7 @@ contract UpdatePaymentHelper is AbstractUpdatePaymentHelper {
}

_updatePaymentHelper(
selectedChainIndex, trueIndex, Cycle.Prod, TARGET_DEPLOYMENT_CHAINS, TARGET_DEPLOYMENT_CHAINS
selectedChainIndex, trueIndex, Cycle.Prod, TARGET_DEPLOYMENT_CHAINS, TARGET_DEPLOYMENT_CHAINS, salt
);
}
}
2 changes: 1 addition & 1 deletion script/output/1/Ethereum-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/output/10/Optimism-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/output/137/Polygon-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/output/42161/Arbitrum-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/output/43114/Avalanche-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/output/56/Binance-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/output/8453/Base-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
28 changes: 23 additions & 5 deletions script/utils/run_script_mainnet_update_paymenthelper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,30 @@ source .env

echo Running Update PaymentHelper: ...

FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 0 --rpc-url $BSC_RPC_URL --broadcast --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92
#FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 0 --rpc-url $ETHEREUM_RPC_URL --broadcast --with-gas-price 35000000000 --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92

wait
#wait

FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 1 --rpc-url $POLYGON_RPC_URL --broadcast --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92
#FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 1 --rpc-url $BSC_RPC_URL --broadcast --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92

wait
#wait

#FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 2 --rpc-url $AVALANCHE_RPC_URL --broadcast --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92

#wait

#FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 3 --rpc-url $POLYGON_RPC_URL --broadcast --with-gas-price 150000000000 --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92

#wait

FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 2 --rpc-url $AVALANCHE_RPC_URL --broadcast --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92
#FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 4 --rpc-url $ARBITRUM_RPC_URL --broadcast --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92

#ait

#FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 5 --rpc-url $OPTIMISM_RPC_URL --broadcast --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92

#wait

FOUNDRY_PROFILE=default forge script script/UpdatePaymentHelper.s.sol:UpdatePaymentHelper --sig "updatePaymentHelper(uint256)" 6 --rpc-url $BASE_RPC_URL --broadcast --slow --account defaultKey --sender 0x48aB8AdF869Ba9902Ad483FB1Ca2eFDAb6eabe92

wait
2 changes: 1 addition & 1 deletion script/utils/verify_contracts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ contract_addresses=(
0x8b5dF72D849cC03baf168678FD357B81E00e2ba5
0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F
0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc
0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2
0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9
0x7483486862BDa9BA68Be4923E7E9945c2771Ec28
0xD85ec15A9F814D6173bF1a89273bFB3964aAdaEC
0xa195608C2306A26f727d5199D5A382a4508308DA
Expand Down
2 changes: 1 addition & 1 deletion script/v1_deployment/1/Ethereum-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/v1_deployment/10/Optimism-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/v1_deployment/137/Polygon-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/v1_deployment/42161/Arbitrum-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/v1_deployment/43114/Avalanche-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/v1_deployment/56/Binance-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
2 changes: 1 addition & 1 deletion script/v1_deployment/8453/Base-latest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"LiFiValidator": "0x8b5dF72D849cC03baf168678FD357B81E00e2ba5",
"PayMaster": "0xcA665d3e3D48fb3C1A2B743445e367fa4340Eb3F",
"PayloadHelper": "0x92f98d698d2c8E0f29D1bb4d75C3A03e05e811bc",
"PaymentHelper": "0xc435bFDd96f8B2e32f2647aD1d7E96546f97fFa2",
"PaymentHelper": "0xaDcA2c82D7A05b9E84F75AeAc466bE74B34066d9",
"SocketValidator": "0x7483486862BDa9BA68Be4923E7E9945c2771Ec28",
"SuperPositions": "0x01dF6fb6a28a89d6bFa53b2b3F20644AbF417678",
"SuperRBAC": "0x480bec236e3d3AE33789908BF024850B2Fe71258",
Expand Down
34 changes: 33 additions & 1 deletion src/payments/PaymentHelper.sol
Original file line number Diff line number Diff line change
Expand Up @@ -577,7 +577,7 @@ contract PaymentHelper is IPaymentHelper {
override
returns (uint256)
{
return _convertToNativeFee(srcChainId, estimateAckCostDefault(multi, ackAmbIds, srcChainId));
return _convertToSrcNativeAmount(srcChainId, estimateAckCostDefault(multi, ackAmbIds, srcChainId));
}

//////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -960,6 +960,38 @@ contract PaymentHelper is IPaymentHelper {
nativeFee = (dstUsdValue) / _getNativeTokenPrice(CHAIN_ID);
}

/// @dev helps convert a native token of one chain to another
/// @dev https://docs.soliditylang.org/en/v0.8.4/units-and-global-variables.html#ether-units
/// @dev all native tokens should be 18 decimals across all EVMs
function _convertToSrcNativeAmount(
uint64 srcChainId_,
uint256 dstAmount_
)
internal
view
returns (uint256 nativeFee)
{
if (dstAmount_ == 0) {
return 0;
}

/// @dev converts the native token value to usd value
/// @dev dstAmount_ is 18 decimal
/// @dev native token price is 8 decimal
uint256 dstUsdValue = dstAmount_ * _getNativeTokenPrice(CHAIN_ID);

if (dstUsdValue == 0) {
return 0;
}

/// @dev converts the usd value to source chain's native token
/// @dev native token price is 8 decimal which cancels the 8 decimal multiplied in previous step
uint256 nativeTokenPrice = _getNativeTokenPrice(srcChainId_);
if (nativeTokenPrice == 0) revert Error.INVALID_NATIVE_TOKEN_PRICE();

nativeFee = dstUsdValue / nativeTokenPrice;
}

/// @dev helps generate the new payload id
/// @dev next payload id = current payload id + 1
function _getNextPayloadId() internal view returns (uint256 nextPayloadId) {
Expand Down
20 changes: 20 additions & 0 deletions test/unit/crosschain-data/extensions/CoreStateRegistry.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -698,6 +698,26 @@ contract CoreStateRegistryTest is ProtocolActions {
console.log("defaultEstimateNativeSrc: %s", defaultEstimateNativeSrc);
}

function test_estimateWithNativeTokenPriceAsZero() public {
uint8[] memory ambIds_ = new uint8[](2);
ambIds_[0] = 1;
ambIds_[1] = 2;

_successfulMultiDeposit(ambIds_);
vm.selectFork(FORKS[AVAX]);

/// @dev setting native token price as zero
vm.prank(deployer);
PaymentHelper(getContract(AVAX, "PaymentHelper")).updateRemoteChain(AVAX, 1, abi.encode(address(0)));

vm.prank(deployer);
PaymentHelper(getContract(AVAX, "PaymentHelper")).updateRemoteChain(AVAX, 7, abi.encode(0));

assertEq(
PaymentHelper(getContract(AVAX, "PaymentHelper")).estimateAckCostDefaultNativeSource(true, ambIds_, ETH), 0
);
}

function test_ackGasCost_multi_paymentHelperComparison() public {
uint8[] memory ambIds_ = new uint8[](2);
ambIds_[0] = 1;
Expand Down
Loading
Loading