Skip to content

Instantly share code, notes, and snippets.

  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save jonn7hoareau/883f8db82d63f45955fa777d58c7d2bc to your computer and use it in GitHub Desktop.
Create and send a Bitcoin transaction using the BlockCypher Transaction API
# In this example we're sending some test bitcoins from an address we control to a brand new test
# address. We'll be sending the coins using the following address, public and private keys (please
# don't abuse).
# address : mtWg6ccLiZWw2Et7E5UqmHsYgrAi5wqiov
# public : 03bb318b00de944086fad67ab78a832eb1bf26916053ecd3b14a3f48f9fbe0821f
# private : 1af97b1f428ac89b7d35323ea7a68aba8cad178a04eddbbf591f65671bae48a2
# 1. generate a one-shot dummy address we're going to send money to
$ curl -X POST http://api.blockcypher.com/v1/btc/test3/addrs
{
"private": "19fe93f06878926cc3a75d092621397e958ee82c362cdf61f4eb2d6a12917577",
"public": "03c3c99511cd377c8f24c23a1cfbc1145fbdbddc93de0d70792dfa13ef08e7dd4f",
"address": "mzqUStzz6VqByVVMndXNFkpnmc9y8XeJ7o"
}
# 2. build the transaction and save the full output to send.json
$ curl -d '{"inputs": [{"addresses": ["mtWg6ccLiZWw2Et7E5UqmHsYgrAi5wqiov"]}], "outputs": [{"addresses": ["mzqUStzz6VqByVVMndXNFkpnmc9y8XeJ7o"], "value": 25000}]}' http://api.blockcypher.com/v1/btc/test3/txs/new > send.json
# 3. we generate a signature using the above private key and the data provided in the "tosign"
# property of send.json. To do so we use the utility at https://github.com/blockcypher/btcutils/tree/master/signer
# (go build to get binary)
$ ./signer e6e59c20e6b7b720ac5e61e82e7eea66ce8b8aadc8beb422b2701869cfae42c2 1af97b1f428ac89b7d35323ea7a68aba8cad178a04eddbbf591f65671bae48a2
3044022025812b93f58b3473124ae726c405cac51f39bb89c110e90f77b2f31a2e1fac67022015b8f1c3fa2ce6d0af44f682ed7e1d7933e51d06099c3eaae8725089b7a8a80e
# 4. we edit send.json and append the above public key and the newly created signature at the end
# of the file to end up with the following at the bottom of the file (the rest above it is unchanged):
$ tail -n 10 send.json
"tosign": [
"e6e59c20e6b7b720ac5e61e82e7eea66ce8b8aadc8beb422b2701869cfae42c2"
],
"signatures": [
"3044022025812b93f58b3473124ae726c405cac51f39bb89c110e90f77b2f31a2e1fac67022015b8f1c3fa2ce6d0af44f682ed7e1d7933e51d06099c3eaae8725089b7a8a80e"
],
"pubkeys": [
"03bb318b00de944086fad67ab78a832eb1bf26916053ecd3b14a3f48f9fbe0821f"
]
}
# 5. finally, sending the resulting transaction with the signature and the public key
$ curl -d @send.json http://api.blockcypher.com/v1/btc/test3/txs/send
# This will output the final transaction, including its hash.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment