diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index dacb0a3f4..000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,105 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -#### Added - - New module `ellswift` implements ElligatorSwift encoding for public keys and x-only Diffie-Hellman key exchange for them. - ElligatorSwift permits representing secp256k1 public keys as 64-byte arrays which cannot be distinguished from uniformly random. See: - - Header file `include/secp256k1_ellswift.h` which defines the new API. - - Document `doc/ellswift.md` which explains the mathematical background of the scheme. - - The [paper](https://eprint.iacr.org/2022/759) on which the scheme is based. - -#### Changed - - When consuming libsecp256k1 as a static library on Windows, the user must now define the `SECP256K1_STATIC` macro before including `secp256k1.h`. - -## [0.3.2] - 2023-05-13 -We strongly recommend updating to 0.3.2 if you use or plan to use GCC >=13 to compile libsecp256k1. When in doubt, check the GCC version using `gcc -v`. - -#### Security - - Module `ecdh`: Fix "constant-timeness" issue with GCC 13.1 (and potentially future versions of GCC) that could leave applications using libsecp256k1's ECDH module vulnerable to a timing side-channel attack. The fix avoids secret-dependent control flow during ECDH computations when libsecp256k1 is compiled with GCC 13.1. - -#### Fixed - - Fixed an old bug that permitted compilers to potentially output bad assembly code on x86_64. In theory, it could lead to a crash or a read of unrelated memory, but this has never been observed on any compilers so far. - -#### Changed - - Various improvements and changes to CMake builds. CMake builds remain experimental. - - Made API versioning consistent with GNU Autotools builds. - - Switched to `BUILD_SHARED_LIBS` variable for controlling whether to build a static or a shared library. - - Added `SECP256K1_INSTALL` variable for the controlling whether to install the build artefacts. - - Renamed asm build option `arm` to `arm32`. Use `--with-asm=arm32` instead of `--with-asm=arm` (GNU Autotools), and `-DSECP256K1_ASM=arm32` instead of `-DSECP256K1_ASM=arm` (CMake). - -#### ABI Compatibility -The ABI is compatible with versions 0.3.0 and 0.3.1. - -## [0.3.1] - 2023-04-10 -We strongly recommend updating to 0.3.1 if you use or plan to use Clang >=14 to compile libsecp256k1, e.g., Xcode >=14 on macOS has Clang >=14. When in doubt, check the Clang version using `clang -v`. - -#### Security - - Fix "constant-timeness" issue with Clang >=14 that could leave applications using libsecp256k1 vulnerable to a timing side-channel attack. The fix avoids secret-dependent control flow and secret-dependent memory accesses in conditional moves of memory objects when libsecp256k1 is compiled with Clang >=14. - -#### Added - - Added tests against [Project Wycheproof's](https://github.com/google/wycheproof/) set of ECDSA test vectors (Bitcoin "low-S" variant), a fixed set of test cases designed to trigger various edge cases. - -#### Changed - - Increased minimum required CMake version to 3.13. CMake builds remain experimental. - -#### ABI Compatibility -The ABI is compatible with version 0.3.0. - -## [0.3.0] - 2023-03-08 - -#### Added - - Added experimental support for CMake builds. Traditional GNU Autotools builds (`./configure` and `make`) remain fully supported. - - Usage examples: Added a recommended method for securely clearing sensitive data, e.g., secret keys, from memory. - - Tests: Added a new test binary `noverify_tests`. This binary runs the tests without some additional checks present in the ordinary `tests` binary and is thereby closer to production binaries. The `noverify_tests` binary is automatically run as part of the `make check` target. - -#### Fixed - - Fixed declarations of API variables for MSVC (`__declspec(dllimport)`). This fixes MSVC builds of programs which link against a libsecp256k1 DLL dynamically and use API variables (and not only API functions). Unfortunately, the MSVC linker now will emit warning `LNK4217` when trying to link against libsecp256k1 statically. Pass `/ignore:4217` to the linker to suppress this warning. - -#### Changed - - Forbade cloning or destroying `secp256k1_context_static`. Create a new context instead of cloning the static context. (If this change breaks your code, your code is probably wrong.) - - Forbade randomizing (copies of) `secp256k1_context_static`. Randomizing a copy of `secp256k1_context_static` did not have any effect and did not provide defense-in-depth protection against side-channel attacks. Create a new context if you want to benefit from randomization. - -#### Removed - - Removed the configuration header `src/libsecp256k1-config.h`. We recommend passing flags to `./configure` or `cmake` to set configuration options (see `./configure --help` or `cmake -LH`). If you cannot or do not want to use one of the supported build systems, pass configuration flags such as `-DSECP256K1_ENABLE_MODULE_SCHNORRSIG` manually to the compiler (see the file `configure.ac` for supported flags). - -#### ABI Compatibility -Due to changes in the API regarding `secp256k1_context_static` described above, the ABI is *not* compatible with previous versions. - -## [0.2.0] - 2022-12-12 - -#### Added - - Added usage examples for common use cases in a new `examples/` directory. - - Added `secp256k1_selftest`, to be used in conjunction with `secp256k1_context_static`. - - Added support for 128-bit wide multiplication on MSVC for x86_64 and arm64, giving roughly a 20% speedup on those platforms. - -#### Changed - - Enabled modules `schnorrsig`, `extrakeys` and `ecdh` by default in `./configure`. - - The `secp256k1_nonce_function_rfc6979` nonce function, used by default by `secp256k1_ecdsa_sign`, now reduces the message hash modulo the group order to match the specification. This only affects improper use of ECDSA signing API. - -#### Deprecated - - Deprecated context flags `SECP256K1_CONTEXT_VERIFY` and `SECP256K1_CONTEXT_SIGN`. Use `SECP256K1_CONTEXT_NONE` instead. - - Renamed `secp256k1_context_no_precomp` to `secp256k1_context_static`. - - Module `schnorrsig`: renamed `secp256k1_schnorrsig_sign` to `secp256k1_schnorrsig_sign32`. - -#### ABI Compatibility -Since this is the first release, we do not compare application binary interfaces. -However, there are earlier unreleased versions of libsecp256k1 that are *not* ABI compatible with this version. - -## [0.1.0] - 2013-03-05 to 2021-12-25 - -This version was in fact never released. -The number was given by the build system since the introduction of autotools in Jan 2014 (ea0fe5a5bf0c04f9cc955b2966b614f5f378c6f6). -Therefore, this version number does not uniquely identify a set of source files. - -[unreleased]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.2...HEAD -[0.3.2]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.1...v0.3.2 -[0.3.1]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/bitcoin-core/secp256k1/compare/v0.2.0...v0.3.0 -[0.2.0]: https://github.com/bitcoin-core/secp256k1/compare/423b6d19d373f1224fd671a982584d7e7900bc93..v0.2.0 -[0.1.0]: https://github.com/bitcoin-core/secp256k1/commit/423b6d19d373f1224fd671a982584d7e7900bc93 diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 3107eb3bf..000000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,341 +0,0 @@ -cmake_minimum_required(VERSION 3.13) - -if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.15) - # MSVC runtime library flags are selected by the CMAKE_MSVC_RUNTIME_LIBRARY abstraction. - cmake_policy(SET CMP0091 NEW) - # MSVC warning flags are not in CMAKE__FLAGS by default. - cmake_policy(SET CMP0092 NEW) -endif() - -project(libsecp256k1 - # The package (a.k.a. release) version is based on semantic versioning 2.0.0 of - # the API. All changes in experimental modules are treated as - # backwards-compatible and therefore at most increase the minor version. - VERSION 0.3.3 - DESCRIPTION "Optimized C library for ECDSA signatures and secret/public key operations on curve secp256k1." - HOMEPAGE_URL "https://github.com/bitcoin-core/secp256k1" - LANGUAGES C -) - -if(CMAKE_VERSION VERSION_LESS 3.21) - get_directory_property(parent_directory PARENT_DIRECTORY) - if(parent_directory) - set(PROJECT_IS_TOP_LEVEL OFF CACHE INTERNAL "Emulates CMake 3.21+ behavior.") - set(${PROJECT_NAME}_IS_TOP_LEVEL OFF CACHE INTERNAL "Emulates CMake 3.21+ behavior.") - else() - set(PROJECT_IS_TOP_LEVEL ON CACHE INTERNAL "Emulates CMake 3.21+ behavior.") - set(${PROJECT_NAME}_IS_TOP_LEVEL ON CACHE INTERNAL "Emulates CMake 3.21+ behavior.") - endif() - unset(parent_directory) -endif() - -# The library version is based on libtool versioning of the ABI. The set of -# rules for updating the version can be found here: -# https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -# All changes in experimental modules are treated as if they don't affect the -# interface and therefore only increase the revision. -set(${PROJECT_NAME}_LIB_VERSION_CURRENT 2) -set(${PROJECT_NAME}_LIB_VERSION_REVISION 3) -set(${PROJECT_NAME}_LIB_VERSION_AGE 0) - -set(CMAKE_C_STANDARD 90) -set(CMAKE_C_EXTENSIONS OFF) - -list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) - -option(BUILD_SHARED_LIBS "Build shared libraries." ON) -option(SECP256K1_DISABLE_SHARED "Disable shared library. Overrides BUILD_SHARED_LIBS." OFF) -if(SECP256K1_DISABLE_SHARED) - set(BUILD_SHARED_LIBS OFF) -endif() - -option(SECP256K1_INSTALL "Enable installation." ${PROJECT_IS_TOP_LEVEL}) - -option(SECP256K1_ENABLE_MODULE_ECDH "Enable ECDH module." ON) -if(SECP256K1_ENABLE_MODULE_ECDH) - add_compile_definitions(ENABLE_MODULE_ECDH=1) -endif() - -option(SECP256K1_ENABLE_MODULE_RECOVERY "Enable ECDSA pubkey recovery module." OFF) -if(SECP256K1_ENABLE_MODULE_RECOVERY) - add_compile_definitions(ENABLE_MODULE_RECOVERY=1) -endif() - -option(SECP256K1_ENABLE_MODULE_EXTRAKEYS "Enable extrakeys module." ON) -option(SECP256K1_ENABLE_MODULE_SCHNORRSIG "Enable schnorrsig module." ON) -if(SECP256K1_ENABLE_MODULE_SCHNORRSIG) - set(SECP256K1_ENABLE_MODULE_EXTRAKEYS ON) - add_compile_definitions(ENABLE_MODULE_SCHNORRSIG=1) -endif() -if(SECP256K1_ENABLE_MODULE_EXTRAKEYS) - add_compile_definitions(ENABLE_MODULE_EXTRAKEYS=1) -endif() - -option(SECP256K1_ENABLE_MODULE_ELLSWIFT "Enable ElligatorSwift module." ON) -if(SECP256K1_ENABLE_MODULE_ELLSWIFT) - add_compile_definitions(ENABLE_MODULE_ELLSWIFT=1) -endif() - -option(SECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS "Enable external default callback functions." OFF) -if(SECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS) - add_compile_definitions(USE_EXTERNAL_DEFAULT_CALLBACKS=1) -endif() - -set(SECP256K1_ECMULT_WINDOW_SIZE "AUTO" CACHE STRING "Window size for ecmult precomputation for verification, specified as integer in range [2..24]. \"AUTO\" is a reasonable setting for desktop machines (currently 15). [default=AUTO]") -set_property(CACHE SECP256K1_ECMULT_WINDOW_SIZE PROPERTY STRINGS "AUTO" 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24) -include(CheckStringOptionValue) -check_string_option_value(SECP256K1_ECMULT_WINDOW_SIZE) -if(SECP256K1_ECMULT_WINDOW_SIZE STREQUAL "AUTO") - set(SECP256K1_ECMULT_WINDOW_SIZE 15) -endif() -add_compile_definitions(ECMULT_WINDOW_SIZE=${SECP256K1_ECMULT_WINDOW_SIZE}) - -set(SECP256K1_ECMULT_GEN_PREC_BITS "AUTO" CACHE STRING "Precision bits to tune the precomputed table size for signing, specified as integer 2, 4 or 8. \"AUTO\" is a reasonable setting for desktop machines (currently 4). [default=AUTO]") -set_property(CACHE SECP256K1_ECMULT_GEN_PREC_BITS PROPERTY STRINGS "AUTO" 2 4 8) -check_string_option_value(SECP256K1_ECMULT_GEN_PREC_BITS) -if(SECP256K1_ECMULT_GEN_PREC_BITS STREQUAL "AUTO") - set(SECP256K1_ECMULT_GEN_PREC_BITS 4) -endif() -add_compile_definitions(ECMULT_GEN_PREC_BITS=${SECP256K1_ECMULT_GEN_PREC_BITS}) - -set(SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY "OFF" CACHE STRING "Test-only override of the (autodetected by the C code) \"widemul\" setting. Legal values are: \"OFF\", \"int128_struct\", \"int128\" or \"int64\". [default=OFF]") -set_property(CACHE SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY PROPERTY STRINGS "OFF" "int128_struct" "int128" "int64") -check_string_option_value(SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY) -if(SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY) - string(TOUPPER "${SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY}" widemul_upper_value) - add_compile_definitions(USE_FORCE_WIDEMUL_${widemul_upper_value}=1) -endif() -mark_as_advanced(FORCE SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY) - -set(SECP256K1_ASM "AUTO" CACHE STRING "Assembly optimizations to use: \"AUTO\", \"OFF\", \"x86_64\" or \"arm32\" (experimental). [default=AUTO]") -set_property(CACHE SECP256K1_ASM PROPERTY STRINGS "AUTO" "OFF" "x86_64" "arm32") -check_string_option_value(SECP256K1_ASM) -if(SECP256K1_ASM STREQUAL "arm32") - enable_language(ASM) - include(CheckArm32Assembly) - check_arm32_assembly() - if(HAVE_ARM32_ASM) - add_compile_definitions(USE_EXTERNAL_ASM=1) - else() - message(FATAL_ERROR "ARM32 assembly optimization requested but not available.") - endif() -elseif(SECP256K1_ASM) - include(CheckX86_64Assembly) - check_x86_64_assembly() - if(HAVE_X86_64_ASM) - set(SECP256K1_ASM "x86_64") - add_compile_definitions(USE_ASM_X86_64=1) - elseif(SECP256K1_ASM STREQUAL "AUTO") - set(SECP256K1_ASM "OFF") - else() - message(FATAL_ERROR "x86_64 assembly optimization requested but not available.") - endif() -endif() - -option(SECP256K1_EXPERIMENTAL "Allow experimental configuration options." OFF) -if(NOT SECP256K1_EXPERIMENTAL) - if(SECP256K1_ASM STREQUAL "arm32") - message(FATAL_ERROR "ARM32 assembly optimization is experimental. Use -DSECP256K1_EXPERIMENTAL=ON to allow.") - endif() -endif() - -set(SECP256K1_VALGRIND "AUTO" CACHE STRING "Build with extra checks for running inside Valgrind. [default=AUTO]") -set_property(CACHE SECP256K1_VALGRIND PROPERTY STRINGS "AUTO" "OFF" "ON") -check_string_option_value(SECP256K1_VALGRIND) -if(SECP256K1_VALGRIND) - find_package(Valgrind MODULE) - if(Valgrind_FOUND) - set(SECP256K1_VALGRIND ON) - include_directories(${Valgrind_INCLUDE_DIR}) - add_compile_definitions(VALGRIND) - elseif(SECP256K1_VALGRIND STREQUAL "AUTO") - set(SECP256K1_VALGRIND OFF) - else() - message(FATAL_ERROR "Valgrind support requested but valgrind/memcheck.h header not available.") - endif() -endif() - -option(SECP256K1_BUILD_BENCHMARK "Build benchmarks." ON) -option(SECP256K1_BUILD_TESTS "Build tests." ON) -option(SECP256K1_BUILD_EXHAUSTIVE_TESTS "Build exhaustive tests." ON) -option(SECP256K1_BUILD_CTIME_TESTS "Build constant-time tests." ${SECP256K1_VALGRIND}) -option(SECP256K1_BUILD_EXAMPLES "Build examples." OFF) - -# Redefine configuration flags. -# We leave assertions on, because they are only used in the examples, and we want them always on there. -if(MSVC) - string(REGEX REPLACE "/DNDEBUG[ \t\r\n]*" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") - string(REGEX REPLACE "/DNDEBUG[ \t\r\n]*" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - string(REGEX REPLACE "/DNDEBUG[ \t\r\n]*" "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") -else() - string(REGEX REPLACE "-DNDEBUG[ \t\r\n]*" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") - string(REGEX REPLACE "-DNDEBUG[ \t\r\n]*" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - string(REGEX REPLACE "-DNDEBUG[ \t\r\n]*" "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") - # Prefer -O2 optimization level. (-O3 is CMake's default for Release for many compilers.) - string(REGEX REPLACE "-O3[ \t\r\n]*" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") -endif() - -# Define custom "Coverage" build type. -set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O0 -DCOVERAGE=1 --coverage" CACHE STRING - "Flags used by the C compiler during \"Coverage\" builds." - FORCE -) -set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} --coverage" CACHE STRING - "Flags used for linking binaries during \"Coverage\" builds." - FORCE -) -set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} --coverage" CACHE STRING - "Flags used by the shared libraries linker during \"Coverage\" builds." - FORCE -) -mark_as_advanced( - CMAKE_C_FLAGS_COVERAGE - CMAKE_EXE_LINKER_FLAGS_COVERAGE - CMAKE_SHARED_LINKER_FLAGS_COVERAGE -) - -get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -set(default_build_type "RelWithDebInfo") -if(is_multi_config) - set(CMAKE_CONFIGURATION_TYPES "${default_build_type}" "Release" "Debug" "MinSizeRel" "Coverage" CACHE STRING - "Supported configuration types." - FORCE - ) -else() - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY - STRINGS "${default_build_type}" "Release" "Debug" "MinSizeRel" "Coverage" - ) - if(NOT CMAKE_BUILD_TYPE) - message(STATUS "Setting build type to \"${default_build_type}\" as none was specified") - set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING - "Choose the type of build." - FORCE - ) - endif() -endif() - -include(TryAppendCFlags) -if(MSVC) - # Keep the following commands ordered lexicographically. - try_append_c_flags(/W3) # Production quality warning level. - try_append_c_flags(/wd4146) # Disable warning C4146 "unary minus operator applied to unsigned type, result still unsigned". - try_append_c_flags(/wd4244) # Disable warning C4244 "'conversion' conversion from 'type1' to 'type2', possible loss of data". - try_append_c_flags(/wd4267) # Disable warning C4267 "'var' : conversion from 'size_t' to 'type', possible loss of data". - # Eliminate deprecation warnings for the older, less secure functions. - add_compile_definitions(_CRT_SECURE_NO_WARNINGS) -else() - # Keep the following commands ordered lexicographically. - try_append_c_flags(-pedantic) - try_append_c_flags(-Wall) # GCC >= 2.95 and probably many other compilers. - try_append_c_flags(-Wcast-align) # GCC >= 2.95. - try_append_c_flags(-Wcast-align=strict) # GCC >= 8.0. - try_append_c_flags(-Wconditional-uninitialized) # Clang >= 3.0 only. - try_append_c_flags(-Wextra) # GCC >= 3.4, this is the newer name of -W, which we don't use because older GCCs will warn about unused functions. - try_append_c_flags(-Wnested-externs) - try_append_c_flags(-Wno-long-long) # GCC >= 3.0, -Wlong-long is implied by -pedantic. - try_append_c_flags(-Wno-overlength-strings) # GCC >= 4.2, -Woverlength-strings is implied by -pedantic. - try_append_c_flags(-Wno-unused-function) # GCC >= 3.0, -Wunused-function is implied by -Wall. - try_append_c_flags(-Wreserved-identifier) # Clang >= 13.0 only. - try_append_c_flags(-Wshadow) - try_append_c_flags(-Wstrict-prototypes) - try_append_c_flags(-Wundef) -endif() - -set(CMAKE_C_VISIBILITY_PRESET hidden) - -# Ask CTest to create a "check" target (e.g., make check) as alias for the "test" target. -# CTEST_TEST_TARGET_ALIAS is not documented but supposed to be user-facing. -# See: https://gitlab.kitware.com/cmake/cmake/-/commit/816c9d1aa1f2b42d40c81a991b68c96eb12b6d2 -set(CTEST_TEST_TARGET_ALIAS check) -include(CTest) -# We do not use CTest's BUILD_TESTING because a single toggle for all tests is too coarse for our needs. -mark_as_advanced(BUILD_TESTING) -if(SECP256K1_BUILD_BENCHMARK OR SECP256K1_BUILD_TESTS OR SECP256K1_BUILD_EXHAUSTIVE_TESTS OR SECP256K1_BUILD_CTIME_TESTS OR SECP256K1_BUILD_EXAMPLES) - enable_testing() -endif() - -add_subdirectory(src) -if(SECP256K1_BUILD_EXAMPLES) - add_subdirectory(examples) -endif() - -message("\n") -message("secp256k1 configure summary") -message("===========================") -message("Build artifacts:") -if(BUILD_SHARED_LIBS) - set(library_type "Shared") -else() - set(library_type "Static") -endif() - -message(" library type ........................ ${library_type}") -message("Optional modules:") -message(" ECDH ................................ ${SECP256K1_ENABLE_MODULE_ECDH}") -message(" ECDSA pubkey recovery ............... ${SECP256K1_ENABLE_MODULE_RECOVERY}") -message(" extrakeys ........................... ${SECP256K1_ENABLE_MODULE_EXTRAKEYS}") -message(" schnorrsig .......................... ${SECP256K1_ENABLE_MODULE_SCHNORRSIG}") -message(" ElligatorSwift ...................... ${SECP256K1_ENABLE_MODULE_ELLSWIFT}") -message("Parameters:") -message(" ecmult window size .................. ${SECP256K1_ECMULT_WINDOW_SIZE}") -message(" ecmult gen precision bits ........... ${SECP256K1_ECMULT_GEN_PREC_BITS}") -message("Optional features:") -message(" assembly optimization ............... ${SECP256K1_ASM}") -message(" external callbacks .................. ${SECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS}") -if(SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY) - message(" wide multiplication (test-only) ..... ${SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY}") -endif() -message("Optional binaries:") -message(" benchmark ........................... ${SECP256K1_BUILD_BENCHMARK}") -message(" noverify_tests ...................... ${SECP256K1_BUILD_TESTS}") -set(tests_status "${SECP256K1_BUILD_TESTS}") -if(CMAKE_BUILD_TYPE STREQUAL "Coverage") - set(tests_status OFF) -endif() -message(" tests ............................... ${tests_status}") -message(" exhaustive tests .................... ${SECP256K1_BUILD_EXHAUSTIVE_TESTS}") -message(" ctime_tests ......................... ${SECP256K1_BUILD_CTIME_TESTS}") -message(" examples ............................ ${SECP256K1_BUILD_EXAMPLES}") -message("") -if(CMAKE_CROSSCOMPILING) - set(cross_status "TRUE, for ${CMAKE_SYSTEM_NAME}, ${CMAKE_SYSTEM_PROCESSOR}") -else() - set(cross_status "FALSE") -endif() -message("Cross compiling ....................... ${cross_status}") -message("Valgrind .............................. ${SECP256K1_VALGRIND}") -get_directory_property(definitions COMPILE_DEFINITIONS) -string(REPLACE ";" " " definitions "${definitions}") -message("Preprocessor defined macros ........... ${definitions}") -message("C compiler ............................ ${CMAKE_C_COMPILER}") -message("CFLAGS ................................ ${CMAKE_C_FLAGS}") -get_directory_property(compile_options COMPILE_OPTIONS) -string(REPLACE ";" " " compile_options "${compile_options}") -message("Compile options ....................... " ${compile_options}) -if(NOT is_multi_config) - message("Build type:") - message(" - CMAKE_BUILD_TYPE ................... ${CMAKE_BUILD_TYPE}") - string(TOUPPER "${CMAKE_BUILD_TYPE}" build_type) - message(" - CFLAGS ............................. ${CMAKE_C_FLAGS_${build_type}}") - message(" - LDFLAGS for executables ............ ${CMAKE_EXE_LINKER_FLAGS_${build_type}}") - message(" - LDFLAGS for shared libraries ....... ${CMAKE_SHARED_LINKER_FLAGS_${build_type}}") -else() - message("Supported configurations .............. ${CMAKE_CONFIGURATION_TYPES}") - message("RelWithDebInfo configuration:") - message(" - CFLAGS ............................. ${CMAKE_C_FLAGS_RELWITHDEBINFO}") - message(" - LDFLAGS for executables ............ ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}") - message(" - LDFLAGS for shared libraries ....... ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}") - message("Debug configuration:") - message(" - CFLAGS ............................. ${CMAKE_C_FLAGS_DEBUG}") - message(" - LDFLAGS for executables ............ ${CMAKE_EXE_LINKER_FLAGS_DEBUG}") - message(" - LDFLAGS for shared libraries ....... ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}") -endif() -message("\n") -if(SECP256K1_EXPERIMENTAL) - message( - " ******\n" - " WARNING: experimental build\n" - " Experimental features do not have stable APIs or properties, and may not be safe for production use.\n" - " ******\n" - ) -endif() diff --git a/CMakePresets.json b/CMakePresets.json deleted file mode 100644 index b35cd8057..000000000 --- a/CMakePresets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "cmakeMinimumRequired": {"major": 3, "minor": 21, "patch": 0}, - "version": 3, - "configurePresets": [ - { - "name": "dev-mode", - "displayName": "Development mode (intended only for developers of the library)", - "cacheVariables": { - "SECP256K1_EXPERIMENTAL": "ON", - "SECP256K1_ENABLE_MODULE_RECOVERY": "ON", - "SECP256K1_BUILD_EXAMPLES": "ON" - }, - "warnings": { - "dev": true, - "uninitialized": true - } - } - ] -} diff --git a/Crc32cConfig.cmake.in b/Crc32cConfig.cmake.in deleted file mode 100644 index c6b8fc791..000000000 --- a/Crc32cConfig.cmake.in +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2017 The CRC32C Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. See the AUTHORS file for names of contributors. - -@PACKAGE_INIT@ - -include("${CMAKE_CURRENT_LIST_DIR}/Crc32cTargets.cmake") - -check_required_components(Crc32c) diff --git a/README-zh.md b/README-zh.md deleted file mode 100644 index 81e73b501..000000000 --- a/README-zh.md +++ /dev/null @@ -1,171 +0,0 @@ - -
-

- - Logo - - -

Bitgesell (BGL)

- -

- Bitgesell (BGL) 是一種實驗性數字貨幣 -
- 探索更多關於項目 » -
-
- English - · - Chinese -

-

- - - - -
- 目錄 -
    -
  1. - 關於該項目 - -
  2. -
  3. - 入門 - -
  4. -
  5. 路線圖
  6. -
  7. 貢獻
  8. -
  9. 執照
  10. -
  11. 接觸
  12. -
  13. 翻譯
  14. -
-
- - - -## 關於該項目 - -![Product Name Screen Shot](https://github.com/BitgesellOfficial/bitgesell/blob/master/share/pixmaps/BGL64.png) - -BGL 是一種實驗性數字貨幣,可以向世界上任何地方的任何人即時付款。BGL 使用點對點技術在沒有中央權限的情況下運行:管理交易和發行貨幣由網絡共同執行。 BGL Core 是允許使用這種貨幣的開源軟件的名稱。 - -Bitgesell 是比特幣的一個分支,有以下變化:
-* 區塊獎勵 [燃燒率是交易費用的 90%] - ```sh - nFees*0.1 + GetBlockSubsidy() - ``` -* 區塊重量 [比比特幣小 10 倍] - ```sh - <= 400,000 - ``` -* 100% Segwit - ```sh - 消除遺留類型交易的問題 - ``` -* 減半間隔 [bitgetsell 的減半週期為 1 年,而比特幣的減半週期為 4 年] - ```sh - 210000 blocks/4 - ``` -* 區塊補貼 [最大硬幣 = 21,000,000]
- `210000 blocks/4`

- `塊的哈希算法是 Keccak (sha-3).`

- `master 分支定期搭建 (看` [doc/build-*.md](https://github.com/BitgesellOfficial/bitgesell/tree/master/doc) `說明) 並經過測試,但不保證完全穩定。`

- [標籤](https://github.com/BitgesellOfficial/bitgesell/tags) `定期創建,以指示 BGL Core 的新官方穩定發行版本。`
- - -### 內置 - -* [C++](#) -* [C](#) -* [Python](#) -* [SourcePawn](#) -* [M4](#) -* [Shell](#) - - - -## 入門 - -[GUI](https://github.com/BGL-core/gui) 存儲庫專門用於 GUI 的開發。它的 master 分支在所有 monotree 存儲庫中都是相同的。發布分支和標籤不存在,所以除非出於開發原因,否則請不要分叉該存儲庫。 - -官方線程: [點擊這裡](https://bitcointalk.org/index.php?topic=5238559.0) - - -### 自動化測試 - -強烈鼓勵開發人員為新代碼編寫 [單元測試](https://github.com/BitgesellOfficial/bitgesell/blob/master/src/test/README.md),並 -為舊代碼提交新的單元測試。可以編譯和運行單元測試 -(假設它們在配置中沒有被禁用):`make check`。關於跑步的更多細節 -擴展單元測試可以在 [src/test/README.md](https://github.com/BitgesellOfficial/bitgesell/blob/master/src/test/README.md) 中找到。
- -還有 [回歸和集成測試](https://github.com/BitgesellOfficial/bitgesell/tree/master/test),寫的 -在 Python 中。
-這些測試可以運行 [如果[測試依賴項](https://github.com/BitgesellOfficial/bitgesell/tree/master/test) 與: `test/functional/test_runner.py`
- -CI(持續集成)系統確保每個拉取請求都是為 Windows、Linux 和 macOS 構建的, -並且自動運行單元/健全性測試.
- - -### 手動質量保證 (QA) 測試 - -更改應由編寫該更改的開發人員以外的其他人進行測試 -代碼。這對於大的或高風險的變化尤其重要。它是有益的 -如果測試更改,則將測試計劃添加到拉取請求描述中 -不直截了當。 - - - -## 路線圖 - -請參閱 [open issues](https://github.com/BitgesellOfficial/bitgesell/issues) 以獲取建議功能(和已知問題)的列表。 - - - -## 貢獻 - -貢獻使開源社區成為學習、啟發和創造的絕佳場所。 **非常感謝您做出的任何貢獻**。 - -1. 分叉項目 -2. 創建你的功能分支 -3. 提交您的更改 -4.推送到分行 -5.打開拉取請求 - - - - -## 執照 - -在 MIT 許可下分發。有關更多信息,請參閱 [許可證](https://github.com/BitgesellOfficial/bitgesell/blob/master/COPYING)。 - - - - -## 接觸 - -Discord - [Bitgesell](https://discord.com/invite/Ubp359vZEF) - -Twitter: [Bitgesell](https://twitter.com/Bitgesell) - -Medium: [Bitgesell](https://bitgesell.medium.com/) - -Facebook: [Bitgesell](https://www.facebook.com/Bitgesell) - - - -## 翻譯 - -可以提交對翻譯的更改以及新的翻譯 -[BGL Core 的 Transifex 頁面](https://www.transifex.com/bitcoin/bitcoin/)。 - -翻譯會定期從 Transifex 中提取並合併到 git 存儲庫中。見 -[翻譯過程](doc/translation_process.md) 了解有關其工作原理的詳細信息。 - -**重要**:我們不接受作為 GitHub 拉取請求的翻譯更改,因為下一個 -從 Transifex 拉取會自動再次覆蓋它們。 -