0

I am building an ASP.Net project (C# - .Net 4.8 - windows os - visual studio 2015).
I want to send bitcoin from one address in my wallet to another for test.
Trying to access api url :
https://test.bitgo.com/api/v2/tbtc/wallet/{walletid}/sendcoins

But every time getting same response:

{
    "error": "You have called a BitGo Express endpoint but this is the BitGo server. Please have a look at the BitGo Express documentation: https://www.bitgo.com/api/v2/#bitgo-express-rest-api",
    "name": "ApiError",
    "requestId": "irfo34r5541k06grtyy4j6n33",
    "context": {}
}

How can I successfully send coins using this api on windows os?
Is it possible to sendcoins without BitGo Express?

0

2 Answers 2

2

BitGo generally uses 2-of-3 multisig transactions. That means that when you send a transaction, you must provide one of the signatures, and BitGo will add the second signature once you submit the partially signed transaction to the BitGo API. Since you need to use your own private key material to generate a signature, the signature has to be created client-side, or you'd be leaking your private key to BitGo.

The flow to create transactions is that BitGo usually will create an unsigned transaction per your request, then you'll add the first signature locally, and submit the partially-signed transaction either to get BitGo's signature and submit the signed transaction yourself, or for BitGo to finalize and submit it.

Express is a standard nodejs server framework to build web applications. BitGo Express is a piece of server software meant to be run on your own server. It wraps the functionality of the BitGo SDK to a set of REST endpoints, and communicates with BitGo's API to make data requests, but since you run it (and it's completely opensource), you can trust it to perform client-side actions such as your signing operations.

The sendcoins endpoint is an Express point. To use it, you must run your own Express server and call the endpoint on your Express server. You tried calling the Express endpoint on BitGo's API instead, but since BitGo cannot perform your signature (as it doesn't have your private key), it cannot perform the functionality your Express server would offer on that call.

You will either need to use the BitGo SDK (bitgojs) locally to make a series of calls in your scripts, i.e. /api/v2/{coin}/wallet/{walletId}/tx/build, sign the tx locally, then submit it via /api/v2/{coin}/wallet/{walletId}/tx/send, or set up an Express server to be able to use api/v2/tbtc/wallet/{walletid}/sendcoins.

I suggest that you carefully read the "Overview" section of the BitGo documentation which describes the above and gives you more instructions on how to authenticate, get wallet data, etc: https://app.bitgo.com/docs/#tag/Overview

0

You need to call the BitGo express server running locally.

  1. Run the docker image of BitGo express

    docker run -it -p 3080:3080 bitgosdk/express:latest

  2. Run your request using the localhost:8030, so your URL will look like this:

    http://localhost:3080/api/v2/tbtc/wallet/{walletid}/sendcoins

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.