-
Notifications
You must be signed in to change notification settings - Fork 174
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build, crypto, script: remove most of OpenSSL usage #2705
Conversation
Mostly sourced from crypto/fips/module/md5/ at `6d3db84c47643271cb553593ee67362be3820874`.
I like where this is going. On the disallowed ops, is this technically a mandatory to deprecate script code? How do we know those op codes are not in use? |
The disallowed ops are unconditionally rejected here, so all nodes already reject scripts with any of them present at any block height already: Gridcoin-Research/src/script.cpp Lines 364 to 379 in 7548e6c
The main issue with this PR currently is that the CBigNum -> arith_uint256 changes to staking calculations break sync for PoS blocks at some point. I thought everything was limited to 2^256 but I'll re-check to see what broke. |
While a non-weighted stake target hash can fit 236-bit integers[0], the multiplication by the 64-bit stake can cause the weighted target hash to go up to 300-bits. While I think this would have been better fixed by lowering the stake target hash limit to be 192-bit so that the weighted target hash fits 256-bit, this would break consensus and there are already blocks that require weighted target hashes higher than 2**256 to verify. The existing blob_int class requires bits which are multiples of 32, so 320 is used. [0] - src/gridcoin/staking/difficulty.cpp:24 # The PROOF_OF_STAKE_LIMIT is set to uint256 maximum right shifted by 20 resulting in a 236-bit limit. That's enforced by the GRC::GetNextTargetRequired function which is used to generate the nBits of blocks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm... how did this work before? I don't think we used 300+ bit integers in the original implementation...
@jamescowens Pre f7c13be, CBigNum which used OpenSSL's unbounded BIGNUM was used. |
Ah yes... |
Hmm... ` asm = x86_64 valgrind = yes Options used to compile and link: target os = linux CC = /usr/bin/ccache gcc-12 CXX test/test_test_gridcoin-serialize_tests.o |
Looks like the c source file for md5 is not being compiled with PIE flag. |
I have successfully synced from zero on testnet. The CPID detection is broken with a researcher node. With this PR coming up as investor. This probably has something to do with the MD5. Need to track that down. |
Also successfully synced from zero on mainnet. |
Confirmed the Cpid::Hash is not working correctly. Current testnet branch... This PR: |
The lack of bit shifts caused the upper bytes to be interpreted as zero, after the implicit cast to uint8_t.
Since the system OpenSSL is also linked currently, that can take precedence over the vendored MD5.
Avoiding conflicts with OpenSSL.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tACK
Added - contrib: add nix file for compilation environment gridcoin-community#2660 (@div72) - gui: Make main Gridcoin window geometry save unique to datadir location gridcoin-community#2661 (@jamescowens) - build: Initial CMake support gridcoin-community#2676 (@CyberTailor) - util: Add `-shutdownnotify` and `startupnotify` options from upstream gridcoin-community#2688 (@barton2526) - gui, staking: Implement facilities for mandatory sidestakes and sidestake GUI gridcoin-community#2704 (@jamescowens) - gui, voting: Implement poll result caching and poll stale indicator gridcoin-community#2709 (@jamescowens) - gui, projects: Implement greylist state for projects in GUI projects table gridcoin-community#2715 (@jamescowens) - gui, poll: Implement poll expiration reminders gridcoin-community#2716 (@jamescowens) - serialize: allow variants to be serialized gridcoin-community#2729 (@div72) - gui: Implement poll field length limiters in GUI forms gridcoin-community#2742 (@jamescowens) Changed - consensus, contract, scraper, protocol, project, beacon, rpc: Replace remaining appcache sections with native structures gridcoin-community#2639 (@jamescowens) - build: update libsecp256k1 to v0.3.0 gridcoin-community#2655 (@div72) - build: Replace $(AT) with .SILENT gridcoin-community#2674 (@barton2526) - build: allow system bdb gridcoin-community#2675 (@div72) - Resize Header Column with Additional Text gridcoin-community#2683 (@PrestackI) - rpc: use RPCErrorCode everywhere gridcoin-community#2687 (@Pythonix) - wallet: SecureString to allow null characters gridcoin-community#2690 (@barton2526) - random: port some upstream changes gridcoin-community#2696 (@div72) - depends: Bump dependencies gridcoin-community#2692 (@barton2526) - doc: Update link to Discord server gridcoin-community#2693 (@adriaanjoubert) - rpc: Change capitalization, remove whitespace of rpc keys gridcoin-community#2711 (@Pythonix) - ci: bump MacOS version to 12 gridcoin-community#2713 (@div72) - depends: no-longer nuke libc++abi.so* in native_clang package gridcoin-community#2719 (@div72) - doc: update windows `-fstack-clash-protection` doc gridcoin-community#2720 (@div72) - Silence `-Wcast-function-type` warning gridcoin-community#2721 (@div72) - build: Use newest `config.{guess,sub}` available gridcoin-community#2722 (@div72) - refactor: use the try_lock result in TryEnter gridcoin-community#2723 (@div72) - Updates for file src/qt/locale/bitcoin_en.ts in pt_PT gridcoin-community#2726 (@gridcoin-community) - ci: do not silently fail gridcoin-community#2727 (@div72) - Properly include Boost Array header gridcoin-community#2730 (@theMarix) - build: Update depends zlib to 1.3.1 gridcoin-community#2734 (@jamescowens) - util: Enhance Fraction class overflow resistance gridcoin-community#2735 (@jamescowens) - refactor: Fix compilation warnings gridcoin-community#2737 (@jamescowens) - gui, util: Improve upgrade dialog gridcoin-community#2738 (@jamescowens) - util: Improve allocation class gridcoin-community#2740 (@jamescowens) - translations: translation updates for Miss Piggy release gridcoin-community#2745 (@jamescowens) Removed - gui: Disable snapshot GUI action gridcoin-community#2700 (@jamescowens) - build, crypto, script: remove most of OpenSSL usage gridcoin-community#2705 (@div72) - util: remove WSL 1 workaround in fs gridcoin-community#2717 (@div72) Fixed - diagnostics: fix missing arg in ETTS warning gridcoin-community#2684 (@div72) - misc: fix include guard in netaddress.h gridcoin-community#2695 (@div72) - gui: Fix expired pending beacon display gridcoin-community#2698 (@jamescowens) - consensus: Fix 20230904 testnet forking issue gridcoin-community#2703 (@jamescowens) - gui: Fix filter by type in Transaction View gridcoin-community#2708 (@jamescowens) - depends: make fontconfig build under clang-16 gridcoin-community#2718 (@div72) - diag: fix researcher mode check gridcoin-community#2725 (@div72) - gui: Add missing switch cases for ALREADY_IN_MEMPOOL gridcoin-community#2728 (@jamescowens) - beacon, registry: Fix beacon history stall gridcoin-community#2731 (@jamescowens) - build: Implement comp_double comparison function in certain tests gridcoin-community#2741 (@jamescowens) - ci: change Qt path in CMake CI gridcoin-community#2743 (@div72) - net: Correct -tor argument handling gridcoin-community#2744 (@jamescowens)
Removes all non-trivial usages of OpenSSL except in
src/crypter.*
.