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

Add MimbleWimble support #2

Open
wants to merge 14 commits into
base: master
Choose a base branch
from

Commits on Mar 26, 2024

  1. MimbleWimble(Tests): implement MW types

    Add types needed for MimbleWimble transactions and implement
    serialization.
    
    Made all MimbleWimble types implement ISerializable and
    interface and Read static method. Reuse NBitcoin's
    BitcoinStream for serialization and deserialization, but don't
    use its IBitcoinSerializable interface because it mixes reading
    and writing in one method.
    
    Added new test project for MimbleWimble tests. Added test for
    peg-in transaction.
    
    Added property-based tests for serialization and
    deserilaization.
    
    Added test that deserilizes transaction generated and
    serialized by modified litecoin test (see [1]).
    
    Added tests for parsing peg-out transaction and MW to MW
    (HogEx) transaction.
    
    [1] https://github.com/litecoin-project/litecoin/blob/5ac781487cc9589131437b23c69829f04002b97e/src/libmw/test/tests/models/tx/Test_Transaction.cpp
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    5f5e144 View commit details
    Browse the repository at this point in the history
  2. MimbleWimble: started implementing MW tx creation

    Add NBitcoin.Secp256k1 library because it has Schnorr
    signature. As the library requires .netstandard 2.1,
    make NLitecoin target it instead of 2.0.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    9b278b1 View commit details
    Browse the repository at this point in the history
  3. MimbleWimble(Tests): implement range proofs

    Implement construction of range proofs.
    
    Added a new test project that does differential tests for
    zero-knowledge proof components that uses Secp256k1-ZKP.Net
    library (libsecp256k1 wrapper) as reference.
    
    Use Assert.Inconclusive if function is missing in libsecp256k1
    on current platform.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    5bda392 View commit details
    Browse the repository at this point in the history
  4. MimbleWimble(Tests): implement tx builder

    Implement transaction builder and add tests for it.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    b3fe955 View commit details
    Browse the repository at this point in the history
  5. MimbleWimble(Tests): implement Wallet

    Added Wallet type, which is responsible for key derivation,
    rewinding of transaction outputs, and storage of rewound
    outputs (coins), as well as creating transactions using our
    keychain and spendable coins.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    8b80373 View commit details
    Browse the repository at this point in the history
  6. MimbleWimble(Tests): test key derivation

    Ported test for key derivation and stealth address generation
    using KeyChain.
    
    Minor code style improvements.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    ffd3763 View commit details
    Browse the repository at this point in the history
  7. MimbleWimble: fixes in Wallet and Tx builder

    Fixes in Wallet and TransactionBuilder mostly related to
    public/private spend keys.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    170593a View commit details
    Browse the repository at this point in the history
  8. MimbleWimble.Tests: added test for Wallet

    Added integration test for Wallet.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    b6d7358 View commit details
    Browse the repository at this point in the history
  9. Nlitecoin: update NBitcoin to 7.0.13

    Update NBitcoin to version 7.0.13 because older NBitcoin
    versions can't decode bech32 strings of length > 90, which is
    needed for MimbleWimble address decoding.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    a7f9adf View commit details
    Browse the repository at this point in the history
  10. MimbleWimble(Tests): implemented MW address decoding

    Implemented decoding of MimbleWimble stealth addresses. Added
    test.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    df23894 View commit details
    Browse the repository at this point in the history
  11. Nlitecoin: bump version

    Increase package's version to 0.2.0.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    4e74020 View commit details
    Browse the repository at this point in the history
  12. MimbleWimble: implement readonly keychain

    Implement "read-only" keychain, that allows for balance to be
    checked without knowledge of wallet's seed (which would allow
    for spending funds), only with private scan key and public
    spend keys.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    4e5edea View commit details
    Browse the repository at this point in the history
  13. MimbleWimble(Tests): addressed comments

    Addressed code review comments. Added latest Fsdk package in
    order to use BetterAssert function.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    af48f95 View commit details
    Browse the repository at this point in the history
  14. NLitecoin,MimbleWimble(Tests): handle HogEx Txs

    Fixed transaction deserialization so that it now handles HogEx
    transactions, which have mweb extension flag but don't contain
    MW transaction. Added test for this case.
    webwarrior-ws committed Mar 26, 2024
    Configuration menu
    Copy the full SHA
    9246218 View commit details
    Browse the repository at this point in the history