analyzepsbt
Overview
The 'analyzepsbt' method is used to inspect a PSBT (Partially Signed Bitcoin Transaction) and return information about its current state. It helps in understanding the transaction's inputs, estimated size, fee rate, and the role of the next person in the transaction process.
Request
- shell
- csharp
- php
- python
- javascript
- go
- ruby
wget --no-check-certificate --quiet \
--method POST \
--timeout=0 \
--header 'Content-Type: application/json' \
--header 'accept: application/json' \
--header 'X-CoinAPI-Key: 4303fb63-adec-42dc-b571-74bc2f2a5167' \
--body-data '{"jsonrpc":"2.0","id":1,"method":"analyzepsbt","params": [ ]}' \
'https://bitcoin-mainnet.node.coinapi.io'
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://bitcoin-mainnet.node.coinapi.io");
request.Headers.Add("x-coinapi-key", "73034021-THIS-IS-SAMPLE-KEY");
request.Headers.Add("accept", "application/json");
var content = new StringContent("{\"jsonrpc\":\"2.0\",\"method\":\"analyzepsbt\",\"params\": [],\"id\":1}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
<?php
$client = new Client();
$headers = [
'x-coinapi-key' => '73034021-THIS-IS-SAMPLE-KEY',
'Content-Type' => 'application/json',
'accept' => 'application/json'
];
$body = '{
"jsonrpc": "2.0",
"method": "analyzepsbt",
"params": [],
"id": 1
}';
$request = new Request('POST', 'https://bitcoin-mainnet.node.coinapi.io', $headers, $body);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
?>
import requests
import json
url = "https://bitcoin-mainnet.node.coinapi.io"
payload = json.dumps({
"jsonrpc": "2.0",
"method": "analyzepsbt",
"params": [],
"id": 1
})
headers = {
'x-coinapi-key': '73034021-THIS-IS-SAMPLE-KEY',
'Content-Type': 'application/json',
'accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
var settings = {
"url": "https://bitcoin-mainnet.node.coinapi.io",
"method": "POST",
"timeout": 0,
"headers": {
"x-coinapi-key": "4303fb63-adec-42dc-b571-74bc2f2a5167",
"Content-Type": "application/json",
"accept": "application/json"
},
"data": JSON.stringify({
"jsonrpc": "2.0",
"method": "analyzepsbt",
"params": [],
"id": 1
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://bitcoin-mainnet.node.coinapi.io"
method := "POST"
payload := strings.NewReader(`{"jsonrpc":"2.0","method":"analyzepsbt","params": [],"id":1}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("x-coinapi-key", "73034021-THIS-IS-SAMPLE-KEY")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("accept", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
require "uri"
require "json"
require "net/http"
url = URI("https://bitcoin-mainnet.node.coinapi.io")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-coinapi-key"] = "73034021-THIS-IS-SAMPLE-KEY"
request["Content-Type"] = "application/json"
request["accept"] = "application/json"
request.body = JSON.dump({
"jsonrpc": "2.0",
"method": "analyzepsbt",
"params": [],
"id": 1
})
response = https.request(request)
puts response.read_body
Request Parameters
- psbt (string): The PSBT in base64 format that needs to be analyzed.
Response
{
"result": null,
"error": {
"code": -1,
"message": "analyzepsbt \"psbt\"\n\nAnalyzes and provides information about the current status of a PSBT and its inputs\n\nArguments:\n1. psbt (string, required) A base64 string of a PSBT\n\nResult:\n{ (json object)\n \"inputs\" : [ (json array, optional)\n { (json object)\n \"has_utxo\" : true|false, (boolean) Whether a UTXO is provided\n \"is_final\" : true|false, (boolean) Whether the input is finalized\n \"missing\" : { (json object, optional) Things that are missing that are required to complete this input\n \"pubkeys\" : [ (json array, optional)\n \"hex\", (string) Public key ID, hash160 of the public key, of a public key whose BIP 32 derivation path is missing\n ...\n ],\n \"signatures\" : [ (json array, optional)\n \"hex\", (string) Public key ID, hash160 of the public key, of a public key whose signature is missing\n ...\n ],\n \"redeemscript\" : \"hex\", (string, optional) Hash160 of the redeemScript that is missing\n \"witnessscript\" : \"hex\" (string, optional) SHA256 of the witnessScript that is missing\n },\n \"next\" : \"str\" (string, optional) Role of the next person that this input needs to go to\n },\n ...\n ],\n \"estimated_vsize\" : n, (numeric, optional) Estimated vsize of the final signed transaction\n \"estimated_feerate\" : n, (numeric, optional) Estimated feerate of the final signed transaction in BTC/kvB. Shown only if all UTXO slots in the PSBT have been filled\n \"fee\" : n, (numeric, optional) The transaction fee paid. Shown only if all UTXO slots in the PSBT have been filled\n \"next\" : \"str\", (string) Role of the next person that this psbt needs to go to\n \"error\" : \"str\" (string, optional) Error message (if there is one)\n}\n\nExamples:\n> bitcoin-cli analyzepsbt \"psbt\"\n"
},
"id": 1
}
Was this section helpful?