TransWikia.com

How to import address with private key using importmulti

Bitcoin Asked by kimon on December 8, 2020

Problem. importmulti function has a lot of parameters and they are more difficult to understanding then the parameters of another Bitcoin RPC-API functions. Those who are not profi in modern cryptographic achievements have difficult with understanding how to use importmulti function.

Here is the task that demonstrates the problem.
There is 2 wallets with the Bitcoin Core v.0.19.1:
wallet1 – the wallet with private key for export.
wallet2 – empty wallet into which we need to import the PK+address from wallet1.

So in the wallet1 we have the bitcoin address created by getnewaddress.

[root@wallet1 ~]# bitcoin-cli getaddressinfo 3M5e4QMBUYtpEewwuuoWCArpiM2fT4KEDy
{
  "address": "3M5e4QMBUYtpEewwuuoWCArpiM2fT4KEDy",
  "scriptPubKey": "a914d4b1b498c8be8813273937b834be6d9d1f488b9087",
  "ismine": true,
  "solvable": true,
  "desc": "sh(wpkh([675dc179/0'/0'/0']02607cb6c05a575fd040498ec8c44eabfa2a4f0fc320aeacf494a77b3a408d84af))#r6dvu4wk",
  "iswatchonly": false,
  "isscript": true,
  "iswitness": false,
  "script": "witness_v0_keyhash",
  "hex": "00144c88353345f2e03abc8e96b818fd030c3c9f59ab",
  "pubkey": "02607cb6c05a575fd040498ec8c44eabfa2a4f0fc320aeacf494a77b3a408d84af",
  "embedded": {
    "isscript": false,
    "iswitness": true,
    "witness_version": 0,
    "witness_program": "4c88353345f2e03abc8e96b818fd030c3c9f59ab",
    "pubkey": "02607cb6c05a575fd040498ec8c44eabfa2a4f0fc320aeacf494a77b3a408d84af",
    "address": "bc1qfjyr2v697tsr40ywj6up3lgrps7f7kdtvw6mnu",
    "scriptPubKey": "00144c88353345f2e03abc8e96b818fd030c3c9f59ab"
  },
  "label": "",
  "ischange": false,
  "timestamp": 1589545405,
  "hdkeypath": "m/0'/0'/0'",
  "hdseedid": "7cf768d4050dc142a69a149666798cc434045c6c",
  "hdmasterfingerprint": "675dc179",
  "labels": [
    {
      "name": "",
      "purpose": "receive"
    }
  ]
}

[root@wallet1 ~]# bitcoin-cli dumpprivkey 3M5e4QMBUYtpEewwuuoWCArpiM2fT4KEDy
Kwngf5FSYmHM5oPHjSoKxtHWUxXiQ5YN5ZR6shmzkYpMMftBh92c

I’ve tried to import that address to wallet2 but have failed.

[root@wallet2 ~]# bitcoin-cli importmulti '[{ "scriptPubKey": { "address": "3M5e4QMBUYtpEewwuuoWCArpiM2fT4KEDy" }, "timestamp":"now", "keys": { "Kwngf5FSYmHM5oPHjSoKxtHWUxXiQ5YN5ZR6shmzkYpMMftBh92c":0 }  }]' '{"rescan": false}'

result
[
  {
    "success": false,
    "error": {
      "code": -1,
      "message": "Missing required fields"
    }
  }
]

What the correct way to import that address using importmulti? Show the example please.

One Answer

$ bitcoin-cli help importmulti
importmulti "requests" ( "options" )

Import addresses/scripts (with private or public keys, redeem script (P2SH)), optionally rescanning the blockchain from the earliest creation time of the imported scripts. Requires a new wallet backup.
If an address/script is imported without all of the private keys required to spend from that address, it will be watchonly. The 'watchonly' option must be set to true in this case or a warning will be returned.
Conversely, if all the private keys are provided and the address/script is spendable, the watchonly option must be set to false, or a warning will be returned.

Note: This call can take over an hour to complete if rescan is true, during that time, other rpc calls
may report that the imported keys, addresses or scripts exist but related transactions are still missing.
Note: Use "getwalletinfo" to query the scanning progress.

[...SNIP..]

Examples:

> bitcoin-cli importmulti '[{ "scriptPubKey": { "address": "<my address>" }, "timestamp":1455191478 }, { "scriptPubKey": { "address": "<my 2nd address>" }, "label": "example 2", "timestamp": 1455191480 }]'
> bitcoin-cli importmulti '[{ "scriptPubKey": { "address": "<my address>" }, "timestamp":1455191478 }]' '{ "rescan": false}'

As for your specific import you are passing the keys array (specified as such in the help, see the command above) as an object so bitcoind could not give you a helpful message :

$ bitcoin-cli importmulti '[{ "scriptPubKey": { "address": "3M5e4QMBUYtpEewwuuoWCArpiM2fT4KEDy" }, "timestamp":"now", "keys": [ "Kwngf5FSYmHM5oPHjSoKxtHWUxXiQ5YN5ZR6shmzkYpMMftBh92c" ], "redeemscript": "00144c88353345f2e03abc8e96b818fd030c3c9f59ab"}]' '{"rescan": false}'

[
  {
    "success": true,
  }
]

Answered by darosior on December 8, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP