diff --git a/src/core/ExocoreGateway.sol b/src/core/ExocoreGateway.sol index 2f6503d6..c696ba50 100644 --- a/src/core/ExocoreGateway.sol +++ b/src/core/ExocoreGateway.sol @@ -170,6 +170,13 @@ contract ExocoreGateway is } /// @inheritdoc IExocoreGateway + /// @notice Tokens can only be normal reward-bearing LST tokens like wstETH, rETH, jitoSol... + /// And they are not intended to be: 1) rebasing tokens like stETH, since we assume staker's + /// balance would not change if nothing is done after deposit, 2) fee-on-transfer tokens, since we + /// assume Vault would account for the amount that staker transfers to it. + /// @notice If we want to activate client chain's native restaking, we should add the corresponding virtual + /// token address to the whitelist, bytes32(bytes20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)) for Ethereum + /// native restaking for example. function addOrUpdateWhitelistTokens( uint32 clientChainId, bytes32[] calldata tokens, diff --git a/src/core/Vault.sol b/src/core/Vault.sol index 57c9acc6..c5fc99ba 100644 --- a/src/core/Vault.sol +++ b/src/core/Vault.sol @@ -34,6 +34,10 @@ contract Vault is Initializable, VaultStorage, IVault { /// @notice Initializes the Vault contract. /// @param underlyingToken_ The address of the underlying token. /// @param gateway_ The address of the gateway contract. + /// @dev Vault only works with normal ERC20 like reward-bearing LST tokens like wstETH, rETH. + /// And It is not intended to be used for: 1) rebasing token like stETH, since we assume staker's + /// balance would not change if nothing is done after deposit, 2) fee-on-transfer token, since we + /// assume Vault would account for the amount that staker transfers to it. function initialize(address underlyingToken_, address gateway_) external initializer { if (underlyingToken_ == address(0) || gateway_ == address(0)) { revert Errors.ZeroAddress();