Skip to main content

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.