For finding out functions I am seeking to recreate all keys in LND channel.
I may just reproduce MultiSigKey, RevocationBasePoint, PaymentBasePoint, DelayBasePoint, HtlcBasePoint. The workflow to breed them used to be to create HD node root key with azeed from 24 phrases after which use HD Pockets BIP44 specification to calculate those keys with outlined paths.
My HD node root key (base58): vprv9DMUxX4ShgxMLHkP4A7EPJr52LoHYn5jD6vn3UfQnf6Tv1uA7mw3RozDzwD2vMxs5MWLAPENaxYvrDERFdARSQLa6RXWBih5bjRqh5hsfJr
(derived from:
words_local=”above tomato swarm sq. ski body stay buffalo cardio ginger cut back insect kiwi kitchen antenna elevator century courageous boil gospel gasoline picnic climate basket”)
As an example I will effectively derive RevocationBasePoint with trail “m/1017’/1’/1’/0/0”
032a1e4b9ba2db7bcdee19cfb6cd9b285af0b99723f401e72990e278ea029a07e3
(the actual keys I were given studying channel information with chantools from guggero).
On the other hand I will not derive the Consistent with-commitment-point, which must be:
0346d482f460d2a2e53db6c1f2cf06cfcf2d2151088787a4a7637ed35552a22767
I have carried out per-commitment-secret as in BOLT 03 and examined it with effectively with take a look at vectors, however nonetheless can’t derive the ‘0346d4..’ key.
generate_from_seed(seed, I):
P = seed
for B in 47 right down to 0:
if B set in I:
turn(B) in P
P = SHA256(P)
go back P
I take advantage of for seed the decoded prolonged non-public key:
extended_private_key = "vprv9DMUxX4ShgxMLHkP4A7EPJr52LoHYn5jD6vn3UfQnf6Tv1uA7mw3RozDzwD2vMxs5MWLAPENaxYvrDERFdARSQLa6RXWBih5bjRqh5hsfJr"
decoded_key = base58.b58decode(extended_private_key)
seed = decoded_key[46:78]
index = 0xFFFFFFFFFFFF # 281474976710655 (first channel).
I consider I am not the use of the fitting seed…May any individual please lend a hand learn how to derive the per-commitment-secret?