Internet Computer

Overview

Internet Computer (ICP) is the native asset of the Internet Computer blockchain. It utilizes:

  • Account model.
  • Threshold ECDSA and Ed25519 signature algorithms for cryptographic operations.

Internet Computer is a blockchain platform designed to host canister-based smart contracts that run at web speed while offering infinite scalability and trustless computing. It eliminates the need for traditional cloud services by executing computations directly on the decentralized network. BitGo implements with ICP using the Rosetta API, since full-node hosting isn't feasible for this chain.

Explorer

https://www.icpexplorer.org

Wallets Types

BitGo enables holding tao in the following wallet types:

Multisig ColdMultisig HotMPC ColdMPC Hot
Custody
Self-Custody

Ticker Symbols

MainnetTestnet
ICPTICP

Units

Internet Computer is divisible by 10-8 and the base unit is an eights (e8s):

  • 1 Internet Computer = 100,000,000 eights
  • 1 eights = 0.00000001 Internet Computer

You can pass balances in string or integer format. However, BitGo recommends using string format to ensure values don't exceed the programmable number limit.

Tokens

Tokens on the Internet Computer are implemented using canisters that follow the ICRC standards. Each token has its own ledger canister to manage balances and transactions, enabling interoperability across decentralized applications and services on the network.

Fees

Internet Computer fees are dynamic, with no fixed minimum or default rates. Instead of traditional gas fees paid by users, the Internet Computer uses a reverse gas model, where canisters (smart contracts) pay for computation using a resource unit called cycles.

Reverse Gas Model: On the Internet Computer, users interact with decentralized apps (dapps) without needing to pay fees. Instead, developers are responsible for funding their canisters by converting ICP tokens into cycles. This design offers a seamless Web2-like experience for end users, removing the need for tokens, wallets, or manual approvals.

1 trillion cycles = 1 XDR (approx. $1.33 USD)

Create Wallet

  • cURL
  • JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="ticp" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export LABEL="<DESIRED_WALLET_NAME>" export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>" export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" curl -X POST \ http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/generate \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "label": "'"$LABEL"'", "passphrase": "'"$PASSPHRASE"'", "enterprise": "'"$ENTERPRISE_ID"'", "disableTransactionNotifications": true, "disableKRSEmail": true }'

Create Address

You can create receive addresses derived from your root key.

  • cURL
  • JavaScript
1 2 3 4 5 6 7 8 export COIN="ticp" export WALLET_ID="<YOUR_WALLET_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X POST \ https://app.bitgo-test.com/api/v2/$COIN/wallet/$WALLET_ID/address \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN"

Consolidate Balance

We are supporting memo based addresses. Therefore, consolidation is not required.

Estimate Fee

  • cURL
  • JavaScript
1 2 3 4 5 6 7 export COIN="ticp" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X GET \ https://app.bitgo-test.com/api/v2/$COIN/tx/fee \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN"

Transact

  • cURL
  • cURL (send to many)
  • JavaScript
  • JavaScript (send to many)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="ticp" export WALLET_ID="<YOUR_WALLET_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export ADDRESS="<DESTINATION_ADDRESS>" export AMOUNT="<AMOUNT_IN_BASE_UNITS>" export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>" curl -X POST \ http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/sendcoins \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "address": "'"$ADDRESS"'", "amount": "'"$AMOUNT"'", "walletPassphrase": "'"$WALLET_PASSPHRASE"'" }'

See Also