Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

keychain+lnwallet: when fetching priv keys or signing try to use cache #5629

Merged
merged 4 commits into from
Aug 27, 2021

Commits on Aug 26, 2021

  1. Configuration menu
    Copy the full SHA
    df11b0f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2206eba View commit details
    Browse the repository at this point in the history
  3. keychain+lnwallet: when fetching priv keys or signing try to use cache

    In this commit, we start to optimistically use the new private key cache
    that was added to btcwallet. As is, btcwallet will cache the decrypted
    account keys for each scope in memory. However, the existing methods
    to derive a child key from those account keys requires a write database
    transaction, and will re-derive the private key using BIP-32 each time.
    
    The newly added `DeriveFromKeyPathCache` lets us skip all this and
    directly use a cache assuming the account info is already cached. The
    new logic will try to use this method, but if it fails fall back to the
    existing `DeriveFromKeyPath` method. All calls after this will use this
    new cached key.
    
    Fixes lightningnetwork#5125.
    
    Basic benchmark before the btcwallet change and after:
    ```
    benchmark                    old ns/op     new ns/op     delta
    BenchmarkDerivePrivKey-8     22840583      125           -100.00%
    
    benchmark                    old allocs     new allocs     delta
    BenchmarkDerivePrivKey-8     89             2              -97.75%
    
    benchmark                    old bytes     new bytes     delta
    BenchmarkDerivePrivKey-8     10225         24            -99.77%
    ```
    Roasbeef committed Aug 26, 2021
    Configuration menu
    Copy the full SHA
    d6524ea View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    abb2448 View commit details
    Browse the repository at this point in the history