diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0204ed132..dea55f88f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,108 +1,71 @@ name: Build -on: +on: push: branches: - master +# repository_dispatch: +# types: [build] + workflow_dispatch: jobs: - - buildTestRelease: + + buildAndUnitTest: strategy: matrix: os: [ windows-latest, ubuntu-latest, macos-latest ] - include: - - os: windows-latest - extension: ".zip" - runtime: "win-x64" - package_runtime: "win-x64" - - os: ubuntu-latest - extension: ".tar.gz" - runtime: "linux-x64" - package_runtime: "linux-x64" - - os: macos-latest - runtime: "osx-x64" - package_runtime: "mac-x64" - extension: ".zip" - node_version: [16.x] - dotnet_version: ['6.0.101'] fail-fast: false runs-on: ${{ matrix.os }} - + env: - PROJECT_NAME: 'x42.Node' SOLUTION_PATH: 'src/Blockcore.sln' - PROJECT_PATH: 'src/Node/Blockcore.Node/Blockcore.Node.csproj' BUILD_CONFIGURATION: 'Release' steps: - uses: actions/checkout@v2 + name: Checkout - name: Setup dotnet uses: actions/setup-dotnet@v1 with: dotnet-version: | - 6.0.x + 8.0.x - - name: Setup Node.js (${{ matrix.node_version }}) + - name: Setup Node.js (16.x) uses: actions/setup-node@v1 with: - node-version: ${{ matrix.node_version }} + node-version: 18 - name: Variables run: | echo VERSION=$(npm run version --silent) >> $GITHUB_ENV - echo RELEASE_CONFIGURATION=${{ matrix.runtime }} >> $GITHUB_ENV shell: bash - - name: Setup .NET Core (${{ matrix.dotnet_version }}) - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{ matrix.dotnet_version }} - - - name: Restore + - name: Unit Test run: | dotnet nuget locals all --clear - dotnet restore ${{env.SOLUTION_PATH}} - - - name: Build - run: dotnet build -c ${{env.BUILD_CONFIGURATION}} -r ${{env.RELEASE_CONFIGURATION}} -v m ${{env.SOLUTION_PATH}} -p:ImportByWildcardBeforeSolution=false + dotnet test -v=normal --filter "FullyQualifiedName!~IntegrationTests&Unstable!=True" -c ${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_PATH}} - - name: Publish - run: dotnet publish -c ${{env.BUILD_CONFIGURATION}} -r ${{env.RELEASE_CONFIGURATION}} -v m -o ./bin/publish ${{env.PROJECT_PATH}} -p:ImportByWildcardBeforeSolution=false + - name: Nuget Pack + run: dotnet pack --configuration ${{env.BUILD_CONFIGURATION}} --output "${{github.workspace}}/package/" ${{env.SOLUTION_PATH}} - - name: Package Name - run: | - echo RELEASE_NAME=${{ env.PROJECT_NAME }}-${{ env.VERSION }}-${{ matrix.package_runtime }}${{ matrix.extension }} >> $GITHUB_ENV - echo RELEASE_PATH=${{ env.PROJECT_NAME }}-${{ env.VERSION }}-${{ matrix.package_runtime }}${{ matrix.extension }} >> $GITHUB_ENV - shell: bash - - - name: Package (Linux) - if: matrix.os == 'ubuntu-latest' - run: | - echo RELEASE_PATH=./bin/publish/${{env.RELEASE_NAME}} >> $GITHUB_ENV - cd ./bin/publish/ - tar cvzf ${{env.RELEASE_NAME}} * - - - name: Package (Windows) - if: matrix.os == 'windows-latest' - run: Compress-Archive -Path .\bin\publish\* -DestinationPath .\${{env.RELEASE_NAME}} - - - name: Package (Mac) - if: matrix.os == 'macos-latest' - run: zip -j -r ${{env.RELEASE_NAME}} ./bin/publish/ + - uses: actions/upload-artifact@v2 + with: + name: Blockcore-${{env.VERSION}}-${{matrix.os}}-preview + path: "${{github.workspace}}/package/" - name: Release - uses: DennisAMenace/action-release@master + if: matrix.os == 'ubuntu-latest' + uses: sondreb/action-release@main with: commit: 'master' token: ${{ secrets.GITHUB_TOKEN }} - files: "${{env.RELEASE_PATH}}" + folder: "${{github.workspace}}/package/" draft: true - prerelease: true + prerelease: false body: '' - name: "x42-BlockCore (Release ${{env.VERSION}})" - tag: v${{env.VERSION}} + name: "Blockcore ${{env.VERSION}}" + tag: ${{env.VERSION}} \ No newline at end of file diff --git a/.github/workflows/publish-pre-release.yml b/.github/workflows/publish-pre-release.yml index 306beab85..fc8f9ec1a 100644 --- a/.github/workflows/publish-pre-release.yml +++ b/.github/workflows/publish-pre-release.yml @@ -55,4 +55,4 @@ jobs: # run: nuget sources add -name "GPR" -Source "https://nuget.pkg.github.com/${{env.GITHUB_OWNER}}/index.json" -Username "${{env.GITHUB_OWNER}}" -Password ${{secrets.GITHUB_TOKEN}} # - name: Nuget Push - # run: nuget push **/*.nupkg -Source "GPR" -SkipDuplicate + # run: nuget push **/*.nupkg -Source "GPR" -SkipDuplicate \ No newline at end of file diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index efce1129a..362229987 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -19,6 +19,7 @@ jobs: env: SOLUTION_PATH: 'src/Blockcore.sln' BUILD_CONFIGURATION: 'Release' + DYLD_LIBRARY_PATH: "/System/Volumes/Data/opt/homebrew/lib" steps: @@ -28,14 +29,18 @@ jobs: uses: actions/setup-dotnet@v1 with: dotnet-version: | - 6.0.x + 8.0.x + - name: Install LevelDB + if: matrix.os == 'macos-latest' + run: brew install leveldb snappy gperftools + - name: Restore run: dotnet restore ${{env.SOLUTION_PATH}} - name: Build run: dotnet build -c ${{env.BUILD_CONFIGURATION}} -v m ${{env.SOLUTION_PATH}} - + - name: Unit Test run: dotnet test -v=normal --filter "FullyQualifiedName!~IntegrationTests&Unstable!=True" -c ${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_PATH}} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8f6e82fc..649213ad6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: uses: actions/setup-dotnet@v1 with: dotnet-version: | - 6.0.x + 8.0.x - name: Log Variables run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f88ac9186..b39b9a4bf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,7 +30,7 @@ jobs: uses: actions/setup-dotnet@v1 with: dotnet-version: | - 6.0.x + 8.0.x - name: Restore run: dotnet restore ${{env.SOLUTION_PATH}} diff --git a/CHANGELOG.md b/CHANGELOG.md index 94e9b5b51..67585b7ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,104 @@ +## (2023-05-15) + +* bump version ([3d8dc3a](https://github.com/block-core/blockcore/commit/3d8dc3a)) +* Move NBitcoin to namespace Blockcore.NBitcoin (#446) ([d6dd45b](https://github.com/block-core/blockcore/commit/d6dd45b)), closes [#446](https://github.com/block-core/blockcore/issues/446) + + + +## (2023-04-16) + +* Add an interface to override services from the network class (#438) ([faa5f75](https://github.com/block-core/blockcore/commit/faa5f75)), closes [#438](https://github.com/block-core/blockcore/issues/438) +* make sure cold staking legacy accounts default to bip44 ([729ec43](https://github.com/block-core/blockcore/commit/729ec43)) +* Update version and changelog ([9c4ff98](https://github.com/block-core/blockcore/commit/9c4ff98)) + + + +## (2023-02-02) + +* Fix big size blocks bug from NBitcoin ([880292e](https://github.com/block-core/blockcore/commit/880292e)) +* Fix not null warning ([f4f7330](https://github.com/block-core/blockcore/commit/f4f7330)) +* Update bitcoin checkpoints and defaultAssumeValid (#436) ([57a93a8](https://github.com/block-core/blockcore/commit/57a93a8)), closes [#436](https://github.com/block-core/blockcore/issues/436) +* Update version and changelog ([213b2e8](https://github.com/block-core/blockcore/commit/213b2e8)) + + + +## (2022-10-24) + +* Add back the SBC and RSC launch settings ([5e529f3](https://github.com/block-core/blockcore/commit/5e529f3)) +* Adding BC flags for SHA512 hashes ([62f41df](https://github.com/block-core/blockcore/commit/62f41df)) +* Adding MOL blockchain (#423) ([91eaea8](https://github.com/block-core/blockcore/commit/91eaea8)), closes [#423](https://github.com/block-core/blockcore/issues/423) +* Bump version and update change log ([d6f143a](https://github.com/block-core/blockcore/commit/d6f143a)) +* Enable blazor (#419) ([6829168](https://github.com/block-core/blockcore/commit/6829168)), closes [#419](https://github.com/block-core/blockcore/issues/419) +* Ensure that configuration file for MOL is lower-case only ([d631c72](https://github.com/block-core/blockcore/commit/d631c72)) +* Ensure that folder name is lower-case for MOL ([7826a8d](https://github.com/block-core/blockcore/commit/7826a8d)) +* Ensure that impleumx test and regtest is lowercase ([f5fc937](https://github.com/block-core/blockcore/commit/f5fc937)) +* Remove empty solution folder ([4ab57b2](https://github.com/block-core/blockcore/commit/4ab57b2)) +* Remove the reload on change to reduce listeners handlers (OS resources) ([09be90a](https://github.com/block-core/blockcore/commit/09be90a)) + + + +## (2022-09-29) + +* Add additional checkpoint for City Chain ([f928dab](https://github.com/block-core/blockcore/commit/f928dab)) +* Configure reloadOnChange to be false ([229a3ed](https://github.com/block-core/blockcore/commit/229a3ed)), closes [#418](https://github.com/block-core/blockcore/issues/418) +* Define a maximum tx fee or else zero few is required ([885634a](https://github.com/block-core/blockcore/commit/885634a)) +* Fix wallet to use segwit in the correct derivation path (#415) ([3ef32a7](https://github.com/block-core/blockcore/commit/3ef32a7)), closes [#415](https://github.com/block-core/blockcore/issues/415) +* Update DNS and seed nodes for City Chain ([f0fc349](https://github.com/block-core/blockcore/commit/f0fc349)) +* Update version ([c36bf5e](https://github.com/block-core/blockcore/commit/c36bf5e)) + + + +## (2022-08-26) + +* add changelog ([5e5cde6](https://github.com/block-core/blockcore/commit/5e5cde6)) +* Add error handling for rpc trx broad cast (#413) ([405629b](https://github.com/block-core/blockcore/commit/405629b)), closes [#413](https://github.com/block-core/blockcore/issues/413) +* Add UI for ban list (#408) ([6446575](https://github.com/block-core/blockcore/commit/6446575)), closes [#408](https://github.com/block-core/blockcore/issues/408) +* Change Blockcore logo (#412) ([8a4157e](https://github.com/block-core/blockcore/commit/8a4157e)), closes [#412](https://github.com/block-core/blockcore/issues/412) +* Preparing for cold staking pools (#410) ([f0cbd71](https://github.com/block-core/blockcore/commit/f0cbd71)), closes [#410](https://github.com/block-core/blockcore/issues/410) + + + +## (2022-06-12) + +* bump version ([2a34841](https://github.com/block-core/blockcore/commit/2a34841)) +* Hidden Mining menu when there is no wallet (#405) ([58d4540](https://github.com/block-core/blockcore/commit/58d4540)), closes [#405](https://github.com/block-core/blockcore/issues/405) +* Mine UI code correction (#406) ([ef8a08d](https://github.com/block-core/blockcore/commit/ef8a08d)), closes [#406](https://github.com/block-core/blockcore/issues/406) +* Update TSBC Consensus and TRSC Consensus (#407) ([23be1a7](https://github.com/block-core/blockcore/commit/23be1a7)), closes [#407](https://github.com/block-core/blockcore/issues/407) + + + +## (2022-05-18) + +* Add sign/verify schnorr using bouncy castle (#404) ([dd61fed](https://github.com/block-core/blockcore/commit/dd61fed)), closes [#404](https://github.com/block-core/blockcore/issues/404) + + + +## (2022-05-13) + +* Synced PowLimit condition with Official XRC Node (#403) ([baf9929](https://github.com/block-core/blockcore/commit/baf9929)), closes [#403](https://github.com/block-core/blockcore/issues/403) + + + +## (2022-05-10) + +* change nodes IP for SBC and RSC (#394) ([968052b](https://github.com/block-core/blockcore/commit/968052b)), closes [#394](https://github.com/block-core/blockcore/issues/394) +* Coldstake redeem bug (#396) ([cfeda4a](https://github.com/block-core/blockcore/commit/cfeda4a)), closes [#396](https://github.com/block-core/blockcore/issues/396) +* Node UI (#399) ([5e5c67a](https://github.com/block-core/blockcore/commit/5e5c67a)), closes [#399](https://github.com/block-core/blockcore/issues/399) +* Update NuGet packages (#400) ([1a1c2ee](https://github.com/block-core/blockcore/commit/1a1c2ee)), closes [#400](https://github.com/block-core/blockcore/issues/400) +* update SBC, RSC and CY logos (#401) ([25d68dc](https://github.com/block-core/blockcore/commit/25d68dc)), closes [#401](https://github.com/block-core/blockcore/issues/401) +* XRC HardFork - X11, DigiShield POW algo (#402) ([59458b4](https://github.com/block-core/blockcore/commit/59458b4)), closes [#402](https://github.com/block-core/blockcore/issues/402) + + + +## (2022-01-30) + +* add checkpoints to strax ([cc038cf](https://github.com/block-core/blockcore/commit/cc038cf)) +* Add endpoint to return the network weight for POS chains (#377) ([d4e38ee](https://github.com/block-core/blockcore/commit/d4e38ee)), closes [#377](https://github.com/block-core/blockcore/issues/377) +* Enable staking on strax (#379) ([36f93cb](https://github.com/block-core/blockcore/commit/36f93cb)), closes [#379](https://github.com/block-core/blockcore/issues/379) +* Upgrade for release 1.1.29 ([b21ac78](https://github.com/block-core/blockcore/commit/b21ac78)) + + + ## (2021-11-21) * Add max tx fee to strax network ([7d13219](https://github.com/block-core/blockcore/commit/7d13219)) diff --git a/src/Blockcore.sln b/src/Blockcore.sln index 63f5b72f7..1ee6fc356 100644 --- a/src/Blockcore.sln +++ b/src/Blockcore.sln @@ -29,6 +29,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Features.BlockSto EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Features.MemoryPool", "Features\Blockcore.Features.MemoryPool\Blockcore.Features.MemoryPool.csproj", "{AFDF6339-EE03-4F76-BFB5-024713230D91}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Features.MemoryPool.Tests", "Tests\Blockcore.Features.MemoryPool.Tests\Blockcore.Features.MemoryPool.Tests.csproj", "{0735CA29-50F0-4D29-9CDD-8121437D8170}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Features.Consensus", "Features\Blockcore.Features.Consensus\Blockcore.Features.Consensus.csproj", "{75C364C1-0785-4EDD-9DB8-B0B21F27573C}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Features.Consensus.Tests", "Tests\Blockcore.Features.Consensus.Tests\Blockcore.Features.Consensus.Tests.csproj", "{84433C94-9CB7-4D6F-B2C1-C16B6F7F277C}" @@ -131,8 +133,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Networks.Impleum" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Networks.BCP", "Networks\Blockcore.Networks.BCP\Blockcore.Networks.BCP.csproj", "{120500DF-C04F-43CC-9A1E-523A6429301F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "x42.Features.xServer", "Features\x42.Features.xServer\x42.Features.xServer.csproj", "{97875874-26BE-483E-838D-F43E5A3872FF}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Networks.Strax", "Networks\Blockcore.Networks.Strax\Blockcore.Networks.Strax.csproj", "{17330538-D54C-44B0-85AD-D652453FAD65}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Networks.X1", "Networks\Blockcore.Networks.X1\Blockcore.Networks.X1.csproj", "{9A2BA15A-C316-42B4-8E4D-E01B4873190C}" @@ -154,6 +154,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Networks.SeniorBl EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Networks.RoyalSportsCity", "Networks\Blockcore.Networks.RoyalSportsCity\Blockcore.Networks.RoyalSportsCity.csproj", "{D176C98F-E2EF-49C6-B073-32F08889BD27}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blockcore.Networks.Molie", "Networks\Blockcore.Networks.Molie\Blockcore.Networks.Molie.csproj", "{876BAE76-9A83-4757-9688-84E3692134FE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "x42.Features.xServer", "Features\x42.Features.xServer\x42.Features.xServer.csproj", "{37254468-1D80-4649-B2A1-A0CDF573FFC4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -208,6 +212,10 @@ Global {AFDF6339-EE03-4F76-BFB5-024713230D91}.Debug|Any CPU.Build.0 = Debug|Any CPU {AFDF6339-EE03-4F76-BFB5-024713230D91}.Release|Any CPU.ActiveCfg = Release|Any CPU {AFDF6339-EE03-4F76-BFB5-024713230D91}.Release|Any CPU.Build.0 = Release|Any CPU + {0735CA29-50F0-4D29-9CDD-8121437D8170}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0735CA29-50F0-4D29-9CDD-8121437D8170}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0735CA29-50F0-4D29-9CDD-8121437D8170}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0735CA29-50F0-4D29-9CDD-8121437D8170}.Release|Any CPU.Build.0 = Release|Any CPU {75C364C1-0785-4EDD-9DB8-B0B21F27573C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {75C364C1-0785-4EDD-9DB8-B0B21F27573C}.Debug|Any CPU.Build.0 = Debug|Any CPU {75C364C1-0785-4EDD-9DB8-B0B21F27573C}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -368,10 +376,6 @@ Global {120500DF-C04F-43CC-9A1E-523A6429301F}.Debug|Any CPU.Build.0 = Debug|Any CPU {120500DF-C04F-43CC-9A1E-523A6429301F}.Release|Any CPU.ActiveCfg = Release|Any CPU {120500DF-C04F-43CC-9A1E-523A6429301F}.Release|Any CPU.Build.0 = Release|Any CPU - {97875874-26BE-483E-838D-F43E5A3872FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {97875874-26BE-483E-838D-F43E5A3872FF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {97875874-26BE-483E-838D-F43E5A3872FF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {97875874-26BE-483E-838D-F43E5A3872FF}.Release|Any CPU.Build.0 = Release|Any CPU {17330538-D54C-44B0-85AD-D652453FAD65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {17330538-D54C-44B0-85AD-D652453FAD65}.Debug|Any CPU.Build.0 = Debug|Any CPU {17330538-D54C-44B0-85AD-D652453FAD65}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -404,6 +408,14 @@ Global {D176C98F-E2EF-49C6-B073-32F08889BD27}.Debug|Any CPU.Build.0 = Debug|Any CPU {D176C98F-E2EF-49C6-B073-32F08889BD27}.Release|Any CPU.ActiveCfg = Release|Any CPU {D176C98F-E2EF-49C6-B073-32F08889BD27}.Release|Any CPU.Build.0 = Release|Any CPU + {876BAE76-9A83-4757-9688-84E3692134FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {876BAE76-9A83-4757-9688-84E3692134FE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {876BAE76-9A83-4757-9688-84E3692134FE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {876BAE76-9A83-4757-9688-84E3692134FE}.Release|Any CPU.Build.0 = Release|Any CPU + {37254468-1D80-4649-B2A1-A0CDF573FFC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {37254468-1D80-4649-B2A1-A0CDF573FFC4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {37254468-1D80-4649-B2A1-A0CDF573FFC4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {37254468-1D80-4649-B2A1-A0CDF573FFC4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -420,6 +432,7 @@ Global {528DB00C-F8AE-4703-80E5-ECC37AC56A9E} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} {8B3DE868-8062-42C6-8D8A-A905A0D25DE4} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2} {AFDF6339-EE03-4F76-BFB5-024713230D91} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} + {0735CA29-50F0-4D29-9CDD-8121437D8170} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2} {75C364C1-0785-4EDD-9DB8-B0B21F27573C} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} {84433C94-9CB7-4D6F-B2C1-C16B6F7F277C} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2} {FB78D861-F3DF-412D-8A3D-D1756ADA39D4} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} @@ -463,7 +476,6 @@ Global {4275AF0C-587B-4C9D-A100-0F2DD1702674} = {64694A14-97E0-4CBC-8032-754F9353B2DD} {64E9C309-867E-45F6-A88E-7BC061305D0B} = {3B56C02B-4468-4268-B797-851562789FCC} {120500DF-C04F-43CC-9A1E-523A6429301F} = {3B56C02B-4468-4268-B797-851562789FCC} - {97875874-26BE-483E-838D-F43E5A3872FF} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} {17330538-D54C-44B0-85AD-D652453FAD65} = {3B56C02B-4468-4268-B797-851562789FCC} {9A2BA15A-C316-42B4-8E4D-E01B4873190C} = {3B56C02B-4468-4268-B797-851562789FCC} {4615D1C6-14CD-47CA-8B78-A462A37057F6} = {3B56C02B-4468-4268-B797-851562789FCC} @@ -472,6 +484,8 @@ Global {2834DEF2-0CF7-4012-A73D-07F06256CC75} = {3B56C02B-4468-4268-B797-851562789FCC} {9C962CB5-A11B-47F1-A5D3-2AD2215CF100} = {3B56C02B-4468-4268-B797-851562789FCC} {D176C98F-E2EF-49C6-B073-32F08889BD27} = {3B56C02B-4468-4268-B797-851562789FCC} + {876BAE76-9A83-4757-9688-84E3692134FE} = {3B56C02B-4468-4268-B797-851562789FCC} + {37254468-1D80-4649-B2A1-A0CDF573FFC4} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6C780ABA-5872-4B83-AD3F-A5BD423AD907} diff --git a/src/Blockcore/Base/BaseFeature.cs b/src/Blockcore/Base/BaseFeature.cs index 41c03a5a3..ee9db4247 100644 --- a/src/Blockcore/Base/BaseFeature.cs +++ b/src/Blockcore/Base/BaseFeature.cs @@ -17,7 +17,6 @@ using Blockcore.Consensus.Checkpoints; using Blockcore.Consensus.Rules; using Blockcore.Consensus.Validators; -using Blockcore.Controllers; using Blockcore.EventBus; using Blockcore.Interfaces; using Blockcore.Networks; @@ -30,7 +29,6 @@ using Blockcore.Utilities.Store; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using NBitcoin; [assembly: InternalsVisibleTo("Blockcore.Tests")] [assembly: InternalsVisibleTo("Blockcore.Tests.Common")] @@ -247,7 +245,7 @@ public override async Task InitializeAsync() this.chainState.ConsensusTip = this.consensusManager.Tip; - this.nodeStats.RegisterStats(sb => sb.Append(this.asyncProvider.GetStatistics(!this.nodeSettings.Log.DebugArgs.Any())), StatsType.Component, this.GetType().Name, 100); + this.nodeStats.RegisterStats(sb => sb.Append(this.asyncProvider.GetStatistics(!this.nodeSettings.Log.DebugArgs.Any(a => a == "tasks"))), StatsType.Component, this.GetType().Name, 100); ((IBlockStoreQueue)this.blockStore).ReindexChain(this.consensusManager, this.nodeLifetime.ApplicationStopping); } @@ -502,9 +500,6 @@ public static IFullNodeBuilder UseBaseFeature(this IFullNodeBuilder fullNodeBuil // Console services.AddSingleton(); - - // Controller - services.AddTransient(); }); }); diff --git a/src/Blockcore/Base/ChainState.cs b/src/Blockcore/Base/ChainState.cs index 902387862..bf67a2bcc 100644 --- a/src/Blockcore/Base/ChainState.cs +++ b/src/Blockcore/Base/ChainState.cs @@ -1,5 +1,4 @@ using Blockcore.Consensus.Chain; -using NBitcoin; namespace Blockcore.Base { diff --git a/src/Blockcore/Base/Deployments/BIP9Deployments.cs b/src/Blockcore/Base/Deployments/BIP9Deployments.cs index 3a6f777ee..9b45a97cd 100644 --- a/src/Blockcore/Base/Deployments/BIP9Deployments.cs +++ b/src/Blockcore/Base/Deployments/BIP9Deployments.cs @@ -1,5 +1,5 @@ using System; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Base.Deployments { diff --git a/src/Blockcore/Base/Deployments/DeploymentFlags.cs b/src/Blockcore/Base/Deployments/DeploymentFlags.cs index 65308927e..b4eee976d 100644 --- a/src/Blockcore/Base/Deployments/DeploymentFlags.cs +++ b/src/Blockcore/Base/Deployments/DeploymentFlags.cs @@ -3,7 +3,7 @@ using Blockcore.Consensus.Chain; using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Base.Deployments { diff --git a/src/Blockcore/Base/Deployments/NodeDeployments.cs b/src/Blockcore/Base/Deployments/NodeDeployments.cs index ffbf89474..94ea79c98 100644 --- a/src/Blockcore/Base/Deployments/NodeDeployments.cs +++ b/src/Blockcore/Base/Deployments/NodeDeployments.cs @@ -1,7 +1,6 @@ using Blockcore.Consensus.Chain; using Blockcore.Networks; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Base.Deployments { diff --git a/src/Blockcore/Base/Deployments/ThresholdConditionCache.cs b/src/Blockcore/Base/Deployments/ThresholdConditionCache.cs index 676c474c9..9e9f4b36e 100644 --- a/src/Blockcore/Base/Deployments/ThresholdConditionCache.cs +++ b/src/Blockcore/Base/Deployments/ThresholdConditionCache.cs @@ -4,8 +4,8 @@ using Blockcore.Base.Deployments.Models; using Blockcore.Consensus; using Blockcore.Consensus.Chain; +using Blockcore.NBitcoin; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Base.Deployments { diff --git a/src/Blockcore/Base/InitialBlockDownloadState.cs b/src/Blockcore/Base/InitialBlockDownloadState.cs index 583b6b4b7..7a54f6aaa 100644 --- a/src/Blockcore/Base/InitialBlockDownloadState.cs +++ b/src/Blockcore/Base/InitialBlockDownloadState.cs @@ -2,10 +2,10 @@ using Blockcore.Consensus; using Blockcore.Consensus.Checkpoints; using Blockcore.Interfaces; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Base { diff --git a/src/Blockcore/Base/InvalidBlockHashStore.cs b/src/Blockcore/Base/InvalidBlockHashStore.cs index e761c42f6..84f3f89a6 100644 --- a/src/Blockcore/Base/InvalidBlockHashStore.cs +++ b/src/Blockcore/Base/InvalidBlockHashStore.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; +using Blockcore.NBitcoin; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Base { diff --git a/src/Blockcore/Base/TimeSyncBehavior.cs b/src/Blockcore/Base/TimeSyncBehavior.cs index c417522a2..376fc3105 100644 --- a/src/Blockcore/Base/TimeSyncBehavior.cs +++ b/src/Blockcore/Base/TimeSyncBehavior.cs @@ -11,7 +11,6 @@ using Blockcore.P2P.Protocol.Payloads; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Base { diff --git a/src/Blockcore/Base/TipsManager.cs b/src/Blockcore/Base/TipsManager.cs index acf0f7126..595792396 100644 --- a/src/Blockcore/Base/TipsManager.cs +++ b/src/Blockcore/Base/TipsManager.cs @@ -7,7 +7,6 @@ using Blockcore.Utilities; using Blockcore.Utilities.Store; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Base { diff --git a/src/Blockcore/BlockPulling/AssignedDownload.cs b/src/Blockcore/BlockPulling/AssignedDownload.cs index 6d97aa4e7..c27723290 100644 --- a/src/Blockcore/BlockPulling/AssignedDownload.cs +++ b/src/Blockcore/BlockPulling/AssignedDownload.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using Blockcore.Consensus.Chain; -using NBitcoin; namespace Blockcore.BlockPulling { diff --git a/src/Blockcore/BlockPulling/BlockPuller.cs b/src/Blockcore/BlockPulling/BlockPuller.cs index 88c1a04f7..7ca832529 100644 --- a/src/Blockcore/BlockPulling/BlockPuller.cs +++ b/src/Blockcore/BlockPulling/BlockPuller.cs @@ -8,11 +8,11 @@ using Blockcore.Configuration; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.Chain; +using Blockcore.NBitcoin; using Blockcore.P2P.Peer; using Blockcore.P2P.Protocol.Payloads; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.BlockPulling { diff --git a/src/Blockcore/BlockPulling/BlockPullerBehavior.cs b/src/Blockcore/BlockPulling/BlockPullerBehavior.cs index 5a1408dbd..b0f49837c 100644 --- a/src/Blockcore/BlockPulling/BlockPullerBehavior.cs +++ b/src/Blockcore/BlockPulling/BlockPullerBehavior.cs @@ -3,13 +3,13 @@ using System.Threading.Tasks; using Blockcore.Consensus.Chain; using Blockcore.Interfaces; +using Blockcore.NBitcoin; using Blockcore.P2P.Peer; using Blockcore.P2P.Protocol; using Blockcore.P2P.Protocol.Behaviors; using Blockcore.P2P.Protocol.Payloads; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.BlockPulling { diff --git a/src/Blockcore/BlockPulling/DownloadJob.cs b/src/Blockcore/BlockPulling/DownloadJob.cs index 4dfaf06ab..b646ce7ac 100644 --- a/src/Blockcore/BlockPulling/DownloadJob.cs +++ b/src/Blockcore/BlockPulling/DownloadJob.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using Blockcore.Consensus.Chain; -using NBitcoin; namespace Blockcore.BlockPulling { diff --git a/src/Blockcore/Blockcore.csproj b/src/Blockcore/Blockcore.csproj index e28918399..3d273510c 100644 --- a/src/Blockcore/Blockcore.csproj +++ b/src/Blockcore/Blockcore.csproj @@ -23,13 +23,13 @@ - - - - - - - + + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -53,7 +53,7 @@ - + diff --git a/src/Blockcore/Builder/Feature/FullNodeFeature.cs b/src/Blockcore/Builder/Feature/FullNodeFeature.cs index 289ee3e3d..3bcc23316 100644 --- a/src/Blockcore/Builder/Feature/FullNodeFeature.cs +++ b/src/Blockcore/Builder/Feature/FullNodeFeature.cs @@ -1,18 +1,8 @@ using System; -using System.Threading; using System.Threading.Tasks; namespace Blockcore.Builder.Feature { - public enum FeatureInitializationState - { - Uninitialized, - Initializing, - Initialized, - Disposing, - Disposed - } - /// /// Defines methods for features that are managed by the FullNode. /// @@ -26,7 +16,7 @@ public interface IFullNodeFeature : IDisposable /// /// The state in which the feature currently is. /// - FeatureInitializationState State { get; set; } + string State { get; set; } /// /// Triggered when the FullNode host has fully started. @@ -39,10 +29,6 @@ public interface IFullNodeFeature : IDisposable /// should be thrown if dependency is missing /// Services and features registered to node. void ValidateDependencies(IFullNodeServiceProvider services); - - bool IsEnabled(); - - void WaitInitialized(); } /// @@ -61,7 +47,7 @@ public abstract class FullNodeFeature : IFullNodeFeature public bool InitializeBeforeBase { get; set; } /// - public FeatureInitializationState State { get; set; } + public string State { get; set; } /// public abstract Task InitializeAsync(); @@ -75,22 +61,5 @@ public virtual void Dispose() public virtual void ValidateDependencies(IFullNodeServiceProvider services) { } - - public virtual bool IsEnabled() - { - return true; - } - - public void WaitInitialized() - { - if (!this.IsEnabled()) - throw new NotSupportedException($"{this.GetType()} is not enabled."); - - // If this feature is awaiting initialization then wait a bit. - while (this.State == FeatureInitializationState.Uninitialized || this.State == FeatureInitializationState.Initializing) - { - Thread.Sleep(1000); - } - } } } diff --git a/src/Blockcore/Builder/FullNodeBuilder.cs b/src/Blockcore/Builder/FullNodeBuilder.cs index 2d9eb7bb3..67ddadbab 100644 --- a/src/Blockcore/Builder/FullNodeBuilder.cs +++ b/src/Blockcore/Builder/FullNodeBuilder.cs @@ -258,6 +258,8 @@ private IServiceCollection BuildServices() featureRegistration.BuildFeature(this.Services); } + this.Network.FullNodeBuilderServiceOverride?.OverrideServices(this); + return this.Services; } diff --git a/src/Blockcore/Builder/FullNodeFeatureExecutor.cs b/src/Blockcore/Builder/FullNodeFeatureExecutor.cs index 9d953d987..6d49757fb 100644 --- a/src/Blockcore/Builder/FullNodeFeatureExecutor.cs +++ b/src/Blockcore/Builder/FullNodeFeatureExecutor.cs @@ -52,9 +52,9 @@ public void Initialize() this.Execute(service => { - service.State = FeatureInitializationState.Initializing; + service.State = "Initializing"; service.InitializeAsync().GetAwaiter().GetResult(); - service.State = FeatureInitializationState.Initialized; + service.State = "Initialized"; }); } catch @@ -72,9 +72,9 @@ public void Dispose() { this.Execute(feature => { - feature.State = FeatureInitializationState.Disposing; + feature.State = "Disposing"; feature.Dispose(); - feature.State = FeatureInitializationState.Disposed; + feature.State = "Disposed"; }, true); } catch diff --git a/src/Blockcore/Builder/IFullNodeBuilderServiceOverride.cs b/src/Blockcore/Builder/IFullNodeBuilderServiceOverride.cs new file mode 100644 index 000000000..a383767ef --- /dev/null +++ b/src/Blockcore/Builder/IFullNodeBuilderServiceOverride.cs @@ -0,0 +1,20 @@ +using System; +using Blockcore.Builder.Feature; +using Blockcore.Configuration; +using Blockcore.Networks; +using Blockcore.Persistence; +using Microsoft.Extensions.DependencyInjection; + +namespace Blockcore.Builder +{ + /// + /// Allow specific network implementation to override services. + /// + public interface IFullNodeBuilderServiceOverride + { + /// + /// Intercept the builder to override services. + /// + void OverrideServices(IFullNodeBuilder builder); + } +} diff --git a/src/Blockcore/Configuration/DataFolder.cs b/src/Blockcore/Configuration/DataFolder.cs index a9201f275..843fbb8da 100644 --- a/src/Blockcore/Configuration/DataFolder.cs +++ b/src/Blockcore/Configuration/DataFolder.cs @@ -3,7 +3,6 @@ using Blockcore.Consensus.BlockInfo; using Blockcore.Utilities; using Blockcore.Utilities.Store; -using NBitcoin; namespace Blockcore.Configuration { diff --git a/src/Blockcore/Configuration/NodeSettings.cs b/src/Blockcore/Configuration/NodeSettings.cs index 6e7b53afa..49bd78155 100644 --- a/src/Blockcore/Configuration/NodeSettings.cs +++ b/src/Blockcore/Configuration/NodeSettings.cs @@ -8,11 +8,10 @@ using Blockcore.Builder.Feature; using Blockcore.Configuration.Logging; using Blockcore.Configuration.Settings; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; -using NBitcoin.Protocol; using NLog.Extensions.Logging; namespace Blockcore.Configuration @@ -383,7 +382,7 @@ public static void PrintHelp(Network network, IFullNodeBuilder fullNodeBuilder) builder.AppendLine($"-conf= Path to the configuration file. Defaults to {defaults.ConfigurationFile}."); builder.AppendLine($"-datadir= Path to the data directory. Defaults to {defaults.DataDir}."); builder.AppendLine($"-datadirroot= The path to the root data directory, which holds all node data on the machine. Defaults to 'Blockcore'."); - builder.AppendLine($"-debug[=] Set 'Debug' logging level. Specify what to log via e.g. '-debug=Blockcore.Miner,Blockcore.Wallet'."); + builder.AppendLine($"-debug[=] Set 'Debug' logging level (add -debug=tasks for backround tasks). Specify what to log via e.g. '-debug=Blockcore.Miner,Blockcore.Wallet'."); builder.AppendLine($"-loglevel= Direct control over the logging level: '-loglevel=trace/debug/info/warn/error/fatal'."); // Can be overridden in configuration file. diff --git a/src/Blockcore/Configuration/Settings/ConnectionManagerSettings.cs b/src/Blockcore/Configuration/Settings/ConnectionManagerSettings.cs index 4e4241196..203f854d7 100644 --- a/src/Blockcore/Configuration/Settings/ConnectionManagerSettings.cs +++ b/src/Blockcore/Configuration/Settings/ConnectionManagerSettings.cs @@ -7,7 +7,6 @@ using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Configuration.Settings { diff --git a/src/Blockcore/Configuration/Settings/ConsensusSettings.cs b/src/Blockcore/Configuration/Settings/ConsensusSettings.cs index 3a723a04e..1dceefa32 100644 --- a/src/Blockcore/Configuration/Settings/ConsensusSettings.cs +++ b/src/Blockcore/Configuration/Settings/ConsensusSettings.cs @@ -1,8 +1,8 @@ using System.Text; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Configuration.Settings { diff --git a/src/Blockcore/Configuration/TextFileConfiguration.cs b/src/Blockcore/Configuration/TextFileConfiguration.cs index 9fd0424bc..2895944f1 100644 --- a/src/Blockcore/Configuration/TextFileConfiguration.cs +++ b/src/Blockcore/Configuration/TextFileConfiguration.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using Blockcore.NBitcoin; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Configuration { diff --git a/src/Blockcore/Connection/Broadcasting/BroadcasterBehavior.cs b/src/Blockcore/Connection/Broadcasting/BroadcasterBehavior.cs index b523ed4e4..4c9ec2461 100644 --- a/src/Blockcore/Connection/Broadcasting/BroadcasterBehavior.cs +++ b/src/Blockcore/Connection/Broadcasting/BroadcasterBehavior.cs @@ -9,7 +9,6 @@ using Blockcore.P2P.Protocol.Behaviors; using Blockcore.P2P.Protocol.Payloads; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Connection.Broadcasting { diff --git a/src/Blockcore/Connection/Broadcasting/BroadcasterManager.cs b/src/Blockcore/Connection/Broadcasting/BroadcasterManager.cs index e45bc95d7..d42d6ccde 100644 --- a/src/Blockcore/Connection/Broadcasting/BroadcasterManager.cs +++ b/src/Blockcore/Connection/Broadcasting/BroadcasterManager.cs @@ -4,12 +4,12 @@ using System.Threading.Tasks; using Blockcore.Consensus.TransactionInfo; using Blockcore.Interfaces; +using Blockcore.NBitcoin; using Blockcore.P2P.Peer; using Blockcore.P2P.Protocol.Payloads; using Blockcore.Signals; using Blockcore.Utilities; using ConcurrentCollections; -using NBitcoin; namespace Blockcore.Connection.Broadcasting { diff --git a/src/Blockcore/Connection/Broadcasting/NoCheckBroadcastCheck.cs b/src/Blockcore/Connection/Broadcasting/NoCheckBroadcastCheck.cs index 9eb1a29c2..30444d1de 100644 --- a/src/Blockcore/Connection/Broadcasting/NoCheckBroadcastCheck.cs +++ b/src/Blockcore/Connection/Broadcasting/NoCheckBroadcastCheck.cs @@ -3,7 +3,6 @@ using Blockcore.Consensus.TransactionInfo; using Blockcore.Interfaces; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Connection.Broadcasting { diff --git a/src/Blockcore/Connection/ConnectionManager.cs b/src/Blockcore/Connection/ConnectionManager.cs index eb5a479c4..9a32260c9 100644 --- a/src/Blockcore/Connection/ConnectionManager.cs +++ b/src/Blockcore/Connection/ConnectionManager.cs @@ -12,6 +12,7 @@ using Blockcore.Configuration.Settings; using Blockcore.Consensus; using Blockcore.Interfaces; +using Blockcore.NBitcoin.Protocol; using Blockcore.Networks; using Blockcore.P2P; using Blockcore.P2P.Peer; @@ -19,7 +20,6 @@ using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Connection { diff --git a/src/Blockcore/Connection/DropNodesBehaviour.cs b/src/Blockcore/Connection/DropNodesBehaviour.cs index b6ba23636..ccc9207d9 100644 --- a/src/Blockcore/Connection/DropNodesBehaviour.cs +++ b/src/Blockcore/Connection/DropNodesBehaviour.cs @@ -9,7 +9,6 @@ using Blockcore.P2P.Protocol.Payloads; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Connection { diff --git a/src/Blockcore/Connection/IConnectionManager.cs b/src/Blockcore/Connection/IConnectionManager.cs index 2d430d60b..921d2101b 100644 --- a/src/Blockcore/Connection/IConnectionManager.cs +++ b/src/Blockcore/Connection/IConnectionManager.cs @@ -9,7 +9,6 @@ using Blockcore.P2P; using Blockcore.P2P.Peer; using Blockcore.P2P.Protocol.Payloads; -using NBitcoin; namespace Blockcore.Connection { diff --git a/src/Blockcore/Connection/PeerNodeModel.cs b/src/Blockcore/Connection/PeerNodeModel.cs index 6be8db0b7..8b9407174 100644 --- a/src/Blockcore/Connection/PeerNodeModel.cs +++ b/src/Blockcore/Connection/PeerNodeModel.cs @@ -11,173 +11,173 @@ public class PeerNodeModel /// Peer index. /// [JsonProperty(PropertyName = "id")] - public int Id { get; internal set; } + public int Id { get; set; } /// /// The IP address and port of the peer. /// [JsonProperty(PropertyName = "addr")] - public string Address { get; internal set; } + public string Address { get; set; } /// /// Local address as reported by the peer. /// [JsonProperty(PropertyName = "addrlocal")] - public string LocalAddress { get; internal set; } + public string LocalAddress { get; set; } /// /// The services offered. /// [JsonProperty(PropertyName = "services")] - public string Services { get; internal set; } + public string Services { get; set; } /// /// Whether the peer has asked us to relay transactions to it. /// Currently not populated. /// [JsonProperty(PropertyName = "relaytxes")] - public bool IsRelayTransactions { get; internal set; } + public bool IsRelayTransactions { get; set; } ///   ///  The Unix epoch time of the last send from this node. /// Currently not populated. ///   [JsonProperty(PropertyName = "lastsend")] - public int LastSend { get; internal set; } + public int LastSend { get; set; } ///   ///  The Unix epoch time when we last received data from this node. /// Currently not populated. ///   [JsonProperty(PropertyName = "lastrecv")] - public int LastReceive { get; internal set; } + public int LastReceive { get; set; } ///   ///  The total number of bytes we’ve sent to this node. ///  Currently not populated. ///   [JsonProperty(PropertyName = "bytessent")] - public long BytesSent { get; internal set; } + public long BytesSent { get; set; } ///   ///  The total number of bytes we’ve received from this node. ///  Currently not populated. ///   [JsonProperty(PropertyName = "bytesrecv")] - public long BytesReceived { get; internal set; } + public long BytesReceived { get; set; } ///   ///  The connection time in seconds since epoch. ///  Currently not populated. ///   [JsonProperty(PropertyName = "conntime")] - public int ConnectionTime { get; internal set; } + public int ConnectionTime { get; set; } /// /// The time offset in seconds. /// [JsonProperty(PropertyName = "timeoffset")] - public int TimeOffset { get; internal set; } + public int TimeOffset { get; set; } /// /// The ping time to the node in seconds. /// Currently not populated. /// [JsonProperty(PropertyName = "pingtime")] - public double PingTime { get; internal set; } + public double PingTime { get; set; } /// /// The minimum observed ping time. /// Currently not populated. /// [JsonProperty(PropertyName = "minping")] - public double MinPing { get; internal set; } + public double MinPing { get; set; } /// /// The number of seconds waiting for a ping. /// Currently not populated. /// [JsonProperty(PropertyName = "pingwait")] - public double PingWait { get; internal set; } + public double PingWait { get; set; } /// /// The protocol version number used by this node. /// [JsonProperty(PropertyName = "version")] - public uint Version { get; internal set; } + public uint Version { get; set; } /// /// The user agent this node sends in its version message. /// [JsonProperty(PropertyName = "subver")] - public string SubVersion { get; internal set; } + public string SubVersion { get; set; } /// /// Whether node is inbound or outbound connection. /// Currently not populated. /// [JsonProperty(PropertyName = "inbound")] - public bool Inbound { get; internal set; } + public bool Inbound { get; set; } /// /// Whether connection was due to addnode. /// Currently not populated. /// [JsonProperty(PropertyName = "addnode")] - public bool IsAddNode { get; internal set; } + public bool IsAddNode { get; set; } /// /// The starting height (block) of the peer. /// [JsonProperty(PropertyName = "startingheight")] - public int StartingHeight { get; internal set; } + public int StartingHeight { get; set; } /// /// The ban score for the node. /// Currently not populated. /// [JsonProperty(PropertyName = "banscore")] - public int BanScore { get; internal set; } + public int BanScore { get; set; } ///   ///  The last header we have in common with this peer. ///  Currently not populated. ///   [JsonProperty(PropertyName = "synced_headers")] - public int SynchronizedHeaders { get; internal set; } + public int SynchronizedHeaders { get; set; } /// /// The last block we have in common with this peer. /// Currently not populated. /// [JsonProperty(PropertyName = "synced_blocks")] - public int SynchronizedBlocks { get; internal set; } + public int SynchronizedBlocks { get; set; } /// /// Whether the peer is whitelisted. /// [JsonProperty(PropertyName = "whitelisted")] - public bool IsWhiteListed { get; internal set; } + public bool IsWhiteListed { get; set; } /// /// The heights of blocks we're currently asking from this peer. /// Currently not populated. /// [JsonProperty(PropertyName = "inflight")] - public uint[] Inflight { get; internal set; } + public uint[] Inflight { get; set; } /// /// Total sent bytes aggregated by message type. /// Currently not populated. /// [JsonProperty(PropertyName = "bytessent_per_msg")] - public uint[] BytesSentPerMessage { get; internal set; } + public uint[] BytesSentPerMessage { get; set; } /// /// Total received bytes aggregated by message type. /// Currently not populated. /// [JsonProperty(PropertyName = "bytesrecv_per_msg")] - public uint[] BytesReceivedPerMessage { get; internal set; } + public uint[] BytesReceivedPerMessage { get; set; } } } diff --git a/src/Blockcore/Consensus/BlockDownloadRequest.cs b/src/Blockcore/Consensus/BlockDownloadRequest.cs index fd2b5b933..fdea042e3 100644 --- a/src/Blockcore/Consensus/BlockDownloadRequest.cs +++ b/src/Blockcore/Consensus/BlockDownloadRequest.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using Blockcore.Consensus.Chain; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/BlockInfo/Block.cs b/src/Blockcore/Consensus/BlockInfo/Block.cs index 6557ad392..5865d3bfc 100644 --- a/src/Blockcore/Consensus/BlockInfo/Block.cs +++ b/src/Blockcore/Consensus/BlockInfo/Block.cs @@ -3,10 +3,10 @@ using System.IO; using System.Linq; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.DataEncoders; +using Blockcore.NBitcoin.Formatters; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.DataEncoders; -using NBitcoin.Formatters; using Newtonsoft.Json.Linq; namespace Blockcore.Consensus.BlockInfo diff --git a/src/Blockcore/Consensus/BlockInfo/BlockHeader.cs b/src/Blockcore/Consensus/BlockInfo/BlockHeader.cs index 6435e93aa..0bd470910 100644 --- a/src/Blockcore/Consensus/BlockInfo/BlockHeader.cs +++ b/src/Blockcore/Consensus/BlockInfo/BlockHeader.cs @@ -1,9 +1,9 @@ using System; using Blockcore.Consensus.Chain; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.Crypto; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.Crypto; namespace Blockcore.Consensus.BlockInfo { diff --git a/src/Blockcore/Consensus/BlockInfo/BlockSignature.cs b/src/Blockcore/Consensus/BlockInfo/BlockSignature.cs index ee296fe58..42a00fe53 100644 --- a/src/Blockcore/Consensus/BlockInfo/BlockSignature.cs +++ b/src/Blockcore/Consensus/BlockInfo/BlockSignature.cs @@ -1,6 +1,6 @@ using System.Linq; -using NBitcoin; -using NBitcoin.DataEncoders; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.DataEncoders; namespace Blockcore.Consensus.BlockInfo { diff --git a/src/Blockcore/Consensus/BlockInfo/BlockStake.cs b/src/Blockcore/Consensus/BlockInfo/BlockStake.cs index 54cae3872..933851b63 100644 --- a/src/Blockcore/Consensus/BlockInfo/BlockStake.cs +++ b/src/Blockcore/Consensus/BlockInfo/BlockStake.cs @@ -3,11 +3,11 @@ using System.Reflection; using Blockcore.Consensus.Chain; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.DataEncoders; +using Blockcore.NBitcoin.Protocol; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; -using NBitcoin.Protocol; namespace Blockcore.Consensus.BlockInfo { diff --git a/src/Blockcore/Consensus/BlockInfo/ProvenBlockHeader.cs b/src/Blockcore/Consensus/BlockInfo/ProvenBlockHeader.cs index 07a22f07d..f443dee72 100644 --- a/src/Blockcore/Consensus/BlockInfo/ProvenBlockHeader.cs +++ b/src/Blockcore/Consensus/BlockInfo/ProvenBlockHeader.cs @@ -1,6 +1,6 @@ using System; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Consensus.BlockInfo { diff --git a/src/Blockcore/Consensus/Chain/ChainIndexer.cs b/src/Blockcore/Consensus/Chain/ChainIndexer.cs index 0815b1b2a..09c990784 100644 --- a/src/Blockcore/Consensus/Chain/ChainIndexer.cs +++ b/src/Blockcore/Consensus/Chain/ChainIndexer.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; +using Blockcore.NBitcoin; using Blockcore.Networks; -using NBitcoin; namespace Blockcore.Consensus.Chain { diff --git a/src/Blockcore/Consensus/Chain/ChainRepository.cs b/src/Blockcore/Consensus/Chain/ChainRepository.cs index 8b0b43dd2..95f631b8c 100644 --- a/src/Blockcore/Consensus/Chain/ChainRepository.cs +++ b/src/Blockcore/Consensus/Chain/ChainRepository.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Consensus.Chain { diff --git a/src/Blockcore/Consensus/Chain/ChainStore.cs b/src/Blockcore/Consensus/Chain/ChainStore.cs index 7b6a1dbac..37aa993ad 100644 --- a/src/Blockcore/Consensus/Chain/ChainStore.cs +++ b/src/Blockcore/Consensus/Chain/ChainStore.cs @@ -2,7 +2,8 @@ using System.Collections.Concurrent; using System.Collections.Generic; using Blockcore.Consensus.BlockInfo; -using NBitcoin; +using Blockcore.NBitcoin; +using IBitcoinSerializable = Blockcore.NBitcoin.IBitcoinSerializable; namespace Blockcore.Consensus.Chain { diff --git a/src/Blockcore/Consensus/Chain/ChainedHeader.cs b/src/Blockcore/Consensus/Chain/ChainedHeader.cs index c9466d21b..37d7bc7b1 100644 --- a/src/Blockcore/Consensus/Chain/ChainedHeader.cs +++ b/src/Blockcore/Consensus/Chain/ChainedHeader.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Linq; using Blockcore.Consensus.BlockInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.BouncyCastle.math; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.BouncyCastle.Math; namespace Blockcore.Consensus.Chain { diff --git a/src/Blockcore/Consensus/Chain/ChainedHeaderTree.cs b/src/Blockcore/Consensus/Chain/ChainedHeaderTree.cs index f639b7eb4..994f7888f 100644 --- a/src/Blockcore/Consensus/Chain/ChainedHeaderTree.cs +++ b/src/Blockcore/Consensus/Chain/ChainedHeaderTree.cs @@ -6,10 +6,10 @@ using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.Checkpoints; using Blockcore.Consensus.Validators; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Consensus.Chain { diff --git a/src/Blockcore/Consensus/Checkpoints/CheckpointInfo.cs b/src/Blockcore/Consensus/Checkpoints/CheckpointInfo.cs index 211c7c7d4..4d14cc5d9 100644 --- a/src/Blockcore/Consensus/Checkpoints/CheckpointInfo.cs +++ b/src/Blockcore/Consensus/Checkpoints/CheckpointInfo.cs @@ -1,4 +1,4 @@ -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Consensus.Checkpoints { diff --git a/src/Blockcore/Consensus/Checkpoints/Checkpoints.cs b/src/Blockcore/Consensus/Checkpoints/Checkpoints.cs index 6b82bb464..b6adde763 100644 --- a/src/Blockcore/Consensus/Checkpoints/Checkpoints.cs +++ b/src/Blockcore/Consensus/Checkpoints/Checkpoints.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Linq; using Blockcore.Configuration.Settings; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Consensus.Checkpoints { diff --git a/src/Blockcore/Consensus/Consensus.cs b/src/Blockcore/Consensus/Consensus.cs index 36aa63b0b..984b2091b 100644 --- a/src/Blockcore/Consensus/Consensus.cs +++ b/src/Blockcore/Consensus/Consensus.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using Blockcore.Base.Deployments; -using NBitcoin; -using NBitcoin.BouncyCastle.Math; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.BouncyCastle.math; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/ConsensusFactory.cs b/src/Blockcore/Consensus/ConsensusFactory.cs index 52ae781b9..ebd8efae2 100644 --- a/src/Blockcore/Consensus/ConsensusFactory.cs +++ b/src/Blockcore/Consensus/ConsensusFactory.cs @@ -1,8 +1,8 @@ using System.Reflection; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; -using NBitcoin.DataEncoders; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.DataEncoders; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/ConsensusManager.cs b/src/Blockcore/Consensus/ConsensusManager.cs index 2d6b22fef..8d9b28279 100644 --- a/src/Blockcore/Consensus/ConsensusManager.cs +++ b/src/Blockcore/Consensus/ConsensusManager.cs @@ -15,13 +15,13 @@ using Blockcore.Consensus.Validators; using Blockcore.EventBus.CoreEvents; using Blockcore.Interfaces; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.P2P.Peer; using Blockcore.Signals; using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/ConsensusManagerBehavior.cs b/src/Blockcore/Consensus/ConsensusManagerBehavior.cs index ae6137d65..3152f9516 100644 --- a/src/Blockcore/Consensus/ConsensusManagerBehavior.cs +++ b/src/Blockcore/Consensus/ConsensusManagerBehavior.cs @@ -7,6 +7,7 @@ using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.Chain; using Blockcore.Interfaces; +using Blockcore.NBitcoin; using Blockcore.P2P.Peer; using Blockcore.P2P.Protocol; using Blockcore.P2P.Protocol.Behaviors; @@ -14,7 +15,6 @@ using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/ConsensusRuleEngine.cs b/src/Blockcore/Consensus/ConsensusRuleEngine.cs index 76d6605de..8e54afabd 100644 --- a/src/Blockcore/Consensus/ConsensusRuleEngine.cs +++ b/src/Blockcore/Consensus/ConsensusRuleEngine.cs @@ -11,10 +11,10 @@ using Blockcore.Consensus.Checkpoints; using Blockcore.Consensus.PerformanceCounters.Rules; using Blockcore.Consensus.Rules; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/DefaultConsensusfactory.cs b/src/Blockcore/Consensus/DefaultConsensusfactory.cs index 2f181bf64..47d6b6fe9 100644 --- a/src/Blockcore/Consensus/DefaultConsensusfactory.cs +++ b/src/Blockcore/Consensus/DefaultConsensusfactory.cs @@ -1,7 +1,7 @@ using System; using System.Reflection; using Blockcore.Consensus.BlockInfo; -using NBitcoin.Protocol; +using Blockcore.NBitcoin.Protocol; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/FinalizedBlockInfoRepository.cs b/src/Blockcore/Consensus/FinalizedBlockInfoRepository.cs index 4bec31bfe..2c14e2f62 100644 --- a/src/Blockcore/Consensus/FinalizedBlockInfoRepository.cs +++ b/src/Blockcore/Consensus/FinalizedBlockInfoRepository.cs @@ -3,11 +3,11 @@ using System.Threading; using System.Threading.Tasks; using Blockcore.AsyncWork; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Utilities; using Blockcore.Utilities.Store; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/IConsensus.cs b/src/Blockcore/Consensus/IConsensus.cs index 188e66173..a519aaa25 100644 --- a/src/Blockcore/Consensus/IConsensus.cs +++ b/src/Blockcore/Consensus/IConsensus.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using Blockcore.Base.Deployments; -using NBitcoin; -using NBitcoin.BouncyCastle.Math; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.BouncyCastle.math; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/IConsensusManager.cs b/src/Blockcore/Consensus/IConsensusManager.cs index 4af35c558..4a8657ae8 100644 --- a/src/Blockcore/Consensus/IConsensusManager.cs +++ b/src/Blockcore/Consensus/IConsensusManager.cs @@ -3,8 +3,8 @@ using System.Threading.Tasks; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.Chain; +using Blockcore.NBitcoin; using Blockcore.P2P.Peer; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/IConsensusRuleEngine.cs b/src/Blockcore/Consensus/IConsensusRuleEngine.cs index 35f2dfabb..6f3374de3 100644 --- a/src/Blockcore/Consensus/IConsensusRuleEngine.cs +++ b/src/Blockcore/Consensus/IConsensusRuleEngine.cs @@ -4,7 +4,6 @@ using Blockcore.Consensus.Chain; using Blockcore.Consensus.Rules; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/PeerGetHeaderRequestBehavior.cs b/src/Blockcore/Consensus/PeerGetHeaderRequestBehavior.cs index d3b907342..38eb745a3 100644 --- a/src/Blockcore/Consensus/PeerGetHeaderRequestBehavior.cs +++ b/src/Blockcore/Consensus/PeerGetHeaderRequestBehavior.cs @@ -2,13 +2,13 @@ using System.Linq; using System.Threading.Tasks; using Blockcore.Connection; +using Blockcore.NBitcoin; using Blockcore.P2P.Peer; using Blockcore.P2P.Protocol; using Blockcore.P2P.Protocol.Behaviors; using Blockcore.P2P.Protocol.Payloads; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/PerformanceCounters/ConsensusManager/ConsensusManagerPerformanceCounter.cs b/src/Blockcore/Consensus/PerformanceCounters/ConsensusManager/ConsensusManagerPerformanceCounter.cs index ae4893a78..642ff5367 100644 --- a/src/Blockcore/Consensus/PerformanceCounters/ConsensusManager/ConsensusManagerPerformanceCounter.cs +++ b/src/Blockcore/Consensus/PerformanceCounters/ConsensusManager/ConsensusManagerPerformanceCounter.cs @@ -1,7 +1,6 @@ using System; using Blockcore.Consensus.Chain; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Consensus.PerformanceCounters.ConsensusManager { diff --git a/src/Blockcore/Consensus/PerformanceCounters/ConsensusManager/ConsensusManagerPerformanceSnapshot.cs b/src/Blockcore/Consensus/PerformanceCounters/ConsensusManager/ConsensusManagerPerformanceSnapshot.cs index 6474db783..fa8bc4379 100644 --- a/src/Blockcore/Consensus/PerformanceCounters/ConsensusManager/ConsensusManagerPerformanceSnapshot.cs +++ b/src/Blockcore/Consensus/PerformanceCounters/ConsensusManager/ConsensusManagerPerformanceSnapshot.cs @@ -2,7 +2,6 @@ using System.Text; using System.Threading; using Blockcore.Consensus.Chain; -using NBitcoin; namespace Blockcore.Consensus.PerformanceCounters.ConsensusManager { diff --git a/src/Blockcore/Consensus/ScriptAddressReader.cs b/src/Blockcore/Consensus/ScriptAddressReader.cs index 0950f5a4f..0565d5356 100644 --- a/src/Blockcore/Consensus/ScriptAddressReader.cs +++ b/src/Blockcore/Consensus/ScriptAddressReader.cs @@ -1,7 +1,7 @@ using Blockcore.Consensus.ScriptInfo; using Blockcore.Interfaces; +using Blockcore.NBitcoin; using Blockcore.Networks; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/ScriptInfo/ColdStakingScriptSigParameters.cs b/src/Blockcore/Consensus/ScriptInfo/ColdStakingScriptSigParameters.cs index 0fdc542a5..f7dba8d55 100644 --- a/src/Blockcore/Consensus/ScriptInfo/ColdStakingScriptSigParameters.cs +++ b/src/Blockcore/Consensus/ScriptInfo/ColdStakingScriptSigParameters.cs @@ -1,5 +1,5 @@ using Blockcore.Consensus.TransactionInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Consensus.ScriptInfo { diff --git a/src/Blockcore/Consensus/ScriptInfo/ColdStakingScriptTemplate.cs b/src/Blockcore/Consensus/ScriptInfo/ColdStakingScriptTemplate.cs index 87be52743..c83ad7a6c 100644 --- a/src/Blockcore/Consensus/ScriptInfo/ColdStakingScriptTemplate.cs +++ b/src/Blockcore/Consensus/ScriptInfo/ColdStakingScriptTemplate.cs @@ -2,9 +2,9 @@ using System.Linq; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Utilities; -using NBitcoin; using static Blockcore.Consensus.ScriptInfo.OpcodeType; namespace Blockcore.Consensus.ScriptInfo diff --git a/src/Blockcore/Consensus/ScriptInfo/IStandardScriptsRegistry.cs b/src/Blockcore/Consensus/ScriptInfo/IStandardScriptsRegistry.cs index 7c00ca48a..5905dbe8f 100644 --- a/src/Blockcore/Consensus/ScriptInfo/IStandardScriptsRegistry.cs +++ b/src/Blockcore/Consensus/ScriptInfo/IStandardScriptsRegistry.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.BitcoinCore; using Blockcore.Networks; -using NBitcoin.BitcoinCore; namespace Blockcore.Consensus.ScriptInfo { diff --git a/src/Blockcore/Consensus/ScriptInfo/Script.cs b/src/Blockcore/Consensus/ScriptInfo/Script.cs index aeab1a54f..2c455f8ce 100644 --- a/src/Blockcore/Consensus/ScriptInfo/Script.cs +++ b/src/Blockcore/Consensus/ScriptInfo/Script.cs @@ -5,10 +5,10 @@ using System.Runtime.InteropServices; using System.Text; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; namespace Blockcore.Consensus.ScriptInfo { diff --git a/src/Blockcore/Consensus/ScriptInfo/ScriptEvaluationContext.cs b/src/Blockcore/Consensus/ScriptInfo/ScriptEvaluationContext.cs index cdefbbffe..ebc83adb1 100644 --- a/src/Blockcore/Consensus/ScriptInfo/ScriptEvaluationContext.cs +++ b/src/Blockcore/Consensus/ScriptInfo/ScriptEvaluationContext.cs @@ -3,9 +3,10 @@ using System.Collections.Generic; using System.Linq; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.Crypto; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.Crypto; namespace Blockcore.Consensus.ScriptInfo { @@ -2075,8 +2076,8 @@ private bool CheckSig(byte[] vchSig, byte[] vchPubKey, Script scriptCode, Transa byte nLenS = vchSig[5 + nLenR]; int R = 4; int S = 6 + nLenR; - var newS = new NBitcoin.BouncyCastle.Math.BigInteger(1, vchSig, S, nLenS); - var newR = new NBitcoin.BouncyCastle.Math.BigInteger(1, vchSig, R, nLenR); + var newS = new BigInteger(1, vchSig, S, nLenS); + var newR = new BigInteger(1, vchSig, R, nLenR); var sig2 = new ECDSASignature(newR, newS); if (sig2.R != scriptSig.Signature.R || sig2.S != scriptSig.Signature.S) { diff --git a/src/Blockcore/Consensus/ScriptInfo/ScriptReader.cs b/src/Blockcore/Consensus/ScriptInfo/ScriptReader.cs index 335ae7611..c76b4a210 100644 --- a/src/Blockcore/Consensus/ScriptInfo/ScriptReader.cs +++ b/src/Blockcore/Consensus/ScriptInfo/ScriptReader.cs @@ -3,9 +3,9 @@ using System.IO; using System.Linq; using System.Text; -using NBitcoin; -using NBitcoin.DataEncoders; -using ooo = NBitcoin.BouncyCastle.Math; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.DataEncoders; namespace Blockcore.Consensus.ScriptInfo { @@ -310,7 +310,7 @@ public static bool GetOpCode(string name, out OpcodeType result) public static Op GetPushOp(long value) { - return GetPushOp(Utils.BigIntegerToBytes(ooo.BigInteger.ValueOf(value))); + return GetPushOp(Utils.BigIntegerToBytes(BigInteger.ValueOf(value))); } public static Op GetPushOp(byte[] data) { diff --git a/src/Blockcore/Consensus/ScriptInfo/StandardScriptTemplate.cs b/src/Blockcore/Consensus/ScriptInfo/StandardScriptTemplate.cs index 6067756db..019ee7368 100644 --- a/src/Blockcore/Consensus/ScriptInfo/StandardScriptTemplate.cs +++ b/src/Blockcore/Consensus/ScriptInfo/StandardScriptTemplate.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Linq; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.Crypto; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.Crypto; namespace Blockcore.Consensus.ScriptInfo { diff --git a/src/Blockcore/Consensus/ScriptInfo/StandardScripts.cs b/src/Blockcore/Consensus/ScriptInfo/StandardScripts.cs index 74251670d..0c5f19858 100644 --- a/src/Blockcore/Consensus/ScriptInfo/StandardScripts.cs +++ b/src/Blockcore/Consensus/ScriptInfo/StandardScripts.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Linq; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.BitcoinCore; +using Blockcore.NBitcoin.Policy; using Blockcore.Networks; -using NBitcoin.BitcoinCore; -using NBitcoin.Policy; namespace Blockcore.Consensus.ScriptInfo { diff --git a/src/Blockcore/Consensus/ScriptInfo/StandardScriptsRegistry.cs b/src/Blockcore/Consensus/ScriptInfo/StandardScriptsRegistry.cs index e06866d7b..51409f07e 100644 --- a/src/Blockcore/Consensus/ScriptInfo/StandardScriptsRegistry.cs +++ b/src/Blockcore/Consensus/ScriptInfo/StandardScriptsRegistry.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.BitcoinCore; using Blockcore.Networks; -using NBitcoin.BitcoinCore; namespace Blockcore.Consensus.ScriptInfo { diff --git a/src/Blockcore/Consensus/TransactionInfo/PrecomputedTransactionData.cs b/src/Blockcore/Consensus/TransactionInfo/PrecomputedTransactionData.cs index 36f683bf7..a68188460 100644 --- a/src/Blockcore/Consensus/TransactionInfo/PrecomputedTransactionData.cs +++ b/src/Blockcore/Consensus/TransactionInfo/PrecomputedTransactionData.cs @@ -1,5 +1,5 @@ using Blockcore.Consensus.ScriptInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Consensus.TransactionInfo { diff --git a/src/Blockcore/Consensus/TransactionInfo/Transaction.cs b/src/Blockcore/Consensus/TransactionInfo/Transaction.cs index 264be674f..64424cb43 100644 --- a/src/Blockcore/Consensus/TransactionInfo/Transaction.cs +++ b/src/Blockcore/Consensus/TransactionInfo/Transaction.cs @@ -4,12 +4,12 @@ using System.Linq; using Blockcore.Consensus.Chain; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.DataEncoders; +using Blockcore.NBitcoin.Formatters; +using Blockcore.NBitcoin.Protocol; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; -using NBitcoin.Formatters; -using NBitcoin.Protocol; namespace Blockcore.Consensus.TransactionInfo { diff --git a/src/Blockcore/Consensus/TransactionInfo/TransactionBuilder.cs b/src/Blockcore/Consensus/TransactionInfo/TransactionBuilder.cs index 87cc7c29d..45c454d00 100644 --- a/src/Blockcore/Consensus/TransactionInfo/TransactionBuilder.cs +++ b/src/Blockcore/Consensus/TransactionInfo/TransactionBuilder.cs @@ -4,12 +4,12 @@ using System.Text; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.BuilderExtensions; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.OpenAsset; +using Blockcore.NBitcoin.Policy; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.BuilderExtensions; -using NBitcoin.Crypto; -using NBitcoin.OpenAsset; -using NBitcoin.Policy; namespace Blockcore.Consensus.TransactionInfo { diff --git a/src/Blockcore/Consensus/TransactionInfo/TransactionNotFoundException.cs b/src/Blockcore/Consensus/TransactionInfo/TransactionNotFoundException.cs index de18185dd..723e6b14b 100644 --- a/src/Blockcore/Consensus/TransactionInfo/TransactionNotFoundException.cs +++ b/src/Blockcore/Consensus/TransactionInfo/TransactionNotFoundException.cs @@ -1,5 +1,5 @@ using System; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Consensus.TransactionInfo { diff --git a/src/Blockcore/Consensus/TransactionInfo/TransactionSignature.cs b/src/Blockcore/Consensus/TransactionInfo/TransactionSignature.cs index aec08a150..e1d7eaf03 100644 --- a/src/Blockcore/Consensus/TransactionInfo/TransactionSignature.cs +++ b/src/Blockcore/Consensus/TransactionInfo/TransactionSignature.cs @@ -1,15 +1,16 @@ using System; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; namespace Blockcore.Consensus.TransactionInfo { public class TransactionSignature { - private static readonly TransactionSignature _Empty = new TransactionSignature(new ECDSASignature(NBitcoin.BouncyCastle.Math.BigInteger.ValueOf(0), NBitcoin.BouncyCastle.Math.BigInteger.ValueOf(0)), SigHash.All); + private static readonly TransactionSignature _Empty = new TransactionSignature(new ECDSASignature(BigInteger.ValueOf(0), BigInteger.ValueOf(0)), SigHash.All); public static TransactionSignature Empty { get diff --git a/src/Blockcore/Consensus/ValidationContext.cs b/src/Blockcore/Consensus/ValidationContext.cs index c7cd539e4..0839b5bba 100644 --- a/src/Blockcore/Consensus/ValidationContext.cs +++ b/src/Blockcore/Consensus/ValidationContext.cs @@ -3,7 +3,6 @@ using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.Chain; using Blockcore.P2P.Protocol.Payloads; -using NBitcoin; namespace Blockcore.Consensus { diff --git a/src/Blockcore/Consensus/ValidationResults/ConnectBlocksResult.cs b/src/Blockcore/Consensus/ValidationResults/ConnectBlocksResult.cs index 852c14047..5845fc413 100644 --- a/src/Blockcore/Consensus/ValidationResults/ConnectBlocksResult.cs +++ b/src/Blockcore/Consensus/ValidationResults/ConnectBlocksResult.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using Blockcore.Consensus.Chain; -using NBitcoin; namespace Blockcore.Consensus.ValidationResults { diff --git a/src/Blockcore/Consensus/Validators/BlockValidator.cs b/src/Blockcore/Consensus/Validators/BlockValidator.cs index 58912ed59..40b141c14 100644 --- a/src/Blockcore/Consensus/Validators/BlockValidator.cs +++ b/src/Blockcore/Consensus/Validators/BlockValidator.cs @@ -6,7 +6,6 @@ using Blockcore.Consensus.Chain; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.Consensus.Validators { diff --git a/src/Blockcore/Controllers/Models/BlockchainInfoModel.cs b/src/Blockcore/Controllers/Models/BlockchainInfoModel.cs deleted file mode 100644 index d0af82cca..000000000 --- a/src/Blockcore/Controllers/Models/BlockchainInfoModel.cs +++ /dev/null @@ -1,146 +0,0 @@ -using System.Collections.Generic; -using NBitcoin; -using Newtonsoft.Json; - -namespace Blockcore.Controllers.Models -{ - // Bitcoin Core 0.17.0 - //{ - // "chain": "xxxx", (string) current network name as defined in BIP70(main, test, regtest) - // * "blocks": xxxxxx, (numeric) the current number of blocks processed in the server - // * "headers": xxxxxx, (numeric) the current number of headers we have validated - // "bestblockhash": "...", (string) the hash of the currently best block - // "difficulty": xxxxxx, (numeric) the current difficulty - // * "mediantime": xxxxxx, (numeric) median time for the current best block - // * "verificationprogress": xxxx, (numeric) estimate of verification progress[0..1] - // * "initialblockdownload": xxxx, (bool) (debug information) estimate of whether this node is in Initial Block Download mode. - // "chainwork": "xxxx" (string) total amount of work in active chain, in hexadecimal - // "size_on_disk": xxxxxx, (numeric) the estimated size of the block and undo files on disk - // "pruned": xx, (boolean) if the blocks are subject to pruning - // "pruneheight": xxxxxx, (numeric) lowest-height complete block stored (only present if pruning is enabled) - // "automatic_pruning": xx, (boolean) whether automatic pruning is enabled (only present if pruning is enabled) - // "prune_target_size": xxxxxx, (numeric) the target size used by pruning (only present if automatic pruning is enabled) - // "softforks": [ (array) status of softforks in progress - // { - // "id": "xxxx", (string) name of softfork - // "version": xx, (numeric) block version - // "reject": { (object) progress toward rejecting pre-softfork blocks - // "status": xx, (boolean) true if threshold reached - // }, - // }, ... - // ], - // "bip9_softforks": { (object) status of BIP9 softforks in progress - // "xxxx" : { (string) name of the softfork - // "status": "xxxx", (string) one of "defined", "started", "locked_in", "active", "failed" - // "bit": xx, (numeric) the bit(0-28) in the block version field used to signal this softfork (only for "started" status) - // "startTime": xx, (numeric) the minimum median time past of a block at which the bit gains its meaning - // "timeout": xx, (numeric) the median time past of a block at which the deployment is considered failed if not yet locked in - // "since": xx, (numeric) height of the first block to which the status applies - // "statistics": { - // (object)numeric statistics about BIP9 signalling for a softfork (only for "started" status) - // "period": xx, (numeric)the length in blocks of the BIP9 signalling period - // "threshold": xx, (numeric)the number of blocks with the version bit set required to activate the feature - // "elapsed": xx, (numeric)the number of blocks elapsed since the beginning of the current period - // "count": xx, (numeric)the number of blocks with the version bit set in the current period - // "possible": xx(boolean) returns false if there are not enough blocks left in this period to pass activation threshold - // } - // } - // } - // "warnings" : "...", (string) any network and blockchain warnings. - //} - public class BlockchainInfoModel - { - [JsonProperty(PropertyName = "chain")] - public string Chain { get; set; } - - [JsonProperty(PropertyName = "blocks")] - public uint Blocks { get; set; } - - [JsonProperty(PropertyName = "headers")] - public uint Headers { get; set; } - - [JsonProperty(PropertyName = "bestblockhash")] - public uint256 BestBlockHash { get; set; } - - [JsonProperty(PropertyName = "difficulty")] - public double Difficulty { get; set; } - - [JsonProperty(PropertyName = "mediantime")] - public long MedianTime { get; set; } - - [JsonProperty(PropertyName = "verificationprogress")] - public double VerificationProgress { get; set; } - - [JsonProperty(PropertyName = "initialblockdownload")] - public bool IsInitialBlockDownload { get; set; } - - [JsonProperty(PropertyName = "chainwork")] - public uint256 Chainwork { get; set; } - - [JsonProperty(PropertyName = "pruned")] - public bool IsPruned { get; set; } - - [JsonProperty(PropertyName = "softforks")] - public List SoftForks { get; set; } - - [JsonProperty(PropertyName = "bip9_softforks")] - public Dictionary SoftForksBip9 { get; set; } - } - - public class SoftForks - { - [JsonProperty(PropertyName = "id")] - public string Id { get; set; } - - [JsonProperty(PropertyName = "version")] - public int Version { get; set; } - - [JsonProperty(PropertyName = "reject")] - public SoftForksStatus Status { get; set; } - } - - public class SoftForksStatus - { - [JsonProperty(PropertyName = "status")] - public bool Status { get; set; } - } - - public class SoftForksBip9 - { - [JsonProperty(PropertyName = "status")] - public string Status { get; set; } - - [JsonProperty(PropertyName = "startTime")] - public int StartTime { get; set; } - - [JsonProperty(PropertyName = "timeout")] - public int Timeout { get; set; } - - [JsonProperty(PropertyName = "since")] - public int Since { get; set; } - - [JsonProperty(PropertyName = "bit")] - public int Bit { get; set; } - - [JsonProperty(PropertyName = "statistics")] - public SoftForksBip9Statistics Statistics { get; set; } - } - - public class SoftForksBip9Statistics - { - [JsonProperty(PropertyName = "period")] - public int Period { get; set; } - - [JsonProperty(PropertyName = "threshold")] - public int Threshold { get; set; } - - [JsonProperty(PropertyName = "elapsed")] - public int Elapsed { get; set; } - - [JsonProperty(PropertyName = "count")] - public int Count { get; set; } - - [JsonProperty(PropertyName = "possible")] - public bool Possible { get; set; } - } -} diff --git a/src/Blockcore/EventBus/CoreEvents/BlockConnected.cs b/src/Blockcore/EventBus/CoreEvents/BlockConnected.cs index 3f3e92869..b35d0ba5f 100644 --- a/src/Blockcore/EventBus/CoreEvents/BlockConnected.cs +++ b/src/Blockcore/EventBus/CoreEvents/BlockConnected.cs @@ -1,5 +1,5 @@ using Blockcore.Consensus.Chain; -using NBitcoin; +using Blockcore.NBitcoin; using Newtonsoft.Json; namespace Blockcore.EventBus.CoreEvents diff --git a/src/Blockcore/EventBus/CoreEvents/BlockDisconnected.cs b/src/Blockcore/EventBus/CoreEvents/BlockDisconnected.cs index bbdb65ac7..b63b77ccf 100644 --- a/src/Blockcore/EventBus/CoreEvents/BlockDisconnected.cs +++ b/src/Blockcore/EventBus/CoreEvents/BlockDisconnected.cs @@ -1,5 +1,5 @@ using Blockcore.Consensus.Chain; -using NBitcoin; +using Blockcore.NBitcoin; using Newtonsoft.Json; namespace Blockcore.EventBus.CoreEvents diff --git a/src/Blockcore/EventBus/CoreEvents/TransactionReceived.cs b/src/Blockcore/EventBus/CoreEvents/TransactionReceived.cs index 24caac915..8e107ecb6 100644 --- a/src/Blockcore/EventBus/CoreEvents/TransactionReceived.cs +++ b/src/Blockcore/EventBus/CoreEvents/TransactionReceived.cs @@ -1,6 +1,5 @@ using System; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; using Newtonsoft.Json; namespace Blockcore.EventBus.CoreEvents diff --git a/src/Blockcore/EventBus/EventBase.cs b/src/Blockcore/EventBus/EventBase.cs index ebcf1a86a..7c4630bbc 100644 --- a/src/Blockcore/EventBus/EventBase.cs +++ b/src/Blockcore/EventBus/EventBase.cs @@ -1,5 +1,4 @@ using System; -using Blockcore.Broadcasters; namespace Blockcore.EventBus { diff --git a/src/Blockcore/FullNode.cs b/src/Blockcore/FullNode.cs index 58cfb0951..2fe9cdd20 100644 --- a/src/Blockcore/FullNode.cs +++ b/src/Blockcore/FullNode.cs @@ -12,10 +12,8 @@ using Blockcore.Interfaces; using Blockcore.Networks; using Blockcore.Utilities; -using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore { @@ -45,9 +43,6 @@ public class FullNode : IFullNode /// Provider of notification about newly available blocks and transactions. public Signals.ISignals Signals { get; set; } - /// ASP.NET Core host for RPC server. - public IWebHost RPCHost { get; set; } - /// public FullNodeState State { get; private set; } @@ -284,9 +279,6 @@ public void Dispose() this.logger.LogInformation("Disposing connection manager."); this.ConnectionManager.Dispose(); - this.logger.LogInformation("Disposing RPC host."); - this.RPCHost?.Dispose(); - this.logger.LogInformation("Disposing periodic logging loops."); this.periodicLogLoop?.Dispose(); this.periodicBenchmarkLoop?.Dispose(); diff --git a/src/Blockcore/IFullNode.cs b/src/Blockcore/IFullNode.cs index 7feb8e219..43791ae87 100644 --- a/src/Blockcore/IFullNode.cs +++ b/src/Blockcore/IFullNode.cs @@ -2,7 +2,6 @@ using Blockcore.Builder; using Blockcore.Networks; using Blockcore.Utilities; -using Microsoft.AspNetCore.Hosting; namespace Blockcore { @@ -26,9 +25,6 @@ public interface IFullNode : IDisposable /// Software version of the full node. Version Version { get; } - /// ASP.NET Core host for RPC server. - IWebHost RPCHost { get; set; } - /// Provides current state of the node. FullNodeState State { get; } diff --git a/src/Blockcore/Interfaces/IBlockRepository.cs b/src/Blockcore/Interfaces/IBlockRepository.cs index 34512283c..116e4a33e 100644 --- a/src/Blockcore/Interfaces/IBlockRepository.cs +++ b/src/Blockcore/Interfaces/IBlockRepository.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using Blockcore.Consensus.BlockInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/IBlockStore.cs b/src/Blockcore/Interfaces/IBlockStore.cs index 3dbc360c4..bc82513f6 100644 --- a/src/Blockcore/Interfaces/IBlockStore.cs +++ b/src/Blockcore/Interfaces/IBlockStore.cs @@ -3,7 +3,7 @@ using System.Threading; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/IBlockStoreQueue.cs b/src/Blockcore/Interfaces/IBlockStoreQueue.cs index df8ee3651..4f261324e 100644 --- a/src/Blockcore/Interfaces/IBlockStoreQueue.cs +++ b/src/Blockcore/Interfaces/IBlockStoreQueue.cs @@ -1,7 +1,6 @@ using System.Threading; using Blockcore.Consensus; using Blockcore.Consensus.Chain; -using NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/IBroadcasterManager.cs b/src/Blockcore/Interfaces/IBroadcasterManager.cs index 2c7325861..64173aa89 100644 --- a/src/Blockcore/Interfaces/IBroadcasterManager.cs +++ b/src/Blockcore/Interfaces/IBroadcasterManager.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using Blockcore.Connection.Broadcasting; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/IGetUnspentTransaction.cs b/src/Blockcore/Interfaces/IGetUnspentTransaction.cs index be29c20a8..8850c05f8 100644 --- a/src/Blockcore/Interfaces/IGetUnspentTransaction.cs +++ b/src/Blockcore/Interfaces/IGetUnspentTransaction.cs @@ -1,7 +1,6 @@ using System.Threading.Tasks; using Blockcore.Consensus.TransactionInfo; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/INetworkDifficulty.cs b/src/Blockcore/Interfaces/INetworkDifficulty.cs index 4893cd13d..94ac78cde 100644 --- a/src/Blockcore/Interfaces/INetworkDifficulty.cs +++ b/src/Blockcore/Interfaces/INetworkDifficulty.cs @@ -1,4 +1,4 @@ -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/INetworkWeight.cs b/src/Blockcore/Interfaces/INetworkWeight.cs new file mode 100644 index 000000000..538fd3e9a --- /dev/null +++ b/src/Blockcore/Interfaces/INetworkWeight.cs @@ -0,0 +1,7 @@ +namespace Blockcore.Interfaces +{ + public interface INetworkWeight + { + double GetPosNetworkWeight(); + } +} diff --git a/src/Blockcore/Interfaces/IPooledTransaction.cs b/src/Blockcore/Interfaces/IPooledTransaction.cs index 3990288d1..a02cef7b6 100644 --- a/src/Blockcore/Interfaces/IPooledTransaction.cs +++ b/src/Blockcore/Interfaces/IPooledTransaction.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/IProvenBlockHeaderProvider.cs b/src/Blockcore/Interfaces/IProvenBlockHeaderProvider.cs index 3128bfbce..6db741db7 100644 --- a/src/Blockcore/Interfaces/IProvenBlockHeaderProvider.cs +++ b/src/Blockcore/Interfaces/IProvenBlockHeaderProvider.cs @@ -2,7 +2,6 @@ using System.Threading.Tasks; using Blockcore.Consensus.BlockInfo; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/IProvenBlockHeaderRepository.cs b/src/Blockcore/Interfaces/IProvenBlockHeaderRepository.cs index c4af5b25c..ca8403b72 100644 --- a/src/Blockcore/Interfaces/IProvenBlockHeaderRepository.cs +++ b/src/Blockcore/Interfaces/IProvenBlockHeaderRepository.cs @@ -2,7 +2,6 @@ using System.Threading.Tasks; using Blockcore.Consensus.BlockInfo; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/IProvenBlockHeaderStore.cs b/src/Blockcore/Interfaces/IProvenBlockHeaderStore.cs index d000b6153..95ea30879 100644 --- a/src/Blockcore/Interfaces/IProvenBlockHeaderStore.cs +++ b/src/Blockcore/Interfaces/IProvenBlockHeaderStore.cs @@ -3,7 +3,6 @@ using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.Chain; using Blockcore.Utilities; -using NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Interfaces/IScriptAddressReader.cs b/src/Blockcore/Interfaces/IScriptAddressReader.cs index 5b0549c92..01615bbef 100644 --- a/src/Blockcore/Interfaces/IScriptAddressReader.cs +++ b/src/Blockcore/Interfaces/IScriptAddressReader.cs @@ -1,7 +1,6 @@ using Blockcore.Consensus; using Blockcore.Consensus.ScriptInfo; using Blockcore.Networks; -using NBitcoin; namespace Blockcore.Interfaces { diff --git a/src/Blockcore/Mining/BlockTemplate.cs b/src/Blockcore/Mining/BlockTemplate.cs index 7d526fe81..8f5669c65 100644 --- a/src/Blockcore/Mining/BlockTemplate.cs +++ b/src/Blockcore/Mining/BlockTemplate.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Blockcore.Consensus.BlockInfo; +using Blockcore.NBitcoin; using Blockcore.Networks; -using NBitcoin; namespace Blockcore.Mining { diff --git a/src/Blockcore/Mining/IBlockProvider.cs b/src/Blockcore/Mining/IBlockProvider.cs index db192a2bd..39bd6e350 100644 --- a/src/Blockcore/Mining/IBlockProvider.cs +++ b/src/Blockcore/Mining/IBlockProvider.cs @@ -1,7 +1,6 @@ using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.Chain; using Blockcore.Consensus.ScriptInfo; -using NBitcoin; namespace Blockcore.Mining { diff --git a/src/Blockcore/NBitcoin/BIP32/BitcoinExtKey.cs b/src/Blockcore/NBitcoin/BIP32/BitcoinExtKey.cs index 8491781e4..6c252bae5 100644 --- a/src/Blockcore/NBitcoin/BIP32/BitcoinExtKey.cs +++ b/src/Blockcore/NBitcoin/BIP32/BitcoinExtKey.cs @@ -1,7 +1,7 @@ using Blockcore.Consensus.ScriptInfo; using Blockcore.Networks; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP32 { public abstract class BitcoinExtKeyBase : Base58Data, IDestination { diff --git a/src/Blockcore/NBitcoin/BIP32/ExtKey.cs b/src/Blockcore/NBitcoin/BIP32/ExtKey.cs index 398ebfc71..f102bf5b6 100644 --- a/src/Blockcore/NBitcoin/BIP32/ExtKey.cs +++ b/src/Blockcore/NBitcoin/BIP32/ExtKey.cs @@ -1,18 +1,23 @@ using System; using System.Linq; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin.BouncyCastle.crypto.digests; +using Blockcore.NBitcoin.BouncyCastle.crypto.macs; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP32 { /// /// A private Hierarchical Deterministic key /// public class ExtKey : IBitcoinSerializable, IDestination, ISecret { + public static bool UseBCForHMACSHA512 = false; + /// /// Parses the Base58 data (checking the network if specified), checks it represents the /// correct type of item, and then returns the corresponding ExtKey. @@ -167,6 +172,20 @@ public ExtKey(byte[] seed) private void SetMaster(byte[] seed) { + if (UseBCForHMACSHA512) + { + var mac = new HMac(new Sha512Digest()); + mac.Init(new KeyParameter(hashkey)); + byte[] hashMACBC = new byte[mac.GetMacSize()]; + byte[] hash = new byte[mac.GetMacSize()]; + mac.BlockUpdate(seed, 0, seed.Length); + mac.DoFinal(hash, 0); + Array.Copy(hash, hashMACBC, hashMACBC.Length); + this.key = new Key(hashMACBC.SafeSubarray(0, 32)); + Buffer.BlockCopy(hashMACBC, 32, this.vchChainCode, 0, ChainCodeLength); + return; + } + byte[] hashMAC = Hashes.HMACSHA512(hashkey, seed); this.key = new Key(hashMAC.SafeSubarray(0, 32)); diff --git a/src/Blockcore/NBitcoin/BIP32/ExtPubKey.cs b/src/Blockcore/NBitcoin/BIP32/ExtPubKey.cs index c485c8ffe..ebba7c3d7 100644 --- a/src/Blockcore/NBitcoin/BIP32/ExtPubKey.cs +++ b/src/Blockcore/NBitcoin/BIP32/ExtPubKey.cs @@ -1,11 +1,11 @@ using System; using System.Linq; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP32 { /// /// A public HD key diff --git a/src/Blockcore/NBitcoin/BIP32/KeyPath.cs b/src/Blockcore/NBitcoin/BIP32/KeyPath.cs index 126ce4a0e..29b511b54 100644 --- a/src/Blockcore/NBitcoin/BIP32/KeyPath.cs +++ b/src/Blockcore/NBitcoin/BIP32/KeyPath.cs @@ -2,7 +2,7 @@ using System.Globalization; using System.Linq; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP32 { /// diff --git a/src/Blockcore/NBitcoin/BIP38/BitcoinConfirmationCode.cs b/src/Blockcore/NBitcoin/BIP38/BitcoinConfirmationCode.cs index daff50d8f..026864150 100644 --- a/src/Blockcore/NBitcoin/BIP38/BitcoinConfirmationCode.cs +++ b/src/Blockcore/NBitcoin/BIP38/BitcoinConfirmationCode.cs @@ -1,12 +1,12 @@ using System; using System.Linq; +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.Crypto; using Blockcore.Networks; -using NBitcoin.BouncyCastle.Asn1.X9; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.Crypto; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP38 { public class BitcoinConfirmationCode : Base58Data { diff --git a/src/Blockcore/NBitcoin/BIP38/BitcoinEncryptedSecret.cs b/src/Blockcore/NBitcoin/BIP38/BitcoinEncryptedSecret.cs index 31a22ed70..a3389edda 100644 --- a/src/Blockcore/NBitcoin/BIP38/BitcoinEncryptedSecret.cs +++ b/src/Blockcore/NBitcoin/BIP38/BitcoinEncryptedSecret.cs @@ -1,14 +1,15 @@ using System.Linq; using System.Security; -using System.Text; -using NBitcoin.BouncyCastle.Asn1.X9; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; using System.Security.Cryptography; +using System.Text; +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.Crypto.Cryptsharp; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP38 { public class BitcoinEncryptedSecretNoEC : BitcoinEncryptedSecret { diff --git a/src/Blockcore/NBitcoin/BIP38/BitcoinPassphraseCode.cs b/src/Blockcore/NBitcoin/BIP38/BitcoinPassphraseCode.cs index 8af5822cf..0a03e39fc 100644 --- a/src/Blockcore/NBitcoin/BIP38/BitcoinPassphraseCode.cs +++ b/src/Blockcore/NBitcoin/BIP38/BitcoinPassphraseCode.cs @@ -1,14 +1,15 @@ using System; using System.Linq; using System.Text; +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.Crypto.Cryptsharp; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.BouncyCastle.Asn1.X9; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP38 { public class EncryptedKeyResult { diff --git a/src/Blockcore/NBitcoin/BIP39/IWordlistSource.cs b/src/Blockcore/NBitcoin/BIP39/IWordlistSource.cs index 68d825fb0..50ce07c1d 100644 --- a/src/Blockcore/NBitcoin/BIP39/IWordlistSource.cs +++ b/src/Blockcore/NBitcoin/BIP39/IWordlistSource.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP39 { public interface IWordlistSource { diff --git a/src/Blockcore/NBitcoin/BIP39/KDTable.cs b/src/Blockcore/NBitcoin/BIP39/KDTable.cs index fa55d6f0b..781937410 100644 --- a/src/Blockcore/NBitcoin/BIP39/KDTable.cs +++ b/src/Blockcore/NBitcoin/BIP39/KDTable.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Text; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP39 { internal class KDTable { diff --git a/src/Blockcore/NBitcoin/BIP39/Language.cs b/src/Blockcore/NBitcoin/BIP39/Language.cs index b369e079a..453dec5be 100644 --- a/src/Blockcore/NBitcoin/BIP39/Language.cs +++ b/src/Blockcore/NBitcoin/BIP39/Language.cs @@ -1,4 +1,4 @@ -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP39 { public enum Language { diff --git a/src/Blockcore/NBitcoin/BIP39/Mnemonic.cs b/src/Blockcore/NBitcoin/BIP39/Mnemonic.cs index f223f3eaa..a378230aa 100644 --- a/src/Blockcore/NBitcoin/BIP39/Mnemonic.cs +++ b/src/Blockcore/NBitcoin/BIP39/Mnemonic.cs @@ -2,10 +2,14 @@ using System.Collections; using System.Linq; using System.Text; -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.Crypto; - -namespace NBitcoin +using Blockcore.NBitcoin.BIP32; +using Blockcore.NBitcoin.BouncyCastle.crypto.digests; +using Blockcore.NBitcoin.BouncyCastle.crypto.macs; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.Crypto.Cryptsharp; + +namespace Blockcore.NBitcoin.BIP39 { /// /// A .NET implementation of the Bitcoin Improvement Proposal - 39 (BIP39) @@ -146,7 +150,7 @@ public byte[] DeriveSeed(string passphrase = null) byte[] salt = Concat(Encoding.UTF8.GetBytes("mnemonic"), Normalize(passphrase)); byte[] bytes = Normalize(this._Mnemonic); - var mac = new NBitcoin.BouncyCastle.Crypto.Macs.HMac(new NBitcoin.BouncyCastle.Crypto.Digests.Sha512Digest()); + var mac = new HMac(new Sha512Digest()); mac.Init(new KeyParameter(bytes)); return Pbkdf2.ComputeDerivedKey(mac, salt, 2048, 64); } diff --git a/src/Blockcore/NBitcoin/BIP39/Wordlist.cs b/src/Blockcore/NBitcoin/BIP39/Wordlist.cs index e62e7fe5c..8a56b5bc7 100644 --- a/src/Blockcore/NBitcoin/BIP39/Wordlist.cs +++ b/src/Blockcore/NBitcoin/BIP39/Wordlist.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Threading.Tasks; -namespace NBitcoin +namespace Blockcore.NBitcoin.BIP39 { public class Wordlist { diff --git a/src/Blockcore/NBitcoin/Base58Data.cs b/src/Blockcore/NBitcoin/Base58Data.cs index 3bb9406f9..384fc5e1c 100644 --- a/src/Blockcore/NBitcoin/Base58Data.cs +++ b/src/Blockcore/NBitcoin/Base58Data.cs @@ -1,9 +1,9 @@ using System; using System.Linq; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin { public interface IBase58Data : IBitcoinString diff --git a/src/Blockcore/NBitcoin/BitWriter.cs b/src/Blockcore/NBitcoin/BitWriter.cs index c87689834..2fead99b4 100644 --- a/src/Blockcore/NBitcoin/BitWriter.cs +++ b/src/Blockcore/NBitcoin/BitWriter.cs @@ -2,8 +2,9 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Blockcore.NBitcoin.BIP39; -namespace NBitcoin +namespace Blockcore.NBitcoin { internal class BitReader { diff --git a/src/Blockcore/NBitcoin/BitcoinAddress.cs b/src/Blockcore/NBitcoin/BitcoinAddress.cs index e7c38acb6..e8eeef261 100644 --- a/src/Blockcore/NBitcoin/BitcoinAddress.cs +++ b/src/Blockcore/NBitcoin/BitcoinAddress.cs @@ -1,10 +1,10 @@ using System; using System.Linq; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin { /// /// Base58 representation of a script hash diff --git a/src/Blockcore/NBitcoin/BitcoinCore/Coins.cs b/src/Blockcore/NBitcoin/BitcoinCore/Coins.cs index 9a50d7f1d..dfb3356a9 100644 --- a/src/Blockcore/NBitcoin/BitcoinCore/Coins.cs +++ b/src/Blockcore/NBitcoin/BitcoinCore/Coins.cs @@ -4,7 +4,7 @@ using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; -namespace NBitcoin.BitcoinCore +namespace Blockcore.NBitcoin.BitcoinCore { public class Coins : IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/BitcoinCore/CoinsView.cs b/src/Blockcore/NBitcoin/BitcoinCore/CoinsView.cs index 7c45bf3a0..197f4bdc8 100644 --- a/src/Blockcore/NBitcoin/BitcoinCore/CoinsView.cs +++ b/src/Blockcore/NBitcoin/BitcoinCore/CoinsView.cs @@ -3,9 +3,10 @@ using System.Threading.Tasks; using Blockcore.Consensus; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.Repository; using Blockcore.Networks; -namespace NBitcoin.BitcoinCore +namespace Blockcore.NBitcoin.BitcoinCore { public class CoinsView { diff --git a/src/Blockcore/NBitcoin/BitcoinPubKeyAddress.cs b/src/Blockcore/NBitcoin/BitcoinPubKeyAddress.cs index a38a51f21..2f55fa7ac 100644 --- a/src/Blockcore/NBitcoin/BitcoinPubKeyAddress.cs +++ b/src/Blockcore/NBitcoin/BitcoinPubKeyAddress.cs @@ -1,10 +1,10 @@ using System; using System.Linq; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin { /// /// Base58 representation of a pubkey hash and base class for the representation of a script hash diff --git a/src/Blockcore/NBitcoin/BitcoinSecret.cs b/src/Blockcore/NBitcoin/BitcoinSecret.cs index 389460449..00b4c11c4 100644 --- a/src/Blockcore/NBitcoin/BitcoinSecret.cs +++ b/src/Blockcore/NBitcoin/BitcoinSecret.cs @@ -1,10 +1,11 @@ using System.Collections.Generic; using System.Linq; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin.BIP38; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class BitcoinSecret : Base58Data, IDestination, ISecret { diff --git a/src/Blockcore/NBitcoin/BitcoinSegwitAddress.cs b/src/Blockcore/NBitcoin/BitcoinSegwitAddress.cs index 66222ffd9..4556ee2e3 100644 --- a/src/Blockcore/NBitcoin/BitcoinSegwitAddress.cs +++ b/src/Blockcore/NBitcoin/BitcoinSegwitAddress.cs @@ -1,9 +1,9 @@ using System; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class BitcoinWitPubKeyAddress : BitcoinAddress, IBech32Data { diff --git a/src/Blockcore/NBitcoin/BitcoinStream.Partial.cs b/src/Blockcore/NBitcoin/BitcoinStream.Partial.cs index d89a3b707..9a5b11cfa 100644 --- a/src/Blockcore/NBitcoin/BitcoinStream.Partial.cs +++ b/src/Blockcore/NBitcoin/BitcoinStream.Partial.cs @@ -1,11 +1,9 @@ - - -using System; +using System; using System.Collections.Generic; using System.Linq; -using NBitcoin.Protocol; +using Blockcore.NBitcoin.Protocol; -namespace NBitcoin +namespace Blockcore.NBitcoin { public partial class BitcoinStream { @@ -77,7 +75,7 @@ private void ReadWriteArray(ref byte[][] data) if (this.Serializing) { var len = data == null ? 0 : (ulong)data.Length; - if (len > (uint)MaxArraySize) + if (len > (uint)this.MaxArraySize) throw new ArgumentOutOfRangeException("Array size too big"); VarInt.StaticWrite(this, len); if (len == 0) diff --git a/src/Blockcore/NBitcoin/BitcoinStream.cs b/src/Blockcore/NBitcoin/BitcoinStream.cs index 69221852a..c6adcc7af 100644 --- a/src/Blockcore/NBitcoin/BitcoinStream.cs +++ b/src/Blockcore/NBitcoin/BitcoinStream.cs @@ -8,9 +8,9 @@ using Blockcore.Consensus; using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; -using NBitcoin.Protocol; +using Blockcore.NBitcoin.Protocol; -namespace NBitcoin +namespace Blockcore.NBitcoin { public enum SerializationType { @@ -96,7 +96,7 @@ public BitcoinStream(Stream inner, bool serializing, ConsensusFactory consensus, this.isNetworkStream = inner is NetworkStream; this.Inner = inner; - this.MaxArraySize = 1024 * 1024; + this.MaxArraySize = 1024 * 1024 * 4; } public BitcoinStream(Stream inner, bool serializing, ConsensusFactory consensus) diff --git a/src/Blockcore/NBitcoin/BlockLocator.cs b/src/Blockcore/NBitcoin/BlockLocator.cs index 2c3b3dcbd..ccba09e3a 100644 --- a/src/Blockcore/NBitcoin/BlockLocator.cs +++ b/src/Blockcore/NBitcoin/BlockLocator.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace NBitcoin +namespace Blockcore.NBitcoin { /// /// Compact representation of one's chain position which can be used to find forks with another chain. diff --git a/src/Blockcore/NBitcoin/Bloom.cs b/src/Blockcore/NBitcoin/Bloom.cs new file mode 100644 index 000000000..542da63ad --- /dev/null +++ b/src/Blockcore/NBitcoin/Bloom.cs @@ -0,0 +1,299 @@ +using System; +using System.Linq; +using Blockcore.NBitcoin.DataEncoders; +using HashLib; + +namespace Blockcore.NBitcoin +{ + /// + /// Type representation of data used in a bloom filter. + /// + public class Bloom : IBitcoinSerializable + { + /// + /// Length of the bloom data in bytes. 2048 bits. + /// + public const int BloomLength = 256; + + /// + /// The actual bloom value represented as a byte array. + /// + private byte[] data; + + public Bloom() + { + this.data = new byte[BloomLength]; + } + + public Bloom(byte[] data) + { + if (data?.Length != BloomLength) + throw new ArgumentException($"Bloom byte array must be {BloomLength} bytes long.", nameof(data)); + + this.data = CopyBloom(data); + } + + /// + /// Given this and another bloom, bitwise-OR all the data to get a bloom filter representing a range of data. + /// + public void Or(Bloom bloom) + { + for (int i = 0; i < this.data.Length; ++i) + { + this.data[i] |= bloom.data[i]; + } + } + + /// + /// Add some input to the bloom filter. + /// + /// + /// From the Ethereum yellow paper (yellowpaper.io): + /// M3:2048 is a specialised Bloom filter that sets three bits + /// out of 2048, given an arbitrary byte series. It does this through + /// taking the low-order 11 bits of each of the first three pairs of + /// bytes in a Keccak-256 hash of the byte series. + /// + public void Add(byte[] input) + { + byte[] hashBytes = Keccak256(input); + // for first 3 pairs, calculate value of first 11 bits + for (int i = 0; i < 6; i += 2) + { + uint low8Bits = (uint)hashBytes[i + 1]; + uint high3Bits = ((uint)hashBytes[i] << 8) & 2047; // AND with 2047 wipes any bits higher than our desired 11. + uint index = low8Bits + high3Bits; + this.SetBit((int)index); + } + } + + /// + /// Returns a 32-byte Keccak256 hash of the given bytes. + /// + /// + /// + public static byte[] Keccak256(byte[] input) + { + return HashFactory.Crypto.SHA3.CreateKeccak256().ComputeBytes(input).GetBytes(); + } + + /// + /// Determine whether some input is possibly contained within the filter. + /// + /// The byte array to test. + /// Whether this data could be contained within the filter. + public bool Test(byte[] test) + { + var compare = new Bloom(); + compare.Add(test); + return this.Test(compare); + } + + /// + /// Determine whether a second bloom is possibly contained within the filter. + /// + /// The second bloom to test. + /// Whether this data could be contained within the filter. + public bool Test(Bloom bloom) + { + var copy = new Bloom(bloom.ToBytes()); + copy.Or(this); + return this.Equals(copy); + } + + /// + /// Sets the specific bit to 1 within our 256-byte array. + /// + /// Index (0-2047) of the bit to assign to 1. + private void SetBit(int index) + { + int byteIndex = index / 8; + int bitInByteIndex = index % 8; + byte mask = (byte)(1 << bitInByteIndex); + this.data[byteIndex] |= mask; + } + + public void ReadWrite(BitcoinStream stream) + { + if (stream.Serializing) + { + byte[] b = CopyBloom(this.data); + stream.ReadWrite(ref b); + } + else + { + var b = new byte[BloomLength]; + stream.ReadWrite(ref b); + this.data = b; + } + } + + /// + /// Returns the raw bytes of this filter. + /// + /// + public byte[] ToBytes() + { + return CopyBloom(this.data); + } + + public override string ToString() + { + return Encoders.Hex.EncodeData(this.data); + } + + public static bool operator ==(Bloom obj1, Bloom obj2) + { + if (object.ReferenceEquals(obj1, null)) + return object.ReferenceEquals(obj2, null); + + return Enumerable.SequenceEqual(obj1.data, obj2.data); + } + + public static bool operator !=(Bloom obj1, Bloom obj2) + { + return !(obj1 == obj2); + } + + public override bool Equals(object obj) + { + return this.Equals(obj as Bloom); + } + + public bool Equals(Bloom obj) + { + if (object.ReferenceEquals(obj, null)) + return false; + + if (object.ReferenceEquals(this, obj)) + return true; + + return (obj == this); + } + + public override int GetHashCode() + { + return HashCode.Combine(this.data); + } + + private static byte[] CopyBloom(byte[] bloom) + { + var result = new byte[BloomLength]; + Buffer.BlockCopy(bloom, 0, result, 0, BloomLength); + return result; + } + + /// + /// Compresses a bloom filter to the following encoding: + /// (length of encoding) [[(number of zeros)(explicit byte) ...] + /// + /// The maximum size of the compressed bytes. + /// The compressed bytes or null if is exceeded. + public byte[] GetCompressedBloom() + { + // The compressed version should be shorter than the uncompressed version. + int maxSize = BloomLength - 1; + + var b = this.ToBytes(); + var c = new byte[maxSize]; + byte zeros = 0; + int j = 0; + for (int i = 0; i < b.Length; i++) + { + if (b[i] != 0 || zeros == byte.MaxValue) + { + if (j >= (maxSize - 1)) + return b; + + c[j++] = (byte)zeros; + c[j++] = b[i]; + zeros = 0; + } + else if (zeros < byte.MaxValue) + { + zeros++; + } + } + + if (zeros != 0) + { + if (j >= maxSize) + return b; + + c[j++] = zeros; + } + + var res = new byte[j]; + + Array.Copy(c, res, j); + + return res; + } + + /// + /// Derives a bloom filter by decompressing the following encoding: + /// (length of encoding) [[(number of zeros)(explicit byte) ...] + /// + /// The data to decompress. + /// The bloom object. + public static Bloom GetDecompressedBloom(byte[] data) + { + if (data.Length == Bloom.BloomLength) + return new Bloom(data); + + var b = new byte[Bloom.BloomLength]; + int j = 0; + for (int i = 0; i < data.Length; i += 2) + { + int zeros = data[i]; + while (zeros-- > 0) + b[j++] = 0; + + if ((i + 1) < data.Length) + b[j++] = data[i + 1]; + } + + if (j != Bloom.BloomLength) + throw new InvalidOperationException("The decompressed bloom filter is not the expected length."); + + return new Bloom(b); + } + + public int GetCompressedSize() + { + return this.GetCompressedBloom().Length + 1; + } + } + + public static class BloomStreamExt + { + public static void ReadWriteCompressed(this BitcoinStream stream, ref Bloom bloom) + { + // Ensure that the length can be serialized using a single byte. + const int maxSerializedSize = byte.MaxValue + 1; + if (Bloom.BloomLength > maxSerializedSize) + throw new InvalidOperationException($"'{nameof(ReadWriteCompressed)}' does not support bloom filters greater than {maxSerializedSize} bytes in length."); + + if (stream.Serializing) + { // Writing to stream. + byte[] ser = bloom.GetCompressedBloom(); + byte len = (byte)(ser.Length - 1); + stream.ReadWrite(ref len); + stream.ReadWrite(ref ser); + } + else + { // Reading from stream. + byte len = 0; + stream.ReadWrite(ref len); + + // A value of 0 can be used to support larger blooms in the future. For now its not supported. + if (len == 0) + throw new NotImplementedException("The bloom compression format is not supported."); + + var c = new byte[(int)len + 1]; + stream.ReadWrite(ref c); + bloom = Bloom.GetDecompressedBloom(c); + } + } + } +} diff --git a/src/Blockcore/NBitcoin/BloomFilter.cs b/src/Blockcore/NBitcoin/BloomFilter.cs new file mode 100644 index 000000000..2d72399dc --- /dev/null +++ b/src/Blockcore/NBitcoin/BloomFilter.cs @@ -0,0 +1,209 @@ +using System; +using Blockcore.Consensus.ScriptInfo; +using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.Crypto; + +namespace Blockcore.NBitcoin +{ + [Flags] + public enum BloomFlags : byte + { + UPDATE_NONE = 0, + UPDATE_ALL = 1, + // Only adds outpoints to the filter if the output is a pay-to-pubkey/pay-to-multisig script + UPDATE_P2PUBKEY_ONLY = 2, + UPDATE_MASK = 3, + }; + + /// + /// Used by SPV client, represent the set of interesting addresses tracked by SPV client with plausible deniability + /// + public class BloomFilter : IBitcoinSerializable + { + public BloomFilter() + { + + } + // 20,000 items with fp rate < 0.1% or 10,000 items and <0.0001% + private const uint MAX_BLOOM_FILTER_SIZE = 36000; // bytes + private const uint MAX_HASH_FUNCS = 50; + private const decimal LN2SQUARED = 0.4804530139182014246671025263266649717305529515945455M; + private const decimal LN2 = 0.6931471805599453094172321214581765680755001343602552M; + + + private byte[] vData; + private uint nHashFuncs; + private uint nTweak; + private byte nFlags; + private bool isFull = false; + private bool isEmpty; + + + public BloomFilter(int nElements, double nFPRate, BloomFlags nFlagsIn = BloomFlags.UPDATE_ALL) + : this(nElements, nFPRate, RandomUtils.GetUInt32(), nFlagsIn) + { + } + + + public BloomFilter(int nElements, double nFPRate, uint nTweakIn, BloomFlags nFlagsIn = BloomFlags.UPDATE_ALL) + { + // The ideal size for a bloom filter with a given number of elements and false positive rate is: + // - nElements * log(fp rate) / ln(2)^2 + // We ignore filter parameters which will create a bloom filter larger than the protocol limits + this.vData = new byte[Math.Min((uint)(-1 / LN2SQUARED * nElements * (decimal)Math.Log(nFPRate)), MAX_BLOOM_FILTER_SIZE) / 8]; + //vData(min((unsigned int)(-1 / LN2SQUARED * nElements * log(nFPRate)), MAX_BLOOM_FILTER_SIZE * 8) / 8), + // The ideal number of hash functions is filter size * ln(2) / number of elements + // Again, we ignore filter parameters which will create a bloom filter with more hash functions than the protocol limits + // See http://en.wikipedia.org/wiki/Bloom_filter for an explanation of these formulas + + this.nHashFuncs = Math.Min((uint)(this.vData.Length * 8 / nElements * LN2), MAX_HASH_FUNCS); + this.nTweak = nTweakIn; + this.nFlags = (byte)nFlagsIn; + + + } + + private uint Hash(uint nHashNum, byte[] vDataToHash) + { + // 0xFBA4C795 chosen as it guarantees a reasonable bit difference between nHashNum values. + return (uint)(Hashes.MurmurHash3(nHashNum * 0xFBA4C795 + this.nTweak, vDataToHash) % (this.vData.Length * 8)); + } + + public void Insert(byte[] vKey) + { + if(this.isFull) + return; + for(uint i = 0; i < this.nHashFuncs; i++) + { + uint nIndex = Hash(i, vKey); + // Sets bit nIndex of vData + this.vData[nIndex >> 3] |= (byte)(1 << (7 & (int)nIndex)); + } + + this.isEmpty = false; + } + + public bool Contains(byte[] vKey) + { + if(this.isFull) + return true; + if(this.isEmpty) + return false; + for(uint i = 0; i < this.nHashFuncs; i++) + { + uint nIndex = Hash(i, vKey); + // Checks bit nIndex of vData + if((this.vData[nIndex >> 3] & (byte)(1 << (7 & (int)nIndex))) == 0) + return false; + } + return true; + } + public bool Contains(OutPoint outPoint) + { + if(outPoint == null) + throw new ArgumentNullException("outPoint"); + return Contains(outPoint.ToBytes()); + } + + public bool Contains(uint256 hash) + { + if(hash == null) + throw new ArgumentNullException("hash"); + return Contains(hash.ToBytes()); + } + + public void Insert(OutPoint outPoint) + { + if(outPoint == null) + throw new ArgumentNullException("outPoint"); + Insert(outPoint.ToBytes()); + } + + public void Insert(uint256 value) + { + if(value == null) + throw new ArgumentNullException("value"); + Insert(value.ToBytes()); + } + + public bool IsWithinSizeConstraints() + { + return this.vData.Length <= MAX_BLOOM_FILTER_SIZE && this.nHashFuncs <= MAX_HASH_FUNCS; + } + + #region IBitcoinSerializable Members + + public void ReadWrite(BitcoinStream stream) + { + stream.ReadWriteAsVarString(ref this.vData); + stream.ReadWrite(ref this.nHashFuncs); + stream.ReadWrite(ref this.nTweak); + stream.ReadWrite(ref this.nFlags); + } + + #endregion + + + + public bool IsRelevantAndUpdate(Transaction tx) + { + if(tx == null) + throw new ArgumentNullException("tx"); + uint256 hash = tx.GetHash(); + bool fFound = false; + // Match if the filter contains the hash of tx + // for finding tx when they appear in a block + if(this.isFull) + return true; + if(this.isEmpty) + return false; + if(Contains(hash)) + fFound = true; + + for(uint i = 0; i < tx.Outputs.Count; i++) + { + TxOut txout = tx.Outputs[(int)i]; + // Match if the filter contains any arbitrary script data element in any scriptPubKey in tx + // If this matches, also add the specific output that was matched. + // This means clients don't have to update the filter themselves when a new relevant tx + // is discovered in order to find spending transactions, which avoids round-tripping and race conditions. + foreach(Op op in txout.ScriptPubKey.ToOps()) + { + if(op.PushData != null && op.PushData.Length != 0 && Contains(op.PushData)) + { + fFound = true; + if((this.nFlags & (byte)BloomFlags.UPDATE_MASK) == (byte)BloomFlags.UPDATE_ALL) + Insert(new OutPoint(hash, i)); + else if((this.nFlags & (byte)BloomFlags.UPDATE_MASK) == (byte)BloomFlags.UPDATE_P2PUBKEY_ONLY) + { + ScriptTemplate template = StandardScripts.GetTemplateFromScriptPubKey(txout.ScriptPubKey); // this is only valid for Bitcoin. + if(template != null && + (template.Type == TxOutType.TX_PUBKEY || template.Type == TxOutType.TX_MULTISIG)) + Insert(new OutPoint(hash, i)); + } + break; + } + } + } + + if(fFound) + return true; + + foreach(TxIn txin in tx.Inputs) + { + // Match if the filter contains an outpoint tx spends + if(Contains(txin.PrevOut)) + return true; + + // Match if the filter contains any arbitrary script data element in any scriptSig in tx + foreach(Op op in txin.ScriptSig.ToOps()) + { + if(op.PushData != null && op.PushData.Length != 0 && Contains(op.PushData)) + return true; + } + } + + return false; + } + } +} diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1Generator.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1Generator.cs index 42ec8ff28..a565a53ab 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1Generator.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1Generator.cs @@ -1,6 +1,6 @@ using System.IO; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal abstract class Asn1Generator { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1OctetStringParser.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1OctetStringParser.cs index 75dd94671..f5d58b33c 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1OctetStringParser.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1OctetStringParser.cs @@ -1,6 +1,6 @@ using System.IO; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal interface Asn1OctetStringParser : IAsn1Convertible diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1SequenceParser.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1SequenceParser.cs index 6a077e6a1..656dd2daa 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1SequenceParser.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/ASN1SequenceParser.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal interface Asn1SequenceParser : IAsn1Convertible diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Encodable.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Encodable.cs index 08f47c486..05c4238fd 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Encodable.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Encodable.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal abstract class Asn1Encodable : IAsn1Convertible diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1EncodableVector.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1EncodableVector.cs index 680780b3f..df6da15cf 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1EncodableVector.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1EncodableVector.cs @@ -1,8 +1,8 @@ using System; using System.Collections; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class Asn1EncodableVector : IEnumerable diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Exception.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Exception.cs index 8cfdcf1dd..81fb7393e 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Exception.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Exception.cs @@ -1,7 +1,7 @@ using System; using System.IO; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class Asn1Exception : IOException diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1InputStream.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1InputStream.cs index 25e540202..c338198a8 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1InputStream.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1InputStream.cs @@ -1,8 +1,8 @@ using System; using System.IO; -using NBitcoin.BouncyCastle.Utilities.IO; +using Blockcore.NBitcoin.BouncyCastle.util.io; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { /** * a general purpose ASN.1 decoder - note: this class differs from the diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Null.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Null.cs index 29d2cc904..bb63d93d5 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Null.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Null.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { /** * A Null object. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Object.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Object.cs index ac7f7c1b3..0e51ccdae 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Object.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Object.cs @@ -1,7 +1,7 @@ using System; using System.IO; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal abstract class Asn1Object : Asn1Encodable diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1OctetString.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1OctetString.cs index 1471b0d4a..37cd93df6 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1OctetString.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1OctetString.cs @@ -1,8 +1,8 @@ using System; using System.IO; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal abstract class Asn1OctetString : Asn1Object, Asn1OctetStringParser diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Sequence.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Sequence.cs index 5de6114cf..e010113dd 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Sequence.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Sequence.cs @@ -1,9 +1,9 @@ using System; using System.Collections; using System.IO; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal abstract class Asn1Sequence : Asn1Object, IEnumerable diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Tags.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Tags.cs index 83daaf6e0..28adeec6f 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Tags.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/Asn1Tags.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class Asn1Tags { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DERGenerator.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DERGenerator.cs index bf7435c8c..de2854ae5 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DERGenerator.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DERGenerator.cs @@ -1,7 +1,7 @@ using System.IO; -using NBitcoin.BouncyCastle.Utilities.IO; +using Blockcore.NBitcoin.BouncyCastle.util.io; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal abstract class DerGenerator : Asn1Generator diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DERSequenceGenerator.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DERSequenceGenerator.cs index 25624e4c4..d778a549f 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DERSequenceGenerator.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DERSequenceGenerator.cs @@ -1,6 +1,6 @@ using System.IO; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class DerSequenceGenerator : DerGenerator diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DefiniteLengthInputStream.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DefiniteLengthInputStream.cs index 3dbdc9c54..c3c50638e 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DefiniteLengthInputStream.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DefiniteLengthInputStream.cs @@ -1,8 +1,8 @@ using System; using System.IO; -using NBitcoin.BouncyCastle.Utilities.IO; +using Blockcore.NBitcoin.BouncyCastle.util.io; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class DefiniteLengthInputStream : LimitedInputStream diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerInteger.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerInteger.cs index 201c92d8e..4d4e7f5e8 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerInteger.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerInteger.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class DerInteger : Asn1Object diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerNull.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerNull.cs index 1760e17c0..b1571956a 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerNull.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerNull.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { /** * A Null object. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerObjectIdentifier.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerObjectIdentifier.cs index c42c1a5a2..4cb4d4549 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerObjectIdentifier.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerObjectIdentifier.cs @@ -1,10 +1,10 @@ using System; using System.IO; using System.Text; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class DerObjectIdentifier : Asn1Object diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerOctetString.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerOctetString.cs index f47a2e7d1..09e5e7328 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerOctetString.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerOctetString.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class DerOctetString : Asn1OctetString diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerOutputStream.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerOutputStream.cs index 775a6c067..796485f30 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerOutputStream.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerOutputStream.cs @@ -1,8 +1,8 @@ using System; using System.IO; -using NBitcoin.BouncyCastle.Utilities.IO; +using Blockcore.NBitcoin.BouncyCastle.util.io; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class DerOutputStream : FilterStream diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerSequence.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerSequence.cs index c37f22dfc..c70315ca3 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerSequence.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/DerSequence.cs @@ -1,7 +1,7 @@ using System.IO; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal class DerSequence : Asn1Sequence diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/IAsn1Convertible.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/IAsn1Convertible.cs index 21ecaaf4d..e0893c9c4 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/IAsn1Convertible.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/IAsn1Convertible.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal interface IAsn1Convertible { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/LimitedInputStream.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/LimitedInputStream.cs index 51797e89d..f880777f5 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/LimitedInputStream.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/LimitedInputStream.cs @@ -1,7 +1,7 @@ using System.IO; -using NBitcoin.BouncyCastle.Utilities.IO; +using Blockcore.NBitcoin.BouncyCastle.util.io; -namespace NBitcoin.BouncyCastle.Asn1 +namespace Blockcore.NBitcoin.BouncyCastle.asn1 { internal abstract class LimitedInputStream : BaseInputStream diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/sec/SECNamedCurves.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/sec/SECNamedCurves.cs index e4ce2e4f1..acf151f72 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/sec/SECNamedCurves.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/sec/SECNamedCurves.cs @@ -1,12 +1,12 @@ using System.Collections; -using NBitcoin.BouncyCastle.Asn1.X9; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.BouncyCastle.Math.EC.Endo; -using NBitcoin.BouncyCastle.Utilities; -using NBitcoin.BouncyCastle.Utilities.Encoders; - -namespace NBitcoin.BouncyCastle.Asn1.Sec +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.BouncyCastle.math.ec.endo; +using Blockcore.NBitcoin.BouncyCastle.util; +using Blockcore.NBitcoin.BouncyCastle.util.encoders; + +namespace Blockcore.NBitcoin.BouncyCastle.asn1.sec { internal sealed class SecNamedCurves { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/sec/SECObjectIdentifiers.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/sec/SECObjectIdentifiers.cs index 7148b8c73..497fae8c9 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/sec/SECObjectIdentifiers.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/sec/SECObjectIdentifiers.cs @@ -1,6 +1,6 @@ -using NBitcoin.BouncyCastle.Asn1.X9; +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; -namespace NBitcoin.BouncyCastle.Asn1.Sec +namespace Blockcore.NBitcoin.BouncyCastle.asn1.sec { internal abstract class SecObjectIdentifiers { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9Curve.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9Curve.cs index 0bc89980d..103543218 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9Curve.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9Curve.cs @@ -1,9 +1,9 @@ using System; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Asn1.X9 +namespace Blockcore.NBitcoin.BouncyCastle.asn1.x9 { /** * ASN.1 def for Elliptic-Curve Curve structure. See diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECParameters.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECParameters.cs index b7fb4ab57..063341337 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECParameters.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECParameters.cs @@ -1,9 +1,9 @@ using System; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.BouncyCastle.Math.Field; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.BouncyCastle.math.field; -namespace NBitcoin.BouncyCastle.Asn1.X9 +namespace Blockcore.NBitcoin.BouncyCastle.asn1.x9 { /** * ASN.1 def for Elliptic-Curve ECParameters structure. See diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECParametersHolder.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECParametersHolder.cs index dc6fda36a..3af85ecef 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECParametersHolder.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECParametersHolder.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Asn1.X9 +namespace Blockcore.NBitcoin.BouncyCastle.asn1.x9 { internal abstract class X9ECParametersHolder { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECPoint.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECPoint.cs index 92d5ca47c..8ee8452a9 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECPoint.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ECPoint.cs @@ -1,7 +1,7 @@ -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Asn1.X9 +namespace Blockcore.NBitcoin.BouncyCastle.asn1.x9 { /** * class for describing an ECPoint as a Der object. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9FieldElement.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9FieldElement.cs index 0346901cf..931474e41 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9FieldElement.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9FieldElement.cs @@ -1,7 +1,7 @@ -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; -namespace NBitcoin.BouncyCastle.Asn1.X9 +namespace Blockcore.NBitcoin.BouncyCastle.asn1.x9 { /** * Class for processing an ECFieldElement as a DER object. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9FieldID.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9FieldID.cs index 1f1554b77..88f747235 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9FieldID.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9FieldID.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Math; +using Blockcore.NBitcoin.BouncyCastle.math; -namespace NBitcoin.BouncyCastle.Asn1.X9 +namespace Blockcore.NBitcoin.BouncyCastle.asn1.x9 { /** * ASN.1 def for Elliptic-Curve Field ID structure. See diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9IntegerConverter.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9IntegerConverter.cs index 4d977f1f0..9605af643 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9IntegerConverter.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9IntegerConverter.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; -namespace NBitcoin.BouncyCastle.Asn1.X9 +namespace Blockcore.NBitcoin.BouncyCastle.asn1.x9 { internal abstract class X9IntegerConverter { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ObjectIdentifiers.cs b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ObjectIdentifiers.cs index 5c209db48..267248517 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ObjectIdentifiers.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/asn1/x9/X9ObjectIdentifiers.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Asn1.X9 +namespace Blockcore.NBitcoin.BouncyCastle.asn1.x9 { internal abstract class X9ObjectIdentifiers { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/AsymmetricKeyParameter.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/AsymmetricKeyParameter.cs index 2f9af9240..52e0076eb 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/AsymmetricKeyParameter.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/AsymmetricKeyParameter.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { internal abstract class AsymmetricKeyParameter : ICipherParameters diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/BufferedBlockCipher.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/BufferedBlockCipher.cs index e88aaeb67..c933a2fe9 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/BufferedBlockCipher.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/BufferedBlockCipher.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /** * A wrapper class that allows block ciphers to be used to process data in diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/BufferedCipherBase.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/BufferedCipherBase.cs index e89a45a6e..4111724c8 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/BufferedCipherBase.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/BufferedCipherBase.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { internal abstract class BufferedCipherBase : IBufferedCipher diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/Check.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/Check.cs index d27fc0015..7add4a7bb 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/Check.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/Check.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { internal class Check { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/CryptoException.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/CryptoException.cs index 578d6df35..521d9512e 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/CryptoException.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/CryptoException.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { internal class CryptoException : Exception diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/DataLengthException.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/DataLengthException.cs index 98b851a40..70ab146c2 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/DataLengthException.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/DataLengthException.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /** * this exception is thrown if a buffer that is meant to have output diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IAsymmetricBlockCipher.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IAsymmetricBlockCipher.cs index d38f2633c..6195accad 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IAsymmetricBlockCipher.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IAsymmetricBlockCipher.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /// Base interface for a public/private key block cipher. internal interface IAsymmetricBlockCipher diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IBlockCipher.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IBlockCipher.cs index 993712188..506d3be93 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IBlockCipher.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IBlockCipher.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /// Base interface for a symmetric key block cipher. internal interface IBlockCipher diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IBufferedCipher.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IBufferedCipher.cs index 502cb0ede..3a1d9e1d9 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IBufferedCipher.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IBufferedCipher.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /// Block cipher engines are expected to conform to this interface. internal interface IBufferedCipher diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/ICipherParameters.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/ICipherParameters.cs index bf054856d..d6c59ad43 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/ICipherParameters.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/ICipherParameters.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /** * all parameter classes implement this. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IDSA.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IDSA.cs index f4583aa28..0cce4af31 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IDSA.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IDSA.cs @@ -1,6 +1,6 @@ -using NBitcoin.BouncyCastle.Math; +using Blockcore.NBitcoin.BouncyCastle.math; -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /** * interface for classes implementing the Digital Signature Algorithm diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IDigest.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IDigest.cs index 49a78cfad..d79594c01 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IDigest.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IDigest.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /** * interface that a message digest conforms to. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IMac.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IMac.cs index 80f7844b1..4cfbe059a 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/IMac.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/IMac.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /** * The base interface for implementations of message authentication codes (MACs). diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/ISigner.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/ISigner.cs index ff32e83d5..a579a172d 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/ISigner.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/ISigner.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { internal interface ISigner { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/InvalidCipherTextException.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/InvalidCipherTextException.cs index 69c0ca430..3b58650b0 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/InvalidCipherTextException.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/InvalidCipherTextException.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { /** * this exception is thrown whenever we find something we don't expect in a diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/OutputLengthException.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/OutputLengthException.cs index b1bb83b31..e0574f05c 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/OutputLengthException.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/OutputLengthException.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Crypto +namespace Blockcore.NBitcoin.BouncyCastle.crypto { internal class OutputLengthException : DataLengthException diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/GeneralDigest.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/GeneralDigest.cs index cdcdc7dcf..5f9fd4860 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/GeneralDigest.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/GeneralDigest.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Digests +namespace Blockcore.NBitcoin.BouncyCastle.crypto.digests { /** * base implementation of MD4 family style digest as outlined in diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/LongDigest.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/LongDigest.cs index d940054a9..d9feebfd6 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/LongDigest.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/LongDigest.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Crypto.Utilities; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Digests +namespace Blockcore.NBitcoin.BouncyCastle.crypto.digests { /** * Base class for SHA-384 and SHA-512. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/RipeMD160Digest.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/RipeMD160Digest.cs index c400fba99..bfd0b49ef 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/RipeMD160Digest.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/RipeMD160Digest.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Digests +namespace Blockcore.NBitcoin.BouncyCastle.crypto.digests { /** * implementation of RipeMD see, diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha1Digest.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha1Digest.cs index 0b691fb40..19ebbacce 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha1Digest.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha1Digest.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Crypto.Utilities; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Digests +namespace Blockcore.NBitcoin.BouncyCastle.crypto.digests { /** diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha224Digest.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha224Digest.cs index 2d8fc1eb6..9a4b685e9 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha224Digest.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha224Digest.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Crypto.Utilities; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Digests +namespace Blockcore.NBitcoin.BouncyCastle.crypto.digests { /** * SHA-224 as described in RFC 3874 diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha256Digest.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha256Digest.cs index 3fcfed594..333f6519b 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha256Digest.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha256Digest.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Crypto.Utilities; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Digests +namespace Blockcore.NBitcoin.BouncyCastle.crypto.digests { /** * Draft FIPS 180-2 implementation of SHA-256. Note: As this is diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha384Digest.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha384Digest.cs index 988b7c640..01a57205c 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha384Digest.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha384Digest.cs @@ -1,7 +1,7 @@ -using NBitcoin.BouncyCastle.Crypto.Utilities; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Digests +namespace Blockcore.NBitcoin.BouncyCastle.crypto.digests { /** * Draft FIPS 180-2 implementation of SHA-384. Note: As this is diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha512Digest.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha512Digest.cs index 1696ac622..b7723d477 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha512Digest.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/digests/Sha512Digest.cs @@ -1,7 +1,7 @@ -using NBitcoin.BouncyCastle.Crypto.Utilities; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Digests +namespace Blockcore.NBitcoin.BouncyCastle.crypto.digests { /** * Draft FIPS 180-2 implementation of SHA-512. Note: As this is diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/ec/CustomNamedCurves.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/ec/CustomNamedCurves.cs index 972205fef..244c27ea3 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/ec/CustomNamedCurves.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/ec/CustomNamedCurves.cs @@ -1,11 +1,11 @@ -using NBitcoin.BouncyCastle.Asn1.X9; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.BouncyCastle.Math.EC.Custom.Sec; -using NBitcoin.BouncyCastle.Math.EC.Endo; -using NBitcoin.BouncyCastle.Utilities.Encoders; +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.BouncyCastle.math.ec.custom.sec; +using Blockcore.NBitcoin.BouncyCastle.math.ec.endo; +using Blockcore.NBitcoin.BouncyCastle.util.encoders; -namespace NBitcoin.BouncyCastle.Crypto.EC +namespace Blockcore.NBitcoin.BouncyCastle.crypto.ec { internal sealed class CustomNamedCurves { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/engines/AesEngine.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/engines/AesEngine.cs index abbf85ac0..fb4143112 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/engines/AesEngine.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/engines/AesEngine.cs @@ -1,9 +1,9 @@ using System; -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.BouncyCastle.Crypto.Utilities; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Engines +namespace Blockcore.NBitcoin.BouncyCastle.crypto.engines { /** * an implementation of the AES (Rijndael), from FIPS-197. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/engines/AesFastEngine.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/engines/AesFastEngine.cs index de30e59ab..b053cc883 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/engines/AesFastEngine.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/engines/AesFastEngine.cs @@ -1,9 +1,9 @@ using System; -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.BouncyCastle.Crypto.Utilities; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Engines +namespace Blockcore.NBitcoin.BouncyCastle.crypto.engines { /** * an implementation of the AES (Rijndael)), from FIPS-197. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/macs/HMac.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/macs/HMac.cs index fae3f29f9..7f069e101 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/macs/HMac.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/macs/HMac.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Macs +namespace Blockcore.NBitcoin.BouncyCastle.crypto.macs { /** * HMAC implementation based on RFC2104 diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/BlockCipherPadding.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/BlockCipherPadding.cs index eeaeb43eb..82d2e4d6e 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/BlockCipherPadding.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/BlockCipherPadding.cs @@ -1,6 +1,6 @@ -using NBitcoin.BouncyCastle.Security; +using Blockcore.NBitcoin.BouncyCastle.security; -namespace NBitcoin.BouncyCastle.Crypto.Paddings +namespace Blockcore.NBitcoin.BouncyCastle.crypto.paddings { /** * Block cipher padders are expected to conform to this interface diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/PaddedBufferedBlockCipher.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/PaddedBufferedBlockCipher.cs index 54613921e..387da0178 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/PaddedBufferedBlockCipher.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/PaddedBufferedBlockCipher.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Security; +using Blockcore.NBitcoin.BouncyCastle.security; -namespace NBitcoin.BouncyCastle.Crypto.Paddings +namespace Blockcore.NBitcoin.BouncyCastle.crypto.paddings { /** * A wrapper class that allows block ciphers to be used to process data in diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/Pkcs7Padding.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/Pkcs7Padding.cs index 511c7d2dc..c226db383 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/Pkcs7Padding.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/paddings/Pkcs7Padding.cs @@ -1,6 +1,6 @@ -using NBitcoin.BouncyCastle.Security; +using Blockcore.NBitcoin.BouncyCastle.security; -namespace NBitcoin.BouncyCastle.Crypto.Paddings +namespace Blockcore.NBitcoin.BouncyCastle.crypto.paddings { /** * A padder that adds Pkcs7/Pkcs5 padding to a block. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECDomainParameters.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECDomainParameters.cs index 199cd3084..717fb055e 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECDomainParameters.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECDomainParameters.cs @@ -1,9 +1,9 @@ using System; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Parameters +namespace Blockcore.NBitcoin.BouncyCastle.crypto.parameters { internal class ECDomainParameters { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECKeyParameters.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECKeyParameters.cs index ff7f616e7..8abcce140 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECKeyParameters.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECKeyParameters.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Parameters +namespace Blockcore.NBitcoin.BouncyCastle.crypto.parameters { internal abstract class ECKeyParameters : AsymmetricKeyParameter diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECPrivateKeyParameters.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECPrivateKeyParameters.cs index 2b4cec342..d75f760b7 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECPrivateKeyParameters.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECPrivateKeyParameters.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Math; +using Blockcore.NBitcoin.BouncyCastle.math; -namespace NBitcoin.BouncyCastle.Crypto.Parameters +namespace Blockcore.NBitcoin.BouncyCastle.crypto.parameters { internal class ECPrivateKeyParameters : ECKeyParameters diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECPublicKeyParameters.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECPublicKeyParameters.cs index 9a026ff69..d39c688f2 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECPublicKeyParameters.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/ECPublicKeyParameters.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Math.EC; +using Blockcore.NBitcoin.BouncyCastle.math.ec; -namespace NBitcoin.BouncyCastle.Crypto.Parameters +namespace Blockcore.NBitcoin.BouncyCastle.crypto.parameters { internal class ECPublicKeyParameters : ECKeyParameters diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/KeyParameter.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/KeyParameter.cs index fa53f6a75..954c27755 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/KeyParameter.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/parameters/KeyParameter.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Crypto.Parameters +namespace Blockcore.NBitcoin.BouncyCastle.crypto.parameters { internal class KeyParameter : ICipherParameters diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/ECDsaSigner.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/ECDsaSigner.cs index 9db7afb22..3ae38aa34 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/ECDsaSigner.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/ECDsaSigner.cs @@ -1,10 +1,10 @@ -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.BouncyCastle.Math.EC.Multiplier; -using NBitcoin.BouncyCastle.Security; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier; +using Blockcore.NBitcoin.BouncyCastle.security; -namespace NBitcoin.BouncyCastle.Crypto.Signers +namespace Blockcore.NBitcoin.BouncyCastle.crypto.signers { /** * EC-DSA as described in X9.62 diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/HMacDsaKCalculator.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/HMacDsaKCalculator.cs index db9090bea..eb56227dd 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/HMacDsaKCalculator.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/HMacDsaKCalculator.cs @@ -1,11 +1,11 @@ using System; -using NBitcoin.BouncyCastle.Crypto.Macs; -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Security; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.macs; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.security; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Crypto.Signers +namespace Blockcore.NBitcoin.BouncyCastle.crypto.signers { /** * A deterministic K calculator based on the algorithm in section 3.2 of RFC 6979. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/IDsaKCalculator.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/IDsaKCalculator.cs index 1c26ef3f8..ce13fdc4f 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/IDsaKCalculator.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/IDsaKCalculator.cs @@ -1,7 +1,7 @@ -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Security; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.security; -namespace NBitcoin.BouncyCastle.Crypto.Signers +namespace Blockcore.NBitcoin.BouncyCastle.crypto.signers { /** * Interface define calculators of K values for DSA/ECDSA. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/RandomDsaKCalculator.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/RandomDsaKCalculator.cs index cf7c326aa..9b7fd4a19 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/RandomDsaKCalculator.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/signers/RandomDsaKCalculator.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Security; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.security; -namespace NBitcoin.BouncyCastle.Crypto.Signers +namespace Blockcore.NBitcoin.BouncyCastle.crypto.signers { internal class RandomDsaKCalculator : IDsaKCalculator diff --git a/src/Blockcore/NBitcoin/BouncyCastle/crypto/util/Pack.cs b/src/Blockcore/NBitcoin/BouncyCastle/crypto/util/Pack.cs index 6f9b40f61..dbded5fe6 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/crypto/util/Pack.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/crypto/util/Pack.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Crypto.Utilities +namespace Blockcore.NBitcoin.BouncyCastle.crypto.util { internal sealed class Pack { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/BigInteger.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/BigInteger.cs index 494c4be35..37d46e1fe 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/BigInteger.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/BigInteger.cs @@ -3,10 +3,10 @@ using System.Diagnostics; using System.Globalization; using System.Text; -using NBitcoin.BouncyCastle.Security; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.security; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Math +namespace Blockcore.NBitcoin.BouncyCastle.math { public class BigInteger { @@ -1523,47 +1523,41 @@ internal bool RabinMillerTest(int certainty, Random random, bool randomlySelecte // return true; // } // - // private static int Jacobi( - // BigInteger a, - // BigInteger b) - // { - // Debug.Assert(a.sign >= 0); - // Debug.Assert(b.sign > 0); - // Debug.Assert(b.TestBit(0)); - // Debug.Assert(a.CompareTo(b) < 0); - // - // int totalS = 1; - // for (;;) - // { - // if (a.sign == 0) - // return 0; - // - // if (a.Equals(One)) - // break; - // - // int e = a.GetLowestSetBit(); - // - // int bLsw = b.magnitude[b.magnitude.Length - 1]; - // if ((e & 1) != 0 && ((bLsw & 7) == 3 || (bLsw & 7) == 5)) - // totalS = -totalS; - // - // // TODO Confirm this is faster than later a1.Equals(One) test - // if (a.BitLength == e + 1) - // break; - // BigInteger a1 = a.ShiftRight(e); - //// if (a1.Equals(One)) - //// break; - // - // int a1Lsw = a1.magnitude[a1.magnitude.Length - 1]; - // if ((bLsw & 3) == 3 && (a1Lsw & 3) == 3) - // totalS = -totalS; - // - //// a = b.Mod(a1); - // a = b.Remainder(a1); - // b = a1; - // } - // return totalS; - // } + public static int Jacobi(BigInteger a, BigInteger b) + { + Debug.Assert(a.sign >= 0); + Debug.Assert(b.sign > 0); + Debug.Assert(b.TestBit(0)); + Debug.Assert(a.CompareTo(b) < 0); + + int totalS = 1; + for (; ; ) + { + if (a.sign == 0) + return 0; + + if (a.Equals(One)) + break; + + int e = a.GetLowestSetBit(); + + int bLsw = b.magnitude[b.magnitude.Length - 1]; + if ((e & 1) != 0 && ((bLsw & 7) == 3 || (bLsw & 7) == 5)) + totalS = -totalS; + + if (a.BitLength == e + 1) + break; + BigInteger a1 = a.ShiftRight(e); + + int a1Lsw = a1.magnitude[a1.magnitude.Length - 1]; + if ((bLsw & 3) == 3 && (a1Lsw & 3) == 3) + totalS = -totalS; + + a = b.Remainder(a1); + b = a1; + } + return totalS; + } public long LongValue { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECAlgorithms.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECAlgorithms.cs index 55709c4ca..8cac74655 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECAlgorithms.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECAlgorithms.cs @@ -1,9 +1,9 @@ using System; -using NBitcoin.BouncyCastle.Math.EC.Endo; -using NBitcoin.BouncyCastle.Math.EC.Multiplier; -using NBitcoin.BouncyCastle.Math.Field; +using Blockcore.NBitcoin.BouncyCastle.math.ec.endo; +using Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier; +using Blockcore.NBitcoin.BouncyCastle.math.field; -namespace NBitcoin.BouncyCastle.Math.EC +namespace Blockcore.NBitcoin.BouncyCastle.math.ec { internal class ECAlgorithms { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECCurve.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECCurve.cs index ec359875b..eda7bb0d0 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECCurve.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECCurve.cs @@ -1,12 +1,12 @@ using System; using System.Collections; -using NBitcoin.BouncyCastle.Math.EC.Abc; -using NBitcoin.BouncyCastle.Math.EC.Endo; -using NBitcoin.BouncyCastle.Math.EC.Multiplier; -using NBitcoin.BouncyCastle.Math.Field; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.math.ec.abc; +using Blockcore.NBitcoin.BouncyCastle.math.ec.endo; +using Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier; +using Blockcore.NBitcoin.BouncyCastle.math.field; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Math.EC +namespace Blockcore.NBitcoin.BouncyCastle.math.ec { /// Base class for an elliptic curve. internal abstract class ECCurve diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECFieldElement.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECFieldElement.cs index 49e56cdc8..610eb3b45 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECFieldElement.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECFieldElement.cs @@ -1,9 +1,9 @@ using System; using System.Diagnostics; -using NBitcoin.BouncyCastle.Math.Raw; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.math.raw; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Math.EC +namespace Blockcore.NBitcoin.BouncyCastle.math.ec { internal abstract class ECFieldElement { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECPoint.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECPoint.cs index 05dbe23c0..e29f508ae 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECPoint.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECPoint.cs @@ -2,7 +2,7 @@ using System.Collections; using System.Text; -namespace NBitcoin.BouncyCastle.Math.EC +namespace Blockcore.NBitcoin.BouncyCastle.math.ec { /** * base class for points on elliptic curves. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECPointMap.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECPointMap.cs index ce99e28be..9ec2535bb 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECPointMap.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ECPointMap.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC +namespace Blockcore.NBitcoin.BouncyCastle.math.ec { internal interface ECPointMap { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/LongArray.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/LongArray.cs index 7cd5302bb..4588b224d 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/LongArray.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/LongArray.cs @@ -1,8 +1,8 @@ using System; using System.Text; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Math.EC +namespace Blockcore.NBitcoin.BouncyCastle.math.ec { internal class LongArray { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ScaleXPointMap.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ScaleXPointMap.cs index 74cb60903..8ab2163af 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ScaleXPointMap.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/ScaleXPointMap.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC +namespace Blockcore.NBitcoin.BouncyCastle.math.ec { internal class ScaleXPointMap : ECPointMap diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/SimpleBigDecimal.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/SimpleBigDecimal.cs index 7eb5c2136..d187b1590 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/SimpleBigDecimal.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/SimpleBigDecimal.cs @@ -1,7 +1,7 @@ using System; using System.Text; -namespace NBitcoin.BouncyCastle.Math.EC.Abc +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.abc { /** * Class representing a simple version of a big decimal. A diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/Tnaf.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/Tnaf.cs index df8262273..4a1e33bd1 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/Tnaf.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/Tnaf.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Math.EC.Abc +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.abc { /** * Class holding methods for point multiplication based on the window diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/ZTauElement.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/ZTauElement.cs index 67e899499..8b9fb4ba7 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/ZTauElement.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/abc/ZTauElement.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Abc +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.abc { /** * Class representing an element of Z[τ]. Let diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Curve.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Curve.cs index 4c3e2a92b..0f97459f6 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Curve.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Curve.cs @@ -1,6 +1,6 @@ -using NBitcoin.BouncyCastle.Utilities.Encoders; +using Blockcore.NBitcoin.BouncyCastle.util.encoders; -namespace NBitcoin.BouncyCastle.Math.EC.Custom.Sec +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.custom.sec { internal class SecP256K1Curve : AbstractFpCurve diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Field.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Field.cs index fdb4abd7f..71a6c32d5 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Field.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Field.cs @@ -1,7 +1,7 @@ using System.Diagnostics; -using NBitcoin.BouncyCastle.Math.Raw; +using Blockcore.NBitcoin.BouncyCastle.math.raw; -namespace NBitcoin.BouncyCastle.Math.EC.Custom.Sec +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.custom.sec { internal class SecP256K1Field { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1FieldElement.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1FieldElement.cs index 1c93dca84..d0241e6c8 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1FieldElement.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1FieldElement.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Math.Raw; -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.math.raw; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Math.EC.Custom.Sec +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.custom.sec { internal class SecP256K1FieldElement : ECFieldElement diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Point.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Point.cs index 906af805f..ed937961b 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Point.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/custom/sec/SecP256K1Point.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Math.Raw; +using Blockcore.NBitcoin.BouncyCastle.math.raw; -namespace NBitcoin.BouncyCastle.Math.EC.Custom.Sec +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.custom.sec { internal class SecP256K1Point : AbstractFpPoint diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/ECEndomorphism.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/ECEndomorphism.cs index 8362531f0..7ef5ca17e 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/ECEndomorphism.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/ECEndomorphism.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Endo +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.endo { internal interface ECEndomorphism { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvEndomorphism.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvEndomorphism.cs index e9c14b3ca..39dd1c98e 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvEndomorphism.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvEndomorphism.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Endo +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.endo { internal interface GlvEndomorphism : ECEndomorphism diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvTypeBEndomorphism.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvTypeBEndomorphism.cs index 97a452f21..6eda526e5 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvTypeBEndomorphism.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvTypeBEndomorphism.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Endo +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.endo { internal class GlvTypeBEndomorphism : GlvEndomorphism diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvTypeBParameters.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvTypeBParameters.cs index 8e52f11f4..937aed17f 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvTypeBParameters.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/endo/GlvTypeBParameters.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Endo +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.endo { internal class GlvTypeBParameters { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/AbstractECMultiplier.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/AbstractECMultiplier.cs index 78d8eabbf..2cca937c8 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/AbstractECMultiplier.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/AbstractECMultiplier.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { internal abstract class AbstractECMultiplier : ECMultiplier diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/DoubleAddMultiplier.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/DoubleAddMultiplier.cs index e86f9c052..48c0272ce 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/DoubleAddMultiplier.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/DoubleAddMultiplier.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { internal class DoubleAddMultiplier : AbstractECMultiplier diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/ECMultiplier.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/ECMultiplier.cs index 8d85ad1aa..3571d4583 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/ECMultiplier.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/ECMultiplier.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { /** * Interface for classes encapsulating a point multiplication algorithm diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointCombMultiplier.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointCombMultiplier.cs index 4099508be..c866d1198 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointCombMultiplier.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointCombMultiplier.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { internal class FixedPointCombMultiplier : AbstractECMultiplier diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointPreCompInfo.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointPreCompInfo.cs index 6d7d8be24..45182158b 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointPreCompInfo.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointPreCompInfo.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { /** * Class holding precomputation data for fixed-point multiplications. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointUtilities.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointUtilities.cs index 03c7d3582..a3ea166f9 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointUtilities.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/FixedPointUtilities.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { internal class FixedPointUtilities { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/GlvMultiplier.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/GlvMultiplier.cs index 86c4b2f5e..7fdffae83 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/GlvMultiplier.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/GlvMultiplier.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Math.EC.Endo; +using Blockcore.NBitcoin.BouncyCastle.math.ec.endo; -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { internal class GlvMultiplier : AbstractECMultiplier diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/PreCompInfo.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/PreCompInfo.cs index 35aea4c52..c3551d009 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/PreCompInfo.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/PreCompInfo.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { /** * Interface for classes storing precomputation data for multiplication diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafL2RMultiplier.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafL2RMultiplier.cs index e1e4b8d58..3679e9177 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafL2RMultiplier.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafL2RMultiplier.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { /** * Class implementing the WNAF (Window Non-Adjacent Form) multiplication diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafPreCompInfo.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafPreCompInfo.cs index 925a39f35..93732d846 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafPreCompInfo.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafPreCompInfo.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { /** * Class holding precomputation data for the WNAF (Window Non-Adjacent Form) diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafUtilities.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafUtilities.cs index 6f05949ee..237c9b42e 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafUtilities.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WNafUtilities.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { internal abstract class WNafUtilities { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WTauNafMultiplier.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WTauNafMultiplier.cs index 62469d217..a0c7666d5 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WTauNafMultiplier.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WTauNafMultiplier.cs @@ -1,7 +1,7 @@ using System; -using NBitcoin.BouncyCastle.Math.EC.Abc; +using Blockcore.NBitcoin.BouncyCastle.math.ec.abc; -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { /** * Class implementing the WTNAF (Window diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WTauNafPreCompInfo.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WTauNafPreCompInfo.cs index db3b74f74..9e558ac20 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WTauNafPreCompInfo.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/ec/multiplier/WTauNafPreCompInfo.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.EC.Multiplier +namespace Blockcore.NBitcoin.BouncyCastle.math.ec.multiplier { /** * Class holding precomputation data for the WTNAF (Window diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/field/FiniteFields.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/field/FiniteFields.cs index a030e42bc..fd23e8a74 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/field/FiniteFields.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/field/FiniteFields.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Math.Field +namespace Blockcore.NBitcoin.BouncyCastle.math.field { internal abstract class FiniteFields { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/field/GF2Polynomial.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/field/GF2Polynomial.cs index b1d723366..bd03cd5dc 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/field/GF2Polynomial.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/field/GF2Polynomial.cs @@ -1,6 +1,6 @@ -using NBitcoin.BouncyCastle.Utilities; +using Blockcore.NBitcoin.BouncyCastle.util; -namespace NBitcoin.BouncyCastle.Math.Field +namespace Blockcore.NBitcoin.BouncyCastle.math.field { internal class GF2Polynomial : IPolynomial diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/field/GenericPolynomialExtensionField.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/field/GenericPolynomialExtensionField.cs index c28c3759b..c32820353 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/field/GenericPolynomialExtensionField.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/field/GenericPolynomialExtensionField.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Math.Field +namespace Blockcore.NBitcoin.BouncyCastle.math.field { internal class GenericPolynomialExtensionField : IPolynomialExtensionField diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/field/IExtensionField.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/field/IExtensionField.cs index c277a7067..ccdd58a7b 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/field/IExtensionField.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/field/IExtensionField.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.Field +namespace Blockcore.NBitcoin.BouncyCastle.math.field { internal interface IExtensionField : IFiniteField diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/field/IFiniteField.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/field/IFiniteField.cs index 0cb3a051a..625f66891 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/field/IFiniteField.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/field/IFiniteField.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.Field +namespace Blockcore.NBitcoin.BouncyCastle.math.field { internal interface IFiniteField { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/field/IPolynomial.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/field/IPolynomial.cs index 8ed35bead..e7ecae31f 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/field/IPolynomial.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/field/IPolynomial.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.Field +namespace Blockcore.NBitcoin.BouncyCastle.math.field { internal interface IPolynomial { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/field/IPolynomialExtensionField.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/field/IPolynomialExtensionField.cs index ebdce2f52..8de08bb8a 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/field/IPolynomialExtensionField.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/field/IPolynomialExtensionField.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.Field +namespace Blockcore.NBitcoin.BouncyCastle.math.field { internal interface IPolynomialExtensionField : IExtensionField diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/field/PrimeField.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/field/PrimeField.cs index 6d6ee3e1d..c631898c8 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/field/PrimeField.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/field/PrimeField.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.BouncyCastle.Math.Field +namespace Blockcore.NBitcoin.BouncyCastle.math.field { internal class PrimeField : IFiniteField diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Mod.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Mod.cs index cb2e6af98..f6d5c1997 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Mod.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Mod.cs @@ -1,9 +1,9 @@ using System; using System.Diagnostics; -using NBitcoin.BouncyCastle.Crypto.Utilities; -using NBitcoin.BouncyCastle.Security; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; +using Blockcore.NBitcoin.BouncyCastle.security; -namespace NBitcoin.BouncyCastle.Math.Raw +namespace Blockcore.NBitcoin.BouncyCastle.math.raw { internal abstract class Mod { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Nat.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Nat.cs index 2fdd3ecb4..d4c825f7c 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Nat.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Nat.cs @@ -1,8 +1,8 @@ using System; using System.Diagnostics; -using NBitcoin.BouncyCastle.Crypto.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; -namespace NBitcoin.BouncyCastle.Math.Raw +namespace Blockcore.NBitcoin.BouncyCastle.math.raw { internal abstract class Nat { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Nat256.cs b/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Nat256.cs index 1b55345dc..bd4f40f70 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Nat256.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/math/raw/Nat256.cs @@ -1,8 +1,8 @@ using System; using System.Diagnostics; -using NBitcoin.BouncyCastle.Crypto.Utilities; +using Blockcore.NBitcoin.BouncyCastle.crypto.util; -namespace NBitcoin.BouncyCastle.Math.Raw +namespace Blockcore.NBitcoin.BouncyCastle.math.raw { internal abstract class Nat256 { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/security/GeneralSecurityException.cs b/src/Blockcore/NBitcoin/BouncyCastle/security/GeneralSecurityException.cs index a6f459c11..7b318f6d4 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/security/GeneralSecurityException.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/security/GeneralSecurityException.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Security +namespace Blockcore.NBitcoin.BouncyCastle.security { internal class GeneralSecurityException : Exception diff --git a/src/Blockcore/NBitcoin/BouncyCastle/security/InvalidKeyException.cs b/src/Blockcore/NBitcoin/BouncyCastle/security/InvalidKeyException.cs index a4aaf2e53..5d8a72068 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/security/InvalidKeyException.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/security/InvalidKeyException.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Security +namespace Blockcore.NBitcoin.BouncyCastle.security { internal class InvalidKeyException : KeyException { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/security/KeyException.cs b/src/Blockcore/NBitcoin/BouncyCastle/security/KeyException.cs index 044ca4d81..b194f9000 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/security/KeyException.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/security/KeyException.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Security +namespace Blockcore.NBitcoin.BouncyCastle.security { internal class KeyException : GeneralSecurityException { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/security/SecureRandom.cs b/src/Blockcore/NBitcoin/BouncyCastle/security/SecureRandom.cs index e650e9b86..db772fad8 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/security/SecureRandom.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/security/SecureRandom.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Security +namespace Blockcore.NBitcoin.BouncyCastle.security { internal class SecureRandom : Random { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/Arrays.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/Arrays.cs index e376d7b41..8c169f76f 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/Arrays.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/Arrays.cs @@ -1,8 +1,8 @@ using System; using System.Text; -using NBitcoin.BouncyCastle.Math; +using Blockcore.NBitcoin.BouncyCastle.math; -namespace NBitcoin.BouncyCastle.Utilities +namespace Blockcore.NBitcoin.BouncyCastle.util { /// General array utilities. internal abstract class Arrays diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/BigIntegers.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/BigIntegers.cs index 52603288f..aea91b1d3 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/BigIntegers.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/BigIntegers.cs @@ -1,8 +1,8 @@ using System; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Security; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.security; -namespace NBitcoin.BouncyCastle.Utilities +namespace Blockcore.NBitcoin.BouncyCastle.util { /** * BigInteger utilities. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/IMemoable.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/IMemoable.cs index 6a582b5d4..9a953f403 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/IMemoable.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/IMemoable.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.BouncyCastle.Utilities +namespace Blockcore.NBitcoin.BouncyCastle.util { internal interface IMemoable { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/Platform.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/Platform.cs index 3937557d2..f699b09cb 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/Platform.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/Platform.cs @@ -1,8 +1,8 @@ using System; -using System.Globalization; using System.Collections; +using System.Globalization; -namespace NBitcoin.BouncyCastle.Utilities +namespace Blockcore.NBitcoin.BouncyCastle.util { internal abstract class Platform { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/Hex.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/Hex.cs index e225e229b..f67028be7 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/Hex.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/Hex.cs @@ -1,6 +1,6 @@ using System.IO; -namespace NBitcoin.BouncyCastle.Utilities.Encoders +namespace Blockcore.NBitcoin.BouncyCastle.util.encoders { /// /// Class to decode and encode Hex. diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/HexEncoder.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/HexEncoder.cs index 5b4f0c8ec..896345a69 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/HexEncoder.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/HexEncoder.cs @@ -1,6 +1,6 @@ using System.IO; -namespace NBitcoin.BouncyCastle.Utilities.Encoders +namespace Blockcore.NBitcoin.BouncyCastle.util.encoders { internal class HexEncoder : IEncoder diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/IEncoder.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/IEncoder.cs index 4096eb64a..0f2df3cb7 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/IEncoder.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/encoders/IEncoder.cs @@ -1,6 +1,6 @@ using System.IO; -namespace NBitcoin.BouncyCastle.Utilities.Encoders +namespace Blockcore.NBitcoin.BouncyCastle.util.encoders { /** * Encode and decode byte arrays (typically from binary to 7-bit ASCII diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/io/BaseInputStream.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/io/BaseInputStream.cs index 83943a954..4eb73327c 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/io/BaseInputStream.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/io/BaseInputStream.cs @@ -1,7 +1,7 @@ using System; using System.IO; -namespace NBitcoin.BouncyCastle.Utilities.IO +namespace Blockcore.NBitcoin.BouncyCastle.util.io { internal abstract class BaseInputStream : Stream { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/io/FilterStream.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/io/FilterStream.cs index bf93f94e8..ed356265d 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/io/FilterStream.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/io/FilterStream.cs @@ -1,6 +1,6 @@ using System.IO; -namespace NBitcoin.BouncyCastle.Utilities.IO +namespace Blockcore.NBitcoin.BouncyCastle.util.io { internal class FilterStream : Stream { diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/io/StreamOverflowException.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/io/StreamOverflowException.cs index ec7cdf04e..a95a161c1 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/io/StreamOverflowException.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/io/StreamOverflowException.cs @@ -1,7 +1,7 @@ using System; using System.IO; -namespace NBitcoin.BouncyCastle.Utilities.IO +namespace Blockcore.NBitcoin.BouncyCastle.util.io { internal class StreamOverflowException : IOException diff --git a/src/Blockcore/NBitcoin/BouncyCastle/util/io/Streams.cs b/src/Blockcore/NBitcoin/BouncyCastle/util/io/Streams.cs index 4fda41a77..d07cdc286 100644 --- a/src/Blockcore/NBitcoin/BouncyCastle/util/io/Streams.cs +++ b/src/Blockcore/NBitcoin/BouncyCastle/util/io/Streams.cs @@ -1,6 +1,6 @@ using System.IO; -namespace NBitcoin.BouncyCastle.Utilities.IO +namespace Blockcore.NBitcoin.BouncyCastle.util.io { internal sealed class Streams { diff --git a/src/Blockcore/NBitcoin/BuilderExtensions/BuilderExtension.cs b/src/Blockcore/NBitcoin/BuilderExtensions/BuilderExtension.cs index 7873c617e..aae3fcc53 100644 --- a/src/Blockcore/NBitcoin/BuilderExtensions/BuilderExtension.cs +++ b/src/Blockcore/NBitcoin/BuilderExtensions/BuilderExtension.cs @@ -1,9 +1,9 @@ using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.DataEncoders; -namespace NBitcoin.BuilderExtensions +namespace Blockcore.NBitcoin.BuilderExtensions { public interface ISigner { diff --git a/src/Blockcore/NBitcoin/BuilderExtensions/OPTrueExtension.cs b/src/Blockcore/NBitcoin/BuilderExtensions/OPTrueExtension.cs index d6a8a4e4d..e758f46b0 100644 --- a/src/Blockcore/NBitcoin/BuilderExtensions/OPTrueExtension.cs +++ b/src/Blockcore/NBitcoin/BuilderExtensions/OPTrueExtension.cs @@ -2,7 +2,7 @@ using Blockcore.Consensus.ScriptInfo; using Blockcore.Networks; -namespace NBitcoin.BuilderExtensions +namespace Blockcore.NBitcoin.BuilderExtensions { public class OPTrueExtension : BuilderExtension { diff --git a/src/Blockcore/NBitcoin/BuilderExtensions/P2MultiSigBuilderExtension.cs b/src/Blockcore/NBitcoin/BuilderExtensions/P2MultiSigBuilderExtension.cs index d310f6c9c..9b23496ce 100644 --- a/src/Blockcore/NBitcoin/BuilderExtensions/P2MultiSigBuilderExtension.cs +++ b/src/Blockcore/NBitcoin/BuilderExtensions/P2MultiSigBuilderExtension.cs @@ -5,7 +5,7 @@ using Blockcore.Consensus.TransactionInfo; using Blockcore.Networks; -namespace NBitcoin.BuilderExtensions +namespace Blockcore.NBitcoin.BuilderExtensions { public class P2MultiSigBuilderExtension : BuilderExtension { diff --git a/src/Blockcore/NBitcoin/BuilderExtensions/P2PKBuilderExtension.cs b/src/Blockcore/NBitcoin/BuilderExtensions/P2PKBuilderExtension.cs index b19173d30..97acf9f5a 100644 --- a/src/Blockcore/NBitcoin/BuilderExtensions/P2PKBuilderExtension.cs +++ b/src/Blockcore/NBitcoin/BuilderExtensions/P2PKBuilderExtension.cs @@ -3,7 +3,7 @@ using Blockcore.Consensus.TransactionInfo; using Blockcore.Networks; -namespace NBitcoin.BuilderExtensions +namespace Blockcore.NBitcoin.BuilderExtensions { public class P2PKBuilderExtension : BuilderExtension { diff --git a/src/Blockcore/NBitcoin/BuilderExtensions/P2PKHBuilderExtension.cs b/src/Blockcore/NBitcoin/BuilderExtensions/P2PKHBuilderExtension.cs index f03b8bf71..6297127d2 100644 --- a/src/Blockcore/NBitcoin/BuilderExtensions/P2PKHBuilderExtension.cs +++ b/src/Blockcore/NBitcoin/BuilderExtensions/P2PKHBuilderExtension.cs @@ -2,7 +2,7 @@ using Blockcore.Consensus.TransactionInfo; using Blockcore.Networks; -namespace NBitcoin.BuilderExtensions +namespace Blockcore.NBitcoin.BuilderExtensions { public class P2PKHBuilderExtension : BuilderExtension { diff --git a/src/Blockcore/NBitcoin/Coin.cs b/src/Blockcore/NBitcoin/Coin.cs index 764387c3e..841558d43 100644 --- a/src/Blockcore/NBitcoin/Coin.cs +++ b/src/Blockcore/NBitcoin/Coin.cs @@ -1,12 +1,10 @@ using System; -using System.Collections.Generic; -using System.Linq; using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.OpenAsset; using Blockcore.Networks; -using NBitcoin.OpenAsset; -namespace NBitcoin +namespace Blockcore.NBitcoin { public interface IColoredCoin : ICoin { diff --git a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/BitMath.cs b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/BitMath.cs index 9c484282a..ff6322d3b 100644 --- a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/BitMath.cs +++ b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/BitMath.cs @@ -17,7 +17,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #endregion -namespace NBitcoin.Crypto.Internal +namespace Blockcore.NBitcoin.Crypto.Cryptsharp { internal static class BitMath { diff --git a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/BitPacking.cs b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/BitPacking.cs index 11dd53b3a..05018f52e 100644 --- a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/BitPacking.cs +++ b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/BitPacking.cs @@ -17,7 +17,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #endregion -namespace NBitcoin.Crypto.Internal +namespace Blockcore.NBitcoin.Crypto.Cryptsharp { internal static class BitPacking { diff --git a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Check.cs b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Check.cs index 158586119..721cdc92b 100644 --- a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Check.cs +++ b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Check.cs @@ -19,7 +19,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. using System; -namespace NBitcoin.Crypto.Internal +namespace Blockcore.NBitcoin.Crypto.Cryptsharp { internal static class Check { diff --git a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Exceptions.cs b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Exceptions.cs index d70fdf255..59c9051d8 100644 --- a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Exceptions.cs +++ b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Exceptions.cs @@ -19,7 +19,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. using System; -namespace NBitcoin.Crypto.Internal +namespace Blockcore.NBitcoin.Crypto.Cryptsharp { internal static class Exceptions { diff --git a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Pbkdf2.cs b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Pbkdf2.cs index 74551e995..d1068a884 100644 --- a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Pbkdf2.cs +++ b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Pbkdf2.cs @@ -19,10 +19,9 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. using System; using System.IO; -using NBitcoin.BouncyCastle.Crypto; -using NBitcoin.Crypto.Internal; +using Blockcore.NBitcoin.BouncyCastle.crypto; -namespace NBitcoin.Crypto +namespace Blockcore.NBitcoin.Crypto.Cryptsharp { /// /// Implements the PBKDF2 key derivation function. @@ -67,10 +66,10 @@ internal class Pbkdf2 : Stream /// The number of iterations to apply. public Pbkdf2(IMac hmacAlgorithm, byte[] salt, int iterations) { - Internal.Check.Null("hmacAlgorithm", hmacAlgorithm); - Internal.Check.Null("salt", salt); - Internal.Check.Length("salt", salt, 0, int.MaxValue - 4); - Internal.Check.Range("iterations", iterations, 1, int.MaxValue); + Check.Null("hmacAlgorithm", hmacAlgorithm); + Check.Null("salt", salt); + Check.Length("salt", salt, 0, int.MaxValue - 4); + Check.Range("iterations", iterations, 1, int.MaxValue); int hmacLength = hmacAlgorithm.GetMacSize(); this._saltBuffer = new byte[salt.Length + 4]; Array.Copy(salt, this._saltBuffer, salt.Length); @@ -87,7 +86,7 @@ public Pbkdf2(IMac hmacAlgorithm, byte[] salt, int iterations) /// Bytes from the derived key stream. public byte[] Read(int count) { - Internal.Check.Range("count", count, 0, int.MaxValue); + Check.Range("count", count, 0, int.MaxValue); var buffer = new byte[count]; int bytes = Read(buffer, 0, count); @@ -114,7 +113,7 @@ public byte[] Read(int count) public static byte[] ComputeDerivedKey(IMac hmacAlgorithm, byte[] salt, int iterations, int derivedKeyLength) { - Internal.Check.Range("derivedKeyLength", derivedKeyLength, 0, int.MaxValue); + Check.Range("derivedKeyLength", derivedKeyLength, 0, int.MaxValue); using(var kdf = new Pbkdf2(hmacAlgorithm, salt, iterations)) { @@ -174,7 +173,7 @@ public override void Flush() /// public override int Read(byte[] buffer, int offset, int count) { - Internal.Check.Bounds("buffer", buffer, offset, count); + Check.Bounds("buffer", buffer, offset, count); int bytes = 0; while(count > 0) diff --git a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/SCrypt.cs b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/SCrypt.cs index 3d499f60c..cabcd9c7f 100644 --- a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/SCrypt.cs +++ b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/SCrypt.cs @@ -21,10 +21,11 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. using System.Text; using System.Threading; using System.Threading.Tasks; -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.Crypto.Internal; +using Blockcore.NBitcoin.BouncyCastle.crypto.digests; +using Blockcore.NBitcoin.BouncyCastle.crypto.macs; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; -namespace NBitcoin.Crypto +namespace Blockcore.NBitcoin.Crypto.Cryptsharp { // See http://www.tarsnap.com/scrypt/scrypt.pdf for algorithm details. // TODO: Test on a big-endian machine and make sure it works. @@ -141,7 +142,7 @@ internal static Pbkdf2 GetStream(byte[] key, byte[] salt, int cost, int blockSize, int parallel, int? maxThreads) { byte[] B = GetEffectivePbkdf2Salt(key, salt, cost, blockSize, parallel, maxThreads); - var mac = new NBitcoin.BouncyCastle.Crypto.Macs.HMac(new NBitcoin.BouncyCastle.Crypto.Digests.Sha256Digest()); + var mac = new HMac(new Sha256Digest()); mac.Init(new KeyParameter(key)); var kdf = new Pbkdf2(mac, B, 1); Security.Clear(B); @@ -166,7 +167,7 @@ private static byte[] MFcrypt(byte[] P, byte[] S, Check.Range("maxThreads", (int)maxThreads, 1, int.MaxValue); - var mac = new NBitcoin.BouncyCastle.Crypto.Macs.HMac(new NBitcoin.BouncyCastle.Crypto.Digests.Sha256Digest()); + var mac = new HMac(new Sha256Digest()); mac.Init(new KeyParameter(P)); byte[] B = Pbkdf2.ComputeDerivedKey(mac, S, 1, parallel * MFLen); diff --git a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Salsa20Core.cs b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Salsa20Core.cs index dedcc3404..14862a2c6 100644 --- a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Salsa20Core.cs +++ b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Salsa20Core.cs @@ -18,9 +18,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #endregion using System; -using NBitcoin.Crypto.Internal; -namespace NBitcoin.Crypto +namespace Blockcore.NBitcoin.Crypto.Cryptsharp { // Source: http://cr.yp.to/salsa20.html /// diff --git a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Security.cs b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Security.cs index c9e055d49..15202afad 100644 --- a/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Security.cs +++ b/src/Blockcore/NBitcoin/Crypto/Cryptsharp/Security.cs @@ -19,7 +19,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. using System; -namespace NBitcoin.Crypto.Internal +namespace Blockcore.NBitcoin.Crypto.Cryptsharp { internal static class Security { diff --git a/src/Blockcore/NBitcoin/Crypto/DeterministicECDSA.cs b/src/Blockcore/NBitcoin/Crypto/DeterministicECDSA.cs index d3754d518..71903ce22 100644 --- a/src/Blockcore/NBitcoin/Crypto/DeterministicECDSA.cs +++ b/src/Blockcore/NBitcoin/Crypto/DeterministicECDSA.cs @@ -1,11 +1,11 @@ using System; using System.Linq; -using NBitcoin.BouncyCastle.Crypto; -using NBitcoin.BouncyCastle.Crypto.Digests; -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.BouncyCastle.Crypto.Signers; +using Blockcore.NBitcoin.BouncyCastle.crypto; +using Blockcore.NBitcoin.BouncyCastle.crypto.digests; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.BouncyCastle.crypto.signers; -namespace NBitcoin.Crypto +namespace Blockcore.NBitcoin.Crypto { internal class DeterministicECDSA : ECDsaSigner { diff --git a/src/Blockcore/NBitcoin/Crypto/ECDSASignature.cs b/src/Blockcore/NBitcoin/Crypto/ECDSASignature.cs index ea902f0cd..36f68a42c 100644 --- a/src/Blockcore/NBitcoin/Crypto/ECDSASignature.cs +++ b/src/Blockcore/NBitcoin/Crypto/ECDSASignature.cs @@ -1,9 +1,9 @@ using System; using System.IO; -using NBitcoin.BouncyCastle.Asn1; -using NBitcoin.BouncyCastle.Math; +using Blockcore.NBitcoin.BouncyCastle.asn1; +using Blockcore.NBitcoin.BouncyCastle.math; -namespace NBitcoin.Crypto +namespace Blockcore.NBitcoin.Crypto { public class ECDSASignature { diff --git a/src/Blockcore/NBitcoin/Crypto/ECKey.cs b/src/Blockcore/NBitcoin/Crypto/ECKey.cs index 66e08884f..9a3c54295 100644 --- a/src/Blockcore/NBitcoin/Crypto/ECKey.cs +++ b/src/Blockcore/NBitcoin/Crypto/ECKey.cs @@ -1,12 +1,13 @@ using System; -using NBitcoin.BouncyCastle.Asn1.X9; -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.BouncyCastle.Crypto.Signers; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.BouncyCastle.Math.EC.Custom.Sec; - -namespace NBitcoin.Crypto +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; +using Blockcore.NBitcoin.BouncyCastle.crypto.ec; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.BouncyCastle.crypto.signers; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.BouncyCastle.math.ec.custom.sec; + +namespace Blockcore.NBitcoin.Crypto { internal class ECKey { @@ -27,7 +28,7 @@ public ECPrivateKeyParameters PrivateKey public static readonly X9ECParameters _Secp256k1; static ECKey() { - _Secp256k1 = BouncyCastle.Crypto.EC.CustomNamedCurves.Secp256k1; + _Secp256k1 = CustomNamedCurves.Secp256k1; CURVE = new ECDomainParameters(_Secp256k1.Curve, _Secp256k1.G, _Secp256k1.N, _Secp256k1.H); HALF_CURVE_ORDER = _Secp256k1.N.ShiftRight(1); CURVE_ORDER = _Secp256k1.N; diff --git a/src/Blockcore/NBitcoin/Crypto/HashStream.cs b/src/Blockcore/NBitcoin/Crypto/HashStream.cs index c56d87751..5e4c42af9 100644 --- a/src/Blockcore/NBitcoin/Crypto/HashStream.cs +++ b/src/Blockcore/NBitcoin/Crypto/HashStream.cs @@ -1,7 +1,8 @@ using System; using System.IO; +using Blockcore.NBitcoin.BouncyCastle.crypto.digests; -namespace NBitcoin.Crypto +namespace Blockcore.NBitcoin.Crypto { public class HashStream : Stream { @@ -103,7 +104,7 @@ private void ProcessBlockIfNeeded() ProcessBlock(); } - private BouncyCastle.Crypto.Digests.Sha256Digest sha = new BouncyCastle.Crypto.Digests.Sha256Digest(); + private Sha256Digest sha = new Sha256Digest(); private void ProcessBlock() { this.sha.BlockUpdate(this._Buffer, 0, this._Pos); diff --git a/src/Blockcore/NBitcoin/Crypto/HashX13.cs b/src/Blockcore/NBitcoin/Crypto/HashX13.cs index f78152075..157f7fe40 100644 --- a/src/Blockcore/NBitcoin/Crypto/HashX13.cs +++ b/src/Blockcore/NBitcoin/Crypto/HashX13.cs @@ -4,7 +4,7 @@ using System.Threading; using HashLib; -namespace NBitcoin.Crypto +namespace Blockcore.NBitcoin.Crypto { // this hashing class is not thread safe to use with static instances. // the hashing objects maintain state during hash calculation. diff --git a/src/Blockcore/NBitcoin/Crypto/Hashes.cs b/src/Blockcore/NBitcoin/Crypto/Hashes.cs index f6bc93356..925fde873 100644 --- a/src/Blockcore/NBitcoin/Crypto/Hashes.cs +++ b/src/Blockcore/NBitcoin/Crypto/Hashes.cs @@ -1,13 +1,17 @@ using System; using System.IO; using System.Linq; -using NBitcoin.BouncyCastle.Crypto.Digests; using System.Security.Cryptography; +using Blockcore.NBitcoin.BouncyCastle.crypto.digests; +using Blockcore.NBitcoin.BouncyCastle.crypto.macs; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; -namespace NBitcoin.Crypto +namespace Blockcore.NBitcoin.Crypto { public static class Hashes { + public static bool UseBCForHMACSHA512 = false; + #region Hash256 public static uint256 Hash256(byte[] data) @@ -65,7 +69,7 @@ public static uint160 Hash160(byte[] data, int offset, int count) #region RIPEMD160 - private static byte[] RIPEMD160(byte[] data) + public static byte[] RIPEMD160(byte[] data) { return RIPEMD160(data, 0, data.Length); } @@ -380,6 +384,16 @@ public static uint MurmurHash3(uint nHashSeed, byte[] vDataToHash) public static byte[] HMACSHA512(byte[] key, byte[] data) { + if (UseBCForHMACSHA512) + { + var mac = new HMac(new Sha512Digest()); + mac.Init(new KeyParameter(key)); + mac.BlockUpdate(data, 0, data.Length); + byte[] result = new byte[mac.GetMacSize()]; + mac.DoFinal(result, 0); + return result; + } + return new HMACSHA512(key).ComputeHash(data); } diff --git a/src/Blockcore/NBitcoin/Crypto/SchnorrSignature.cs b/src/Blockcore/NBitcoin/Crypto/SchnorrSignature.cs new file mode 100644 index 000000000..c1043e76c --- /dev/null +++ b/src/Blockcore/NBitcoin/Crypto/SchnorrSignature.cs @@ -0,0 +1,125 @@ +using System; +using System.Linq; +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; +using Blockcore.NBitcoin.BouncyCastle.crypto.ec; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec.custom.sec; +using Blockcore.NBitcoin.DataEncoders; + +namespace Blockcore.NBitcoin.Crypto +{ + /// + /// Schnorr Signatures using Bouncy Castle + /// Implementation taken from NBitcoin + /// + public class SchnorrSignature + { + public BigInteger R { get; } + public BigInteger S { get; } + + public static SchnorrSignature Parse(string hex) + { + var bytes = Encoders.Hex.DecodeData(hex); + return new SchnorrSignature(bytes); + } + + public SchnorrSignature(byte[] bytes) + { + if (bytes.Length != 64) + throw new ArgumentException(paramName: nameof(bytes), message:"Invalid schnorr signature length."); + + this.R = new BigInteger(1, bytes, 0, 32); + this.S = new BigInteger(1, bytes, 32, 32); + + } + + public SchnorrSignature(BigInteger r, BigInteger s) + { + this.R = r; + this.S = s; + } + public byte[] ToBytes() + { + return Utils.BigIntegerToBytes(this.R, 32).Concat(Utils.BigIntegerToBytes(this.S, 32)); + } + } + + public class SchnorrSigner + { + private static X9ECParameters Secp256k1 = CustomNamedCurves.Secp256k1; + private static BigInteger PP = ((SecP256K1Curve)Secp256k1.Curve).QQ; + + public SchnorrSignature Sign(uint256 m, Key secret) + { + return Sign(m, new BigInteger(1, secret.ToBytes())); + } + + public SchnorrSignature Sign(uint256 m, BigInteger secret) + { + var k = new BigInteger(1, Hashes.SHA256(Utils.BigIntegerToBytes(secret, 32).Concat(m.ToBytes()))); + var R = Secp256k1.G.Multiply(k).Normalize(); + var Xr = R.XCoord.ToBigInteger(); + var Yr = R.YCoord.ToBigInteger(); + if (BigInteger.Jacobi(Yr, PP) != 1) + k = Secp256k1.N.Subtract(k); + + var P = Secp256k1.G.Multiply(secret); + var keyPrefixedM = Utils.BigIntegerToBytes(Xr, 32).Concat(P.GetEncoded(true), m.ToBytes()); + var e = new BigInteger(1, Hashes.SHA256(keyPrefixedM)); + + var s = k.Add(e.Multiply(secret)).Mod(Secp256k1.N); + return new SchnorrSignature(Xr, s); + } + + public bool Verify(uint256 m, PubKey pubkey, SchnorrSignature sig) + { + if (sig.R.CompareTo(PP) >= 0 || sig.S.CompareTo(Secp256k1.N) >= 0) + return false; + var e = new BigInteger(1, Hashes.SHA256(Utils.BigIntegerToBytes(sig.R, 32).Concat(pubkey.ToBytes(), m.ToBytes()))).Mod(Secp256k1.N); + var q = pubkey.ECKey.GetPublicKeyParameters().Q.Normalize(); + var P = Secp256k1.Curve.CreatePoint(q.XCoord.ToBigInteger(), q.YCoord.ToBigInteger()); + + var R = Secp256k1.G.Multiply(sig.S).Add(P.Multiply(Secp256k1.N.Subtract(e))).Normalize(); + + if (R.IsInfinity + || R.XCoord.ToBigInteger().CompareTo(sig.R) != 0 + || BigInteger.Jacobi(R.YCoord.ToBigInteger(), PP) != 1) + return false; + + return true; + } + + public static bool BatchVerify(uint256[] m, PubKey[] pubkeys, SchnorrSignature[] sigs, BigInteger[] rnds) + { + if (m.Length != pubkeys.Length || pubkeys.Length != sigs.Length || sigs.Length != rnds.Length + 1) + throw new ArgumentException("Invalid array lengths"); + if (rnds.Any(r => r.CompareTo(BigInteger.Zero) <= 0 || r.CompareTo(Secp256k1.N) >= 0)) + throw new ArgumentException("Random numbers are out of range"); + var s = BigInteger.Zero; + var r1 = Secp256k1.Curve.Infinity; + var r2 = Secp256k1.Curve.Infinity; + for (var i = 0; i < sigs.Count(); i++) + { + var sig = sigs[i]; + if (sig.R.CompareTo(PP) >= 0 || sig.S.CompareTo(Secp256k1.N) >= 0) + return false; + + var e = new BigInteger(1, Hashes.SHA256(Utils.BigIntegerToBytes(sig.R, 32).Concat(pubkeys[i].ToBytes(), m[i].ToBytes()))).Mod(Secp256k1.N); + var c = sig.R.Pow(3).Add(BigInteger.ValueOf(7)).Mod(PP); + var y = c.ModPow(PP.Add(BigInteger.One).Divide(BigInteger.ValueOf(4)), PP); + if (!y.ModPow(BigInteger.Two, PP).Equals(c)) + return false; + + var a = i == 0 ? BigInteger.One : rnds[i - 1]; + s = s.Add(sig.S.Multiply(a)).Mod(Secp256k1.N); + + var R = Secp256k1.Curve.CreatePoint(sig.R, y); + r1 = r1.Add(R.Multiply(a)); + + var P = pubkeys[i].ECKey.GetPublicKeyParameters().Q.Normalize(); + r2 = r2.Add(P.Multiply(e.Multiply(a))); + } + return Secp256k1.G.Multiply(s).Equals(r1.Add(r2)); + } + } +} diff --git a/src/Blockcore/NBitcoin/Crypto/Sha512t.cs b/src/Blockcore/NBitcoin/Crypto/Sha512t.cs index 4ab54c424..394467a38 100644 --- a/src/Blockcore/NBitcoin/Crypto/Sha512t.cs +++ b/src/Blockcore/NBitcoin/Crypto/Sha512t.cs @@ -1,7 +1,7 @@ using System; using System.Security.Cryptography; -namespace NBitcoin.Crypto +namespace Blockcore.NBitcoin.Crypto { public static class Sha512T { diff --git a/src/Blockcore/NBitcoin/DataEncoders/ASCIIEncoder.cs b/src/Blockcore/NBitcoin/DataEncoders/ASCIIEncoder.cs index 6cdd5c1dd..b87f9792d 100644 --- a/src/Blockcore/NBitcoin/DataEncoders/ASCIIEncoder.cs +++ b/src/Blockcore/NBitcoin/DataEncoders/ASCIIEncoder.cs @@ -1,7 +1,7 @@ using System; using System.Linq; -namespace NBitcoin.DataEncoders +namespace Blockcore.NBitcoin.DataEncoders { public class ASCIIEncoder : DataEncoder { diff --git a/src/Blockcore/NBitcoin/DataEncoders/Base58Encoder.cs b/src/Blockcore/NBitcoin/DataEncoders/Base58Encoder.cs index 4597c8d81..94ca157a7 100644 --- a/src/Blockcore/NBitcoin/DataEncoders/Base58Encoder.cs +++ b/src/Blockcore/NBitcoin/DataEncoders/Base58Encoder.cs @@ -1,10 +1,10 @@ using System; using System.Linq; using System.Text; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.Crypto; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.Crypto; -namespace NBitcoin.DataEncoders +namespace Blockcore.NBitcoin.DataEncoders { public class Base58CheckEncoder : Base58Encoder { diff --git a/src/Blockcore/NBitcoin/DataEncoders/Base64Encoder.cs b/src/Blockcore/NBitcoin/DataEncoders/Base64Encoder.cs index 183c20fa1..c533850bf 100644 --- a/src/Blockcore/NBitcoin/DataEncoders/Base64Encoder.cs +++ b/src/Blockcore/NBitcoin/DataEncoders/Base64Encoder.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.DataEncoders +namespace Blockcore.NBitcoin.DataEncoders { public class Base64Encoder : DataEncoder { diff --git a/src/Blockcore/NBitcoin/DataEncoders/Bech32Encoder.cs b/src/Blockcore/NBitcoin/DataEncoders/Bech32Encoder.cs index 69b623eb4..9835cb49e 100644 --- a/src/Blockcore/NBitcoin/DataEncoders/Bech32Encoder.cs +++ b/src/Blockcore/NBitcoin/DataEncoders/Bech32Encoder.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; -namespace NBitcoin.DataEncoders +namespace Blockcore.NBitcoin.DataEncoders { public class Bech32FormatException : FormatException { diff --git a/src/Blockcore/NBitcoin/DataEncoders/Encoders.cs b/src/Blockcore/NBitcoin/DataEncoders/Encoders.cs index 35b62c9dd..48a5d390b 100644 --- a/src/Blockcore/NBitcoin/DataEncoders/Encoders.cs +++ b/src/Blockcore/NBitcoin/DataEncoders/Encoders.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.DataEncoders +namespace Blockcore.NBitcoin.DataEncoders { public abstract class DataEncoder { diff --git a/src/Blockcore/NBitcoin/DataEncoders/HexEncoder.cs b/src/Blockcore/NBitcoin/DataEncoders/HexEncoder.cs index c2ccb5e84..c67e9fe9b 100644 --- a/src/Blockcore/NBitcoin/DataEncoders/HexEncoder.cs +++ b/src/Blockcore/NBitcoin/DataEncoders/HexEncoder.cs @@ -1,7 +1,7 @@ using System; using System.Linq; -namespace NBitcoin.DataEncoders +namespace Blockcore.NBitcoin.DataEncoders { public class HexEncoder : DataEncoder { diff --git a/src/Blockcore/NBitcoin/FeeRate.cs b/src/Blockcore/NBitcoin/FeeRate.cs index 0a428fdcf..fedc0e32d 100644 --- a/src/Blockcore/NBitcoin/FeeRate.cs +++ b/src/Blockcore/NBitcoin/FeeRate.cs @@ -1,7 +1,7 @@ using System; using Blockcore.Consensus.TransactionInfo; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class FeeRate : IEquatable, IComparable { @@ -108,7 +108,7 @@ public int CompareTo(object obj) if (m != null) return this._FeePerK.CompareTo(m._FeePerK); #if !NETCORE - return _FeePerK.CompareTo(obj); + return this._FeePerK.CompareTo(obj); #else return this._FeePerK.CompareTo((long)obj); #endif diff --git a/src/Blockcore/NBitcoin/Formatters/BlockExplorerFormatter.cs b/src/Blockcore/NBitcoin/Formatters/BlockExplorerFormatter.cs index b50019ce5..e1677b0dc 100644 --- a/src/Blockcore/NBitcoin/Formatters/BlockExplorerFormatter.cs +++ b/src/Blockcore/NBitcoin/Formatters/BlockExplorerFormatter.cs @@ -1,11 +1,11 @@ using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.DataEncoders; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -namespace NBitcoin.Formatters +namespace Blockcore.NBitcoin.Formatters { internal class BlockExplorerFormatter : RawFormatter { diff --git a/src/Blockcore/NBitcoin/Formatters/RawFormatter.cs b/src/Blockcore/NBitcoin/Formatters/RawFormatter.cs index cd43c4428..30a617c20 100644 --- a/src/Blockcore/NBitcoin/Formatters/RawFormatter.cs +++ b/src/Blockcore/NBitcoin/Formatters/RawFormatter.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; -namespace NBitcoin.Formatters +namespace Blockcore.NBitcoin.Formatters { internal abstract class RawFormatter { diff --git a/src/Blockcore/NBitcoin/Formatters/SatoshiFormatter.cs b/src/Blockcore/NBitcoin/Formatters/SatoshiFormatter.cs index e5e51daef..4775e374b 100644 --- a/src/Blockcore/NBitcoin/Formatters/SatoshiFormatter.cs +++ b/src/Blockcore/NBitcoin/Formatters/SatoshiFormatter.cs @@ -3,12 +3,12 @@ using System.Linq; using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.DataEncoders; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -namespace NBitcoin.Formatters +namespace Blockcore.NBitcoin.Formatters { internal class SatoshiFormatter : RawFormatter { diff --git a/src/Blockcore/NBitcoin/IBech32Data.cs b/src/Blockcore/NBitcoin/IBech32Data.cs index f102c53c2..b4a88d283 100644 --- a/src/Blockcore/NBitcoin/IBech32Data.cs +++ b/src/Blockcore/NBitcoin/IBech32Data.cs @@ -1,6 +1,6 @@ using Blockcore.Networks; -namespace NBitcoin +namespace Blockcore.NBitcoin { public interface IBech32Data : IBitcoinString { diff --git a/src/Blockcore/NBitcoin/IBitcoinSerializable.cs b/src/Blockcore/NBitcoin/IBitcoinSerializable.cs index 8ea169478..fb40f5795 100644 --- a/src/Blockcore/NBitcoin/IBitcoinSerializable.cs +++ b/src/Blockcore/NBitcoin/IBitcoinSerializable.cs @@ -2,9 +2,8 @@ using System.IO; using Blockcore.Consensus; using Blockcore.Consensus.TransactionInfo; -using NBitcoin.Protocol; -namespace NBitcoin +namespace Blockcore.NBitcoin { public interface IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/IBitcoinString.cs b/src/Blockcore/NBitcoin/IBitcoinString.cs index 8239f1c95..f1d75a790 100644 --- a/src/Blockcore/NBitcoin/IBitcoinString.cs +++ b/src/Blockcore/NBitcoin/IBitcoinString.cs @@ -1,6 +1,6 @@ using Blockcore.Networks; -namespace NBitcoin +namespace Blockcore.NBitcoin { public interface IBitcoinString { diff --git a/src/Blockcore/NBitcoin/IDestination.cs b/src/Blockcore/NBitcoin/IDestination.cs index dc51f9782..85eed06d6 100644 --- a/src/Blockcore/NBitcoin/IDestination.cs +++ b/src/Blockcore/NBitcoin/IDestination.cs @@ -1,6 +1,6 @@ using Blockcore.Consensus.ScriptInfo; -namespace NBitcoin +namespace Blockcore.NBitcoin { /// /// Represent any type which represent an underlying ScriptPubKey diff --git a/src/Blockcore/NBitcoin/ISecret.cs b/src/Blockcore/NBitcoin/ISecret.cs index fbe3c481c..c05cd8db6 100644 --- a/src/Blockcore/NBitcoin/ISecret.cs +++ b/src/Blockcore/NBitcoin/ISecret.cs @@ -1,4 +1,4 @@ -namespace NBitcoin +namespace Blockcore.NBitcoin { public interface ISecret { diff --git a/src/Blockcore/NBitcoin/Key.cs b/src/Blockcore/NBitcoin/Key.cs index eb4ea7471..860fb6b8c 100644 --- a/src/Blockcore/NBitcoin/Key.cs +++ b/src/Blockcore/NBitcoin/Key.cs @@ -3,12 +3,13 @@ using System.Text; using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.BIP38; +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.Crypto; using Blockcore.Networks; -using NBitcoin.BouncyCastle.Asn1.X9; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.Crypto; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class Key : IBitcoinSerializable, IDestination { @@ -98,6 +99,13 @@ public ECDSASignature Sign(uint256 hash) return this._ECKey.Sign(hash); } + public SchnorrSignature SignSchnorr(uint256 hash) + { + var signer = new SchnorrSigner(); + return signer.Sign(hash, this); + + } + /// /// Hashes and signs a message, returning the signature. /// diff --git a/src/Blockcore/NBitcoin/KeyId.cs b/src/Blockcore/NBitcoin/KeyId.cs index eb8b26e04..d14e67465 100644 --- a/src/Blockcore/NBitcoin/KeyId.cs +++ b/src/Blockcore/NBitcoin/KeyId.cs @@ -1,10 +1,10 @@ using System; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin { public abstract class TxDestination : IDestination { diff --git a/src/Blockcore/NBitcoin/LockTime.cs b/src/Blockcore/NBitcoin/LockTime.cs index a149f223f..91690b8e1 100644 --- a/src/Blockcore/NBitcoin/LockTime.cs +++ b/src/Blockcore/NBitcoin/LockTime.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin +namespace Blockcore.NBitcoin { public struct LockTime : IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/MerkleBlock.cs b/src/Blockcore/NBitcoin/MerkleBlock.cs index 1869dcbf6..baf7121cd 100644 --- a/src/Blockcore/NBitcoin/MerkleBlock.cs +++ b/src/Blockcore/NBitcoin/MerkleBlock.cs @@ -2,7 +2,7 @@ using System.Linq; using Blockcore.Consensus.BlockInfo; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class MerkleBlock : IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/MerkleNode.cs b/src/Blockcore/NBitcoin/MerkleNode.cs index df4e9a4cb..efbf9d918 100644 --- a/src/Blockcore/NBitcoin/MerkleNode.cs +++ b/src/Blockcore/NBitcoin/MerkleNode.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Linq; using System.Text; -using NBitcoin.Crypto; +using Blockcore.NBitcoin.Crypto; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class MerkleNode { diff --git a/src/Blockcore/NBitcoin/Money.cs b/src/Blockcore/NBitcoin/Money.cs index 4fdeb6209..45a58222c 100644 --- a/src/Blockcore/NBitcoin/Money.cs +++ b/src/Blockcore/NBitcoin/Money.cs @@ -3,9 +3,9 @@ using System.Globalization; using System.Linq; using System.Text; -using NBitcoin.OpenAsset; +using Blockcore.NBitcoin.OpenAsset; -namespace NBitcoin +namespace Blockcore.NBitcoin { public static class MoneyExtensions { @@ -495,7 +495,7 @@ public int CompareTo(object obj) if (m != null) return this._Satoshis.CompareTo(m._Satoshis); #if !NETCORE - return _Satoshis.CompareTo(obj); + return this._Satoshis.CompareTo(obj); #else return this._Satoshis.CompareTo((long)obj); #endif diff --git a/src/Blockcore/NBitcoin/NetworkXServer.cs b/src/Blockcore/NBitcoin/NetworkXServer.cs index 0d9988538..93f470c83 100644 --- a/src/Blockcore/NBitcoin/NetworkXServer.cs +++ b/src/Blockcore/NBitcoin/NetworkXServer.cs @@ -13,4 +13,4 @@ public NetworkXServer(string publicAddress, long port, int networkProtocol = 0) this.NetworkPort = port; } } -} +} \ No newline at end of file diff --git a/src/Blockcore/NBitcoin/OpenAsset/AssetId.cs b/src/Blockcore/NBitcoin/OpenAsset/AssetId.cs index 5c5f45c64..48dba0ecd 100644 --- a/src/Blockcore/NBitcoin/OpenAsset/AssetId.cs +++ b/src/Blockcore/NBitcoin/OpenAsset/AssetId.cs @@ -1,9 +1,9 @@ using System; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.DataEncoders; -namespace NBitcoin.OpenAsset +namespace Blockcore.NBitcoin.OpenAsset { /// /// A unique Id for an asset diff --git a/src/Blockcore/NBitcoin/OpenAsset/AssetMoney.cs b/src/Blockcore/NBitcoin/OpenAsset/AssetMoney.cs index ebbba5e7c..93c5fb8a5 100644 --- a/src/Blockcore/NBitcoin/OpenAsset/AssetMoney.cs +++ b/src/Blockcore/NBitcoin/OpenAsset/AssetMoney.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace NBitcoin.OpenAsset +namespace Blockcore.NBitcoin.OpenAsset { public class AssetMoney : IComparable, IComparable, IEquatable, IMoney { diff --git a/src/Blockcore/NBitcoin/OpenAsset/BitcoinAssetId.cs b/src/Blockcore/NBitcoin/OpenAsset/BitcoinAssetId.cs index 80d594360..d503f7132 100644 --- a/src/Blockcore/NBitcoin/OpenAsset/BitcoinAssetId.cs +++ b/src/Blockcore/NBitcoin/OpenAsset/BitcoinAssetId.cs @@ -1,7 +1,7 @@ using System; using Blockcore.Networks; -namespace NBitcoin.OpenAsset +namespace Blockcore.NBitcoin.OpenAsset { /// /// Base58 representation of an asset id diff --git a/src/Blockcore/NBitcoin/OpenAsset/ColorMarker.cs b/src/Blockcore/NBitcoin/OpenAsset/ColorMarker.cs index bea13eec6..e5a810fc1 100644 --- a/src/Blockcore/NBitcoin/OpenAsset/ColorMarker.cs +++ b/src/Blockcore/NBitcoin/OpenAsset/ColorMarker.cs @@ -3,9 +3,9 @@ using System.Linq; using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; -using NBitcoin.DataEncoders; +using Blockcore.NBitcoin.DataEncoders; -namespace NBitcoin.OpenAsset +namespace Blockcore.NBitcoin.OpenAsset { public class ColorMarker : IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/OpenAsset/Extensions.cs b/src/Blockcore/NBitcoin/OpenAsset/Extensions.cs index 93a09852a..34ce0acd1 100644 --- a/src/Blockcore/NBitcoin/OpenAsset/Extensions.cs +++ b/src/Blockcore/NBitcoin/OpenAsset/Extensions.cs @@ -1,6 +1,4 @@ -using System.Threading.Tasks; - -namespace NBitcoin.OpenAsset +namespace Blockcore.NBitcoin.OpenAsset { public static class Extensions { diff --git a/src/Blockcore/NBitcoin/PartialMerkleTree.cs b/src/Blockcore/NBitcoin/PartialMerkleTree.cs index 94af73e85..fb77e1b5c 100644 --- a/src/Blockcore/NBitcoin/PartialMerkleTree.cs +++ b/src/Blockcore/NBitcoin/PartialMerkleTree.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class PartialMerkleTree : IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/Policy/ITransactionPolicy.cs b/src/Blockcore/NBitcoin/Policy/ITransactionPolicy.cs index a30a007e0..46a9c0e26 100644 --- a/src/Blockcore/NBitcoin/Policy/ITransactionPolicy.cs +++ b/src/Blockcore/NBitcoin/Policy/ITransactionPolicy.cs @@ -3,7 +3,7 @@ using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; -namespace NBitcoin.Policy +namespace Blockcore.NBitcoin.Policy { public class TransactionPolicyError { diff --git a/src/Blockcore/NBitcoin/Policy/MinerTransactionPolicy.cs b/src/Blockcore/NBitcoin/Policy/MinerTransactionPolicy.cs index 39d5e3dd4..e6af4daa1 100644 --- a/src/Blockcore/NBitcoin/Policy/MinerTransactionPolicy.cs +++ b/src/Blockcore/NBitcoin/Policy/MinerTransactionPolicy.cs @@ -4,7 +4,7 @@ using System.Text; using Blockcore.Consensus.TransactionInfo; -namespace NBitcoin.Policy +namespace Blockcore.NBitcoin.Policy { /// /// Error when not enough funds are present for verifying or building a transaction diff --git a/src/Blockcore/NBitcoin/Policy/StandardTransactionPolicy.cs b/src/Blockcore/NBitcoin/Policy/StandardTransactionPolicy.cs index 8dc8bb3eb..7e82dc795 100644 --- a/src/Blockcore/NBitcoin/Policy/StandardTransactionPolicy.cs +++ b/src/Blockcore/NBitcoin/Policy/StandardTransactionPolicy.cs @@ -5,7 +5,7 @@ using Blockcore.Consensus.TransactionInfo; using Blockcore.Networks; -namespace NBitcoin.Policy +namespace Blockcore.NBitcoin.Policy { public class StandardTransactionPolicy : ITransactionPolicy { diff --git a/src/Blockcore/NBitcoin/Protocol/NetworkAddress.cs b/src/Blockcore/NBitcoin/Protocol/NetworkAddress.cs index 05e992a13..738e17fb5 100644 --- a/src/Blockcore/NBitcoin/Protocol/NetworkAddress.cs +++ b/src/Blockcore/NBitcoin/Protocol/NetworkAddress.cs @@ -1,7 +1,7 @@ using System; using System.Net; -namespace NBitcoin.Protocol +namespace Blockcore.NBitcoin.Protocol { public class NetworkAddress : IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/Protocol/NodeSocketEventManager.cs b/src/Blockcore/NBitcoin/Protocol/NodeSocketEventManager.cs index 885629597..dca87ce1e 100644 --- a/src/Blockcore/NBitcoin/Protocol/NodeSocketEventManager.cs +++ b/src/Blockcore/NBitcoin/Protocol/NodeSocketEventManager.cs @@ -3,7 +3,7 @@ using System.Net.Sockets; using System.Threading; -namespace NBitcoin.Protocol +namespace Blockcore.NBitcoin.Protocol { /// /// Singleton class which deals with a single instance of . diff --git a/src/Blockcore/NBitcoin/Protocol/PerformanceCounter.cs b/src/Blockcore/NBitcoin/Protocol/PerformanceCounter.cs index 7ebc6c770..b3fbf0a73 100644 --- a/src/Blockcore/NBitcoin/Protocol/PerformanceCounter.cs +++ b/src/Blockcore/NBitcoin/Protocol/PerformanceCounter.cs @@ -1,7 +1,7 @@ using System; using System.Threading; -namespace NBitcoin +namespace Blockcore.NBitcoin.Protocol { public class PerformanceSnapshot { diff --git a/src/Blockcore/NBitcoin/Protocol/ProtocolException.cs b/src/Blockcore/NBitcoin/Protocol/ProtocolException.cs index 4212ac826..f9f75d7fe 100644 --- a/src/Blockcore/NBitcoin/Protocol/ProtocolException.cs +++ b/src/Blockcore/NBitcoin/Protocol/ProtocolException.cs @@ -1,6 +1,6 @@ using System; -namespace NBitcoin.Protocol +namespace Blockcore.NBitcoin.Protocol { public class ProtocolException : Exception { diff --git a/src/Blockcore/NBitcoin/Protocol/UtxOutputs.cs b/src/Blockcore/NBitcoin/Protocol/UtxOutputs.cs index 417579f64..605a90f39 100644 --- a/src/Blockcore/NBitcoin/Protocol/UtxOutputs.cs +++ b/src/Blockcore/NBitcoin/Protocol/UtxOutputs.cs @@ -1,7 +1,7 @@ using System.Collections; using Blockcore.Consensus.TransactionInfo; -namespace NBitcoin.Protocol.Payloads +namespace Blockcore.NBitcoin.Protocol { public class UTxOutputs : IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/Protocol/VarInt.cs b/src/Blockcore/NBitcoin/Protocol/VarInt.cs index 8c7389640..5d7e70374 100644 --- a/src/Blockcore/NBitcoin/Protocol/VarInt.cs +++ b/src/Blockcore/NBitcoin/Protocol/VarInt.cs @@ -1,7 +1,7 @@ using System; using System.IO; -namespace NBitcoin.Protocol +namespace Blockcore.NBitcoin.Protocol { public class CompactVarInt : IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/Protocol/VarString.cs b/src/Blockcore/NBitcoin/Protocol/VarString.cs index fc6e7044e..50f73f1b1 100644 --- a/src/Blockcore/NBitcoin/Protocol/VarString.cs +++ b/src/Blockcore/NBitcoin/Protocol/VarString.cs @@ -1,7 +1,7 @@ using System; using System.Linq; -namespace NBitcoin.Protocol +namespace Blockcore.NBitcoin.Protocol { public class VarString : IBitcoinSerializable { diff --git a/src/Blockcore/NBitcoin/Protocol/Versions.cs b/src/Blockcore/NBitcoin/Protocol/Versions.cs index 968aa5476..f96fc7d35 100644 --- a/src/Blockcore/NBitcoin/Protocol/Versions.cs +++ b/src/Blockcore/NBitcoin/Protocol/Versions.cs @@ -1,4 +1,4 @@ -namespace NBitcoin.Protocol +namespace Blockcore.NBitcoin.Protocol { /// /// Network protocol versioning. diff --git a/src/Blockcore/NBitcoin/PubKey.cs b/src/Blockcore/NBitcoin/PubKey.cs index 44dfafe1e..13e48cfb5 100644 --- a/src/Blockcore/NBitcoin/PubKey.cs +++ b/src/Blockcore/NBitcoin/PubKey.cs @@ -2,15 +2,15 @@ using System.Linq; using System.Text; using Blockcore.Consensus.ScriptInfo; +using Blockcore.NBitcoin.BouncyCastle.asn1.x9; +using Blockcore.NBitcoin.BouncyCastle.crypto.parameters; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.BouncyCastle.math.ec; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.DataEncoders; using Blockcore.Networks; -using NBitcoin.BouncyCastle.Asn1.X9; -using NBitcoin.BouncyCastle.Crypto.Parameters; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.BouncyCastle.Math.EC; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; - -namespace NBitcoin + +namespace Blockcore.NBitcoin { public class PubKey : IBitcoinSerializable, IDestination { @@ -61,7 +61,7 @@ public PubKey(byte[] bytes, bool @unsafe) private ECKey _ECKey; - private ECKey ECKey + internal ECKey ECKey { get { @@ -167,6 +167,17 @@ public BitcoinScriptAddress GetScriptAddress(Network network) return new BitcoinScriptAddress(redeem.Hash, network); } + public bool Verify(uint256 hash, SchnorrSignature sig) + { + if (sig == null) + throw new ArgumentNullException(nameof(sig)); + if (hash == null) + throw new ArgumentNullException(nameof(hash)); + + SchnorrSigner signer = new SchnorrSigner(); + return signer.Verify(hash, this, sig); + } + public bool Verify(uint256 hash, ECDSASignature sig) { return this.ECKey.Verify(hash, sig); diff --git a/src/Blockcore/NBitcoin/RandomUtils.cs b/src/Blockcore/NBitcoin/RandomUtils.cs index 7739608b8..546d12349 100644 --- a/src/Blockcore/NBitcoin/RandomUtils.cs +++ b/src/Blockcore/NBitcoin/RandomUtils.cs @@ -1,8 +1,8 @@ using System; using System.Text; -using NBitcoin.Crypto; +using Blockcore.NBitcoin.Crypto; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class UnsecureRandom : IRandom { diff --git a/src/Blockcore/NBitcoin/RandomUtils.partial.cs b/src/Blockcore/NBitcoin/RandomUtils.partial.cs index e44755c53..d7790e66d 100644 --- a/src/Blockcore/NBitcoin/RandomUtils.partial.cs +++ b/src/Blockcore/NBitcoin/RandomUtils.partial.cs @@ -1,7 +1,7 @@ using System; using System.Security.Cryptography; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class RandomNumberGeneratorRandom : IRandom { diff --git a/src/Blockcore/NBitcoin/Repository/CachedNoSqlRepository.cs b/src/Blockcore/NBitcoin/Repository/CachedNoSqlRepository.cs index 5df162d71..6a416e5a8 100644 --- a/src/Blockcore/NBitcoin/Repository/CachedNoSqlRepository.cs +++ b/src/Blockcore/NBitcoin/Repository/CachedNoSqlRepository.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using Blockcore.Utilities; -namespace NBitcoin +namespace Blockcore.NBitcoin.Repository { public class CachedNoSqlRepository : NoSqlRepository { diff --git a/src/Blockcore/NBitcoin/Repository/CachedTransactionRepository.cs b/src/Blockcore/NBitcoin/Repository/CachedTransactionRepository.cs index e9c224e51..fe28b1704 100644 --- a/src/Blockcore/NBitcoin/Repository/CachedTransactionRepository.cs +++ b/src/Blockcore/NBitcoin/Repository/CachedTransactionRepository.cs @@ -4,7 +4,7 @@ using Blockcore.Consensus.TransactionInfo; using Blockcore.Utilities; -namespace NBitcoin +namespace Blockcore.NBitcoin.Repository { public class CachedTransactionRepository : ITransactionRepository { diff --git a/src/Blockcore/NBitcoin/Repository/ITransactionRepository.cs b/src/Blockcore/NBitcoin/Repository/ITransactionRepository.cs index 9ab7990c5..32cacc414 100644 --- a/src/Blockcore/NBitcoin/Repository/ITransactionRepository.cs +++ b/src/Blockcore/NBitcoin/Repository/ITransactionRepository.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Blockcore.Consensus.TransactionInfo; -namespace NBitcoin +namespace Blockcore.NBitcoin.Repository { /// /// Represent a transaction map diff --git a/src/Blockcore/NBitcoin/Repository/InMemoryNoSqlRepository.cs b/src/Blockcore/NBitcoin/Repository/InMemoryNoSqlRepository.cs index a4022f00b..522d4be23 100644 --- a/src/Blockcore/NBitcoin/Repository/InMemoryNoSqlRepository.cs +++ b/src/Blockcore/NBitcoin/Repository/InMemoryNoSqlRepository.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using Blockcore.Networks; -namespace NBitcoin +namespace Blockcore.NBitcoin.Repository { public class InMemoryNoSqlRepository : NoSqlRepository { diff --git a/src/Blockcore/NBitcoin/Repository/NoSqlRepository.cs b/src/Blockcore/NBitcoin/Repository/NoSqlRepository.cs index 33ceaab43..7e0e76ba4 100644 --- a/src/Blockcore/NBitcoin/Repository/NoSqlRepository.cs +++ b/src/Blockcore/NBitcoin/Repository/NoSqlRepository.cs @@ -4,7 +4,7 @@ using System.Threading.Tasks; using Blockcore.Networks; -namespace NBitcoin +namespace Blockcore.NBitcoin.Repository { public abstract class NoSqlRepository { diff --git a/src/Blockcore/NBitcoin/Repository/NoSqlTransactionRepository.cs b/src/Blockcore/NBitcoin/Repository/NoSqlTransactionRepository.cs index 3287018fd..bfe58a133 100644 --- a/src/Blockcore/NBitcoin/Repository/NoSqlTransactionRepository.cs +++ b/src/Blockcore/NBitcoin/Repository/NoSqlTransactionRepository.cs @@ -3,7 +3,7 @@ using Blockcore.Consensus.TransactionInfo; using Blockcore.Networks; -namespace NBitcoin +namespace Blockcore.NBitcoin.Repository { public class NoSqlTransactionRepository : ITransactionRepository { diff --git a/src/Blockcore/NBitcoin/Sequence.cs b/src/Blockcore/NBitcoin/Sequence.cs index 4f62c96f7..cc46c6704 100644 --- a/src/Blockcore/NBitcoin/Sequence.cs +++ b/src/Blockcore/NBitcoin/Sequence.cs @@ -1,7 +1,7 @@ using System; using System.Text; -namespace NBitcoin +namespace Blockcore.NBitcoin { public enum SequenceLockType { diff --git a/src/Blockcore/NBitcoin/SequenceLock.cs b/src/Blockcore/NBitcoin/SequenceLock.cs index 74c3c3211..47edfeb1f 100644 --- a/src/Blockcore/NBitcoin/SequenceLock.cs +++ b/src/Blockcore/NBitcoin/SequenceLock.cs @@ -1,7 +1,7 @@ using System; using Blockcore.Consensus.Chain; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class SequenceLock { diff --git a/src/Blockcore/NBitcoin/Target.cs b/src/Blockcore/NBitcoin/Target.cs index 5f5e1beca..4edc0faeb 100644 --- a/src/Blockcore/NBitcoin/Target.cs +++ b/src/Blockcore/NBitcoin/Target.cs @@ -1,10 +1,9 @@ using System; -using System.Buffers; using System.Globalization; using System.Linq; -using NBitcoin.BouncyCastle.Math; +using Blockcore.NBitcoin.BouncyCastle.math; -namespace NBitcoin +namespace Blockcore.NBitcoin { /// /// Represent the challenge that miners must solve for finding a new block diff --git a/src/Blockcore/NBitcoin/UInt256.cs b/src/Blockcore/NBitcoin/UInt256.cs index 9e541a2e0..19e3164d6 100644 --- a/src/Blockcore/NBitcoin/UInt256.cs +++ b/src/Blockcore/NBitcoin/UInt256.cs @@ -2,9 +2,9 @@ using System.Linq; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -using NBitcoin.DataEncoders; +using Blockcore.NBitcoin.DataEncoders; -namespace NBitcoin +namespace Blockcore.NBitcoin { /// /// An implementation of uint256 based on https://github.com/MithrilMan/MithrilShards diff --git a/src/Blockcore/NBitcoin/UnsignedList.cs b/src/Blockcore/NBitcoin/UnsignedList.cs index a8ea65379..389c180e2 100644 --- a/src/Blockcore/NBitcoin/UnsignedList.cs +++ b/src/Blockcore/NBitcoin/UnsignedList.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using Blockcore.Consensus.TransactionInfo; -namespace NBitcoin +namespace Blockcore.NBitcoin { public class UnsignedList : List where T : IBitcoinSerializable, new() diff --git a/src/Blockcore/NBitcoin/Utils.cs b/src/Blockcore/NBitcoin/Utils.cs index 50c58162c..bdd3d1149 100644 --- a/src/Blockcore/NBitcoin/Utils.cs +++ b/src/Blockcore/NBitcoin/Utils.cs @@ -10,13 +10,14 @@ using System.Threading.Tasks; using Blockcore.Consensus.BlockInfo; using Blockcore.Interfaces; +using Blockcore.NBitcoin.BouncyCastle.math; +using Blockcore.NBitcoin.DataEncoders; +using Blockcore.NBitcoin.Protocol; using Blockcore.Networks; using Blockcore.P2P; -using NBitcoin.BouncyCastle.Math; -using NBitcoin.DataEncoders; -using NBitcoin.Protocol; +using NBitcoin; -namespace NBitcoin +namespace Blockcore.NBitcoin { public static class Extensions { @@ -366,7 +367,7 @@ private static void Write(MemoryStream ms, byte[] bytes) ms.Write(bytes, 0, bytes.Length); } - internal static Array BigIntegerToBytes(BigInteger b, int numBytes) + internal static byte[] BigIntegerToBytes(BigInteger b, int numBytes) { if (b == null) { diff --git a/src/Blockcore/Networks/Network.cs b/src/Blockcore/Networks/Network.cs index ffa573ade..10ef64834 100644 --- a/src/Blockcore/Networks/Network.cs +++ b/src/Blockcore/Networks/Network.cs @@ -3,15 +3,19 @@ using System.IO; using System.Linq; using System.Threading; +using Blockcore.Builder; using Blockcore.Consensus; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.Checkpoints; using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.BIP32; +using Blockcore.NBitcoin.BIP38; +using Blockcore.NBitcoin.DataEncoders; +using Blockcore.NBitcoin.Protocol; using Blockcore.P2P; using NBitcoin; -using NBitcoin.DataEncoders; -using NBitcoin.Protocol; namespace Blockcore.Networks { @@ -281,6 +285,11 @@ public byte[] MagicBytes /// public IStandardScriptsRegistry StandardScriptsRegistry { get; protected set; } + /// + /// Allow the DI to override services. + /// + public IFullNodeBuilderServiceOverride FullNodeBuilderServiceOverride { get; protected set; } + /// /// Mines a new genesis block, to use with a new network. /// Typically, 3 such genesis blocks need to be created when bootstrapping a new coin: for Main, Test and Reg networks. diff --git a/src/Blockcore/Networks/NetworkRegistration.cs b/src/Blockcore/Networks/NetworkRegistration.cs index 4ecbc62ab..56733f4fd 100644 --- a/src/Blockcore/Networks/NetworkRegistration.cs +++ b/src/Blockcore/Networks/NetworkRegistration.cs @@ -2,7 +2,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Networks { diff --git a/src/Blockcore/P2P/IPeerAddressManager.cs b/src/Blockcore/P2P/IPeerAddressManager.cs index 30b1eaf11..15e9960e2 100644 --- a/src/Blockcore/P2P/IPeerAddressManager.cs +++ b/src/Blockcore/P2P/IPeerAddressManager.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Net; using Blockcore.Configuration; -using NBitcoin; namespace Blockcore.P2P { diff --git a/src/Blockcore/P2P/IpExtensions.cs b/src/Blockcore/P2P/IpExtensions.cs index e73c70b6c..1462be926 100644 --- a/src/Blockcore/P2P/IpExtensions.cs +++ b/src/Blockcore/P2P/IpExtensions.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Net; using System.Net.Sockets; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P { diff --git a/src/Blockcore/P2P/Peer/INetworkPeer.cs b/src/Blockcore/P2P/Peer/INetworkPeer.cs index ff038d5d8..ef62d2b32 100644 --- a/src/Blockcore/P2P/Peer/INetworkPeer.cs +++ b/src/Blockcore/P2P/Peer/INetworkPeer.cs @@ -4,13 +4,12 @@ using System.Threading; using System.Threading.Tasks; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.Protocol; using Blockcore.Networks; using Blockcore.P2P.Protocol; using Blockcore.P2P.Protocol.Behaviors; using Blockcore.P2P.Protocol.Payloads; using Blockcore.Utilities; -using NBitcoin; -using NBitcoin.Protocol; namespace Blockcore.P2P.Peer { diff --git a/src/Blockcore/P2P/Peer/NetworkPeer.cs b/src/Blockcore/P2P/Peer/NetworkPeer.cs index 0cee324f6..715f91015 100644 --- a/src/Blockcore/P2P/Peer/NetworkPeer.cs +++ b/src/Blockcore/P2P/Peer/NetworkPeer.cs @@ -8,14 +8,13 @@ using Blockcore.AsyncWork; using Blockcore.Consensus.TransactionInfo; using Blockcore.EventBus.CoreEvents.Peer; +using Blockcore.NBitcoin.Protocol; using Blockcore.Networks; using Blockcore.P2P.Protocol; using Blockcore.P2P.Protocol.Behaviors; using Blockcore.P2P.Protocol.Payloads; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; -using NBitcoin.Protocol; namespace Blockcore.P2P.Peer { diff --git a/src/Blockcore/P2P/Peer/NetworkPeerCollection.cs b/src/Blockcore/P2P/Peer/NetworkPeerCollection.cs index a98008a13..ddfc0612d 100644 --- a/src/Blockcore/P2P/Peer/NetworkPeerCollection.cs +++ b/src/Blockcore/P2P/Peer/NetworkPeerCollection.cs @@ -4,7 +4,6 @@ using System.Net; using Blockcore.Utilities; using ConcurrentCollections; -using NBitcoin; namespace Blockcore.P2P.Peer { diff --git a/src/Blockcore/P2P/Peer/NetworkPeerConnection.cs b/src/Blockcore/P2P/Peer/NetworkPeerConnection.cs index 9213c63b5..5576ca995 100644 --- a/src/Blockcore/P2P/Peer/NetworkPeerConnection.cs +++ b/src/Blockcore/P2P/Peer/NetworkPeerConnection.cs @@ -6,14 +6,14 @@ using System.Threading.Tasks; using Blockcore.AsyncWork; using Blockcore.EventBus.CoreEvents.Peer; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.Protocol; using Blockcore.Networks; using Blockcore.P2P.Protocol; using Blockcore.P2P.Protocol.Payloads; using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; -using NBitcoin.Protocol; namespace Blockcore.P2P.Peer { diff --git a/src/Blockcore/P2P/Peer/NetworkPeerConnectionParameters.cs b/src/Blockcore/P2P/Peer/NetworkPeerConnectionParameters.cs index 9ac48756b..53c5217a1 100644 --- a/src/Blockcore/P2P/Peer/NetworkPeerConnectionParameters.cs +++ b/src/Blockcore/P2P/Peer/NetworkPeerConnectionParameters.cs @@ -4,11 +4,11 @@ using System.Runtime.InteropServices; using System.Threading; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.Protocol; using Blockcore.Networks; using Blockcore.P2P.Protocol.Behaviors; using Blockcore.P2P.Protocol.Payloads; -using NBitcoin; -using NBitcoin.Protocol; namespace Blockcore.P2P.Peer { diff --git a/src/Blockcore/P2P/Peer/NetworkPeerFactory.cs b/src/Blockcore/P2P/Peer/NetworkPeerFactory.cs index 01643a75e..d729e02ae 100644 --- a/src/Blockcore/P2P/Peer/NetworkPeerFactory.cs +++ b/src/Blockcore/P2P/Peer/NetworkPeerFactory.cs @@ -6,13 +6,12 @@ using Blockcore.AsyncWork; using Blockcore.Configuration.Settings; using Blockcore.Interfaces; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.P2P.Protocol; using Blockcore.P2P.Protocol.Payloads; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; -using NBitcoin.Protocol; namespace Blockcore.P2P.Peer { diff --git a/src/Blockcore/P2P/Peer/NetworkPeerServer.cs b/src/Blockcore/P2P/Peer/NetworkPeerServer.cs index a001444cc..0b82207fd 100644 --- a/src/Blockcore/P2P/Peer/NetworkPeerServer.cs +++ b/src/Blockcore/P2P/Peer/NetworkPeerServer.cs @@ -8,13 +8,12 @@ using Blockcore.Configuration.Settings; using Blockcore.EventBus.CoreEvents.Peer; using Blockcore.Interfaces; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.Signals; using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; -using NBitcoin.Protocol; namespace Blockcore.P2P.Peer { diff --git a/src/Blockcore/P2P/PeerAddressManager.cs b/src/Blockcore/P2P/PeerAddressManager.cs index 51d78fea6..389a5bdb0 100644 --- a/src/Blockcore/P2P/PeerAddressManager.cs +++ b/src/Blockcore/P2P/PeerAddressManager.cs @@ -7,7 +7,6 @@ using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.P2P { diff --git a/src/Blockcore/P2P/PeerAddressManagerBehaviour.cs b/src/Blockcore/P2P/PeerAddressManagerBehaviour.cs index 57c56344e..071d99b17 100644 --- a/src/Blockcore/P2P/PeerAddressManagerBehaviour.cs +++ b/src/Blockcore/P2P/PeerAddressManagerBehaviour.cs @@ -4,6 +4,7 @@ using System.Net; using System.Threading.Tasks; using Blockcore.Connection; +using Blockcore.NBitcoin.Protocol; using Blockcore.P2P.Peer; using Blockcore.P2P.Protocol; using Blockcore.P2P.Protocol.Behaviors; @@ -11,7 +12,6 @@ using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin.Protocol; namespace Blockcore.P2P { diff --git a/src/Blockcore/P2P/PeerConnector.cs b/src/Blockcore/P2P/PeerConnector.cs index 5a3f324a2..5b9cc2b43 100644 --- a/src/Blockcore/P2P/PeerConnector.cs +++ b/src/Blockcore/P2P/PeerConnector.cs @@ -12,7 +12,6 @@ using Blockcore.P2P.Peer; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.P2P { diff --git a/src/Blockcore/P2P/PeerConnectorAddNode.cs b/src/Blockcore/P2P/PeerConnectorAddNode.cs index 82077124d..40e3a8d6e 100644 --- a/src/Blockcore/P2P/PeerConnectorAddNode.cs +++ b/src/Blockcore/P2P/PeerConnectorAddNode.cs @@ -11,7 +11,6 @@ using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.P2P { diff --git a/src/Blockcore/P2P/PeerConnectorConnect.cs b/src/Blockcore/P2P/PeerConnectorConnect.cs index 8261f6eb2..294f1e97b 100644 --- a/src/Blockcore/P2P/PeerConnectorConnect.cs +++ b/src/Blockcore/P2P/PeerConnectorConnect.cs @@ -11,7 +11,6 @@ using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.P2P { diff --git a/src/Blockcore/P2P/PeerConnectorDiscovery.cs b/src/Blockcore/P2P/PeerConnectorDiscovery.cs index d5540bea6..7da632d87 100644 --- a/src/Blockcore/P2P/PeerConnectorDiscovery.cs +++ b/src/Blockcore/P2P/PeerConnectorDiscovery.cs @@ -9,7 +9,6 @@ using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.P2P { diff --git a/src/Blockcore/P2P/PeerDiscoveryLoop.cs b/src/Blockcore/P2P/PeerDiscoveryLoop.cs index 3537e4d65..7461ad781 100644 --- a/src/Blockcore/P2P/PeerDiscoveryLoop.cs +++ b/src/Blockcore/P2P/PeerDiscoveryLoop.cs @@ -7,12 +7,12 @@ using Blockcore.AsyncWork; using Blockcore.Configuration; using Blockcore.Connection; +using Blockcore.NBitcoin; using Blockcore.Networks; using Blockcore.P2P.Peer; using Blockcore.Utilities; using Blockcore.Utilities.Extensions; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.P2P { diff --git a/src/Blockcore/P2P/Protocol/Behaviors/EnforcePeerVersionCheckBehavior.cs b/src/Blockcore/P2P/Protocol/Behaviors/EnforcePeerVersionCheckBehavior.cs index 1fa25ecfb..ff1329ac8 100644 --- a/src/Blockcore/P2P/Protocol/Behaviors/EnforcePeerVersionCheckBehavior.cs +++ b/src/Blockcore/P2P/Protocol/Behaviors/EnforcePeerVersionCheckBehavior.cs @@ -5,7 +5,6 @@ using Blockcore.P2P.Peer; using Blockcore.Utilities; using Microsoft.Extensions.Logging; -using NBitcoin; namespace Blockcore.P2P.Protocol.Behaviors { diff --git a/src/Blockcore/P2P/Protocol/InventoryVector.cs b/src/Blockcore/P2P/Protocol/InventoryVector.cs index f6eadd68a..2fc11892d 100644 --- a/src/Blockcore/P2P/Protocol/InventoryVector.cs +++ b/src/Blockcore/P2P/Protocol/InventoryVector.cs @@ -1,5 +1,5 @@ -using Blockcore.P2P.Protocol.Payloads; -using NBitcoin; +using Blockcore.NBitcoin; +using Blockcore.P2P.Protocol.Payloads; namespace Blockcore.P2P.Protocol { diff --git a/src/Blockcore/P2P/Protocol/Message.cs b/src/Blockcore/P2P/Protocol/Message.cs index cd4d99404..7bb85d2a9 100644 --- a/src/Blockcore/P2P/Protocol/Message.cs +++ b/src/Blockcore/P2P/Protocol/Message.cs @@ -3,12 +3,12 @@ using System.IO; using System.Threading; using Blockcore.Consensus; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.Crypto; +using Blockcore.NBitcoin.DataEncoders; +using Blockcore.NBitcoin.Protocol; using Blockcore.Networks; using Blockcore.P2P.Protocol.Payloads; -using NBitcoin; -using NBitcoin.Crypto; -using NBitcoin.DataEncoders; -using NBitcoin.Protocol; namespace Blockcore.P2P.Protocol { diff --git a/src/Blockcore/P2P/Protocol/Payloads/AddrPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/AddrPayload.cs index f9fea059d..87da2bd7a 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/AddrPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/AddrPayload.cs @@ -1,6 +1,6 @@ using System.Linq; -using NBitcoin; -using NBitcoin.Protocol; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.Protocol; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/BitcoinSerializablePayload.cs b/src/Blockcore/P2P/Protocol/Payloads/BitcoinSerializablePayload.cs index 1f6814b09..4f5b629cd 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/BitcoinSerializablePayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/BitcoinSerializablePayload.cs @@ -1,4 +1,4 @@ -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/BlockPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/BlockPayload.cs index 855235b4b..7fde10916 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/BlockPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/BlockPayload.cs @@ -1,5 +1,4 @@ using Blockcore.Consensus.BlockInfo; -using NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/GetBlocksPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/GetBlocksPayload.cs index 4fdfd3854..a7dce9f89 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/GetBlocksPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/GetBlocksPayload.cs @@ -1,5 +1,4 @@ -using NBitcoin; -using NBitcoin.Protocol; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/GetDataPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/GetDataPayload.cs index 5a4996c54..aa4ddd41f 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/GetDataPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/GetDataPayload.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/GetHeadersPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/GetHeadersPayload.cs index 78657c9ce..9dd6ed491 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/GetHeadersPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/GetHeadersPayload.cs @@ -1,5 +1,4 @@ -using NBitcoin; -using NBitcoin.Protocol; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/GetProvenHeadersPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/GetProvenHeadersPayload.cs index 572cfd8e6..376193c0c 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/GetProvenHeadersPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/GetProvenHeadersPayload.cs @@ -1,4 +1,4 @@ -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/HeadersPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/HeadersPayload.cs index 129bf382f..af62eb1ae 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/HeadersPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/HeadersPayload.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.Linq; using Blockcore.Consensus.BlockInfo; -using NBitcoin; -using NBitcoin.Protocol; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.Protocol; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/InvPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/InvPayload.cs index 4623150e7..4878e02c0 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/InvPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/InvPayload.cs @@ -2,7 +2,7 @@ using System.Linq; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/NotFoundPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/NotFoundPayload.cs index 82ab15eaf..f82b42bc4 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/NotFoundPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/NotFoundPayload.cs @@ -2,7 +2,7 @@ using System.Linq; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/Payload.cs b/src/Blockcore/P2P/Protocol/Payloads/Payload.cs index 92824d863..a3ec2165e 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/Payload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/Payload.cs @@ -1,5 +1,5 @@ using System.Reflection; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/PingPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/PingPayload.cs index 2c617ff8b..187cfcc11 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/PingPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/PingPayload.cs @@ -1,4 +1,4 @@ -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/PongPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/PongPayload.cs index 4e4b4dc4b..f4b0885ae 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/PongPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/PongPayload.cs @@ -1,4 +1,4 @@ -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/ProvenHeadersPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/ProvenHeadersPayload.cs index b8e284288..49f761247 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/ProvenHeadersPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/ProvenHeadersPayload.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; using Blockcore.Consensus.BlockInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/RejectPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/RejectPayload.cs index 31d066860..1338d156e 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/RejectPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/RejectPayload.cs @@ -1,7 +1,7 @@ -using NBitcoin; -using NBitcoin.DataEncoders; -using NBitcoin.Protocol; -using uint256 = NBitcoin.uint256; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.DataEncoders; +using Blockcore.NBitcoin.Protocol; +using uint256 = Blockcore.NBitcoin.uint256; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/TxPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/TxPayload.cs index b9383b2cd..0da02e0d5 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/TxPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/TxPayload.cs @@ -1,5 +1,4 @@ using Blockcore.Consensus.TransactionInfo; -using NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/UnknowPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/UnknowPayload.cs index a86ac9afd..772512a8a 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/UnknowPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/UnknowPayload.cs @@ -1,4 +1,4 @@ -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/VerAckPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/VerAckPayload.cs index 748c647eb..a9deecebe 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/VerAckPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/VerAckPayload.cs @@ -1,4 +1,4 @@ -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/P2P/Protocol/Payloads/VersionPayload.cs b/src/Blockcore/P2P/Protocol/Payloads/VersionPayload.cs index 31e2c82ad..082183885 100644 --- a/src/Blockcore/P2P/Protocol/Payloads/VersionPayload.cs +++ b/src/Blockcore/P2P/Protocol/Payloads/VersionPayload.cs @@ -1,9 +1,9 @@ using System; using System.Net; using System.Reflection; -using NBitcoin; -using NBitcoin.DataEncoders; -using NBitcoin.Protocol; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.DataEncoders; +using Blockcore.NBitcoin.Protocol; namespace Blockcore.P2P.Protocol.Payloads { diff --git a/src/Blockcore/Utilities/DataStoreSerializer.cs b/src/Blockcore/Utilities/DataStoreSerializer.cs index 362d24b68..41da454be 100644 --- a/src/Blockcore/Utilities/DataStoreSerializer.cs +++ b/src/Blockcore/Utilities/DataStoreSerializer.cs @@ -4,8 +4,8 @@ using Blockcore.Consensus; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; using DBreeze.Utils; -using NBitcoin; namespace Blockcore.Utilities { diff --git a/src/Blockcore/Utilities/Extensions/BlockExtensions.cs b/src/Blockcore/Utilities/Extensions/BlockExtensions.cs index 670368b93..be97600d2 100644 --- a/src/Blockcore/Utilities/Extensions/BlockExtensions.cs +++ b/src/Blockcore/Utilities/Extensions/BlockExtensions.cs @@ -2,7 +2,7 @@ using Blockcore.Consensus; using Blockcore.Consensus.BlockInfo; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Utilities.Extensions { diff --git a/src/Blockcore/Utilities/Extensions/IPExtensions.cs b/src/Blockcore/Utilities/Extensions/IPExtensions.cs index acdab4ccc..4f9a8c7c0 100644 --- a/src/Blockcore/Utilities/Extensions/IPExtensions.cs +++ b/src/Blockcore/Utilities/Extensions/IPExtensions.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Linq; using System.Net; +using Blockcore.NBitcoin; using Blockcore.P2P; using NBitcoin; -using NBitcoin.Protocol; namespace Blockcore.Utilities.Extensions { diff --git a/src/Blockcore/Utilities/Guard.cs b/src/Blockcore/Utilities/Guard.cs index 8c29ee87b..ce1a531cb 100644 --- a/src/Blockcore/Utilities/Guard.cs +++ b/src/Blockcore/Utilities/Guard.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics.CodeAnalysis; namespace Blockcore.Utilities { @@ -29,7 +30,7 @@ public static void Assert(bool condition) /// The name of the object. /// The object if it is not null. /// An exception if the object passed is null. - public static T NotNull(T value, string parameterName) + public static T NotNull([NotNull] T value, string parameterName) { // the parameterName should never be null or empty if (string.IsNullOrWhiteSpace(parameterName)) diff --git a/src/Blockcore/Utilities/HashHeightPair.cs b/src/Blockcore/Utilities/HashHeightPair.cs index bfc71a1e1..a95b7f1d3 100644 --- a/src/Blockcore/Utilities/HashHeightPair.cs +++ b/src/Blockcore/Utilities/HashHeightPair.cs @@ -1,7 +1,7 @@ using System; using Blockcore.Consensus; using Blockcore.Consensus.Chain; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Utilities { diff --git a/src/Blockcore/Utilities/IpHelper.cs b/src/Blockcore/Utilities/IpHelper.cs index 28a7b80a3..514a90ec2 100644 --- a/src/Blockcore/Utilities/IpHelper.cs +++ b/src/Blockcore/Utilities/IpHelper.cs @@ -1,7 +1,7 @@ using System.Linq; using System.Net; using System.Net.Sockets; -using NBitcoin; +using Blockcore.NBitcoin; namespace Blockcore.Utilities { diff --git a/src/Blockcore/Utilities/JsonConverters/AssetIdJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/AssetIdJsonConverter.cs index 8fbc89708..352d28a95 100644 --- a/src/Blockcore/Utilities/JsonConverters/AssetIdJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/AssetIdJsonConverter.cs @@ -1,8 +1,7 @@ using System; using System.Reflection; +using Blockcore.NBitcoin.OpenAsset; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.OpenAsset; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/BitcoinSerializableJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/BitcoinSerializableJsonConverter.cs index c1520baaa..b4e8dd7f0 100644 --- a/src/Blockcore/Utilities/JsonConverters/BitcoinSerializableJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/BitcoinSerializableJsonConverter.cs @@ -1,8 +1,8 @@ using System; using System.IO; using System.Reflection; -using NBitcoin; -using NBitcoin.DataEncoders; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.DataEncoders; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/BitcoinStringJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/BitcoinStringJsonConverter.cs index eac1492c3..e4639f15d 100644 --- a/src/Blockcore/Utilities/JsonConverters/BitcoinStringJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/BitcoinStringJsonConverter.cs @@ -1,7 +1,7 @@ using System; using System.Reflection; +using Blockcore.NBitcoin; using Blockcore.Networks; -using NBitcoin; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/CoinJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/CoinJsonConverter.cs index 332604143..7a2812c0e 100644 --- a/src/Blockcore/Utilities/JsonConverters/CoinJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/CoinJsonConverter.cs @@ -2,9 +2,9 @@ using System.Reflection; using Blockcore.Consensus.ScriptInfo; using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.OpenAsset; using Blockcore.Networks; -using NBitcoin; -using NBitcoin.OpenAsset; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/DateTimeToUnixTimeConverter.cs b/src/Blockcore/Utilities/JsonConverters/DateTimeToUnixTimeConverter.cs index 59b0337af..5d4239f2c 100644 --- a/src/Blockcore/Utilities/JsonConverters/DateTimeToUnixTimeConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/DateTimeToUnixTimeConverter.cs @@ -1,6 +1,6 @@ using System; using System.Reflection; -using NBitcoin; +using Blockcore.NBitcoin; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/HexJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/HexJsonConverter.cs index f5301506f..87bbd5ebb 100644 --- a/src/Blockcore/Utilities/JsonConverters/HexJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/HexJsonConverter.cs @@ -1,5 +1,5 @@ using System; -using NBitcoin.DataEncoders; +using Blockcore.NBitcoin.DataEncoders; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/KeyJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/KeyJsonConverter.cs index b57ad5080..f9084e08e 100644 --- a/src/Blockcore/Utilities/JsonConverters/KeyJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/KeyJsonConverter.cs @@ -1,7 +1,7 @@ using System; using System.IO; -using NBitcoin; -using NBitcoin.DataEncoders; +using Blockcore.NBitcoin; +using Blockcore.NBitcoin.DataEncoders; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/KeyPathJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/KeyPathJsonConverter.cs index 1feedee14..f20c44dc5 100644 --- a/src/Blockcore/Utilities/JsonConverters/KeyPathJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/KeyPathJsonConverter.cs @@ -1,6 +1,6 @@ using System; using System.Reflection; -using NBitcoin; +using Blockcore.NBitcoin.BIP32; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/LockTimeJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/LockTimeJsonConverter.cs index c9d8cba34..bd657bb10 100644 --- a/src/Blockcore/Utilities/JsonConverters/LockTimeJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/LockTimeJsonConverter.cs @@ -1,5 +1,5 @@ using System; -using NBitcoin; +using Blockcore.NBitcoin; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/MoneyJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/MoneyJsonConverter.cs index 1fb8ac23b..5cf1cdcb1 100644 --- a/src/Blockcore/Utilities/JsonConverters/MoneyJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/MoneyJsonConverter.cs @@ -1,6 +1,6 @@ using System; using System.Reflection; -using NBitcoin; +using Blockcore.NBitcoin; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/NetworkConverter.cs b/src/Blockcore/Utilities/JsonConverters/NetworkConverter.cs index 5831aa3c9..767d5deef 100644 --- a/src/Blockcore/Utilities/JsonConverters/NetworkConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/NetworkConverter.cs @@ -1,6 +1,5 @@ using System; using Blockcore.Networks; -using NBitcoin; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/NetworkJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/NetworkJsonConverter.cs index e38cca1df..6171427a8 100644 --- a/src/Blockcore/Utilities/JsonConverters/NetworkJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/NetworkJsonConverter.cs @@ -1,7 +1,6 @@ using System; using System.Reflection; using Blockcore.Networks; -using NBitcoin; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/OutpointJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/OutpointJsonConverter.cs index dd2c4f36d..6a80be53f 100644 --- a/src/Blockcore/Utilities/JsonConverters/OutpointJsonConverter.cs +++ b/src/Blockcore/Utilities/JsonConverters/OutpointJsonConverter.cs @@ -1,7 +1,6 @@ using System; using System.IO; using Blockcore.Consensus.TransactionInfo; -using NBitcoin; using Newtonsoft.Json; namespace Blockcore.Utilities.JsonConverters diff --git a/src/Blockcore/Utilities/JsonConverters/ScriptCollectionJsonConverter.cs b/src/Blockcore/Utilities/JsonConverters/ScriptCollectionJsonConverter.cs new file mode 100644 index 000000000..9676e53e2 --- /dev/null +++ b/src/Blockcore/Utilities/JsonConverters/ScriptCollectionJsonConverter.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Blockcore.Consensus.ScriptInfo; +using Blockcore.Consensus.TransactionInfo; +using Blockcore.NBitcoin.DataEncoders; +using Newtonsoft.Json; + +namespace Blockcore.Utilities.JsonConverters +{ + /// + /// Converter used to convert a or a to and from JSON. + /// + /// + public class ScriptCollectionJsonConverter : JsonConverter + { + /// + public override bool CanConvert(Type objectType) + { + return objectType == typeof(ICollection