Last active
February 7, 2025 01:08
-
-
Save matthieu/b07c5ba27bc99188a15f to your computer and use it in GitHub Desktop.
Create and send a Bitcoin transaction using the BlockCypher Transaction API
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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
Anybody please help me too I must be retarded or something I can't figure this out