Set Up Self-Custody Lightning Wallets

Overview

Self-custody Lightning wallets require additional set up and management beyond other BitGo wallets. While these wallets use BitGo infrastructure, the Lightning node is managed by a hosting service provider.

Security Considerations

  • The remote signer holds the only private key, so you must secure it appropriately.
  • All requests require BitGo API key authentication.
  • Lightning operations require additional request signing.
  • Backup static channel state files regularly.

Key Management

  • Lightning operations require a single hot key.
  • The remote signer node holds the encrypted key.
  • The LSP holds the encrypted backup key.
  • There's an additional user key for the BitGo API to request signing.

Channel Backups

Prerequisites

1. Create Lightning Wallet

Endpoint: Generate Wallet

  • cURL
  • JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="tlntbc" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export LABEL="<YOUR_WALLET_NAME>" export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>" export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" export PASSCODE="<YOUR_ENCRYPTION_CODE>" curl -X POST \ http://$BITGO_EXPRESS_HOST:3080/api/v2/$COIN/wallet/generate \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "label": "'"$LABEL"'", "passphrase": "'"$PASSPHRASE"'", "enterprise": "'"$ENTERPRISE_ID"'" "type": "hot", "passcodeEncryptionCode": "'"$PASSCODE"'", # Encrypts your wallet passphrase "subType": "lightningSelfCustody" }'

Step Result

BitGo creates a Lightning node with a hosting service provider. This process takes approximately 30 minutes to complete.

  • JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 { "wallet": { "id": "67e43de27f977e954022b8eb8693f5a7", "users": [ { "user": "6101c3790293df0006fb99bc777152ce", "permissions": [ "admin", "spend", "view" ] } ], "coin": "tlnbtc", "label": "Test Self-Custody Lightning Wallet", "m": 1, "n": 1, "keys": [ "67e43de1551f8a42dadaabb0d2ac2264" ], "keySignatures": {}, "enterprise": "65302ca0c3939600075905e213ca20dd", "bitgoOrg": "BitGo Inc", "tags": [ "67e43de27f977e954022b8eb8693f5a7", "65302ca0c3939600075905e213ca20dd" ], "disableTransactionNotifications": false, "freeze": {}, "deleted": false, "approvalsRequired": 1, "isCold": false, "coinSpecific": { "keys": [ "67e43de1d19e3a9237bf558bed01f8e6", "67e43de1ffc2dfc5c5994239ed002fb5" ] }, "admin": {}, "clientFlags": [], "walletFlags": [], "allowBackupKeySigning": false, "recoverable": true, "startDate": "2025-03-26T17:48:18.000Z", "type": "hot", "buildDefaults": {}, "customChangeKeySignatures": {}, "hasLargeNumberOfAddresses": false, "hasReceiveTransferPolicy": false, "creator": "6101c3790293df0006fb99bc777152ce", "subType": "lightningSelfCustody", "config": {}, "inboundBalance": "0", "inboundPendingBalance": "0", "inboundUnsettledBalance": "0", "outboundBalance": "0", "outboundPendingBalance": "0", "outboundUnsettledBalance": "0", "balanceString": "0", "confirmedBalanceString": "0", "spendableBalanceString": "0", "pendingApprovals": [] }, "userKeychain": { "id": "67e43de1551f8a42dadaabb0d2ac2264", "pub": "xpub661MyMwAqRbcFKQKbgT6uA46wmi5FrqrYoJjUzQjnPU5VY6Pk7nyqn2Jg9oHdn4gd1Eh8idDbh6wQ4mWMZ8CXBGBLGvoBbva3MpkDVmbjxL", "ethAddress": "0x01e0c185c0652fc9d6b67fcb36149aa67a17fab4", "source": "user", "type": "independent", "encryptedPrv": "{\"iv\":\"9tY/nQ9DsTXp71vypxNVGg==\",\"v\":1,\"iter\":10000,\"ks\":256,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"salt\":\"v6m97u751w4=\",\"ct\":\"E2d7SNUkJJspAz07uougA3lvih8dA9A0bm7aYt0LVtquUzGZgXji5x5Ez1gaZKb2mESuUOLrDfe8zHOnvDVhYcK015zM1llqxKH5/LOg715AcYKLNoE3hHrZoy4IZlaQV8LntKGX1+pOYlqkjlaZLWNtDMuoB+g=\"}" }, "userAuthKeychain": { "id": "67e43de1d19e3a9237bf558bed01f8e6", "pub": "xpub661MyMwAqRbcH4SU8XsxRzbNkZWr3zB1Qksxp9b7mqv8f2btQgofwBQixHZFUrUSrtS8r8yH7cs6pMwYQUWuAg13upsCb72v7cnfY5sU7Xx", "ethAddress": "0x83c3e1f73925c9013b1ae05da76eb67dbd85e374", "source": "user", "type": "independent", "coinSpecific": { "tlnbtc": { "purpose": "userAuth", "_requestId": "cm8q7x8kj0byf0eys63uk9nsf" } }, "encryptedPrv": "{\"iv\":\"7cxr+H0cT7g3xRsACg+Saw==\",\"v\":1,\"iter\":10000,\"ks\":256,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"salt\":\"4ZJflpV8Mu8=\",\"ct\":\"1R+f4etETgoyLBQ98ErQ7fMq2vZVJjnDev8Fe88BAfcZ9dGpkFfbKBgc6skJn2Qy0GjsCI0G9qFvSbjfAIWxCtkbrZ7KzLnXCnVyWH3SbagyZfOYNs4UgmCbdEoS7bIMF1ZiMzj+phIeeuP/QGaZZYcL9/Z6+Kk=\"}" }, "nodeAuthKeychain": { "id": "67e43de1ffc2dfc5c5994239ed002fb5", "pub": "xpub661MyMwAqRbcFbNKN8P6pQuaieXxCdj38JniNNoiX8nL2LNf4RTdTvULEuua4pMxjyid6vFH3BiFoXQ1BHJbbxhwnkte7sd4o2jVtwgk9ig", "ethAddress": "0x391004935442ad4237ab7adaae31e0056844f4e2", "source": "user", "type": "independent", "coinSpecific": { "tlnbtc": { "purpose": "nodeAuth", "_requestId": "cm8q7x8u90c7d0e0cekte5rum" } }, "encryptedPrv": "{\"iv\":\"9JmKBrVJvWtzsyWhoyqMPg==\",\"v\":1,\"iter\":10000,\"ks\":256,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"salt\":\"kxJFetnXI+U=\",\"ct\":\"hlquksFjZJ9EciSbjModTiHE7R4GoHenxRy6OPKHw9nHS2yTkU3ZyV1wMzqXC+/Yq0ZtPDqV7YOFKQ1r9+GWCCyKi8wdX+ZZS5mul0R2WJSsw7nBiFPuiUyqZlK7vrrt/6ERcobzrJBnqU9QN2TkUpWxPxHStLQ=\"}" }, "responseType": "LightningWalletWithKeychains", "encryptedWalletPassphrase": "{\"iv\":\"frevNIUliAXK5eS/YU4uaQ==\",\"v\":1,\"iter\":10000,\"ks\":256,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"salt\":\"pwl6aQtPxH0=\",\"ct\":\"/tBwHmRzyEo4dsyX0Zv5LSlh05XITpzqDU5rlA==\"}" }

2. Initialize Lightning Wallet

Once you create the wallet, you must initializes the remote signer with the necessary keys and macaroons.

Endpoint: Lightning - Initialize Node

  • cURL
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="tlntbc" export WALLET_ID="<YOUR_WALLET_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>" export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" export EXPRESS_HOST="<YOUR_LOCALHOST>" curl -X POST \ http://$BITGO_EXPRESS_HOST:3080/api/v2/$COIN/wallet/$WALLETID/initwallet \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "label": "'"$LABEL"'", "passphrase": "'"$PASSPHRASE"'", "expressHost": "'"$EXPRESS_HOST"'" # Provides additional security by binding macaroons to the Express server IP (recommended) }'

Step Result

The newly created Lightning Network Daemon (LND) is now initialized. You receive the updated wallet with the encrypted admin macaroon in the 'coinSpecific' response field.

  • JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 { "id": "67e43de27f977e954022b8eb8693f5a7", "users": [ { "user": "6101c3790293df0006fb99bc777152ce", "permissions": [ "admin", "spend", "view" ] } ], "coin": "tlnbtc", "label": "Test tlnbtc V2 Wallet - 1743011296980 lightningSelfCustody", "m": 1, "n": 1, "keys": [ "67e43de1551f8a42dadaabb0d2ac2264" ], "keySignatures": {}, "enterprise": "65302ca0c3939600075905e213ca20dd", "bitgoOrg": "BitGo Inc", "tags": [ "67e43de27f977e954022b8eb8693f5a7", "65302ca0c3939600075905e213ca20dd" ], "disableTransactionNotifications": false, "freeze": {}, "deleted": false, "approvalsRequired": 1, "isCold": false, "coinSpecific": { "encryptedSignerAdminMacaroon": "{\"iv\":\"WJ+XBikHLpyuf3JEkInKtQ==\",\"v\":1,\"iter\":10000,\"ks\":256,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"salt\":\"j5TDkoJECo0=\",\"ct\":\"xsRQOP3aom8hIiY5a3rkFlF5BCx6GK7jT2OWyHgTakmqUV96f0zce16W9Xg5pGuToL0/SiKKFOxB1sd6G+sFPOrBmOk+PqcA4invhEa4C+riKhgQm3gY2pjhqpidDmBYdGb/aYsAia1sGr4TdJvLiP/dEkjn/LiX9oxe4eVn4w8TOsXTzpX4V11C80SPGaIUXwVYc3fwvxa3zf3ft27Z94HlDawnIXZQnIIr3uS3uYtnjDHa03ap4dqGt7glGt33CKOl6TcYiTdrnixvlrc13zJXVj0nkKBc7IuBqep+2ZIfHC4yWGOPgDOovpQPF3rb8aHYE1iyTZDOo5MjKrvLoEIPejuBVZUTbEOzZ7O6X+sj58X+Kf+4XN42bX4g2u+cttT8YjijZVdWk2rJktbXYVNLDw8QeZcYtzr9TnIP+//raNbkIbLfUlVsOPUwneFhGZv5DVhUlm9JBiU/ARLl6m00P3utb0KZcr1egt5N1al5oFY98WHJrDyJEN8D3TS1/O5QAuhuNxZaOGWPFxXfFA==\"}", "encryptedSignerMacaroon": null, "signerHost": null, "encryptedSignerTlsKey": null, "signerTlsCert": null, "watchOnlyAccounts": { "master_key_birthday_timestamp": "1743025156", "master_key_fingerprint": "296b36f0", "accounts": [ { "purpose": 49, "coin_type": 0, "account": 0, "xpub": "upub5DAasxWUVhvd3YLvPmcYtPCuH8yFDa4wYJpuDUKje6vTiVMqLYhmRxoEyrYE3Wh3ou7XpLxLgCoGSoEtNBWU8gjGs2cNnL3bm36ip6LDyJu" } }, "signedUserAuthKey": "H4PiRzUGhomTE7hYJO0thNhkpEfICJfOGwJFhFF2szBXEBYw3UKMUkrDQddMjXqk9xUzqAIr8AVHEuBTwXgCsVw=", "keys": [ "67e43de1d19e3a9237bf558bed01f8e6", "67e43de1ffc2dfc5c5994239ed002fb5" ] }, "admin": { "policy": { "date": "2025-03-26T17:48:18.212Z", "id": "67e43de27f977e954022b8eed3f3f639", "label": "default", "rules": [], "version": 0, "latest": true } }, "clientFlags": [], "walletFlags": [], "allowBackupKeySigning": false, "startDate": "2025-03-26T17:48:18.000Z", "type": "hot", "buildDefaults": {}, "customChangeKeySignatures": {}, "hasLargeNumberOfAddresses": false, "hasReceiveTransferPolicy": false, "creator": "6101c3790293df0006fb99bc777152ce", "subType": "lightningSelfCustody", "config": {} }

3. Create Signer Macaroon

The signer macaroon is for the watch-only LND node to request signatures from the signer node.

Endpoint: Create Signer Macaroon

  • cURL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="tlntbc" export WALLET_ID="<YOUR_WALLET_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>" export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" curl -X POST \ http://$BITGO_EXPRESS_HOST:3080/api/v2/$COIN/wallet/$WALLETID/signermacaroon \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "label": "'"$LABEL"'", "passphrase": "'"$PASSPHRASE"'", "addIpCaveatToMacaroon": true }'

Step Result

You receive the updated wallet with the encrypted signer macaroon in the coinSpecific response field.

  • JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 { "id": "67e43de27f977e954022b8eb8693f5a7", "users": [ { "user": "6101c3790293df0006fb99bc777152ce", "permissions": [ "admin", "spend", "view" ] } ], "coin": "tlnbtc", "label": "Test tlnbtc V2 Wallet - 1743011296980 lightningSelfCustody", "m": 1, "n": 1, "keys": [ "67e43de1551f8a42dadaabb0d2ac2264" ], "keySignatures": {}, "enterprise": "65302ca0c3939600075905e213ca20dd", "bitgoOrg": "BitGo Inc", "tags": [ "67e43de27f977e954022b8eb8693f5a7", "65302ca0c3939600075905e213ca20dd" ], "disableTransactionNotifications": false, "freeze": {}, "deleted": false, "approvalsRequired": 1, "isCold": false, "coinSpecific": { "encryptedSignerAdminMacaroon": "{\"iv\":\"WJ+XBikHLpyuf3JEkInKtQ==\",\"v\":1,\"iter\":10000,\"ks\":256,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"salt\":\"j5TDkoJECo0=\",\"ct\":\"xsRQOP3aom8hIiY5a3rkFlF5BCx6GK7jT2OWyHgTakmqUV96f0zce16W9Xg5pGuToL0/SiKKFOxB1sd6G+sFPOrBmOk+PqcA4invhEa4C+riKhgQm3gY2pjhqpidDmBYdGb/aYsAia1sGr4TdJvLiP/dEkjn/LiX9oxe4eVn4w8TOsXTzpX4V11C80SPGaIUXwVYc3fwvxa3zf3ft27Z94HlDawnIXZQnIIr3uS3uYtnjDHa03ap4dqGt7glGt33CKOl6TcYiTdrnixvlrc13zJXVj0nkKBc7IuBqep+2ZIfHC4yWGOPgDOovpQPF3rb8aHYE1iyTZDOo5MjKrvLoEIPejuBVZUTbEOzZ7O6X+sj58X+Kf+4XN42bX4g2u+cttT8YjijZVdWk2rJktbXYVNLDw8QeZcYtzr9TnIP+//raNbkIbLfUlVsOPUwneFhGZv5DVhUlm9JBiU/ARLl6m00P3utb0KZcr1egt5N1al5oFY98WHJrDyJEN8D3TS1/O5QAuhuNxZaOGWPFxXfFA==\"}", "encryptedSignerMacaroon": "{\"iv\":\"dSD0IpMzv9vUNlGKPYMhQA==\",\"v\":1,\"iter\":10000,\"ks\":256,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"salt\":\"YXq1Hxz7eiU=\",\"ct\":\"xGuw+H5arb1ic7Q/kDeD58wDuif+fqWdk9AU6w0bArtyytBy5ZHzWceVs3/M/UkDmYT3TuTBi2pAEhs3pyLTom94Og1zLDsCV1frO38sqe33Uo/+qzmnEsUonQZgBdSt3DhCE1dWod73SQqVykFE2UFNZfBtzj4PTBgeC/HmBk0rFVj+ha6O9tf1XPtr36tIbL/h14hPXMuCNVtFxtBKQ94vKOdrIdzn+ALcfpTX+hM1GDsfdH58ZP7obt9HEZY0yjzJCZv67/ZHvLk1OacDSVfIaFr4jV6Gbs7/fvzo+KPwrNnRgeXjUtSfli9FIQtFGmYhRuc5OzHVOTU53XMD9699tAAyS1qcVpvAFVGz0ICOiM7SfRVUEDzxM8Y6tw==\"}", "encryptedSignerTlsKey": null, "watchOnlyAccounts": { "master_key_birthday_timestamp": "1743025156", "master_key_fingerprint": "296b36f0", "accounts": [ { "purpose": 49, "coin_type": 0, "account": 0, "xpub": "upub5DAasxWUVhvd3YLvPmcYtPCuH8yFDa4wYJpuDUKje6vTiVMqLYhmRxoEyrYE3Wh3ou7XpLxLgCoGSoEtNBWU8gjGs2cNnL3bm36ip6LDyJu" } ] }, "signedUserAuthKey": "H4PiRzUGhomTE7hYJO0thNhkpEfICJfOGwJFhFF2szBXEBYw3UKMUkrDQddMjXqk9xUzqAIr8AVHEuBTwXgCsVw=", "keys": [ "67e43de1d19e3a9237bf558bed01f8e6", "67e43de1ffc2dfc5c5994239ed002fb5" ] }, "admin": { "policy": { "date": "2025-03-26T17:48:18.212Z", "id": "67e43de27f977e954022b8eed3f3f639", "label": "default", "rules": [], "version": 0, "latest": true } }, "clientFlags": [], "walletFlags": [], "allowBackupKeySigning": false, "startDate": "2025-03-26T17:48:18.000Z", "type": "hot", "buildDefaults": {}, "customChangeKeySignatures": {}, "hasLargeNumberOfAddresses": false, "hasReceiveTransferPolicy": false, "creator": "6101c3790293df0006fb99bc777152ce", "subType": "lightningSelfCustody", "config": {} }

4. Update The Wallet

Update the wallet on the BitGo Express server.

Endpoint: Update Wallet

  • cURL
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="tlntbc" export WALLET_ID="<YOUR_WALLET_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export SIGNER_HOST="<SIGNER_NODE_MACROON>" export SIGNER_TLS_CERT="<SIGNER_NODE_ADMIN_MACROON>" export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>" curl -X PUT \ http://$BITGO_EXPRESS_HOST:3080/api/express/api/v2/$COIN/wallet/$WALLETID \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "signerHost": string, # Signer node macaroon "signerTlsCert": string, # Signer node admin macaroon "passphrase": "'"$PASSPHRASE"'" }'

Step Result

BitGo automatically configures a watch-only node. BitGo sends you an email notification when the wallet is ready to use.

  • JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 { "id": "67e43de27f977e954022b8eb8693f5a7", "users": [ { "user": "6101c3790293df0006fb99bc777152ce", "permissions": [ "admin", "spend", "view" ] } ], "coin": "tlnbtc", "label": "Test tlnbtc V2 Wallet - 1743011296980 lightningSelfCustody", "m": 1, "n": 1, "keys": [ "67e43de1551f8a42dadaabb0d2ac2264" ], "keySignatures": {}, "enterprise": "65302ca0c3939600075905e213ca20dd", "bitgoOrg": "BitGo Inc", "tags": [ "67e43de27f977e954022b8eb8693f5a7", "65302ca0c3939600075905e213ca20dd" ], "disableTransactionNotifications": false, "freeze": {}, "deleted": false, "approvalsRequired": 1, "isCold": false, "coinSpecific": { "encryptedSignerAdminMacaroon": "{\"iv\":\"WJ+XBikHLpyuf3JEkInKtQ==\",\"v\":1,\"iter\":10000,\"ks\":256,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"salt\":\"j5TDkoJECo0=\",\"ct\":\"xsRQOP3aom8hIiY5a3rkFlF5BCx6GK7jT2OWyHgTakmqUV96f0zce16W9Xg5pGuToL0/SiKKFOxB1sd6G+sFPOrBmOk+PqcA4invhEa4C+riKhgQm3gY2pjhqpidDmBYdGb/aYsAia1sGr4TdJvLiP/dEkjn/LiX9oxe4eVn4w8TOsXTzpX4V11C80SPGaIUXwVYc3fwvxa3zf3ft27Z94HlDawnIXZQnIIr3uS3uYtnjDHa03ap4dqGt7glGt33CKOl6TcYiTdrnixvlrc13zJXVj0nkKBc7IuBqep+2ZIfHC4yWGOPgDOovpQPF3rb8aHYE1iyTZDOo5MjKrvLoEIPejuBVZUTbEOzZ7O6X+sj58X+Kf+4XN42bX4g2u+cttT8YjijZVdWk2rJktbXYVNLDw8QeZcYtzr9TnIP+//raNbkIbLfUlVsOPUwneFhGZv5DVhUlm9JBiU/ARLl6m00P3utb0KZcr1egt5N1al5oFY98WHJrDyJEN8D3TS1/O5QAuhuNxZaOGWPFxXfFA==\"}", "encryptedSignerMacaroon": "{\"iv\":\"dSD0IpMzv9vUNlGKPYMhQA==\",\"v\":1,\"iter\":10000,\"ks\":256,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"salt\":\"YXq1Hxz7eiU=\",\"ct\":\"xGuw+H5arb1ic7Q/kDeD58wDuif+fqWdk9AU6w0bArtyytBy5ZHzWceVs3/M/UkDmYT3TuTBi2pAEhs3pyLTom94Og1zLDsCV1frO38sqe33Uo/+qzmnEsUonQZgBdSt3DhCE1dWod73SQqVykFE2UFNZfBtzj4PTBgeC/HmBk0rFVj+ha6O9tf1XPtr36tIbL/h14hPXMuCNVtFxtBKQ94vKOdrIdzn+ALcfpTX+hM1GDsfdH58ZP7obt9HEZY0yjzJCZv67/ZHvLk1OacDSVfIaFr4jV6Gbs7/fvzo+KPwrNnRgeXjUtSfli9FIQtFGmYhRuc5OzHVOTU53XMD9699tAAyS1qcVpvAFVGz0ICOiM7SfRVUEDzxM8Y6tw==\"}", "signerHost": "signerHost.com:10009", "encryptedSignerTlsKey": null, "signerTlsCert": "base64EncodedTlsCert==", "watchOnlyAccounts": { "master_key_birthday_timestamp": "1743025156", "master_key_fingerprint": "296b36f0", "accounts": [ { "purpose": 49, "coin_type": 0, "account": 0, "xpub": "upub5DAasxWUVhvd3YLvPmcYtPCuH8yFDa4wYJpuDUKje6vTiVMqLYhmRxoEyrYE3Wh3ou7XpLxLgCoGSoEtNBWU8gjGs2cNnL3bm36ip6LDyJu" } ] }, "signedUserAuthKey": "H4PiRzUGhomTE7hYJO0thNhkpEfICJfOGwJFhFF2szBXEBYw3UKMUkrDQddMjXqk9xUzqAIr8AVHEuBTwXgCsVw=", "keys": [ "67e43de1d19e3a9237bf558bed01f8e6", "67e43de1ffc2dfc5c5994239ed002fb5" ] }, "admin": { "policy": { "date": "2025-03-26T17:48:18.212Z", "id": "67e43de27f977e954022b8eed3f3f639", "label": "default", "rules": [], "version": 0, "latest": true } }, "clientFlags": [], "walletFlags": [], "allowBackupKeySigning": false, "startDate": "2025-03-26T17:48:18.000Z", "type": "hot", "buildDefaults": {}, "customChangeKeySignatures": {}, "hasLargeNumberOfAddresses": false, "hasReceiveTransferPolicy": false, "creator": "6101c3790293df0006fb99bc777152ce", "subType": "lightningSelfCustody", "config": {} }

5. (Optional) Unlock LND Node

If the signer node restarts, you must unlock the LND node. You can check if the LND node is locked or unlocked, using the Lightning - Get Node State endpoint.

Endpoint: Lightning - Unlock Node

  • cURL
1 2 3 4 5 6 7 8 9 10 11 12 13 export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="tlntbc" export WALLET_ID="<YOUR_WALLET_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>" curl -X POST \ http://$BITGO_EXPRESS_HOST:3080/api/v2/$COIN/wallet/$WALLETID/unlockwallet \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "passphrase": "'"$PASSPHRASE"'" }'

Step Result

  • JSON
1 2 3 { "message": "ok" }

Next Steps

See Also