Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Tip

This guide is designed to help you connect your CAS to a working BitGo Express server.

This article presumes you have a functioning Bitgo Express node server.

  • If you do not

already
  • have

an operating server
  • a server setup, or are uncertain, please see:

Setup a Node

BitGo Express is designed, created, and written supported by BitGo for their BitGo website wallet.

  • This 2024 article is intended to help you find the necessary CAS parameters from your Bitgo account and their Bitgo Express software.


Info

BitGo holds and secures your cryptocurrency keys.

BitGo Wallet is a hot wallet option in the Crypto Application Server (CAS).

BitGo Express is used to interface with BitGo. CAS does not interact with BitGo directly. 


1

.

) Assemble your BitGo Express parameters for CAS

:

.

Parameters are required: host : port : token : wallet_id : wallet_passphrase

Your actual host & port will be reported by BitGo Express:

Image Removed

port: 3080 is the default port, and is used in most every case & examples below.

InfoUnderstanding

  • Other parameters may be offered, but are not absolutely required. We suggest you get your Crypto Setting working properly, before adjusting those optional parameters.

a) host:port

The host:port parameters identify the location (on the Internet) of your Bitgo Express server. You must operate a Bitgo Express server to use a Bitgo-based Crypto Setting.

host”:

The

“host”

host is where CAS will steer RPC communications: the target Bitgo Express server. The server will vary upon your implementation, and the IP

will vary depending upon your actual assigned IP for your server

address will always be different from the provided example.

  • host

: is normally http://localhost when
  • a) using a SSH tunnel, or

  • b) Bitgo Express is running on the same server as CAS (not recommended).

  • is the target BitGo Express server IP when using the GB Wallet Tunnel,

the host is the target BitGo Express server, 123123123
    • 012

    • The GB Wallet Tunnel will attempt to connect to your BitGo Express server at that IP.

2. Prepare your developer API token at BitGo.

To create a new access token:

Image Removed
  • Use http://localhost when:

    • a) using an (unsupported) SSH tunnel, or

    • b) Bitgo Express is running on the same server as CAS (not recommended).

“port”:

3080 is the default port, and is used in most every case & all examples below.


b) token

API tokens are generated by you (the Bitgo user) on demand, here’s how:

I) Login to your Bitgo account.

II) Navigate to your Enterprise settings.

image-20241021-134927.pngImage Addedimage-20241021-135418.pngImage Added

III) Click +Create Access Token.

image-20241021-144421.pngImage Added

IV) Configure the new access token’s settings and permissions.

image-20241021-153135.pngImage AddedImage Removed
  1. Enter a descriptive name for the API token.

  • “Spending Limits” should be non-zero. Enter appropriate amounts.

  • Enter your BitGo Express node server IP.

  • Enable all permissions by checking all boxes.

  • Agree to the terms, and click "Add Token".

    1. Set a reasonable expiration date. The default is 1 week - which is far too short for production use. Increase the expiration to a year (or more), and always delete unused tokens.

    2. Enable all permissions for testing. Upon success, you can then play with increased restrictions.

    3. Enter the IP address of your Bitgo Express node.

    4. Read the agreements, and check “I agree” when it is honest.

    5. Enter your 2FA code (after everything else has been entered).

    6. And finally: create the token.

    Note: Spending Limits” can be zero, but you should put in some limit to comply with “best practices”.

    Image RemovedLocate your

    The token generated is the “token” parameter required in your Crypto Settings.

    image-20241021-154422.pngImage Added

    c) wallet_id

    The wallet_id

    in your BitGo wallet settings:Image RemovedImage RemovedImage RemovedDetermine your wallet_passphrase.

    parameter is located in the relevant wallet settings. Start at “Assets”.

    Click on the asset/wallet whose ID you seek to identify.

    image-20241021-160156.pngImage Added

    Drill down further into the coin/asset/wallet that you wish to use.

    image-20241021-160601.pngImage Added

    Locate that Wallet ID in Settings.

    image-20241021-160945.pngImage Added

    Save it.

    d) wallet_passphrase

    Normally this is your account password (by default) -unless- you created a new wallet and chose a separate password (which is recommended)

    .3.

    . In that case, the wallet_passphrase is set on the same page as the Wallet ID.

    • If you haven’t set a specific wallet password, use your account password.

    image-20241021-161553.pngImage Added

    2) Enter the assembled parameters into CAS

    :

    .

    Initially, set only the required parameters (shown). After a successful test, you should insert any additional/optional parameters that you feel are useful.

    a) Select BitGo Wallet

    b) Parameters:    

    host : port : token : wallet_id : wallet_passphrase : num_blocks : fee_rate : max_fee_rate

    In this example, using the aboverequired parameters only, our "Parameters" looks like this (all one line, no spaces):

    Code Block
    http://localhost123.456.789.012:3080:v2x922bc21177ad708ebbce21fbd7bb4faba5e5f71d7364a901ac6387bd18402aa4:5b58f06d239b32e506435b664b72945d:b788PqEE8cwtFP8nsJTd
    Warning

    NOTE: due to a recent bug, all 3 “optional” parameters ARE NOT OPTIONAL.

    • You must include them in your parameter string with (at least) the suggested values.

    4.
    • When entering a parameter string, the string must be completely entered every time.

      • i.e. you cannot just replace the “host” or “token” values without entering the other values as well.


    3) Enable the GB Wallet Tunnel and enter the tunnel password:

    • The BE (Bitgo Express) node should always be on a dedicated & separate server.

    • The GB Wallet Tunnel offers a nativeopen source, secure SSH tunnel connection to the BE node.

    • Leave it this disabled if you use, understand, and deploy manage your own alternate form of SSH tunnel.


    5.

    4) Save the Crypto Setting!


    6.

    5) Reload the Crypto Setting, and test what you just saved.

    Tip

    Test your settings before deploying them.

    1. Save your setting first,

    2. return to the same Crypto Setting,

    3. run the Hot Wallet test(s).

    See: https://generalbytes.atlassian.net/l/cp/9Zdit1KP

    Note
    NOTE

    ETHEREUM:

    You must have an INSTITUTIONAL account with Bitgo to send or receive ETH (or any ETH derivatives), including USDT ERC-20.

    • Please ensure you’ve funded your Bitgo ETH wallet to cover gas fees before attempting any live tests.

    • The tests will fail if the wallet is unfunded (while Crypto Tests will pass).Settings tests will pass).

    Note

    TRX/TRON

    USDT TRC-20 will require a TRON (TRX) wallet on Bitgo. After the TRON wallet is created (and funded with 100 TRX), you can send USDT to that same address (and send USDT to customers).

    • Bitgo will only permit a single TRX wallet for it’s FREE tier.

    • USDT:TRX requires an INSTITUTIONAL account for successful SELL transactions.


    Troubleshooting Tips:

    The Hot Wallet BUY test validates your Hot Wallet parameters (only).

    • The other Crypto Setting tests (Exchange, Rate Source, etc) are irrelevant in this scope.

    • The master log will contain more specific and relevant entries data regarding any failures.

    Have you set “Spending Limits” for your authorization token?

    Spending Limits are may be set when creating the access token at Bitgo. A non-zero amount must be listed for each desired coin. If the amount is left as zero, the Crypto Test will pass, while the live transaction will fail.

    Is your tunnel working?

    You’ll see this in the log if the tunnel is connecting correctly:

    DEBUG com.generalbytes.batm.server.e.b - opening new tunnel on port 22222, remoteWalletAddress: xxx.xxx.xxx.xxx:3080
    DEBUG com.generalbytes.batm.server.e.b - tunnel connected: ClientSessionImpl[batmsshtunnel@yyy.yyy.yyy.yyy/yyy.yyy.yyy.yyy:22222] 42087->3080

    • this indicates a secure connection is active between CAS (yyy.yyy.yyy.yyy) and your BitGo Node (xxx.xxx.xxx.xxx). If you don’t see “connected”, then please double-check your tunnel password.

    • these log entries have been truncated for ease of viewing. They’ll be somewhat different in your log.

    The wallet tunnel is critical for success. Here are some troubleshooting steps:

    https://generalbytes.atlassian.net/wiki/spaces/ESD/pages/954663119/GB+Wallet+Tunnel+Server#Troubleshooting

    Alternative (unsupported): SSH Tunneling

    Have you whitelisted your BitGo Express node in your BitGo API keys?

    See the instructions above: https://generalbytes.atlassian.net/wiki/spaces/ESD/pages/1001848911/HotBitGo+WalletExpress+BitGo+Express#2Parameters#2.-Prepare-your-developer-API-token-at-BitGo.

    • BitGo must permit your BitGo Express node to connect to it’s network, and that is partly controlled by the IP whitelist set by your account when creating the API token.

    A standard (free) Bitgo account permits

    transactions with only

    these coins (as of Nov 2022):

    Code Block
    Bitcoin (BTC)
    Ripple (XRP)
    Bitcoin Cash (BCH)
    Litecoin (LTC)
    Stellar (XLM)
    Eos (EOS)
    Tron (TRX)
    Dash (DASH)
    ZCash (ZEC)
    Algorand (ALGO)
    Mainnet Hedera HBAR (HBAR)
    Bitcoin Gold (BTG)
    Casper (CSPR)
    Polkadot (DOT)
    Stacks (STX)
    Solana (SOL)
    Near (NEAR)
    USDT:TRX (BUY transactions only)

    Currently, these are the additional coins that a Bitgo ENTERPRISE institutional account allows:

    Code Block
    Ethereum (ETH)
    Ethereum Classic (ETC)
    Celo Gold (CELO)
    Bitcoin SV (BSV)
    Avalanche C-Chain (AVAXC)
    Rootstock RSK (RBTC)
    Stacks (STX)
    Polygon (POLYGON)
    USDT:ETH (All transaction types)
    USDT:TRX (SELL transactions in addition to BUY)