<p><code>lightningd</code> doesn't offer simple RPC commands to dump keys.</p>
<p>If you really need to access the keys the simplest way would be to derive them directly from the <code>hsm_secret</code>.</p>
<p>Keys for onchain transactions (since you mentioned <code>newaddr</code>. The other derivations are more involved) are derived using BIP32 unhardened derivation from <code>m/0/0</code>.<br />
The root seed is derived from the <code>hsm_secret</code> with :</p>
<pre><code>root_seed = hkdf_sha256(hsm_secret, salt=NULL, info=&quot;bip32 seed&quot;)
</code></pre>
<p>There exist tools such as the <a href="https://github.com/ElementsProject/lightning/blob/master/tools/hsmtool.c" rel="nofollow noreferrer"><code>hsmtools</code></a> <em>(which currently only derive keys for the commitment transactions but might be extended in the furure)</em> or jb55's <a href="https://github.com/jb55/clightning-dumpkeys/" rel="nofollow noreferrer"><code>clightning-dumpkeys</code></a> which take care of the derivation for you.</p>

CC BY-SA 4.0
2020-06-23T12:25:46.247Z
2020-06-23T12:25:46.247Z
Antoine Poinsot
<p>I'm studying Lightning network and I use c-lightning.
I can Get a new address with <code>newaddr</code> method, but I can't find private key.
My address is <code>bcrt1qmckts70jsq2u5886lgcq2yn7xjmp97t09zlrg</code>, how can I retrieve it's public key?
Where Can I find it's private key?</p>
<pre><code>$ bitcoin-cli validateaddress bcrt1qmckts70jsq2u5886lgcq2yn7xjmp97t09zlrgj                                                              │
{                                                                                                                                       │
  &quot;isvalid&quot;: true,                                                                                                                      │
  &quot;address&quot;: &quot;bcrt1qmckts70jsq2u5886lgcq2yn7xjmp97t09zlrgj&quot;,                                                                            │
  &quot;scriptPubKey&quot;: &quot;0014de2cb879f28015ca1cfafa3005127e34b612f96f&quot;,                                                                       │
  &quot;isscript&quot;: false,                                                                                                                    │
  &quot;iswitness&quot;: true,                                                                                                                    │
  &quot;witness_version&quot;: 0,                                                                                                                 │
  &quot;witness_program&quot;: &quot;de2cb879f28015ca1cfafa3005127e34b612f96f&quot;                                                                         │
} 
</code></pre>

<lightning-network><segregated-witness><core-lightning>
Get public or private key from address with C-lightning
monkeyUser
# Get public or private key from address with C-lightning

(Asked by: username_0 on 2020-06-23)

I'm studying Lightning network and I use c-lightning.
I can Get a new address with `newaddr` method, but I can't find private key.
My address is `bcrt1qmckts70jsq2u5886lgcq2yn7xjmp97t09zlrg`, how can I retrieve it's public key?
Where Can I find it's private key?

```
$ bitcoin-cli validateaddress bcrt1qmckts70jsq2u5886lgcq2yn7xjmp97t09zlrgj                                                              │
{                                                                                                                                       │
  "isvalid": true,                                                                                                                      │
  "address": "bcrt1qmckts70jsq2u5886lgcq2yn7xjmp97t09zlrgj",                                                                            │
  "scriptPubKey": "0014de2cb879f28015ca1cfafa3005127e34b612f96f",                                                                       │
  "isscript": false,                                                                                                                    │
  "iswitness": true,                                                                                                                    │
  "witness_version": 0,                                                                                                                 │
  "witness_program": "de2cb879f28015ca1cfafa3005127e34b612f96f"                                                                         │
} 

```

**Tags:** lightning-network, segregated-witness, core-lightning


---

## 1 answers

### Answer by username_1 on 2020-06-23. Score: 3 | Accepted answer

`lightningd` doesn't offer simple RPC commands to dump keys.

If you really need to access the keys the simplest way would be to derive them directly from the `hsm_secret`.

Keys for onchain transactions (since you mentioned `newaddr`. The other derivations are more involved) are derived using BIP32 unhardened derivation from `m/0/0`.  
The root seed is derived from the `hsm_secret` with :

```
root_seed = hkdf_sha256(hsm_secret, salt=NULL, info="bip32 seed")

```

There exist tools such as the [`hsmtools`](https://github.com/ElementsProject/lightning/blob/master/tools/hsmtool.c) *(which currently only derive keys for the commitment transactions but might be extended in the furure)* or jb55's [`clightning-dumpkeys`](https://github.com/jb55/clightning-dumpkeys/) which take care of the derivation for you.


---

