diff --git a/contracts/InterchainTokenFactory.sol b/contracts/InterchainTokenFactory.sol index 2c042e58..83d83cb2 100644 --- a/contracts/InterchainTokenFactory.sol +++ b/contracts/InterchainTokenFactory.sol @@ -120,8 +120,9 @@ contract InterchainTokenFactory is IInterchainTokenFactory, ITokenManagerType, M * @param name The name of the token. * @param symbol The symbol of the token. * @param decimals The number of decimals for the token. - * @param initialSupply The amount of tokens to mint initially (can be zero). - * @param minter The address to receive the initially minted tokens. + * @param initialSupply The amount of tokens to mint initially (can be zero), allocated to the msg.sender. + * @param minter The address to receive the minter and operator role of the token, in addition to ITS. If it is set to `address(0)`, + * the additional minter isn't set, and can't be added later. This allows creating tokens that are managed only by ITS, reducing trust assumptions. * @return tokenId The tokenId corresponding to the deployed InterchainToken. */ function deployInterchainToken( diff --git a/contracts/InterchainTokenService.sol b/contracts/InterchainTokenService.sol index b997e98e..f96bc72a 100644 --- a/contracts/InterchainTokenService.sol +++ b/contracts/InterchainTokenService.sol @@ -313,8 +313,10 @@ contract InterchainTokenService is /** * @notice Used to deploy an interchain token alongside a TokenManager in another chain. * @dev At least the `gasValue` amount of native token must be passed to the function call. `gasValue` exists because this function can be - * part of a multicall involving multiple functions that could make remote contract calls. If the `minter` parameter is empty bytes then - * a mint/burn TokenManager is used, otherwise a lock/unlock TokenManager is used. + * part of a multicall involving multiple functions that could make remote contract calls. + * If minter is empty bytes, no additional minter is set on the token, only ITS is allowed to mint. + * If the token is being deployed on the current chain, minter should correspond to an EVM address (as bytes). + * Otherwise, an encoding appropriate to the destination chain should be used. * @param salt The salt to be used during deployment. * @param destinationChain The name of the destination chain to deploy to. * @param name The name of the token to be deployed. diff --git a/contracts/interfaces/IInterchainTokenFactory.sol b/contracts/interfaces/IInterchainTokenFactory.sol index c9751c05..ea07bbe2 100644 --- a/contracts/interfaces/IInterchainTokenFactory.sol +++ b/contracts/interfaces/IInterchainTokenFactory.sol @@ -63,7 +63,7 @@ interface IInterchainTokenFactory is IUpgradable, IMulticall { * @param name The name of the token. * @param symbol The symbol of the token. * @param decimals The number of decimals for the token. - * @param initialSupply The amount of tokens to mint initially (can be zero). + * @param initialSupply The amount of tokens to mint initially (can be zero), allocated to the msg.sender. * @param minter The address to receive the initially minted tokens. * @return tokenId The tokenId corresponding to the deployed InterchainToken. */ diff --git a/contracts/interfaces/ITokenManagerType.sol b/contracts/interfaces/ITokenManagerType.sol index 552f6df7..ca545b5b 100644 --- a/contracts/interfaces/ITokenManagerType.sol +++ b/contracts/interfaces/ITokenManagerType.sol @@ -13,6 +13,6 @@ interface ITokenManagerType { LOCK_UNLOCK, // The token will be locked/unlocked at the token manager. LOCK_UNLOCK_FEE, // The token will be locked/unlocked at the token manager, which will account for any fee-on-transfer behaviour. MINT_BURN, // The token will be minted/burned on transfers. The token needs to give mint and burn permission to the token manager. - GATEWAY // The token will be sent throught the gateway via callContractWithToken + GATEWAY // The token will be sent through the gateway via callContractWithToken } }