The ISC Magic Contract
EVM and ISC are inherently very different platforms. Some EVM-specific actions (e.g., manipulating Ethereum tokens) are disabled, and EVM contracts can access ISC-specific functionality through the _ISC Magic Contract__.
The Magic contract is an EVM contract deployed by default on every ISC chain, in the EVM genesis block, at
address 0x1074000000000000000000000000000000000000
.
The implementation of the Magic contract is baked-in in
the evm
core contract;
i.e. it is not a pure-Solidity contract.
The Magic contract has several methods, which are categorized into specialized
interfaces: ISCSandbox
, ISCAccounts
, ISCUtil
and so on.
You can access these interfaces from any Solidity contract by importing
the ISC library:
yarn add @iota/iscmagic
You can import it into your contracts like this:
import "@iota/iscmagic/ISC.sol";
The Magic contract also provides proxy ERC20 contracts to manipulate ISC base tokens and native tokens on L2.