On this page

latest contributor to this doc

Last Edit:

@smk762

enable_eth_with_tokens

The Komodo DeFi Framework supports ETH(Ethereum) and many other EVM type platform coins like AVAX(Avalanche), BNB(Binance), FTM(Fantom), MATIC(Polygon), ONE(Harmony), ETH-ARB20(Arbitrum). Additionally, it supports ERC20 tokens on the ETH chain and associated ERC20 like tokens on the rest of the platform coin chains.Using this method, you can enable a platform coin along with multiple ERC20 like tokens of the platform coin chain in a single command.

Parameter* = requiredTypeDescription
erc20_tokens_requests*
array of objects
A list of standard TokensRequest objects.
fallback_swap_contract*
string
Address of backup etomic swap smart contract.
nodes*
array of objects
A list of standard CoinNode objects.
swap_contract_address*
string
Address of etomic swap smart contract
ticker*
string
Ticker of the platform protocol coin. Options: ETH, AVAX, BNB, FTM, MATIC, ONE, ETH-ARB20
gas_station_decimals
integer
default: `8`
Optional. For ETH/ERC20 and other gas model chains. Defines the decimals used to denominate the gas station response to gwei units. For example, the ETH gas station uses 8 decimals, which means that "average": 860 is equal to 86 gwei. While the Matic gas station uses 9 decimals, so 860 would mean 860 gwei exactly.
gas_station_policy.policy
string
default: `"MeanAverageFast"`
Optional. For ETH/ERC20 and other gas model chains. Defines the method of gas price calculation from the station response. "MeanAverageFast" will use the mean between average and fast fields. "Average" will return a simple average value.
get_balances
boolean
default: `true`
Optional. If false, coin and token balances will not be returned in the response, and the response will be returned more quickly.
mm2
integer
Optional. Required if not set in coins file. Informs the Komodo DeFi Framework API whether or not the coin is expected to function. Accepted values are 0 or 1
nft_req
object
Optional. Encapsulates the request parameters for NFT activation, including NFT provider configuration. A standard NftProvider object.
priv_key_policy
object
default: `{"type": "ContextPrivKey"}`
Optional. A standard PrivKeyPolicy object.
required_confirmations
integer
default: `3`
Optional. When the platform coin is involved, the number of confirmations for the Komodo DeFi Framework API to wait during the transaction steps of an atomic swap
requires_notarization
boolean
default: `false`
Optional. If true, coins protected by Komodo Platform's dPoW security will wait for a notarization before progressing to the next atomic swap transactions step.
rpc_mode
string
default: `Default`
Optional. Value can be Metamask only when the Komodo DeFi Framework is built targeting wasm.
swap_v2_contracts
object
Optional. Must be provided if "use_trading_proto_v2" is true in your configuration. A standard SwapV2Contracts object.
tx_history
boolean
default: `false`
Optional. If true the Komodo DeFi Framework API will preload transaction history as a background process. Must be set to true to use the my_tx_history method

When running in HD mode, do not use the nft_req object paramater when activating your NFT network coins. Instead, use the enable_nft method after activating.

Parameter* = requiredTypeDescription
current_block*
integer
Block height of the coin being activated
erc20_addresses_infos*
object
A standard AddressInfo object. Note: the structure may vary based on the value of the get_balances parameter.
eth_addresses_infos*
object
A standard AddressInfo object. Note: the structure may vary based on the value of the get_balances parameter.
nfts_infos*
list
A list of standard NftInfoBasic objects.

POST
enable_eth_with_tokens
{
  "method": "enable_eth_with_tokens",
  "mmrpc": "2.0",
  "params": {
    "erc20_tokens_requests": [
      {
        "required_confirmations": 4,
        "ticker": "APE-ERC20"
      },
      {
        "required_confirmations": 4,
        "ticker": "MINDS-ERC20"
      }
    ],
    "fallback_swap_contract": "0x8500AFc0bc5214728082163326C2FF0C73f4a871",
    "gas_station_decimals": 8,
    "gas_station_policy": {
      "policy": "MeanAverageFast"
    },
    "gas_station_url": "https://ethgasstation.info/json/ethgasAPI.json",
    "mm2": 1,
    "nodes": [
      {
        "url": "https://eth.drpc.org",
        "ws_url": "wss://eth.drpc.org"
      },
      {
        "url": "https://eth3.cipig.net:18555",
        "ws_url": "wss://eth3.cipig.net:38555"
      }
    ],
    "priv_key_policy": {
      "type": "ContextPrivKey"
    },
    "required_confirmations": 5,
    "requires_notarization": false,
    "swap_contract_address": "0x24ABE4c71FC658C91313b6552cd40cD808b3Ea80",
    "ticker": "ETH",
    "tx_history": true
  },
  "userpass": "RPC_UserP@SSW0RD"
}

{
  "mmrpc": "2.0",
  "result": {
      "current_block": 20590537,
      "eth_addresses_infos": {
          "0x083C32B38e8050473f6999e22f670d1404235592": {
              "derivation_method": {
                  "type": "Iguana"
              },
              "pubkey": "04ec603f83519cc2150bd99ed0ed6b3f7f029dedff2957cd22542e2504e3d2a7953c084f907cce2f0e26fb0cfc55e06925bf0f88a92b904224dba8ebafdf98ce7b",
              "balances": {
                  "spendable": "0",
                  "unspendable": "0"
              }
          }
      },
      "erc20_addresses_infos": {
          "0x083C32B38e8050473f6999e22f670d1404235592": {
              "derivation_method": {
                  "type": "Iguana"
              },
              "pubkey": "04ec603f83519cc2150bd99ed0ed6b3f7f029dedff2957cd22542e2504e3d2a7953c084f907cce2f0e26fb0cfc55e06925bf0f88a92b904224dba8ebafdf98ce7b",
              "balances": {
                  "BUSD-ERC20": {
                      "spendable": "0",
                      "unspendable": "0"
                  },
                  "MINDS-ERC20": {
                      "spendable": "0",
                      "unspendable": "0"
                  },
                  "APE-ERC20": {
                      "spendable": "0",
                      "unspendable": "0"
                  },
                  "BCH-ERC20": {
                      "spendable": "0",
                      "unspendable": "0"
                  }
              }
          }
      },
      "nfts_infos": {}
  },
  "id": null
}

POST
enable_eth_with_tokens
{
  "method": "enable_eth_with_tokens",
  "mmrpc": "2.0",
  "params": {
    "erc20_tokens_requests": [
      {
        "required_confirmations": 4,
        "ticker": "PGX-PLG20"
      },
      {
        "required_confirmations": 4,
        "ticker": "AAVE-PLG20"
      }
    ],
    "fallback_swap_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE",
    "gas_station_url": "https://gasstation-mainnet.matic.network/",
    "get_balances": false,
    "nodes": [
      {
        "url": "https://pol3.cipig.net:18755",
        "ws_url": "wss://pol3.cipig.net:38755"
      },
      {
        "url": "https://polygon-bor-rpc.publicnode.com",
        "ws_url": "wss://polygon-bor-rpc.publicnode.com"
      }
    ],
    "required_confirmations": 5,
    "requires_notarization": false,
    "swap_contract_address": "0x9130b257D37A52E52F21054c4DA3450c72f595CE",
    "swap_v2_contracts": {
      "maker_swap_v2_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE",
      "nft_maker_swap_v2_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE",
      "taker_swap_v2_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE"
    },
    "ticker": "MATIC",
    "tx_history": false
  },
  "userpass": "RPC_UserP@SSW0RD"
}

{
    "mmrpc": "2.0",
    "result": {
        "current_block": 60937035,
        "eth_addresses_infos": {
            "0x083C32B38e8050473f6999e22f670d1404235592": {
                "derivation_method": {
                    "type": "Iguana"
                },
                "pubkey": "04ec603f83519cc2150bd99ed0ed6b3f7f029dedff2957cd22542e2504e3d2a7953c084f907cce2f0e26fb0cfc55e06925bf0f88a92b904224dba8ebafdf98ce7b"
            }
        },
        "erc20_addresses_infos": {
            "0x083C32B38e8050473f6999e22f670d1404235592": {
                "derivation_method": {
                    "type": "Iguana"
                },
                "pubkey": "04ec603f83519cc2150bd99ed0ed6b3f7f029dedff2957cd22542e2504e3d2a7953c084f907cce2f0e26fb0cfc55e06925bf0f88a92b904224dba8ebafdf98ce7b",
                "tickers": [
                    "PGX-PLG20",
                    "AAVE-PLG20"
                ]
            }
        },
        "nfts_infos": {}
    },
    "id": null
}

POST
enable_eth_with_tokens
{
  "method": "enable_eth_with_tokens",
  "mmrpc": "2.0",
  "params": {
    "erc20_tokens_requests": [
      {
        "required_confirmations": 4,
        "ticker": "PGX-PLG20"
      },
      {
        "required_confirmations": 4,
        "ticker": "AAVE-PLG20"
      }
    ],
    "fallback_swap_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE",
    "gas_station_url": "https://gasstation-mainnet.matic.network/",
    "get_balances": false,
    "nft_req": {
      "provider": {
        "info": {
          "url": "https://moralis-proxy.komodo.earth"
        },
        "type": "Moralis"
      }
    },
    "nodes": [
      {
        "url": "https://pol3.cipig.net:18755",
        "ws_url": "wss://pol3.cipig.net:38755"
      },
      {
        "url": "https://polygon-bor-rpc.publicnode.com",
        "ws_url": "wss://polygon-bor-rpc.publicnode.com"
      }
    ],
    "required_confirmations": 5,
    "requires_notarization": false,
    "swap_contract_address": "0x9130b257D37A52E52F21054c4DA3450c72f595CE",
    "ticker": "MATIC",
    "tx_history": false
  },
  "userpass": "RPC_UserP@SSW0RD"
}

{
  "mmrpc": "2.0",
  "result": {
      "current_block": 61329162,
      "eth_addresses_infos": {
          "0x083C32B38e8050473f6999e22f670d1404235592": {
              "derivation_method": {
                  "type": "Iguana"
              },
              "pubkey": "04d8064eece4fa5c0f8dc0267f68cee9bdd527f9e88f3594a323428718c391ecc2a91c9ce32b6fc5489c49e33b688423b655177168afee1b128be9b2fee67e3f3b"
          }
      },
      "erc20_addresses_infos": {
          "0x083C32B38e8050473f6999e22f670d1404235592": {
              "derivation_method": {
                  "type": "Iguana"
              },
              "pubkey": "04d8064eece4fa5c0f8dc0267f68cee9bdd527f9e88f3594a323428718c391ecc2a91c9ce32b6fc5489c49e33b688423b655177168afee1b128be9b2fee67e3f3b",
              "tickers": [
                  "PGX-PLG20",
                  "AAVE-PLG20"
              ]
          }
      },
      "nfts_infos": {
          "0x73a5299824cd955af6377b56f5762dc3ca4cc078,1": {
              "token_address": "0x73a5299824cd955af6377b56f5762dc3ca4cc078",
              "token_id": "1",
              "chain": "POLYGON",
              "contract_type": "ERC721",
              "amount": "1"
          },
          "0x3987dfed574927e7a3309758ccf949ad2403fcbb,1": {
              "token_address": "0x3987dfed574927e7a3309758ccf949ad2403fcbb",
              "token_id": "1",
              "chain": "POLYGON",
              "contract_type": "ERC1155",
              "amount": "1"
          }
      }
  },
  "id": null
}

Prior to coin activation using WalletConnect, you need to establish a connection with wc_new_connection

POST
enable_eth_with_tokens
{
  "method": "enable_eth_with_tokens",
  "mmrpc": "2.0",
  "params": {
    "erc20_tokens_requests": [
      {
        "required_confirmations": 4,
        "ticker": "PEPE-ERC20"
      }
    ],
    "fallback_swap_contract": "0x8500AFc0bc5214728082163326C2FF0C73f4a871",
    "gas_station_decimals": 8,
    "gas_station_policy": {
      "policy": "MeanAverageFast"
    },
    "gas_station_url": "https://ethgasstation.info/json/ethgasAPI.json",
    "mm2": 1,
    "nodes": [
      {
        "url": "https://eth3.cipig.net:18555",
        "ws_url": "wss://eth3.cipig.net:38555"
      },
      {
        "url": "https://ethereum-rpc.publicnode.com",
        "ws_url": "wss://ethereum-rpc.publicnode.com"
      }
    ],
    "priv_key_policy": {
      "data": "3569914dd09a5cc4ac92dedab354f06ff5db17ef616233a8ba562cbea51269fd",
      "type": "WalletConnect"
    },
    "required_confirmations": 5,
    "rpc_mode": "Default",
    "swap_contract_address": "0x24ABE4c71FC658C91313b6552cd40cD808b3Ea80",
    "ticker": "ETH",
    "tx_history": true
  },
  "userpass": "RPC_UserP@SSW0RD"
}

StructureTypeDescription
CoinProtocolParseErrorstringParsing the protocol of the platform coin you are trying to activate failed
InternalErrorstringThe request was failed due to an Komodo DeFi Framework API internal error
PlatformCoinCreationErrorstringThere was an error when trying to activate the platform coin
PlatformConfigIsNotFoundstringConfig of the platform coin you are trying to activate is not found
PlatformIsAlreadyActivatedstringThe platform coin you are trying to activate is already activated
PrivKeyNotAllowedstringThe privkey is not allowed
TokenConfigIsNotFoundstringConfig of the token you are trying to activate is not found
TokenProtocolParseErrorstringParsing the protocol of the token you are trying to activate failed
TransportstringThe request was failed due to a network error
UnexpectedDerivationMethodstringThe derivation method used is unexpected
UnexpectedPlatformProtocolstringUnexpected platform protocol found for the platform coin you are trying to activate
UnexpectedTokenProtocolstringUnexpected protocol is found in the config of the token you are trying to activate

In this case, you need to disable the platform coin and try again.

{
    "mmrpc": "2.0",
    "error": "ETH",
    "error_path": "platform_coin_with_tokens",
    "error_trace": "platform_coin_with_tokens:297]",
    "error_type": "PlatformIsAlreadyActivated",
    "error_data": "ETH",
    "id": null
}

{
    "mmrpc": "2.0",
    "error": "Platform ETH config is not found",
    "error_path": "platform_coin_with_tokens.prelude",
    "error_trace": "platform_coin_with_tokens:302] prelude:79]",
    "error_type": "PlatformConfigIsNotFound",
    "error_data": "ETH",
    "id": null
}

{
    "mmrpc": "2.0",
    "error": "Platform coin ETH protocol parsing failed: invalid type: null, expected adjacently tagged enum CoinProtocol",
    "error_path": "platform_coin_with_tokens.prelude",
    "error_trace": "platform_coin_with_tokens:302] prelude:82]",
    "error_type": "CoinProtocolParseError",
    "error_data": {
        "ticker": "ETH",
        "error": "invalid type: null, expected adjacently tagged enum CoinProtocol"
    },
    "id": null
}

{
    "mmrpc": "2.0",
    "error": "Unexpected platform protocol QTUM for ETH",
    "error_path": "platform_coin_with_tokens.prelude.eth_with_token_activation",
    "error_trace": "platform_coin_with_tokens:302] prelude:90] eth_with_token_activation:64]",
    "error_type": "UnexpectedPlatformProtocol",
    "error_data": { "ticker": "ETH", "protocol": { "type": "QTUM" } },
    "id": null
}

{
    "mmrpc": "2.0",
    "error": "Token BTUSD-ERC20 config is not found",
    "error_path": "platform_coin_with_tokens.prelude",
    "error_trace": "platform_coin_with_tokens:314] platform_coin_with_tokens:109] prelude:79]",
    "error_type": "TokenConfigIsNotFound",
    "error_data": "BTUSD-ERC20",
    "id": null
}

{
    "mmrpc": "2.0",
    "error": "Token BUSD-ERC20 protocol parsing failed: unknown variant `TERC20`, expected one of `UTXO`, `QTUM`, `QRC20`, `ETH`, `ERC20`, `TENDERMINT`, `TENDERMINTTOKEN`, `LIGHTNING`, `SOLANA`, `SPLTOKEN`, `ZHTLC`",
    "error_path": "platform_coin_with_tokens.prelude",
    "error_trace": "platform_coin_with_tokens:314] platform_coin_with_tokens:109] prelude:82]",
    "error_type": "TokenProtocolParseError",
    "error_data": {
        "ticker": "BUSD-ERC20",
        "error": "unknown variant `TERC20`, expected one of `UTXO`, `QTUM`, `QRC20`, `ETH`, `ERC20`, `TENDERMINT`, `TENDERMINTTOKEN`, `LIGHTNING`, `SOLANA`, `SPLTOKEN`, `ZHTLC`"
    },
    "id": null
}

{
    "mmrpc": "2.0",
    "error": "Unexpected token protocol QRC20 { platform: \"ETH\", contract_address: \"0x4Fabb145d64652a948d72533023f6E7A623C7C53\" } for BUSD-ERC20",
    "error_path": "platform_coin_with_tokens.prelude.erc20_token_activation",
    "error_trace": "platform_coin_with_tokens:314] platform_coin_with_tokens:109] prelude:90] erc20_token_activation:58]",
    "error_type": "UnexpectedTokenProtocol",
    "error_data": {
        "ticker": "BUSD-ERC20",
        "protocol": {
            "type": "QRC20",
            "protocol_data": {
                "platform": "ETH",
                "contract_address": "0x4Fabb145d64652a948d72533023f6E7A623C7C53"
            }
        }
    },
    "id": null
}

Returned when the rpc_mode parameter is set to Metamask but the Komodo DeFi Framework was not built targeting wasm.

{
    "mmrpc": "2.0",
    "error": "Error parsing request: unknown variant `Metamask`, expected `Default`",
    "error_path": "dispatcher",
    "error_trace": "dispatcher:118]",
    "error_type": "InvalidRequest",
    "error_data": "unknown variant `Metamask`, expected `Default`",
    "id": null
}

Returned when coin nodes are unresponsive.

{
    "mmrpc": "2.0",
    "error": "Failed to get client version for all nodes",
    "error_path": "platform_coin_with_tokens.mod",
    "error_trace": "platform_coin_with_tokens:454] mod:717]",
    "error_type": "Transport",
    "error_data": "Failed to get client version for all nodes",
    "id": null
}