Introduction
Ink! V6, is a major turnaround on how Substrate chains interpret deployed Smart contract code. Compared to earlier versions, V6 is not exactly the same in terms of how the code is compiled and interacts with the host Substrate chains. One of the major directions Polkadot is taking in terms of interoperability and developer support, culminates to support for the largest Blockchain developer community, Solidity programming.
With V6, ink! smart contracts (written in Rust) are able to directly talk to Solidity contracts, something like a cross-contract call. To allow for this cross ecosystem communication, ink! V6 has an improved account system that allows more sophisticated representation of Blockchain accounts. Prior versions of Ink! would deploy smart contracts and give a Substrate-based (or chain dependent). V6, on the other hand introduces new type to represent an AccountID allowing direct support for EVM-based addresses (which are 20 bytes long).
With new changes come new problems and one introduced by the V6 update has to do with passing a H160 account to a smart contract call. For visual comparisons, these two extrinsic receive an address as one of its arguments. Contracts UI provides a dropdown to select your address (for AccountID), but expects a 32 bytes hex as the address but no dropdown is provided for the type of H160. Obtaining this account type is not intuitive either, but this guide will show you how can get through this, until this bug is resolved.


Why Introduce H160 Account Type
The address type H160 is an EVM-based format of addresses. It starts with 0x and is followed by 20 bytes of hexadecimal characters. This format is useful to allow ink! contracts to directly interact with Solidity contracts, allow the ink contracts to receive tokens (and messages) from EVM-based accounts. While the original AccountId is still supported (for Substrate based representations), the new H160 type is also added (to represent EVM-based accounts). Internally, the ink contract automatically converts a Substrate based account to its equivalent H160 account using 1 round of Keccak256 and prefixing the last 20 bytes with .