diff --git a/contracts/handlers/ERC20Handler.sol b/contracts/handlers/ERC20Handler.sol index 9ee4b087..4694f036 100644 --- a/contracts/handlers/ERC20Handler.sol +++ b/contracts/handlers/ERC20Handler.sol @@ -61,7 +61,7 @@ contract ERC20Handler is IHandler, ERCHandlerHelpers, DepositDataHelper, ERC20Sa lockERC20(tokenAddress, depositor, address(this), amount); } - return abi.encodePacked(convertToInternalBalance(tokenAddress, amount)); + return convertToInternalBalance(tokenAddress, amount); } /** diff --git a/contracts/handlers/ERCHandlerHelpers.sol b/contracts/handlers/ERCHandlerHelpers.sol index 8c9cf829..88e805ce 100644 --- a/contracts/handlers/ERCHandlerHelpers.sol +++ b/contracts/handlers/ERCHandlerHelpers.sol @@ -113,18 +113,19 @@ contract ERCHandlerHelpers is IERCHandler { @notice Converts token amount based on decimal places difference from current network to bridge. @param tokenAddress Address of contract to be used when executing proposals. @param amount The token amount with decimals on the current network. + @return 32-length byte array with internal bridge amount OR empty byte array if conversion is not needed. */ - function convertToInternalBalance(address tokenAddress, uint256 amount) internal view returns(uint256) { + function convertToInternalBalance(address tokenAddress, uint256 amount) internal view returns(bytes memory) { Decimals memory decimals = _tokenContractAddressToTokenProperties[tokenAddress].decimals; uint256 convertedBalance; if (!decimals.isSet) { - convertedBalance = amount; + return ""; } else if (decimals.externalDecimals >= defaultDecimals) { convertedBalance = amount / (10 ** (decimals.externalDecimals - defaultDecimals)); } else { convertedBalance = amount * (10 ** (defaultDecimals - decimals.externalDecimals)); } - return convertedBalance; + return abi.encodePacked(convertedBalance); } } diff --git a/contracts/handlers/NativeTokenHandler.sol b/contracts/handlers/NativeTokenHandler.sol index 3abe65d1..948f88cd 100644 --- a/contracts/handlers/NativeTokenHandler.sol +++ b/contracts/handlers/NativeTokenHandler.sol @@ -67,7 +67,7 @@ contract NativeTokenHandler is IHandler, ERCHandlerHelpers, DepositDataHelper { address tokenAddress = _resourceIDToTokenContractAddress[resourceID]; - return abi.encodePacked(convertToInternalBalance(tokenAddress, amount)); + return convertToInternalBalance(tokenAddress, amount); } /** diff --git a/contracts/handlers/XC20Handler.sol b/contracts/handlers/XC20Handler.sol index a6e9c393..453e2c09 100644 --- a/contracts/handlers/XC20Handler.sol +++ b/contracts/handlers/XC20Handler.sol @@ -52,7 +52,7 @@ contract XC20Handler is IHandler, ERCHandlerHelpers, XC20Safe { lockERC20(tokenAddress, depositor, address(this), amount); } - return abi.encodePacked(convertToInternalBalance(tokenAddress, amount)); + return convertToInternalBalance(tokenAddress, amount); } /**