익명 03:41

How to import a descriptor into a wallet?

How to import a descriptor into a wallet?

I am trying to import a descriptor into a blank wallet but I get a JSON parsing error.

$ cli createwallet "test" false true "" false true
$ cli -rpcwallet=test importdescriptors '[{ "desc": "pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)", "timestamp":1455191478, "internal": true }]'
error: Error parsing JSON: [{

Isn't the command importdescriptors expecting a JSON string? I can't see why I get this error. By the way this is an example from https://developer.bitcoin.org/reference/rpc/importdescriptors.html

Edit1.

The argument is a correct JSON string

$ export ARGS='[{ "desc": "pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)", "timestamp":1455191478, "internal": true }]'
$ echo $ARGS | jq
[
  {
    "desc": "pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)",
    "timestamp": 1455191478,
    "internal": true
  }
]
$ cli -rpcwallet=test importdescriptors $ARGS
error: Error parsing JSON: [{

I also tried changing single quotes with double quotes

$ export ARGS2="[{ \"desc\": \"pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)\", \"timestamp\":1455191478, \"internal\": true }]"
$ echo $ARGS2 | jq
[
  {
    "desc": "pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)",
    "timestamp": 1455191478,
    "internal": true
  }
]
$ cli -rpcwallet=test importdescriptors $ARGS2 
error: Error parsing JSON: [{

I am using a bash shell.

Edit2.

As suggested by @andrew-chow, removing the spaces solves the JSON parsing error, this is weird. I tried a simple C++ application in my bash shell that reads arguments from the command line and anything inside single or double quotes is interpreted as a single string argument independently of spaces.

int main(int nargs, char** args)


Top Answer/Comment:

The error is dependent on shell. In cmd (Windows) try:

bitcoin-cli.exe -rpcwallet=test importdescriptors "[{ \"desc\": \"pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)\", \"timestamp\":1455191478, \"internal\": true }]"

It will not work the same with PowerShell.

In bash the dollar sign before the single quote may make difference (altough your initial command example works in Bash in my environment without the "error: Error parsing JSON: [{"):

$ bitcoin-cli -rpcwallet=test importdescriptors $'[{ "desc": "pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)", "timestamp":1455191478, "internal": true }]'
상단 광고의 [X] 버튼을 누르면 내용이 보입니다