
High perfomance and low allocation BIP-32 HD key derivation library for .NET 9+
var der = new Bip32Key();
Secp256K1HdKey.Instance.DerivePath("m/44'/0'/0'/0/0", seed, ref der);
NistP256HdKey.Instance.DerivePath("m/44'/0'/0'/0/0", seed, ref der);
Ed25519HdKey.Instance.DerivePath("m/44'/0'/0'/0'/0'", seed, ref der);
var master = new Bip32Key();
Ed25519HdKey.Instance.DerivePath("m/44'/888'/0'/0'", seed, ref master);
var accounts = new List<byte[]>();
var derResult = new Bip32Key();
for (var i = 0u; i < 5u; i++)
{
Ed25519HdKey.Instance.Derive(ref master, KeyPathElement.Hard(i), ref derResult);
accounts.Add(Ed25519HdKey.Instance.GetPublic(derResult.Key));
}
Intel Core i9-14900K, 1 CPU, 32 logical and 24 physical cores (lower values is better)
Method |
Mean |
Error |
StdDev |
Ratio |
RatioSD |
Allocated |
Alloc Ratio |
NBip32FastKey |
32.49 us |
0.088 us |
0.083 us |
1.00 |
0.00 |
120 B |
1.00 |
NBitcoinKey |
447.77 us |
1.211 us |
1.074 us |
13.78 |
0.05 |
9664 B |
80.53 |
NetezosKey |
635.40 us |
1.744 us |
1.546 us |
19.55 |
0.07 |
3185946 B |
26,549.55 |
Method |
Mean |
Error |
StdDev |
Ratio |
Allocated |
Alloc Ratio |
NBip32FastKey |
4.527 us |
0.0217 us |
0.0193 us |
1.00 |
672 B |
1.00 |
NetezosKey |
6.041 us |
0.0258 us |
0.0242 us |
1.33 |
6136 B |
9.13 |
P3HdKey |
6.415 us |
0.0626 us |
0.0555 us |
1.42 |
6480 B |
9.64 |
Method |
Mean |
Error |
StdDev |
Ratio |
RatioSD |
Allocated |
Alloc Ratio |
NBip32FastKey |
167.2 us |
0.53 us |
0.49 us |
1.00 |
0.00 |
608 B |
1.00 |
NetezosKey |
1,483.8 us |
11.86 us |
10.51 us |
8.87 |
0.07 |
7029510 B |
11,561.69 |
Method |
Mean |
Error |
StdDev |
Ratio |
RatioSD |
Allocated |
Alloc Ratio |
NBip32FastParse |
73.83 ns |
0.227 ns |
0.212 ns |
1.00 |
0.00 |
80 B |
1.00 |
NBitcoinParse |
243.23 ns |
1.687 ns |
1.317 ns |
3.29 |
0.02 |
1168 B |
14.60 |
NetezosParse |
278.73 ns |
0.836 ns |
0.782 ns |
3.78 |
0.01 |
1184 B |
14.80 |
Benchmark code