Compare commits

...
Sign in to create a new pull request.

4211 commits

Author SHA1 Message Date
b61d773a0f Merge pull request 'v6.0.1 — RandomX PoW, new genesis, multi-platform CI' (#1) from Charon/blockchain:dev into dev
Some checks failed
Build & Release / Linux x86_64 (push) Has been cancelled
Build & Release / macOS ARM64 (push) Has been cancelled
Build & Release / Create Release (push) Has been cancelled
Reviewed-on: #1
Reviewed-by: Snider <snider@noreply.forge.lthn.ai>
2026-02-14 20:19:13 +00:00
Claude
c9ad4de9bb
ci: multi-platform Forgejo Actions pipeline
Build Linux x86_64 (snider-linux) and macOS ARM64 (M3 Ultra) natively
via self-hosted forgejo-runner, aggregate into single release.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:37:35 +00:00
Claude
22c0c5a251
ci: use Forgejo Conan registry instead of actions/cache
Pull pre-built dependencies from the Forgejo package registry
(conan_build remote) instead of caching the SDK locally. Removes
the 570MB actions/cache overhead since all packages are already
available as pre-compiled binaries on the registry.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 15:06:47 +00:00
Claude
f3df50cba5
ci: prune old releases to keep only latest per branch
After uploading new release assets, delete older beta releases (dev)
or older stable releases (main) to conserve disk. Only the latest
build per branch is kept on the Forgejo instance; older builds are
available on mirrored free hosting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 15:03:13 +00:00
Claude
1545a80335
ci: add Forgejo Actions build & release workflow
Add .forgejo/workflows/build.yml that builds the Lethean blockchain
on push to dev/main with workflow_dispatch support. Builds testnet
on dev, mainnet on main, creates Forgejo releases with RPM/tar.xz/zip
packages and SHA256 checksums.

- CPU limited to 3 cores (~10% of 32-thread host) via Docker --cpus cap
- Private submodule auth via git credential store with RELEASE_TOKEN
- SDK caching with actions/cache for Conan build artifacts
- CMake installed via pip for preset version 8 support
- Tags fetched for libmdbx git describe version detection
- Fix missing contrib/randomx entry in .gitmodules

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 15:02:28 +00:00
Claude
467c64d015
feat: RandomX PoW, LWMA difficulty, stratum mining.* protocol, new genesis
Replace ProgPowZ with RandomX for ASIC-resistant proof-of-work. The
full dataset is initialized multi-threaded at startup with the key
"LetheanRandomXv1". Thread-local VMs are created on demand.

Switch difficulty algorithm from Zano's 720-block window to LWMA-1
(zawy12) with a 60-block window for much faster convergence after
hashrate changes. Target block time set to 10s for PoW.

Add standard stratum mining.* protocol handlers (subscribe, authorize,
submit, extranonce.subscribe) alongside existing EthProxy eth_*
handlers, with automatic protocol detection and mining.notify
translation for XMRig-based miners.

Generate fresh Lethean genesis block and premine wallet. Replace all
remaining hardcoded Zano addresses in tests with runtime-generated
keys to avoid prefix mismatches. Link RandomX library across all
build targets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:22:25 +00:00
Claude
7ee2265cae
fix: crypto test PRNG determinism, checkpoint hashes, and Zano address remnants
The crypto test PRNG was non-deterministic because setup_random() seeded
the state but grant_random_initialize_no_lock() overwrote it with
/dev/urandom on the first random call. Calling it before memset ensures
the initialized flag is set, preventing the overwrite.

Also adds --generate mode to crypto-tests for future vector regeneration,
updates checkpoint hashes for multisig_and_checkpoints (height 15) and
gen_no_attchments_in_coinbase (height 12), and replaces hardcoded Zano
addresses/URLs with Lethean equivalents in manual test scaffolding.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:17:11 +00:00
Claude
4120a9a664
Rebrand to SASE, restore cmake test fixture
- Update .core/build.yaml description: SASE infrastructure chain
- cmake/test-static-assert.c already committed separately

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 03:56:41 +00:00
Claude
5dae74347c
Restore project-specific cmake/test-static-assert.c
This file was wrongly extracted to the .core/build submodule during the
build system extraction. It's a project-specific compile test used by
CMakeLists.txt:185 and must remain in the project tree.

Verified: make configure && make build && make package all pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 03:27:11 +00:00
Claude
92e0aa779b
feat(build): add .core/build.yaml for core CLI integration
C++ build configuration for core CLI project detection and future
`core compile` command. Defines Conan dependencies, CMake settings,
cross-compilation targets, and packaging options.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 02:47:44 +00:00
Claude
7b0a08f9ff
Replace cmake/ with host-uk/build submodule at .core/build
Build system extracted to host-uk/build and wired in as a git
submodule following the core CLI convention (.core/<tool>/).

- CMake modules, cross-compilation profiles now from .core/build/cmake/
- Conan credentials read from environment instead of hardcoded
- Removed cmake/ directory (14 files) — all now in submodule
- Makefile, CMakeLists.txt, CMakePresets.json updated for new paths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 01:57:40 +00:00
Snider
88d4357628
New API Interface (#27)
Some checks failed
Push Compile / Linux (push) Has been cancelled
Push Compile / Windows (push) Has been cancelled
Push Compile / MacOS (push) Has been cancelled
Push Compile / Docker (push) Has been cancelled
Push Compile / Docs (push) Has been cancelled
This pull request introduces a comprehensive new API interface for the blockchain, leveraging OpenAPI v3 to facilitate direct consumption of chain data by GUI and web applications. This change significantly refines the project's build infrastructure, incorporating Conan for dependency management and CMake for configuration, alongside the integration of an OpenAPI Generator to produce SDKs for multiple languages. 

### Highlights

* **New API Interface**: Introduced a new API interface using OpenAPI v3 to enable GUI/WEB development to consume chain data without needing custom server applications.
* **Build System Enhancements**: Significant updates to the build system, including Makefile, CMake, and Conan configurations, to streamline the build process and support new functionalities.
* **Multi-language SDK Generation**: Integrated OpenAPI Generator to automatically create SDKs for various programming languages, including Go, Angular, and PHP, simplifying client-side integration.
2025-10-19 19:12:37 +01:00
Snider
4a5c5ae742 Refactor build presets and Makefile targets
Updated CMakePresets.json to add 'testnet' and 'mainnet' workflows, removed unused Windows preset, and improved environment and cache variable handling. Makefile targets for testnet and mainnet workflows were added, and Conan-related targets were renamed for consistency. Added a function to reset ConanPresets.json in CleanBuild.cmake and fixed the path for GetConan.cmake in conan_provider.cmake. Deleted obsolete .idea/cmake.xml.
2025-10-09 03:10:46 +01:00
Snider
57983cb865 Since Clion is OSS now, adding more sharable ide project defaults. 2025-10-09 01:27:15 +01:00
Snider
ef776a93cc
Add CMake and Conan presets, update build config (#26)
* Add CMake and Conan presets, update build config

Introduces CMakePresets.json and ConanPresets.json for standardized build configuration. Updates Makefile to use CMake presets, modifies .gitignore for IDE files, and refines conanfile.py to support CI option and preset integration.

* Update Makefile

* Update _on-pr.yml

* Refactor build presets and folder layout for Windows

Updated Makefile and GitHub workflow to use configurable build and configure presets, improving flexibility for different environments. Adjusted CMakePresets.json to fix preset naming and version, and refactored conanfile.py to set build folders based on compiler type, ensuring correct folder structure for MSVC and other compilers.

* Update build presets and CPack config for Windows

Set PRESET_CONFIGURE to 'conan-default' for Windows builds in Makefile and GitHub workflow. Broaden CPack packaging conditions to include additional build types and comment out WIX generator settings for Windows in CPackConfig.cmake.
2025-10-09 00:25:29 +01:00
Snider
106b3431db Add JetBrains IDE config and update CMake setup
Added .idea configuration files for JetBrains IDE support and updated .gitignore to exclude only specific userland .idea files. Refactored CMakeLists.txt to improve include_directories usage, re-enable -fno-fat-lto-objects for GNU compilers. This improves IDE integration and build configuration clarity.
2025-10-08 20:22:51 +01:00
Snider
0882f94203 Update debug build paths in Makefile
Modified debug target to use absolute paths with $(CURDIR) for build directory and toolchain file. This improves reliability of file detection across environments and browsers.
2025-10-08 15:17:18 +01:00
Snider
1c584e7c76
Update CMakeLists.txt 2025-10-07 02:29:17 +01:00
Snider
79121dce71
Remove ccache from tool_requires 2025-10-07 02:28:22 +01:00
Snider
3dbb8b1487
Add 'secrets: inherit' to all build jobs 2025-10-07 02:24:12 +01:00
Snider
11d19e5446
Add caching and dependency installation steps for ARM, Intel, and mac… (#25) 2025-10-07 02:20:06 +01:00
Snider
e4ff164f0d
Build Simplification (#24) 2025-10-06 22:38:29 +01:00
Snider
dd7a19ac6f Lower min build version for hardforks 05 and 06
Updated ZANO_HARDFORK_05_MIN_BUILD_VER and ZANO_HARDFORK_06_MIN_BUILD_VER from 382 to 2 to allow compatibility with older builds.
2025-10-05 21:10:34 +01:00
Snider
eb60d4519c Revert "Use actual remote port for async connection"
This reverts commit 3e2bad36a6.
2025-10-05 20:44:13 +01:00
Snider
3e2bad36a6 Use actual remote port for async connection
Replaces usage of node_data.my_port with context.m_remote_port when establishing an async connection, ensuring the correct remote port is used for peer connections.
2025-10-05 20:03:58 +01:00
Snider
7f930b0fec Capture remote_ip by value in try_ping lambda
The lambda in try_ping now captures remote_ip by value instead of accessing context.m_remote_ip directly. This ensures the correct IP is used even if the context changes before the lambda executes.
2025-10-05 18:01:59 +01:00
Snider
c2c130a076
Add conditional check for alpha and beta versions
the tag + release deleting only happens for -alpha or -beta
2025-10-05 14:35:21 +01:00
Snider
d8d81c1f2e
Implement cleanup job for merged pull requests
Add cleanup job for closed pull requests that are merged.
2025-10-05 14:21:10 +01:00
Snider
c8acc964e3
Testnet updates (#22) 2025-10-05 14:00:36 +01:00
Snider
763d70bec2
Testnet 1 (#15) 2025-09-30 16:48:13 +01:00
llebubell
b02addf264
Centralised chain config (#4) 2025-09-25 16:38:18 +01:00
Snider
bf22a89733
Dev 12 documentation overhaul (#13)
Introduces a 'docs' submodule for project documentation and integrates MkDocs build steps via CMake and Makefile.
2025-09-25 16:04:33 +01:00
Snider
2f1011e27c
Final Build Foundations (#11) 2025-09-25 00:25:52 +01:00
Snider
7b0c286cef Update build workflows for macOS and Windows
Changed build commands and artifact directories in macOS and Windows GitHub Actions workflows to use new target names and paths. Removed 'connectivity_tool' from CLI artifacts.
2025-09-24 22:21:43 +01:00
Snider
b84b99287d Refactor build profiles and update CI workflows
Renamed and reorganized CMake build profiles for consistency, removing unused Android, iOS, and MinGW profiles. Updated GitHub Actions workflows and Makefile to use new profile names and increased build parallelism for faster builds.
2025-09-24 22:21:32 +01:00
Snider
a03d081287
Build Improvements (#10) 2025-09-24 21:01:35 +01:00
Snider
2eaa599066
GitHub Build Workflows (#7) 2025-08-30 17:46:00 +01:00
Snider
eafeb894f9
GitHub CLI Building (#5)
- Linux: https://github.com/letheanVPN/blockchain/actions/runs/17264025940
- MacOS-aarch64: https://github.com/letheanVPN/blockchain/actions/runs/17264025933
- MacOS-amd64: https://github.com/letheanVPN/blockchain/actions/runs/17264025928
- Windows: https://github.com/letheanVPN/blockchain/actions/runs/17265388073
2025-08-27 12:51:11 +01:00
sowle
db80165063
Merge branch 'release' 2025-08-15 15:53:44 +03:00
zano build machine
b9d85e1c09 === build number: 427 -> 428 === 2025-08-13 17:09:03 +03:00
sowle
5982abd525
Merge branch 'develop' into release 2025-08-13 17:02:57 +03:00
zano build machine
de5e0caebd === build number: 426 -> 427 === 2025-08-12 19:51:10 +03:00
sowle
91ced14b2d
ui update (PR 158) 2025-08-12 19:50:17 +03:00
zano build machine
d7d0ba0a41 === build number: 425 -> 426 === 2025-08-11 00:17:35 +03:00
sowle
c36355d489
Merge branch 'random_refactoring' into develop 2025-08-11 00:16:15 +03:00
sowle
11d4bbf1da
crypto: generate_system_random_bytes_* refactored: improved error handling, win32 version moved to BCrypt API, split into normal and _or_die funcs
Thanks to @gitToki for spotting the error handling issue!
2025-08-10 05:24:25 +03:00
sowle
15417edbce
Merge branch 'develop' into random_refactoring 2025-08-10 05:20:03 +03:00
sowle
b9b175c00f
ui update (PR 157) 2025-08-07 11:34:25 +03:00
cryptozoidberg
e3186aef40
Merge branch 'release' into develop 2025-08-01 13:52:15 +01:00
cryptozoidberg
feb5de6f20
Merge branch 'master' into release 2025-08-01 13:51:39 +01:00
cryptozoidberg
9aaa0f8cb8
XCode 16.4 fix 2025-08-01 13:51:11 +01:00
sowle
cc8ff1d5a3
minor fix (presumable, not worthy but anyway) 2025-08-01 04:26:08 +03:00
sowle
ff6cbe2548
Merge branch 'random_refactoring' into develop 2025-08-01 01:50:13 +03:00
sowle
3a9245f743
crypto::random refactoring and improvements (credits to @dimmarvel for spotting the thread safety issue) 2025-07-31 04:14:10 +03:00
crypto.sowle
8b57f3acab
priority_peers_list in p2p_manual_config.json updated (added missing backbone node) 2025-07-29 02:58:30 +03:00
sowle
96081db687
coretests: wallet_rpc_multiple_receivers -- work in progress 2025-07-26 02:26:08 +03:00
sowle
a93aefd507
ui update (PR 156) 2025-07-24 18:27:55 +03:00
sowle
4923f644c4
coretests: minor improvements for wallet_rpc_cold_signing 2025-07-24 18:18:44 +03:00
sowle
260228433c
=== build number: 424 -> 425 === 2025-07-24 18:07:42 +03:00
sowle
cbc7357fa7
Merge branch 'release' into develop 2025-07-24 18:06:27 +03:00
sowle
0c7d09d951
Merge remote-tracking branch 'origin/release' into release 2025-07-24 18:06:09 +03:00
sowle
d78911b344
Merge branch 'release' into develop
# Conflicts:
#	src/version.h.in
#	src/wallet/wallet_rpc_server.cpp
2025-07-24 18:04:36 +03:00
sowle
e10a711c36
Merge branch 'master' into release 2025-07-24 18:02:51 +03:00
sowle
6e6831c355
Merge branch 'release' 2025-07-24 17:39:58 +03:00
cryptozoidberg
8953e201d6
error handling improved in zlib 2025-07-24 17:56:31 +04:00
sowle
d9557d3bb1
clang compilation fix 2025-07-24 13:56:36 +03:00
sowle
334d26a4ac
=== build number: 423 -> 424 === 2025-07-24 05:38:14 +03:00
sowle
d6c6df78f4
Merge branch 'transfer_so' into release 2025-07-24 05:37:22 +03:00
sowle
035f233bc7
transfer_so implemented +minor code cleanup 2025-07-24 05:25:17 +03:00
sowle
cd16b5c743
=== build number: 422 -> 423 === 2025-07-23 19:21:02 +03:00
sowle
b57fa844ef
ui update (PR 154, 155) 2025-07-23 19:20:19 +03:00
sowle
4618c240f2
Merge branch 'release' into develop
# Conflicts:
#	src/version.h.in
#	src/wallet/wallet_rpc_server.cpp
2025-07-23 13:22:24 +03:00
sowle
3e71f078ca
gcc warnings fixed 2025-07-22 21:47:22 +03:00
sowle
7a463d8065
coretests adapted to temp changes 2025-07-22 21:34:04 +03:00
sowle
06573647b8
=== build number: 421 -> 422 === 2025-07-22 14:57:55 +03:00
sowle
06d6553473
tx_comment is temporary disabled 2025-07-22 14:57:02 +03:00
sowle
2c920287d3
=== build number: 420 -> 421 === 2025-07-22 05:10:00 +03:00
sowle
b0e00c0803
Merge branch 'ip_blacklisting' into release 2025-07-22 05:09:07 +03:00
cryptozoidberg
b0b30e20b2
sender/receiver disabled 2025-07-21 21:54:13 +04:00
sowle
1b8cfa0194
Merge branch 'release' into develop
# Conflicts:
#	src/version.h.in
2025-07-21 15:10:54 +03:00
sowle
0c48a01fbf
=== build number: 419 -> 420 === 2025-07-21 14:53:20 +03:00
sowle
60560ad18c
Merge branch 'ip_blacklisting' into release 2025-07-21 14:52:28 +03:00
cryptozoidberg
71cc7d1363
renamed field 2025-07-21 15:17:40 +04:00
cryptozoidberg
be3938a886
renamed to field 2025-07-21 15:17:12 +04:00
cryptozoidberg
e2bfde5bbc
Create p2p_manual_config.json 2025-07-21 14:44:16 +04:00
cryptozoidberg
6fed9dcac5
Create p2p_manual_config.json (full proxy) 2025-07-21 14:42:58 +04:00
sowle
68871b93ec
p2p minor improvements 2025-07-20 22:54:32 +03:00
cryptozoidberg
32194f88b1
p2p network manual configuration from config file 2025-07-20 18:41:27 +04:00
sowle
854c198415
reverted sanity check improvement 2025-07-20 02:34:45 +03:00
sowle
23cf10a4b8
Merge remote-tracking branch 'origin/release' into develop 2025-07-19 23:49:58 +03:00
Dmitry Matsiukhov
94c2e65dad
coretests: tx_coinbase_separate_sig_flag test added; (separate flag for PoW miner tx coinbase (#538))
* add tests for pow separate tx flag

* refactoring test, leave only poW validation
2025-07-19 15:49:10 +03:00
cryptozoidberg
0e1618c496
sanity check improved 2025-07-19 14:48:10 +04:00
dependabot[bot]
015c7ddbb4
Bump axios from 1.7.7 to 1.8.2 in /utils/JS (#528)
Bumps [axios](https://github.com/axios/axios) from 1.7.7 to 1.8.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.7...v1.8.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.8.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-19 09:42:00 +04:00
sowle
f8e298af86
Merge branch 'release' 2025-07-18 21:25:32 +03:00
Dmitry Matsiukhov
4695229f2a
fix warnings (#546)
* fix warnings

* refactoring
2025-07-18 20:17:02 +03:00
sowle
97b17221d9
=== build number: 418 -> 419 === 2025-07-18 13:39:01 +03:00
sowle
98f5880ae6
Merge branch 'release' into develop 2025-07-18 13:38:36 +03:00
sowle
6c318fc34b
minor fix to please clang 2025-07-17 21:05:08 +03:00
sowle
9e81e7228c
Merge branch 'release' into develop 2025-07-17 19:16:29 +03:00
sowle
556746c194
currency_protocol: there's no hop in this place anymore 2025-07-17 19:05:35 +03:00
sowle
ee883a690c
Merge branch 'release' into develop
# Conflicts:
#	src/wallet/wallet2.cpp
2025-07-17 15:39:00 +03:00
sowle
2edb2e6fe4
=== build number: 416 -> 417 === 2025-07-17 15:36:42 +03:00
Dmitry Matsiukhov
a3587a48e7
fix array entry deserialization and JSON parsing edge cases + tests (#545)
credits go to Lilith (>_>) of Cisco Talos (TALOS-2018-0637) and moneromooo-monero (DoS/RPC fixes PR#4438)
2025-07-17 15:14:41 +03:00
sowle
63cf4e5dd6
wallet2: removed redundant log 2025-07-17 13:07:22 +03:00
sowle
cac85721a2
wallet: minor improvements for balance() + coretest extended to cover more cases 2025-07-17 03:04:12 +03:00
sowle
8574cc0894
wallet: various balance() improvements 2025-07-16 20:30:17 +03:00
sowle
d241861d86
wallet: various minor improvements (balance, balance raw, unknown asset) 2025-07-16 17:30:38 +03:00
sowle
fed84de8b7
compilation fix 2025-07-15 23:59:20 +03:00
Dmitry Matsiukhov
a08772ea6a
coretests: tx_input_mixins test added (test that will combine spending old coins and new coins in one tx and use mixins as 15)
* try to write test for 2 input with nmix

* one of incorrect version

* add test for input old/new

* refactoring and add comments

* delete garbage

* fix from vector variant to unordered_map

* add comment

* using to typedef
2025-07-15 23:36:53 +03:00
sowle
8fb16d207f
Merge branch 'release' into develop
# Conflicts:
#	src/rpc/core_rpc_server.cpp
#	src/version.h.in
2025-07-15 22:22:36 +03:00
sowle
d711373824
Merge branch 'release' 2025-07-15 22:18:27 +03:00
sowle
eed7d9e3af
=== build number: 411 -> 416 === 2025-07-15 22:18:09 +03:00
sowle
ffd279f21f
Merge branch 'limitations_for_rpc' into release 2025-07-15 22:16:17 +03:00
sowle
8042f9a6a5
Merge branch 'master' into release 2025-07-15 22:15:46 +03:00
sowle
573028c764
minor improvements 2025-07-15 20:57:20 +03:00
cryptozoidberg
695bd88c11
made some of the api optional 2025-07-15 20:51:37 +03:00
cryptozoidberg
992ea22294
added warning for binding to 0.0.0.0 2025-07-15 21:37:50 +04:00
cryptozoidberg
9cce235931
renamed macro to proper name 2025-07-15 20:55:20 +04:00
cryptozoidberg
9fe3f812aa
limitations for rpc cals 2025-07-15 20:41:46 +04:00
cryptozoidberg
75ad8c7a69
made some of the api optional 2025-07-15 14:31:35 +04:00
sowle
6f8d727332
Revert "wallet: keep custom added assets while resetting history"
This reverts commit 5e0c84e735.
2025-07-14 20:30:12 +03:00
sowle
f287916372
=== build number: 414 -> 415 === 2025-07-11 21:46:56 +03:00
sowle
5e0c84e735
wallet: keep custom added assets while resetting history 2025-07-11 21:46:03 +03:00
sowle
0cd2ef8ccb
wallet: various minor improvements (balance, balance raw, unknown asset) 2025-07-11 21:45:24 +03:00
sowle
65241adc1c
ui update (PR 153) 2025-07-11 21:26:52 +03:00
sowle
6ad7dad01d
gcc warning fixed 2025-07-11 21:26:07 +03:00
sowle
51990c9d2d
an attempt 3 to fix gcc linking (prior to gcc 9, the std::filesystem library required explicit linking) 2025-07-11 21:25:48 +03:00
sowle
d56bf75bde
an attempt 2 to fil gcc linking (prior to gcc 9, the std::filesystem library required explicit linking) 2025-07-10 04:32:36 +03:00
sowle
94b9741976
an attempt to fil gcc linking (prior to gcc 9, the std::filesystem library required explicit linking) 2025-07-10 04:00:56 +03:00
sowle
87cd247eb5
wallet: clear_utxo_cold_sig_reservation() made available only for watch-only wallets 2025-07-09 19:10:33 +03:00
sowle
28606d07ef
=== build number: 413 -> 414 === 2025-07-09 17:33:17 +03:00
sowle
9589c952f8
ui updated (PR 152) 2025-07-09 17:32:49 +03:00
sowle
0554d7b8c4
wallet: clear_utxo_cold_sig_reservation() implemented + RPC clear_utxo_cold_sig_reservation added + coretest wallet_rpc_cold_signing improved to test this new RPC 2025-07-09 17:16:01 +03:00
sowle
db86b3fa15
simplewallet: --restore-ki-in-wo-wallet command-line option implemented 2025-07-09 14:42:18 +03:00
sowle
5ac8b20816
coretests: wallet_rpc_cold_signing test improved to cover key image recovery in a watch-only wallet using a full keys wallet 2025-07-09 14:41:22 +03:00
sowle
c241cb3f9b
wallet2: restore_key_images_in_wo_wallet() implemented 2025-07-09 14:40:24 +03:00
sowle
2f368cbf2c
fixed missing member serialization in tx_source_entry 2025-07-08 02:45:52 +03:00
sowle
04364afc53
coretests: wallet_rpc_cold_signing test improved to cover asset transferring along with native coins (exposes a bug) 2025-07-08 02:44:05 +03:00
sowle
035a441efe
wallet2: dump_transfers now prints asset id instead of key images +typo fixed 2025-07-08 02:42:42 +03:00
cryptozoidberg
e232c827a6
example of using zano wallet jwt auth 2025-07-04 19:42:08 +04:00
Dmitry Matsiukhov
c637e16848
unit_tests: added a test for pod array file container, fixed clear() (#535)
* add test for pod array file container

* add tests for pod, clear and is open

* header update

---------

Co-authored-by: sowle <crypto.sowle@gmail.com>
2025-07-04 00:41:53 +02:00
sowle
dfbda0a77f
minor improvements for wallet/simplewallet (logs, comments, error handling) 2025-07-03 16:13:44 +02:00
sowle
d5890e3c7f
pod_array_file_container::clear() implemented 2025-07-03 15:17:12 +02:00
Dmitry Matsiukhov
187a830f58
fixed input password bug (#536) 2025-07-03 11:55:40 +02:00
cryptozoidberg
6a4d6e1fc6
fixed #483, thanks to @gurglespuge for reporting it and proposing fix 2025-07-01 23:37:53 +04:00
cryptozoidberg
430d31ba5e
added --no-white-list option for offline working 2025-07-01 20:37:30 +04:00
cryptozoidberg
05ea60a70c
made seed request non-synchronized 2025-06-30 15:40:11 +04:00
cryptozoidberg
22b49d93a8
Update LICENSE (fixed #534)
Thanks to @Alrighttt to pointing that out
2025-06-28 16:02:19 +04:00
Dmitry Matsiukhov
5340c6db32
coretests: test for miner tx with non-empty extra_nonce before and after HF4 (#532)
* try check extra nonce in miner_tx

* update c1

* write extra nonces, create pow pos block, checkers for exnonce, bug with HF4

* success check pos block

* correct pos/pos extra nonce validation for hf3+

* clean code, separate to methods, add template test, pos/pow extra nonce check in block

* delete logs

* back normal naming

* fix review comments
2025-06-27 20:16:24 +02:00
cryptozoidberg
a0c1c8b4df
fixed typo 2025-06-25 16:46:37 +04:00
cryptozoidberg
2b3360f66a
added more logs 2025-06-25 16:41:52 +04:00
Dmitry Matsiukhov
ffa94febc6
coretests: block_choice_rule_bigger_fee test added (#530)
* add bigger fee block choice test

* fix block_validation

* remove c1, add check_top_block callback

* added more checks

* update test case

* delete: cmake fix for linux

* part of fixs

* add new check

* delete unused declareted

* add comments

* fix comment

* fix comments
2025-06-23 20:54:52 +02:00
Dmitry Matsiukhov
f8600d9fe4
fix cmake for linux build (#531) 2025-06-23 18:38:55 +04:00
zano build machine
afd479fa62 === build number: 412 -> 413 === 2025-06-23 14:10:04 +03:00
sowle
aaf878419d
ui update (PR 151) 2025-06-23 13:03:26 +02:00
sowle
0c77467c7b
=== version bump: 2.1.7 -> 2.1.8 === 2025-06-20 01:36:09 +02:00
zano build machine
a3905348f1 === build number: 411 -> 412 === 2025-06-20 02:32:11 +03:00
sowle
c6614912b1
wallet: 1) tx_comment is only allowed in extra; 2) tx_comment temporary allowed only if destinations addresses are the same; 3) integrated address can be only the first if there are many 2025-06-20 01:31:42 +02:00
sowle
46eab64834
rename: encrypt_attachments() -> encrypt_payload_items() + test gen_wallet_decrypted_attachments -> gen_wallet_decrypted_payload_items improved (tx_comment put in extra) 2025-06-20 01:30:00 +02:00
sowle
1b0f64176d
wallet rpc: tx_comment is now put into tx's extra for consistency with wallet_manager's approach 2025-06-19 17:42:00 +02:00
sowle
430cbffd25
wallet rpc: WALLET_RPC_ERROR_CODE_GENERIC_ERROR (-9) added 2025-06-19 17:40:47 +02:00
sowle
ab01ce4fd6
ui update (PR 150) 2025-06-19 12:55:44 +02:00
sowle
2fb8f499e1
Merge remote-tracking branch 'origin/p2pdbgcmd' into develop 2025-06-19 12:53:34 +02:00
cryptozoidberg
2bab917700
fixed typo 2025-06-19 14:35:11 +04:00
cryptozoidberg
90a4a68eb5
added sanitize_utf8 to invoke() in plain_wallet 2025-06-18 22:45:28 +04:00
cryptozoidberg
166b683295
tiny format tweak 2025-06-17 17:06:35 +04:00
sowle
4f7345e475
Merge branch 'release' 2025-06-10 15:08:01 +02:00
sowle
79a3d416c1
Merge branch 'develop' into release 2025-06-10 15:07:25 +02:00
sowle
ecabd4a73a
functional tests: core_concurrency_test.cpp compilation fix 2025-06-09 11:51:08 +02:00
sowle
29d02c1816
Merge branch 'develop' into release 2025-06-09 05:48:54 +02:00
sowle
23f874f142
=== build number: 410 -> 411 === 2025-06-09 05:45:54 +02:00
sowle
48176b6a72
chaingen: "clear_tx_pool" now clears tx pool indeed 2025-06-09 05:44:49 +02:00
sowle
2bb1113b43
core: HF4 coinage rule is not checked while adding a tx to the pool, letting it being confirmed later 2025-06-09 05:43:39 +02:00
sowle
2a13a63eb7
coretests: tx_pool_validation_and_chain_switch improved 2025-06-09 05:39:57 +02:00
cryptozoidberg
7ac70737dc
fix that makes sure that daemon and wallet are 'on the same page' in terms of hardfork recognition 2025-06-07 16:17:54 +04:00
cryptozoidberg
9efce2ddb3
added check if console is available #510 2025-06-07 14:10:45 +04:00
cryptozoidberg
87fae9440c
bug that have been there for ages 2025-06-06 21:18:41 +04:00
zano build machine
79f4c3ef75 === build number: 409 -> 410 === 2025-06-06 03:24:10 +03:00
sowle
06af2ea879
ui update (PR 149) 2025-06-06 02:02:08 +02:00
sowle
1131d25725
ui update (PR 148) 2025-06-04 17:16:11 +02:00
sowle
cb3891ac0c
minor improvements 2025-06-04 16:48:53 +02:00
sowle
e0acea65b8
=== version bump: 2.1.6.408 -> 2.1.7.409 === 2025-06-03 01:59:16 +02:00
sowle
c6b1a84461
Merge branch 'master' into develop 2025-06-03 01:58:12 +02:00
sowle
c86a19de08
Merge branch 'mempool_blacklist_fix' 2025-06-03 01:56:32 +02:00
sowle
e725b784c1
version bump: 2.1.5.397 -> 2.1.6.399 2025-06-03 01:55:58 +02:00
sowle
f84ecf579e
improved condition in tx_memory_pool::is_transaction_ready_to_go() limited to >=HF4 to please old tests 2025-06-03 01:38:55 +02:00
sowle
7fb2fcc188
minor fix 2025-06-03 00:33:26 +02:00
sowle
411cda4ad4
improved condition in tx_memory_pool::is_transaction_ready_to_go() 2025-06-03 00:22:30 +02:00
sowle
7eb6986f4d
txpool fixed: txs with too small max_related_block_height will wait in the pool till the current height is okay + coretests tx_pool_validation_and_chain_switch added 2025-06-03 00:01:11 +02:00
cryptozoidberg
3d2ce52b8e
small performance tweak of fill_block_template and more logs related to pool txs blacklisting 2025-06-02 23:50:31 +04:00
sowle
7793efaeac
msvc: EHa exception mode enabled to catch both structured and standard C++ exceptions 2025-06-02 19:12:50 +02:00
zano build machine
25056b751e === build number: 407 -> 408 === 2025-05-30 16:03:48 +03:00
sowle
1c045d0732
ui update (PR 147) 2025-05-30 15:00:22 +02:00
sowle
c4c8d65798
fixed a rare issue with printing random control characters to the console, breaking it 2025-05-30 14:49:31 +02:00
sowle
be0b6ab35e
callstack_helper: fixed a potential issue in get_mod_info::operator() 2025-05-30 14:45:24 +02:00
Anton Mikhailov
99bcf712df
feat: install includes on android (#524) 2025-05-29 14:20:47 +04:00
sowle
8a91bccea3
an attempt to make all callstack-retrieval routines exception-safe 2025-05-28 01:15:28 +02:00
cryptozoidberg
686c137332
added wallet_transfer_info to transfer() RPC 2025-05-23 23:52:49 +04:00
sowle
e66b21085b
wallet2: keep tx_keys while resetting wallet's history 2025-05-23 05:35:06 +03:00
sowle
ffe5051d8b
wallet2 : store_watch_only fixed 2025-05-23 05:34:22 +03:00
sowle
0066e75c39
minor improvements (formatting, logging) 2025-05-23 05:33:32 +03:00
sowle
1bb0523b83
get_out_pub_key_from_tx_out_v() implemented 2025-05-23 05:32:33 +03:00
zano build machine
4d272c4edb === build number: 406 -> 407 === 2025-05-22 20:26:59 +03:00
sowle
296a6c6211
fixed a rare race condition in get_coinbase_hash_cached() 3 2025-05-22 16:58:34 +03:00
sowle
43bde5aa99
fixed a rare race condition in get_coinbase_hash_cached() 2 2025-05-22 15:50:18 +03:00
sowle
cebeebe730
fixed a rare race condition in get_coinbase_hash_cached() 2025-05-22 14:26:05 +03:00
zano build machine
91cd6148e8 === build number: 405 -> 406 === 2025-05-22 03:01:56 +03:00
sowle
ec35462267
forgotten line 2025-05-22 00:26:16 +03:00
cryptozoidberg
0b7a8a89bd
added error handling for custom seed generator 2025-05-21 20:16:08 +04:00
zano build machine
dd9fb6c8a7 === build number: 404 -> 405 === 2025-05-21 05:02:17 +03:00
sowle
54f5b2acc1
Merge branch 'get_coinbase_hash_cached_refactoring' into develop 2025-05-21 04:49:01 +03:00
sowle
d911673544
cache_base: typo fixed 2025-05-21 04:47:39 +03:00
sowle
cc9e39825c
cache_helper/cache_base fixed and improved 2025-05-21 04:33:24 +03:00
sowle
4be5761a90
epee::misc_utils::void_copy introduced 2025-05-21 04:32:16 +03:00
cryptozoidberg
bafae7b120
added get_integrated_address to daemon 2025-05-20 22:18:10 +04:00
sowle
d9c7a2ac08
get_coinbase_hash_cached refactored 2025-05-20 20:08:24 +03:00
sowle
d4cc1bd6ff
wallet2: cold-signing process adapted to post-HF4 realm 2025-05-15 05:40:54 +03:00
sowle
83234af5b6
coretests: wallet_rpc_cold_signing test added 2025-05-15 05:40:10 +03:00
sowle
92ea96a41d
coretests: set_playtime_test_wallet_options() minor refactoring 2025-05-15 05:39:34 +03:00
sowle
915d01fa7d
minor improvements 2025-05-15 05:38:13 +03:00
zano build machine
11ff5a8c62 === build number: 403 -> 404 === 2025-05-09 07:01:17 +03:00
sowle
6ff59d2392
Merge branch 'non_pruning_mode' into develop 2025-05-09 06:53:44 +03:00
sowle
3a5e37f34c
predownlod files updated to height 3150000 2025-05-09 02:14:44 +03:00
sowle
6ea2d90104
predownload files for non-pruning mode 2025-05-08 18:54:02 +03:00
zano build machine
078b03534d === build number: 402 -> 403 === 2025-05-08 04:39:19 +03:00
sowle
0cbe915ed5
ui update (PR #146) 2025-05-08 04:38:29 +03:00
sowle
7a0b4cdc82
conn_tool: minor improvement 2025-05-06 00:37:09 +03:00
sowle
22196f9de6
predownload files updated for non-pruning mode 2025-05-06 00:36:38 +03:00
cryptozoidberg
ef0a47c720
added force_rescan_tx_pool command to wallet rpc 2025-05-05 21:33:13 +04:00
sowle
c2bd27cb58
gcc compilation fix 2025-04-30 21:54:55 +03:00
sowle
c8d41b5e4a
non-pruning via special flag (WIP) 2025-04-30 05:46:25 +03:00
sowle
e5323d0c5a
non-pruning mode implemented using checkpoints 2025-04-30 03:55:13 +03:00
zano build machine
cc7188f450 === build number: 401 -> 402 === 2025-04-28 20:01:28 +03:00
sowle
59a55f7ebd
ui update (PR 145) 2025-04-28 19:59:17 +03:00
cryptozoidberg
13b73bcb33
reduced cache for m_db_blocks_index 2025-04-24 14:50:50 +04:00
zano build machine
90ed7ee409 === build number: 400 -> 401 === 2025-04-22 14:56:42 +03:00
sowle
36d14dbc99
conn_tool: get-anonymized-peers command-line option implemented 2025-04-18 15:09:16 +03:00
sowle
7606c69961
p2p: COMMAND_REQUEST_ANONYMIZED_PEERS (WIP) 2025-04-18 06:18:57 +03:00
sowle
f087117a33
tx_pool: allow incoming txs to register alias to address, that already has associated alias only for testnet (for a while) 2025-04-18 00:58:13 +03:00
cryptozoidberg
02da52eb0d
improve over all tx to json serialization 2025-04-17 22:07:36 +04:00
cryptozoidberg
a7a4505b79
attempt to fix seg fault on foreach_connection 2025-04-16 15:27:44 +04:00
cryptozoidberg
7f8dbb73db
added back zconf.h.included 2025-04-15 23:55:38 +04:00
cryptozoidberg
fe220afdde
fixed binary serialization of tx to json 2025-04-15 23:51:01 +04:00
zano build machine
83eefd205e === build number: 399 -> 400 === 2025-04-14 17:51:46 +03:00
sowle
15d2c1f725
ui update (PR 144) 2025-04-14 17:48:04 +03:00
sowle
afb9ddb42e
zlib: minor improvements for build/cmake
see also: https://github.com/madler/zlib/issues/781
see also: cacf7f1d4e/CMakeLists.txt (L69)
2025-04-13 19:06:52 +03:00
sowle
48725ea817
minor improvements 2025-04-11 15:51:19 +03:00
sowle
24600931ac
=== version bump: 2.1.5.398 -> 2.1.6.399 === 2025-04-11 02:09:31 +03:00
sowle
ed7597e6b9
tx pool: allow incoming txs to register alias to address, that already has associated alias 2025-04-11 02:07:50 +03:00
cryptozoidberg
7f7b99ed7e
added debug symbols to release builds on unix systems 2025-04-10 23:19:24 +04:00
cryptozoidberg
d4366d3f18
added some diagnostic logs for blockchain caching 2025-04-10 22:42:56 +04:00
zano build machine
cbb9a39bf1 === build number: 397 -> 398 === 2025-04-10 20:13:55 +03:00
sowle
cd5b0c22da
Merge branch 'transfership_refactoring' into develop 2025-04-10 20:12:25 +03:00
cyan
34b9e15301
deps: bump zlib to 1.3.1 (#519)
* Update Dockerfile (#514)

Fixed versions and hardcoded versions in dockerfile

* deps: bump zlib to 1.3.1

---------

Co-authored-by: sowle <crypto.sowle@gmail.com>
Co-authored-by: cryptozoidberg <crypto.zoidberg@gmail.com>
Co-authored-by: David Ed <40647185+Dedme@users.noreply.github.com>
2025-04-10 19:20:19 +03:00
sowle
3abfd90e2f
asset ownership transfer refactoring (WIP) 2025-04-10 03:47:02 +03:00
cryptozoidberg
71248cfd25
fix with resetting state to blocchain shortener 2025-04-10 00:35:59 +04:00
cryptozoidberg
e2406fc518
fixed is_in_long_refresh issue 2025-04-09 16:46:57 +04:00
sowle
f65578f5a5
simplewallet: fixed incorrect handling of daemon-address, daemon-host and daemon-port 2025-04-09 15:39:19 +03:00
cryptozoidberg
144d403c8b
fixed compilation issue 2025-04-09 12:25:05 +04:00
cryptozoidberg
5978ed27f2
fixed issue with deploy asset 2025-04-09 12:10:52 +04:00
sowle
affa0a91ac
Merge remote-tracking branch 'origin/tests_improvements' into develop 2025-04-08 23:20:13 +03:00
sowle
745932738e
coretests: get_tx_version_and_harfork_id_from_events refactoring 2025-04-07 04:47:55 +03:00
cryptozoidberg
d95b07fe0a
multiple improvements over mobile library safety 2025-04-04 12:42:56 +04:00
sowle
0ad804fbc0
Merge branch 'tx_pool_readdition' into develop 2025-04-03 23:32:57 +03:00
sowle
7736199189
minor improvement (log) 2025-04-03 23:32:21 +03:00
sowle
c7f0106bf0
experimental improvements for purge_transaction_from_blockchain() 2025-04-03 18:59:51 +03:00
sowle
df0171d989
coretests: set_use_assets_whitelisting(false) made default for wallets in coretests (2) 2025-04-03 18:27:43 +03:00
sowle
d1cade7bdb
minor improvements 2025-04-03 18:26:47 +03:00
cryptozoidberg
7d3bd99867
potential fix for preventing data race 2025-04-03 17:06:53 +04:00
cryptozoidberg
23f3593ae0
Update README.md 2025-04-01 23:26:22 +04:00
sowle
ff2bb36de4
construct_tx_handle_ado() won't treat opt_descriptor set as an error when >=HF5 anymore, because there's no such a requirement in the core 2025-04-01 18:15:34 +03:00
sowle
d3a2392cfa
coretests: set_use_assets_whitelisting(false) made default for wallets in coretests 2025-04-01 17:03:43 +03:00
cryptozoidberg
701625d2f0
added json-version for sendrawtransaction (cherry-picked) 2025-04-01 15:19:13 +03:00
sowle
68194dc60b
coretests: asset_operations_and_chain_switching added (finished) 2025-04-01 15:18:02 +03:00
sowle
2fd53a59cb
minor improvements (construct_tx, construct_tx_out) 2025-04-01 05:49:35 +03:00
sowle
fb0ba230ea
chaingen: improvements for fill_tx_sources, get_sources_total_amount to support assets more correctly 2025-04-01 05:48:22 +03:00
cryptozoidberg
2872515117
added missing closing tag 2025-03-31 16:14:46 +04:00
cryptozoidberg
bd05907dd8
fixed errors in compilation 2025-03-31 15:37:21 +04:00
cryptozoidberg
9115226f00
fixed tyoe 2025-03-31 15:23:39 +04:00
cryptozoidberg
857a7eabe2
added version to auto-doc 2025-03-31 15:22:14 +04:00
cryptozoidberg
048886c4e9
added ms to lock time report 2025-03-31 13:39:44 +04:00
cryptozoidberg
490198feee
Merge branch 'rpc_extension' into develop 2025-03-29 23:41:45 +04:00
cryptozoidberg
ace2b4dbf5
tests for rpc transfer ownership done 2025-03-29 23:39:36 +04:00
sowle
b48f23ab54
wallet: fixed clearing owner of other type in transfer_asset_ownership() 2025-03-29 12:55:43 +01:00
cryptozoidberg
938050df0f
multiple fixes for wallet rpc api on_asset_send_ext_signed_tx on_attach_asset_descriptor and on_transfer_asset_ownership 2025-03-29 00:14:47 +04:00
sowle
20ad8de9f5
marketplace API: added simple check for zero fee (or incorrect json, resulted in default zero fee) 2025-03-28 21:12:17 +01:00
cryptozoidberg
0662f9bbed
Merge branch 'develop' into rpc_extension 2025-03-28 18:09:38 +04:00
cryptozoidberg
60471f7f46
moved boost checker to right place(now for sure) 2025-03-28 15:27:46 +04:00
cryptozoidberg
8b910b9111
moved boost version checker to right place 2025-03-28 15:23:48 +04:00
cryptozoidberg
2241263925
added message with boost version output 2025-03-28 14:01:22 +04:00
cryptozoidberg
77100b462e
added boost version verification in source code 2025-03-28 13:55:14 +04:00
sowle
9a816a090d
coretests: asset_operations_and_chain_switching added (work is still in progress) 2025-03-27 03:46:05 +03:00
David Ed
d85b94df92
Update Dockerfile (#514)
Fixed versions and hardcoded versions in dockerfile
2025-03-26 15:59:12 +04:00
cryptozoidberg
b603d70be8
Merge branch 'release' into develop 2025-03-26 15:18:31 +04:00
cryptozoidberg
013b7f77ef
compression speed tweak in prewoanload 2025-03-24 22:23:09 +04:00
sowle
c2f0b1166c
Merge branch 'release' into develop 2025-03-24 20:01:42 +03:00
sowle
3095e0fbcb
Merge branch 'release' 2025-03-24 20:01:22 +03:00
sowle
3917d95019
=== version bump: 2.1.4.396 -> 2.1.5.397 === 2025-03-24 19:58:16 +03:00
cryptozoidberg
532f9a81dc
Merge branch 'release' 2025-03-24 14:49:10 +04:00
cryptozoidberg
39e36cf8c8
p2pstate reset 2025-03-24 08:52:40 +04:00
sowle
767f02a3ba
Merge branch 'release' 2025-03-24 07:37:34 +03:00
sowle
f0f54efe17
=== version bump: 2.1.3.395 -> 2.1.4.396 === 2025-03-24 07:07:18 +03:00
sowle
695fc1dd4e
predownload updated to height 3083770 2025-03-24 07:05:25 +03:00
cryptozoidberg
ef9a0ab5fd
added ip blacklisting on unexpected block id 2025-03-24 07:21:52 +04:00
sowle
5984b47ad9
=== version bump: 2.1.2.394 -> 2.1.3.395 === 2025-03-24 02:27:57 +03:00
cryptozoidberg
dc5b5f72a3
moved to v3 db 2025-03-24 03:09:29 +04:00
cryptozoidberg
be129f7a87
tests are work in progress 2025-03-24 02:36:54 +04:00
sowle
5f56d146c2
fixed an issue in pop_asset_info() with deregistering asset after HF5 during chain switching 2025-03-24 01:32:01 +03:00
cryptozoidberg
64e2e53629
test for RPC API COMMAND_ATTACH_ASSET_DESCRIPTOR (in work) 2025-03-22 14:38:57 +04:00
sowle
ec08952674
Merge branch 'release' into develop 2025-03-22 02:44:59 +03:00
sowle
4303f84152
Merge branch 'release' 2025-03-22 00:05:15 +03:00
sowle
616c56fa35
Merge branch 'db_hardfork_id' into release 2025-03-21 23:02:38 +03:00
sowle
cf3930e863
=== version bump: 2.1.1.392 -> 2.1.2.394 === 2025-03-21 23:01:56 +03:00
cryptozoidberg
78293c32d6
couple tweaks for hf5 transition 2025-03-21 21:38:40 +04:00
cryptozoidberg
89e70c74cd
RPC extended for ownership transfer and attachment to wallet 2025-03-21 18:09:27 +04:00
sowle
ead80ac4cb
improvements for the workaround for rear case when an old node is stuck in an altchain right after the hardfork 2025-03-21 14:24:14 +03:00
sowle
b0cbce935e
removed unicode chars from comment 2025-03-21 13:58:11 +03:00
sowle
bbc80a8a77
fixed compilation for gcc/clang 2025-03-20 22:28:10 +03:00
sowle
2e57faf822
implemented workaround for rear case when an old node is stuck in an altchain right after the hardfork 2025-03-20 20:33:34 +03:00
sowle
6be32747c7
minor improvements 2025-03-20 20:30:48 +03:00
sowle
56a265bd48
removed unicode chars from comment 2025-03-20 20:29:28 +03:00
cryptozoidberg
334a90bbe0
added comment 2025-03-20 19:05:18 +04:00
cryptozoidberg
1cc85850bb
merge from p2p_fix2 2025-03-20 19:03:58 +04:00
zano build machine
f136bff547 === build number: 392 -> 393 === 2025-03-20 17:08:25 +03:00
sowle
f08d2ff8af
ui update (PR 143) 2025-03-20 17:07:18 +03:00
Stёpa Dolgorukov
cb92f260e4
one more fix for launching Zano in Ubuntu: Edit AppImage wrapper (#512) 2025-03-20 15:02:39 +01:00
sowle
cd51fcc293
minor updates to currency config 2025-03-20 14:46:13 +03:00
cryptozoidberg
932414dc32
long refresh initially true as well 2025-03-20 15:00:25 +04:00
cryptozoidberg
db788333de
changed initial state of wallet as synchronizing 2025-03-20 14:59:07 +04:00
sowle
488c16138a
Merge branch 'release' into develop 2025-03-20 04:02:52 +03:00
sowle
9674bc9d7a
Merge branch 'master' into release 2025-03-20 04:00:57 +03:00
crypto.sowle
71336c1bc0
readme: added additional step for version check 2025-03-20 01:59:00 +01:00
crypto.sowle
4d5d32c7ed
readme: updated minimum cmake version 2025-03-20 01:40:07 +01:00
cryptozoidberg
357a59a1f7
fixed issue with has_arg missing argument 2025-03-19 18:32:44 +04:00
cryptozoidberg
3e2a39db2c
added proxy to daemon 2025-03-18 18:51:27 +04:00
cryptozoidberg
3a29780d8f
added diagnostic message 2025-03-15 13:35:17 +04:00
cryptozoidberg
ccfc0327e0
version up 2025-03-14 19:18:11 +04:00
cryptozoidberg
405d076ce2
another fix with utf8 sanitizing 2025-03-14 19:15:54 +04:00
cryptozoidberg
e07bba437b
version updated 2025-03-14 14:45:56 +04:00
cryptozoidberg
3ad96b5028
added sanitizing of utf8 in plain wallet, removed unnecessary rpc calls from get recent history 2025-03-14 14:44:27 +04:00
cryptozoidberg
09c3c2c156
increased version 2025-03-14 12:58:41 +04:00
cryptozoidberg
be59c78439
Merge branch 'master' into develop 2025-03-14 12:55:41 +04:00
cryptozoidberg
dfe5238f77
fixed critical issue with SSL support(failed re-connections) 2025-03-14 00:49:14 +04:00
cryptozoidberg
a54c00e823
changed order of warming up(to have most recent blocks as most recent cache) 2025-03-13 17:36:53 +04:00
cryptozoidberg
4715d69596
removed unused header 2025-03-13 16:51:30 +04:00
cryptozoidberg
926549e740
implemented warp-mode for zano daemon 2025-03-12 19:52:10 +04:00
Stёpa Dolgorukov
a588173605
Create .desktop file with name including version (#511) 2025-03-12 16:39:36 +04:00
cryptozoidberg
ec54dc72c9
added full warm up feature 2025-03-12 14:17:40 +04:00
sowle
01b5f89725
Merge branch 'small_amount_min_outs' into develop 2025-03-12 06:29:23 +01:00
sowle
b6efadad40
wallet: more needed_money fixes (primarily for escrow, mode separate tx and sweep bare outs) 2025-03-11 23:38:36 +01:00
cryptozoidberg
d40311da17
put levin return code to right place 2025-03-10 13:59:19 +04:00
cryptozoidberg
d93624bbf4
fixed bug with dummy server destructor being nasty 2025-03-10 13:56:48 +04:00
cryptozoidberg
6b152827af
more profiling logs + callback for the native lib 2025-03-09 14:59:21 +04:00
sowle
e15a7f804e
coretests: asset_operation_and_hardfork_checks fixed to reflect recent changes in balance calculation 2025-03-07 22:26:34 +01:00
sowle
dc81b4331f
fixed a rare bug when very small amounts are being transferred and there's not enough outputs in tx to satisfy min limit 2025-03-07 03:14:23 +01:00
sowle
fca1194f55
coretests: assets_transfer_with_smallest_amount implemented (exposes a bug) 2025-03-06 14:23:01 +01:00
sowle
79e3c6eaf1
chaingen, wallet: improved wallet transfers listing and balance checking when an asset is specified 2025-03-06 14:21:59 +01:00
cryptozoidberg
09ddda7dba
fixed ancient p2p bug 2025-03-05 14:51:11 +04:00
sowle
fbeb658ae0
Merge branch 'release' 2025-03-05 02:46:40 +01:00
sowle
c5c206ea13
Merge branch 'release' into develop 2025-03-05 02:46:06 +01:00
sowle
7ddbabc51e
cmake: set min boost version to 1.75 for all platforms (because of boost::pfr dependency) 2025-03-04 21:37:04 +01:00
cryptozoidberg
11437ac38f
Update Dockerfile 2025-03-04 15:06:59 +04:00
cryptozoidberg
a13eedf556
fix of currency protocol for long range splits 2025-02-28 19:11:37 +04:00
cryptozoidberg
bb92e52ae2
fix of JWT auth wrong expiration units 2025-02-26 14:56:47 +04:00
cryptozoidberg
ca46fca7b1
Added more comments on initi of the plain wallet 2025-02-26 01:20:46 +04:00
cryptozoidberg
5808e1a3d3
changed meta info format to json 2025-02-26 01:20:46 +04:00
sowle
1354eb0d47
Merge branch 'release' into develop 2025-02-25 18:21:03 +01:00
sowle
a448b62e9a
Merge branch 'master' into release 2025-02-25 18:20:35 +01:00
sowle
fe85ce27fb
Merge branch 'release' 2025-02-25 18:17:49 +01:00
cyan
936ff46f9c
add keys to open_wallet_response (#507) 2025-02-18 13:41:27 +04:00
sowle
571897a23b
Merge branch 'develop' into release 2025-02-16 22:59:04 +01:00
zano build machine
f0378d8be0 === build number: 381 -> 382 === 2025-02-17 00:57:26 +03:00
sowle
ede5df5afe
predownload files moved to CDN and updated to height 3030303 2025-02-16 22:56:43 +01:00
sowle
2bcc6075b7
HF5 height is set to 3076400 (mainnet) 2025-02-14 16:08:07 +01:00
Stёpa Dolgorukov
88060ee2a4
linux gui: Escape back slash in the value by the key "Exec" (#505) 2025-02-14 15:03:53 +01:00
sowle
38ae547f5c
send raw tx is disabled during the pre hardfork tx freeze period 2025-02-14 03:24:45 +01:00
sowle
8341f4f31f
minor improvements 2025-02-14 03:23:40 +01:00
sowle
141a8eac6a
chaingen: zarcanum_in_alt_chain_2 (forgotten changes) 2025-02-14 03:22:31 +01:00
sowle
672309ba5f
fixed an issue in alt block miner tx validation 2025-02-14 03:21:24 +01:00
sowle
d8f12cdcc8
chaingen: zarcanum_in_alt_chain_2 test added (highlights an issue in alt block validation) 2025-02-14 03:20:23 +01:00
sowle
cb74abddc5
coretests: chaingen: fill_tx_sources improved 2025-02-14 03:18:25 +01:00
sowle
4c860417f5
pre hardfork tx freeze period implemented (+HF6) 2025-02-14 03:17:33 +01:00
sowle
2006b71250
readme: added bzip2 and libssl-dev to prerequisites 2025-02-13 11:57:47 +01:00
sowle
664a971c46
readme: fixed a typo (credits to @dudebing99) 2025-02-13 11:54:05 +01:00
sowle
05f0458658
ui update (PR 142) 2025-02-12 16:50:10 +01:00
cryptozoidberg
6893535388
changed meta info format to json 2025-02-10 20:44:59 +04:00
zano build machine
b79e962e75 === build number: 380 -> 381 === 2025-02-07 00:11:32 +03:00
sowle
820569ff4e
ui update (PR 141) 2025-02-06 22:09:28 +01:00
zano build machine
c47dee5158 === build number: 379 -> 380 === 2025-02-05 10:02:52 +03:00
sowle
3bbdc9c140
ui update (PR 140) 2025-02-05 08:00:44 +01:00
sowle
337ce00b77
Merge branch 'develop' into release 2025-02-04 12:58:03 +01:00
sowle
a25baf8d94
=== version bump: 2.0.1.378 -> 2.1.0.379 === 2025-02-03 21:27:30 +01:00
sowle
a85445083f
testnet restart (currency formation version: 99 -> 100) 2025-02-03 21:24:32 +01:00
sowle
a0ddaea1a3
Merge branch 'txhfid' into develop 2025-02-03 21:09:01 +01:00
sowle
a101a676b0
minor compilation fix 2025-02-03 19:40:10 +01:00
sowle
ca9a8f95de
Merge branch 'develop' into txhfid 2025-02-03 18:29:45 +01:00
zano build machine
3cf39eec88 === build number: 377 -> 378 === 2025-01-31 19:30:36 +03:00
sowle
3d1f4a5336
now max_seed_height is always greater then or equal to current node's top block height 2025-01-31 17:30:02 +01:00
sowle
8fc70f4d6d
wallet: fixed a bug when a freshly created wallet's node is in then-become alt-chain (credits to @cryptozoidberg) 2025-01-31 17:28:28 +01:00
zano build machine
467fd4b6ba === build number: 376 -> 377 === 2025-01-30 17:40:03 +03:00
sowle
1cd3a95625
ui update (PR 139) 2025-01-30 15:35:53 +01:00
cryptozoidberg
4ad93162e8
https enabled in remote node 2025-01-30 14:50:51 +04:00
zano build machine
2628656537 === build number: 375 -> 376 === 2025-01-29 23:08:01 +03:00
sowle
d14ca4f53f
ui update PR 138 2025-01-29 21:07:07 +01:00
Stёpa Dolgorukov
dd64c805d7
coretests: Update "block_with_correct_prev_id_on_wrong_height" test (#499)
* Core tests: implement the test "block_with_correct_prev_id_on_wrong_height"

* Core tests: update "block_with_correct_prev_id_on_wrong_height" test
2025-01-29 11:24:18 +01:00
Stёpa Dolgorukov
072d53de9b
coretests: Fix MSVC C4146 warning in the test "get_xtype_from_string" (#503)
* Change macros for creating test names

* Add test for values of types int{16,32,64}_t

* Fix MSVC C4146 warning

---------

Co-authored-by: sowle <crypto.sowle@gmail.com>
2025-01-28 10:28:14 +01:00
zano build machine
a23ccd76fb === build number: 374 -> 375 === 2025-01-24 07:27:36 +03:00
sowle
38e6556a49
2nd iteration on diminishing CPU mining presence in mainnet builds 2025-01-24 04:41:55 +01:00
zano build machine
f6d363d313 === build number: 373 -> 374 === 2025-01-21 20:35:34 +03:00
sowle
e73eb4f59a
Merge remote-tracking branch 'origin/nocpumining' into develop 2025-01-21 18:30:58 +01:00
sowle
aab20167fb
ui update (PR 137) 2025-01-21 18:30:30 +01:00
Stёpa Dolgorukov
075ee3119b
coretests: Update "asset_operation_in_consolidated_tx" test (#501)
* coretests: Implement "asset_operation_in_consolidated_tx" test

* Define "construct_tx" overload with a generation context argument

* Update the test "asset_operation_in_consolidated_tx"

---------

Co-authored-by: crypto.sowle <crypto.sowle@gmail.com>
2025-01-21 03:33:11 +01:00
sowle
35f79d3780
zanod, simplewallet now return exit code 0 when '--version' or '--help' are given 2025-01-21 02:22:13 +01:00
sowle
ddd91d8fec
minor warning fix 2025-01-21 01:22:28 +01:00
Stёpa Dolgorukov
1087be7b0a
coretests: implement the tests "block_reward_in_main_chain_basic", "block_reward_in_alt_chain_basic" (#493)
* Core tests: implement tests "block_reward_in_main_chain_basic", "block_reward_in_alt_chain_basic"

* Use an automatic variable type deduction

* Call "assert_reward" callback before the callback "assert_balance"

* Update comments for the test "block_reward_in_alt_chain_basic"
2025-01-21 01:12:44 +01:00
Stёpa Dolgorukov
dcd7f62968
coretests: Fix an execution of the core test "fill_tx_rpc_inputs", rename callbacks (#498)
* Core tests: implement a test of the function "blockchain_storage::fill_tx_rpc_inputs"

* Fix test execution when compiling via gcc 8.4.0

* Rename callbacks in the test "fill_tx_rpc_inputs"
2025-01-20 04:21:27 +01:00
sowle
cf69c29e8d
Merge branch 'release' 2025-01-16 05:52:22 +01:00
sowle
7a5fb3ee25
Merge branch 'release' into develop 2025-01-16 05:50:07 +01:00
sowle
819fd97261
fixed more serious warnings for gcc 2025-01-16 05:49:58 +01:00
sowle
93c6c2a0b3
more compilation fixed for gcc 2025-01-16 05:40:28 +01:00
sowle
cc33fd8b9c
fixed more serious warnings for gcc 2025-01-16 04:24:00 +01:00
sowle
46f6e29efb
fixed gcc 13 compilation + some warnings 2025-01-16 04:23:04 +01:00
sowle
c9fe605ee8
Merge branch 'master' into release 2025-01-16 04:21:51 +01:00
sowle
e2a70189b3
OpenSSL 3.x support 2025-01-14 18:57:50 +01:00
cryptozoidberg
bd4d54e491
added docker sources for remote node 2025-01-09 20:26:02 +04:00
cryptozoidberg
aa24fc2126
Delete unused tests/data directory 2025-01-09 14:44:36 +04:00
sowle
4f1f2ba7e7
Merge branch 'master' into develop 2025-01-06 16:07:03 +01:00
zano build machine
81e77ba37b === build number: 372 -> 373 === 2025-01-06 18:06:45 +03:00
sowle
303e216b26
ui update (PR 136) 2025-01-06 16:05:47 +01:00
sowle
b58939cf27
readme: updated components' version 2025-01-05 04:24:01 +01:00
sowle
68649070cd
Merge branch 'master' into develop 2025-01-05 03:05:50 +01:00
dylan
31e17f91e2
docs: change boost upstream source (#495) 2025-01-05 03:03:31 +01:00
sowle
ad2b10116d
coretests: presumably all tests fixed: multisig_and_unlock_time, multisig_and_coinbase, pos_altblocks_validation@5, gen_wallet_alias_and_unconfirmed_txs@5, hard_fork_4_consolidated_txs@5, multisig_and_checkpoints@0 2024-12-30 15:37:14 +01:00
sowle
6ab3d46529
gcc compilation fix 2024-12-28 18:20:14 +01:00
sowle
23723ca05e
Merge branch 'develop' into txhfid 2024-12-28 15:21:21 +01:00
sowle
13b09ee914
coretests: fill_tx_rpc_inputs temporarily disabled 2024-12-28 15:17:32 +01:00
sowle
4197736fe2
coretests: gcc compilation fixed for fill_tx_rpc_inputs 2024-12-28 04:21:58 +01:00
sowle
059a71fd97
tx hf id: wallet adaptation 2024-12-28 04:20:50 +01:00
sowle
653b05298b
coretests: hard_fork_5_tx_version implemented 2024-12-28 00:27:16 +01:00
sowle
2e01f2291e
tests: fixes for performance_tests and functional_tests 2024-12-27 19:37:39 +01:00
sowle
8dd8a6ac1c
tx hf id: WIP 2024-12-27 07:27:43 +01:00
sowle
61a358b753
2nd attempt to calm down heuristic av by disabling cpu mining in mainnet build 2024-12-25 16:16:10 +01:00
sowle
cd2f044ad8
an attempt to calm down heuristic av by disabling cpu mining in mainnet build 2024-12-25 02:22:22 +01:00
sowle
8e2c70de93
Merge branch 'develop' into txhfid 2024-12-24 22:16:36 +01:00
zano build machine
484f362676 === build number: 371 -> 372 === 2024-12-24 23:49:18 +03:00
sowle
7b527483c2
wallet rpc: getbalance now returns brief utxo stat for each asset 2024-12-24 20:58:58 +01:00
Stёpa Dolgorukov
eda0472f1e
coretests: implemented a test for the function "blockchain_storage::fill_tx_rpc_inputs" (#486) 2024-12-13 23:10:34 +01:00
zano build machine
c0ca49c30a === build number: 370 -> 371 === 2024-12-11 15:58:01 +03:00
sowle
13ed32d67a
ui update (pr 135) 2024-12-11 13:56:20 +01:00
sowle
78f622ead1
bcs: get_block_reward_by_main_chain_height(), get_block_reward_by_hash() implemented; 2) core_rpc_server::fill_block_header_response() now correctly fills 'reward' 2024-12-10 21:27:34 +01:00
sowle
b9557dd70e
chaingen: run-single-test made more specific (exact match is now required) 2024-12-09 23:31:39 +01:00
Stёpa Dolgorukov
18c17e48b1
coretests: implemented test "input_refers_to_incompatible_by_type_output" (#480) 2024-12-09 17:34:28 +01:00
Stёpa Dolgorukov
9e3ece1818
coretests: implemented the test "block_with_correct_prev_id_on_wrong_height" (#479) 2024-12-09 17:32:41 +01:00
zano build machine
11b8933345 === build number: 369 -> 370 === 2024-12-09 17:53:08 +03:00
sowle
8cc4e99199
gui: is_remnotenode_mode_preconfigured() implemented 2024-12-09 15:52:07 +01:00
sowle
13f524defb
tx hardfork id: wip (basic structures, miner tx creation adapted, tests adapted almost all + hard_fork_5_tx_version) 2024-12-06 05:39:18 +01:00
cryptozoidberg
8a8e5c3011
moved docker to subfolder 2024-12-05 17:56:17 +04:00
zano build machine
8a7572d1b8 === build number: 368 -> 369 === 2024-12-04 18:27:52 +03:00
sowle
192ad1382c
get_connectivity_status: is_remote_node_mode flag implemented 2024-12-04 16:25:17 +01:00
sowle
504b4a2ad8
ui update, PR 134 2024-12-04 16:19:47 +01:00
sowle
e747b11d44
implemented https multiple attempts support in interruptible_http_client (using another approach, http_https_simple_client_wrapper introduced) 2024-12-04 02:49:28 +01:00
sowle
95dabbe63a
fixed url parse error for RPCs 2024-12-04 02:46:45 +01:00
zano build machine
1701b97f86 === build number: 367 -> 368 === 2024-12-03 05:07:03 +03:00
sowle
9cfa03d119
ui update 2024-12-03 03:06:02 +01:00
sowle
be44020b1c
win32: CloseHandle removed from console handler stop() to avoid exception on exit in dbg 2024-12-03 02:31:06 +01:00
sowle
2e73594378
predownload https test 2024-12-03 02:30:09 +01:00
sowle
b903d84cac
added https support to interruptible_http_client 2024-12-03 02:29:20 +01:00
cryptozoidberg
9763548fa8
add runtime check for buffer size 2024-11-27 15:34:34 +04:00
cryptozoidberg
6a7c29be51
Fix #482 suggested by @jeffro256 2024-11-26 21:51:23 +04:00
sowle
2817090c8a
Merge branch 'release' 2024-11-21 18:19:50 +01:00
sowle
fe67a2933a
Merge remote-tracking branch 'origin/develop' into release 2024-11-11 18:13:10 +01:00
zano build machine
d63feec2e1 === build number: 366 -> 367 === 2024-11-11 20:12:13 +03:00
sowle
524aa1c79b
Merge branch 'develop' into release 2024-11-11 04:09:40 +01:00
sowle
c8a55c08c7
predownload updated to height 2892700 2024-11-11 04:09:14 +01:00
sowle
c24d165627
Merge branch 'develop' into release 2024-11-11 01:21:05 +01:00
sowle
099f940751
=== set version to 2.0.1.366 === 2024-11-10 22:51:07 +01:00
sowle
2b249ef414
unit_tests: wallet_seed.basic_test fixed to reflect recent changes in password limitations 2024-11-10 22:18:01 +01:00
sowle
912392bee7
=== build number: 364 -> 365 === 2024-11-09 23:29:31 +01:00
sowle
85c2591cfc
account: fixed rare checksum oob issue 2024-11-09 19:47:46 +01:00
sowle
74ef510288
wallets_manager: wallet callback lifetime management fixed 2024-11-09 19:46:51 +01:00
sowle
d28a0e1b13
wallet: minor improvements (override keyword) 2 2024-11-09 19:44:28 +01:00
sowle
fead9075b6
wallet: minor improvements (override keyword) 2024-11-09 19:42:15 +01:00
Stёpa Dolgorukov
7b2388290c
unit_tests: Test the function "check_tx_inputs_keyimages_diff" on different type inputs in the "tx_pool_semantic_validation" test (#478) 2024-11-07 16:13:58 +01:00
zano build machine
41d87d3e27 === build number: 361 -> 362 === 2024-11-07 16:17:45 +03:00
sowle
fa35d54fbb
ui update 2024-11-07 14:00:56 +01:00
zano build machine
23cd004f36 === build number: 360 -> 361 === 2024-11-06 18:17:20 +03:00
sowle
45cd764e80
ui update 2024-11-06 15:49:58 +01:00
sowle
ea394e872a
minor improvements here and there 2024-11-06 14:33:50 +01:00
zano build machine
dca18f4963 === build number: 359 -> 360 === 2024-11-05 17:32:30 +03:00
sowle
b963acc6da
ui update 2024-11-05 15:06:05 +01:00
sowle
c7e17edbc7
simplewallet: minor fix for error text 2024-11-04 22:16:23 +01:00
sowle
f74445d7fd
implemented password validation for seed phrases generation 2024-11-04 22:15:18 +01:00
sowle
0dd79e77c4
removing backslash from allowed password symbols 2024-11-04 19:46:43 +01:00
Stёpa Dolgorukov
422c7f2a3a
unit_tests: implemented a test for the function "prepare_outputs_for_key_offsets" (#477) 2024-11-04 14:12:19 +01:00
cryptozoidberg
d0971413ca
added postponed wallet loop launch in plain wallet 2024-11-02 13:06:08 +04:00
sowle
753effce28
fixed usage of generate_zc_outs_range_proof() 2024-10-31 04:00:11 +01:00
sowle
5bdaf8eaed
removed a redundant param in generate_zc_outs_range_proof() 2024-10-31 03:39:09 +01:00
zano build machine
8be6f286f1 === build number: 358 -> 359 === 2024-10-30 21:16:10 +03:00
sowle
b3393af19a
ui update 2024-10-30 19:07:21 +01:00
sowle
d3632b2f04
wallet2 refactoring: the callback is a weak pointer now 2024-10-30 16:41:01 +01:00
sowle
0fe6631e50
improvements for assets ticket/full_name checking and for password validation 2024-10-30 14:10:24 +01:00
zano build machine
69284ae297 === build number: 357 -> 358 === 2024-10-30 12:41:17 +03:00
cryptozoidberg
10df225359
logs cleanup 2024-10-29 13:37:16 +04:00
cryptozoidberg
e4d9f1da59
added command for printing ip blacklist 2024-10-27 17:49:13 +04:00
zano build machine
a6538b5eca === build number: 356 -> 357 === 2024-10-27 11:01:46 +03:00
cryptozoidberg
647b5c80f6
fixes related to USE_OPEN_SSL_FOR_ECDSA 2024-10-26 15:36:31 +04:00
cryptozoidberg
b0efef8ef1
temporary disabled secp256k1 library 2024-10-26 14:28:27 +04:00
cryptozoidberg
13e67e23e1
very intial code for ECDSA from OpenSSL 2024-10-25 23:57:59 +04:00
cryptozoidberg
c0c39276c7
fixed BUILD_SHARED_LIBS overriding in bitcoin-secp256k1 2024-10-25 20:19:46 +04:00
Stёpa Dolgorukov
4e78beebeb
unit_tests: repair compilation on the G++ 12 compiler (#473) 2024-10-25 18:06:21 +02:00
cryptozoidberg
d88e1952a6
additional condition to handle ado tx 2024-10-25 15:26:45 +04:00
cryptozoidberg
26f2f7511a
added salt to asset generation 2024-10-25 13:43:50 +04:00
cryptozoidberg
8747abe3dd
updated read.me 2024-10-24 21:57:51 +04:00
sowle
f7e64b9164
don't populate cache in get_last_n_blocks_timestamps_median() if the resulted num of blocks isn't equal to window size 2024-10-24 14:44:15 +02:00
cryptozoidberg
a58c0810fb
added ephemenral field for ado in tx history api response 2024-10-24 16:36:11 +04:00
sowle
d625ec94a5
made ts check for pow block template optional 2024-10-24 14:10:14 +02:00
sowle
5ae9b2038e
coretests: several_asset_emit_burn_txs_in_pool test improved and enabled 2024-10-23 23:45:19 +02:00
sowle
6087a1bd40
cpu miner minor improvements (sounds nice) 2024-10-23 22:14:10 +02:00
sowle
2b15aad320
minor improvement for blockchain_storage::create_block_template() 2024-10-23 21:59:05 +02:00
sowle
c90344ea47
an attempt to fix incorrect PoW block template creation in case when there are lots of PoS blocks 2024-10-23 21:52:33 +02:00
cryptozoidberg
f08d8797a0
fixed http-forwarding issue 2024-10-23 20:05:03 +04:00
cryptozoidberg
a8a188b754
workaround fix for old android sdk with old boost(with missing pfr) v3 (shame on me) 2024-10-23 15:05:46 +04:00
cryptozoidberg
5387a7711c
workaround fix for old android sdk with old boost(with missing pfr) v2 2024-10-23 15:01:43 +04:00
cryptozoidberg
fd810d5e29
workaround fix for old android sdk with old boost(with missing pfr) 2024-10-23 14:47:17 +04:00
zano build machine
5e4fae1246 === build number: 355 -> 356 === 2024-10-23 13:22:54 +03:00
sowle
bd473960e4
testnet: hardforks heights reset 2024-10-23 12:22:32 +02:00
zano build machine
d3fc6b955f === build number: 354 -> 355 === 2024-10-23 12:27:24 +03:00
sowle
635cea55e0
testnet: P2P_DEFAULT_PORT calculation pattern changed 2024-10-23 11:26:34 +02:00
sowle
88fa0bca64
readme: Boost version updated 2024-10-23 11:04:12 +02:00
zano build machine
312444aa48 === build number: 353 -> 354 === 2024-10-23 04:41:18 +03:00
sowle
6d7923b7e3
hf5 min build number set to 354 2024-10-23 03:40:43 +02:00
sowle
109b187426
daemon_commands_handler fixed 2024-10-23 03:33:23 +02:00
sowle
fd1ddf5ffc
=== version bump: 2.0.2.352 -> 2.1.0.353 === 2024-10-23 02:01:20 +02:00
sowle
7d93211b9f
testnet relaunch (currency formation version: 98 -> 99) 2024-10-23 02:00:10 +02:00
cryptozoidberg
61ac4dd356
some clarity on opt_amount 2024-10-22 20:45:17 +04:00
cryptozoidberg
0c35b75a9d
Merge branch 'develop' into emmit_burn_refactoring 2024-10-22 20:42:10 +04:00
sowle
d23fa1911e
unit_tests: asset_id serializations test: WIP 2024-10-22 18:27:17 +02:00
cryptozoidberg
05d8c27577
cake wallet fixes in cmake 2024-10-22 20:07:03 +04:00
sowle
121067e36d
Merge branch 'develop' into emmit_burn_refactoring
# Conflicts:
#	src/wallet/wallet2.cpp
#	tests/unit_tests/multiassets_test.cpp
2024-10-22 15:58:29 +02:00
Stёpa Dolgorukov
8cc826f5b3
unit_tests: edit the "p2p_client_version.test0" (#471)
* Unit tests: implement the "p2p_client_version.test0"

* Unit tests: edit the "p2p_client_version.test_0"

* Change a default value for a commit identifier on a non empty expected value

* Format the source text

* Fix the test

* Comment on the cases where results differ on Windows, GNU/Linux
2024-10-22 14:48:29 +02:00
Stёpa Dolgorukov
0cd719474b
unit_tests: reimplement "get_or_calculate_asset_id" tests, fix "get_or_calculate_asset_id" due to serialization changes (#467) 2024-10-22 14:47:36 +02:00
Stёpa Dolgorukov
fbf0d413a8
Get rid of the compiler warning "not all control paths return a value" (#472) 2024-10-22 14:34:19 +02:00
cryptozoidberg
1968608018
fix for android 2024-10-22 14:46:28 +04:00
sowle
ac51ccbf8c
gcc compilation fixed 2024-10-21 20:51:27 +02:00
sowle
6a32f3f26d
readme: Boost minimum version bumped to 1.75 because of boost::pfr 2024-10-21 20:24:13 +02:00
sowle
9cd1121c75
Merge branch 'develop' into emmit_burn_refactoring 2024-10-21 20:21:03 +02:00
sowle
9b033842ab
Merge branch 'master' into develop 2024-10-21 20:20:25 +02:00
sowle
9d259f5455
unit_tests: get_or_calculate_asset_id_* made compilable (but still not runnable) 2024-10-21 20:19:49 +02:00
sowle
e9e7bbf0c5
some fixes in assets handling 2024-10-21 19:17:04 +02:00
cryptozoidberg
aeb313a72c
fixed bugs in ado transition 2024-10-21 19:51:31 +04:00
cryptozoidberg
fcb5513d68
Update README.md 2024-10-21 18:56:52 +04:00
sowle
42b5f32116
test code for wallet2::update_asset 2024-10-21 14:21:55 +02:00
sowle
b2b4342c14
Merge branch 'develop' into emmit_burn_refactoring
# Conflicts:
#	src/version.h.in
#	tests/core_tests/multiassets_test.cpp
2024-10-21 12:42:54 +02:00
sowle
ecc6cc4605
coretests: several_asset_emit_burn_txs_in_pool test added 2024-10-21 12:39:33 +02:00
sowle
3b1f08676e
warning fixed 2024-10-21 12:37:52 +02:00
cryptozoidberg
97b145f8b6
fixes in a coretests related to ado-operations 2024-10-20 23:08:44 +04:00
cryptozoidberg
2dd029fb5d
fixed multiassets_test.cpp 2024-10-20 15:57:47 +04:00
sowle
60423e71b8
boost serialization for crypto::scalar_vec_t and scalar_mat_t 2024-10-20 01:57:30 +02:00
cryptozoidberg
9dc293ec04
core and wallet fixed, coretests still broken 2024-10-19 22:53:43 +04:00
cryptozoidberg
f3618e6418
construc_tx compilation fixed 2024-10-19 21:33:42 +04:00
cryptozoidberg
844e5b823f
wallet2.cpp compilation fixed 2024-10-19 18:50:11 +04:00
cryptozoidberg
1fe0cd17ad
wallet2: implemented proper versioning in serialization asset_descriptor_* structs etc 2024-10-19 17:49:38 +04:00
sowle
0930090365
resurrected asset_owner_pub_key_v 2024-10-18 13:49:21 +02:00
sowle
2632446ee5
core: asset operation refactoring WIP 2024-10-18 03:15:33 +02:00
sowle
7345096a91
Merge branch 'release' into emmit_burn_refactoring
# Conflicts:
#	src/version.h.in
#	tests/functional_tests/crypto_tests_performance.h
2024-10-17 23:38:55 +02:00
cryptozoidberg
2ba22bc53b
fixed typos and minor changes in currency_format_utils.cpp 2024-10-18 01:15:47 +04:00
sowle
7205312837
asset ticker/tull_name regexp updated 2024-10-17 22:30:31 +02:00
cryptozoidberg
b5a44b1698
removed temporary code 2024-10-18 00:27:18 +04:00
cryptozoidberg
b2e9872645
implemented proper versioning in serialization asset_descriptor_* structs + serialization refactoring + boost serialization maps versioning self-vaidation 2024-10-18 00:26:30 +04:00
Stёpa Dolgorukov
40539c1f9d
coretests: edit the test "asset_current_and_total_supplies_comparative constraints" (#469)
* Coretests: implement the test "asset_current_and_total_supplies_comparative_constraints"

* Core tests: correct the test "asset_current_and_total_supplies_comparative_constraints"

* Add a return statement to the body end of the "asset_current_and_total_supplies_comparative_constraints::assert_asset_beta_registered" function
2024-10-17 17:58:48 +02:00
sowle
3c23d42ae4
minor refactoring around crypto::pod_to_hex (added generalized buff_to_hex + performance test) 2024-10-16 00:01:43 +02:00
sowle
5d429e1e76
Merge branch 'release' into develop
# Conflicts:
#	src/version.h.in
2024-10-15 17:39:11 +02:00
sowle
9186119620
=== build number: 349 -> 352 === 2024-10-15 17:35:13 +02:00
sowle
4af367fb5e
new limitations for asset ticker and full_name (wip) 2024-10-15 17:33:46 +02:00
cryptozoidberg
2c72622d7e
merge from develop 2024-10-15 17:57:50 +04:00
cryptozoidberg
ca51bd4886
fixing RPC API for burn 2024-10-15 17:54:50 +04:00
Stёpa Dolgorukov
b836742f66
coretests: improve of the test "tx_pool_semantic_validation" (#465)
* Coretests: implement the test "tx_pool_semantic_validation"

* Play the test "tx_pool_semantic_validation" on the HF 3

* Delete an extra space after the ":"

* Remove an extra adding of objects to the transaction

* Create the input objects of the specified type in the "unsupported input type" case

* Modify the function bodies "inputs_sum", "outputs_sum" to be short

* Remove adding output to the transaction in the cases "inputs amount overflow", "two entries of the same type in extra"

* Get rid of use the object "image" of the type key_image in the case "equal key images in inputs"
2024-10-15 02:30:05 +02:00
Stёpa Dolgorukov
c344739de9
unit_tests: implement the "p2p_client_version.test0" (#466) 2024-10-14 20:41:50 +02:00
sowle
4bb068f056
point_t::operator==() fixed and optimized + various tests 2024-10-12 03:05:07 +02:00
sowle
0a055e892c
Merge commit 'e58b20ae5b62745513b8451af1ae195c9c6a8e20' into release 2024-10-12 03:04:17 +02:00
zano build machine
d06ba31125 === build number: 350 -> 351 === 2024-10-12 04:02:03 +03:00
sowle
5d15ed1c15
point_t::operator==() fixed and optimized + various tests 2024-10-12 03:01:33 +02:00
sowle
b1c70ac2bb
=== version: 2.0.1 -> 2.0.2 === 2024-10-11 05:41:36 +02:00
zano build machine
52bd48dbc3 === build number: 349 -> 350 === 2024-10-10 23:47:36 +03:00
sowle
a307862320
Merge branch 'concise' into develop 2024-10-10 21:23:10 +02:00
sowle
bfa68e4b88
an attempt to fix gcc compilation 2024-10-10 20:45:43 +02:00
sowle
d92a54045b
Merge branch 'develop' into concise 2024-10-10 19:11:50 +02:00
sowle
e58b20ae5b
coretests: test asset_current_and_total_supplies_comparative_constraints was temporary disabled 2024-10-10 19:11:30 +02:00
sowle
986f7dc7d3
minor improvements 2024-10-10 15:20:42 +02:00
Stёpa Dolgorukov
cf8004050c
coretests: correct the test "asset_current_and_total_supplies_comparative_constraints" (#468)
* Coretests: implement the test "asset_current_and_total_supplies_comparative_constraints"

* Core tests: correct the test "asset_current_and_total_supplies_comparative_constraints"
2024-10-10 15:10:25 +02:00
sowle
02aeaa2078
wallet2 : transfer_flags_to_str updated to support recently added flags 2024-10-09 18:10:17 +02:00
sowle
93fdf0e677
functional tests: transactions flow test fixed 2024-10-09 17:48:41 +02:00
sowle
3a6e0c0f2f
Merge branch 'develop' into concise
# Conflicts:
#	src/wallet/wallet2.cpp
#	src/wallet/wallet2_base.h
2024-10-09 01:03:02 +02:00
Stёpa Dolgorukov
3daaad6d43
coretests: implemented test "asset_current_and_total_supplies_comparative_constraints" (#464) 2024-10-08 17:30:23 +02:00
sowle
4e750bf1b0
an attempt to make the merge less freaking crazy 2024-10-08 03:46:40 +02:00
cryptozoidberg
e77831f1f9
little tweak on wallet unconfirmed balance 2024-10-01 20:31:42 +04:00
cryptozoidberg
fc3922996d
added comments to JS code 2024-10-01 15:59:27 +04:00
cryptozoidberg
74b0e6d70f
added secp256k1_ecdsa example in JS/ethers 2024-10-01 15:53:33 +04:00
zano build machine
890b3155b8 === build number: 348 -> 349 === 2024-09-30 13:00:02 +03:00
cryptozoidberg
d992a8bdc3
merged lates UI 2024-09-30 13:57:21 +04:00
sowle
27e310bb84
gcc compilation fixes 2024-09-30 05:06:17 +02:00
cryptozoidberg
744522f3ca
minor changes relatd to secp256k1_ecdsa integration 2024-09-29 23:31:22 +04:00
sowle
53eefa044a
Merge branch 'develop' into release 2024-09-28 03:18:34 +02:00
zano build machine
2badfead11 === build number: 347 -> 348 === 2024-09-28 04:18:10 +03:00
Stёpa Dolgorukov
c1264169cc
Coretests: implement "tx_pool_semantic_validation" test (#462) 2024-09-28 03:17:36 +02:00
sowle
deb74ad9d0
predownload updated up to height 2829200 2024-09-28 03:15:38 +02:00
sowle
4438949480
Merge remote-tracking branch 'origin/develop' into release 2024-09-27 19:08:02 +02:00
zano build machine
ffb90714d6 === build number: 346 -> 347 === 2024-09-27 20:07:40 +03:00
sowle
dd85ad7fce
ui update (fixed wrong commit id) 2024-09-27 17:43:29 +02:00
sowle
d71d82b690
Merge branch 'develop' into release 2024-09-27 13:58:39 +02:00
sowle
48b3796f66
=== version: 2.0.0 -> 2.0.1 === 2024-09-27 13:58:25 +02:00
zano build machine
83b4dd9b36 === build number: 345 -> 346 === 2024-09-27 14:56:11 +03:00
sowle
39b4646e5d
mainwindow: removed redundant param for drop_secure_app_data() 2024-09-27 13:55:10 +02:00
zano build machine
0fafe09544 === build number: 344 -> 345 === 2024-09-25 23:17:33 +03:00
sowle
a9de7944dd
fixed an old error in stratum server when incorrect worker's name (!="miner") invalidates mining address that was already set in daemon 2024-09-25 21:05:02 +02:00
sowle
b8afa3f9c5
gcc warning fixed 2024-09-25 19:06:24 +02:00
zano build machine
565e950072 === build number: 343 -> 344 === 2024-09-25 19:42:09 +03:00
sowle
b1a136561d
testnet: set hardfork 5 height to 241750 2024-09-25 18:32:18 +02:00
zano build machine
f3eceda66b === build number: 342 -> 343 === 2024-09-25 06:25:36 +03:00
sowle
426ca5a22b
p2p: clients with outdated versions now rejected by p2p upon hf activation as well (+tied to hf min build number) 2024-09-25 04:13:41 +02:00
sowle
b77419afc7
runtime config: min build number introduced and tied to hardfork 2024-09-25 04:10:29 +02:00
sowle
8758f6dc79
utils: parse_client_version, parse_client_version_build_number() implemented + unit tests stub 2024-09-25 04:03:57 +02:00
sowle
e0c4a3ec42
epee: added support of "000" to string_to_num_fast 2024-09-25 04:02:47 +02:00
sowle
8c9582d0f7
coretests: eth_signed_asset_basics, eth_signed_asset_via_rpc made HF5-only 2024-09-24 16:00:25 +02:00
sowle
75e30c1372
fixed a warning 2024-09-24 15:59:43 +02:00
zano build machine
39201f3d4a === build number: 341 -> 342 === 2024-09-24 06:37:23 +03:00
sowle
b5e0b21f13
core: asset_operation_ownership_proof_eth is only allowed only since HF5 2024-09-24 05:36:40 +02:00
sowle
cf32e44926
reverted a minor forgotten change in COMMAND_RPC_SEND_RAW_TX 2024-09-24 02:57:54 +02:00
sowle
f17dba64ce
Merge branch 'secp256k1' into develop 2024-09-24 02:14:12 +02:00
sowle
82403dba51
coretests: eth_signed_asset_basics fixed and then greatly improved 2024-09-24 01:34:08 +02:00
sowle
2fc37934cf
removed forcefully nullifying asset_id in emit_asset() (it's up to the caller now) 2024-09-24 01:26:04 +02:00
sowle
f0891a36e8
minor improvements 2024-09-24 01:24:42 +02:00
sowle
d610c38c4e
fixed an error in construct_tx when asset update operation is ongoing with standard owner (non eth) 2024-09-23 20:35:22 +02:00
sowle
7b9c728de2
core: minor readability improvement in validate_asset_operation_against_current_blochain_state() 2024-09-23 20:34:17 +02:00
sowle
c117a76a04
upstream changes 2024-09-23 14:33:22 +02:00
sowle
08281059fb
Merge branch 'develop' into secp256k1
# Conflicts:
#	src/gui/qt-daemon/layout
#	src/simplewallet/simplewallet.cpp
#	src/version.h.in
#	tests/core_tests/chaingen_main.cpp
#	tests/core_tests/multiassets_test.cpp
#	tests/core_tests/multiassets_test.h
#	tests/unit_tests/multiassets_test.cpp
2024-09-23 14:24:00 +02:00
sowle
ef5c1f9c03
coretests: gcc compilation fixed 2024-09-23 06:15:23 +02:00
sowle
7c781ca0ff
chaingen: eth_signed_asset_via_rpc test added 2024-09-23 05:40:16 +02:00
sowle
e737bf5e02
chaingen: check_balance_via_wallet() various improvements 2024-09-23 05:39:40 +02:00
sowle
8ffbfbe60a
minor improvements 2024-09-23 05:38:47 +02:00
sowle
b66c0efc2b
wallet rpc: implemented support for third-party external asset operations signing + various 2024-09-23 05:37:36 +02:00
sowle
44b19dd070
wallet rpc: send_ext_signed_asset_tx call implemented 2024-09-23 05:34:55 +02:00
sowle
bb758a916a
wallet2: assets-related tx generation refactored 2024-09-23 05:29:57 +02:00
sowle
e414752976
refactored asset ownership handling in tx construction 2024-09-23 05:27:46 +02:00
sowle
3c9d6666cd
wallet2: various improvements 2024-09-23 05:25:24 +02:00
sowle
5f1defc5a1
core validation: additional condition validate_ado_ownership() 2024-09-23 05:19:58 +02:00
sowle
3d1ac6124e
core rpc: decrypt_tx_details call implmented 2024-09-23 05:17:00 +02:00
sowle
9d06106a78
fxed arguments order for cast_assign_a_to_b() 2024-09-23 05:15:28 +02:00
sowle
37e62ac079
various improvements 2024-09-23 05:13:26 +02:00
sowle
9d213b19b1
construct_miner_tx() doesn't clear result tx anymore, allowing to pass additional data in extra 2024-09-17 17:59:37 +02:00
Stёpa Dolgorukov
35427f8381
coretests: alt_chain_and_block_tx_fee_median test (#456)
* coretests: alt_chain_and_block_tx_fee_median test

* Run test "alt_chain_and_block_tx_fee_median" on run core tests

* Edit the test preamble
2024-09-16 22:13:49 +02:00
zano build machine
a8adcc07b7 === build number: 340 -> 341 === 2024-09-14 20:52:55 +03:00
cryptozoidberg
17aebd29b5
implemented custom seed option(experimental) 2024-09-14 21:46:52 +04:00
Stёpa Dolgorukov
9d10050325
coretests: asset_operation_in_consolidated_tx test added (#459)
* coretests: Implement "asset_operation_in_consolidated_tx" test
* Define "construct_tx" overload with a generation context argument

---------

Co-authored-by: crypto.sowle <crypto.sowle@gmail.com>
2024-09-12 22:29:09 +02:00
zano build machine
77d6939411 === build number: 339 -> 340 === 2024-09-12 17:05:49 +03:00
sowle
43602031b8
gui: show_notification slot added + minor improvements (logs) 2024-09-12 16:05:08 +02:00
zano build machine
41ef9caf40 === build number: 338 -> 339 === 2024-09-12 07:10:06 +03:00
sowle
d083f54edd
gui update 2024-09-12 06:09:23 +02:00
sowle
7fbfec3441
minor improvements (now unit_tests should be autoexecuted each commit) 2024-09-12 02:39:20 +02:00
sowle
ab73f0d19f
coretests: asset_operation_and_hardfork_checks test fixed 2024-09-11 22:36:54 +02:00
cryptozoidberg
8904cc20c4
fixed serialization test 2024-09-10 18:49:19 +04:00
cryptozoidberg
2a2987b17a
concise mode: last setings for production and tests 2024-09-09 18:26:16 +04:00
cryptozoidberg
1eeb9a4a81
wallet truncating fixed all core tests 2024-09-08 22:42:31 +04:00
Stёpa Dolgorukov
dc76fb9051
unit_tests: fixes for multiassets.get_or_calculate_asset_id_*
* Create multiassets test

* Correct an indentation

* Remove unnecessary assertions in cases of ASSET_DESCRIPTOR_OPERATION_UNDEFINED

* Correctly specify a string that represents the serialized object
2024-09-07 02:12:44 +02:00
Stёpa Dolgorukov
d74a04d6df
coretests: asset_operation_and_hardfork_checks test added
* Implement "asset_operation_and_hardfork_checks" test

* Run "asset_operation_and_hardfork_checks" test on core tests run
2024-09-06 13:57:14 +02:00
cryptozoidberg
9c2e2bb0f8
multiple fixes 2024-09-04 23:04:44 +04:00
Stёpa Dolgorukov
0d3e90f4a5
coretests: asset_operation_and_hardfork_checks test added 2024-09-02 21:26:39 +02:00
cryptozoidberg
ca09405491
core tests working 2024-09-02 21:44:41 +04:00
cryptozoidberg
77a928c78a
wallet compiled ok 2024-09-01 21:23:58 +04:00
cryptozoidberg
4b9a457e64
initial changes on wallet file size/memory consumption improvements 2024-08-31 22:38:23 +04:00
sowle
c82809a0b9
Merge branch 'develop' into secp256k1
# Conflicts:
#	src/wallet/wallet2.cpp
2024-08-28 19:33:26 +02:00
sowle
0b7a138abd
attempt to fix macos compilation 2024-08-27 19:50:05 +02:00
zano build machine
bc3077e429 === build number: 337 -> 338 === 2024-08-27 19:53:11 +03:00
sowle
62c02dab24
minor improvements 2024-08-27 18:52:34 +02:00
sowle
ee93fc00e6
updated ui 2024-08-27 18:48:10 +02:00
sowle
4d6291d7ff
rpc: find_outs_in_recent_blocks RPC implemented 2024-08-22 15:30:51 +02:00
sowle
47a1bd985d
unit_tests: fix for a gcc warning 2024-08-20 18:27:17 +02:00
Stёpa Dolgorukov
443386489c
unit tests: wallet_seed.{timestamp_from_word, word_from_timestamp} added + typo fixed (#450)
* Create wallet_seed.{timestamp_from_word, word_from_timestamp} tests
* Rename functions that convert a word to a timestamp, a timestamp to a word
* Make an implementation of the test in the source code shorter
2024-08-20 17:23:21 +02:00
Stёpa Dolgorukov
9e6faffb49
Create multiassets test (#449) 2024-08-19 12:13:56 +02:00
cryptozoidberg
fde28efdc5
latest fixes for cake wallet 2024-08-14 23:21:19 +04:00
sowle
0c90262e8a
conn_tool: fixed minor error 2024-08-13 21:05:48 +02:00
sowle
f0c7d57c41
LMDB: implemented experimental conversion from 4k pages to 16k pages (untested) 2024-08-13 21:04:51 +02:00
sowle
9f0fa8a390
wallet rpc: parameter renamed 2024-08-13 19:22:48 +02:00
sowle
88a1e96820
wallet rpc: split destinations by default (for users convenience) 2024-08-13 02:07:25 +02:00
sowle
2c06293f24
added additional check for incorrect asset operation type to get_or_calculate_asset_id() 2024-08-13 01:10:22 +02:00
sowle
bc552ff635
kv serialization for asset_descriptor_operation 2024-08-13 01:04:14 +02:00
sowle
faa95dd555
use boost::optional in asset_descriptor_base to avoid gcc compilation issues 2024-08-12 20:14:31 +02:00
sowle
19c818ed9b
minor improvements 2024-08-12 20:09:22 +02:00
sowle
b861d854a9
boost::shared_ptr ->std::shared_ptr 2024-08-12 20:04:18 +02:00
sowle
764e5a2adf
kv serialization support for std::shared_ptr 2024-08-12 19:41:55 +02:00
cryptozoidberg
e5f0fe6e76
attempt to fix broken compilation for android(and keep ios healthy with std::filesystrem) 2024-08-09 19:20:09 +04:00
cryptozoidberg
820d5a88ac
test data for new forkchoice rule generated(fork_choice_rule_test.fork_choice_rule_test_hf4) 2024-08-08 21:04:52 +04:00
cryptozoidberg
08e2f0fbf1
fixed space-failing of the seed phrase 2024-08-08 15:55:50 +04:00
cryptozoidberg
44d3317dd2
replacing conflicting namespace 2024-08-08 11:22:21 +04:00
cryptozoidberg
f48811ff44
attempt to fix filesystem crosscompiling 2024-08-08 10:04:44 +04:00
zano build machine
79fdecce32 === build number: 336 -> 337 === 2024-08-07 18:26:53 +03:00
cryptozoidberg
1cbb2eca1b
seed doctor implemented 2024-08-07 19:18:44 +04:00
cryptozoidberg
592fe81a47
fix for emmit api 2024-08-06 15:51:36 +04:00
sowle
389662b8c9
gcc compilation fix (2) 2024-08-02 16:14:23 +02:00
sowle
f8c54492f1
gcc compilation fix 2024-08-02 14:11:32 +02:00
sowle
e816cd969c
minor improvements 2024-08-02 12:36:08 +02:00
sowle
896eadd77b
coretests: eth_signed_asset_basics test added 2024-08-02 12:35:46 +02:00
sowle
27ecfad1d6
asset owner eth signer support for currency_format_utils and wallet2 2024-08-02 12:34:28 +02:00
sowle
fa4a2680f9
minor improvements for init_playtime_test_wallet_t() 2024-08-02 12:31:33 +02:00
sowle
e97b585659
crypto: eth_secret_key_to_public_key() implemented, other useful stuff for eth sig added 2024-08-02 12:00:35 +02:00
sowle
65af445ebb
Merge branch 'develop' into secp256k1 2024-08-02 11:56:53 +02:00
Stёpa Dolgorukov
a1a53012fb
Implement xtype_from_string tests for types int16_t, int32_t, int64_t (#447)
* Change macros for creating test names
* Add test for values of types int{16,32,64}_t

---------

Co-authored-by: sowle <crypto.sowle@gmail.com>
2024-08-01 23:10:19 +02:00
sowle
168281f862
coretests: tx_version_against_hardfork test added (not working yet due to few issues left intentionally) 2024-08-01 01:39:13 +02:00
zano build machine
132d2bf89f === build number: 335 -> 336 === 2024-07-26 14:02:37 +03:00
sowle
0a23950747
ui update 2024-07-26 13:01:34 +02:00
sowle
ef28b3ab71
Merge branch 'develop' into secp256k1 2024-07-26 12:10:57 +02:00
zano build machine
968051109a === build number: 334 -> 335 === 2024-07-26 13:04:43 +03:00
sowle
4365a76169
wallet: minor improvements 2024-07-26 04:53:32 +02:00
sowle
ac01843e27
wallet: sweep_below improved (fixed a couple of issues happening when there's a lot of small outs in the wallet) 2024-07-26 04:52:38 +02:00
sowle
449ac06070
simplewallet: balance and "balance raw" commands prioritize Zano native coins by showing it on the top row + minor improvements 2024-07-26 04:50:49 +02:00
sowle
fe98c140ac
wallet: minor refactoring for tx_too_big and other for clearness 2024-07-26 04:49:04 +02:00
sowle
712f66d3ee
set formal limit on tx input count to 256 (because of the asset surjection proof limits) 2024-07-26 02:22:21 +02:00
zano build machine
f0d82776b7 === build number: 333 -> 334 === 2024-07-25 15:51:12 +03:00
cryptozoidberg
12c5a0237b
fixed asset_emission_and_unconfirmed_balance 2024-07-24 23:49:00 +04:00
sowle
0bc14fa477
eth signature for CA: data structures + validate_ado_ownership() adaptation 2024-07-18 00:14:03 +02:00
sowle
ef73204960
added support for std::optional to src/serialization and boost serialization 2024-07-17 19:43:53 +02:00
cryptozoidberg
270bb925f5
updated documentation 2024-07-17 19:30:19 +04:00
sowle
3cb471c46c
Merge branch 'develop' into secp256k1 2024-07-15 21:41:12 +02:00
sowle
7c3d21e31f
coretests: minor fixes (gcc) 2024-07-13 00:31:49 +02:00
sowle
69a5d42d99
Merge branch 'release' 2024-07-12 13:57:57 +02:00
sowle
7d442b4c9a
coretests: gen_wallet_mine_pos_block adapted for HF4 2024-07-12 02:17:54 +02:00
sowle
b556f2ad86
minor improvements 2024-07-11 22:10:54 +02:00
sowle
567700635c
coretests: wallet_true_rpc_pos_mining test added 2024-07-11 22:10:37 +02:00
sowle
2582159a26
coretests: added ability to run "true" HTTP-RPC wallet tests via localhost connections 2024-07-11 22:09:55 +02:00
sowle
e17ede1649
rpc: set_ignore_connectivity_status() was ignored for some RPC, fixed 2024-07-11 22:04:42 +02:00
sowle
59ea01339d
Merge branch 'develop' into release 2024-07-11 21:34:59 +02:00
zano build machine
45eeb8c5f9 === build number: 332 -> 333 === 2024-07-11 22:34:29 +03:00
sowle
156c96fc42
minor bugfix in print_asset_info() 2024-07-11 21:32:18 +02:00
sowle
648f6954f4
wallet: allow to burn an asset up to zero 2024-07-11 21:21:22 +02:00
sowle
337e88254e
Merge branch 'develop' into release 2024-07-11 13:50:11 +02:00
zano build machine
c1d37852c5 === build number: 331 -> 332 === 2024-07-11 14:49:28 +03:00
sowle
55358fc420
ui update 2024-07-11 12:32:20 +02:00
sowle
bb439b0107
fixed a bug in transform_t_pod_array_to_hex_str_array() 2024-07-10 13:52:36 +02:00
sowle
1165101867
Merge branch 'develop' into release 2024-07-09 17:46:51 +02:00
zano build machine
ebd5815845 === build number: 330 -> 331 === 2024-07-09 18:46:08 +03:00
sowle
461f8b9b47
ui update 2024-07-09 17:45:44 +02:00
zano build machine
c50c5f42be === build number: 329 -> 330 === 2024-07-09 18:37:16 +03:00
sowle
8a8030c99b
Merge remote-tracking branch 'origin/dp_limits' into develop 2024-07-09 17:32:48 +02:00
zano build machine
f6400abaec === build number: 328 -> 329 === 2024-07-08 01:47:13 +03:00
sowle
f0aef9782a
Merge branch 'develop' into dp_limits 2024-07-07 22:34:31 +02:00
zano build machine
86e5af333f === build number: 327 -> 328 === 2024-07-07 23:33:39 +03:00
sowle
4ca10cfcb4
wallet: fixed a mistake in wallet2::finalize_transaction() fee check 2024-07-07 22:32:14 +02:00
zano build machine
c5d5311121 === build number: 327 -> 328 === 2024-07-07 22:40:54 +03:00
sowle
b844f2ddf8
simplewallet: asset_emit and asset_update now uses human-friendly amouts format + minor improvements 2024-07-07 20:40:33 +02:00
sowle
d3a4db9e37
set upper limit for the decimal point to to 18 in wallet2::deploy_new_asset() 2024-07-07 20:39:22 +02:00
zano build machine
1910715033 === build number: 326 -> 327 === 2024-07-07 21:37:23 +03:00
sowle
cdb9dd2f1f
unit tests: added a test for print_money_brief 2024-07-07 20:35:03 +02:00
sowle
e2998acc9d
print_fixed_decimal_point() and print_money_brief() fixed for too big decimal point values 2024-07-07 20:34:19 +02:00
sowle
bb6fa6f7bd
wallet: minor improvements over balance command 2024-07-07 20:33:06 +02:00
sowle
039b6674c4
coretests: asset_emission_and_unconfirmed_balance test added 2024-07-06 21:57:38 +02:00
sowle
e7ac63adb3
wallet2: minor improvement for wallet2::finalize_transaction() 2024-07-06 21:56:24 +02:00
sowle
4f33eb4078
minor improvements for fill_tx_rpc_payload_items() 2024-07-06 21:55:36 +02:00
sowle
11ba3489c3
Merge branch 'release' into develop 2024-07-06 21:55:04 +02:00
zano build machine
31ac5e4974 === build number: 325 -> 326 === 2024-07-06 18:16:52 +03:00
sowle
0eabc7b69e
fixed non-standard decimal point handlinig in wallets_manager::transfer() 2024-07-06 17:15:56 +02:00
sowle
b547e51719
Merge branch 'develop' into release 2024-07-05 18:01:49 +02:00
zano build machine
4d4e362c61 === build number: 324 -> 325 === 2024-07-05 19:01:13 +03:00
sowle
07c5256440
using of asset id clarified for docs 2024-07-05 18:00:22 +02:00
sowle
9973546472
wallet RPC: enforce null asset id in destinations for asset emit operation 2024-07-05 17:19:37 +02:00
cryptozoidberg
1ea5c1aa53
implemented burn assets API + fixed deploy asset API 2024-07-05 18:23:30 +04:00
sowle
e726ae9da6
Merge branch 'develop' into release 2024-07-04 20:14:27 +02:00
zano build machine
d0c65a04e7 === build number: 323 -> 324 === 2024-07-04 21:13:27 +03:00
sowle
3d69468cfd
wallet2: minor improvements for get_balance_str_raw() and get_asset_decimal_point() 2024-07-04 20:11:11 +02:00
zano build machine
a6808b4646 === build number: 322 -> 323 === 2024-07-03 05:37:56 +03:00
sowle
3154c7b72d
fixed select_indices_for_transfer() + several improvements to decimal_point=0 support 2024-07-03 01:40:40 +02:00
sowle
8aa1654a3f
=== build number: 321 -> 322 === 2024-07-02 20:59:07 +02:00
sowle
95e63b7b7e
wallet: minor improvement for get_transfers_str (aka list_outputs): mark locked transfers with * 2024-07-02 20:57:58 +02:00
sowle
28d841d114
wallet: fixed non-native coins error, incorrect mixin count and tx regeneration in sweep_below() 2024-07-02 20:57:00 +02:00
sowle
fe3a0ea39a
wallet: fixed incorrect decimal point for some log messages and not_enough_money error 2024-07-02 20:54:41 +02:00
sowle
3a3aed7469
simplewallet: fixed a bug with incorrect parsing of transfer amounts when the decimal point is non-standard + more verbose error messages 2024-07-02 20:51:47 +02:00
sowle
b6e84b460e
added decimal point support to currency::parse_amount() + minor refactoring 2024-07-02 20:49:51 +02:00
sowle
9150c31666
fixed wallet2::finalize_transaction() to correctly handle too big txs (and not to pass them to the daemon) 2024-07-02 17:22:07 +02:00
sowle
2b9caf2cb3
docs: some asset_descriptor fileds clarified a bit 2024-07-02 17:20:02 +02:00
sowle
fb22df4850
build: unused mdbx tools projects are excluded from the default MSVC build for convenience 2024-07-02 17:18:47 +02:00
sowle
d7cf27033c
forgotten include 2024-07-02 13:16:30 +02:00
sowle
f05d14a944
crypto: basic eth signature implementation + functional test 2024-07-02 13:15:48 +02:00
sowle
486fb05f73
updated submodule bitcoin-secp256k1 in attempt to fix gcc compilation issue 2024-07-01 21:35:27 +02:00
sowle
3b6fa728b7
added bitcoin-secp256k1 submodule at version 5.0 2024-07-01 14:14:00 +02:00
sowle
d94afc207c
Merge branch 'develop' into secp256k1 2024-07-01 13:58:37 +02:00
sowle
0e69e059fe
fixed incorrect end-of-object indentation in dump_as_json() and similar functions 2024-06-29 13:59:01 +02:00
sowle
4e20dad924
RPC API: added missing documentation examples 3 2024-06-28 19:51:28 +02:00
cryptozoidberg
05547c5c0d
added LICENSE file to root folder 2024-06-27 23:34:07 +04:00
zano build machine
41f9302fce === build number: 320 -> 321 === 2024-06-27 21:03:11 +03:00
sowle
b51b26cb14
ui update 2024-06-27 20:01:57 +02:00
sowle
c26d449630
RPC API: added missing documentation examples 2 2024-06-27 19:38:19 +02:00
sowle
d2b60b0090
RPC API: added missing documentation examples 2024-06-27 16:08:44 +02:00
sowle
21aae4496c
DOC_EXMP_AGGR added 2024-06-27 16:08:04 +02:00
sowle
8f25f0d460
bitcoin-secp256k1 submodule added + native crypto test 2024-06-26 21:15:44 +02:00
cryptozoidberg
7ff58b6b18
added missing documetation - 2 2024-06-26 22:29:58 +04:00
cryptozoidberg
e31e2730c9
added missing documetation 2024-06-26 22:02:03 +04:00
sowle
da5c484025
functional_tests/crypto_tests: all performance tests now have prefix "perf", all normal tests with "crypto" prefix will be run regularly since now 2024-06-26 17:30:55 +02:00
sowle
cee6e51cbb
unit_tests: tx_signatures_packing.1 fixed 2024-06-26 15:35:52 +02:00
sowle
d4d3ea1d23
unit_tests: p2p_client_version_test_1 fixed 2024-06-26 14:56:37 +02:00
cryptozoidberg
291d39383d
fixed description in simplewallet(reported by Gonbatfire) 2024-06-25 21:20:36 +04:00
sowle
c101a21010
warning fixed 2024-06-25 15:55:36 +02:00
sowle
5ab468be42
validate_tx_details_against_tx_generation_context implemented 2024-06-25 15:46:53 +02:00
sowle
5e8cfb9ee3
coretests: hard_fork_2_incorrect_alias_update fixed due to change in logic of wallet2::request_alias_update() 2024-06-25 14:41:36 +02:00
sowle
226c3653ac
minor improvements: CHECK_AND_ASSERT_EQ(), stream support for std::type_info 2024-06-24 23:28:47 +02:00
sowle
c21785add4
fix for #440 2024-06-24 12:16:42 +02:00
zano build machine
63c2a299a5 === build number: 319 -> 320 === 2024-06-22 21:37:45 +03:00
sowle
3882d024cb
simplewallet: display own assets with correct decimal point, get_asset_info() knows own assets, + minor fixes 2024-06-22 20:25:04 +02:00
sowle
6408ea007f
ui update 2024-06-22 19:55:14 +02:00
cryptozoidberg
c01e9a5862
added async call for 2-arguments slots 2024-06-19 14:45:53 +02:00
zano build machine
5f62c76a2f === build number: 318 -> 319 === 2024-06-19 00:55:44 +03:00
cryptozoidberg
af49225221
small tweak for bridge serialization 2024-06-17 22:13:07 +02:00
zano build machine
cb08646fc1 === build number: 317 -> 318 === 2024-06-17 01:42:12 +03:00
cryptozoidberg
2f535f011e
fixed get_assets_list api 2024-06-14 23:20:43 +02:00
cryptozoidberg
cdd435f042
added update alias api + coretest 2024-06-14 15:08:56 +02:00
cryptozoidberg
47e10e7209
added new api to update alias 2024-06-06 21:24:31 +02:00
cryptozoidberg
d622078ef9
added universal command that call rpc-api 2024-06-03 20:57:53 +04:00
cryptozoidberg
10c1f7f59a
added commands for transfer ownership over asset descripto 2024-06-02 21:12:06 +04:00
sowle
dd7d1d3109
greatly refactored alt block verification and improved it for post-HF4 era (now all updated tests should pass) 2024-06-01 22:06:21 +02:00
sowle
66fd58b8ee
coretests: many altchain tests adapted for post-HF4:
pos_altblocks_validation
  chain_switching_when_gindex_spent_in_both_chains
  alt_blocks_validation_and_same_new_amount_in_two_txs
  alt_blocks_with_the_same_txs
  chain_switching_when_out_spent_in_alt_chain_mixin
  chain_switching_when_out_spent_in_alt_chain_ref_id
2024-06-01 21:20:58 +02:00
sowle
7da72fcc89
chaingen: pos_block_builder adapted for HF4 and now can generate correct Zarcanum PoS blocks 2024-06-01 21:15:42 +02:00
sowle
66f2761f67
chaingen: find_global_index_for_output, generate_pos_block_with_given_coinstake adapted for HF4; decode_output_amount_and_asset_id, decode_native_output_amount_or_throw added 2024-06-01 21:12:26 +02:00
sowle
fdc8bf19e0
gcc compilation fix 2024-05-31 16:05:52 +02:00
sowle
c92ca6fb93
chaingen: --run-single-test now accepts specific HF, e.g.: --run-single-test=test_name@4 2024-05-31 15:51:42 +02:00
sowle
092e0f1e60
minor improvements, typos, log msgs 2024-05-31 15:49:55 +02:00
cryptozoidberg
d0bad4213a
fixed bug in rpc asset deploy function 2024-05-25 01:11:30 +04:00
sowle
0c1fe0cf80
Dockerfile brought up-to-date 2024-05-21 02:17:58 +02:00
sowle
cc79aa87b3
Merge branch 'release' 2024-05-16 20:35:43 +02:00
sowle
db1dedbb0a
Merge branch 'develop' into release 2024-05-16 14:47:15 +02:00
zano build machine
9795460468 === build number: 316 -> 317 === 2024-05-16 14:11:53 +03:00
sowle
155181d899
ui update 2024-05-16 13:04:45 +02:00
sowle
071e02f278
Merge branch 'develop' into release 2024-05-14 12:35:38 +02:00
zano build machine
4c2ac48337 === build number: 315 -> 316 === 2024-05-14 13:34:09 +03:00
sowle
b154d84330
ui update 2024-05-14 12:33:22 +02:00
sowle
05f4a4e482
Merge branch 'develop' into release 2024-05-14 11:37:18 +02:00
zano build machine
01a8fdda68 === build number: 314 -> 315 === 2024-05-14 12:36:49 +03:00
sowle
2abe23c5e6
ui update 2024-05-14 11:35:55 +02:00
sowle
b91d902791
Merge branch 'develop' into release 2024-05-13 15:47:01 +02:00
zano build machine
df6fa3f7c5 === build number: 313 -> 314 === 2024-05-13 16:45:05 +03:00
cryptozoidberg
10c451f3b7
Added PoS grinding attack fuse 2024-05-13 16:51:13 +04:00
sowle
5342440fd6
Merge branch 'develop' into release 2024-05-10 17:01:19 +02:00
zano build machine
7237867f15 === build number: 312 -> 313 === 2024-05-10 18:00:01 +03:00
sowle
88d94fde3f
ui update 2024-05-10 16:59:10 +02:00
sowle
348e263ebe
Merge branch 'develop' into release 2024-05-09 21:20:16 +02:00
zano build machine
e45dbb4f2c === build number: 311 -> 312 === 2024-05-09 16:43:31 +03:00
sowle
4bdfb47fc3
ui update 2024-05-09 15:42:49 +02:00
zano build machine
525132cf11 === build number: 310 -> 311 === 2024-05-08 22:44:29 +03:00
cryptozoidberg
6655a6feaf
attempt to fix file with wrong item in last m_last_zc_global_indexs 2024-05-08 23:43:52 +04:00
cryptozoidberg
7ff0463587
add wallet prefix to log 2024-05-08 22:07:43 +04:00
zano build machine
1609631431 === build number: 309 -> 310 === 2024-05-08 21:01:12 +03:00
cryptozoidberg
fe3c3d731b
added extra logs for wallet issue - 2 2024-05-08 21:59:30 +04:00
cryptozoidberg
14a0be050e
added extra logs for wallet issue 2024-05-08 21:54:30 +04:00
sowle
030dd348b4
Merge branch 'develop' into release 2024-05-08 01:46:10 +02:00
zano build machine
e809d821a1 === build number: 308 -> 309 === 2024-05-08 02:44:25 +03:00
cryptozoidberg
fd25b5a8e5
attempt to fix wallet exception on alt blocks 2024-05-08 01:04:07 +04:00
zano build machine
4c2553a482 === build number: 307 -> 308 === 2024-05-07 17:43:07 +03:00
sowle
c68f841fdb
ui update 2024-05-07 16:42:37 +02:00
zano build machine
b56a0fb90c === build number: 306 -> 307 === 2024-05-05 23:25:41 +03:00
sowle
c6488622eb
temporary fix for ZC outs validation in validate_alt_block_input() 2024-05-05 22:19:16 +02:00
zano build machine
e40d9df2ec === build number: 305 -> 306 === 2024-05-04 22:27:57 +03:00
zano build machine
455ece8cba === build number: 304 -> 305 === 2024-05-04 05:28:48 +03:00
sowle
d9633d5b06
get_block_reward simplified ver 2024-05-04 03:48:14 +02:00
sowle
d52cb725d1
updated macos deployment target: 10.13 -> 10.15 (required for std::filesystem) 2024-05-04 03:24:15 +02:00
sowle
f7aab6f332
coretests: restored forgotten multisig_n_participants_seq_signing test 2024-05-04 03:18:40 +02:00
sowle
b3c44598b0
minor improvements & code cleanup 2024-05-04 03:17:56 +02:00
sowle
702817e351
fixed a potential issue in check_ms_input() 2024-05-04 03:16:28 +02:00
sowle
81ac6cf333
removed redundant hardfork check from check_tx_inputs(), because it's already in validate_tx_for_hardfork_specific_terms() 2024-05-04 03:15:13 +02:00
sowle
e38dfc1472
coretests: hardfork_4_pop_tx_from_global_index test added to cover uncovered areas in pop_transaction_from_global_index() 2024-05-04 02:35:51 +02:00
sowle
5500e943dd
did some refactoring around validate_miner_transaction()
code simplified
fixed an issue with already_generated_coins not taking block size penalty into consideration
2024-05-04 02:33:05 +02:00
sowle
e57709a67f
prevalidate_miner_transaction() now checks HF condition for the given height instead of the top height 2024-05-04 02:24:11 +02:00
sowle
2e75597365
code clean-up and minor improvements 2024-05-04 02:21:34 +02:00
zano build machine
a12fd42a8e === build number: 303 -> 304 === 2024-05-04 03:13:22 +03:00
sowle
5e07e3c4e0
an attempt to fix linux build 2024-05-04 02:05:17 +02:00
sowle
2b1c1094a6
fix for m_db_per_block_gindex_incs container (was not populated properly due to a bug in append_per_block_increments_for_tx()) 2024-05-03 18:39:26 +02:00
cryptozoidberg
7a0ec043a1
fixed issue with multithreadin and jwt rpc 2024-05-03 20:08:22 +04:00
cryptozoidberg
423b99cc5e
fixes in UI for latest qt and latest UI commits 2024-05-02 19:12:35 +04:00
cryptozoidberg
a853f77c00
added Debug config, replace boost to std (due to deadlock in boost guts) 2024-05-01 19:20:44 +04:00
cryptozoidberg
1d153834d9 fixed m3 simulator build for ios 2024-04-30 20:29:11 +04:00
cryptozoidberg
d718d876fc
added address field to get_seed_phrase_info 2024-04-27 23:26:32 +04:00
sowle
db4b841f57
minor fixes and code cleanup 2024-04-25 19:13:57 +02:00
zano build machine
89e6555e2a === build number: 302 -> 303 === 2024-04-25 18:00:29 +03:00
sowle
3ab93654f5
ui update 2024-04-25 16:59:42 +02:00
sowle
7fdc82a630
minor code cleanup 2024-04-25 16:46:36 +02:00
cryptozoidberg
1196423f02
fixes over documentation autogen 2024-04-22 23:29:00 +04:00
sowle
6f4e1465bc
utils: macosx_bild_uploader: increased attempts count (i.e. timeout) 2024-04-22 17:50:41 +02:00
sowle
15e653a8ae
minor refactoring: get_base_block_reward() now requires only block height (for clarity) 2024-04-22 17:45:10 +02:00
cryptozoidberg
b102d0d3b9
fixed command line to common style 2024-04-22 18:48:20 +04:00
zano build machine
47dfdf1e0b === build number: 301 -> 302 === 2024-04-22 17:31:56 +03:00
sowle
08a753b4c9
ui update 2024-04-22 16:30:42 +02:00
sowle
63dadb37c6
compilation fix for blockchain_storage::get_assets() 2024-04-22 01:25:28 +02:00
sowle
9f8ce4cc09
daemon RPC documentation added 2024-04-21 04:41:43 +02:00
cryptozoidberg
2e2d3c26b4
Moved UI to latest commit 2024-04-20 00:10:55 +04:00
cryptozoidberg
ad66a6db30
added get_assets_list command to daemon API 2024-04-20 00:07:38 +04:00
zano build machine
eae8fde294 === build number: 300 -> 301 === 2024-04-16 17:26:21 +03:00
sowle
530acf4662
wallet2::has_bare_unspent_outputs() was fixed for the testnet 2024-04-11 17:14:43 +02:00
sowle
e52ff16733
wallet2: fixed height upper limit in decoy request for pre-HF4 PoS mining (effective mostly for the testnet) 2024-04-11 17:00:36 +02:00
cryptozoidberg
e3d1956ba3
implemented RPC API for assets deployment 2024-04-11 14:29:03 +02:00
cryptozoidberg
c54f3fc1d8
added seed to wallet generation api 2024-04-10 19:31:01 +02:00
sowle
4f74046e62
Merge branch 'master' into develop 2024-04-10 19:14:51 +02:00
sowle
82e52e951a
build version: 299 -> 300 2024-04-10 19:13:58 +02:00
sowle
d1f7f436f8
build version: 299 -> 300 2024-04-10 19:13:13 +02:00
cryptozoidberg
ed62452853
hardfork 5 2024-04-10 19:10:32 +02:00
sowle
a39a3ddd55
merge master into develop 2024-04-10 17:47:08 +02:00
cryptozoidberg
3cde8738c2
added example values to wallet_provision_info 2024-04-10 14:52:46 +02:00
cryptozoidberg
53a27a4306
documented wallet_provision_info 2024-04-10 14:51:33 +02:00
cryptozoidberg
ef16abb41a
extra line break added 2024-04-10 14:47:28 +02:00
sowle
d3f3bb07e0
restarted testnet (build version bumped up to 299) 2024-04-10 14:24:59 +02:00
cryptozoidberg
ac63489325
last fixes for uri 2024-04-10 14:19:48 +02:00
cryptozoidberg
cb1f62d4ff
fixedbug with crash on autodoc 2024-04-10 14:19:48 +02:00
sowle
75cb3bcaf8
more compilation fixes 2024-04-10 13:49:44 +02:00
sowle
30eba2dadf
fixed compilation (handle_http_request_map definition) 2024-04-10 13:33:37 +02:00
cryptozoidberg
18650cda63
moved code to common header 2024-04-10 13:19:36 +02:00
sowle
e8280f7e42
coretests: fixed compilation & warnings 2024-04-10 12:16:45 +02:00
cryptozoidberg
a91ded81b0
and fixed another compilation issUe 2024-04-09 23:09:22 +02:00
cryptozoidberg
cd88249598
fixed few compilation issies 2024-04-09 23:00:27 +02:00
cryptozoidberg
3a792e9a8e
added wallet API complete documentation 2024-04-09 22:52:56 +02:00
zano build machine
42fda5eaf7 === build number: 297 -> 298 === 2024-04-09 23:22:56 +03:00
sowle
56b6260348
warning fixed 2024-04-09 22:21:42 +02:00
sowle
65dfe90526
wallet2: fixed sweep_bare_outs(), added new overloading for prepare_tx_sources() 2024-04-09 21:44:44 +02:00
sowle
021fbb7d37
coretests: added test hardfork_4_wallet_sweep_bare_outs which exposes a bug in sweep_bare_outs() where it fails if there's not enough decoys 2024-04-09 21:43:13 +02:00
zano build machine
19eb7baaa2 === build number: 296 -> 297 === 2024-04-08 19:33:30 +03:00
sowle
7be8865755
wallet2: fixed add_to_last_zc_global_indexs() 2024-04-08 18:31:06 +02:00
zano build machine
b8cc8818ee === build number: 295 -> 296 === 2024-04-08 14:54:06 +03:00
sowle
eddc3091a7
ui update 2024-04-08 13:52:03 +02:00
cryptozoidberg
7f0b99c25e
another good iteration on auto documenting feature 2024-04-07 16:43:55 +02:00
cryptozoidberg
63d4bde2d9
removed seed phrase from open wallet response 2024-04-06 19:23:19 +02:00
cryptozoidberg
a2307d45fd
fixed broken compilation 2024-04-06 18:54:02 +02:00
cryptozoidberg
0e87eb69b5
Merge branch 'release2' into develop 2024-04-06 17:23:21 +02:00
cryptozoidberg
e422b42ba6
fixes in lang tools 2024-04-06 17:22:44 +02:00
cryptozoidberg
b4ab654f11
fixed wallet bug in calculating last available global index in zarcanum era 2024-04-06 17:21:03 +02:00
cryptozoidberg
d4b29a30b5
fixes for gcc 2024-04-05 17:22:05 +02:00
cryptozoidberg
0b62abbca0
test changes 2024-04-05 17:22:05 +02:00
sowle
a142d39fc9
coretests: hardfork_4_wallet_transfer_with_mandatory_mixins test fixed 2024-04-05 17:20:40 +02:00
sowle
fa67466d20
wallet2: fix an issue in prepare_tx_sources() where some transfers may be locked if there's was exception during preparing phase 2024-04-05 14:09:27 +02:00
sowle
92c6a9d51d
coretests: hardfork_4_wallet_transfer_with_mandatory_mixins test added, exposing a bug where a wallet cannot spend coins before a specific sync process was done 2024-04-05 13:56:24 +02:00
sowle
737d7353a4
wallet2: minor code clean-up 2024-04-05 12:01:38 +02:00
cryptozoidberg
2c181de6a3
fixed serialization for hex-encoded array of pod items 2024-04-04 23:41:53 +02:00
sowle
95368faccd
yet another attempt to fix macOS warnings and errors (CMAKE_OSX_DEPLOYMENT_TARGET: 10.12 -> 10.13) 2024-04-04 20:58:02 +02:00
sowle
ea7e99f7d3
yet another attempt to fix macOS warnings and errors 2024-04-04 19:03:55 +02:00
sowle
60e8fcdc47
an attempt to fix macOS compilation 2024-04-04 18:01:26 +02:00
sowle
3f1968837f
dependencies version updated 2024-04-04 16:54:04 +02:00
sowle
9cd8e88ab4
an attempt to fix macos compilation 2024-04-04 16:34:43 +02:00
zano build machine
59f38273e3 === build number: 294 -> 295 === 2024-04-03 19:33:19 +03:00
sowle
88a0d072b0
msvc compilation fix 2024-04-03 18:24:03 +02:00
sowle
b5879f7360
gcc warning fixed 2024-04-03 17:18:47 +02:00
sowle
1f3ae7b725
wallet RPC: get_bare_outs_stats, sweep_bare_outs implemented + minor improvements 2024-04-03 16:45:33 +02:00
sowle
ab12614d9b
Merge branch 'release2' into develop 2024-04-03 16:43:11 +02:00
sowle
d69a47a46d
wallet: removed unnecessary setting of mix_att to hf4_minimum_mixins in finalize_transaction() 2024-04-02 22:03:09 +02:00
sowle
6e036356df
wallet: sweeping of bare unspent outputs implemented 2024-04-02 22:00:53 +02:00
cryptozoidberg
635f52d499
fix for compilation on macos 2024-04-01 16:50:14 +02:00
sowle
097420a66f
wallet2: is_transfer_ready_to_go, is_transfer_able_to_go made const 2024-04-01 15:32:00 +02:00
zano build machine
aab28aea8c === build number: 293 -> 294 === 2024-04-01 15:15:20 +03:00
sowle
5053bc9a6d
ui update 2024-04-01 14:11:07 +02:00
sowle
09c42ed0b4
Merge branch 'master' into develop 2024-04-01 14:06:16 +02:00
sowle
23ac3572cf
Merge branch 'release2' 2024-03-29 21:16:40 +01:00
zano build machine
23d2b93506 === build number: 292 -> 293 === 2024-03-29 22:42:10 +03:00
sowle
f2d6351211
simplewallet: minor improvements 2024-03-29 20:34:03 +01:00
cryptozoidberg
1a15109f4b
Merge branch 'release2' into develop 2024-03-29 18:57:26 +01:00
cryptozoidberg
79b5def9ba
Merge branch 'release2' 2024-03-29 18:54:37 +01:00
cryptozoidberg
c552916266
fix for mobile android build 2024-03-29 18:54:04 +01:00
sowle
e928d03ec7
Merge branch 'release2' 2024-03-29 17:09:26 +01:00
zano build machine
c375d6fa10 === build number: 291 -> 292 === 2024-03-29 18:31:42 +03:00
sowle
16be157add
simplewallet: fixed typo + logs 2024-03-29 16:31:12 +01:00
zano build machine
950c80a108 === build number: 290 -> 291 === 2024-03-29 17:54:22 +03:00
sowle
01c60fa07e
simplewallet: --pos-mining-defrag CLI option added 2024-03-29 15:53:51 +01:00
sowle
a45e42e0a5
handle ethash epoch context allocation errors by triggering an immediate stop via the critical error handler 2024-03-29 14:31:00 +01:00
cryptozoidberg
b0c92e28dd
added more logs for generate_unique_reversed_distribution 2024-03-28 21:19:57 +01:00
cryptozoidberg
31abc2d1bd
Merge branch 'develop' into autodoc 2024-03-28 19:28:33 +01:00
cryptozoidberg
b646939113
merge from release2 2024-03-28 19:28:13 +01:00
cryptozoidberg
b00fb7671e
added few fixes to autodoc 2024-03-28 19:24:11 +01:00
cryptozoidberg
312d500a36
fixed problem with decoy selection algo 2024-03-28 19:22:38 +01:00
cryptozoidberg
beb84c200d
Merge branch 'develop' into autodoc 2024-03-28 13:51:37 +01:00
cryptozoidberg
b8c97e3f70
fixed broken build 2024-03-28 13:51:13 +01:00
sowle
4d6aa1a4f9
wallet: minor fixes (logging) 2024-03-28 13:32:26 +01:00
sowle
d933a22154
wallet: set_pos_utxo_count_limits_for_defragmentation_tx() added, coretests: packing_outputs_on_pos_minting_wallet, pos_minting_tx_packing fixed 2024-03-28 13:29:00 +01:00
cryptozoidberg
a2b28806b1
added struct documentation macro 2024-03-28 13:04:23 +01:00
cryptozoidberg
73b7123906
Merge branch 'develop' into autodoc 2024-03-28 12:50:51 +01:00
cryptozoidberg
cfb4e481b4
Implemented auto documentation 2024-03-28 12:49:43 +01:00
sowle
f4da18cc3f
Merge branch 'master' into develop
# Conflicts:
#	src/currency_core/tx_pool.cpp
2024-03-27 23:52:24 +01:00
sowle
9f845bb73b
Merge branch 'release2' 2024-03-27 23:46:54 +01:00
cryptozoidberg
98d124860c
fixed macos compilation - 2 2024-03-27 23:22:10 +01:00
zano build machine
6f35ced052 === build number: 289 -> 290 === 2024-03-28 01:08:01 +03:00
cryptozoidberg
ad281664c3
fixed macos compilation 2024-03-27 23:07:38 +01:00
zano build machine
9cf3c80fba === build number: 288 -> 289 === 2024-03-28 00:23:34 +03:00
sowle
dd04d6367b
coretests: multiassets_basic_test improved to reflect recent changes with tx pool validation 2024-03-27 22:18:06 +01:00
sowle
754a29a709
wallet: defragmentation tx generation is now disabled by default 2024-03-27 22:15:13 +01:00
sowle
df7b6a3674
tx pool: added ability to disable tx validation for tests 2024-03-27 22:13:43 +01:00
zano build machine
b72a0593c6 === build number: 287 -> 288 === 2024-03-27 22:53:47 +03:00
cryptozoidberg
f3820c32f2
added log message for COMMAND_RPC_GETBLOCKTEMPLATE 2024-03-27 20:06:20 +01:00
cryptozoidberg
d2ee1b3fa8
added COMMAND_RPC_REMOVE_TX_FROM_POOL 2024-03-27 19:10:26 +01:00
cryptozoidberg
320816fd99
added test for getblocktemplate 2024-03-27 19:10:26 +01:00
sowle
69e68807bf
coretests: minor forgotten change 2024-03-27 18:57:30 +01:00
sowle
80fd303081
compilation fixed for gcc (by using universal references for process_type_in_variant_container_*) 2024-03-27 18:53:05 +01:00
sowle
709d16eb75
tx pool: asset operations basic validation on tx add 2024-03-27 17:18:17 +01:00
sowle
3eb711fbf8
tx_pool: is_tx_blacklisted() 2024-03-27 17:08:19 +01:00
sowle
806eb326d1
(cherry picked) tx_pool: add post-HF4 txs are now being check for balance proof. Core test hard_fork_4_consolidated_txs changed accordingly 2024-03-27 15:59:57 +01:00
cryptozoidberg
e5afb6b0c6
in the middle of refactoring autodoc 2024-03-27 15:52:30 +01:00
cryptozoidberg
3d76415af2
merge from develop 2024-03-26 21:24:32 +01:00
cryptozoidberg
46a7c9662e
Merge branch 'release2' into develop 2024-03-26 21:16:28 +01:00
cryptozoidberg
d03f47a9c7
merge from develop 2024-03-26 21:14:16 +01:00
cryptozoidberg
582fe4c8b1
merge from release2 2024-03-26 21:11:42 +01:00
zano build machine
7d3e3ae358 === build number: 286 -> 287 === 2024-03-26 21:58:01 +03:00
sowle
e1d7ea6302
asset emission: 1) fixed simplewallet's emit_asset command; 2) wallet2:emit_asset() now fix destinations for asset emission ad-hoc (null_pkey); 3) typos corrected 2024-03-26 19:57:31 +01:00
sowle
c2fa968835
daemon: 1) print_asset_info command added; 2) print_tx greatly improved; 3) fill_tx_rpc_details() now fills blob and object_in_json fields and use base64 encoding 2024-03-26 19:55:34 +01:00
sowle
6740a0df28
tx pool: short tx listing improved 2024-03-26 19:52:30 +01:00
sowle
0015c8934d
KV_SERIALIZE_BLOB_AS_BASE64_STRING() implemented 2024-03-26 19:51:02 +01:00
cryptozoidberg
7f134072f6
minor changes in error messages(to avoid misleading) 2024-03-26 19:22:45 +01:00
cryptozoidberg
6311c2078f
fixed RANDOM_OUTPUTS_FOR_AMOUNTS_FLAGS_COINBASE and added RANDOM_OUTPUTS_FOR_AMOUNTS_FLAGS_POS_COINBASE for future use 2024-03-26 16:35:18 +01:00
zano build machine
cceeda0588 === build number: 285 -> 286 === 2024-03-26 14:05:22 +03:00
cryptozoidberg
9af876ccaa
decoy selection algo refactoring 2024-03-25 21:56:46 +01:00
sowle
360417c5fc
=== build number: 284 -> 285 === 2024-03-25 17:28:28 +01:00
sowle
d83ec66775
fixed a bug in prepare_tx_sources_for_defragmentation_tx() causing old dust outs to prevent staking 2024-03-25 17:21:02 +01:00
sowle
2eac22d626
utils: configuration scripts for msvc2022 2024-03-24 18:53:26 +01:00
cryptozoidberg
721b027000
merge from release2 2024-03-24 15:56:58 +01:00
cryptozoidberg
3fb4f16db9
fore get rid of WALLET_GLOBAL_OUTPUT_INDEX_UNDEFINED 2024-03-24 15:50:53 +01:00
cryptozoidberg
83968977a1
current fixes 2024-03-24 13:48:08 +01:00
cryptozoidberg
60bb74cbb0
more consistent documentation code is working now 2024-03-23 15:45:24 +01:00
sowle
37d260a519
Merge branch 'master' into develop 2024-03-23 01:34:02 +01:00
zano build machine
7c3e2cbc70 === build number: 283 -> 284 === 2024-03-23 03:32:49 +03:00
sowle
cd0a635535
Merge branch 'release2' 2024-03-23 01:31:54 +01:00
sowle
f7a98ed7d1
wallet2: scan_not_compliant_unconfirmed_txs 2024-03-23 00:34:03 +01:00
sowle
6c2b1becdf
Merge branch 'master' into develop 2024-03-22 23:21:26 +01:00
sowle
8ec5aebd3c
minor log improvement 2024-03-22 23:20:10 +01:00
cryptozoidberg
3acd7667bc
fix for uninitialized data on transaction details(including fee) in unconfirmed transactions 2024-03-22 18:44:31 +01:00
cryptozoidberg
256206af09
more code on autodoc descriptions 2024-03-22 13:54:46 +01:00
cryptozoidberg
5d004cde02
merge from master 2024-03-22 00:16:42 +01:00
sowle
35049c26f3
Merge branch 'master' into develop 2024-03-21 23:04:56 +01:00
zano build machine
63940b1d2f === build number: 282 -> 283 === 2024-03-22 01:02:38 +03:00
cryptozoidberg
09d08baecc
fixed consensus bug related to miners motivations to include transactions 2024-03-21 23:01:33 +01:00
cryptozoidberg
2283a77104
more work on json/descriptions improvements 2024-03-21 22:57:55 +01:00
sowle
3628f1e18d
Merge branch 'master' into develop
# Conflicts:
#	src/version.h.in
2024-03-21 20:33:10 +01:00
sowle
e11ee0fa07
tx_pool: remove HF4-incompatible txs on load 2024-03-21 19:52:18 +01:00
cryptozoidberg
919790e808
some temporary commits 2024-03-21 14:31:40 +01:00
zano build machine
8f68ef56e2 === build number: 280 -> 281 === 2024-03-21 13:44:13 +03:00
sowle
f13d3e7b35
Merge branch 'master' into develop 2024-03-21 11:43:53 +01:00
zano build machine
1f5c862168 === build number: 279 -> 280 === 2024-03-21 13:42:15 +03:00
sowle
6f6636103e
Merge branch 'master' into develop
# Conflicts:
#	src/version.h.in
2024-03-21 11:40:26 +01:00
sowle
921b447b02
p2p: block old clients (<2.x) on in and out conn + build version bump to 280 2024-03-21 10:48:11 +01:00
cryptozoidberg
e51e56e825
Merge branch 'develop' into autodoc 2024-03-20 18:00:11 +01:00
cryptozoidberg
f15a8421f9
added call_wallet_rpc to avoid using of mw_select_wallet 2024-03-20 17:57:46 +01:00
cryptozoidberg
97c3460af8
autodoc inital code + cmake warningns + improvements over compilation performance 2024-03-20 14:45:29 +01:00
sowle
80e8392be0
code clean-up and logging improvements 2024-03-19 18:47:26 +01:00
zano build machine
5ba45867f7 === build number: 278 -> 279 === 2024-03-19 20:32:04 +03:00
sowle
1cffbaa9b8
ui update 2024-03-19 18:30:54 +01:00
cryptozoidberg
c03438ba23
fixed mw_get_wallets for simplewallet, fail-resistant whitelisti loading 2024-03-19 17:54:41 +01:00
cryptozoidberg
7a6883457b fix for MOBILE_WALLET_BUILD 2024-03-19 12:30:09 +00:00
sowle
1548ab662a
wallet2::get_current_tx_version() fixed 2024-03-19 01:40:45 +01:00
sowle
0455e81b4c
minor log improvement (take fee burning into account) 2024-03-19 01:35:36 +01:00
zano build machine
c14b5b6b21 === build number: 277 -> 278 === 2024-03-19 01:35:54 +03:00
zano build machine
30b6082ce5 === build number: 276 -> 277 === 2024-03-19 01:35:09 +03:00
cryptozoidberg
86e8446e42 Implemented JWT support in UI, multiple API improvements and fixes 2024-03-18 23:27:44 +01:00
zano build machine
2eb76a5fc8 === build number: 275 -> 276 === 2024-03-16 18:16:26 +03:00
sowle
7f851205a0
tx_pool: add post-HF4 txs are now being check for balance proof. Core test hard_fork_4_consolidated_txs changed accordingly 2024-03-16 14:57:25 +01:00
sowle
66cf29ccd3
coretests: hard_fork_2_alias_update_using_old_tx<> fixed 2024-03-15 19:58:44 +01:00
zano build machine
ad3b022fc1 === build number: 274 -> 275 === 2024-03-15 18:49:50 +03:00
cryptozoidberg
8c01aac391
Merge branch 'auth_impl' into develop 2024-03-15 16:47:54 +01:00
sowle
f538fc3a76
coretests: gen_crypted_attachments and fixed-hash tests 2024-03-14 22:04:38 +01:00
cryptozoidberg
ddbc8e2484
removed comment 2024-03-14 22:04:36 +01:00
cryptozoidberg
7e676e74e9
implemented JWT support in simplewallet 2024-03-14 21:55:22 +01:00
zano build machine
a8bfdc13ed === build number: 273 -> 274 === 2024-03-14 20:38:49 +03:00
sowle
724ce0ef1f
Merge branch 'release' into develop 2024-03-14 18:36:20 +01:00
sowle
d04abe0e48
fixed derivation hints for pre-HF4 consolidation txs 2024-03-14 18:28:47 +01:00
sowle
c5a55f1e85
coretests: hard_fork_4_consolidated_txs test finished, now it also checks derivation hints for normal and consolidated txs before and after HF4 2024-03-13 21:30:43 +01:00
sowle
41386a91c8
privacy improvement: one derivation hint per output (not per receiver as before) 2024-03-13 21:29:09 +01:00
sowle
b99bdb68df
wallet2: minor code cleanup 2024-03-13 21:26:39 +01:00
cryptozoidberg
bb3b893bd3
Merge branch 'develop' into auth_impl 2024-03-13 19:40:35 +01:00
cryptozoidberg
cf5e38e78f
implemented asset whitelisting RPC API 2024-03-13 18:36:53 +01:00
cryptozoidberg
21c1631825
auth basic r and d 2024-03-13 13:16:36 +01:00
zano build machine
2a33c5c7a0 === build number: 272 -> 273 === 2024-03-08 21:28:27 +03:00
cryptozoidberg
4ea976b887
latest UI 2024-03-06 19:10:42 +01:00
cryptozoidberg
1c1dc3d3e8
Merge branch 'master' into develop 2024-03-05 15:21:46 +01:00
sowle
82768a5538
Merge branch 'release' into develop 2024-02-26 18:13:45 +01:00
sowle
1790225997
Merge branch 'release' 2024-02-26 17:58:03 +01:00
zano build machine
056c5f10cc === build number: 271 -> 272 === 2024-02-26 16:00:08 +03:00
sowle
4abcd167ba
Merge branch 'develop' into release 2024-02-26 13:43:12 +01:00
zano build machine
692a34e427 === build number: 270 -> 271 === 2024-02-25 21:50:38 +03:00
cryptozoidberg
bd510f395c
pulled UI to lates version 2024-02-25 22:49:14 +04:00
cryptozoidberg
e860a0c15a
Reset wallet file due to auditable wallet fixes 2024-02-25 17:56:00 +04:00
cryptozoidberg
a88184bd9a
Merge branch 'develop' into mobile 2024-02-25 17:52:25 +04:00
zano build machine
aa7ddcdea8 === build number: 269 -> 270 === 2024-02-25 03:20:44 +03:00
sowle
789ed4a2d0
basic_db_accessor::get_t_object() made safe to be called before open() or reset_backend() 2024-02-25 01:19:48 +01:00
cryptozoidberg
e876a577cb tweak for boost compilation(needed for android) 2024-02-24 23:34:46 +04:00
zano build machine
000811e2ab === build number: 268 -> 269 === 2024-02-24 16:28:56 +03:00
cryptozoidberg
d04356b9a5
UI moved to latest commit 2024-02-24 17:27:43 +04:00
cryptozoidberg
ddc847f9d7
fixed staking in GUI 2024-02-24 17:15:04 +04:00
zano build machine
1bda445cdb === build number: 267 -> 268 === 2024-02-23 21:32:25 +03:00
cryptozoidberg
13e21c0e7e
quick fix for UI being to early on rpc calls 2024-02-23 22:31:44 +04:00
zano build machine
91ec911213 === build number: 266 -> 267 === 2024-02-23 18:43:21 +03:00
cryptozoidberg
72969e1bb3
pulled UI 2024-02-23 19:40:24 +04:00
cryptozoidberg
446ab3b5b7
minor fixes for auditable wallet 2024-02-23 18:39:59 +04:00
cryptozoidberg
f351a486f2
backward compatibility fix(temporary) for mobile old wallet apps 2024-02-23 16:41:26 +04:00
sowle
5bb31e3282
warning fixed (thanks to @crypto_zoidberg) 2024-02-23 12:57:09 +01:00
sowle
f824461db9
Merge branch 'develop' into mobile 2024-02-23 11:48:28 +01:00
sowle
c8b52f6e96
iOS: deployment target set to 12.00, macOS: deployment target reverted back to 10.12 2024-02-23 11:47:16 +01:00
cryptozoidberg
7397b68ec0 Merge branch 'mobile' into develop 2024-02-22 22:46:28 +04:00
cryptozoidberg
a922d542f6 tweaks over mobild zano wallet 2024-02-22 22:45:43 +04:00
sowle
5a223bf7cd
Merge branch 'release' 2024-02-22 19:32:02 +01:00
sowle
08e3196b0c
Merge branch 'release' into develop 2024-02-22 19:20:39 +01:00
zano build machine
b35be93fa9 === build number: 265 -> 266 === 2024-02-22 21:18:53 +03:00
sowle
ec77e14ead
wallet: introduced upper limit for tx fee (soft rule) 2024-02-22 18:19:15 +01:00
sowle
d8a21933d6
wallet: sweep_below fixed 2024-02-22 18:18:10 +01:00
sowle
9d67f8aedf
coretests: test wallet_and_sweep_below added 2024-02-22 17:47:50 +01:00
sowle
6b99449e21
Merge branch 'release' 2024-02-22 09:09:15 +01:00
cryptozoidberg
6df85b4779
reset UI commit from develop 2024-02-21 18:57:34 +04:00
cryptozoidberg
0d147dd557
merge from develop 2024-02-21 18:53:27 +04:00
cryptozoidberg
390adb3e26
Merge branch 'develop' into merge_develop_mobile 2024-02-21 18:25:34 +04:00
sowle
575ed1140f
Merge branch 'develop' into release 2024-02-21 13:08:31 +01:00
zano build machine
d058a2ef17 === build number: 264 -> 265 === 2024-02-21 15:06:52 +03:00
sowle
df53f1f78d
Revert "noncense commit"
This reverts commit 033ef5c9dc.
2024-02-21 13:05:50 +01:00
sowle
04692e5fc4
Merge branch 'develop' into release 2024-02-21 12:24:11 +01:00
zano build machine
47df89bdd8 === build number: 263 -> 264 === 2024-02-21 14:23:19 +03:00
cryptozoidberg
033ef5c9dc
noncense commit 2024-02-20 20:56:28 +04:00
cryptozoidberg
18609e296f
attempt to fix build for macos 2024-02-20 20:14:10 +04:00
sowle
226594f1d2
This is it. Historic merge of branch 'develop' (with all new privacy update features) into release 2024-02-20 15:41:31 +01:00
zano build machine
4c70d2aea0 === build number: 262 -> 263 === 2024-02-20 17:30:09 +03:00
sowle
5aedc8341a
HF4 height set to 2555000 2024-02-20 15:29:13 +01:00
sowle
ab09fd24d1
Merge branch 'develop_test' into develop 2024-02-20 14:25:35 +01:00
zano build machine
e589464fc0 === build number: 261 -> 262 === 2024-02-20 13:57:34 +03:00
sowle
c403440287
wallet: WALLET_FILE_SERIALIZATION_VERSION bump up 161 -> 162 2024-02-20 11:57:01 +01:00
sowle
937301997a
Merge branch 'develop' into develop_test 2024-02-20 11:55:14 +01:00
cryptozoidberg
f8d0e96d95 fixes related to build under vc2022 on windows arm64 2024-02-20 11:26:12 +04:00
zano build machine
7fb43311a7 === build number: 260 -> 261 === 2024-02-20 06:00:00 +03:00
sowle
50ba8926cd
restart testnet (CURRENCY_FORMATION_VERSION: 96 -> 97) 2024-02-20 03:29:26 +01:00
zano build machine
bfd14493b1 === build number: 259 -> 260 === 2024-02-20 05:25:47 +03:00
sowle
80eb7fdf11
asset_id calculation fixed 2024-02-20 02:48:35 +01:00
sowle
2339a65ff7
calculate_asset_id refactored into get_or_calculate_asset_id (2) 2024-02-19 23:18:22 +01:00
sowle
159d305fcf
calculate_asset_id refactored into get_or_calculate_asset_id 2024-02-19 21:49:27 +01:00
sowle
f2acccb426
(hopefully) a proper fix for the template hell in get_first_service_attachment_by_id 2024-02-19 09:50:22 +01:00
sowle
f1cccbe3e0
(hopefully) a proper fix for the template hell in get_first_service_attachment_by_id 2024-02-18 23:35:56 +01:00
zano build machine
f80fc6cdd5 === build number: 258 -> 259 === 2024-02-19 01:14:36 +03:00
zano build machine
4fcec20446 === build number: 257 -> 258 === 2024-02-19 01:13:39 +03:00
sowle
6db3198ea3
change CMake min version for gui build 2024-02-18 23:11:24 +01:00
cryptozoidberg
f882c7d654
fixed issue with proper error handling in predownload 2024-02-19 00:51:58 +04:00
cryptozoidberg
3d0d93c625
fixed unused variables 2024-02-19 00:10:33 +04:00
cryptozoidberg
bb4cc18c55
over-simplified template syntax to please gcc 2024-02-19 00:01:32 +04:00
cryptozoidberg
f43cd585c7
simplified template syntax to please gcc 2024-02-18 23:46:55 +04:00
cryptozoidberg
e61d307e4c
fixes rtelated to gcc/clang compilation 2024-02-18 22:47:45 +04:00
cryptozoidberg
9b8c966702
more options for checkpoints 2024-02-18 21:05:22 +04:00
cryptozoidberg
fa606c1665
payment_id improved 2024-02-17 20:35:01 +04:00
sowle
93b3ca4b66
fix loop variable type here and there (performance) 2024-02-17 12:45:43 +01:00
sowle
7b246312a8
predownload updated up to height 2.5M 2024-02-17 05:08:06 +01:00
sowle
054be248cb
fix loop variable type here and there (performance) 2024-02-17 05:06:44 +01:00
sowle
b21083db1f
fix loop variable type here and there (performance) 2024-02-16 03:56:42 +01:00
zano build machine
075a28f89f === build number: 256 -> 257 === 2024-02-15 20:10:51 +03:00
cryptozoidberg
3a0fce6e29
disabled tor module for ubuntu 2024-02-15 21:09:38 +04:00
cryptozoidberg
d095330b22
predownloads updated 2024-02-15 20:31:20 +04:00
cryptozoidberg
52a065ab0d
merged from release 2024-02-15 16:09:17 +04:00
cryptozoidberg
e33148e9f1
checkpoint postponed 2024-02-15 16:03:17 +04:00
cryptozoidberg
c4be6e120a
adaptation of zarcanum era codebase to pre_zarcanum api(for backward compatibility with exchanges) 2024-02-15 06:14:51 +04:00
cryptozoidberg
dcdffce051
legacy api test in mainnet master 2024-02-15 06:14:51 +04:00
cryptozoidberg
0bf9b808d0
Merge branch 'master' into release 2024-02-15 03:49:43 +04:00
cryptozoidberg
925d900aa6
legacy api test in mainnet master 2024-02-15 03:48:27 +04:00
zano build machine
300b82b0da === build number: 255 -> 256 === 2024-02-14 01:55:50 +03:00
cryptozoidberg
109c754f3c
restarting testnet 2024-02-14 02:46:41 +04:00
cryptozoidberg
c2368fbb64
added todo to test 2024-02-14 02:10:30 +04:00
cryptozoidberg
91813968aa
fixes over multiasset tests to fix transfer ownership of asset 2024-02-14 02:10:29 +04:00
cryptozoidberg
42bee0eee8
transfer asset ownership - implemented first test 2024-02-14 02:10:29 +04:00
cryptozoidberg
188b8c447f
fixes related multriasset tests 2024-02-14 02:10:29 +04:00
cryptozoidberg
5336fdb46a
signing prefix with ado 2024-02-14 02:10:29 +04:00
cryptozoidberg
3d379033c5
asset ownership proov validation replaced with prefix signed with schnorr signature 2024-02-14 02:10:28 +04:00
cryptozoidberg
66ffef4080
changing signature scheme for ado 2024-02-14 02:10:28 +04:00
sowle
268632d6da
crypto: generate_schnorr_sig version for public_key and secret_key types 2024-02-14 02:10:28 +04:00
sowle
b778f0d918
serialization tags for asset_operation_ownership_proof 2024-02-14 02:10:27 +04:00
sowle
e0bb0138cb
crypto: default template argument for generate/verify_schnorr_sig 2024-02-14 02:10:27 +04:00
sowle
fb4ed29834
struct asset_operation_ownership_proof added 2024-02-14 02:10:27 +04:00
cryptozoidberg
2473df2275
assets: thirdparty assets not erasing from own list 2024-02-14 02:10:26 +04:00
cryptozoidberg
87d5bb092f
assets: implemented ownership transfer 2024-02-14 02:10:26 +04:00
cryptozoidberg
eadaf179af
allowed transfering assets membership 2024-02-14 02:10:26 +04:00
cryptozoidberg
f288d0519c
lifted ui to latest commit 2024-02-13 23:07:59 +04:00
zano build machine
c55551be54 === build number: 254 -> 255 === 2024-02-13 21:57:07 +03:00
cryptozoidberg
fb73401800
replaced vector<bool> top list<bool>, because c++ is insane about some stuff 2024-02-09 19:42:11 +04:00
sowle
ab226469a9
more compilation fixes 2024-02-09 15:22:43 +01:00
sowle
c97e17b494
compilation fix 2024-02-09 14:59:32 +01:00
sowle
e209591019
wallet: minor fix for log in the case when ki has already been seen + extended the comment covering this case 2024-02-09 13:53:10 +01:00
zano build machine
6de63ddbd8 === build number: 253 -> 254 === 2024-02-09 15:16:19 +03:00
cryptozoidberg
3f246e2687
restarting network 2024-02-09 15:42:05 +04:00
sowle
0b77c8f934
chaingen: minor fix for proper initialization of gen_context 2024-02-08 18:57:22 +01:00
sowle
5f53c8fbe1
knowing a DL for transaction pub key is now being checked along with the balance proof (double Schnorr proof, share Fiat-Shamir challenge) 2024-02-08 17:43:01 +01:00
sowle
ddcfa36a90
crypto: general_double_schnorr_sig implemented 2024-02-08 17:32:41 +01:00
cryptozoidberg
a0de510093
merged from develop 2024-02-08 15:58:49 +04:00
sowle
69e0be6db6
asset_descriptor_operation: opt_amount_commitment -> amount_commitment (made non-optional) 2024-02-07 20:11:09 +01:00
cryptozoidberg
ba92ecad36
Merge branch 'cryptoassets' into develop 2024-02-07 22:54:39 +04:00
cryptozoidberg
d08edc2ea3
shortened hf4 period for testnet + network reset 2024-02-07 22:54:07 +04:00
sowle
31101bc788
PoS mining, construct_block_template, and chaingen infrastructure adapted for fee burning after HF4 2024-02-07 18:48:18 +01:00
cryptozoidberg
75f1c5461f
fix related to multiassets_basic_test and burning fees 2024-02-07 20:31:58 +04:00
sowle
8198f1dbcb
comment added (size calculation) 2024-02-07 17:21:54 +01:00
cryptozoidberg
a45d63bdf8
added fee bruning 2024-02-07 18:18:30 +04:00
cryptozoidberg
e163c5f691
Merge branch 'develop' into cryptoassets 2024-02-07 18:17:50 +04:00
zano build machine
0c5cdbae17 === build number: 252 -> 253 === 2024-02-07 15:50:57 +03:00
cryptozoidberg
2aa3bdcb3f
nebaled rpc cals chaining to wallets manager 2024-02-07 16:46:58 +04:00
cryptozoidberg
e20f419adc
added hardforks infor to rpc get_info 2024-02-07 16:46:58 +04:00
sowle
01adc5087c
unit_tests: median_helper_tests improved to make sure new optimized version of median() works exactly the same as the old one 2024-02-04 23:52:56 +01:00
sowle
1ef05b36e1
comments & code cleanup 2024-02-04 23:51:15 +01:00
sowle
54b019f83d
calculation of amount blinding mask for asset operation made dependent on tx pub key 2024-02-04 23:50:17 +01:00
sowle
7e9c24d4b9
crypto: hs(str, s, pk) added 2024-02-04 23:45:22 +01:00
zano build machine
3be48761a6 === build number: 251 -> 252 === 2024-02-05 00:41:58 +03:00
cryptozoidberg
761fd4d6db
fixed few tests for mainnet-compiled version 2024-02-04 22:03:27 +01:00
cryptozoidberg
65dc4be419
packing_outputs_on_pos_minting_wallet disabled for hardfork 4 2024-02-04 11:48:07 +01:00
cryptozoidberg
cc91951eff
fixed few coretests in relation to validation of selected decoys results 2024-02-03 22:11:57 +01:00
cryptozoidberg
252297fecd
putting back validation of max_related_block_height 2024-02-03 16:03:18 +01:00
cryptozoidberg
6ba6b55d46
one more restart of the network(with declining unnecesary changes) 2024-02-03 14:52:16 +01:00
cryptozoidberg
d729e3fffa
attempt tp fox bug with staking 2024-02-03 10:59:40 +01:00
cryptozoidberg
a4b5f5f9f1
disabled limitation for testnet 2024-02-03 10:13:39 +01:00
cryptozoidberg
1a22dbb313
restarting of the testnet 2024-02-03 08:15:50 +01:00
cryptozoidberg
154997432f
restart of the network(didn't work on last commit due to bug) 2024-02-02 22:00:29 +01:00
cryptozoidberg
159199b1ab
fixed few bugs in the wallet related to mixins and hard mixins rule 2024-02-02 21:11:47 +01:00
cryptozoidberg
09dc88ba39
network reset + some changes in genesis for testnet(which didn't work after all) 2024-02-02 16:04:43 +01:00
zano build machine
c78bb3d24d === build number: 250 -> 251 === 2024-02-01 23:00:47 +03:00
cryptozoidberg
610721c16a
UI moved to latest commit 2024-02-01 20:25:49 +01:00
cryptozoidberg
cd5c7dba32
merge from cryptoassets (merged zarcanum to develop) 2024-02-01 18:06:42 +01:00
cryptozoidberg
9db28868cb
Merge branch 'cryptoassets' into develop 2024-02-01 18:05:56 +01:00
cryptozoidberg
5ba570feca
restarting a testnet 2024-02-01 17:52:26 +01:00
cryptozoidberg
e7c73e8860
unused var in one_out_of_many_proofs 2024-02-01 17:28:38 +01:00
cryptozoidberg
2dbae9a3b7
merge from develop 2024-02-01 17:23:17 +01:00
cryptozoidberg
38831baac2
Merge branch 'release' into develop 2024-02-01 17:20:53 +01:00
cryptozoidberg
67b7336a97
Merge branch 'decoy_selection' into cryptoassets 2024-02-01 17:18:52 +01:00
cryptozoidberg
1ba6fe0571
fixed last zarcanum tests 2024-01-31 20:47:08 +01:00
cryptozoidberg
97a6cb580f
minor changes to zarcanum test to fit coinage rule 2024-01-30 22:24:45 +01:00
cryptozoidberg
100d46fa9b
changes and fixes over few tests in connection to hardfork 4 2024-01-30 18:59:47 +01:00
cryptozoidberg
ef3385192f
fixed bug with alt-block coinage validation 2024-01-29 15:20:08 +01:00
cryptozoidberg
1be00ea3c8
got rid of warnings 2024-01-28 19:40:34 +01:00
cryptozoidberg
ca9f44967d
fixed very dumb bug with cheching minimum coinage condition + fixed test for auditable wallet against the hardfork 4 2024-01-28 19:30:36 +01:00
sowle
27bb395542
Merge branch 'add_block_performance_mes' into decoy_selection 2024-01-28 16:01:02 +01:00
sowle
92f09f424f
crypto: CLSAG: auxiliary key images added to the input hash + code cleanup + minor improvements + tests 2024-01-28 15:44:56 +01:00
cryptozoidberg
90e1b6dc2a
require min coinage to spend (on the hard network rule) - 10 confirmations 2024-01-26 02:49:31 +01:00
cryptozoidberg
f680473916
Fee burning(add fork choice rule for preference by cumulative fee in block ) 2024-01-24 22:06:19 +01:00
cryptozoidberg
3b7803efa7
make sure an asset can't be emitted in a consolidated tx 2024-01-24 20:56:45 +01:00
cryptozoidberg
bbff52e937
forbidding TX_FLAG_SIGNATURE_MODE_SEPARATE for miner txs 2024-01-24 19:26:42 +01:00
cryptozoidberg
95e8954c38
Merge branch 'cryptoassets' into decoy_selection 2024-01-20 16:39:50 +01:00
cryptozoidberg
81bacaf6bb
and another tweak of decoy selection algo(more clear exit from loop) 2024-01-20 15:49:30 +01:00
cryptozoidberg
0a702f6897
another tweak of decoy selection algo + fixed over few core tests 2024-01-19 23:01:20 +01:00
cryptozoidberg
515e90b48e
tweaked test packing_outputs_on_pos_minting_wallet(disabled mined balance validating) 2024-01-18 22:02:13 +01:00
cryptozoidberg
8f5eed778a
increased attempts count for pre-zarrcanum selection 2024-01-18 20:14:21 +01:00
cryptozoidberg
bca8a4bf16
fixed endless loop in decoy selection api 2024-01-18 19:16:30 +01:00
cryptozoidberg
d8241d1531
fixed issues with wallet 2024-01-18 18:27:35 +01:00
cryptozoidberg
36ce7bd00d
tweak for decoy selection algo: first 20k of Zarcanum blocks decoy selection algo will be working flat 2024-01-17 22:02:06 +01:00
cryptozoidberg
6365b55343
tweaks over coretests logging 2024-01-17 19:43:25 +01:00
cryptozoidberg
997dcb8312
fixed crash in decoy_selection api 2024-01-17 18:07:41 +01:00
cryptozoidberg
01f00a67e6
fixed unused variable 2 2024-01-17 16:08:39 +01:00
cryptozoidberg
8dd1b9d5a7
fixed unused variable 2024-01-17 16:07:11 +01:00
sowle
7aaee46d4a
fixed a HF4-specific bug in is_pos_coinbase() and is_coinbase() 2024-01-17 13:04:26 +01:00
sowle
c99c23b9da
wallet2: set decoys count for PoS mining tx according to the core runtime config 2024-01-17 00:39:35 +01:00
cryptozoidberg
b81e168b2a
CURRENCY_HF4_MANDATORY_DECOY_SET_SIZE implemented as configurable(for coretest we would need to have 0 mixins due to old tests) 2024-01-16 21:32:10 +01:00
cryptozoidberg
b1974eb24f
mined ballance calc in wallet done via block reward(in connection to pos coinbase joined to 1 output) 2024-01-16 20:02:00 +01:00
cryptozoidberg
f7c928e3a2
outputs with zero pubkeys (00..00, torsion element of order 4) should not be used as inputs at all (even as mixins) 2024-01-16 19:01:57 +01:00
sowle
8b145089ac
Merge branch 'zc_pos_one_out' into decoy_selection
# Conflicts:
#	src/currency_core/blockchain_storage.cpp
2024-01-16 16:30:55 +01:00
sowle
6271a22058
minor improvement on mixins restrictions checks 2024-01-16 00:52:56 +01:00
sowle
929d741916
coretests: forgotten changes (wip for hard_fork_4_consolidated_txs) 2024-01-15 23:15:24 +01:00
sowle
250bf95e11
bcs: minor naming & logging improvements 2024-01-15 23:12:29 +01:00
cryptozoidberg
6475571781
re-factored code for mixins count verification(moved to core check, suggested by @sowle) 2024-01-15 19:38:53 +01:00
cryptozoidberg
fb31c8862b
api transition fix 2024-01-14 20:49:09 +01:00
cryptozoidberg
1c404348a0
added tx semantics test in tx_pool 2024-01-14 19:00:24 +01:00
cryptozoidberg
9cd62b236a
implemented reverse api compatibility 2024-01-14 18:00:12 +01:00
cryptozoidberg
7086531e08
disabled wllet rpc in UI 2024-01-14 14:53:16 +01:00
cryptozoidberg
90c7b5d02d
hf4 mandatory check for decoy size 2024-01-13 20:24:10 +01:00
cryptozoidberg
f874a5f7a2
added exception for coinbase transactions 2024-01-12 20:01:57 +01:00
sowle
beb4fa828f
minor logging improvements 2024-01-12 03:15:56 +01:00
sowle
fe7db04b84
coretests: hard_fork_4_consolidated_txs WIP 2024-01-12 03:14:59 +01:00
cryptozoidberg
b363b893e4
Bunch of improvements over the wallet 2024-01-02 21:57:43 +01:00
sowle
6baa1b42d6
minor fix 2023-12-27 16:44:15 +01:00
zano build machine
a5af399e56 === build number: 249 -> 250 === 2023-12-27 17:16:08 +03:00
sowle
05feba39bf
block add perf timings 2023-12-27 14:08:36 +01:00
sowle
6534a6eda4
epee::misc_utils::median improved 2023-12-27 14:06:23 +01:00
sowle
723a89c840
functional tests: gcc compilation fixed 2023-12-27 13:50:12 +01:00
sowle
344cb15fb5
attempt to fix gcc compilation 2023-12-27 02:16:54 +01:00
sowle
e239389768
crypto: fixed generators with precomputed data improved (data made static) + more tests 2023-12-27 02:04:59 +01:00
cryptozoidberg
bfb4a91f92
fork choice rule updated 2023-12-26 22:18:46 +01:00
sowle
4200669f5b
crypto: experimental optimizations: ge_scalarmult_base_vartime, ge_scalarmult_vartime_p3, ge_scalarmult_precomp_vartime (point_pc_t) + performance tests for msm pippenger v3-v4 2023-12-25 23:48:14 +01:00
sowle
f62db8a7fe
minor code cleanup 2023-12-25 19:20:45 +01:00
sowle
4b31d91beb
blockchain_storage: more performance measurements for blocks validation 2023-12-25 19:19:50 +01:00
sowle
f95791a723
crypto: much faster pippenger/bucket-style multi-scalar multiplication for range proofs + tests 2023-12-25 19:14:31 +01:00
sowle
77d6f94280
crypto: scalar_t::get_bits + test + performance test + cn_hash performance test 2023-12-25 18:10:14 +01:00
cryptozoidberg
6ed1c0815a
Merge branch 'cryptoassets' into decoy_selection 2023-12-15 18:57:30 +03:00
cryptozoidberg
ee3570b6dd
merged from develop 2023-12-15 18:56:55 +03:00
cryptozoidberg
22fda0c7fe
fixed bugs in for decoy selection algo 2023-12-15 18:39:50 +03:00
sowle
9b43cbc0b7 CMakeLists.txt: allowing using higher version of Boost than required 2023-12-15 15:53:22 +01:00
cryptozoidberg
04103dea7f
decoy selection algo added 2023-12-15 01:42:06 +03:00
sowle
90b43d828e
HF4: allowing 1 merged output for PoS blocks' miner tx 2023-12-14 21:34:17 +01:00
zano build machine
8f2e7191e5 === build number: 164 -> 165 === 2023-12-13 15:48:45 +03:00
cryptozoidberg
db2bdd33a2
Merge branch 'develop' into release 2023-12-13 15:29:02 +03:00
cryptozoidberg
f2ca3696fa
moved UI to latest commit 2023-12-13 15:20:33 +03:00
cryptozoidberg
b0f06e512d
added mdbx manually 2023-12-12 18:53:10 +03:00
cryptozoidberg
2b97d25afb
removed mdbx 2023-12-12 18:51:05 +03:00
cryptozoidberg
fe0a13c4f0
Removed submodule mdbx 2023-12-12 18:48:49 +03:00
cryptozoidberg
5b4a3e3a38
get_random_outs_for_amounts2 in work 2023-12-08 20:41:47 +01:00
cryptozoidberg
2d44c967ef
new decoy selection algo 2023-12-08 15:31:17 +01:00
sowle
2772a446bd
CMakeLists: minmum CMake version was pushed up to 3.5 to avoid support warnings (2) 2023-12-06 16:33:35 +01:00
sowle
b0970142d5
=== build number: 248 -> 249 === 2023-12-06 16:30:18 +01:00
sowle
9a206df105
CMakeLists: minmum CMake version was pushed up to 3.5 to avoid support warnings + fixed a typo in a comment 2023-12-06 16:28:51 +01:00
sowle
fcefdd8eb5
Merge remote-tracking branch 'origin/develop' into cryptoassets
# Conflicts:
#	README.md
#	src/gui/qt-daemon/layout
#	src/version.h.in
2023-12-06 16:24:06 +01:00
sowle
327ecd3eb8 Merge branch 'release' into develop 2023-12-06 14:25:46 +01:00
sowle
0a793b9222 ====== build number: 163 -> 164 === 2023-12-06 03:12:35 +01:00
sowle
eb0b2529d0 build script windows: minor fix (using boost libs for msvc v14.2) 2023-12-06 03:11:52 +01:00
sowle
5349d2f2dd ====== build number: 162 -> 163 === 2023-12-05 21:31:01 +01:00
crypto.sowle
0367a79706
README.md: improved Linux build manual 2023-12-05 23:29:15 +03:00
sowle
0caf50fde8 build: an attempt to make Boost searching process be more error proof (2) 2023-12-05 21:06:14 +01:00
sowle
46bef30dad build: an attempt to make Boost searching process be more error proof 2023-12-05 19:50:02 +01:00
sowle
30299724fd
crypto::point_t::is_zero() now treats non-points (0, 0, 0, ?) or incorrectly encoded points (0, x, x, !0) as not an identity and thus returns false + test 2023-12-04 22:33:38 +01:00
sowle
f5958fa722 ====== build number: 161 -> 162 === 2023-12-01 15:35:17 +01:00
sowle
801dcd0ffe ui updated 2023-12-01 15:34:04 +01:00
zano build machine
10cce8002f === build number: 247 -> 248 === 2023-12-01 14:24:52 +03:00
cryptozoidberg
d0ad3c7ad4
Update Zano_appimage_wrapper.sh 2023-12-01 12:23:01 +01:00
sowle
2dd8003588 ====== build number: 160 -> 161 === 2023-11-30 17:33:52 +01:00
sowle
0ec7582cd1 predownload files updated 2023-11-30 17:32:58 +01:00
cryptozoidberg
fbf609c1ef
fixed linux desktop file link 2023-11-30 13:33:21 +01:00
sowle
990605c23e Merge branch 'develop' into release 2023-11-30 13:01:28 +01:00
sowle
3c4a52809c ====== build number: 159 -> 160 === 2023-11-30 13:00:54 +01:00
sowle
2e57372115 checkpoint @ height 2390000 2023-11-30 12:56:41 +01:00
sowle
d6fc65cbf8
=== build number: 246 -> 247 === 2023-11-27 19:48:44 +01:00
sowle
9f5a142d15 Merge remote-tracking branch 'origin/cake' into cryptoassets 2023-11-27 19:10:33 +01:00
zano build machine
868850951f === build number: 245 -> 246 === 2023-11-27 20:32:07 +03:00
zano build machine
ea05ecc49a === build number: 244 -> 245 === 2023-11-27 19:52:25 +03:00
cryptozoidberg
555270c1a3
profiling of block processing + lates UI 2023-11-27 15:53:56 +01:00
cryptozoidberg
07320c7a05
Merge branch 'cryptoassets' into cake 2023-11-22 16:20:03 +01:00
cryptozoidberg
4f59ca778e
fixes for cake wallet 2023-11-22 16:19:12 +01:00
cryptozoidberg
a894269b46
Merge branch 'cake' into cryptoassets 2023-11-21 21:09:26 +01:00
cryptozoidberg
c74cd2d454
fixed bug in mobile wallet: wrong objects references 2023-11-21 21:08:54 +01:00
cryptozoidberg
41452dbb4c
Merge branch 'cryptoassets' into cake 2023-11-21 18:05:40 +01:00
cryptozoidberg
1277818b23
added mutable to variable 2023-11-21 18:05:02 +01:00
cryptozoidberg
c33cfd29b7
added m_whitelisted_assets to serialized state(to hold correct assets balances on open time) - 2 2023-11-21 18:05:02 +01:00
cryptozoidberg
5bd815e66f
added m_whitelisted_assets to serialized state(to hold correct assets balances on open time) 2023-11-21 18:05:01 +01:00
sowle
6b78438d13 === build number: 158 -> 159 === 2023-11-20 19:49:28 +01:00
sowle
0e67f9449f build: an attempt 2 to fix boost lib paths in macOS CLI binaries 2023-11-20 19:48:23 +01:00
sowle
020ad2ec7a === build number: 157 -> 158 === 2023-11-20 15:51:13 +01:00
sowle
dec913c4e9 build: an attempt to fix boost lib paths in macOS CLI binaries 2023-11-20 15:50:16 +01:00
cryptozoidberg
c7533010bd fixed problem with wallet api 2023-11-17 12:20:30 +00:00
cryptozoidberg
131ee0e84b added missing path variable 2023-11-16 18:52:13 +00:00
cryptozoidberg
015fc54cef Fixed bug with wallet path under cake wallet - 2 2023-11-16 17:53:48 +00:00
cryptozoidberg
d1b40c280b Fixed bug with wallet path under cake wallet 2023-11-16 17:53:04 +00:00
sowle
46f4e317f4 === build number: 156 -> 157 === 2023-11-14 17:29:40 +01:00
sowle
6a83735cc1 updated ui 2023-11-14 17:28:52 +01:00
sowle
bfb7e22ae7
=== build number: 243 -> 244 === 2023-11-14 17:26:21 +01:00
sowle
400b0d09d3
updated ui 2023-11-14 17:25:34 +01:00
sowle
8f78abb19f
=== build number: 242 -> 243 === 2023-11-10 16:41:04 +01:00
sowle
6849a341c3
ui updated 2023-11-10 16:38:57 +01:00
zano build machine
a270fcdbf9 === build number: 241 -> 242 === 2023-11-10 14:32:12 +03:00
zano build machine
800c1e5802 === build number: 240 -> 241 === 2023-11-09 23:42:30 +03:00
sowle
760ebb3814
Merge branch 'develop' into cryptoassets
# Conflicts:
#	src/version.h.in
#	src/wallet/wallet2.cpp
2023-11-09 20:48:54 +01:00
sowle
e89462e126 Merge branch 'release' into develop 2023-11-09 19:42:57 +01:00
sowle
f9cabb0bd2 === build number: 155 -> 156 === 2023-11-09 19:42:06 +01:00
sowle
ee89a6ce12 wallet2: auditable wallets won't be requesting decoys for PoS anymore as they couldn't be used 2023-11-09 19:25:06 +01:00
sowle
1f0faf2c8e coretests: pos_mining_with_decoys improved to reveal a bug with staking using auditable wallets 2023-11-09 18:47:13 +01:00
cryptozoidberg
34b37ce45c
added missing info for tx rpc details 2023-11-06 17:34:23 +01:00
zano build machine
a151cab066 === build number: 154 -> 155 === 2023-11-06 18:39:54 +03:00
cryptozoidberg
c0ab3dc48a
staking improvement in GUI version 2023-11-06 16:36:57 +01:00
zano build machine
7d9ba7ef64 === build number: 239 -> 240 === 2023-11-06 16:51:01 +03:00
cryptozoidberg
257c19662c
merged UI from main 2023-11-06 14:49:35 +01:00
sowle
4a819afe18
removed unneeded logging 2023-11-02 21:14:41 +01:00
sowle
e45793826e
=== build number: 238 -> 239 === 2023-11-02 19:07:03 +01:00
sowle
00b663e425
gcc warning fixed 2023-11-02 19:06:17 +01:00
sowle
920a08c5ce
gcc compilation fix 2023-11-02 18:40:09 +01:00
sowle
88ec0706da
coretests: pos_mining_with_decoys was pinned to HF3 2023-11-02 18:34:04 +01:00
sowle
2dab8ab386
=== build number: 237 -> 238 === 2023-11-02 18:31:08 +01:00
sowle
406bc5d78e
removed deprecated absolute_output_offsets_to_relative(), chaingen was adapted accordingly 2023-11-02 18:29:55 +01:00
sowle
96cde2ae07
deprecated uint64_t get_amount_for_zero_pubkeys() removed, various compilation fixes 2023-11-02 16:51:45 +01:00
sowle
964968ded0
get_actual_timestamp() -> get_block_timestamp_from_miner_tx_extra(), corresponding check in pos block validation has been adjusted 2023-11-02 16:47:18 +01:00
sowle
3804ecd4d6
Merge branch 'develop' into cryptoassets
# Conflicts:
#	src/gui/qt-daemon/layout
2023-11-02 14:05:03 +01:00
sowle
46a0db21ec
Merge branch 'develop' into cryptoassets
# Conflicts:
#	CMakeLists.txt
#	README.md
#	contrib/epee/include/net/http_client.h
#	src/currency_core/blockchain_storage.cpp
#	src/currency_core/currency_core.cpp
#	src/currency_core/currency_format_utils.cpp
#	src/gui/qt-daemon/layout
#	src/rpc/core_rpc_server.cpp
#	src/rpc/core_rpc_server.h
#	src/rpc/core_rpc_server_commands_defs.h
#	src/version.h.in
#	src/wallet/wallet2.cpp
#	src/wallet/wallet2.h
#	src/wallet/wallet_public_structs_defs.h
#	src/wallet/wallet_rpc_server.h
#	tests/core_tests/chaingen.cpp
#	tests/core_tests/pos_validation.cpp
#	tests/core_tests/wallet_tests.cpp
#	tests/performance_tests/main.cpp
2023-11-01 23:48:36 +01:00
zano build machine
3c19bb969d === build number: 153 -> 154 === 2023-11-02 00:33:38 +03:00
cryptozoidberg
6ff59ca8cd
Merge branch 'develop' into release 2023-11-01 22:30:12 +01:00
cryptozoidberg
3da4331784
Merge from release 2023-11-01 22:29:42 +01:00
cryptozoidberg
301f0341b4
notarytool switched to keychain profile option 2023-11-01 14:04:47 +01:00
cryptozoidberg
970d689184
migrated to notarytool for macos 2023-11-01 13:08:51 +01:00
cryptozoidberg
8f6b4036e9
duplicated get_random_outputs in json-like api 2023-11-01 11:30:55 +01:00
sowle
20dbbdf81e === build number: 152 -> 153 === 2023-10-31 22:47:54 +01:00
sowle
e9ed916550 Merge branch 'posmixins' into develop 2023-10-31 22:33:14 +01:00
sowle
299124877e coretests: pos_mining_with_decoys test added 2023-10-31 21:22:15 +01:00
cryptozoidberg
f3bf340101
Merge branch 'wallet_state_base' into cryptoassets 2023-10-31 20:52:39 +01:00
cryptozoidberg
6f4d247715
fixed few compilation issues - 3 2023-10-31 20:01:31 +01:00
cryptozoidberg
66fbe640ef
fixed few compilation issues - 2 2023-10-31 19:53:26 +01:00
cryptozoidberg
3f0bed4899
fixed few compilation issues 2023-10-31 19:43:28 +01:00
cryptozoidberg
76577d21a9
more fixes with namespaces and inline functions 2023-10-31 19:31:18 +01:00
cryptozoidberg
cacdb4a4ce
moved serialization-specific adaptor-functions from wallet2 to base header file 2023-10-31 19:22:29 +01:00
cryptozoidberg
d1dc240a73
added forgoten wallet2_base.h 2023-10-31 18:37:58 +01:00
cryptozoidberg
ebb8f7b6ff
wallet sync state moved to separate base structure 2023-10-31 18:29:57 +01:00
sowle
760ff033cb set C++14 as a minimum requirement 2023-10-31 16:56:56 +01:00
sowle
6343812006 mixins support implemented in wallet2::prepare_and_sign_pos_block() 2023-10-31 15:45:35 +01:00
cryptozoidberg
b7a145e56f
Merge branch 'cake' into cryptoassets 2023-10-31 13:39:33 +01:00
cryptozoidberg
65b9619762
Merge branch 'cryptoassets' into cake 2023-10-31 13:37:37 +01:00
cryptozoidberg
208f50ce64 additional changes for cake 2023-10-30 19:22:33 +00:00
sowle
56de784054 potential fix for call_COMMAND_RPC_GET_EST_HEIGHT_FROM_DATE in wallet 2023-10-30 20:09:02 +01:00
cryptozoidberg
7a9f54443b
fixed bug with m_own_asset_descriptors container not being reset after resync wallet 2023-10-28 19:25:31 +02:00
sowle
7999e6ed56
Merge branch 'release' into develop 2023-10-26 17:50:14 +02:00
cryptozoidberg
9dd4f107b6 Fix compilation issue 2023-10-26 14:32:56 +00:00
cryptozoidberg
767dbebe54 removed include of deleted file 2023-10-26 13:19:06 +00:00
cryptozoidberg
f19acdee4b revoked unneeded changes 2023-10-26 12:56:37 +00:00
sowle
ba6b34c292
=== build number: 236 -> 237 === 2023-10-25 21:35:38 +02:00
sowle
bdd9e83418
simplewallet's "list_outputs" command and wallet2::get_transfers_str() were improved to support assets 2023-10-25 21:34:50 +02:00
sowle
e2da6a1f51
wallet: minor fixes 2023-10-25 21:32:47 +02:00
sowle
f9ca8f52c5
get_native_coin_asset_descriptor() implemented 2023-10-25 21:31:11 +02:00
cryptozoidberg
54d229f746 fixed compilation issues 2023-10-25 18:51:53 +00:00
cryptozoidberg
2682a719b0 changes related to extend plain api for cake 2023-10-25 17:29:12 +00:00
zano build machine
8fb3d58f68 === build number: 151 -> 152 === 2023-10-23 19:24:39 +03:00
zano build machine
a15ce736ca === build number: 150 -> 151 === 2023-10-23 19:24:18 +03:00
sowle
edb0056488
=== build number: 235 -> 236 === 2023-10-23 18:04:12 +02:00
sowle
4a5586efad
wallet: fixed creation of redundant zero-amount outputs in ionic-swap transactions 2023-10-23 17:12:43 +02:00
sowle
c974f65a30
coretests: minor fix for ionic_swap_exact_amounts_test 2023-10-23 17:10:07 +02:00
cryptozoidberg
0421e2e366
Removed preloader from UI 2023-10-23 17:03:47 +02:00
sowle
f94aa44104
construct_tx: redundant var removed 2023-10-23 16:28:33 +02:00
sowle
57e10326d8
coretests: ionic_swap_exact_amounts_test improved to reveal redundant zero-amount outputs in ionic-swap transactions 2023-10-23 15:42:51 +02:00
sowle
4be58aa6d8
fixed bugs: 1) flag tdef_explicit_native_asset_id has been incorrectly set for separately signed tx; 2) pseudo out amount blinding mask was incorrectly set for separately signed tx when number of ZC inputs > 1 2023-10-22 01:22:23 +02:00
sowle
87831eaf1a
coretests: ionic_swap_exact_amounts_test added which uncovers a bug in separately signed tx creation 2023-10-21 23:40:39 +02:00
cryptozoidberg
0b563cc2b8 fixed compilation issue 2023-10-20 16:39:43 +00:00
cryptozoidberg
fe77c50e2c few cake-specifik tweaks 2023-10-20 16:09:12 +00:00
cryptozoidberg
ccfdb93ae4 Merge branch 'cryptoassets' into cake 2023-10-20 14:15:41 +00:00
cryptozoidberg
15a2c5f362 cake wallet extension 2023-10-20 14:14:52 +00:00
cryptozoidberg
f1e064f600
Added macro for CakeWallet-specific code separation 2023-10-20 15:00:39 +02:00
sowle
43b41fec3d
coretests: check_ionic_swap_tx_outs added, some improvements 2023-10-19 14:37:57 +02:00
sowle
146bf51021
chaingen: balance_via_wallet() now supports asset id, replace_coinbase_in_genesis_block() fixed 2023-10-18 21:08:16 +02:00
sowle
841e5e7557
coretests: chaingen: minor improvement 2023-10-16 11:41:24 +02:00
sowle
fbce4307b9
build for linux: fixed CMake 3.25 vs. Boost 1.70 vs. GCC 8.3 issue + updated readme 2023-10-13 21:22:25 +02:00
sowle
446d2dd69d
readme: several changes on Linux building process 2023-10-13 15:07:32 +02:00
sowle
6e952c11d8
readme: minor edit 2023-10-13 14:11:11 +02:00
cryptozoidberg
a60857a801
fixed abstract interface against mobile wallet: missing ifdef 2023-10-12 22:08:30 +02:00
cryptozoidberg
de3931b199
fixed abstract interface against mobile wallet 2023-10-12 21:23:47 +02:00
cryptozoidberg
b0f31ebd1b
fixes for mobile wallet in zarcanum network 2023-10-12 21:09:01 +02:00
cryptozoidberg
71c1ba9377
Update wallets_manager.h
Fix for mobile wallet
2023-10-12 20:33:11 +02:00
sowle
03d33c8ad8
Merge branch 'ubuntu23' into develop 2023-10-12 19:04:43 +02:00
sowle
41927218ec
build: CMake issue fix 2023-10-11 22:27:40 +02:00
sowle
cd7ec1cf18
build: 1) fixed issue where CMake couldn't find local Boost with system-wide Boost present and 2) added a patch for Boost compilation when GCC version >= 8.3 (+minor warning fix) 2023-10-11 21:57:18 +02:00
zano build machine
e912a51cf2 === build number: 234 -> 235 === 2023-10-11 21:08:23 +03:00
cryptozoidberg
e066257278
ionic_swaps: replaced Alice and Bob terms to Initiator and Finalizer 2023-10-11 12:28:05 +02:00
sowle
d33cfe7259
wallet: improved error handling for accept_ionic_swap_proposal (+ overall error handling for wallet) 2023-10-06 20:58:17 +02:00
cryptozoidberg
63354b91c3
changed fields names one more time 2023-10-06 17:36:10 +02:00
sowle
21718b01b9
coretests: ionic_swap_basic_test clean-up and improvements 2023-10-06 15:31:36 +02:00
cryptozoidberg
4762e39c77
changed fields names 2023-10-06 15:03:57 +02:00
zano build machine
6a35c3d062 === build number: 233 -> 234 === 2023-10-05 18:17:06 +03:00
cryptozoidberg
816022eb9d
fixed bug with locking assets for ionic swap 2023-10-05 17:16:27 +02:00
cryptozoidberg
bdb5af0490
added votes state logging 2023-10-05 14:44:27 +02:00
cryptozoidberg
2e4c6df22c
fixed bug with voting - again 2023-10-05 14:36:22 +02:00
zano build machine
d7a1b6267e === build number: 232 -> 233 === 2023-10-05 15:14:58 +03:00
cryptozoidberg
a74420a064
removed money lock for ionic swap 2023-10-05 14:10:11 +02:00
cryptozoidberg
83e543bcec
fixed bug with voting 2023-10-05 12:27:04 +02:00
sowle
492ec85f20
build script updated for windows 2023-10-04 18:34:20 +02:00
sowle
6bd09626b1
code clean-up and ionic_swap_basic_test fixed 2023-10-04 18:18:11 +02:00
zano build machine
453927e72f === build number: 150 -> 151 === 2023-10-04 17:09:35 +03:00
cryptozoidberg
aedab1e68e
implemented governance code in wallet 2023-10-04 16:08:48 +02:00
zano build machine
42cd6a8875 === build number: 231 -> 232 === 2023-10-04 14:18:17 +03:00
cryptozoidberg
32330b12b7
Removed unneeded namespace 2023-10-04 13:02:22 +02:00
cryptozoidberg
1886fae681
implemented governance initial code for wallet/daemon 2023-10-03 22:43:51 +02:00
cryptozoidberg
0ede461f25
merge from release 2023-10-02 15:54:58 +02:00
cryptozoidberg
7d1e7521bc
fixed simplewallet 2023-10-02 14:08:09 +02:00
zano build machine
7497d68b48 === build number: 230 -> 231 === 2023-09-29 19:33:52 +03:00
cryptozoidberg
0716e84529
fixes for wallet, implemented proxy-rpc for UI 2023-09-29 18:16:19 +02:00
zano build machine
e6168a813a === build number: 229 -> 230 === 2023-09-11 21:36:27 +03:00
cryptozoidberg
db3489a02b
fixed minor bug for ionic swaps 2023-09-11 20:35:45 +02:00
cryptozoidberg
80d8e49b2a
Implemented fix for the bug related to ionic swaps(non-native coins issue) 2023-09-08 19:33:13 +02:00
zano build machine
fa58726147 === build number: 228 -> 229 === 2023-09-07 17:42:57 +03:00
cryptozoidberg
9eefffd872
changed ionic swap proposal command arguments to more suitable 2023-09-05 16:46:21 +02:00
zano build machine
a47b3ca0a5 === build number: 227 -> 228 === 2023-09-01 19:19:56 +03:00
zano build machine
9372727053 === build number: 226 -> 227 === 2023-09-01 16:17:21 +03:00
zano build machine
f5e5dd7a36 === build number: 225 -> 226 === 2023-09-01 16:11:17 +03:00
zano build machine
3f947fcfee === build number: 224 -> 225 === 2023-09-01 16:04:05 +03:00
zano build machine
e60dea0a42 === build number: 223 -> 224 === 2023-09-01 15:29:59 +03:00
cryptozoidberg
47a5d6a202
version bump: 2.0.0.222 -> 2.0.0.223 2023-09-01 13:59:45 +02:00
cryptozoidberg
37e6a68509
attempt to fix issue with broken versioning in tx versioned structs 2023-09-01 11:59:47 +02:00
sowle
fb456bb2b9
version bump: 2.0.0.221 -> 2.0.0.222 2023-08-30 21:36:25 +02:00
cryptozoidberg
22821d3ab0
Merge branch 'asset_update' into cryptoassets 2023-08-30 21:34:43 +02:00
cryptozoidberg
55a972050a
added comands for emmit/burn/update assets 2023-08-30 21:33:05 +02:00
sowle
1edf380836
version bump: 2.0.0.220 -> 2.0.0.221 2023-08-29 14:14:33 +02:00
sowle
3402da561c
Merge branch 'asset_update' into cryptoassets
# Conflicts:
#	tests/core_tests/multiassets_test.cpp
2023-08-29 14:13:15 +02:00
sowle
0783d3e6f9
asset operation code clean up and minor improvements 2023-08-29 09:22:45 +02:00
sowle
f3b85ad7f3
typo fixed 2023-08-29 09:20:59 +02:00
cryptozoidberg
8e56e876db
fixed another problem with lambda call 2023-08-28 21:43:57 +02:00
cryptozoidberg
4fec3b7f32
fixed problem with lambda call 2023-08-28 21:27:33 +02:00
cryptozoidberg
70ea36db50
fixed more issues with wallet_tests_basic 2023-08-28 20:58:26 +02:00
cryptozoidberg
433125716e
fixed issues with wallet_tests_basic 2023-08-28 20:50:40 +02:00
cryptozoidberg
fc473c97e6
removed unused code lines 2023-08-28 20:36:53 +02:00
cryptozoidberg
4be4494ad4
few fixes to solve linux build 2023-08-28 20:31:57 +02:00
sowle
b669990a8a
small typo fixed ("amount_to_validate") 2023-08-28 19:49:13 +02:00
sowle
16ed0c15a5
coretests: multiassets_basic_test improved 2023-08-28 19:15:49 +02:00
cryptozoidberg
7bfa59fd7e
full test for assets operations ready and passes 2023-08-25 22:40:20 +02:00
cryptozoidberg
1f11b2af97
implemented test for validation ownership of asset_update operation 2023-08-24 20:32:50 +02:00
cryptozoidberg
06db8961e7
implemented basic code for injection of debug events into wallet multistep opperations 2023-08-24 17:57:23 +02:00
sowle
035097b5af
balance proof, asset surjection proof and wallet2::prepare_tx_destinations were fixed to correctly support assets burn operation 2023-08-23 19:40:43 +02:00
sowle
8fdd15f584
crypto: implemented point_t::operator-() + test 2023-08-23 19:32:28 +02:00
sowle
57a7cf8451
fixed construct_tx_handle_ado() to correctly calculate asset operation amount commitment for burn operation 2023-08-22 20:23:52 +02:00
sowle
ef50ae0ca3
version bump: 2.0.0.219 -> 2.0.0.220 2023-08-22 18:55:17 +02:00
sowle
0769faef2f
ui submodule updated 2023-08-22 18:54:06 +02:00
cryptozoidberg
a3a022119c
extended multiassets test to check burn operations 2023-08-22 14:47:41 +02:00
sowle
2c19fe9c8e
slightly changed check_tx_balance to support ASSET_DESCRIPTOR_OPERATION_PUBLIC_BURN 2023-08-22 14:45:25 +02:00
cryptozoidberg
b70dc22f2c
fixed problem with ioni swaps expiration time never unlock coins 2023-08-21 20:29:12 +02:00
sowle
8f4d822e5e
bcs: fixed put_asset_info() to enable verification of the asset emit operation 2023-08-19 15:47:11 +02:00
cryptozoidberg
0677548653
Fixed few bugs with emmit opertion, still not working 2023-08-17 21:46:37 +02:00
cryptozoidberg
3996567462
fixed few errors discovered by multiasset_test, still problem with emmit 2023-08-17 21:00:59 +02:00
cryptozoidberg
4c666aa6a4
added more test cases for emmit into multiassets_basic_test 2023-08-16 23:04:29 +02:00
sowle
4b4b9f5d8f
version bump: 2.0.0.218 -> 2.0.0.219 2023-08-16 20:12:23 +02:00
sowle
a30d6179a4
ui submodule updated 2023-08-16 20:11:28 +02:00
cryptozoidberg
ed3b5e5e81
fixed blockchain_storage.cpp 2023-08-15 22:32:14 +02:00
cryptozoidberg
d69095adbb
fixed all problems in wallet2.cpp 2023-08-15 16:52:53 +02:00
cryptozoidberg
26ef578f08
fixed at least currency_format_utils.cpp 2023-08-14 22:32:52 +02:00
sowle
e9a6913869
coretests: print_tx_size_breakdown() 2023-08-10 20:32:15 +02:00
sowle
fc1383324a
minor improvement for fill_tx_rpc_inputs() 2023-08-10 13:09:04 +02:00
sowle
035f82f605
minor fix for sequence factor comparison in on_get_pos_mining_details() 2023-08-09 13:48:36 +02:00
sowle
a6036e2a13
wallet & PoS: don't try to mine a PoS block if the current sequence factor is too high 2023-08-09 01:38:00 +02:00
sowle
940f481454
wallet: clarified logs a bit 2023-08-08 20:33:39 +02:00
sowle
c2975809b9
version bump: 2.0.0.217 -> 2.0.0.218 2023-08-08 18:25:07 +02:00
sowle
46e4919245
Zarcanum PoS proofs & wallet's mining code made compatible with non-explicit asset id outputs 2023-08-08 16:58:49 +02:00
sowle
256f60311a
coretests: minor fix for multiassets_basic_test 2023-08-08 13:09:39 +02:00
sowle
0d5e58c2c7
coretests: added new test assets_and_pos_mining which uncovers a bug in Zarcanum PoS implementation when a non-explicit asset id output is being staked 2023-08-08 02:43:45 +02:00
cryptozoidberg
7c84d07fc3
Merged from cryptoassets 2023-08-07 21:35:24 +02:00
cryptozoidberg
db52f5b242
layout fixed 2023-08-07 21:32:22 +02:00
sowle
7b5e66713e
version bump: 2.0.0.216 -> 2.0.0.217 2023-08-07 02:50:16 +02:00
sowle
947fc3032d
core: check_tx_explicit_asset_id_rules changed to support burning outputs with an explicit asset id 2023-08-07 02:43:17 +02:00
sowle
76b85372b5
coretests: assets_and_explicit_native_coins_in_outs was improved to cover alias registration (burn coins) while having all non-explicit asset ids in inputs 2023-08-07 02:41:40 +02:00
sowle
db63453c63
version bump: 2.0.0.215 -> 2.0.0.216 2023-08-07 01:12:14 +02:00
sowle
d0811e6a22
wallets_manager::get_alias_coast() was ALSO fixed to provide exact alias cost, which is necessary for post-HF4 2023-08-07 01:11:23 +02:00
sowle
a0b09a6b78
version bump: 2.0.0.214 -> 2.0.0.215 2023-08-06 22:29:38 +02:00
sowle
4ae2cd8a51
core_rpc_server::on_get_alias_reward() and wallet2::get_alias_cost() were fixed to support aliases in post-HF4 env 2023-08-06 21:43:33 +02:00
sowle
de52782b21
minor improvements 2023-08-06 21:14:49 +02:00
sowle
3916dd5502
coretests: gen_wallet_alias_via_special_wallet_funcs improved to also cover request_alias_registration() with the default alias reward 2023-08-06 21:14:07 +02:00
sowle
249c54b280
version bump: 2.0.0.213 -> 2.0.0.214 2023-08-06 14:56:37 +02:00
sowle
1854196132
coretests: gen_alias_too_much_reward adapted for post-HF4 2023-08-06 14:23:28 +02:00
sowle
a959c95231
wallet: request_alias_registration() and prepare_tx_destinations() are fixed to correctly support aliases handling in post-HF4 env 2023-08-06 03:39:20 +02:00
sowle
a632192ebc
wallet: always create at least CURRENCY_TX_MIN_ALLOWED_OUTS outputs 2023-08-06 03:36:40 +02:00
sowle
9ee2031948
construct_tx: allow zero amount outputs 2023-08-06 03:35:17 +02:00
sowle
44cf9fd3fe
gcc compilation issues fixed 2023-08-06 03:17:26 +02:00
sowle
a3b12b1931
coretests: alias tests (and two wallet-alias tests) now set to be run in HF4 environment as well (many of them should fail because fixes were not committed yet) 2023-08-06 02:27:58 +02:00
sowle
adc006f2db
coretests: gen_wallet_alias_and_unconfirmed_txs and gen_wallet_alias_via_special_wallet_funcs were improved and adapted to HF4 2023-08-06 02:19:28 +02:00
sowle
ff3614fcce
coretests: gen_alias_in_coinbase, gen_alias_tests and gen_alias_too_small_reward were fixed and adapted for post-HF4 2023-08-06 02:00:40 +02:00
sowle
c1e0bc79a2
chaingen: replace_coinbase_in_genesis_block() 2023-08-06 01:51:31 +02:00
sowle
07d34298a0
coretests: compilation fixes 2023-08-06 01:29:04 +02:00
sowle
8a8477656d
chaingen: fixed few bugs in construct_tx_with_many_outputs() and put_alias_via_tx_to_list() 2023-08-06 01:28:18 +02:00
sowle
02138c86a4
clarify logging 2023-08-06 01:23:52 +02:00
sowle
df087b40c3
core: copmarison operators 2023-08-06 00:00:02 +02:00
cryptozoidberg
0b835903ab
asset operations in for wallet 2023-08-05 20:27:46 +02:00
sowle
9e61ccfedc
coretests: construct_pow_block_with_alias_info_in_coinbase and construct_block_gentime_with_coinbase_cb adapted for hf4 2023-08-04 02:47:52 +02:00
sowle
9906e0e168
added tdef_zero_amount_blinding_mask support for construct_tx_out 2023-08-04 02:44:00 +02:00
cryptozoidberg
e347062ab1
work related to assets altering(update,emmit,burn) 2023-08-03 20:01:41 +02:00
sowle
7663f8386a
fixed minor gcc compilation issues 2023-08-03 01:29:10 +02:00
sowle
87d109b8a5
readme: updated min/max versions 2023-08-02 22:58:12 +02:00
sowle
b0bbca04d6
coretests: fixed a bug with ZC outs handling in fill_tx_sources() 2023-08-02 22:56:57 +02:00
sowle
d1e066c609
coretests: various fixes for alias tests 2023-08-02 22:55:09 +02:00
sowle
d852119e5e
range proofs: max outputs count changed: 16 -> 32 2023-08-02 22:53:00 +02:00
sowle
136ac303b4
minor improvements 2023-08-02 22:51:50 +02:00
sowle
96a4b4033f
get_outs_money_amount() modified to handle hidden amounts as well 2023-08-02 22:51:12 +02:00
sowle
aed4d0bbee
coretests: chaingen improvements for --stop-on-first-fail 2023-08-02 22:49:41 +02:00
sowle
9d51307574 Merge branch 'master' into release 2023-08-01 15:50:21 +02:00
sowle
34eee5c961 Merge branch 'release2' 2023-08-01 15:26:31 +02:00
sowle
12bb214276 version bump: 1.5.2.149 -> 1.5.2.150 2023-07-31 19:15:22 +02:00
sowle
3346a5155a ui submodule updated 2023-07-31 19:14:22 +02:00
sowle
4d2eb4a57b
ui submodule updated 2023-07-31 19:13:11 +02:00
sowle
c756bde213 version bump: 1.5.1.148 -> 1.5.2.149 2023-07-31 18:15:43 +02:00
sowle
f910b66145 ui submodule updated 2023-07-31 18:12:06 +02:00
sowle
78890eea6b predownload file updated to height 2200000 2023-07-31 15:27:30 +02:00
sowle
affa54f1e1
partially fixed a bug with alias registration for hf4 + gen_alias_update_for_free test updated 2023-07-28 04:15:27 +02:00
sowle
07c96ea9b6 build: macOS build script updated 2023-07-26 18:43:03 +02:00
sowle
fa4888aece version bump: 1.5.1.147 -> 1.5.1.148 2023-07-26 18:28:18 +02:00
sowle
e6be30aa5a ui submodule updated 2023-07-26 18:26:53 +02:00
cryptozoidberg
2375d0fbc1
fixed minro bug in UI wallet 2023-07-26 14:37:55 +02:00
sowle
54396e8aeb
build macOS: minor fix for build script 2023-07-25 00:55:59 +02:00
zano build machine
c775719525 === build number: 212 -> 213 === 2023-07-24 19:11:46 +03:00
sowle
bd29b5cb1b version bump: 1.5.1.146 -> 1.5.1.147 2023-07-21 13:21:52 +02:00
sowle
57cf32b6be build: macOS build script updated 2023-07-21 13:20:55 +02:00
sowle
f8d953afe2 remove annoying debug log message 2023-07-21 13:18:40 +02:00
sowle
1a5f9e16e6 ui submodule updated 2023-07-21 13:17:46 +02:00
sowle
76e60d7cfc
version bump: 2.0.0.211 -> 2.0.0.212 2023-07-21 13:04:37 +02:00
sowle
1a42d2ef65
ui submodule updated 2023-07-21 13:04:07 +02:00
sowle
c0d0d7d42a
build macOS: final fixes (hopefully) 2023-07-21 11:03:35 +02:00
sowle
1088b3ce90
build for macOS: dirty workaround for unsolvable issues with the VM 2023-07-21 02:04:34 +02:00
sowle
45f3986f78
build: macOS min deployment target changed: 10.10.5 -> 10.12 (Sierra) 2023-07-20 20:57:21 +02:00
sowle
01a878d827
Merge branch 'C++17' into cryptoassets 2023-07-20 20:51:49 +02:00
cryptozoidberg
4c15be3d4e
fixed isolate_auditable_and_proof 2023-07-20 19:03:02 +02:00
cryptozoidberg
f8c6125258
removed deterministif onetime key 2023-07-20 17:12:20 +02:00
cryptozoidberg
6c8f879661
Implemented attachment_isolation_test and fix for this test 2023-07-19 22:09:14 +02:00
cryptozoidberg
145a1b65b5
moved UI to latest commit 2023-07-19 15:21:44 +02:00
cryptozoidberg
96a05dce47
Layout moved to latest commit 2023-07-19 13:34:46 +02:00
cryptozoidberg
eaebac7e6b
Implemented deterministic one time tx keys 2023-07-18 20:57:30 +02:00
cryptozoidberg
963b1b3f10
added forgoten files 2023-07-17 14:34:28 +02:00
cryptozoidberg
f36f570310
Implemented test for the issue related to TX_SERVICE_ATTACHMENT_ENCRYPT_BODY_ISOLATE_AUDITABLE with outgoing transactions 2023-07-14 22:44:16 +02:00
sowle
e3f2170f00
version bump: 2.0.0.210 -> 2.0.0.211 2023-07-14 21:21:31 +02:00
sowle
30d42c6cef
version bump: 2.0.0.210 -> 2.0.0.211 2023-07-14 21:20:02 +02:00
sowle
689fa2c63e linux and mac build: email sending updated improved (switched to python script) 2023-07-14 20:21:41 +02:00
sowle
6156c0dc6c version bump: 1.5.1.145 -> 1.5.1.146 2023-07-14 20:01:21 +02:00
sowle
9e6530e146 win build script updated 2023-07-14 19:59:39 +02:00
sowle
bddfaae9af
Merge branch 'cryptoassets' into C++17 2023-07-14 13:34:13 +02:00
sowle
4d5c6e2ec6
performace_tests: comilation fix for gcc + warnings 2023-07-14 13:33:33 +02:00
sowle
f1997a64dd
code slightly adapted to C++17 2023-07-14 02:10:18 +02:00
sowle
5ff0f93027
unit_tests & performance_tests: fixed compilation error 2023-07-14 01:30:26 +02:00
sowle
e2d84bfc3b
version bump: 2.0.0.209 -> 2.0.0.210 2023-07-13 15:58:18 +02:00
cryptozoidberg
5448441c8f
fixed typo 2023-07-13 15:55:38 +02:00
sowle
42be0af5a2
linux appimage build: email sending was improved (switched to python script) 2023-07-13 15:51:09 +02:00
cryptozoidberg
d7dea2ad14
added cross-coversion for JSON parser string->uint64_t 2023-07-13 15:49:30 +02:00
sowle
00dcaee48f
linux build: email sending was improved (switched to python script) 2023-07-13 12:55:36 +02:00
sowle
696725b5c3
version bump: 2.0.0.208 -> 2.0.0.209 2023-07-13 01:01:15 +02:00
sowle
abe696b2f4
functional tests: compilation fixed 2023-07-13 01:00:17 +02:00
sowle
e5bdd70a51
CMake minimum required version: 2.8.6->3.1, C++ minimum required version: 11(?) -> 14 2023-07-13 00:59:41 +02:00
sowle
66cd998f4d
win build script improved 2023-07-12 20:15:58 +02:00
sowle
babfde7318
win build system improvements 2023-07-12 12:31:50 +02:00
sowle
228b20e801
win build: minor fixup 2023-07-12 02:27:48 +02:00
sowle
c606259a8b
win bulild: 1) signing all executables (and new cert supported); 2) better approach for sending emails using a custom python script; 3) win build script updated for MSVC 2019 and more 2023-07-11 22:47:10 +02:00
sowle
8cbf3a7ebb
wallet2: fixed a rare bug preventing PoS block creation when UTXO defragmentation tx accidently uses stake output (pre-zarcanum) 2023-07-06 18:50:15 +02:00
sowle
8bf684f0d8
coretests: pos_minting_tx_packing was changed to uncover two a bug in PoS block packing (defragmentation) tx (pre-zarcanum) 2023-07-06 18:48:19 +02:00
cryptozoidberg
01548cdf57
few minor fixes 2023-07-03 16:56:41 +02:00
cryptozoidberg
ec01f1c80b
Updated UI 2023-06-29 13:35:37 +02:00
cryptozoidberg
1183c8b548
Fixed missing outgoing transactions from history 2023-06-22 23:32:17 +02:00
cryptozoidberg
937dfe042e
Merge branch 'recent_history' into cryptoassets 2023-06-21 22:46:29 +02:00
cryptozoidberg
c3397a00eb
fixes in simplewallet and mainwindow for new recent_history structure 2023-06-21 22:45:31 +02:00
cryptozoidberg
bf908f43a6
Merge branch 'cryptoassets' into recent_history 2023-06-20 21:59:53 +02:00
cryptozoidberg
7b228f07b4
Merge branch 'cryptoassets' of github.com:hyle-team/zano into cryptoassets 2023-06-20 21:59:32 +02:00
cryptozoidberg
a744092d9a
last fixes over bunch of tests 2023-06-20 21:59:02 +02:00
cryptozoidberg
26be84780a
Moved UI to latest commit(and built html) 2023-06-20 15:09:44 +02:00
cryptozoidberg
6caa5b7ac1
Moved UI to latest commit(and built html) 2023-06-20 15:04:24 +02:00
sowle
4e9c328be0
wallet: PoS mining timings 2023-06-19 23:59:17 +02:00
cryptozoidberg
71cc21845a
escrow_custom_test fixed(with many many tiny fixes) 2023-06-19 00:19:25 +02:00
cryptozoidberg
2860d030a3
fixes of different situations related to contracts and unconfirmed state 2023-06-16 20:19:49 +02:00
cryptozoidberg
3b190388b2
refactoring of wallet_transfer_info and unconfirmed balance calculations 2023-06-15 23:55:22 +02:00
sowle
bd893d9fa6
wallet2: decrease UTXO defrag limits a bit 2023-06-15 21:02:22 +02:00
sowle
dd80d202ad
wallet2: fix for a rare bug in asset deployment that occurs when there are few ZC outputs 2023-06-15 20:06:05 +02:00
sowle
5620e453b6
coretests: added new test asset_depoyment_and_few_zc_utxos which uncovers a rare bug in asset deployment that occurs when there are few ZC outputs 2023-06-15 19:47:07 +02:00
sowle
606ce93169
wallet2: fixed a rare bug preventing PoS block creation when UTXO defragmentation tx accidently uses stake output 2023-06-15 17:09:33 +02:00
sowle
50afdacd39
wallet2: fixed a bug preventing PoS block creation when the UTXO defragmentation tx lacks decoy outputs 2023-06-15 16:43:28 +02:00
sowle
ee5c0fe787
coretests: packing_outputs_on_pos_minting_wallet were completely rewritten to uncover two rare bugs in PoS block construction / defragmentation tx 2023-06-15 15:34:41 +02:00
cryptozoidberg
b557b0ef93
Moved UI to latest commit(and built html) 2023-06-14 19:02:39 +02:00
cryptozoidberg
b744dfb79b
all tests compilation fixed(still a lot of broken tests) 2023-06-13 23:06:55 +02:00
sowle
b92f63e176
version bump: 2.0.0.207 -> 2.0.0.208 2023-06-13 17:08:28 +02:00
sowle
ba594dd5ac
additional error handling for wallet2 and simplewallet 2023-06-13 17:06:56 +02:00
cryptozoidberg
c48f840f68
fixes over renect_history refactoring(tests still broken) 2023-06-13 00:16:46 +02:00
sowle
44ed820abe
wallet2: fixed a typo 2023-06-12 21:41:08 +02:00
sowle
633d5238ef
version bump: 2.0.0.206 -> 2.0.0.207 2023-06-12 20:38:43 +02:00
sowle
dbb2712119
wallet: minor refactoring around generate_utxo_defragmentation_transaction_if_needed; coretests packing_outputs_on_pos_minting_wallet and pos_minting_tx_packing fixed 2023-06-12 20:37:26 +02:00
cryptozoidberg
2955b2c231
add built html to UI 2023-06-12 18:37:35 +02:00
cryptozoidberg
db637883cb
add built html to UI 2023-06-12 18:36:05 +02:00
cryptozoidberg
9a18116750
wallet2.cpp got in compiled, but the rest is not yet 2023-06-11 00:20:11 +02:00
cryptozoidberg
ad01fb0ba7
Moved UI to latest commits for testnet 2023-06-10 16:07:12 +02:00
cryptozoidberg
accd9ee1ce
Moved UI to letes fixes 2023-06-10 15:29:59 +02:00
sowle
eee04b65ae
wallet: fixed defragmentation tx minimum utxo limit 2023-06-09 19:44:27 +02:00
sowle
ce0f587c53
coretests: fixed a small error in pos_block_builder 2023-06-09 14:15:40 +02:00
sowle
e80e4a60cc
1) refactored block template creation and construct_miner_tx to incorporate block reward, essential for Zarcanum PoS; 2) fixed a bug in Zarcanum PoS generation; zarcanum_block_with_txs test now passes successfully 2023-06-09 01:19:37 +02:00
sowle
13e8d0dfe3
wallet: packing/consolidating tx that automatically aggregates small UTXO in PoS blocks was ranamed to defragmentation tx to avoid confusion + re-implemented to reflect post-HF4 changes 2023-06-09 01:10:16 +02:00
cryptozoidberg
60a9274dcb
Merge branch 'multiassets' into recent_history 2023-06-08 18:25:19 +02:00
cryptozoidberg
f9755eec58
Merge branch 'cryptoassets' into multiassets 2023-06-08 18:20:13 +02:00
cryptozoidberg
9a2371d49f
fixes on unconfirmed txs 2023-06-08 18:19:10 +02:00
sowle
6aba2d44b6
coretests: added new test zarcanum_block_with_txs which uncovers a bug in wallet2 Zarcanum PoS generation when block has non-zero txs 2023-06-08 04:18:37 +02:00
cryptozoidberg
5f79730c20
deep refactoring of recent_transfers structure against confidential assets - fixes over scan_tx_pool 2023-06-07 23:29:41 +02:00
sowle
544d8acead
version bump: 2.0.0.205 -> 2.0.0.206 2023-06-07 15:45:08 +02:00
sowle
831f17d570
gui updated 2023-06-07 15:44:19 +02:00
sowle
4e4982966b
compilation fix for simplewallet 2023-06-07 04:25:01 +02:00
sowle
e4065e7c52
version bump: 2.0.0.204 -> 2.0.0.205 2023-06-07 00:44:11 +02:00
sowle
ea45baa457
fixed a bug in wallet2 where the explicit asset id was incorrectly set when it shouldn't have been 2023-06-07 00:18:22 +02:00
cryptozoidberg
b827779c7c
deep refactoring of recent_transfers structure against confidential assets - still pretty much all broken 2023-06-06 23:05:53 +02:00
sowle
3004dbc684
gcc warning fixed 2023-06-06 22:54:29 +02:00
sowle
9030bfdc2b
coretests: minor improvements around multiassets_basic_test 2023-06-06 22:46:37 +02:00
sowle
a0fb876a48
coretests: added new test assets_and_explicit_native_coins_in_outs, which uncovers a bug in wallet2 where the explicit asset id was incorrectly set when it shouldn't have been 2023-06-06 22:43:09 +02:00
sowle
ce67a1bd1c
coretests: fixed several bugs in chaingen (init_test_wallet now sets hardforks correctly, fill_sources_and_destinations has been adjected to correctly set destinations in case of random split policy) 2023-06-06 22:37:32 +02:00
sowle
00c4ac3314
coretests: adapted few more tests to new testing environment 2023-06-05 20:25:16 +02:00
sowle
24851d10c6
Merge remote-tracking branch 'origin/multiassets' into cryptoassets 2023-06-05 19:08:57 +02:00
sowle
1ec3bac95d
coretests: adapted few tests to fit redesigned test environment (hardforks) 2023-06-05 18:19:39 +02:00
sowle
ddaf862170
Merge branch 'multiassets' into cryptoassets 2023-06-04 21:02:31 +02:00
sowle
6cab1f2e9a
coretests: minor fix for counting unique tests 2023-06-04 20:50:31 +02:00
sowle
ed9741e3cd
coretests: improved gen_wallet_save_load_and_balance test to uncover a bug in wallet save-load process for HF4 + fixed incorrect balance checking for some old wallet tests 2023-06-03 04:21:12 +02:00
sowle
6efe47f69c
coretests: eliminated unnecessary multiple inheritance from hard fork 2 tests 2023-06-03 04:15:14 +02:00
sowle
363d1bc316
coretests: redesigned test environment to allow individual tests to be conducted against various activated hardforks 2023-06-03 04:12:01 +02:00
sowle
30a54790a6
useful warnings and other logging improvements 2023-06-03 04:05:12 +02:00
sowle
2aa302f69a
total number of HFs + "==" and "!=" for hard_forks_descriptor 2023-06-03 04:03:35 +02:00
cryptozoidberg
36d7806b1c
Merge branch 'multiassets' into recent_history 2023-06-02 20:26:26 +02:00
cryptozoidberg
6263975c03
Fixed bug with cloudflare ssl handshake 2023-06-02 20:09:13 +02:00
cryptozoidberg
67cfc35faf
change of recent tx hsitory against multiassets 2023-05-31 13:45:36 +02:00
cryptozoidberg
7a3bfa655a
Changed text in simplewallet by pecial request from @ravaga 2023-05-30 14:47:38 +02:00
sowle
0ddac854a5
build system: added a href to emails for all platforms 2023-05-30 14:26:33 +02:00
sowle
68901d469a
version bump: 2.0.0.203 -> 2.0.0.204 2023-05-29 22:29:08 +02:00
sowle
a21c0a8c1a
wallet: 1) m_custom_assets clearing on resync cmd, 2) deployed asset is automatically added to custom assets list; 3) publish -> deploy; 4) help improved 2023-05-29 22:28:13 +02:00
sowle
f685929814
version bump: 2.0.0.202 -> 2.0.0.203 2023-05-29 14:45:10 +02:00
sowle
0832fac57e
temporary hard-disabled TOR relay (like it was in master) 2023-05-29 14:31:48 +02:00
sowle
3e1123fcaa
print_fixed_decimal_point_with_trailing_spaces() minor fix 2023-05-29 14:25:24 +02:00
sowle
f245df2d09
some warnings fixed 2023-05-26 22:20:55 +02:00
sowle
379f4b3535
version bump: 2.0.0.201 -> 2.0.0.202 2023-05-26 22:11:59 +02:00
sowle
d530c165da
wallet: PoS timings added 2023-05-26 22:11:23 +02:00
sowle
943e234a3d
simplewallet & wallet: printing balance unlocked + disabling tor by default 2023-05-26 22:01:01 +02:00
cryptozoidberg
dbd8c39fe2
multiple fixes over wallet/core api 2023-05-26 20:23:35 +02:00
sowle
b4cdae8bd8
version bump: 2.0.0.200 -> 2.0.0.201 2023-05-25 21:24:28 +02:00
sowle
768309d72e
tx_out_zarcanum serialization fixed + fixed compilation for MSVC 2022 2023-05-25 21:15:42 +02:00
cryptozoidberg
84066c7203
added more proper handling of exception in rpc handlers 2023-05-25 20:05:39 +02:00
cryptozoidberg
3fec14f95e
Implemented multiple map rpc processing(lets chain RPC processing to different handlers maps in different objects) 2023-05-24 23:43:44 +02:00
cryptozoidberg
a9bbfdcf82
wallet_rpc_server refactoring for blocking API calls(for browser extension) 2023-05-23 23:47:42 +02:00
cryptozoidberg
756e6e526f
version updated 2023-05-23 12:39:31 +02:00
sowle
5b2625ab0e
build system: added a href to emails for all platforms 2023-05-23 01:29:06 +02:00
sowle
282ba96efc
build system: windows builds uploading fixed 2023-05-23 01:28:24 +02:00
cryptozoidberg
52f11a77b9
Fixed wrong p2p ports 2023-05-22 23:24:20 +02:00
cryptozoidberg
e97d14c7e4
Fixed simplewallet ionic_swap functions 2023-05-22 23:08:12 +02:00
cryptozoidberg
3fab389f05
Reset testnet to next formation 2023-05-22 19:58:22 +02:00
sowle
5230d062c8
Merge branch 'multiassets' into cryptoassets 2023-05-22 15:56:29 +02:00
sowle
f164335e4e
coretests: zarcanum_in_alt_chain fixed by temporary disabling altchain checks for ZC inputs (+few improvements) 2023-05-22 04:27:40 +02:00
cryptozoidberg
681daeea21
fixed multisig_and_checkpoints and reset checkpoint to original mainnet value to keep all binary compatible 2023-05-20 21:21:45 +02:00
cryptozoidberg
0eaa596536
fixed pos_minting_tx_packing 2023-05-20 20:42:26 +02:00
cryptozoidberg
17188ab8fb
properly configured pos_altblocks_validation 2023-05-20 00:53:53 +02:00
cryptozoidberg
7eea5fab42
reset PoS starter difficulty 2023-05-19 22:46:01 +02:00
cryptozoidberg
b6fecfadff
tx json struct made optional 2023-05-19 19:23:31 +02:00
cryptozoidberg
11939bc4b6
fixed multisig_and_checkpoints 2023-05-19 19:21:02 +02:00
cryptozoidberg
fdf6f3722a
Merge branch 'cryptoassets' into multiassets 2023-05-18 16:42:43 +02:00
sowle
b93bf1d187
predownload updated to height 2100000 2023-05-18 14:10:10 +02:00
cryptozoidberg
fd50b3ad8d
fixed hard_fork_1_pos_and_locked_coins test 2023-05-03 22:16:40 +02:00
sowle
53e79696af
Merge branch 'multiassets' into cryptoassets 2023-05-02 20:48:33 +02:00
sowle
f094aeb0b1
validate_escrow_proposal now requires service attachment body to be encrypted 2023-05-02 20:32:11 +02:00
cryptozoidberg
32fca807c3
Merge branch 'cryptoassets' into multiassets 2023-05-02 16:18:18 +02:00
cryptozoidberg
17134351bb
Multiple fixes over core tests related to zarcanum/multiassets 2023-05-02 16:16:58 +02:00
sowle
9efa8f7a6f
wallet2::add_sent_unconfirmed_tx partially fixed for assets, read_money_transfer2_details_from_tx removed 2023-05-01 13:34:37 +02:00
cryptozoidberg
62d173424a
changed approach to turn core_tests against hardforks 2023-05-01 00:03:24 +02:00
cryptozoidberg
a83dedf2a4
multiple fixes over old block verification tests 2023-04-30 00:43:49 +02:00
sowle
ba2e7d4d15
typo fixed 2023-04-28 22:19:07 +02:00
sowle
6de38385e2
gcc warning fixed 2023-04-28 21:58:18 +02:00
sowle
1a698a72b2
a rare case in get_est_height_from_date fixed (credits go to @crypto_zoidberg) 2023-04-28 21:51:28 +02:00
sowle
0fcfe2e540
wallet2: various fixes for escrow 2023-04-28 20:07:35 +02:00
sowle
86e9667773
Merge branch 'multiassets' into cryptoassets 2023-04-27 19:19:19 +02:00
cryptozoidberg
64a043a18f
fixed few bugs related to aliases registration and block versions 2023-04-26 23:59:33 +02:00
sowle
438dd74166
coretests: fixed construct_tx_to_key for boundary condition handling for tx_version at the next block height 2023-04-26 22:49:31 +02:00
cryptozoidberg
4cfb62575b
fixed bug in atomic swaps(discovered by core_tests) 2023-04-26 00:24:29 +02:00
cryptozoidberg
9f6436ea08
Final fixes for ionic_swap_basic_test - first time test worked!!!!! 2023-04-25 00:16:13 +02:00
cryptozoidberg
09215f8923
Fixes over TX_FLAG_SIGNATURE_MODE_SEPARATE and ionic swaps 2023-04-21 17:33:56 +02:00
cryptozoidberg
4acb2bae03
multiple fixes over ionic_swap proposal 2023-04-20 22:08:20 +02:00
sowle
9f1b68e2b6
minor fix for a --stop-after-height option (2) 2023-04-18 23:31:26 +02:00
sowle
740425409b
predownload files updated up to height 2067777 2023-04-18 23:24:42 +02:00
sowle
faeefa8927
minor fix for a --stop-after-height option 2023-04-18 20:12:19 +02:00
cryptozoidberg
aa8d3207a4
minor fixes over TX_FLAG_SIGNATURE_MODE_SEPARATE 2023-04-18 20:07:33 +02:00
cryptozoidberg
44e22b611d
Multiple fixes here and there, mostly fixing compilation problems 2023-04-18 16:55:25 +02:00
sowle
901aba2ff9
version bump: 1.5.0.144 -> 1.5.1.145 2023-04-18 00:05:52 +02:00
sowle
21fd86156d
readme: minor improvements to building scripts for boost and openssl 2023-04-17 23:21:43 +02:00
sowle
863baecaee
readme: max versions updated 2023-04-17 23:21:26 +02:00
sowle
4a95e27574
new checkpoint at height 2M 2023-04-17 23:12:09 +02:00
cryptozoidberg
ac4a62a5c9
fixed API for explorer 2023-04-17 23:04:30 +02:00
cryptozoidberg
4aa58d1202
Merge branch 'cryptoassets' into multiassets 2023-04-17 19:36:49 +02:00
cryptozoidberg
9859361e36
Multiple fixes over ionic_swap 2023-04-17 19:35:55 +02:00
sowle
c69ef90249
check_native_coins_amount_burnt_in_outs() instead of get_amount_for_zero_pubkeys() which is now deprecated, some coretests adapted and have been debugged 2023-04-14 04:51:33 +02:00
sowle
14bec1cc5a
coretests: hard_fork_2 tests now handling m_hardforks properly 2023-04-13 23:23:22 +02:00
sowle
8543cf28c9
wallet: unconfirmed txs handling (temp fix) 2023-04-13 22:26:10 +02:00
cryptozoidberg
74ad0023ee
Merge branch 'cryptoassets' into multiassets 2023-04-13 20:08:31 +02:00
cryptozoidberg
e30341163b
Added intermediate information secure transfer between proposal and acceptance 2023-04-13 20:07:43 +02:00
sowle
0ec1b0f011
decode_output_amount_and_asset_id() implemented 2023-04-13 19:54:06 +02:00
cryptozoidberg
c8aed60e05
Merge branch 'cryptoassets' into multiassets 2023-04-13 17:12:59 +02:00
sowle
3094322edb
wallet2: handle_money_received2() assumes receiving only native coins (temporary) -- fixes few coretests 2023-04-12 22:40:18 +02:00
sowle
a9ac0a24eb
1) outputs_generation_context is now part of finalize_tx_params; 2) outputs_generation_context -> tx_generation_context 2023-04-12 20:13:54 +02:00
sowle
f1815da106
coretests: hardfork 3 set to be default for tests + defaults initialization 2023-04-12 04:55:17 +02:00
sowle
ddd7c21db7
coretests: hardforks are initialized with the defaults for test_generator 2023-04-11 22:41:08 +02:00
cryptozoidberg
27000bdb86
Merge branch 'cryptoassets' into multiassets 2023-04-11 19:16:02 +02:00
cryptozoidberg
03f443cf4c
Fixed few complilation issues 2023-04-11 17:23:06 +02:00
sowle
196c08a15f
crypto tests: minor fixes 2023-04-10 22:15:45 +02:00
sowle
52f941c748
hopefully final fixes for gcc errors 2023-04-10 21:01:35 +02:00
cryptozoidberg
8cfeab405b
merged from cryptoassets 2023-04-10 15:29:54 +02:00
sowle
b94e2f536d
ml2s tests excluded from *; some warnings fixed 2023-04-09 18:22:20 +02:00
sowle
8370e6b9f0
readme: max versions updated 2023-04-08 22:41:31 +02:00
sowle
382f6ab574
fixing gcc errors while trying not to screw up msvc compilation at the same time 2 (wip) 2023-04-08 22:38:50 +02:00
sowle
3abf473c8e
fixing gcc errors while trying not to screw up msvc compilation at the same time (wip) 2023-04-08 21:59:18 +02:00
sowle
fd16da8061
crypto: point_t::ctor made more standard-compliant (gcc error fix) 2023-04-08 05:39:10 +02:00
sowle
f6708e7124
readme: minor improvements to building scripts for boost and openssl 2023-04-08 05:38:01 +02:00
sowle
a7c7c14854
asset surjection proof: has been debugged, test multiassets_basic_test is now passed 2023-04-08 03:21:43 +02:00
sowle
db873c8dc2
crypto: more of point_t::operator== and != 2023-04-08 03:17:21 +02:00
cryptozoidberg
3b7e038064
fixed multiple compilation problems 2023-04-07 22:53:50 +02:00
sowle
447b09f400
check_tx_explicit_asset_id_rules(), is_asset_emitting_transaction() 2023-04-07 06:04:00 +02:00
sowle
c5ff48b9a5
crypto constants refactored: moved to headers as constexpr's, new constexpr ctors added, some were improved + tests greatly improved (crypto_constants and crypto_scalar_basics) 2023-04-06 02:50:12 +02:00
cryptozoidberg
fed1df53f0
Implementd rpc for crypto api 2023-04-05 19:05:45 +02:00
sowle
29cb62aaf3
asset surjection proof: debugging in progress 2023-04-05 06:45:27 +02:00
sowle
b9f49c26f0
coretests: blobsize check was temporary disabled 2023-04-04 23:23:46 +02:00
sowle
6915213eb1
verify_asset_surjection_proof() : first PoC implementation 2023-04-04 23:22:11 +02:00
sowle
4d6977b301
wallet2::load_whitelisted_tokens() was temporary disabled 2023-04-04 23:19:48 +02:00
sowle
8f86674fc1
crypto: constants for generators U, X, 1/8*H updated + crypto_basics test was adatped 2023-04-04 23:18:04 +02:00
sowle
228d73a39c
construct_miner_tx: explicit asset_id for PoS fixed 2023-04-04 14:04:42 +02:00
cryptozoidberg
dcf1b0adae
basic crypto functions exported from wallet 2023-04-03 20:32:18 +02:00
sowle
990f99767d
asset surjection proof: core adaptation & debugging (wip) 2023-04-01 06:49:40 +02:00
sowle
761a01ad9f
build system: added a href to emails for all platforms 2023-03-31 15:00:41 +02:00
cryptozoidberg
ca7d50d9ff
RPC server for UI: in work(need to overcome synchronization problem) 2023-03-30 23:21:51 +02:00
cryptozoidberg
4ca3e25995
Multiwallet rpc server implementation: in work 2023-03-29 20:26:46 +02:00
sowle
3b13b6e6f5
build system: windows builds uploading fixed 2023-03-29 19:24:11 +02:00
sowle
c9f9c65732
BGE proof has been debugged + more basic tests 2023-03-28 12:47:14 +02:00
sowle
154e649f56
verify_BGE_proof() first PoC implementation 2023-03-27 22:31:55 +02:00
cryptozoidberg
2ab206b6c1
Multiwallet RPC API: initial code draft 2023-03-27 22:03:31 +02:00
sowle
5b0431daf9
generate_BGE_proof() first PoC implementation 2023-03-27 02:48:42 +02:00
sowle
cfd01e80fe
BGE proof: WIP 2023-03-26 22:36:15 +02:00
sowle
fdc1ceea62
crypto: constexpr helpers moved to crypto-sugar, constexpr_pow added 2023-03-26 22:33:47 +02:00
cryptozoidberg
69647023e0
Implemented rpc calls for ionic_swaps 2023-03-24 20:59:26 +01:00
sowle
beccc55788
crypto: constexpr_floor_log_n, constexpr_ceil_log_n + tests 2023-03-23 23:30:56 +01:00
cryptozoidberg
2b9227c0f1
Implemented basic code for ionic_swap rpc 2023-03-23 19:24:23 +01:00
sowle
a13cb94214
assets surjection proof: work in progress, more data prepared 2023-03-23 03:37:05 +01:00
sowle
c1d6d13e7b
assets surjection proof: work in progress 2023-03-22 23:28:01 +01:00
sowle
1a53806642
CLSAG 5-layers GGXXG has been debugged + test added 2023-03-22 03:14:45 +01:00
sowle
06c0394b67
Zarcanum: 5-layers CLSAG draft implementation (tests are yet tbd, WIP) 2023-03-21 22:26:24 +01:00
sowle
cce4aaaaa3
Zarcanum adaptation for confidential assets: balance and range proofs generation/verification has been debugged (WIP) 2023-03-21 02:34:29 +01:00
sowle
b5c1c5477d
Zarcanum adaptation for confidential assets (WIP) 2023-03-20 21:25:08 +01:00
sowle
4f1d01fc73
crypto: 5-layers extended CLSAG is introduced for Zarcanum + confidential assets needs (stubs so far, tbd) 2023-03-20 21:21:47 +01:00
cryptozoidberg
94861608cf
Implemented accept_ionic_swap_proposal and get_ionic_swap_proposal_info command in simplewallet 2023-03-20 20:11:23 +01:00
sowle
96753bbc94
proofs generation moved from construct_miner_tx to wallet2::prepare_and_sign_pos_block + improvements over generate_zc_outs_range_proof 2023-03-17 23:59:21 +01:00
sowle
72dab7bb1e
Zarcanum & assets balance proof refactoring: WIP 2023-03-17 23:29:26 +01:00
cryptozoidberg
f47e9977a5
Implemented generate_ionic_swap_proposal command in simplewallet 2023-03-17 19:55:32 +01:00
sowle
c6294f7cb6
Zarcanum & assets balance proof refactoring: work in progress 2023-03-16 23:59:52 +01:00
cryptozoidberg
83c5336004
Core tests for basic ionic swaps scenario: draft for verification code 2023-03-16 19:15:11 +01:00
sowle
2f91a2b7f3
check_tx_balance minor improvement 2023-03-14 23:53:50 +01:00
cryptozoidberg
8e43055140
Core tests for basic ionic swaps scenario: code for creating proposal 2023-03-13 22:14:39 +01:00
sowle
95ebf24944
crypto tests: range proof tests were adapted and improved 2023-03-13 20:07:34 +01:00
sowle
d39b72c9eb
fixed a bug in old-style Zarcanum proof generation (temporary stuff) 2023-03-13 20:06:02 +01:00
sowle
f3f7b1a742
crypto traits for (extended) range proofs were refactored to support different sets of generators + debug helpers after a long debug session 2023-03-13 20:05:06 +01:00
sowle
1df413019f
wallet: fixed pos entry selection (limited to native coins) 2023-03-10 13:46:33 +01:00
cryptozoidberg
f0d5bc94cd
Core tests for basic ionic swaps scenario: inital code 2023-03-09 19:49:40 +01:00
sowle
c817d3ccb6
minor improvement to multiasset_basic_test 2023-03-08 21:27:01 +01:00
sowle
c45f9ee894
fixed passing of blinded_asset_id for each decoy when requested by RPC from daemon + minor improvements for CLSAG_GGX 2023-03-08 21:26:09 +01:00
sowle
44b2619d79
construct_tx: mark outs asset id's as explicit if all inputs has obvious asset ids and there's no asset emission operation in tx 2023-03-08 21:24:06 +01:00
cryptozoidberg
8be2cc083f
Implemented accept ionic swap proposal(partially) 2023-03-08 21:19:59 +01:00
sowle
5644c18917
crypto tests: clsag_ggx_basics improved and also coverage of binary and boost serialization added 2023-03-08 21:19:36 +01:00
sowle
f980bdadf5
balance proof: final fixes for asset-transferring txs; outputs_generation_context cleanup 2023-03-07 12:38:30 +01:00
cryptozoidberg
6e1fb500eb
Implemented function for decoding proposal details 2023-03-06 22:47:06 +01:00
sowle
730b8c52e2
balance proof refactored to new "simple Schnorr against X or G" scheme, has been debugged finally 2023-03-06 21:50:11 +01:00
cryptozoidberg
0030f7fbf6
Implemented basic code for validatiing ionic_swap 2023-03-03 18:17:16 +01:00
sowle
eb29f7f1e9
vector_UG_aggregation_proof made more strict, E_j structure now enforced to be lin(T'_j, G) 2023-03-02 22:06:42 +01:00
sowle
9aed3e6f45
zc_balance_proof refactoring (switching to generic Schnorr proof rel. to G and X depending on presence of ZC ins), work in progress 2023-03-01 22:27:46 +01:00
sowle
1d3153cfbd
generic_schnorr_sig_s (serialized) + test 2023-03-01 21:28:20 +01:00
cryptozoidberg
ae6feef3e5
Functions definitions for mainwindow 2023-02-28 21:36:52 +01:00
cryptozoidberg
404bfc1576
Creating outpus, minor fixes for ionic_swap 2023-02-28 21:35:28 +01:00
sowle
dd1631461d
crypto::generic_schnorr_sig + test 2023-02-28 02:04:50 +01:00
sowle
5127c77ebf
scalar_t::assign_mulsub + test 2023-02-28 02:03:57 +01:00
sowle
1ed33ce910
validate_tx_semantic() fixed for post-HF4 2023-02-27 21:26:30 +01:00
sowle
b1ccf8644b
3-CLSAG GGX implementation + tests 2023-02-27 18:00:53 +01:00
sowle
7bdb410b5d
is_out_to_acc: handling of non-blinded native assets id added 2023-02-27 15:36:58 +01:00
sowle
a532a3e042
native_coin_asset_id_pt introduced 2023-02-27 15:35:22 +01:00
sowle
44e22becae
crypto: vector_UG_aggregation_proof's generation and verification have been debugged and finalized 2023-02-27 02:56:12 +01:00
sowle
5ffb94749d
minor warning fixed in tor-connect 2023-02-26 21:56:00 +01:00
sowle
3eca2a1611
explicit native asset id for tx_destination_item and construct_tx_out 2023-02-26 21:49:21 +01:00
sowle
5fbb7a7fbb
bcs: range proofs collection, aggragation and balance checking refactored & improved 2023-02-26 21:48:09 +01:00
sowle
7efe48f522
crypto: vector_UG_aggregation_proof moved to cpp and improved 2023-02-26 21:45:54 +01:00
sowle
91afdac46d
crypto:: scalar_t::operator- (unary) + test 2023-02-26 21:44:54 +01:00
sowle
ec32ff4b5f
minor improvements 2023-02-26 21:43:29 +01:00
cryptozoidberg
2328a2cced
Implemented basics for building ionic_swap template 2023-02-23 19:10:22 +01:00
sowle
836e903156
first attempt of vector_UG_aggregation_proof gen & verify 2023-02-22 22:05:03 +01:00
sowle
e019200b85
minor fix for construct_tx_out 2023-02-22 22:03:43 +01:00
sowle
aecb49b403
scalar_vec_t extended a bit 2023-02-22 22:01:55 +01:00
zano build machine
b51a757e34 === build number: 144 -> 145 === 2023-02-22 22:57:05 +03:00
cryptozoidberg
f5b6ab9c48
bunch of fixes in UI 2023-02-22 20:49:26 +01:00
cryptozoidberg
b5ad2ffcdc
implemented boost::optional serialization 2023-02-21 17:18:21 +01:00
sowle
f3eb63d25c
ca: global refactoring: tx balance validation, asset operation validation, transaction creation. Also, main tx structure improved with @cryptozoidberg to reflect needs in versatile prunable proofs storage! 2023-02-21 01:51:55 +01:00
sowle
f9b54f305a
ca: wallet refactoring to support confidential assets (WIP) 2023-02-21 01:41:33 +01:00
sowle
4ae6616a2b
crypto: linear composition proof stub 2023-02-21 01:37:42 +01:00
sowle
b733e5561a
ca: validate_tx_semantic() refactored, bare balance check made explicit 2023-02-21 01:35:03 +01:00
cryptozoidberg
8f483db05e
ionc swaps implementation: inital code 2023-02-20 21:39:36 +01:00
cryptozoidberg
ed9b6932e8
Merge branch 'release' 2023-02-16 18:55:03 +01:00
cryptozoidberg
938c019cc6
hard-disabled TOR relay due to possible misleading API responses on wallet server 2023-02-16 18:52:40 +01:00
cryptozoidberg
123e599202
small fixes over bug reports 2023-02-15 19:55:00 +01:00
cryptozoidberg
237b09d886
Merge branch 'release' 2023-02-15 12:59:32 +01:00
cryptozoidberg
ffad058c7f
moved UI to right commit 2023-02-15 12:58:59 +01:00
cryptozoidberg
4a2f0c2165
moved UI to latest commit with bunch of fixes 2023-02-14 14:14:18 +01:00
sowle
a813484a4f
confidential assets: global refactoring WIP (now everything is in compilable state, including tests) 2023-02-13 21:42:31 +01:00
cryptozoidberg
b6cfecf25f
added extra check on transfer_canceled 2023-02-10 17:15:05 +01:00
sowle
7652a117cd
confidential assets: core & wallet refactoring, various fixes, WIP 2023-02-09 23:35:33 +01:00
sowle
f3583c2873
coretests: zaranum_in_alt_chain test improvements (forgotten) 2023-02-08 18:55:25 +01:00
sowle
f978be8b90
range proofs: Zano now uses U and G generators for aggregable range proof amount commitments 2023-02-08 18:54:25 +01:00
sowle
cf2f806f30
confidential assets: global wallet refactoring (WIP), mainly asset_id type change (hash -> public_key) and blinded_asset_id integration 2023-02-08 18:50:26 +01:00
sowle
abf99ece5e
confidential assets: global core refactoring (wip) 2023-02-08 18:42:29 +01:00
sowle
47b1338d32
crypto: vector_UG_aggregation_proof and zc_asset_surjection_proof stubs 2023-02-08 18:31:07 +01:00
sowle
5568e0eeaf
crypto: generator U + assertion tests for generators 2023-02-08 18:16:04 +01:00
sowle
baf2b507ec
Merge branch 'release' into cryptoassets
# Conflicts:
#	utils/build_script_windows.bat (accepted mine)
2023-02-04 20:38:47 +01:00
sowle
67fecc69fe
Merge branch 'multiassets' into cryptoassets 2023-02-04 20:34:03 +01:00
sowle
f2375f0156
confidential assets: work in progress 2023-02-01 21:58:26 +01:00
cryptozoidberg
394384facc
moved UI to proper commit 2023-01-18 21:00:51 +01:00
cryptozoidberg
dc3d6f8cfe
Fixed typo 2023-01-18 20:27:15 +01:00
cryptozoidberg
17212f16ea
Removed echo fro launch wrapper 2023-01-18 19:58:54 +01:00
cryptozoidberg
293d9f7d8d
Update Zano_appimage_wrapper.sh 2023-01-18 19:20:05 +01:00
cryptozoidberg
3850b19425
added helper message to script 2023-01-18 18:36:25 +01:00
cryptozoidberg
01eef47487
Merge branch 'release' 2023-01-18 17:38:08 +01:00
cryptozoidberg
ddc9d3a464
Merge branch 'release_test' into release 2023-01-18 17:37:19 +01:00
cryptozoidberg
d553a5f669
Update Zano_appimage_wrapper.sh 2023-01-18 15:15:13 +01:00
cryptozoidberg
d39c86207b
Replace image with rounded shape 2023-01-18 15:13:49 +01:00
cryptozoidberg
d9120d8249
replaced icon from png to svg 2023-01-18 14:00:13 +01:00
cryptozoidberg
a4c332e136
disabling sandbox for qtwebengine 2023-01-17 15:48:15 +01:00
cryptozoidberg
26db77219d
fix in appimage wrapper script 2023-01-17 14:39:41 +01:00
cryptozoidberg
f7b44e552b
fixes to crete manual script in appimage 2023-01-16 22:29:09 +01:00
cryptozoidberg
1b898d2afa
added disabling sandbox option for qtWebEngine under ubuntu 2023-01-16 20:05:43 +01:00
cryptozoidberg
976ec78247
fixes AppImage filename derivation 2023-01-13 19:03:20 +01:00
cryptozoidberg
6ee87bacf9
added missing folder creation 2023-01-13 18:42:09 +01:00
cryptozoidberg
9bdf9a4da7
added logo in png to AppImage 2023-01-13 18:20:24 +01:00
cryptozoidberg
dadc6a6c41
added missing changedir 2023-01-12 21:27:01 +01:00
cryptozoidberg
7e962a8a92
added skip_build option 2023-01-12 21:25:43 +01:00
cryptozoidberg
9990983510
fix for appimage path for logo 2023-01-12 21:11:53 +01:00
cryptozoidberg
018c2d24da
fix for appimage logo 2023-01-12 21:10:21 +01:00
cryptozoidberg
985af2ba08
disabled full rebuild, added missing / symbol in appimage 2023-01-12 20:11:42 +01:00
cryptozoidberg
33f7c58146
multiple fixes over AppImage build script 2023-01-12 20:01:22 +01:00
cryptozoidberg
4f831e9a3d
added Exacutable flag 2023-01-12 18:01:55 +01:00
cryptozoidberg
f873307240
added script for building AppImage 2023-01-12 17:46:31 +01:00
cryptozoidberg
1e7dc7dff9
added extra logs for AppImage detection debug 2023-01-12 15:42:03 +01:00
cryptozoidberg
a5f6f32083
Added svg app image for Linux AppImage 2023-01-12 15:31:53 +01:00
cryptozoidberg
b21823cc95
added openssl to root cmake file 2023-01-11 17:56:56 +01:00
cryptozoidberg
a95c56f20e
Merge branch 'master' into release 2023-01-11 17:44:32 +01:00
cryptozoidberg
0ed7ead8df
added detecting of an AppImage and set proper path to html foldr 2023-01-11 17:44:11 +01:00
cryptozoidberg
e7231271d1
added detecting of an AppImage and set proper path to html foldr 2023-01-11 14:57:51 +01:00
Snider
4ff66c2b15
Fixes CMAKE_OSX_DEPLOYMENT_TARGET (#337)
Hiya,

When compiling on macOS, i get "ld: warning: dylib (/opt/homebrew/lib/libboost_filesystem-mt.dylib) was built for newer macOS version (13.0) than being linked (11.0)"

This is fixed by adding "CACHE STRING"
2023-01-03 13:34:26 +01:00
sowle
0c0c287418
build script windows: ZANO_BUILDS_HOST added 2022-12-26 22:47:31 +01:00
sowle
404b20fa03
build: win signing temporary disabled 2022-12-22 22:12:13 +01:00
sowle
4eacfa8305
Merge branch 'master' into release 2022-12-22 20:22:37 +01:00
zano build machine
cd01fd3bd2 === build number: 143 -> 144 === 2022-12-22 17:20:31 +03:00
cryptozoidberg
48f9466b3e
extra verification checks in add_out_to_get_random_outs() 2022-12-20 21:23:53 +01:00
cryptozoidberg
64a90d190a
optimization on get_random_outs 2022-12-20 21:22:11 +01:00
cryptozoidberg
67334071a6
fixed sweep_below command in simplewallet(credits to @sowle) 2022-12-19 23:09:17 +01:00
cryptozoidberg
db5167d76a
Merge branch 'zarcanum' into multiassets 2022-12-16 19:47:08 +01:00
cryptozoidberg
254877421c
Merge branch 'multiassets' into zarcanum 2022-12-16 15:41:11 +01:00
cryptozoidberg
a9eba1d728
merged from zarcanum 2022-12-16 15:40:24 +01:00
cryptozoidberg
102e0c1cf9
disabled aliases registration fee checks for testnet 2022-12-16 15:38:49 +01:00
cryptozoidberg
28f1ed42d9
moved UI to latest commits 2022-12-15 18:50:05 +01:00
cryptozoidberg
5c6de2fddb
fixed asset duplication in balances with custom list 2022-12-15 17:11:55 +01:00
cryptozoidberg
63cdb84b80
fixed simplewallet compilation problem 2022-12-13 14:32:42 +01:00
cryptozoidberg
c057909e81
UI moved to latest commit 2022-12-12 18:12:44 +01:00
cryptozoidberg
d6cf863687
fixed multiple UI bugs related to multiassets 2022-12-10 00:00:20 +01:00
cryptozoidberg
e6b820213a
moved UI to latest commit 2022-12-09 17:57:13 +01:00
cryptozoidberg
7cda58a7cf
fixed bug in get_wallet_info 2022-12-07 18:04:40 +01:00
cryptozoidberg
0dc8a42555
added api for UI to fetch balance after whitelisting of asset 2022-12-06 21:59:49 +01:00
cryptozoidberg
9c30c60881
fixed scaling issue, fixed missing Zano entry in balances list 2022-12-06 21:31:17 +01:00
cryptozoidberg
18ec6fb2dd
moved UI to latest commit 2022-12-05 21:56:00 +01:00
sowle
4c7d6e9724
tor-connect module updated 2022-12-05 14:42:23 +01:00
sowle
aca0388c3e
don't use deprecated boost/bind.hpp and placeholders in global namespace 2022-12-04 15:25:19 +01:00
sowle
a8be7c327d
fix for a typo 2022-12-04 15:20:09 +01:00
sowle
2de573e2c3
gcc warning fix 2022-12-03 21:31:41 +01:00
sowle
528a46f4ed
wallet2::prepare_tx_destinations() fixed to correctly support assets + minor logging improvements 2022-12-03 21:12:31 +01:00
cryptozoidberg
65cfb4910f
moved to latest tor-connect commit 2022-12-03 20:59:51 +01:00
cryptozoidberg
464818fb7f
added api for adding/removing assets via UI 2022-12-02 22:29:23 +01:00
sowle
dac549f0b6
minor improvements and compilation fixes 2022-12-02 18:14:19 +01:00
cryptozoidberg
3a46bf3a44
tor-connect moved to latest commits 2022-12-02 15:29:07 +01:00
cryptozoidberg
65e5ad4f9f
moved to lates UI code 2022-12-02 15:28:03 +01:00
cryptozoidberg
a14dcb4e8a
implemented add/remove custom assets 2022-12-02 15:24:50 +01:00
cryptozoidberg
11e1836096
fixed bug with inflating balances array 2022-12-01 19:05:17 +01:00
sowle
39da73c42e
Merge branch 'multiassets' into zarcanum 2022-11-30 20:00:50 +01:00
sowle
139f2a5ae4
wallet: minor log improvement 2022-11-30 19:58:20 +01:00
cryptozoidberg
48f4886d0d
disabled code signing due to problems with cert(will be fixed later) 2022-11-29 18:50:10 +01:00
cryptozoidberg
511f2c0b8c
attempt to fix missing crypt32 2022-11-29 17:43:22 +01:00
sowle
879b93ef44
Merge remote-tracking branch 'origin/multiassets' into zarcanum 2022-11-29 04:59:31 +01:00
cryptozoidberg
eb0c689e88
Link ssl statically and in right order(now) 2022-11-29 00:31:24 +01:00
cryptozoidberg
880e1c189d
Link ssl statically 2022-11-28 23:23:54 +01:00
cryptozoidberg
1c52911757
added asset_id for UI_to_wallet api, added preloading whitelist for wallet before balance request 2022-11-28 22:10:50 +01:00
sowle
2b98842f8d
stratum: handle_method_eth_submitHashrate now supports parameter of any length (should be helpful for odd miners) 2022-11-28 21:17:59 +01:00
sowle
e1acf907db
wallet2::is_transfer_able_to_go() adapted for HF4 2022-11-28 21:15:49 +01:00
cryptozoidberg
0d84a92096
simple wallet now understand multiasset version of transfe command 2022-11-28 21:00:10 +01:00
cryptozoidberg
ac135253eb
simplewallet now can show multiassets balances 2022-11-26 23:00:32 +01:00
sowle
6b2831e525
wallet: sweep_below adapted for HF4 2022-11-25 23:01:45 +01:00
cryptozoidberg
b9facc0b6e
fixed bug in wallet regarding genesis reset 2022-11-25 22:03:21 +01:00
cryptozoidberg
a582473cea
Merge branch 'zarcanum' into multiassets 2022-11-25 15:50:06 +01:00
sowle
453e2b3456
wallet2: minor logging improvements 2022-11-24 21:54:43 +01:00
sowle
738a63a48e
Merge branch 'multiassets' into zarcanum 2022-11-24 21:52:49 +01:00
cryptozoidberg
8c1660e20f
Merge branch 'zarcanum' into multiassets 2022-11-24 21:50:58 +01:00
cryptozoidberg
489d0a9ecf
Fixed zarcanum_test_n_inputs_validation 2022-11-24 21:49:30 +01:00
sowle
b11e66aeff
zarcanum testnet pre-alpha has been launched 2022-11-24 20:39:06 +01:00
sowle
fd456f2445
Merge branch 'multiassets' into zarcanum 2022-11-24 13:15:55 +01:00
sowle
4579f172d8
blockchain_storage::pop_transaction_from_global_index() adapted for HF4 2022-11-24 04:34:58 +01:00
sowle
28c6a0db9b
error logging verbosity improved in a few places 2022-11-24 04:33:52 +01:00
sowle
834ad93094
coretests: zarcanum_in_alt_chain added to the list 2022-11-23 22:34:33 +01:00
sowle
f2ebc76001
coretests: zarcanum_in_alt_chain test added (EXPOSES a bug with global outputs during alt block handling) 2022-11-23 22:01:55 +01:00
sowle
928d937a7b
get_amount_from_variant() made noexcept 2022-11-23 19:28:17 +01:00
sowle
ef38eb9724
p2p: when use-only-priority-nodes is present and none of priority nodes are specified -- don't connect to seed nodes 2022-11-23 18:55:03 +01:00
sowle
741aae9b7f
wallet: prepare_tx_sources() fixed for post-HF4 transfers 2022-11-23 18:09:49 +01:00
sowle
068d606557
coretests: zarcanum_basic_tests improved to check post-HF4 transfers via wallet2 with mixins (exposes a bug atm) + overloaded wallet2::transfer() 2022-11-23 15:10:06 +01:00
sowle
3ff4a69945
DIFFICULTY_STARTER was split into DIFFICULTY_POW_STARTER and DIFFICULTY_POS_STARTER (2) 2022-11-23 04:13:39 +01:00
sowle
4f703fe8f8
DIFFICULTY_STARTER was split into DIFFICULTY_POW_STARTER and DIFFICULTY_POS_STARTER 2022-11-23 03:05:59 +01:00
cryptozoidberg
37bb9611f9
Merge branch 'zarcanum' into multiassets 2022-11-22 15:16:21 +01:00
sowle
0b2fef7642
alt block tx validation fixed for htlc 2022-11-21 22:57:05 +01:00
sowle
8ca9e1261d
1) fill_tx_rpc_inputs adapted; 2) earlier deprecated get_to_key_input_from_txin_v removed completely 2022-11-21 22:55:59 +01:00
sowle
88e3190aad
bcs: more verbose logging 2022-11-21 21:49:11 +01:00
sowle
a0125f81e9
bcs: prevalidate_miner_transaction moved to be called before heavy PoW/PoS (now for alt blocks as well) 2022-11-21 20:40:14 +01:00
sowle
d06aa7796e
bcs: purge_altblock_keyimages_from_big_heap adapted 2022-11-21 20:38:56 +01:00
sowle
ce36a65994
Zarcanum PoS: fix for alt blocks validation 2022-11-21 18:43:36 +01:00
sowle
ec07a63f1e
chaingen: fix for test_generator::build_wallets() + more verbose error logging when didn't find a kernel 2022-11-21 18:39:39 +01:00
cryptozoidberg
d4f05089cd
added multiasset balances on UI signals 2022-11-18 22:36:07 +01:00
cryptozoidberg
b6fd8314ca
Merge branch 'zarcanum' into multiassets 2022-11-18 21:55:39 +01:00
cryptozoidberg
059c367d89
multiple fixes over wallet and cmake 2022-11-18 21:04:05 +01:00
sowle
197ef6861f
validate_alt_block_input adapted for post-HF4 inputs (WIP, first attempt) 2022-11-18 20:55:02 +01:00
cryptozoidberg
bf3430b49b
added support of multibalances on wallets_manager and wallet rpc level 2022-11-18 16:11:15 +01:00
cryptozoidberg
8c7aa8f578
Updated CMakelists for openssl libs due to lates changes in base epee headers(including openssl) 2022-11-18 14:28:36 +01:00
cryptozoidberg
7c9fde7a31
added base class explicit specification to another line 2022-11-18 14:09:42 +01:00
cryptozoidberg
449769b229
added base class explicit specification 2022-11-18 14:00:24 +01:00
cryptozoidberg
ccc761df3a
fixed another linux-specific compilation problem 2022-11-18 13:19:01 +01:00
sowle
5fba04627b
the first working implementation of Zarcanum PoS verification + few bugs fixed in proof gen; zarcanum_pos_block_math test should now succeed 2022-11-18 04:18:41 +01:00
sowle
917437b31e
typo fixed 2022-11-17 23:01:37 +01:00
sowle
57acf4013d
coretests: zarcanum_pos_block_math greatly improved to cover various zarcanum signature issues (now exposes a known bug) 2022-11-17 22:20:33 +01:00
sowle
35b3be92eb
chaingen: more verbose error logging in check_tx_verification_context() and block_tx_verification_context() 2022-11-17 22:19:06 +01:00
cryptozoidberg
cadb3d033a
fixed linux-specific compilation problem 2022-11-17 22:00:59 +01:00
cryptozoidberg
490b8b12f1
added pre-loading token whitelist via ssl 2022-11-17 21:58:36 +01:00
cryptozoidberg
20bc2fdf00
fixed another tests-breaking issue 2022-11-17 20:46:21 +01:00
cryptozoidberg
960daaca23
fixed func name 2022-11-17 19:15:35 +01:00
sowle
a1bae08a67
crypto: minor improvements 2022-11-17 00:38:33 +01:00
sowle
a0d3ca0bf3
fix for PoS verification (block hash is used as a message for sig), zarcanum_test_pos_math shoud now pass (2) 2022-11-16 23:49:03 +01:00
sowle
801f244d46
fix for PoS verification (block hash is used as a message for sig), zarcanum_test_pos_math shoud now pass 2022-11-16 23:04:29 +01:00
cryptozoidberg
ee6f8cf972
right version of http_client.h 2022-11-16 22:27:49 +01:00
cryptozoidberg
e839761ae9
implemented https support and tokens whitelisting(just inital declaration) 2022-11-16 22:16:15 +01:00
sowle
fa0f51a7ed
chaingen: add_block/add_block_info adapted, remove_block_info implemented 2022-11-16 22:04:18 +01:00
sowle
93a1aacaca
coretests: zarcanum_pos_math added to the list, now it exposes a bug with PoS block validation 2022-11-16 21:56:32 +01:00
sowle
a7198b3313
coretests: get_params_for_next_pos_block() + zarcanum_test_pos_math finally makes custom and normal gen-time PoS Zarcanum blocks 2022-11-16 03:34:42 +01:00
sowle
51fbe0fc19
compilation fix 2022-11-16 03:16:50 +01:00
sowle
8543bb187f
compilation fix 2022-11-16 03:15:31 +01:00
sowle
94c9c0cebc
chaingen: 1) added support of mixins for build_wallets (via proxy stub); 2) add_block_info adatped for zc inputs + minor improvements 2022-11-16 02:31:22 +01:00
sowle
5e6103b38b
chaingen: pos_block_builder final touches 2 2022-11-16 01:11:53 +01:00
sowle
ea62c8833b
chaingen: pos_block_builder final touches 2022-11-16 00:28:18 +01:00
cryptozoidberg
a493ace766
added api for assets management in wallet(whitelist and custom set) 2022-11-15 21:54:55 +01:00
cryptozoidberg
c9255c33b8
merge from zarcanum 2022-11-15 21:14:13 +01:00
sowle
e02d15a170
coretests: pos_block_builder now supports Zarcanum 2022-11-11 19:10:50 +01:00
sowle
d0862e7be8
chaingen: construct_tx_to_key() gets tx version from block height correctly 2022-11-09 23:52:42 +01:00
sowle
4f02abac02
in get_tx_version() params named more obviously to avoid mistakes 2022-11-09 23:49:45 +01:00
sowle
89fa48880e
coretests: zarcanum_txs_with_big_decoy_set -> zarcanum_txs_with_big_shuffled_decoy_set_shuffled renamed and improved for post-HF4 (will not pass until a fix in chaingen) 2022-11-09 23:48:18 +01:00
sowle
c542b86200
chaingen: 1) shuffle_source_entries impemented; 2) zarcanum_txs_with_big_decoy_set improved for pre-HF4 part 2022-11-09 16:57:48 +01:00
sowle
266a0556ce
chaingen: 1) check_hardfork_inactive implemented, 2) check_hardfork_* callbacks now calls BCS::is_hardfork_active(), i.e. check against top_block_height+1 instead of top_block_height 2022-11-09 16:55:54 +01:00
sowle
01c656791a
hardfork activation message slightly changed to be less confusing (take a look @cryptozoidberg) 2022-11-09 16:53:15 +01:00
sowle
3cb903569c
chaingen: check_mixin_value_for_each_input() minor improvement 2022-11-08 18:25:52 +01:00
sowle
7d97fec3cf
coretests: gen_no_attchments_in_coinbase: CP hash changed 2022-11-08 02:07:59 +01:00
sowle
5f8c90bac6
1) absolute_output_offsets_to_relative() is now deprecated, new functions introduced to be used instead: prepare_outputs_entries_for_key_offsets() and absolute_sorted_output_offsets_to_relative_in_place()
2) fixed incorrect key_offsets sorting in construct_tx. Coretest zarcanum_txs_with_big_decoy_set now should pass okay.
2022-11-08 00:17:34 +01:00
sowle
0b1a97832c
coretests: zarcanum_pos_block_math (WIP, pos_block_builder adaptation) 2022-11-08 00:11:11 +01:00
sowle
b2c346657a
wallet2: minor improvements in prepare_and_sign_pos_block() 2022-11-08 00:09:34 +01:00
sowle
d67dbd986f
chainge: pos_block_builder 2022-11-08 00:07:53 +01:00
sowle
e1bec6cc2f
chaingen: pos_block_builder improved (WIP), moved from construct_homemade_pos_miner_tx() to the standard one 2022-11-08 00:06:52 +01:00
sowle
d2469c6473
chaingen: output_index refactoring + fill_output_entries() now can avoid locked outs while looking for decoys 2022-11-08 00:04:31 +01:00
sowle
f8558a020a
construct_miner_tx now can use externally generated one time tx key 2022-11-08 00:00:24 +01:00
sowle
831719381b
coretests: zarcanum_txs_with_big_decoy_set added (reveals a bug in construct_tx) 2022-11-07 23:57:43 +01:00
sowle
bedf0285b0
blocks validation: prevalidate_miner_transaction() moved to go before heavy proof of work / proof of stake checks (@cryptozoidberg, please, take a look) 2022-11-04 21:17:27 +01:00
sowle
1a22991617
fix construct_miner_tx 2022-11-03 23:08:22 +01:00
sowle
3835051fcb
construct_miner_tx() and prepare_and_sign_pos_block() made consistent in terms of PoS input 2022-11-03 21:01:49 +01:00
sowle
fe0042df6a
chaingen: pos_block_builder: WIP 2022-11-03 01:25:44 +01:00
sowle
ca4c9d4bad
set_hardfork_height() changed to set all unset prev hardforks to the same height 2022-11-01 23:37:42 +01:00
sowle
047dd31c11
coretests: zarcanum_gen_time_balance added to the list 2022-11-01 00:44:55 +01:00
sowle
138c7e2ae0
coretests: minor improvements 2022-11-01 00:11:51 +01:00
sowle
096de774b1
coretests: 1) test_gentime_settings_restorer; 2) zarcanum_pos_block_math -> zarcanum_gen_time_balance + improvements 2022-11-01 00:10:51 +01:00
sowle
20e72f18fc
coretests: 1) ignoring invalid blocks/txs made optional (may be disabled if necessary); 2) hard_fork_2_no_new_structures_before_hf fixed 2022-11-01 00:06:47 +01:00
sowle
cdb58b727f
coretests: wallet_test_core_proxy::update_blockchain() skips bad txs (it helps to calculate balance correctly in gen mode) 2022-10-31 18:21:06 +01:00
sowle
45d76ee28a
coretests: blocks and txs that are marked as bad are now skipped by chaingen::find_block_chain 2022-10-31 18:17:34 +01:00
sowle
4ea5e67d44
coretests: 1) tests_random_split_strategy added; 2) test_gentime_settings adapted and improved 2022-10-28 04:17:48 +02:00
sowle
ab58d091f2
chaingen: made events macros more verbose 2022-10-28 01:07:45 +02:00
sowle
fadb925d5b
coretests: multisig_and_unlock_time fixed (more strict check for unlock time in chaingen) + helper macros for chaingen 2022-10-27 23:58:52 +02:00
sowle
5ce6c283ea
coretests: build_outputs_indext_for_chain adaptation, chaingen adaptation wip + minor improvements 2022-10-27 04:22:25 +02:00
sowle
e4bc98209d
minor fixes 2022-10-27 00:50:45 +02:00
sowle
f5a0a85fa4
coretests: init_spent_output_indices fix, warnings fix 2022-10-26 20:50:21 +02:00
sowle
d738a34275
warning fix 2022-10-26 17:58:58 +02:00
sowle
e4efbb47f2
coretests: chaingen adaptation for zarcanum, wip 2022-10-26 17:39:10 +02:00
sowle
5fd2899fd2
coretests: fill_tx_sources fixed 2022-10-26 01:07:52 +02:00
sowle
5f9aea7a22
1) on_test_generator_created() 2) zarcanum_pos_block_math test added 3) init_output_indices() adapted -- WIP 2022-10-25 23:59:25 +02:00
sowle
4db7ac1668
pos block builder: WIP 2022-10-25 04:16:25 +02:00
sowle
b570ca81ef
pos_block_builder & zarcanum adaptation: WIP 2022-10-24 21:01:45 +02:00
sowle
078a7bf8b5
pos mining code is generalized and now can be used outside of wallet2 2022-10-23 23:48:43 +02:00
sowle
bb71c52d01
made pos_block_builder default-initializable 2022-10-23 02:50:30 +02:00
sowle
70df00f7df
coretests: pos_block_builder adaptation 2022-10-22 21:00:14 +02:00
sowle
dc8c84028d
1) get_object_blobsize(tx) fixed for post-HF4 txs 2) zarcanum_test removed from postponed! (I expect it to pass well now) 2022-10-21 05:01:10 +02:00
sowle
b0d5a3e3f7
coretests: zarcanum_test improved 2022-10-20 18:39:12 +02:00
sowle
a1d39ad051
minor improvements 2022-10-20 18:28:47 +02:00
sowle
8077c3e892
gcc fix, changed reference to pointer 2022-10-20 14:16:39 +02:00
sowle
24ce9d4b40
blinding_masks_sum now passed via: construct_miner_tx -> create_block_template -> bild_minted_block -> prepare_and_sign_pos_block 2022-10-20 12:46:41 +02:00
sowle
d4205fdf89
coretests: --log-level command-line option support added 2022-10-19 04:44:18 +02:00
sowle
1677bf5311
crypto tests: bppe_power_128 test added 2022-10-19 04:43:14 +02:00
sowle
fd5ecfc64c
Zarcanum PoS validation: zarcanum_verify_proof, prevalidate_miner_transaction, BPPE changed from H2 to X, etc. 2022-10-19 04:42:36 +02:00
sowle
3aafd31992
Zarcanum PoS blocks validation: WIP + wallet decoys 2022-10-18 04:34:32 +02:00
sowle
bb61396c10
fixed concealing_point calculation consistency over BCS and wallet PoS code 2022-10-18 04:32:40 +02:00
sowle
e704303f3b
crypto: serialization for zarcanum_sig and CLSAG_GGXG_signature_serialized 2022-10-18 04:30:54 +02:00
sowle
ed3b698839
crypto: more checks for generate_CLSAG_GGXG 2022-10-18 04:29:41 +02:00
cryptozoidberg
ca601b8fc8
enabled zarcanum_test_n_inputs_validation for multiassets branch 2022-10-16 14:47:34 +02:00
cryptozoidberg
76aa0c71a2
Merge branch 'zarcanum' into multiassets 2022-10-16 14:46:47 +02:00
cryptozoidberg
76e628d63f
disabled zarcanum_test_n_inputs_validation for zarcanum branch 2022-10-16 14:46:18 +02:00
cryptozoidberg
73a8f57f84
test for validatiing n-outputs against hardfork 4 2022-10-16 14:46:18 +02:00
sowle
6810a65661
the first Zarcanum PoS block generated successfully, but yet to be verified by the core 2022-10-16 03:17:18 +02:00
sowle
088ea83808
miner improvements on PoS block validation 2022-10-16 03:13:03 +02:00
sowle
c5206d0f52
zarcanum PoS: another iteration on zarcanum_generate_proof (WIP) 2022-10-14 19:26:52 +02:00
sowle
47d18e5deb
wallet2::prepare_and_sign_pos_block() refactored, vector<gen_wallet_info> added 2022-10-14 19:18:24 +02:00
sowle
b94c9f75d3
1) logging: channel(s) enabling made optionally less verbose; 2) various fixes after the merge 2022-10-14 19:08:27 +02:00
sowle
2c88652fbd
Merge branch 'multiassets' into zarcanum 2022-10-13 15:17:02 +02:00
cryptozoidberg
bc95391e93
removed link to local object(really bad day) 2022-10-13 00:07:40 +02:00
cryptozoidberg
52b70ffb24
merge from zarcanum 2022-10-12 23:51:09 +02:00
cryptozoidberg
d4166ffa5d
Fixed DUMBEST bug of this year!(absolute champion) 2022-10-12 23:40:38 +02:00
cryptozoidberg
38b5ef3748
removed debug logs 2022-10-12 23:38:48 +02:00
cryptozoidberg
0b97855eeb
one more constructor overload: and fixed 2022-10-12 23:05:25 +02:00
cryptozoidberg
b3b57ae534
one more constructor overload 2022-10-12 23:01:17 +02:00
cryptozoidberg
affdff7a3d
pre-fix for the problem with asset_id 2022-10-12 22:57:09 +02:00
cryptozoidberg
218d2735c5
more logs, more logs, more logs 2022-10-12 21:36:13 +02:00
sowle
5b086b9356
compilation fix (gcc) 2022-10-12 21:24:15 +02:00
cryptozoidberg
c5972c006a
added missing argument to macro in multiasset test 2022-10-12 20:09:56 +02:00
cryptozoidberg
5b4d41b1ed
fixed bug with compilation 2022-10-12 20:05:45 +02:00
cryptozoidberg
9f26c35630
added more logs to multiasset test debug 2 2022-10-12 20:03:42 +02:00
sowle
525b0cb840
coretests: zarcanum_test improvements 2022-10-12 19:26:03 +02:00
sowle
7a1a4b0058
crypto: zarcanum signature generation partially done (work in progress) 2022-10-12 19:17:00 +02:00
sowle
49e78fdbae
Bulletproofs+ Extended generation routine (crypto::bppe_gen) adapted to match with bpp_gen 2022-10-12 19:14:31 +02:00
cryptozoidberg
64ff2cb641
added more logs to multiasset test debug 2022-10-12 18:55:50 +02:00
sowle
30972db5ad
COMMAND_RPC_GET_RANDOM_OUTPUTS_FOR_AMOUNTS adaptation and improvements 2022-10-12 18:07:04 +02:00
sowle
f0bbcb5f40
wallet2::prepare_and_sign_pos_block() and COMMAND_RPC_GETBLOCKTEMPLATE refactored 2022-10-12 18:02:22 +02:00
sowle
642cc94691
wallet2::is_in_hardfork_zone() made const 2022-10-12 17:54:42 +02:00
sowle
08fd1d4248
in CATCH_ENTRY_CUSTOM custom_code moved before error logging 2022-10-12 17:51:32 +02:00
sowle
ab268af7b8
get_random_outs_for_amounts adaptation, get_mix_attr_from_tx_out_v implemented 2022-10-12 17:50:02 +02:00
cryptozoidberg
cebad7aab3
deterministic random enabled2 2022-10-12 17:01:58 +02:00
cryptozoidberg
289cbf62f7
deterministic random enabled 2022-10-12 14:29:07 +02:00
cryptozoidberg
760ee3aa28
last warnings removed from coretests 2022-10-12 13:01:16 +02:00
cryptozoidberg
ff730a1bc4
moved tor to latest version 2022-10-12 12:24:26 +02:00
cryptozoidberg
df596d799d
fixed warnings in core tests 2022-10-12 12:19:51 +02:00
cryptozoidberg
d3b2ca0e3a
more warnings cleanup 2022-10-12 12:10:48 +02:00
cryptozoidberg
fcfdf3e8ef
disabled random fix 2022-10-11 23:27:33 +02:00
cryptozoidberg
0441b80216
set stop_on_first_fail to stop on fail 2022-10-11 21:26:27 +02:00
cryptozoidberg
00d4ae9828
set deterministic rand to find bug in multiasset_test 2022-10-11 21:17:05 +02:00
cryptozoidberg
cdd7c1e735
warnings suppress 2022-10-11 20:53:36 +02:00
cryptozoidberg
ce7438265d
added default initialization 2022-10-11 20:19:24 +02:00
cryptozoidberg
425166ff49
disabled warnings for comments 2022-10-11 16:21:03 +02:00
cryptozoidberg
db5564ac1e
explicit namespace for print_money in wallet 2022-10-11 16:17:12 +02:00
cryptozoidberg
2927edf16a
removed multiple warnings over gcc/clang compilers 2022-10-11 16:05:48 +02:00
cryptozoidberg
cfafa1e73d
disabled unknown pragmas for backward comp 2022-10-11 15:54:44 +02:00
cryptozoidberg
8c90dc4032
removed parentheses 2022-10-11 14:53:30 +02:00
cryptozoidberg
f1a7c25fa3
fixed warnings on linux 2022-10-11 13:44:59 +02:00
cryptozoidberg
4fa2afa87e
remopved random deterministic setup 2022-10-11 12:02:48 +02:00
sowle
a0bdc08633
blinding mask calculation fix (cherry pick from multiassets) 2022-10-10 23:59:42 +02:00
sowle
5e0ce8cfb4
crypto: c_point_H_plus_G and c_point_H_minus_G constants added + unittest 2022-10-10 23:47:49 +02:00
cryptozoidberg
2098bdc869
removed cycle for enumerating random on multiassets_basic_test 2022-10-10 20:47:41 +02:00
cryptozoidberg
19f0f0bbf0
fixed but with sequence points 2022-10-10 20:46:06 +02:00
cryptozoidberg
033ec29d60
attempt to fix unit_tests Serialization:versioning2 2022-10-10 14:46:56 +02:00
cryptozoidberg
09a1ddf97b
removed unused includes 2022-10-07 22:45:52 +02:00
cryptozoidberg
4d9e6d41a2
fix for linux build 2022-10-07 22:16:42 +02:00
cryptozoidberg
b3daf9aa08
fixed bug in constract_tx regarding inputs mapping 2022-10-07 21:44:43 +02:00
cryptozoidberg
8a54924407
multiple fixes over wallet and math(credits to @sowle) 2022-10-06 22:59:00 +02:00
cryptozoidberg
319f295984
fixed multiasset test 2022-10-05 21:31:21 +02:00
sowle
185ccae95f
rpc: removed old deprecated mining API (get_addenum, getjob, submitshare, etc.) 2022-10-05 21:09:27 +02:00
sowle
452047cb88
KV_ENABLE_POD_SERIALIZATION_AS_HEX fixed 2022-10-05 20:49:13 +02:00
sowle
ea1dbabb9d
zarcanum: main inequality type fixed (2) 2022-10-05 14:54:35 +02:00
sowle
8c71ac83b7
zarcanum: main inequality type fixed 2022-10-05 14:02:32 +02:00
sowle
b931420266
warning fix 2022-10-05 13:56:17 +02:00
cryptozoidberg
8e0cf0f142
fixed storage bug over assets container 2022-10-04 23:13:02 +02:00
cryptozoidberg
37f96db8d5
Merge branch 'zarcanum' into multiassets 2022-10-04 22:01:16 +02:00
cryptozoidberg
ca4556a804
Minor fixes 2022-10-04 22:00:30 +02:00
sowle
15f33cbb9c
coretests: determine_tx_real_inputs() adapted for zc inputs/outputs, fixed compilation for wallets tests 2022-10-04 21:22:30 +02:00
sowle
5ff48cc1ff
blockchain_storage::check_tx_input() adapted for ZC inputs + get_key_offsets_from_txin_v() + improvements 2022-10-04 21:20:40 +02:00
sowle
6aca885ced
scan_outputkeys_for_indexes adapted for ZC inputs and outputs, specific is_output_allowed_for_input() implemented 2022-10-04 21:17:49 +02:00
cryptozoidberg
432e1c2d2b
merge from zarcanum 2022-10-04 16:32:41 +02:00
cryptozoidberg
d864d43aab
fixes over tests 2022-10-04 16:29:24 +02:00
cryptozoidberg
5f607acda2
fixed few errors 2022-10-03 22:29:35 +02:00
cryptozoidberg
51d8c85540
added core test for multiasset(never tried yet) 2022-10-03 22:03:54 +02:00
sowle
0af77077b5
purge_altblock_keyimages_from_big_heap() and purge_transaction_keyimages_from_blockchain() adapted for generic inputs types 2022-10-03 21:39:34 +02:00
sowle
7ce49e4e82
tx_pool: correct handling of key images regardless of input type + get_key_image_from_txin_v refactoring 2022-10-03 20:34:09 +02:00
sowle
5b89eaed6f
coretests: gen_no_attchments_in_coinbase and multisig_and_checkpoints fixed (hash change) 2022-10-02 01:04:00 +02:00
sowle
01a458b5bc
purge_altblock_keyimages_from_big_heap() adapted for ZC inputs 2022-10-02 00:39:01 +02:00
sowle
657b1ceddf
coretests: chaingen code cleanup 2022-10-01 21:18:22 +02:00
sowle
2a74787d8e
wallet: if during tx constructing the number of outs is less than CURRENCY_TX_MIN_ALLOWED_OUTS the last one will be split randomly to fulfill the requirement 2022-10-01 21:17:17 +02:00
sowle
a8ecd1a645
wallet: handling ZC outputs fixed 2022-10-01 21:14:32 +02:00
sowle
e2b6f88686
1) get_input_expected_signature_size() added; 2) get_object_blobsize(tx) improved 2022-10-01 21:12:32 +02:00
sowle
7d33323a97
1) generate_ZC_sig fixed;
2) tx balance proof now generates only for txs with no ZC inputs;
3) check_inputs_types_suppored fixed;
4) check_outs_valid fixed;
5) check_inputs_overflow fixed;
2022-10-01 21:10:22 +02:00
sowle
3fd984396e
unit tests: tx_signatures_packing added 2022-10-01 20:59:04 +02:00
cryptozoidberg
5ab9a2b974
fixed compilation issues regarding asset_descriptors 2022-09-30 21:23:06 +02:00
cryptozoidberg
c61149f480
added put/pop asset info to core 2022-09-29 23:44:00 +02:00
sowle
df11160e7a
decompose_amount_randomly + unit test 2022-09-29 21:54:15 +02:00
sowle
5bfbb8091d
unit tests: amounts_tests restored, renamed 2022-09-29 21:49:57 +02:00
cryptozoidberg
26b9d60dba
merge from zarcanum 2022-09-29 19:21:07 +02:00
cryptozoidberg
7d8259f58c
added code for handling chain detachment(reorg) 2022-09-29 19:18:05 +02:00
cryptozoidberg
1fd6e08e5c
initial code for introducing asset descriptor for wallet 2022-09-28 22:06:07 +02:00
sowle
369b40b7a0
coretests: fixes and improvements for zarcanum_test 2022-09-28 03:46:20 +02:00
sowle
b669401332
1) balance proof and explicit fee for post-HF4 txs; 2) multiple range proofs verification fixed; 3) zarcanum_outs_range_proof -> zc_outs_range_proof 2022-09-28 03:45:10 +02:00
cryptozoidberg
a718895fd7
Asset id context in wallet: basic implementations 2022-09-27 20:13:49 +02:00
sowle
5d349a963d
1) construct_miner_tx now supports post-HF4 PoW 2) new HF4 core rules: at least 2 outputs for each tx; tx.version > 1 2022-09-27 03:06:10 +02:00
cryptozoidberg
43c0c7944d
inital code for submiting asset descriptor 2022-09-26 21:57:24 +02:00
cryptozoidberg
213cb4f85c
implemented proper versioning for binary serialization 2022-09-23 23:19:44 +02:00
sowle
078440a815
zarcanum WIP (use standard derivation to scalar conversion to simplify things) + minor 2022-09-23 22:18:22 +02:00
sowle
0bfe224b66
minor fixes 2022-09-23 18:45:59 +02:00
sowle
7d57e8a993
coretests: chaingen PoS refactored, mining outside-of-wallet2 eliminated, code unified 2022-09-23 18:45:22 +02:00
cryptozoidberg
e70efc898c
Merge branch 'multiassets' into zarcanum 2022-09-22 19:30:02 +02:00
cryptozoidberg
2ba139ebaf
fixed wrong variant type 2022-09-22 19:29:18 +02:00
cryptozoidberg
1aa6a37b08
compilation errors fixed for wallet.cpp 2022-09-21 22:35:24 +02:00
cryptozoidberg
d573dd53fd
assigning asset id from tx 2022-09-21 14:50:29 +02:00
cryptozoidberg
7c4d8a41e8
massive changes over adding asset id to primary operations to wallet 2022-09-20 22:01:52 +02:00
cryptozoidberg
ff0d32fa20
transfer refactoring - inital code 2022-09-17 22:52:26 +02:00
cryptozoidberg
b7767e41d5
Merge branch 'multiassets' into zarcanum 2022-09-16 18:52:50 +02:00
cryptozoidberg
1c76d0d325
added balance() and rpc api implementations for multi_assets versions 2022-09-16 18:35:36 +02:00
cryptozoidberg
65eea67b30
Merge branch 'zarcanum' into multiassets 2022-09-16 14:54:44 +02:00
sowle
d01ab52c7c
coretests: some HF1 tests marked as postponed 2022-09-15 23:21:02 +02:00
cryptozoidberg
8f15d60677
basic implementations over multi assets in wallet 2022-09-15 22:05:10 +02:00
sowle
76807ec931
coretests: typo fixed 2022-09-15 20:26:54 +02:00
sowle
2aa62f43bb
coretests: getting rid of set_pos_to_low_timestamp; postponed tests not running 2022-09-15 19:41:46 +02:00
sowle
ece5038130
wallet: build_minted_block adoptation (zarcanum wip) 2022-09-14 22:50:43 +02:00
sowle
0d882868c8
chaingen: postponed test can be run with --run-single-test, also print 'em all 2022-09-14 22:48:42 +02:00
cryptozoidberg
91e8b2ba6f
fixed compilation for unit_tests 2022-09-14 22:08:21 +02:00
cryptozoidberg
f3f5c11c5e
fixed missing dependency(linux) - afterfix 2022-09-14 20:59:27 +02:00
cryptozoidberg
eec541840e
fixed missing dependency(linux) 2022-09-14 20:56:34 +02:00
cryptozoidberg
7abd438787
replaced optional<> to shared_ptr<> due to space efficiency considerations 2022-09-14 20:54:30 +02:00
sowle
be1db1b4cb
zarcanum_basic_test marked as postponed for a while 2022-09-13 22:29:37 +02:00
sowle
af9c53794e
1) zarcanum math moved to separate file; 2) fixed an error in rhs calculation; 3) 2^64 constant + test 2022-09-13 22:08:46 +02:00
cryptozoidberg
c2771a075e
added test against post-zarcanum era 2022-09-13 16:42:32 +02:00
cryptozoidberg
03480488a1
Implemented kv-serialization for boost optional, implemented serialization as hed for POD 2022-09-12 20:38:32 +02:00
sowle
e9c3c7841f
wallet: Zarcanum PoS mining itself is implemented in wallet2 2022-09-12 18:47:38 +02:00
cryptozoidberg
634e777cfd
fixed compilation issues on linux 2022-09-09 20:21:27 +02:00
sowle
41308d86a6
wallet: pos code clean up (mining_context, etc) 2022-09-09 20:16:14 +02:00
sowle
c7bc50f968
validate_pos_block refactoring 2022-09-08 22:49:36 +02:00
sowle
6991fa8ea9
wallet: get_pos_entries g_index initialization fixed 2022-09-08 22:47:32 +02:00
sowle
2c5c0ddc75
Merge branch 'zarcanum_mint' into zarcanum 2022-09-08 16:35:38 +02:00
cryptozoidberg
ec73527df9
compilation is ok, tests in progress 2022-09-06 19:41:20 +02:00
cryptozoidberg
7384485fe1
minting refactoring: in progress 2022-09-05 20:18:27 +02:00
sowle
27e695d4f1
wallet: global PoS / pos entries refactoring and code clean-up. 2022-09-05 12:30:08 +02:00
sowle
9215afb462
wallet rpc: obsolete scan pos RPC has been removed 2022-09-05 12:25:04 +02:00
sowle
ae64a8cbd3
crypto: 4-CLSAG 2-gen implemented, 2-CLSAG slightly improved; + basic test for 4-CLSAG GGXG 2022-08-31 02:09:08 +02:00
sowle
bc88d0d642
wallet: Zarcanum PoS (work in progress, scan_pos refactoring) 2022-08-29 23:00:34 +02:00
sowle
6b85159119
crypto: c_point_X; hs(char[32], hash); minor improvements for clsag implementation 2022-08-29 22:56:37 +02:00
sowle
3f8583fbe1
wallet2 minor refactoring: do_pos_mining_iteration 2022-08-26 18:12:32 +02:00
sowle
605ae739b8
zc balance proof implemented, coinbase tx creation and validation refactored 2022-08-25 04:28:34 +02:00
sowle
636fb820ea
explicit tx fee for zarcanum txs: get_tx_fee, add_tx_fee_amount_to_extra, process_type_in_variant_container 2022-08-25 04:22:38 +02:00
sowle
458f347e1e
binary serialization won't mess with 'r' members anymore (fixes range proofs serialization) 2022-08-25 04:19:31 +02:00
sowle
7f5d58ca6d
crypto: BP+ generators mapping corrected 2022-08-25 04:17:25 +02:00
sowle
7cc2582cee
coretests: stop_on_first_fail 2022-08-25 04:16:22 +02:00
sowle
e8ea28d085
crypto: BP+ generators mapping corrected, test improved 2022-08-25 04:14:36 +02:00
sowle
a7352d8c98
coretests: hardfork setup fixed in a few tests 2022-08-23 21:29:30 +03:00
sowle
b62d01a629
MSVC 2019 compatibility fixes 2022-08-23 21:27:38 +03:00
sowle
b253ee70ab
blockchain_storage::prevalidate_block() refactored 2022-08-23 21:26:26 +03:00
cryptozoidberg
0908de4c3b
Merge branch 'sort_inputs_in_work' into zarcanum 2022-08-22 15:13:25 +02:00
cryptozoidberg
bbe8e14e2b
fixed gen_block_wrong_version_agains_hardfork 2022-08-22 14:49:49 +02:00
cryptozoidberg
301a460f65
implemented sorting inputs in construct_tx 2022-08-17 22:53:27 +02:00
cryptozoidberg
1131292908
Multiple fixes of bugs exposed by basic zarcanum coretest 2022-08-13 23:23:16 +02:00
cryptozoidberg
aeaf10a979
zarcanum core test - added staking of zarcanum inputs 2022-08-12 19:48:54 +02:00
cryptozoidberg
10e93a47dc
zarcanum core test - very basics 2022-08-12 19:26:28 +02:00
cryptozoidberg
0d0ab5fe81
fixed less_txin_v() 2022-08-12 14:49:00 +02:00
cryptozoidberg
073b6a2bb9
fixed typo 2022-08-12 01:13:27 +02:00
cryptozoidberg
11298992d2
added inputs sorting validation 2022-08-12 01:10:52 +02:00
cryptozoidberg
84b702fa3f
removed validation from add_transaction_input_visitor, due to code is duplicated in validate_tx_for_hardfork_specific_terms 2022-08-09 00:03:02 +02:00
cryptozoidberg
86cca50a15
validate_tx_for_hardfork_specific_terms refactoring 2022-08-08 23:59:09 +02:00
sowle
b01e33f68b
varios fixes: is_out_burned, lookup_acc_outs, process_new_transaction, create_tx (blinding masks) 2022-08-08 13:35:38 +02:00
sowle
b1ac0ad440
generate_ZC_sig & generate_NLSAG_sig refactoring: now they generate one signature per call + various fixes 2022-08-08 13:32:44 +02:00
sowle
dce6f46b17
fixed a bug in construct_tx 2022-08-03 14:01:10 +02:00
sowle
59f8ae5fe7
txin_zarcanum_inputs -> txin_zc_input refactoring, including CLSAG_GG gen/verify + check_tx_input for txin_zc_input 2022-08-03 14:00:39 +02:00
sowle
b1888e58ad
made verify_multiple_zarcanum_outs_range_proofs be happy with empty range proofs vector 2022-08-03 13:55:45 +02:00
sowle
373e5aad4d
VARIANT_CASE_THROW_ON_OTHER_MSG 2022-08-03 13:54:26 +02:00
sowle
bd784f9f50
code review and really minor improvements 2022-08-03 13:53:14 +02:00
cryptozoidberg
2e6d05636d
fixed bug with timestamps on strange wallets(reported by sir Gygabyted) 2022-08-01 20:17:38 +02:00
cryptozoidberg
8dd8e5dbce
Removed dl 2022-08-01 17:02:43 +02:00
cryptozoidberg
0f126ffd95
api auto-documentation implementation basics 2022-07-31 22:59:29 +02:00
sowle
0d72ac7187
bulletproofs+ tests fixed 2022-07-26 06:44:19 +02:00
sowle
6256d07bb7
clsag: more tests 2022-07-26 06:40:05 +02:00
sowle
c840ba48a2
simplewallet: logs msgs & levels clean up 2022-07-23 04:32:11 +02:00
sowle
e52e2b21a3
ZC_sig 2022-07-22 05:39:54 +02:00
sowle
53caed6d38
clsag first implementation + tests 2022-07-22 05:36:38 +02:00
sowle
e4293af219
random_in_range moved, unit_tests/db_tests fixed 2022-07-22 05:32:41 +02:00
sowle
386df3db2a
crypto tests: ml2s tests moved out 2022-07-22 05:30:10 +02:00
cryptozoidberg
765ad24b39
fixed disabled rnd for consensus download 2022-07-21 21:37:28 +02:00
cryptozoidberg
ad8a3375db
fixed tor relaying(fixed disabled rnd) 2022-07-21 21:27:16 +02:00
cryptozoidberg
6ff40cd0f4
less messages in running wallet 2022-07-21 15:06:36 +02:00
cryptozoidberg
b1d7ad8a69
fixed wallet log spam in server mode 2022-07-21 13:05:21 +02:00
cryptozoidberg
780185fa5c
added show_staking_history command 2022-07-19 22:32:21 +02:00
sowle
2f739228b3
crypto sugar improvements 2022-07-19 10:28:08 +02:00
sowle
3e78dbd595
Merge remote-tracking branch 'origin/zarcanum_wallet' into zarcanum 2022-07-14 23:57:57 +02:00
cryptozoidberg
e7489557a6
more checks in core regarding collect_rangeproofs_data_from_tx() 2022-07-14 21:20:29 +02:00
cryptozoidberg
fccf54b295
added handling of zarcanum_outs_range_proofs in core 2022-07-14 21:10:23 +02:00
cryptozoidberg
6e65f848ca
Merge branch 'zarcanum' into zarcanum_wallet 2022-07-14 19:05:52 +02:00
sowle
3783f98671
Merge remote-tracking branch 'origin/zarcanum_wallet' into zarcanum 2022-07-13 21:52:12 +02:00
cryptozoidberg
1a9c3b4d37
fixed coretests compilation 2022-07-13 20:55:34 +02:00
sowle
782f4634e4
Merge remote-tracking branch 'origin/zarcanum_wallet' into zarcanum 2022-07-13 19:55:39 +02:00
cryptozoidberg
be5766f266
fixes against recent changes over tx_source_entry::output_entry 2022-07-13 17:17:04 +02:00
cryptozoidberg
6b4bfee7d9
Merge branch 'zarcanum' into zarcanum_wallet 2022-07-13 16:11:10 +02:00
sowle
14924b635a
zc signature generation + tx_source_entry refactoring + construct_tx refactoring 2022-07-13 04:37:37 +02:00
sowle
26f34edc83
CLSAG prototypes 2022-07-13 04:35:15 +02:00
cryptozoidberg
788c5be092
Added timeout to wallet rpc transport 2022-07-12 23:05:36 +02:00
sowle
74f6ce33ac
Merge branch 'zarcanum_wallet' into zarcanum 2022-07-11 01:29:44 +02:00
cryptozoidberg
915bdd1efb
hidden amounts in wallet: construct_tx deep refactoring(first version, likely with bugs) 2022-07-10 20:11:44 +02:00
cryptozoidberg
9fb947b544
hidden amounts in wallet: construct_tx deep refactoring(in progress) 2022-07-09 17:35:40 +02:00
cryptozoidberg
93266b93b2
Merge branch 'zarcanum' into zarcanum_wallet 2022-07-09 15:31:47 +02:00
sowle
220816d039
zarcanum outputs & signature (work in progress) 2022-07-08 21:06:38 +02:00
cryptozoidberg
7792605ab9
hidden amounts in wallet: construct_tx deep refactoring(totaly broken yet) 2022-07-08 20:52:04 +02:00
cryptozoidberg
5b80a22157
more detailed message in set-log option 2022-07-08 17:35:14 +02:00
cryptozoidberg
30d9d190e1
lean up code with log options 2022-07-08 17:18:35 +02:00
cryptozoidberg
e1acd4e4e6
disable TOR by default for server-mode, fixed --disable-tor-relay which was not working for server mode 2022-07-08 17:06:26 +02:00
cryptozoidberg
b500a22d59
hidden amounts in wallet: fixed to proper return code literal 2022-07-08 15:55:01 +02:00
cryptozoidberg
49dc47c8cf
merged from UI 2022-07-08 15:25:07 +02:00
cryptozoidberg
84962b34e7
merged from UI 2022-07-07 17:07:46 +02:00
ArqTras
7cf459e9f5
Update README.md (#333)
fix for a typo
2022-07-07 17:55:08 +03:00
cryptozoidberg
87e7905be1
Merge branch 'zarcanum' into zarcanum_wallet 2022-07-06 22:14:07 +02:00
sowle
ea24d40f84
range proofs for zarcanum outputs 2022-07-06 22:07:54 +02:00
sowle
11ab985bc6
crypto: bpp minor refactoring (mostly prototypes), minor improvements, compilation fixes 2022-07-06 18:52:24 +02:00
sowle
e18f300fae
inline for is_out_burned 2022-07-06 15:54:51 +02:00
sowle
9b2c951d71
variant tag for zarcanum_outs_range_proof 2022-07-06 15:14:25 +02:00
cryptozoidberg
fc0851922f
Merge branch 'zarcanum' into zarcanum_wallet 2022-07-06 13:23:15 +02:00
cryptozoidberg
52de76edd5
hidden amounts in wallet: fixed types 2022-07-06 13:22:05 +02:00
sowle
6ca3acd0d5
zarcanum outputs generation + range proofs (work in progress) 2022-07-06 03:01:53 +02:00
sowle
03f949b669
crypto_assert re-implemented using exceptions 2022-07-06 02:59:07 +02:00
sowle
4028bab31c
add_out_to_get_random_outs() and print_blockchain_out_stats() refactoring 2022-07-04 21:08:53 +02:00
cryptozoidberg
572f3c01c6
hidden amounts in wallet: fixed return type 2022-07-04 15:27:41 +02:00
cryptozoidberg
b799aae67f
hidden amounts in wallet: syntax fixes 2022-07-04 15:26:28 +02:00
sowle
e2ef29a021
is_out_burned() implemented 2022-07-04 14:50:08 +02:00
cryptozoidberg
045801449a
hidden amounts in wallet: fixed warining in out_get_mixin_attr() 2022-07-01 17:20:55 +02:00
cryptozoidberg
464771baec
hidden amounts in wallet: wallet.cpp compilation fixed 2022-07-01 17:19:57 +02:00
cryptozoidberg
af1cf46d1e
moved UI to latest commits 2022-07-01 12:35:54 +02:00
cryptozoidberg
9a365940e6
hidden amounts in wallet: pricess_new_transaction(): finished 2022-06-30 21:47:59 +02:00
cryptozoidberg
e75c2e603c
Merge branch 'zarcanum' into zarcanum_wallet 2022-06-30 19:03:03 +02:00
cryptozoidberg
c0eb4088d8
hidden amounts in wallet: pricess_new_transaction() refactoring in work 2022-06-30 19:02:22 +02:00
sowle
fc01b6a099
tx_out_zarcanum: mix_attr added 2022-06-30 18:42:13 +02:00
cryptozoidberg
c2d0167c8a
hidden amounts in wallet: added return value to process_input_t() 2022-06-28 22:29:52 +02:00
cryptozoidberg
75e05e2d2e
hidden amounts in wallet: process_new_transaction refactoring 2022-06-28 22:27:36 +02:00
sowle
45e1bbcafa
zarcanum outputs detection/decoding 2022-06-28 22:17:29 +02:00
sowle
a23eaac730
crypto_ops: derivation_to_scalar made public 2022-06-28 22:15:18 +02:00
sowle
9d1ab22010
crypto: hs_t and hs(...) made compatible with char[32] 2022-06-28 22:14:39 +02:00
sowle
d904323f88
crypto: made point_t throwing exceptions in bad cases 2022-06-28 22:13:34 +02:00
cryptozoidberg
018ec1eccf
Merge branch 'zarcanum_wallet' into zarcanum 2022-06-28 19:03:06 +02:00
cryptozoidberg
5b2dc84c4a
wallet.cpp compilation fixed 2022-06-28 18:29:00 +02:00
cryptozoidberg
8269c8ad42
renamed struct and removed unnecessary field 2022-06-28 17:53:50 +02:00
cryptozoidberg
a3947ea0c9
hidden amounts in wallet: fixed missing argument 2022-06-28 17:52:12 +02:00
cryptozoidberg
61f215e552
hidden amounts in wallet:inital 2022-06-28 17:46:07 +02:00
sowle
389118e785
zarcanum sig WIP 2022-06-27 23:09:25 +02:00
cryptozoidberg
a90c9931dd
fixed undefined references 2022-06-27 22:30:49 +02:00
cryptozoidberg
edd7eaca95
fixed compilation issue with print_tx_prun_info 2022-06-27 19:22:43 +02:00
cryptozoidberg
4aa4f9beb3
Merge branch 'sign_refactor' into zarcanum 2022-06-26 01:15:45 +02:00
cryptozoidberg
dfac17daeb
fixed all core tests 2022-06-26 01:13:19 +02:00
cryptozoidberg
e94e5c0a97
multiple fixes over sig refactoring 2022-06-25 00:06:26 +02:00
cryptozoidberg
fa4b8ab130
signature refactoring: pre-core tests 2022-06-23 16:22:55 +02:00
cryptozoidberg
2ab1ba9341
fixed latest changes 2022-06-22 20:33:43 +02:00
cryptozoidberg
4f80c7c334
signature refactoring with [] 2022-06-19 19:47:43 +02:00
cryptozoidberg
84c0697f1c
renamed alias member to proper name - fixed in wallet 2022-06-18 20:50:04 +02:00
cryptozoidberg
1960b49a1e
renamed alias member to proper name 2022-06-18 20:50:04 +02:00
cryptozoidberg
0e5bcbef47
improved alias detection in transaction history + added RPC API for alias registration 2022-06-18 20:50:03 +02:00
cryptozoidberg
6317a48bb9
Improved filtration of PoS-related transactions 2022-06-18 20:50:03 +02:00
cryptozoidberg
59af914d8d
Returned missing files 2022-06-18 20:50:03 +02:00
cryptozoidberg
154dbb3994
filtering transactions improved2 2022-06-18 20:50:02 +02:00
cryptozoidberg
7d42658387
filtering transactions improved 2022-06-18 20:50:02 +02:00
zano build machine
9ecf6babd5
=== build number: 143 -> 144 === 2022-06-18 20:50:02 +02:00
cryptozoidberg
564549d198
moved UI to latest fixes 2022-06-18 20:50:01 +02:00
cryptozoidberg
4f70de322d
moved UI to latest commit 2022-06-18 20:50:01 +02:00
Snider
1a5429a723
docker: adjustable library versions (#331)
* Adjustable lib versions via docker build args
* gha for docker build.
* removes the push to repo
* moves arg's to the top of the file.
* Delete docker-build.yml
2022-06-18 20:50:01 +02:00
cryptozoidberg
af552f6d45
pulled latest changes from UI 2022-06-17 18:05:52 +02:00
sowle
20eabbd54f
win: build signing temporary disabled 2022-06-16 19:14:12 +02:00
cryptozoidberg
96cdd25ac5
renamed alias member to proper name - fixed in wallet 2022-06-16 17:33:37 +02:00
cryptozoidberg
7230f7a12e
renamed alias member to proper name 2022-06-16 17:10:53 +02:00
cryptozoidberg
b5495f30f0
improved alias detection in transaction history + added RPC API for alias registration 2022-06-16 17:02:00 +02:00
cryptozoidberg
cf0454a208
Improved filtration of PoS-related transactions 2022-06-13 21:46:32 +02:00
cryptozoidberg
b5acd7ca87
Returned missing files 2022-06-10 16:51:37 +02:00
cryptozoidberg
8ec2783860
filtering transactions improved2 2022-06-08 17:52:58 +02:00
cryptozoidberg
d26fc8ad7f
filtering transactions improved 2022-06-08 17:33:02 +02:00
sowle
eb6aac4f5e
Merge branch 'release' 2022-06-03 23:16:08 +02:00
sowle
5bbae5e23b
fix annoying warning message about Boost 1.70 (The use of BOOST_*_ENDIAN and BOOST_BYTE_ORDER is deprecated.) 2022-06-03 23:04:01 +02:00
sowle
a0625b0624
fix simplewallet linking for gcc 2022-06-03 22:36:04 +02:00
zano build machine
ea43bcf8a1 === build number: 143 -> 144 === 2022-06-02 21:43:34 +03:00
cryptozoidberg
9ee5b6cbe3
moved UI to latest fixes 2022-06-02 20:42:03 +02:00
sowle
533fe896ff
attempt to fix unit_tests for clang 2022-05-28 17:50:06 +02:00
sowle
91c8b29145
remove redundant code in blockchain_storage::check_tx_inputs 2022-05-27 22:10:59 +02:00
sowle
d97e1dc955
more compilation fixes 2022-05-27 20:48:42 +02:00
sowle
bbb263b39a
Merge branch 'zarcanum_tx' into zarcanum 2022-05-27 20:28:26 +02:00
sowle
4c720ebd82
various compilation and warning fixes for gcc 2022-05-27 19:50:21 +02:00
sowle
775fab7374
unit_test: compilation fixup 2022-05-27 17:14:38 +02:00
cryptozoidberg
a7795438a6
merge from zarcanum 2022-05-27 13:49:44 +02:00
cryptozoidberg
7534e27835
Merge branch 'zarcanum' into zarcanum_tx 2022-05-27 13:49:22 +02:00
sowle
c68edd162c
functional_tests: transactions_flow_tests fixed 2022-05-26 22:26:47 +02:00
sowle
fdadd238b4
minor improvement to transition_convert, daemon_commands_handler fixed 2022-05-26 22:25:19 +02:00
cryptozoidberg
0dbc900c9a
fixed wrong console handling on windows 2022-05-26 22:24:53 +02:00
cryptozoidberg
4b4a52f550
fixed unit_tests 2022-05-26 20:27:06 +02:00
sowle
57a65cee3e
binary serializaition tag for void_sig fixed 2022-05-26 19:55:41 +02:00
sowle
a731c338de
more post-merge conflicts solved 2022-05-26 19:00:15 +02:00
sowle
f24b1350ab
Merge branch 'zarcanum_tx' into zarcanum
# Conflicts solved in:
#	src/currency_core/blockchain_storage.cpp
#	src/currency_core/blockchain_storage.h
#	src/currency_core/core_runtime_config.h
2022-05-26 17:59:15 +02:00
sowle
9034d8be58
fixed tx serialization chaining for version 2022-05-26 17:03:49 +02:00
sowle
32c852b48c
coretests: improve log messages on events generation 2022-05-26 17:01:28 +02:00
sowle
456588ddc3
hardfork-related structures global refactoring 2022-05-26 16:53:40 +02:00
cryptozoidberg
217a54c8b1
fixed all core tests 2022-05-25 22:31:23 +02:00
cryptozoidberg
7162a23dd3
blockchain_storage.cpp compilation fixed 2022-05-24 00:46:44 +02:00
cryptozoidberg
7070cecaf2
tx strcture and signature varian refactoring(compilation is still broken) 2022-05-23 21:03:13 +02:00
cryptozoidberg
fc93a80429
moved UI to latest commit 2022-05-23 13:46:24 +02:00
cryptozoidberg
389209ff02
tx stracture changes: in progress 3 + signatures converting to varian signature: in progress 2022-05-20 21:32:27 +02:00
cryptozoidberg
7e5c504357
tx stracture changes: in progress 2 2022-05-19 22:46:57 +02:00
cryptozoidberg
6b6511b73f
tx stracture changes: in progress 2022-05-19 21:22:44 +02:00
cryptozoidberg
0833566d96
transition to multi-types vout(in progress) 2022-05-18 23:39:08 +02:00
cryptozoidberg
d593cf53a9
Merge branch 'develop' into zarcanum_tx 2022-05-18 16:39:14 +02:00
sowle
fd5ec65d35
Merge branch 'master' into develop 2022-05-18 16:38:43 +02:00
cryptozoidberg
c46f46e4e3
updated UI to latest commit 2022-05-18 16:35:26 +02:00
cryptozoidberg
60f6c76ad6
fixes over signatures structure 2022-05-18 16:34:19 +02:00
Snider
c97ef1431b
docker: adjustable library versions (#331)
* Adjustable lib versions via docker build args
* gha for docker build.
* removes the push to repo
* moves arg's to the top of the file.
* Delete docker-build.yml
2022-05-18 17:33:24 +03:00
cryptozoidberg
524f7138cc
Merge branch 'zarcanum_tx' into zarcanum 2022-05-17 17:46:59 +02:00
cryptozoidberg
c17ec013ca
removed empty lines 2022-05-17 17:46:37 +02:00
cryptozoidberg
17d1245db1
serializations forks as magic 2022-05-17 17:32:53 +02:00
cryptozoidberg
146be2a559
merge from zarcanum 2022-05-17 16:19:55 +02:00
cryptozoidberg
23803851fe
serialization of versioned transactions: test(in progress) 2022-05-17 16:16:57 +02:00
cryptozoidberg
240b5808b9
trasaction binary versions transaction implementation 2022-05-16 23:32:28 +02:00
sowle
01c1146b40
tx_in_zarcanum, zarcanum_tx_data_v1 and their serialization 2022-05-16 21:38:32 +02:00
cryptozoidberg
d7863b9a91
Merge branch 'zarcanum_tx' into zarcanum 2022-05-16 17:39:16 +02:00
cryptozoidberg
cfb9b463d7
merge with zarcanum 2022-05-14 20:12:44 +02:00
cryptozoidberg
b9f750d132
fixed multisig_and_unlock_time 2022-05-14 19:47:47 +02:00
sowle
da8a5d79a8
Merge branch 'master' into develop 2022-05-14 13:01:44 +02:00
cryptozoidberg
0123e311c0
Added get_mining_history API 2022-05-14 00:00:56 +02:00
cryptozoidberg
ca760a237a
fixed all coretests 2022-05-13 23:35:56 +02:00
sowle
2ae226e594
crypto: attempt to fix a warning about dereferencing type-punned pointer 2022-05-12 21:41:09 +02:00
sowle
1c940653d4
mdbx: fix for incorrectly defined _GNU_SOURCE 2022-05-12 21:30:39 +02:00
sowle
67b5551eea
crypto tests: various fixes 2022-05-12 20:50:14 +02:00
cryptozoidberg
ce4b04014b
compilation of core tests fixed 2022-05-12 18:22:53 +02:00
sowle
4393db02bc
crypto: range proof tests compilation fix 2022-05-12 16:47:12 +02:00
sowle
22ed8009c5
linux build: suppress -Wno-comment globally 2022-05-12 00:11:34 +02:00
cryptozoidberg
186e1fdcf9
multiple fixes over core_tests(transition to tx_version 2) 2022-05-11 23:52:33 +02:00
sowle
607d634078
crypto: warnings fix 2022-05-11 23:43:34 +02:00
sowle
9032642ca7
linux build: suppress -Wcomment globally, add dl as a dependency for coretests 2022-05-11 22:52:45 +02:00
sowle
f355c89fc4
even more minor fixes 2022-05-11 21:23:44 +02:00
sowle
b7f30382e1
more minor fixes 2022-05-11 21:11:33 +02:00
sowle
7df157520d
minor fixes (epee namespace, warnings) 2022-05-11 21:02:06 +02:00
sowle
bbf2530cca
namespace epst = epee::string_tools 2022-05-11 20:57:31 +02:00
cryptozoidberg
1cf6d337d3
introducing tx_version(in progress, everything is broken so far) 2022-05-10 23:49:20 +02:00
sowle
6ed05a47c5
minor fixes in crypto serialization 2022-05-10 21:56:42 +02:00
sowle
8f362eafea
using of epee namespace fixed 2022-05-10 21:55:21 +02:00
sowle
d692c83d14
crypto serialization code re-arranged, bpp_signature_serialized introduced 2022-05-10 21:10:33 +02:00
sowle
10ed5dc433
getting rig of "using namespace epee" in headers 2022-05-10 21:05:15 +02:00
sowle
aa90e50f42
fix for Argument-Dependent Lookup issue with parse_tpod_from_hex_string() 2022-05-10 20:42:54 +02:00
sowle
b30bc2f781
eos portable archive fixed (endians defines) 2022-05-10 19:59:58 +02:00
sowle
50970e3d54
removed that crazy annoying Boost warning (a bug in Boost 1.70, already fixed)
"The use of BOOST_*_ENDIAN and BOOST_BYTE_ORDER is deprecated."
2022-05-10 18:48:18 +02:00
sowle
4066de04a1
epee: clean up the mess with namespace misc_utils::parse + string tools 2022-05-10 17:29:42 +02:00
cryptozoidberg
2707d1515d
undo global changes2 2022-05-09 20:33:59 +02:00
cryptozoidberg
60c5cc24bc
undo global changes 2022-05-09 20:32:36 +02:00
cryptozoidberg
c53da67e1a
added BEGIN_BOOST_SERIALIZATION macros 2022-05-09 20:28:13 +02:00
sowle
116011fdcf
tx_out_zarcanum 2022-05-09 17:29:25 +02:00
sowle
779201b286
Merge branch 'develop' 2022-05-09 01:48:17 +02:00
sowle
7e2d0fcb6b
Dockerfile updated, as for official image at sowle/zano-full-node 2022-05-09 01:44:18 +02:00
sowle
c070839a28
Merge branch 'release' 2022-05-08 19:59:17 +02:00
sowle
336fac2250
Merge branch 'develop' into release 2022-05-08 03:46:46 +02:00
sowle
1235ab6434
version bump: 1.4.1.142 -> 1.5.0.143 2022-05-08 03:45:43 +02:00
sowle
e569dd8023
predownload bumped up to 1569k 2022-05-07 22:59:57 +02:00
sowle
bbdd6595bf
wallet: minor htlc error-handling improvement 2022-05-01 21:07:17 +02:00
sowle
2b1d890b74
wallet & coretests: minor error-logging improvements 2022-05-01 21:03:27 +02:00
cryptozoidberg
a51057753c
pulled latest commits from UI 2022-04-27 16:40:32 +02:00
cryptozoidberg
f6f1849102
moved ui to latest commits 2022-04-26 16:43:50 +02:00
cryptozoidberg
ae48cf0c7a
moved ui to latest commit 2022-04-25 20:03:33 +02:00
sowle
8a69f4969e
readme: added link to the OpenSSL win binaries downloading 2022-04-25 16:39:00 +02:00
sowle
82c4a47a21
functional tests: crypto test runner minor fix 2022-04-25 16:37:44 +02:00
cryptozoidberg
62cd5f25a4
fixed mdbx issue(related to detach from git) 2022-04-25 15:14:35 +02:00
cryptozoidberg
072b022514
merge from master 2022-04-25 14:54:30 +02:00
cryptozoidberg
a34b9ab200
mdbx added as sources due to ban of it's repo 2022-04-25 13:49:07 +02:00
cryptozoidberg
039077084a
mdbx moved as sources due to ban of it's repo 2022-04-25 13:45:43 +02:00
cryptozoidberg
f56c71c0f1
Implemented #315 2022-04-21 20:57:46 +02:00
cryptozoidberg
631c1fa921
fixed minor issues related to arg_descriptor 2022-04-21 19:00:03 +02:00
cryptozoidberg
a8fe3f2797
Fixed #293 and refactored arg_descriptor(wanted to do it for such a long time!!!!) 2022-04-21 17:43:50 +02:00
cryptozoidberg
3f1963b583
fixed hard_fork_2_awo_wallets_basic_test 2022-04-20 21:44:25 +02:00
cryptozoidberg
2f0b5a323f
core tests fixes for TOR 2022-04-20 20:58:52 +02:00
cryptozoidberg
6033828209
Merge branch 'tor' into develop 2022-04-20 19:17:00 +02:00
cryptozoidberg
5c42da0a84
merge from develop 2022-04-20 19:12:16 +02:00
cryptozoidberg
62a6a1c8ec
Merge branch 'tor_defs' into tor 2022-04-20 18:54:26 +02:00
cryptozoidberg
7e11ff07bf
Added option for disabling TOR from build 2022-04-20 17:17:11 +02:00
sowle
decbbe973c
tests: random_helper minor improvements 2022-04-20 15:36:31 +02:00
cryptozoidberg
2eddfb8a1d
command line options: data-dir moved to configurable section 2022-04-20 15:08:18 +02:00
sowle
78372d1bde
crypto: BPP and BPPE: minor improvements 2022-04-19 23:41:59 +02:00
cryptozoidberg
f407089855
attempt to fix threads_pool on mac/clang 2022-04-18 19:26:03 +02:00
cryptozoidberg
25163db2bf
implemented non-blocking api for javascript calls 2022-04-18 19:04:15 +02:00
sowle
0fd6406158
crypto: BPP & BPPE: get_2_to_the_power_of_N_minus_1() 2022-04-18 18:12:15 +02:00
sowle
b0e8e6c2eb
crypto: scalar_t: get_bit, set_bit, clear_bit, power_of_2 implemented; crypto_sc_set_bit_clear_bit test added 2022-04-15 21:29:08 +02:00
sowle
a0211f2b27
crypto tests: ASSERT_NEQ 2022-04-15 21:27:16 +02:00
cryptozoidberg
5dbb6a7559
changed url for mdbx(due to github blocking leo-yuriev account) 2022-04-15 18:00:57 +02:00
sowle
5a458b6dbe
build system windows: minor improvement 2022-04-14 21:52:35 +02:00
sowle
5069422e64
build system windows: moved to Boost 1.70 + minor refactoring 2022-04-14 21:22:42 +02:00
sowle
deb790d434
build system: removed windows 32 support 2022-04-14 21:21:00 +02:00
cryptozoidberg
bd39dce7e6
Fixed #262(-do-pos-mining needs also rpc-bind-port specified to work) 2022-04-14 21:01:14 +02:00
cryptozoidberg
75b998a6b0
removed unused signal 2022-04-14 20:45:26 +02:00
cryptozoidberg
0e64787583
Removed epee from tor lib, moved boost minimal version to 1.70 2022-04-14 20:45:25 +02:00
cryptozoidberg
307a2346b6
tor: moved to latest 2022-04-14 20:45:25 +02:00
sowle
3dcde7ed06
minor fixes for readme and config file example 2022-04-14 20:41:10 +02:00
sowle
03ff180b83
readme updated: Boost minimum version pumped up to 1.70; OpenSSL dependency added (both for the tor lib) 2022-04-14 20:19:58 +02:00
sowle
51e95010d8
build system: added support for OpenSSL (macOS) 2022-04-13 20:33:01 +02:00
cryptozoidberg
b64a08880d
fixed connectivity tool build issue(old levin_xxxx naming) 2022-04-13 19:43:20 +02:00
cryptozoidberg
427350b2d7
tor: moved to latest commit 2022-04-13 19:37:48 +02:00
cryptozoidberg
36e79a3568
tor: moved to latest commit 2022-04-13 18:53:48 +02:00
cryptozoidberg
edb6dadaf7
tor: moved to latest commit 2022-04-13 18:08:53 +02:00
cryptozoidberg
8c8207b71a
tor: fixed static compilation for windows 2022-04-13 17:28:11 +02:00
sowle
35071cb395
build system: added support for OpenSSL (linux) 2022-04-13 13:47:11 +02:00
cryptozoidberg
034e4423f8
setup tor/openssl for static linking 2022-04-12 21:15:02 +02:00
cryptozoidberg
024e07c2d9
[COVERITY] Fixed coveerity issue 391947 Unchecked return value from library 2022-04-12 21:05:15 +02:00
sowle
80d0023e3e
build system: added support for OpenSSL 2022-04-12 19:46:19 +02:00
cryptozoidberg
2e2a4861a7
fixed bug with compilation 2022-04-12 19:12:28 +02:00
cryptozoidberg
5f72b1c5ea
added tor option API for UI 2022-04-12 15:49:56 +02:00
cryptozoidberg
0c53f58d5f
updated tor 2022-04-11 21:12:37 +02:00
sowle
218c6a38cb
crypto: Bulletproofs+ with double-blinded commitments extension implemented (nicknamed as bppe), basic tests added 2022-04-11 20:43:43 +02:00
cryptozoidberg
d0a66c3793
fixed issues for macos/clang 2022-04-11 20:31:08 +02:00
cryptozoidberg
00a99e037b
updated tor 2022-04-10 20:39:13 +02:00
cryptozoidberg
ff5a628420
provided exterval var for submodules 2022-04-10 20:33:31 +02:00
cryptozoidberg
d9b6e479a8
removed unused files from tor 2022-04-10 19:50:21 +02:00
sowle
10141c3dfc
crypto: range proofs major refactoring, crypto traits refactored, calc_exp_power_of_2_upper_bound changed to constexpr analogs 2022-04-10 19:50:13 +02:00
cryptozoidberg
dc61500a46
fixed http state machine, fixed wallet bug with tor connectivity failure 2022-04-10 19:46:43 +02:00
sowle
319d53f7cf
crypto: H2 introduced, functional tests main's clean-up 2022-04-10 19:45:45 +02:00
cryptozoidberg
0fe6d2c526
tor updated(Scrypt, can you like this too?) 2022-04-10 18:47:56 +02:00
cryptozoidberg
5fc390233c
fixed compilation issue for gcc 2022-04-10 17:12:38 +02:00
cryptozoidberg
2dfc2862fc
tor integration in UI 2022-04-09 22:36:11 +02:00
sowle
b9ccb10287
crypto: scalar_t::git_bit + test crypto_sc_get_bit; hash_helper_t extended with hp variants 2022-04-09 21:12:44 +02:00
cryptozoidberg
46e57bf215
added command line and run-time parameters to endabling/disabling TOR relay in simplewallet 2022-04-02 19:48:36 +03:00
cryptozoidberg
80197c2a26
fixed errors in reporting state 2022-04-02 00:59:16 +03:00
cryptozoidberg
ebd8a63477
updated tor-lib to latest commit 2022-04-01 19:49:44 +03:00
cryptozoidberg
6a6d72169a
fixing layout submodule issue 2022-04-01 18:20:43 +03:00
cryptozoidberg
f3f2cefde4
fixing tor submodule issue 2022-04-01 18:14:19 +03:00
cryptozoidberg
8221d28e61
added human readable tor status messages for simple wallet, disabled technical logs 2022-03-29 02:05:38 +03:00
cryptozoidberg
260e20d91f
fixed another tor-related bug in simplewallet 2022-03-24 05:37:58 +02:00
cryptozoidberg
e3936b5e9d
lates tor commits 2022-03-22 23:46:29 +02:00
cryptozoidberg
58931cb77b
added status feedback from wallet\tor layer 2022-03-22 23:38:43 +02:00
sowle
2478dbb677
coretests fixed 2022-03-21 19:45:21 +03:00
cryptozoidberg
72bfd89717
improved p2p protocol for relaying tx over tor 2022-03-21 16:47:11 +02:00
sowle
2246aa8fce
fix an issue with boost 1.76 2022-03-21 01:20:56 +03:00
sowle
02544f7186
boost placeholders fix (2) 2022-03-20 04:05:15 +03:00
sowle
b6fca25a10 boost placeholders fix 2022-03-20 03:22:46 +03:00
sowle
63fe35d5c5 warning fix in threads pool 2022-03-20 03:09:28 +03:00
cryptozoidberg
7f82a13e62
changes in protocol for relayin over tor 2022-03-19 04:12:13 +02:00
cryptozoidberg
3ca1485646
moved tor-client to latest commit 2022-03-17 19:24:56 +02:00
cryptozoidberg
4cd3c1b252
Merge branch 'develop' into tor 2022-03-15 21:13:20 +02:00
cryptozoidberg
60adbfad02
fixed wallet history export feature 2022-03-15 21:12:51 +02:00
cryptozoidberg
c5656534c4
Merge branch 'release' 2022-03-15 19:14:37 +02:00
cryptozoidberg
64740f7aae
Merge branch 'develop' into tor 2022-03-15 19:00:17 +02:00
cryptozoidberg
d99d4ca050
Merge branch 'release' into develop 2022-03-15 19:00:04 +02:00
cryptozoidberg
1a77ff4473
Merge branch 'develop' into tor 2022-03-15 18:59:13 +02:00
dev
59097d0068 Merge branch 'develop' into release 2022-03-11 04:27:39 +03:00
zano build machine
12a854834b === build number: 141 -> 142 === 2022-03-11 04:26:34 +03:00
dev
a430357466 bootstrap predownload files were updated to height 1480000 2022-03-11 04:24:25 +03:00
zano build machine
c46e2fb51f === build number: 140 -> 141 === 2022-03-10 19:18:55 +03:00
cryptozoidberg
bb1870da32
Merge branch 'release' into develop 2022-03-10 17:18:29 +01:00
cryptozoidberg
cadf64c3ca
updated UI 2022-03-10 16:00:51 +01:00
dev
f2fb68e312 Merge branch 'develop' into release 2022-03-10 16:47:50 +03:00
dev
01689994cf version bump: 1.4.0.139 -> 1.4.1.140 2022-03-10 16:47:23 +03:00
dev
7d4b03c3a5 Merge branch 'develop' into release 2022-03-10 16:39:51 +03:00
dev
bba9931ff6 checkpoints: set to main @ 1480000 2022-03-10 16:36:02 +03:00
cryptozoidberg
70a991d6f7
Moved tor lib to latest commit(added sending data bigger then 117 bytes) 2022-02-17 17:44:21 +03:00
cryptozoidberg
3c9901f68a
Merge branch 'develop' into tor 2022-02-17 16:21:54 +03:00
cryptozoidberg
4d51ca307b
Moved tor lib to latest commit(fixed sent payload len in tor packet) 2022-02-17 16:21:19 +03:00
cryptozoidberg
42e70b134a
removed message box on command line arg 2022-02-14 18:43:23 +03:00
cryptozoidberg
c7604f7c2a
moved UI to latest commits 2022-02-13 18:34:18 +03:00
cryptozoidberg
2014487c88
oved UI to latest version(fixes on deeplinks) 2022-02-13 18:31:36 +03:00
cryptozoidberg
f708f454d9
fixes related to tor 2022-02-12 22:38:12 +03:00
cryptozoidberg
dba8cd74b9
pulled lat changes from tor submodule 2022-02-11 17:25:34 +03:00
cryptozoidberg
72ad0e0fe0
moved to latest commit: added more logs 2022-02-09 21:26:58 +01:00
cryptozoidberg
09edf4a539
moved tor lib to lates commit: removed ssl dependency 2022-02-09 20:12:06 +01:00
cryptozoidberg
4340e4f688
moved tor lib to lates commit: ssl path 2022-02-09 20:05:22 +01:00
cryptozoidberg
c9b3d0b20a
moved tor lib to latest commit with fixed missing header 2022-02-09 19:57:57 +01:00
cryptozoidberg
6720efb5db
changed cmake target type for tor 2022-02-09 19:32:20 +01:00
cryptozoidberg
35b189b9b5
moved tor library to latest commit 2022-02-09 19:27:11 +01:00
cryptozoidberg
7790da8fe1
Merge branch 'develop' into tor 2022-02-09 19:18:59 +01:00
cryptozoidberg
8b4c24cdf9
moved to latest UI: fixes in deeplinks, tabs refactoring 2022-02-09 15:27:59 +01:00
cryptozoidberg
5d808ad39e
added option for manual specifying number of threads 2022-02-08 14:55:35 +01:00
cryptozoidberg
761b75ad72
added batch jobs to threads pool 2022-02-08 14:51:22 +01:00
cryptozoidberg
e2bb37e5cb
added tests for threads pool 2022-02-08 13:59:09 +01:00
cryptozoidberg
be318d6ed4
threads pool: inital code + unit tests dummy 2022-02-04 22:15:59 +01:00
cryptozoidberg
ad4b652e93
moved UI to latest commit with fixes 2022-02-02 14:48:35 +01:00
cryptozoidberg
6bfa257cfc
Moved UI to latest commit 2022-01-31 15:10:05 +01:00
cryptozoidberg
53dbc93ff0
moved to a new commit UI and tor 2022-01-31 15:09:00 +01:00
cryptozoidberg
d423f465a1
Fixed WRONG_PASSWORD error in UI 2022-01-27 15:30:50 +01:00
cryptozoidberg
9ef3c81f65
moved ui to latest commit 2022-01-26 15:24:31 +01:00
cryptozoidberg
b7a42895a1
fixed fixing fix 2022-01-18 18:48:36 +01:00
cryptozoidberg
50392b9e31
fixed bug with crashing message box 2022-01-18 18:19:18 +01:00
cryptozoidberg
cd644cc851
added preventive removal of ipc channel 2022-01-13 18:56:49 +01:00
cryptozoidberg
ceb30464d3
added missing command line argument for deeplinks under windows/linux 2022-01-13 14:10:53 +01:00
cryptozoidberg
bd797f6514
current state stored before branch switch 2022-01-13 14:08:21 +01:00
cryptozoidberg
5446ccf7d3
integrated tor into wallet in a draft mode 2022-01-09 00:07:26 +01:00
cryptozoidberg
6cadc8a79e
send transaction over p2p protocol as groundwork 2022-01-08 18:43:09 +01:00
cryptozoidberg
a4ec874844
moved to a new commit 2022-01-08 17:10:59 +01:00
cryptozoidberg
229cc86f5a
changed url of tor-connect to http 2022-01-08 16:55:09 +01:00
cryptozoidberg
1a55d65e85
first implementations for tor: relaying transactions over p2p network protocol 2022-01-08 16:36:33 +01:00
cryptozoidberg
70780ec62d
upgraded tor-connect 2022-01-06 20:38:22 +01:00
cryptozoidberg
8a0e7b3377
added tor-connect library to project tree(as submodule) 2022-01-06 20:21:39 +01:00
cryptozoidberg
e113152cc5
fixed compilation errors in url filter 2022-01-06 16:41:25 +01:00
cryptozoidberg
7478b48a56
fixed problem with missing pragma once 2022-01-05 21:21:35 +01:00
cryptozoidberg
37907e108a
disabled IPC for connectivity tool-2 2022-01-05 20:59:58 +01:00
cryptozoidberg
a5c8fe78ac
disabled IPC for connectivity tool 2022-01-05 20:32:56 +01:00
cryptozoidberg
049a898058
Fix for linux build agains IPC integration 2022-01-05 20:13:45 +01:00
zano build machine
5eb356a91d === build number: 138 -> 139 === 2022-01-05 21:42:49 +03:00
cryptozoidberg
271e3eb99e
deeplinks: added click even forwarding on macos 2022-01-05 19:32:48 +01:00
Derloda
6c7ee2590d
Add --disable-ntp parameter (#317)
* Add disable-ntp parameter
* Also allow GUI to disable NTP
* Update src/currency_protocol/currency_protocol_handler.inl

Co-authored-by: crypto.sowle <crypto.sowle@gmail.com>
2022-01-04 08:14:11 +03:00
sowle
ca6c7e81e1
#316 re-implemented using get_time_str instead of get_time_str2 2021-12-31 06:47:22 +03:00
sowle
140f43bc5e
crypto tests: point_is_zero test added 2021-12-31 06:44:26 +03:00
cryptozoidberg
9ea35d3a2f
deeplinks ready on application level 2021-12-30 19:17:22 +01:00
cryptozoidberg
10e0137d0e
added deeplinks commandline argument 2021-12-30 17:39:57 +01:00
cryptozoidberg
a623fc1506
Fixed #316 2021-12-30 17:32:58 +01:00
cryptozoidberg
ca8ce3c184
deeplinks implementation: proper routing 2021-12-30 17:32:58 +01:00
cryptozoidberg
bdfc14e90d
Create deeplink.rm 2021-12-30 16:41:33 +01:00
sowle
4659409288
crypto_tests: torsion_elements test added 2021-12-27 07:13:37 +03:00
sowle
286385cc83
crypto sugar: point_t::is_zero fixed, operator!= added 2021-12-27 07:10:21 +03:00
sowle
f2e58daa8c
crypto: ge_cached_to_p2 implemented 2021-12-27 07:09:02 +03:00
cryptozoidberg
2ca7c556d9
deep links: ipc inital implementation 2021-12-23 19:42:10 +01:00
sowle
8645a9ce2f
crypto tests: cn_fast_hash_perf improved 2021-12-18 08:35:48 +03:00
sowle
e689f281a3
comment for clarification 2021-12-18 08:33:41 +03:00
cryptozoidberg
854a2f063e
Merge branch 'release' 2021-12-03 21:31:50 +01:00
cryptozoidberg
1bda897ec9
Merge branch 'release' into develop 2021-12-03 21:31:00 +01:00
zano build machine
36578193bc === build number: 137 -> 138 === 2021-12-03 15:39:16 +03:00
cryptozoidberg
2d865a1f68
Merge branch 'develop' into release 2021-12-03 13:38:16 +01:00
cryptozoidberg
72c51c34d3
pulled zano_ui to latest commit again-2 2021-12-03 13:10:57 +01:00
cryptozoidberg
73a735b607
Merge branch 'release' into develop 2021-12-02 16:47:58 +01:00
cryptozoidberg
a9605d2556
Merge branch 'develop' into release 2021-12-02 16:47:37 +01:00
cryptozoidberg
0b1c091547
pulled zano_ui to latest commit again 2021-12-02 16:47:03 +01:00
cryptozoidberg
ba35377d45
fixed #313 2021-12-02 16:45:43 +01:00
sowle
708fb4c40b
bcs: minor improvements 2021-12-01 12:29:28 +03:00
sowle
0ad4ab6c52
coretests: wallet_spend_form_auditable_and_track test added 2021-12-01 05:19:11 +03:00
sowle
e99d4ad8e2
get_checkpoint_before_height() fixed (rare case in gcc when CPs < 3) 2021-11-30 00:20:51 +03:00
sowle
5f0b5f8f55
unittests: checkpoints_test.get_checkpoint_before_height_1 and checkpoints_test.get_checkpoint_before_height_2 tests added 2021-11-29 23:46:33 +03:00
sowle
03a828228c
coretests: 1) gen_checkpoints_prun_txs_after_blockchain_load fixed to reflect new rules on tx pruning; 2) final touches to gen_checkpoints_set_after_switching_to_altchain 2021-11-29 04:50:30 +03:00
sowle
e254f57e63
blockchain_storage::prune_ring_signatures_and_attachments_if_need() fixed (it could prune txs in cases when chain switching was still possible) 2021-11-27 05:26:36 +03:00
sowle
de15869c27
coretests: gen_checkpoints_set_after_switching_to_altchain fixed to fail if no fix present 2021-11-27 03:30:05 +03:00
sowle
ba912973cf
bcs: minor fixes 2021-11-26 17:23:50 +03:00
sowle
0b1b2d5bdf
coretests: trying not to mess with blockchainstorage too much 2021-11-26 16:23:41 +03:00
sowle
5c15ef7bcc
coretests: checkpoints_test improved to support multiple CPs, gen_checkpoints_set_after_switching_to_altchain test added 2021-11-26 16:10:30 +03:00
sowle
f86459935a
coretests fixed after moving to json format of gui config 2021-11-26 16:08:43 +03:00
sowle
71ef04d9e6
checkpoints: get_checkpoint_before_height() added with unit tests (+ unit tests for is_in_checkpoint_zone()) 2021-11-26 16:06:44 +03:00
zano build machine
88a8d58e35 === build number: 136 -> 137 === 2021-11-25 17:29:04 +03:00
cryptozoidberg
88e361bb38
Merge branch 'release' into develop 2021-11-25 15:28:18 +01:00
cryptozoidberg
3dfebddbdd
pulled zano_ui to latest commit again 2021-11-25 15:28:04 +01:00
zano build machine
c7788ab181 === build number: 135 -> 136 === 2021-11-25 16:41:04 +03:00
cryptozoidberg
2820a49afe
Merge branch 'release' into develop 2021-11-25 14:40:05 +01:00
cryptozoidberg
d6ef815566
Version moved to 1.4.0 2021-11-25 14:39:51 +01:00
cryptozoidberg
911744703f
Merge branch 'develop' into release 2021-11-25 14:38:27 +01:00
cryptozoidberg
5ab438a8db
Merge branch 'release' into develop 2021-11-25 14:37:14 +01:00
cryptozoidberg
d19afd6a69
pulled zano_ui to latest commit 2021-11-25 14:36:00 +01:00
cryptozoidberg
0ec0a8cfea
tweaks on graphics 2021-11-25 14:34:40 +01:00
cryptozoidberg
d62eb236fa
More tweaks for linux script 2021-11-24 20:44:25 +01:00
cryptozoidberg
b7b54526a2
Fixed linux app config generating script 2021-11-24 20:14:32 +01:00
cryptozoidberg
247ff33a53
moved UI to new branding 2021-11-24 19:47:49 +01:00
cryptozoidberg
2c0fdc4dad
added missing graphics 2021-11-24 19:47:00 +01:00
cryptozoidberg
c4f20daf06
updated graphics for UI 2021-11-24 18:29:44 +01:00
sowle
d8fdb7358c
build: made multi-job in Linux build script less aggressive 2021-11-24 06:04:30 +03:00
Barış ÇELİK
4db29d337d
added zano url-scheme handler for MacOS, Windows, Linux (#311)
* added zano url-scheme handler MacOS, Windows, Linux setups

* pass parameters to executable and print console

* added event filter for url-scheme handling in MacOS

Co-authored-by: Barış Çelik <bariscelik@Barss-MacBook-Air.local>
2021-11-23 20:59:43 +01:00
sowle
3e74e4d581
build: change single-job make to multi-job in Linux build script 2021-11-23 03:22:51 +03:00
sowle
5600952f39
Merge branch 'release' 2021-11-23 02:56:11 +03:00
sowle
42335023a9
=== version bump: 1.3.1.134 -> 1.3.2.135 === 2021-11-23 02:55:23 +03:00
sowle
189191e6e5
stratum: support 128-bit rate in eth_submitHashrate callback 2021-11-23 02:55:03 +03:00
sowle
379ca875b4
=== version bump: 1.3.1.134 -> 1.3.2.135 === 2021-11-22 22:57:25 +03:00
cryptozoidberg
f9b5b6c51e
revoked wrong commit 2021-11-22 18:54:19 +01:00
sowle
e2bcd05f60
stratum: support 128-bit rate in eth_submitHashrate callback 2021-11-22 20:44:31 +03:00
Barış ÇELİK
2c464f4218
added zano url-scheme handler MacOS, Windows, Linux setups (#307)
* added zano url-scheme handler MacOS, Windows, Linux setups

* pass parameters to executable and print console

Co-authored-by: Barış Çelik <bariscelik@Barss-MacBook-Air.local>
2021-11-22 16:32:23 +01:00
cryptozoidberg
493855b6b1
added missing file 2021-11-18 21:11:16 +01:00
cryptozoidberg
b952183623
converted local UI config into JSON 2021-11-18 20:05:09 +01:00
cryptozoidberg
bd3cd91379
fixed problem with catch-return value 2021-11-17 16:41:32 +01:00
Barış ÇELİK
a2664f046f
added zano url-scheme handler MacOS, Windows, Linux setups (#304)
Co-authored-by: Barış Çelik <bariscelik@Barss-MacBook-Air.local>
2021-11-17 15:32:00 +01:00
cryptozoidberg
9c1c74cf7d
rollback mdbx 2021-11-16 15:52:07 +01:00
cryptozoidberg
f53b696798
fixed mdbx issues with with new version 2021-11-16 14:58:19 +01:00
cryptozoidberg
8d8ec50ae7
fixed mdbx linking 2021-11-11 17:04:41 +01:00
cryptozoidberg
d3476ba571
mdbx moved to latest commit 2021-11-11 15:16:27 +01:00
cryptozoidberg
3331e419e5
disabled boost locale for ios 2021-11-04 11:42:11 +01:00
cryptozoidberg
fbc50419db
Merge branch 'develop' into develop_mobile 2021-11-03 22:18:13 +01:00
cryptozoidberg
a2eb47d7e4
fixes for disabling notification feature 2021-11-03 22:17:21 +01:00
cryptozoidberg
8ae6be2694
Fixes for new boost versions 2021-11-03 22:14:55 +01:00
sowle
6bf7dd9307
gcc compilation fix 2021-11-03 17:20:49 +01:00
sowle
3ef937cfc5
p2p: --p2p-ip-auto-blocking command-line parameter implemented for daemon (blocking is disabled by default) 2021-11-03 16:11:47 +01:00
sowle
ee222d96a7
p2p: is_ip_good_for_adding_to_peerlist added 2021-11-02 22:19:10 +01:00
sowle
37755b5b1f
p2p: IP blocking refactored, blocked IPs are now removed from peerlists 2021-11-02 21:47:25 +01:00
sowle
4fbc383d0f
wallet_rpc_server initialization fix 2021-10-25 22:12:32 +02:00
cryptozoidberg
52440749ed
added api fo exporting tx history from UI 2021-10-24 17:42:30 +02:00
sowle
a7b6c04eb1
Merge branch 'release' into develop 2021-10-22 07:44:36 +03:00
sowle
24ddd6facf
time format for get_time_str_v2 slightly changed 2021-10-21 17:12:01 +03:00
sowle
91127ca3ea
clang compilation fixed 2021-10-21 07:30:58 +03:00
sowle
68df0de231
gcc compilation fixed 2021-10-21 07:25:44 +03:00
cryptozoidberg
b5477a836c
export transactions refactoring for #245 2021-10-20 21:18:45 +02:00
sowle
814aa0ce99
core_tests: wallet_rpc_transfer test added, wallet_rpc_integrated_address_transfer improved 2021-10-19 04:51:59 +03:00
sowle
8375c3da62
core_tests: chaingen::check_mixin_value_for_each_input() 2021-10-19 04:46:20 +03:00
cryptozoidberg
7873ef2acc
implemented #242 2021-10-17 21:11:01 +02:00
cryptozoidberg
3babaa4f07
added support of disableing notifications for JS code 2021-10-17 15:51:55 +02:00
cryptozoidberg
3b29f57104
disabled notifications for tracking wallet 2021-10-16 23:08:05 +02:00
cryptozoidberg
2b1c3c77bb
fixed #71 2021-10-16 22:41:37 +02:00
sowle
9eae5a6b24
Merge branch 'release' 2021-10-14 22:32:50 +03:00
sowle
9a998a6350
=== version bump: 1.3.0 -> 1.3.1 === 2021-10-14 19:29:12 +03:00
zano build machine
a298b17c05 === build number: 133 -> 134 === 2021-10-14 18:29:20 +03:00
sowle
b9310ef1bd
Merge branch 'develop' into release 2021-10-14 17:46:56 +03:00
sowle
431b5e539e
Merge branch 'actual_ts_refactoring' into develop 2021-10-14 17:44:01 +03:00
sowle
69a0117793
rpc: git rid of obsolete PoS timestamps checks 2021-10-12 17:00:01 +03:00
sowle
832b7811b9
fixed block timestamp setting 2021-10-12 05:00:01 +03:00
sowle
92e2b1851b
actual_timestamp made obsolete, real timestamp moved to tx_service_attachment in extra, PoS ts guessing interval extended 2021-10-11 16:10:51 +03:00
sowle
9125039397
coretests: added description for isolate_auditable_and_proof test 2021-10-08 08:02:53 +03:00
sowle
9bfc9a0490
get rid of coinday_weight 2021-10-08 08:01:59 +03:00
sowle
d5e250d33a
fix for a typo 2021-10-08 07:58:42 +03:00
cryptozoidberg
605bef55c6
added idle wallet store in server mode
(cherry picked from commit 7dc93fe144)
2021-10-04 13:17:46 +02:00
cryptozoidberg
7dc93fe144
added idle wallet store in server mode 2021-10-04 13:11:56 +02:00
cryptozoidberg
22062a3c45
Merge branch 'release' 2021-09-12 15:04:24 +03:00
zano build machine
d4d3cdc49e === build number: 132 -> 133 === 2021-09-12 14:20:40 +03:00
cryptozoidberg
ae2bad2c2e
Merge branch 'develop' into release 2021-09-12 14:18:55 +03:00
cryptozoidberg
b03ba7da67
fixed wrap endpoint url to new one 2021-09-12 14:18:19 +03:00
cryptozoidberg
cd4c9a47a3
Merge branch 'release' 2021-09-11 12:48:00 +03:00
cryptozoidberg
b0d2838c90
Merge branch 'develop' into develop_mobile 2021-09-11 12:06:09 +03:00
cryptozoidberg
bff2bb94f9
Merge branch 'release' into develop 2021-09-11 12:05:40 +03:00
zano build machine
207f133c4d === build number: 131 -> 132 === 2021-09-11 10:31:09 +03:00
cryptozoidberg
5eeb4a1c5b
Merge branch 'develop' into release 2021-09-11 10:29:37 +03:00
cryptozoidberg
c10674ce19
explicitly removed sender address from wrap tx 2021-09-11 10:28:34 +03:00
cryptozoidberg
29f1829cdb
Merge branch 'release' 2021-09-09 19:03:35 +03:00
cryptozoidberg
62daa90590
Merge branch 'release' of github.com:hyle-team/zano into release 2021-09-09 18:54:42 +03:00
zano build machine
6f6eefa077 === build number: 130 -> 131 === 2021-09-09 18:54:15 +03:00
cryptozoidberg
8b5f4fa467
Zano 1.3.0 fix 2021-09-09 18:53:44 +03:00
cryptozoidberg
3d31ee1b67
Merge branch 'release' 2021-09-09 18:50:55 +03:00
cryptozoidberg
99619e9f80
Merge branch 'release' of github.com:hyle-team/zano into release 2021-09-09 18:50:37 +03:00
zano build machine
7f23a39827 === build number: 129 -> 130 === 2021-09-09 16:46:14 +03:00
cryptozoidberg
d2db10b5f7
Zano 1.3.0 2021-09-09 16:45:22 +03:00
zano build machine
7b5bea04a7 === build number: 128 -> 129 === 2021-09-09 13:13:33 +03:00
cryptozoidberg
f08430eead
Zano 1.2.0 2021-09-09 13:12:47 +03:00
cryptozoidberg
3283447ae6
Merge branch 'release' 2021-09-07 19:46:19 +03:00
cryptozoidberg
f0820f0a15
Merge branch 'master' into release 2021-09-07 19:45:58 +03:00
cryptozoidberg
dd94823d52
Merge branch 'develop' into release 2021-09-07 13:56:27 +03:00
cryptozoidberg
54dbcb905a
merge 2021-09-07 13:56:03 +03:00
zano build machine
fd34430f08 === build number: 124 -> 125 === 2021-09-07 10:50:20 +03:00
cryptozoidberg
a09a7b7290
Merge branch 'develop' into develop_mobile 2021-09-06 23:50:30 +03:00
cryptozoidberg
d98fea3a62
removed sender address in wrap operations 2021-09-06 23:49:05 +03:00
cryptozoidberg
f7e9806139
Merge branch 'develop' into develop_mobile 2021-09-02 20:11:13 +03:00
cryptozoidberg
9202483ee1
switched to production custody wallet 2021-09-02 20:09:56 +03:00
zano build machine
49c05b7158 === build number: 127 -> 128 === 2021-08-28 11:42:01 +03:00
cryptozoidberg
cc985ca710
moved layout to latest commit with fixes: forgotten html 2021-08-28 10:40:16 +02:00
zano build machine
067d7ff1b2 === build number: 126 -> 127 === 2021-08-27 21:17:44 +03:00
cryptozoidberg
1e0a58097a
moved layout to latest commit with fixes 2021-08-27 20:16:59 +02:00
zano build machine
c44972102e === build number: 125 -> 126 === 2021-08-27 09:40:20 +03:00
cryptozoidberg
48b4b78e6a
moved UI to wrap 2021-08-27 08:38:55 +02:00
zano build machine
d7d955c67e === build number: 124 -> 125 === 2021-08-26 16:04:42 +03:00
cryptozoidberg
8a0bbf7854
Fixed bug with amount parsing 2021-08-26 15:03:42 +02:00
cryptozoidberg
dcfac9a8cc
merge from wrap 2021-08-25 22:57:55 +02:00
cryptozoidberg
faf006e357
Merged from mobild_develop 2021-08-25 22:48:29 +02:00
cryptozoidberg
506bf42632
added send wrapped transaction to desktop UI 2021-08-25 22:43:08 +02:00
cryptozoidberg
9447de6c96
added proper handling of wrpa transactions in simplewallet 2021-08-25 20:39:33 +02:00
cryptozoidberg
4fc30dd136
Merge branch 'develop_mobile' into develop 2021-08-21 19:51:47 +02:00
cryptozoidberg
69eb2dc38a
added wrap address detection support in UI 2021-08-21 19:51:01 +02:00
cryptozoidberg
580f354c1c
added wrap support to plain_wallet 2021-08-21 08:14:57 +02:00
cryptozoidberg
d1121f3ff9
Merge branch 'develop' into develop_mobile 2021-08-17 12:13:54 +02:00
cryptozoidberg
2ed87ff148
added wrap address support in mobile wallet 2021-08-17 12:13:18 +02:00
cryptozoidberg
cb1be3e31c
fixed missing namespace 2021-08-17 12:13:17 +02:00
cryptozoidberg
2efc46ed09
address validation for wrap 2021-08-17 12:13:17 +02:00
cryptozoidberg
3222d51490
forgoten LOG_PRINT_COLOR2_CB 2021-08-17 12:13:16 +02:00
cryptozoidberg
11ef353281
forgoten magenta 2021-08-17 12:13:16 +02:00
cryptozoidberg
a14cda2db6
improved json rpc lib and logging lib 2021-08-17 12:13:16 +02:00
cryptozoidberg
553eee55ca
fixed bug in list_recent_transfers 2021-08-17 12:13:15 +02:00
cryptozoidberg
04083afc87
fixed correct auditable address 2021-08-17 12:13:15 +02:00
cryptozoidberg
038a5a4a07
upgraded logs 2021-08-17 12:13:15 +02:00
cryptozoidberg
9936ef63cf
More options on wallet API 2021-08-17 12:13:15 +02:00
cryptozoidberg
c0621eb2f2
extended api for wallet 2021-08-17 12:13:14 +02:00
cryptozoidberg
7886f7cd3d
modified logging in wallet 2021-08-17 12:13:14 +02:00
cryptozoidberg
4584b5fede
Added green logs shortcut 2021-08-17 12:13:14 +02:00
cryptozoidberg
84f0119948
extended wallet transfer API to service_entries option 2021-08-17 12:13:13 +02:00
cryptozoidberg
2151f8f53e
removed annoying < and > symbols 2021-08-17 12:13:13 +02:00
cryptozoidberg
b48dada17f
added FORCE_HEADER_ONLY for projects that use header files as external interface 2021-08-17 12:13:13 +02:00
cryptozoidberg
e9b4b216cc
removed forgotten field 2021-08-17 12:13:12 +02:00
cryptozoidberg
d2bb634a7d
added current_height to COMMAND_RPC_GET_RECENT_TXS_AND_INFO response 2021-08-17 12:13:12 +02:00
cryptozoidberg
82a7229368
added transfer_internal_index to wallet_transfer_info struct 2021-08-17 12:13:12 +02:00
cryptozoidberg
c6fa1c6c29
final fixes in isolate_auditable_and_proof 2021-08-17 12:13:11 +02:00
cryptozoidberg
69500c83be
fixed last bugs in isolate_auditable_and_proof 2021-08-17 12:13:11 +02:00
cryptozoidberg
d49882fbc0
fixed minor bugs, proofs working now 2021-08-17 12:13:11 +02:00
cryptozoidberg
11ef684b94
bunch of fixes over isolate_auditable_and_proof test 2021-08-17 12:13:11 +02:00
cryptozoidberg
479f2029a0
added test isolate_auditable_and_proof 2021-08-17 12:13:10 +02:00
cryptozoidberg
faa956a959
added isolated items to rpc-structures 2021-08-17 12:13:10 +02:00
cryptozoidberg
42712aa8d7
fixed default initialization for decrypt/encrypt visitors 2021-08-17 12:13:10 +02:00
cryptozoidberg
13e59ffafb
implemented basic suppoer of wrapping in wallet(service commands) + inital support in simplewallet 2021-08-17 12:13:09 +02:00
cryptozoidberg
abb9bb6280
added wrap address support in mobile wallet 2021-08-17 12:12:20 +02:00
sowle
777b8f2e6a
Merge branch 'release' into develop 2021-08-11 15:39:39 +03:00
sowle
61c4381604
Merge branch 'release' 2021-08-10 15:15:46 +03:00
sowle
981393c6e5
=== build version: 1.2.0.123 -> 1.2.1.124 === 2021-08-10 00:36:16 +03:00
sowle
1d101ac984
Merge branch 'develop' into release 2021-08-10 00:07:37 +03:00
sowle
52beabc915
predownload: don't exit when downloading fails unless force-predownload has been set 2021-08-09 14:35:13 +03:00
cryptozoidberg
0f40aba1e6
fixed missing namespace 2021-08-07 22:16:12 +02:00
cryptozoidberg
bf7a0941c4
Merge branch 'develop' into wrap 2021-08-07 22:04:55 +02:00
cryptozoidberg
0d3682efdf
address validation for wrap 2021-08-07 22:01:00 +02:00
cryptozoidberg
bf43b41bdd
forgoten LOG_PRINT_COLOR2_CB 2021-07-29 22:40:42 +02:00
cryptozoidberg
8d4f032d05
forgoten magenta 2021-07-29 22:35:36 +02:00
cryptozoidberg
da7756c73a
improved json rpc lib and logging lib 2021-07-29 22:32:46 +02:00
sowle
9d42cb9851
Merge branch 'release' into develop 2021-07-29 13:51:55 +03:00
sowle
871f136711
Merge branch 'release' 2021-07-29 13:30:48 +03:00
sowle
2687daa507
predownload files updated 2021-07-29 06:01:43 +03:00
crypto.sowle
b09b6e3916
added a notice for building testnet 2021-07-29 03:28:41 +03:00
sowle
52eb568cea
macos build script fixes merged from develop 2021-07-29 02:11:08 +03:00
sowle
44f41af5b8
=== build number: 122 -> 123 === 2021-07-29 00:02:06 +03:00
sowle
755ed3249a
predownload & checkpoint for mainnet @ 1161000 2021-07-29 00:00:51 +03:00
cryptozoidberg
4c01aec842
fixed bug in list_recent_transfers 2021-07-27 22:45:06 +02:00
cryptozoidberg
84d4af7c18
fixed correct auditable address 2021-07-26 16:17:13 +02:00
cryptozoidberg
b1bb1f2ac1
upgraded logs 2021-07-22 00:44:28 +02:00
cryptozoidberg
17056bdf44
More options on wallet API 2021-07-21 00:25:12 +02:00
cryptozoidberg
d387ad9112
extended api for wallet 2021-07-20 15:36:47 +02:00
cryptozoidberg
fafdfd196a
modified logging in wallet 2021-07-19 22:52:59 +02:00
crypto.sowle
733a8d7510
fixed a typo in README.MD 2021-07-18 20:13:46 +03:00
cryptozoidberg
9d21077b5e
Added green logs shortcut 2021-07-18 01:57:45 +02:00
cryptozoidberg
71c9069d27
extended wallet transfer API to service_entries option 2021-07-17 00:05:41 +02:00
cryptozoidberg
232a6d71d0
removed annoying < and > symbols 2021-07-06 15:40:40 +02:00
sowle
5ad01ef2c9
build: macos script minor fix 2021-07-05 16:18:48 +03:00
sowle
7c01ea4052
build: macos script redisigned for Big Sur 2021-07-05 12:34:08 +03:00
cryptozoidberg
83dcb88d22
added FORCE_HEADER_ONLY for projects that use header files as external interface 2021-07-04 21:08:54 +02:00
cryptozoidberg
585c01d3aa
removed forgotten field 2021-07-01 23:47:31 +02:00
cryptozoidberg
cabdf49430
added current_height to COMMAND_RPC_GET_RECENT_TXS_AND_INFO response 2021-07-01 23:00:28 +02:00
cryptozoidberg
2e5c493004
added transfer_internal_index to wallet_transfer_info struct 2021-07-01 21:05:50 +02:00
sowle
4d8d385d5d
build certification and notarization for macos 2021-06-30 03:59:41 +03:00
sowle
2fdcbd1554
build certification and notarization for macos 2021-06-29 18:16:11 +03:00
cryptozoidberg
e27b8fdf18
final fixes in isolate_auditable_and_proof 2021-06-29 16:46:03 +02:00
cryptozoidberg
c9b7e5689c
fixed last bugs in isolate_auditable_and_proof 2021-06-28 00:08:33 +02:00
cryptozoidberg
0d7b10edda
fixed minor bugs, proofs working now 2021-06-27 01:24:04 +02:00
cryptozoidberg
33b26a68c9
bunch of fixes over isolate_auditable_and_proof test 2021-06-26 02:40:41 +02:00
cryptozoidberg
d83f8c3e9e
added test isolate_auditable_and_proof 2021-06-24 23:24:38 +02:00
cryptozoidberg
331548c9a6
added isolated items to rpc-structures 2021-06-24 22:10:09 +02:00
cryptozoidberg
4d324fc1bf
fixed default initialization for decrypt/encrypt visitors 2021-06-24 20:34:13 +02:00
cryptozoidberg
0925c02a77
implemented basic suppoer of wrapping in wallet(service commands) + inital support in simplewallet 2021-06-24 00:57:38 +02:00
sowle
1ac39d19f6
crypto_tests: added crypto_neg_identity (against negative identity pub keys and key images) 2021-06-22 18:05:23 +03:00
sowle
d591db9a91
crypto: point_t::is_in_main_subgroup() added 2021-06-22 18:00:30 +03:00
cryptozoidberg
f738596a3c
Added try_catch with location 2021-06-17 23:02:57 +02:00
cryptozoidberg
5df4988e6e
updated munin plugins 2021-06-17 15:53:44 +02:00
crypto.sowle
584558b9f3
update high versions in readme 2021-06-17 13:38:16 +03:00
cryptozoidberg
96f04db964
added executable attribute 2021-06-17 01:50:04 +02:00
cryptozoidberg
d0932f1ea4
added mixins into monitoring 2021-06-17 01:48:07 +02:00
sowle
9a0382f1a7
MSVC 2019 configuration + Boost 1.76 support 2021-06-15 14:21:10 +03:00
sowle
7704c8468e
windows build: restore signing 2021-06-14 18:06:13 +03:00
cryptozoidberg
2fb3b96c2b
merge from develop 2021-06-11 21:59:50 +03:00
cryptozoidberg
ff1914aab5
rolled back wallet version 2021-06-11 21:57:44 +03:00
sowle
ca10d2de17
Bulletproofs+: gcc compilation fix + minor improvements 2021-06-08 18:07:53 +03:00
sowle
d38c852ead
crypto_tests: minor fix 2021-06-08 17:56:25 +03:00
sowle
bb6dea509e
wallet resync-on-load issue fixed (the bug was in data storing on Boost > 69), also Zano made compatible with Boost 1.72 2021-06-07 15:00:58 +03:00
sowle
5fa0e15843
crypto tests: crypto_calc_lsb_32 2021-06-07 14:43:19 +03:00
sowle
57bc1278f4
Bulletproofs+: the first working version 2021-06-05 03:47:27 +03:00
sowle
2fdeefb545
crypto: scalar_vec_t, scalar_mat_t 2021-06-05 03:36:58 +03:00
sowle
5b1fa3d5e8
crypto: scalar_t::assign_mul 2021-06-05 02:18:45 +03:00
sowle
eaa3b92963
Dockerfile: fixed broken boost downloading link 2021-06-04 15:02:25 +03:00
cryptozoidberg
9a94584ca4
Forgoten line 2021-06-03 19:00:34 +03:00
cryptozoidberg
b48c7b16c6
Removed unused includes 2021-06-03 18:50:29 +03:00
cryptozoidberg
51bb91c66c
rolled back eperimental code 2021-06-03 18:46:44 +03:00
crypto.sowle
e0a6468241
readme: more fixes 2021-06-03 16:21:00 +03:00
sowle
eda26e44d0
readme: more fixes 2021-06-03 16:06:49 +03:00
sowle
907d428689
readme: versions update, boost link fix, grammar corrections, GUI/server emphasized 2021-06-03 16:02:15 +03:00
cryptozoidberg
e302c34f7e
fixed access to secon and first 2021-06-03 15:42:57 +03:00
cryptozoidberg
a3dcb32834
more logs on chainshortener 2021-06-03 15:15:05 +03:00
cryptozoidberg
c8c2414fd3
added new portable storage 2021-06-02 23:52:18 +03:00
cryptozoidberg
569d64b5f2
experimental: try different portable_storage for android 2021-06-02 20:50:04 +03:00
cryptozoidberg
d31802a703
fixed warning 2021-06-02 19:12:59 +03:00
sowle
53e0a4e953
Merge branch 'release' 2021-06-02 16:27:06 +03:00
sowle
1a8c6b0dfa
increment build number script fix 2 2021-06-02 00:48:52 +03:00
zano build machine
3748d9d695 === build number: 121 -> 122 === 2021-06-02 00:47:04 +03:00
sowle
ba2b2f4d9a
increment build number script fix 2 2021-06-02 00:46:10 +03:00
sowle
8f92109520
increment build number script fix 2021-06-02 00:25:44 +03:00
sowle
b9d43f8834
increment build number script fix 2021-06-02 00:19:06 +03:00
cryptozoidberg
8f12632ca6
android fix for new boost(1_72) 2021-06-01 23:20:24 +03:00
cryptozoidberg
9ff5e7a9ca
got rid from ugly hardcoded paths 2021-06-01 15:45:30 +03:00
cryptozoidberg
ce79505087
added wallet version logging on load/store 2021-05-31 22:24:38 +03:00
cryptozoidberg
a9eb5f5f5a
Added extra logs to research Orson's problem 2021-05-28 20:36:17 +02:00
cryptozoidberg
b41d87a051
fixed errors reporting for mobile wallet 2021-05-27 13:19:20 +02:00
cryptozoidberg
f400c5c257
Merge branch 'develop_mobile' into develop 2021-05-25 17:02:50 +02:00
cryptozoidberg
3939277ed0
Added tracking attribute 2021-05-25 17:02:10 +02:00
cryptozoidberg
e1421dd331
Merge branch 'develop' into develop_mobile 2021-05-25 16:53:59 +02:00
cryptozoidberg
cd4d8fbffd
Merge branch 'release' into develop 2021-05-25 16:53:30 +02:00
cryptozoidberg
ea4145f467
Merge branch 'develop' into release 2021-05-25 16:53:06 +02:00
cryptozoidberg
f17daee425
Merge branch 'master' into develop 2021-05-25 16:52:19 +02:00
cryptozoidberg
bd9e57c6d8
fixed subrepo(again) 2021-05-25 16:51:16 +02:00
cryptozoidberg
65ebdbb6e8
merge from develop 2021-05-25 16:47:54 +02:00
cryptozoidberg
add2de9b51
fixed tracking wallet seed phrase 2021-05-25 16:43:47 +02:00
sowle
e24be09046
crypto: faster sc_invert from libsodium (my old naive one moved to the crypto_tests) 2021-05-11 06:42:06 +03:00
sowle
182a0c59bb
crypto sugar: scalar_t::reduce(), hs_t::assign_calc_hash() 2021-05-11 04:32:03 +03:00
cryptozoidberg
2e34f210d0
Merge branch 'release' 2021-05-07 12:01:25 -05:00
cryptozoidberg
1957ea5c75
Merge branch 'release' into develop 2021-05-07 12:01:10 -05:00
cryptozoidberg
b310c5c29d
reset testnet 2021-05-07 12:00:38 -05:00
cryptozoidberg
5013963e21
reset testnet 2021-05-07 11:59:53 -05:00
sowle
c8ba0418ef
crypto sugar minor improvements 2021-05-05 06:38:07 +03:00
cryptozoidberg
82b48a4997
Merge branch 'release' 2021-05-03 15:01:55 -05:00
zano build machine
2dfce795d1 === build number: 120 -> 121 === 2021-05-03 21:55:38 +03:00
cryptozoidberg
3305a8ff44
Merge branch 'release' into develop 2021-05-03 13:10:40 -05:00
cryptozoidberg
5c79cf979a
fixed UI commit 2021-05-03 13:09:40 -05:00
cryptozoidberg
fe3d4f4807
test 2021-05-03 13:00:24 -05:00
zano build machine
0931125172 === build number: 119 -> 120 === 2021-05-03 19:30:04 +03:00
cryptozoidberg
a39dacb242
Merge branch 'release' into develop 2021-05-03 11:29:28 -05:00
cryptozoidberg
6871c26732
moved ui to latest commit 2021-05-03 11:28:52 -05:00
zano build machine
f5e8c0b179 === build number: 118 -> 119 === 2021-05-03 06:19:10 +03:00
cryptozoidberg
f074ea9b8a
Merge branch 'release' into develop 2021-05-02 22:18:13 -05:00
cryptozoidberg
03ce6bcca7
moved UI to fixed commit 2021-05-02 22:17:47 -05:00
zano build machine
2e87c04d9b === build number: 117 -> 118 === 2021-04-30 21:12:40 +03:00
cryptozoidberg
ca2cfe0c0f
Merge branch 'release' into develop 2021-04-30 13:12:02 -05:00
cryptozoidberg
2d9afd57cb
changed minor version 2021-04-30 13:10:47 -05:00
cryptozoidberg
01f62daf12
ui updated to new commit 2021-04-30 13:08:49 -05:00
sowle
c4abdc39df
typo fix 2021-04-28 21:26:23 +03:00
sowle
85e46999c2
coretests: 1) many hardfork 1 tests fixed to more correctly check HF status, 2) hard_fork_1_pos_and_locked_coins re-enabled 2021-04-28 07:01:47 +03:00
sowle
ebf5486513
1) test_chain_unit_enchanced::check_hardfork_active implemented, 2) core runtime config minor improvement 2021-04-28 07:00:32 +03:00
zano build machine
e9e94fc5b5 === build number: 116 -> 117 === 2021-04-28 04:25:55 +03:00
cryptozoidberg
5b3eb2937e
Merge branch 'develop' into release 2021-04-27 20:24:45 -05:00
cryptozoidberg
5d3a8e730a
disabled test 2021-04-27 20:23:49 -05:00
cryptozoidberg
1dccc9ffbe
fixed last coretest 2021-04-27 18:03:57 -05:00
cryptozoidberg
b1e2fbbe55
fixed few coretests 2021-04-27 17:15:30 -05:00
sowle
09ad4f5900
crypto-sugar made less dependent of epee 2021-04-27 05:52:55 +03:00
sowle
191a89f9c8
crypto: parse_tpod_from_hex_string 2021-04-27 05:18:09 +03:00
sowle
1df36cb841
crypto: fix some warnings 2021-04-27 05:14:11 +03:00
zano build machine
67b0eb2a88 === build number: 115 -> 116 === 2021-04-27 00:14:05 +03:00
cryptozoidberg
9c5088afd4
Merge branch 'release' into develop 2021-04-26 15:30:30 -05:00
cryptozoidberg
60e25df8f6
set a hardfork block number 2021-04-26 15:30:07 -05:00
cryptozoidberg
842ff98b12
Merge branch 'develop' into release 2021-04-26 13:26:25 -05:00
cryptozoidberg
6fee9eaca6
Merge branch 'atomics' into develop 2021-04-26 13:13:23 -05:00
cryptozoidberg
54bf59ceab
Merge branch 'develop' into atomics 2021-04-26 13:12:53 -05:00
cryptozoidberg
ac5b6b6030
fixed few bugs in block version pre-validation(possible hardfork) 2021-04-23 22:37:37 -05:00
sowle
730328e87a
crypto: point_t ctor minor fix 2021-04-24 05:18:14 +03:00
sowle
ebffb92877
crypto: crypto-sugar (scalar_t, point_t and other helpers) moved from functional_tests/crypto_tests to crypto 2021-04-24 04:48:38 +03:00
sowle
4ce59c023b
crypto: fe_cmp implemented 2021-04-24 04:45:30 +03:00
cryptozoidberg
152dd00859
added core test against hard_fork3 validation 2021-04-22 19:12:30 -05:00
cryptozoidberg
38aab2c61c
moved htlc from hardfork 2 to hardfork 3 2021-04-22 11:48:33 -05:00
sowle
7fb643d894
crypto: cn_fast_hash is a bit more faster now 2021-04-22 01:34:51 +03:00
sowle
8ac3432dcb
experimental crypto: ml2s_sig_verif_performance, ml2s_sig_verif_performance_2 (performance tests for ml2s) 2021-04-21 17:36:43 +03:00
sowle
07ce36d4ee
experimental crypto: assign_mul_plus_G, c_point_H 2021-04-21 17:34:36 +03:00
sowle
efa8065d3d
experimental crypto: pod_to_hex_* fixed, point_t ctor fixed 2021-04-20 03:04:33 +03:00
sowle
68e586e700
daemon: print_tx_prun_info cmd added 2021-04-20 03:01:29 +03:00
sowle
8db7fa905f
predownload database updated to 1M blocks 2021-04-17 05:25:39 +03:00
cryptozoidberg
6fea62ddf7
added checkpoint in testnet 2021-04-16 14:31:18 -05:00
cryptozoidberg
51ffbac73c
fixed ui submodule 2021-04-15 13:22:13 -05:00
cryptozoidberg
5d909f468a
fixed windows build script 2021-04-15 10:24:22 -05:00
cryptozoidberg
efd0031aa9
fixed local path to submodule 2021-04-14 17:04:02 -05:00
sowle
bcc94045c4
experimental crypto: all gcc issues fixed 2021-04-14 20:10:17 +03:00
sowle
0dce55c2e1
experimental crypto: ml2s_py2cpp, ml2s_cpp2py, ml2s_hsc 2021-04-14 00:28:43 +03:00
sowle
a01cc99c3b
experimental crypto: point_t helpers, muladd test 2021-04-13 02:44:42 +03:00
sowle
561c72b68b
experimental crypto: performance tests moved to separate file + few new crypto primitives added to crypto_performance 2021-04-12 13:14:42 +03:00
sowle
fc1e876ced
experimental crypto: pod to str conversions for 256 bit pods, small fixes 2021-04-12 13:09:53 +03:00
sowle
e6a519e288
experimental crypto: scalar_t and point_t convenient ctors and muladd added 2021-04-11 18:27:04 +03:00
sowle
c8386fc2db
crypto: gcc fixup 2 2021-04-11 00:20:18 +03:00
sowle
fc82f572c2
crypto: gcc fixup 2021-04-11 00:18:42 +03:00
sowle
457b84fd7b
crypto: ge_bytes_hash_to_ec_32 2021-04-10 23:43:54 +03:00
sowle
670bacbf3f
crypto: ge_mul8_p3 and sc_muladd implemented 2021-04-10 23:41:38 +03:00
cryptozoidberg
ffd1ecdcff
fixed counterparty_address load from transaction details 2021-03-26 00:43:50 +03:00
sowle
aac094ce4b
experimental crypto: scalar_t::is_reduced(), tests, new primitives for performance test 2021-03-24 19:56:33 +03:00
cryptozoidberg
18ef9b12ec
fixed misprint in struct definition 2021-03-24 01:00:12 +03:00
cryptozoidberg
f6ab75f530
fixed build scripts for submodule 2021-03-22 22:03:03 +03:00
cryptozoidberg
604c0264e6
Added all the htmls as a submodule from separate repository 2021-03-22 21:48:22 +03:00
cryptozoidberg
b4903386a5
checkpoints reset for testnet 2021-03-22 21:13:19 +03:00
cryptozoidberg
9df7801865
iplemented RPC API for atomics 2021-03-18 22:35:11 +03:00
cryptozoidberg
4121cbe675
added tx_payer to htlc 2021-03-17 21:01:09 +03:00
cryptozoidberg
72c6d886f4
disabled predownload even better 2021-03-13 17:32:56 +03:00
cryptozoidberg
6efae35982
disabled_predownload for testnet 2021-03-13 17:05:08 +03:00
cryptozoidberg
c6572a213a
fixed gcc compilation issue with RIPEMD-160 2021-03-13 16:23:34 +03:00
cryptozoidberg
e001149194
testnet restarted (in atomics branch yet) 2021-03-13 16:13:03 +03:00
cryptozoidberg
a3ca1edcd6
fixed hard_fork_2_no_new_structures_before_hf 2021-03-12 17:20:11 +03:00
cryptozoidberg
91648cbcf2
fixed hard_fork_1_unlock_time_2_in_normal_tx 2021-03-12 16:29:26 +03:00
sowle
2271ce03b1
coretests: gen_crypted_attachments, gen_tx_extra_double_entry, gen_wallet_decrypted_attachments fixed 2021-03-12 07:14:28 +03:00
sowle
ff445036cc
coretests: code cleanup 2021-03-12 07:13:30 +03:00
sowle
e3dfa2ca67
coretests: many tests fixed due to more strict rule for extra_alias_entry and HF2 2021-03-11 19:43:39 +03:00
sowle
4bf6a5e2d1
compilation fixes 2021-03-11 06:48:43 +03:00
cryptozoidberg
74f30a8c5f
validate_tx_for_hardfork_specific_terms: added old code in comments 2021-03-11 01:34:21 +03:00
cryptozoidberg
3962e6153d
fixed multiple bugs related to recent refactoring 2021-03-10 22:35:34 +03:00
cryptozoidberg
9dac595b83
fixed bug with finalize_transaction params(escrow work was totaly broken) 2021-03-10 03:23:54 +03:00
cryptozoidberg
f0e41e1980
htlc: added hardfork2 rules, improved core tests for atomics 2021-03-08 02:09:08 +03:00
cryptozoidberg
2e18f85c2e
htlc: atomic_test_altchain_simple 2021-03-07 23:18:19 +03:00
sowle
9a594cc719
experimental crypto: scalar_t::mul_plus_G improved, crypto_ge_scalarmult_vartime_p3 test added 2021-03-04 12:19:06 +03:00
sowle
00955a063f
experimental crypto: fixed for gcc 2021-03-04 12:09:56 +03:00
sowle
5eef9e5bc7
experimental crypto: added test crypto_primitives 2021-03-02 00:49:17 +03:00
sowle
1f8253e1b5
experimental crypto: scalar_t conversion to/from boost::mp::cpp_int, hash helpers added 2021-03-02 00:35:58 +03:00
sowle
e73fdea5e5
crypto: ge_double_scalarmult_base_vartime_p3, ge_scalarmult_vartime_p3, ge_scalarmult_vartime_p3_v2 added 2021-03-02 00:33:28 +03:00
cryptozoidberg
f05bd7a3fb
atomics: tests for altchain switching 2021-02-28 23:36:38 +01:00
cryptozoidberg
8fe41c8df2
htlc: added tests for double spend(redeem and then refund after) 2021-02-21 17:56:53 +01:00
cryptozoidberg
ef2f523bf1
fixed test for proper creating wrong tx(redeem after expiration) 2021-02-20 21:51:35 +01:00
cryptozoidberg
71708ca673
htlc: added test for validating before and after expiration conditions 2021-02-20 15:54:58 +01:00
cryptozoidberg
7f902f27c1
htlc: refund process fixed 2021-02-19 20:18:37 +01:00
cryptozoidberg
38f342b62c
extended test for refund validation(fails so far) 2021-02-17 00:40:24 +01:00
cryptozoidberg
367a786642
fixed last issues with redeem atomics, worked first time ever 2021-02-16 17:45:20 +01:00
sowle
40c52edf26
functional_tests: crypto_tests: tests wildcard filtering added 2021-02-15 15:48:50 +03:00
sowle
60973109e1
L2S: new optimized implementation (v3) 2021-02-15 15:44:11 +03:00
sowle
98a4325e5a
experimental crypto: point_t::mul_plus_G, hash helpers, test ring generators, crypto_hp test added 2021-02-15 15:43:13 +03:00
cryptozoidberg
d8f276b30b
multiple fixes over atomics 2021-02-15 02:17:59 +01:00
cryptozoidberg
06ca6e035d
implemented taking origin from redeemed tx 2021-02-14 00:28:39 +01:00
cryptozoidberg
82d0e335e6
added double spend protection in htlc(great that i've thought about it now), wallet loading optimization 2021-02-13 00:57:24 +01:00
sowle
6cdb515fde
experimental crypto: L2S signature v2 (basic optimizations) 2021-02-13 00:08:37 +03:00
sowle
b18be24334
experimental crypto: many improvements to scalar_t, point_t (mul_plus_G), hash_calculator 2021-02-12 23:45:50 +03:00
sowle
140a300421
crypto: ge_p2_to_p3 made public 2021-02-12 23:20:10 +03:00
cryptozoidberg
f2d79b53d6
added aliases support for --pos-mining-reward-address 2021-02-12 16:29:51 +01:00
cryptozoidberg
52c5c1250f
atomic: wallet improvements 2021-02-08 21:31:46 +01:00
cryptozoidberg
7b30823774
atomic: bugfixes 2021-02-06 23:46:53 +01:00
cryptozoidberg
b4a3a404b4
atomics: bugfixing 2021-02-06 00:02:48 +01:00
cryptozoidberg
e3ef3dc704
fixed chain_switching_when_out_spent_in_alt_chain_ref_id 2021-02-04 21:28:53 +01:00
sowle
9437ec3c67
experimental crypto: scalar_t and point_t improvements 2021-02-04 19:32:02 +03:00
cryptozoidberg
41ca8cff41
atomics: started to work on tests + light refactoring 2021-02-04 01:49:38 +01:00
sowle
a4028ea219
experimental crypto: ml2s_lnk_sig_gen implemented 2021-02-04 02:29:38 +03:00
cryptozoidberg
a7363cfcd3
Merge branch 'develop' into atomics 2021-02-03 18:38:45 +01:00
cryptozoidberg
447d11e02d
htlc: fixes here and there2 2021-02-03 18:37:57 +01:00
cryptozoidberg
d5c0e873ef
htlc: fixes here and there 2021-02-03 00:13:44 +01:00
cryptozoidberg
ae24efa5e3
first draft of wallet atomics workflow is done(no tests created yet) 2021-02-02 22:14:34 +01:00
cryptozoidberg
a31670f225
in the middle of prepare_tx_sources_htlc 2021-02-02 19:02:28 +01:00
sowle
f0219df1fb
Merge branch 'release' 2021-02-02 01:47:01 +03:00
cryptozoidberg
0b8e651ce2
redeem_htlc - in work 2021-01-31 23:07:06 +01:00
cryptozoidberg
cccb0e209f
multiple fixes over wallet 2021-01-31 19:42:02 +01:00
cryptozoidberg
dc3f5882ef
receiving list of htlc 2021-01-31 18:05:26 +01:00
sowle
fa7355c0a2
Merge branch 'release' into develop 2021-01-29 19:59:13 +03:00
zano build machine
7138dd3ec3 === build number: 114 -> 115 === 2021-01-29 19:57:15 +03:00
sowle
f0ae13cf60
=== version bump: 1.1.7 -> 1.1.8 === 2021-01-29 19:55:37 +03:00
sowle
9e99d10db3
gui: Indonesian language added 2021-01-29 19:54:08 +03:00
sowle
1a2e4ea4ca
predownload links updated 2021-01-29 05:32:30 +03:00
sowle
9d02a05c71
checkpoint added: at 900000 for mainnet and at 700000 for testnet 2021-01-28 14:59:43 +03:00
sowle
02fb693905
checkpoint added: at 900000 for mainnet and at 700000 for testnet 2021-01-28 14:59:14 +03:00
sowle
55cae9d956
Merge branch 'release' into develop 2021-01-28 14:56:08 +03:00
sowle
8a03f8e4b3
gcc compilation fixed 2021-01-28 14:53:04 +03:00
cryptozoidberg
66387d2bd5
htlc: implemented tracking of active htlc, creating transactio with htlc 2021-01-27 22:49:15 +01:00
sowle
dd679a1117
experimental crypto: Hp and Hs calculator impelemented 2021-01-26 23:21:44 +03:00
sowle
dd095f205c
experimental crypto: ml2s_lnk_sig_verif implemented completely 2021-01-26 23:19:26 +03:00
sowle
5843f6964c
crypto: fe_isnonzero made public, point_t::is_zero() added 2021-01-26 23:14:46 +03:00
cryptozoidberg
fca90b0146
implemented tracking of htlc in wallet(creation is not implemented yet) 2021-01-24 21:00:43 +01:00
cryptozoidberg
e823dab69f
fixed compilation 2021-01-20 23:48:42 +01:00
cryptozoidberg
79040fa9b3
validate_alt_block_input deep refactoring related to htlc 2021-01-20 23:16:28 +01:00
cryptozoidberg
16f37ed4c2
merge from develop 2021-01-18 22:00:36 +01:00
sowle
8063604b37
crypto-ops: ge_p2_to_p3 implemented 2021-01-14 23:45:47 +03:00
sowle
3c3f7ee7b6
experimental crypto: point and scalar test helpers, exception-safe tests running 2021-01-13 10:57:47 +03:00
sowle
a2fac71ab8
experimental crypto: L2S wip and hash helper + test 2021-01-12 23:56:53 +03:00
sowle
7f5e519277
experimental crypto: scalar_t & point_t improvements 2021-01-11 23:56:43 +03:00
sowle
515a089a46
experimental crypto: sha3 added 2021-01-10 23:08:45 +03:00
sowle
46d9895801
crypto: ge_bytes_hash_to_ec() added 2021-01-09 17:48:57 +03:00
sowle
a98317cd52
coretests: chain_switching_when_out_spent_in_alt_chain_mixin and chain_switching_when_out_spent_in_alt_chain_ref_id tests improved 2021-01-08 23:54:01 +03:00
sowle
e625539758
coretests: construct_tx_with_many_outputs made familiar with ref_by_id 2021-01-08 23:52:46 +03:00
cryptozoidberg
29e291bcc1
htlc in work: altblock tx handling refactoring in work 2021-01-08 01:25:15 +01:00
sowle
00976d5f65
coretests: chain_switching_when_out_spent_in_alt_chain_ref_id test added 2021-01-08 02:24:43 +03:00
sowle
7cc220c8bd
coretests: count_ref_by_id_and_gindex_refs_for_tx_inputs added 2021-01-08 02:22:29 +03:00
sowle
bf9195db58
validate_alt_block_input fixed rare bug for cases g3-g5 when an output is spent in the next block 2021-01-07 19:40:55 +03:00
sowle
920d104e1b
validate_alt_block_input fixed for cases g3-g5 with mixins 2021-01-07 19:39:13 +03:00
sowle
0801a9db16
coretests: chain_switching_when_out_spent_in_alt_chain_mixin added, exposes a bug 2021-01-07 18:21:52 +03:00
cryptozoidberg
902d4ffd43
fixed scan_outputkeys_for_indexes overload 2021-01-07 15:04:45 +01:00
cryptozoidberg
0bb579769c
htlc in work: refactoring of txin_htlc structure, work on altchain handling witb htlc 2021-01-06 23:16:49 +01:00
cryptozoidberg
93aacf3bec
htlc in work: orderliness between htlc and to_key entities 2021-01-06 05:15:01 +01:00
cryptozoidberg
b2a7423ab4
htlc in work: scanning for outputs and validation agains internal errors 2021-01-06 00:10:54 +01:00
cryptozoidberg
3c51c95941
massive fixes over htlc, sha256/RIPEMD160 basic test(passing) 2021-01-04 22:41:16 +01:00
cryptozoidberg
faa8f69cf3
added sha256 and RIPEMD160 sources 2020-12-30 23:58:03 +01:00
sowle
add0f39302
crypto: L2S protocol introduced (WIP) 2020-12-30 13:13:00 +03:00
cryptozoidberg
4ee72ef7ac
implemnting htlc inputs/outputs handling in core(work in progress) 2020-12-29 23:42:37 +01:00
cryptozoidberg
6bee7541d6
very first draft for transaction in/outs for atomics 2020-12-28 23:45:16 +01:00
sowle
cb18279d57
gcc compilation fixed 2020-12-26 03:32:49 +03:00
sowle
c82aacd437
experimental crypto: sc_invert2, performance comparison, point_G arithmetic fixed 2020-12-25 23:33:01 +03:00
sowle
0a7b856d09
crypto: good fast sc_invert moved to crypto-ops 2020-12-24 17:38:40 +03:00
sowle
25b1eed3da
experimental crypto: arithmetics assignment operators added to scalar_t, more tests, profiling 2020-12-24 01:46:04 +03:00
sowle
f70f58ffc3
crypto: libsodium license added, faster sc_mul implementation 2020-12-24 01:43:22 +03:00
sowle
f05f533a0c
experimental crypto: tests moved to functional_tests, few tests added, gtest-like infrastructure added 2020-12-23 01:40:02 +03:00
sowle
a16067ac64
crypto: sc_mul added (naive implementation, need to be rewritten) 2020-12-23 01:25:38 +03:00
cryptozoidberg
9711a555a7
Merge branch 'release' 2020-12-18 17:00:10 +01:00
zano build machine
86b0b354ee === build number: 113 -> 114 === 2020-12-16 00:55:27 +03:00
cryptozoidberg
5337bdc69e
Merge branch 'develop' into release 2020-12-15 22:53:53 +01:00
cryptozoidberg
2768732e23
Fixed tracking seed restoring bug 2020-12-15 22:53:28 +01:00
sowle
20dd1cafc3
crypto helpers improved, sc_exp and sc_invert implemented (using Fermat little theorem) 2020-12-15 23:57:17 +03:00
sowle
754c4b1fa9
crypto helpers + unit tests (WIP) 2020-12-14 21:37:18 +03:00
sowle
0816fe57bb
crypto: 1) ge_p3_0, ge_sub, fe_sq, fe_mul, fe_frombytes, fe_invert made available from outside 2) fe_tobytes implemented 2020-12-14 18:41:49 +03:00
zano build machine
082cf5feb8 === build number: 112 -> 113 === 2020-12-09 23:43:55 +03:00
cryptozoidberg
8104bdff9a
Merge branch 'develop' into release 2020-12-09 21:37:12 +01:00
cryptozoidberg
2440cbb055
merge from ui_develop 2020-12-09 21:36:45 +01:00
cryptozoidberg
0a22f94030
fixed seed info validation 2020-12-09 21:33:14 +01:00
Nazar
7b4a6fa90a
Status setting wallet fix (#265)
* Status setting wallet (#1)

* add disabled btn setting_wallet

* add build html

* fix update status wallet

* add context copy seed_phrase

* fix bug

* fix wallet status

* update

* Create wallet

* fix wallet login and add seed block in create wallet
2020-12-09 21:32:46 +01:00
cryptozoidberg
9b5b61d2df
Merge branch 'develop' into release 2020-12-09 21:31:48 +01:00
cryptozoidberg
c3ae455027
Merge branch 'develop_mobile' into develop 2020-12-09 16:33:47 +01:00
cryptozoidberg
1da1e21aed
got rid of unused keys in UI 2020-12-06 21:44:52 +01:00
cryptozoidberg
1d1014d2f9
Merge branch 'develop' into develop_mobile 2020-12-04 22:06:47 +01:00
cryptozoidberg
2b552386ca
Merge branch 'release' into develop 2020-12-04 22:06:26 +01:00
cryptozoidberg
1d09ac8c67
Merge branch 'develop_mobile' into develop 2020-12-04 22:05:47 +01:00
cryptozoidberg
c810f1f9fb
added method get_seed_phrase_info to sync_call function 2020-12-04 22:04:57 +01:00
cryptozoidberg
55f3b9e185
refactoring plain api: added sync_call method 2020-12-04 21:34:08 +01:00
cryptozoidberg
741db51007
Merge branch 'develop' into develop_mobile 2020-12-04 19:29:41 +01:00
cryptozoidberg
4a79757978
deleted unused code 2020-12-04 19:28:30 +01:00
cryptozoidberg
1fabcee504
fixed minor errors 2020-12-03 22:15:27 +01:00
cryptozoidberg
095d0e24fb
Merge branch 'ui_develop' into develop 2020-12-03 21:16:21 +01:00
cryptozoidberg
52199f1c79
fixed seed info validation 2020-12-03 21:15:55 +01:00
Nazar
1e0d085727
fix update status wallet (#259)
* add disabled btn setting_wallet

* add build html

* fix update status wallet
2020-12-03 21:15:01 +01:00
cryptozoidberg
3d831930f6
Merge branch 'ui_develop' into develop 2020-12-03 18:14:58 +01:00
Nazar
e02c269c17
Add build html (#258)
* add disabled btn setting_wallet

* add build html
2020-12-03 18:14:11 +01:00
cryptozoidberg
dc8d8f22b7
Merge branch 'ui_develop' into develop 2020-12-03 16:48:44 +01:00
Nazar
bbd4cd5e04
add disabled btn setting_wallet (#257) 2020-12-03 16:45:11 +01:00
cryptozoidberg
20364a41e6
merged conflict in UI 2020-12-02 14:32:05 +01:00
Nazar
d54c4f6237
update restore-wallet (#255)
* update restore wallet

* update restore wallet
2020-12-02 14:29:17 +01:00
cryptozoidberg
45ca69d21a
getting less dramatic if seed password is wrong 2020-12-01 20:16:50 +01:00
cryptozoidberg
260b07154f
fixed errors on get_seed_phrase_info 2020-12-01 20:16:50 +01:00
Nazar
ddb8517d2e
all three tasks have been completed (#253)
* all three tasks have been completed

* created copy seed phrase
2020-12-01 20:16:50 +01:00
cryptozoidberg
b93993c32f
getting less dramatic if seed password is wrong 2020-12-01 20:05:21 +01:00
cryptozoidberg
cc08086cac
fixed errors on get_seed_phrase_info 2020-12-01 19:28:41 +01:00
cryptozoidberg
60d6c44fb9
Merge branch 'develop' into ui_develop 2020-12-01 18:01:13 +01:00
sowle
5ce299e23c
coretests fixed 2020-12-01 12:49:39 +03:00
Nazar
1d7bd3bda7
all three tasks have been completed (#253)
* all three tasks have been completed

* created copy seed phrase
2020-11-30 22:03:25 +01:00
cryptozoidberg
982543da42
fixed bug in getwallet_restore_info 2020-11-27 17:18:35 +01:00
cryptozoidberg
db2c183b47
Merge branch 'develop_mobile' into develop 2020-11-25 22:11:33 +01:00
cryptozoidberg
2d8adf2734
extended secure seed api for mobile wallet 2020-11-25 22:11:02 +01:00
cryptozoidberg
a7d2fcde36
Merge branch 'develop' into develop_mobile 2020-11-25 18:48:56 +01:00
cryptozoidberg
7faef885dd
Merge branch 'secure_seed' into develop 2020-11-25 18:48:13 +01:00
cryptozoidberg
ca46baf24a
secure seed api extended 2020-11-24 20:01:46 +01:00
cryptozoidberg
9ff78d1351
implemented proper validation of seed phrase in simplewallet 2020-11-21 23:05:09 +01:00
cryptozoidberg
491d98cb6d
fixed minor bugs(thanks to Sowle for review) 2020-11-21 14:28:21 +01:00
cryptozoidberg
5889b84acd
unit tests expended to cover secure seed cases 2020-11-20 16:40:54 +01:00
cryptozoidberg
03cb013695
Seed password implementation: in work 2020-11-20 00:37:48 +01:00
cryptozoidberg
b47e385279
simplewallet secure seed promt implemented 2020-11-18 23:05:58 +01:00
cryptozoidberg
6349ed8341
fixed seed loading functions, fixed unit_tests 2020-11-18 21:20:08 +01:00
cryptozoidberg
e59178916b
fixed wrong type conversion 2020-11-18 00:23:57 +01:00
cryptozoidberg
20631c5805
secure seed: basic support implementation(in work) 2020-11-17 01:30:51 +01:00
cryptozoidberg
04ba1f64f4
Merge branch 'release' 2020-11-12 23:37:09 +03:00
zano build machine
f099ca9f98 === build number: 111 -> 112 === 2020-11-11 21:35:24 +03:00
cryptozoidberg
cdda604cf1
Merge branch 'ui_develop' into release 2020-11-11 21:32:50 +03:00
cryptozoidberg
d2899efbf1
Merge branch 'ui_develop' into develop 2020-11-11 21:32:16 +03:00
Kirill
8197265da1
fixed shaking side menu (#250) 2020-11-11 19:27:45 +01:00
zano build machine
0a0bd51ffd === build number: 110 -> 111 === 2020-11-10 19:26:33 +03:00
cryptozoidberg
28b3250b04
Merge branch 'develop' into release 2020-11-10 19:16:51 +03:00
cryptozoidberg
a67b5dbe48
Merge branch 'ui_develop' into develop 2020-11-10 19:15:41 +03:00
Kirill
a803c70c34
Ui develop (#243)
* added send icon as pseudo element

* fix pagination on mining toggle

* fix pagination on mining toggle

* fix pagination on mining toggle offset form 0

* fix pagination on change wallet

* disable pagination on wallet sync
fix blinked content after rerun command by callback

* files

* fix stuck modal window when lose or bed internet connection

* correct working pagination with hide transactions
2020-11-10 17:09:35 +01:00
zano build machine
39d17ddb86 === build number: 109 -> 110 === 2020-11-01 23:30:54 +03:00
cryptozoidberg
d965912ef6
cleaned up logs for search wallet function 2020-10-31 00:12:55 +02:00
cryptozoidberg
b591a4c0d3
added command for searching lost wallets over the hard drive 2020-10-30 13:56:34 +02:00
cryptozoidberg
04f35e8059
Merge branch 'release' into develop 2020-10-19 21:50:51 +03:00
cryptozoidberg
3a88665efb
Merged from develop and fixed conflicts 2020-10-19 21:50:30 +03:00
cryptozoidberg
d14e778d44
Merge branch 'ui_develop' into develop 2020-10-19 21:47:12 +03:00
Kirill
543c110ed9
Ui develop (#234)
* added send icon as pseudo element

* fix pagination on mining toggle

* fix pagination on mining toggle

* fix pagination on mining toggle offset form 0
2020-10-19 20:45:57 +02:00
Kirill
b508c40313
Ui develop (#232) 2020-10-19 09:57:54 +02:00
zano build machine
28ce614443 === build number: 108 -> 109 === 2020-10-17 23:38:57 +03:00
cryptozoidberg
17d556fd03
added html missing files 2020-10-17 23:37:38 +03:00
cryptozoidberg
3d4c26e6ed
updated html precompiled version 2020-10-17 23:37:38 +03:00
cryptozoidberg
7d8fb36488
Merge branch 'ui_develop' into develop 2020-10-17 23:37:00 +03:00
cryptozoidberg
5099bc99e6
added html missing files 2020-10-17 23:36:20 +03:00
cryptozoidberg
900ae720de
updated html precompiled version 2020-10-17 23:35:38 +03:00
zano build machine
e7bea018ff === build number: 107 -> 108 === 2020-10-17 20:10:56 +03:00
cryptozoidberg
023ffb7a26
Merge branch 'develop' into release 2020-10-17 20:09:34 +03:00
cryptozoidberg
5a68ca81ad
Merge branch 'ui_develop' into develop 2020-10-17 20:08:53 +03:00
cryptozoidberg
c7aa656b3e
fixed dummy func 2020-10-17 20:08:00 +03:00
Kirill
429a7d8929
Ui fix icons in compiled html (#231)
* on error CORE_BUSY repeat command after 50 ms

* icons
2020-10-17 18:38:59 +02:00
cryptozoidberg
80672a783b
added dummy method for CORE_BUSY situation modelling 2020-10-16 14:09:31 +03:00
zano build machine
a05848ccad === build number: 106 -> 107 === 2020-10-13 09:56:55 +03:00
cryptozoidberg
3d1c4c691e
Merge branch 'develop' into release 2020-10-13 09:55:25 +03:00
cryptozoidberg
cbfc172d7c
Merge branch 'ui_develop' into develop 2020-10-13 09:53:57 +03:00
Kirill
93d7fc6dbc
Ui fix disappear close wallet icon (#228)
* fixed icon disappear on retina screens

* added error case FAILED and throw it to console with message:
Error: (${error}) was triggered by command: ${command}`

* pagination for hide mining transactions

* files

* close wallet icon
2020-10-13 08:51:37 +02:00
zano build machine
f4cb5488a6 === build number: 105 -> 106 === 2020-10-12 16:31:59 +03:00
cryptozoidberg
bb525d3f7b
Merge branch 'develop' into release 2020-10-12 16:29:10 +03:00
cryptozoidberg
79aeba7d34
Merge branch 'develop_mobile' into develop 2020-10-12 16:28:32 +03:00
cryptozoidberg
524bc7f7fc
Merge branch 'develop' into develop_mobile 2020-10-12 16:27:55 +03:00
cryptozoidberg
e63b10df12
Merge branch 'master' into develop 2020-10-12 16:26:43 +03:00
cryptozoidberg
97ffe61e71
Merge branch 'ui_develop' into develop 2020-10-12 16:26:00 +03:00
Kirill
2693c5a4ba
Ui pagination hide mining (#227)
* fixed icon disappear on retina screens

* added error case FAILED and throw it to console with message:
Error: (${error}) was triggered by command: ${command}`

* pagination for hide mining transactions

* files
2020-10-12 15:12:47 +02:00
Kirill
c3bd7e1d1d
fixed icon disappear on retina screens (#226) 2020-10-10 13:10:21 +02:00
Kirill
a47e92d117
Ui fix message failed (#225)
* fixed icon disappear on retina screens

* added error case FAILED and throw it to console with message:
Error: (${error}) was triggered by command: ${command}`
2020-10-10 13:09:48 +02:00
ArqTras
6154e2fadd
Update pre_download.h (#218)
Typo
2020-10-09 15:12:15 +02:00
arthurest
06ce740345
fixed transaction sync issue (#223) 2020-10-03 13:32:00 +02:00
sowle
2613423d19
coretests: wallet_watch_only_and_chain_switch test added 2020-10-02 16:31:31 +03:00
sowle
6a18d031ae
fixed minor bug in wallet2::assign_account() + more getters for account_base 2020-10-02 16:19:08 +03:00
arthurest
7e972a4321
fixed transaction sync issue (#221) 2020-10-02 13:06:22 +02:00
cryptozoidberg
9c92f7edb5
Merge branch 'develop' into ui_develop 2020-10-02 13:26:40 +03:00
cr.zoidberg
f6408a0580 workaround for new XCode 12 policy for simulator builds 2020-10-02 00:14:04 +03:00
cr.zoidberg
e65d2ab333 Merge branch 'develop' into develop_mobile 2020-10-01 17:16:33 +03:00
zano build machine
8b242b149c === build number: 104 -> 105 === 2020-10-01 16:23:31 +03:00
cryptozoidberg
9bf85dfed5
fixed detach_blockchain for watchonly wallet 2020-09-29 23:42:09 +03:00
sowle
4432ecbe08
gui: more careful logging 2020-09-26 16:19:36 +03:00
sowle
11850a1e05
gui: fixed a transactions' incorrect pagination when a wallet mines PoS and sends rewards to another address 2020-09-25 17:47:37 +03:00
sowle
6f7d07d282
wallets_manager: set wallet state to ready (instead of 0 "undefined") upon generation (fix for #219) 2020-09-22 17:18:53 +03:00
sowle
a6cf555879
cmake: require version 3.16 if PCH is enabled for Linux build 2020-09-21 14:40:17 +03:00
sowle
0186d4619b
fix "git describe" parsing regexp (issue with wrong commit id in build numbers) 2020-09-21 14:39:21 +03:00
sowle
9f964860f3
=== build number: 103 -> 104 === 2020-09-19 15:51:02 +03:00
sowle
0b6c5ca53a
gui code improvements
1) all hardcoded URL links moved to constants.ts
2) gui now aware of mainnet/testnet
3) testnet build open up testnet block explorer
4) testnet build is marked with TESTNET note right after version
2020-09-19 06:01:38 +03:00
sowle
f2fa26f1d8
mainwindow: get_network_type() added to allow the GUI distinguish between mainnet and testnet 2020-09-19 05:56:21 +03:00
sowle
cb97ca9994
mainwindow: getting rid of unused code 2020-09-19 05:55:14 +03:00
sowle
a9025d3b33
Merge branch 'issue207' into develop 2020-09-18 19:45:49 +03:00
sowle
c317463537
wallet2: unused code removed 2020-09-18 15:41:19 +03:00
sowle
a813fa39f6
Merge branch 'master' into develop 2020-09-18 02:27:48 +03:00
sowle
f512f948a1
perf tests: minor fix in chacha_stream_performance_test 2020-09-18 02:26:05 +03:00
sowle
9babd5a54e
fixed an issue with gui wallet compilation when node_modules is present in the directory tree 2020-09-16 17:22:23 +03:00
sowle
37091efbe4
linux: Zano.sh improved to work from any location 2020-09-16 16:33:53 +03:00
sowle
7bb3993029
ng build 2020-09-11 17:43:40 +03:00
sowle
acda8f911b
Merge branch 'ui_develop' into issue207 2020-09-11 14:24:24 +03:00
ArqTras
8eff816e06
Update .gitmodules (#217)
Fix clone on msys
2020-09-10 13:15:38 +02:00
cryptozoidberg
a7c0905835
Merge branch 'release' 2020-09-09 20:53:41 +02:00
arthurest
0a78a09283
Develop (#216)
* fixed issue when user at first typing '.' in field amount

* show amount value in modal without 0

* changed wallet colors style

* Implement master password confirmation

* Small GUI bugs-> added translate for scale

* Unexpected screen after clicking 'go back'

* #154->Make alias registration error messages more informative

* added Wallet Status on Lock-Screen

* cleaned unused code

* changed ! to i in sidebar

* fixed ng build --prod issue

* 139 -> Search in History tab

* restored wallet text after not right merge

* hide for Tracking wallet 'send' and 'contracts' tabs

* 163-> GUI: tx history pagination is not working sometimes
2020-09-09 20:29:14 +02:00
cryptozoidberg
c20712802d
disabled signing due to certificate expiration
disabled signing due to certificate expiration(temporary)
2020-09-09 19:44:23 +02:00
cryptozoidberg
1c78e4c2c6
Merge branch 'develop' into ui_develop 2020-09-09 13:17:18 +02:00
cryptozoidberg
07830d7988
Merge branch 'release' into develop 2020-09-09 13:16:43 +02:00
cryptozoidberg
bc68026e30
added missing field to serialization map 2020-09-09 13:15:46 +02:00
zano build machine
f50501eaab === build number: 102 -> 103 === 2020-09-08 23:07:10 +03:00
zano build machine
9eb4fe9228 === build number: 101 -> 102 === 2020-09-08 23:06:45 +03:00
sowle
a2c617807e
Merge branch 'develop' into ui_develop 2020-09-08 21:44:21 +03:00
sowle
ef36998126
build scripts: testnet var fixed 2020-09-08 21:39:01 +03:00
cryptozoidberg
125a7be3c5
Fixed build for macos 2020-09-08 17:07:24 +02:00
cryptozoidberg
a239f62a99
Merge from develop 2020-09-08 13:13:43 +02:00
arthurest
c330b2bf39
Develop (#215)
* fixed issue when user at first typing '.' in field amount

* show amount value in modal without 0

* changed wallet colors style

* fixed few issues with attachment encryption

* added extra conditions on extra fields update in wallet

* has_field_of_type_in_extra() -> have_type_in_variant_container()

* implemented exclude_staking_txs filter

* Implement master password confirmation

* Small GUI bugs-> added translate for scale

* Unexpected screen after clicking 'go back'

* #154->Make alias registration error messages more informative

* added Wallet Status on Lock-Screen

* cleaned unused code

* changed ! to i in sidebar

* fixed ng build --prod issue

* 139 -> Search in History tab

* restored wallet text after not right merge

* hide for Tracking wallet 'send' and 'contracts' tabs

Co-authored-by: cryptozoidberg <crypto.zoidberg@gmail.com>
Co-authored-by: sowle <crypto.sowle@gmail.com>
2020-09-08 13:03:15 +02:00
cryptozoidberg
af308765d9
Merge from master 2020-09-07 21:03:47 +02:00
cryptozoidberg
3678ba2154
fixed connectivity for simplewallet in srv mode 2020-09-07 20:59:44 +02:00
sowle
e52412facb
wallet: fix for outgoing unconfirmed txs handling in tracking wallets 2020-09-07 17:35:23 +02:00
sowle
9067e09e22
wallet: fix for outgoing unconfirmed txs handling in tracking wallets 2020-09-07 17:36:41 +03:00
Sergey Radionov
4ba14a2d4f
snap: fixed run on strict confinement (#213) 2020-09-05 22:23:02 +02:00
Sergey Radionov
349709298d
snap: fixed run on strict confinement (#213) 2020-09-05 22:13:03 +02:00
Sergey Radionov
f24e271119
Some minor issues are fixed (#212)
* It's just waste of resources to use temp variable to call static members

also, according to docs, QString::fromStdString already take care about utf8 conversion,
so there is no need to do std::string -> C string -> QString conversion.

* Don't try use tray actions if tray is not available.

It just leads to the crash.
2020-09-05 17:29:41 +02:00
sowle
f878fd897a
Merge branch 'ui_develop' into issue207 2020-09-05 16:55:21 +03:00
arthurest
3de757e634
Develop (#209)
* fixed issue when user at first typing '.' in field amount

* show amount value in modal without 0

* changed wallet colors style

* fixed few issues with attachment encryption

* added extra conditions on extra fields update in wallet

* has_field_of_type_in_extra() -> have_type_in_variant_container()

* implemented exclude_staking_txs filter

* Implement master password confirmation

* Small GUI bugs-> added translate for scale

* Unexpected screen after clicking 'go back'

* #154->Make alias registration error messages more informative

* added Wallet Status on Lock-Screen

* cleaned unused code

* changed ! to i in sidebar

* fixed ng build --prod issue

Co-authored-by: cryptozoidberg <crypto.zoidberg@gmail.com>
Co-authored-by: sowle <crypto.sowle@gmail.com>
2020-09-05 13:56:45 +02:00
zano build machine
ab12f56ab4 === build number: 100 -> 101 === 2020-09-04 23:31:47 +03:00
cryptozoidberg
e01e59df24
disabled tray notifications while wallet sync 2020-09-04 22:26:03 +02:00
cryptozoidberg
1028751ee6
grade -> stable 2020-09-04 14:03:56 +02:00
cryptozoidberg
038348ac77
Changed devmode to strict 2020-09-04 12:32:21 +02:00
cryptozoidberg
211c1b4838
fixing i386 build 2020-09-03 23:20:25 +02:00
sowle
884c9584d5
#207 has been partially fixed 2020-09-03 19:32:10 +03:00
Sergey Radionov
dc961928d9
initial snap support added (#210) 2020-09-03 17:01:15 +02:00
Sergey Radionov
8b8bbf3247
initial snap support added (#210) 2020-09-03 14:27:00 +02:00
zano build machine
e2a7d6a4fc === build number: 99 -> 100 === 2020-09-02 18:29:42 +03:00
cryptozoidberg
0baa6c6df3
let's pretend this never happened 2020-09-02 17:28:55 +02:00
cryptozoidberg
baaf1c06ec
let's pretend this never happened 2020-09-02 17:28:19 +02:00
zano build machine
7ba0880eda === build number: 98 -> 99 === 2020-09-02 01:31:24 +03:00
arthurest
21665f897d
Develop (#208)
* fixed issue when user at first typing '.' in field amount

* show amount value in modal without 0

* changed wallet colors style

* fixed few issues with attachment encryption

* added extra conditions on extra fields update in wallet

* has_field_of_type_in_extra() -> have_type_in_variant_container()

* implemented exclude_staking_txs filter

* Implement master password confirmation

* Small GUI bugs-> added translate for scale

* Unexpected screen after clicking 'go back'

Co-authored-by: cryptozoidberg <crypto.zoidberg@gmail.com>
Co-authored-by: sowle <crypto.sowle@gmail.com>
2020-09-02 00:02:17 +02:00
cryptozoidberg
820e63f098
fixed simplewallet.cpp 2020-09-01 23:31:00 +02:00
cryptozoidberg
3dce5fd078
fixed simplewallet.cpp 2020-09-01 23:30:18 +02:00
zano build machine
37d835b7c3 === build number: 97 -> 98 === 2020-09-01 23:33:30 +03:00
zano build machine
dffe5da801 test commit 2020-09-01 23:00:19 +03:00
cryptozoidberg
b7a2623e76
Merge branch 'develop' into release 2020-09-01 20:43:51 +02:00
cryptozoidberg
3b3dbd6fa2
fixed core tests 2020-09-01 18:48:10 +02:00
cryptozoidberg
578356b104
Merge branch 'flags' into develop 2020-09-01 16:08:23 +02:00
cryptozoidberg
d803771b52
Merge branch 'develop' into flags 2020-09-01 16:07:58 +02:00
cryptozoidberg
aea993f36b
implemented exclude_staking_txs filter 2020-09-01 00:26:46 +02:00
sowle
bd894a0119
has_field_of_type_in_extra() -> have_type_in_variant_container() 2020-08-31 20:03:49 +03:00
cryptozoidberg
2dd0848b0a
added extra conditions on extra fields update in wallet 2020-08-31 18:23:41 +02:00
sowle
b02fc0b5d8
wallet: all free space checks removed completely 2020-08-31 16:37:05 +03:00
sowle
3755f0da18
wallet: --disable-wallet-free-space-check added for simplewallet and Zano 2020-08-31 15:40:37 +03:00
cryptozoidberg
13accb65ad
fixed few issues with attachment encryption 2020-08-29 01:14:26 +02:00
cryptozoidberg
01dc176ff4
Merge branch 'develop_mobile' into develop 2020-08-28 11:45:26 +02:00
cr.zoidberg
647b8887f1 Merge branch 'develop_mobile' of github.com:hyle-team/zano into develop_mobile 2020-08-27 15:11:32 +02:00
cryptozoidberg
f4ff304bde
simplewallet speed opt + more logs 2020-08-27 15:10:03 +02:00
cryptozoidberg
cb751f61c3
Merge branch 'develop' into develop_mobile 2020-08-25 13:45:35 +02:00
cryptozoidberg
af0d65af74
enabled auditable wallets on mobile 2020-08-25 13:45:05 +02:00
cryptozoidberg
d17571b972
Merge branch 'develop' into develop_mobile 2020-08-25 00:07:25 +02:00
sowle
967586a2a8
munin: poolstate_data_file_size changed to reflect LMDB/MDBX options 2020-08-24 17:52:14 +03:00
sowle
980621ad72
munin link script fixed 2020-08-24 17:46:04 +03:00
sowle
6a5b1f5137
munin: blockchain_data_file_size changed to reflect LMDB/MDBX options + link script added 2020-08-24 17:39:03 +03:00
sowle
55c9252aba
fix permission for sequence_factor munin plugin 2020-08-21 18:10:04 +03:00
sowle
959c173800
unit tests fixed 2020-08-21 15:07:16 +03:00
sowle
66f212715b
coretests: gcc crazy linking fixed once again 2020-08-20 20:09:19 +03:00
sowle
179b41cabb
fixed multi-line comment warnings 2020-08-20 17:05:03 +03:00
cryptozoidberg
77c7e9b0ce
Disabled developers context menu 2020-08-19 21:07:09 +02:00
sowle
a4994a87ef
gcc compilation fixed 2020-08-19 18:35:16 +03:00
cryptozoidberg
5a0cfe1b4a
chacha stream integrated into load/store functions 2020-08-18 21:54:25 +02:00
cryptozoidberg
a4b31c081c
implemented chachastream performance tests(results are pretty good: only 2% slowdown of load/save operations on wallet) 2020-08-18 21:54:25 +02:00
cryptozoidberg
579e4826ed
modifications for chacha stream test 2020-08-18 21:54:24 +02:00
cryptozoidberg
947af8c22b
cleaned up tests, fixed bug with not croped buff on flush 2020-08-18 21:54:24 +02:00
cryptozoidberg
67d2d7f200
implemented right version of stream filter for input 2020-08-18 21:54:24 +02:00
cryptozoidberg
88c76ea4e1
encryption sink transformed to out stream and in stream 2020-08-18 21:54:23 +02:00
cryptozoidberg
79777feda2
converted sink to filter 2020-08-18 21:54:23 +02:00
cryptozoidberg
e4aef3f036
Implemented encryption stream 'sink' 2020-08-18 21:54:23 +02:00
sowle
5e5e9f56ff
simplewallet: fixed mysterious no-log-file issue 2020-08-13 15:23:39 +03:00
sowle
adc1efbbd9
attempt to fix #203 2020-08-11 15:00:28 +03:00
sowle
ff92b079ca
wallet: log improved in rpc mode 2020-08-09 01:30:34 +03:00
sowle
4c46efc9c8
gui: NOT_ENOUGH_OUTPUTS_FOR_MIXING is supported in front-end 2020-08-09 01:28:01 +03:00
sowle
e1cd7e10d8
find_key_image improved 2020-08-08 15:12:21 +03:00
sowle
0fd94437b1
wallet: properly handle not_enough_money and not_enough_outs_to_mix in wallets_manager 2020-08-08 15:10:30 +03:00
sowle
a290c96eb4
enabled PCH for macOS as well (gives small build time improvment) 2020-08-07 17:33:38 +03:00
sowle
80a8a7ceb6
fix for issue #199 2020-08-07 17:30:12 +03:00
sowle
60f7d2c3d5
auditable wallets are not supported in mobile, not in desktop 2020-08-05 17:53:00 +03:00
sowle
5ae4f5079f
precompiled header redesign: keeping old for MSVC + adding CMake-enabled for gcc 2020-08-04 19:45:41 +03:00
sowle
309c2391db
fix gcc 5.4.0 warning 2020-08-04 15:09:08 +03:00
sowle
bd5a9cd014
=== build number: 96 -> 97 === 2020-07-29 13:30:14 +03:00
sowle
0a71fcc89c
Merge branch 'master' into develop 2020-07-29 13:28:13 +03:00
sowle
1e1fd8fda6
Merge branch 'release' 2020-07-28 02:10:19 +03:00
sowle
47c50ac007
=== build number: 95 -> 96 === 2020-07-22 20:18:53 +03:00
sowle
beb56a10bb
testnet: new checkpoint and predownload files 2020-07-22 20:09:47 +03:00
sowle
68ffae815a
simplewallet: print a tracking seed when auditable wallet is created 2020-07-22 20:08:04 +03:00
sowle
3e463b065c
simplewallet improvements in tracking wallets area 2020-07-22 16:14:17 +03:00
sowle
399c09871f
simplewallet: bring pulling error up to the user on refresh 2020-07-22 14:09:55 +03:00
cryptozoidberg
0b3279a4ec
Merge branch 'release' into develop 2020-07-22 01:43:54 +02:00
cryptozoidberg
28f8f86860
fixed bug with wrong handling coinbase for auditable wallets 2020-07-22 01:43:19 +02:00
sowle
fc1e5dfe31
gui: "Auditable Watch-Only" -> "Tracking" 2020-07-21 22:32:44 +03:00
sowle
b01efe5882
rpc: fix for call_COMMAND_RPC_GET_BLOCKS_DIRECT passing parameter 2020-07-21 22:23:25 +03:00
sowle
4afcf646c5
simplewallet: don't hide txs when wallet if refreshing after being restored 2020-07-21 21:45:07 +03:00
sowle
477f1dea73
fixed unsigned tx blob returning on "transfer" for WO-wallets (cold-signing) 2020-07-21 14:34:54 +03:00
sowle
50abfc82aa
wallet rpc: check for fee correctness on "transfer" call prior to tx creation 2020-07-21 14:32:56 +03:00
sowle
61d95846ae
wallet2: correct naming for unsigned_tx_blob in params 2020-07-20 13:05:25 +03:00
cryptozoidberg
b11b4f19b0
Merge branch 'wallet_busy_core' into develop 2020-07-17 20:20:29 +02:00
cryptozoidberg
540da93eae
Merge branch 'develop' into wallet_busy_core 2020-07-17 20:19:58 +02:00
cryptozoidberg
824e161fbb
disabled auditable wallets in moobile version(will be added in next releases) 2020-07-17 19:54:14 +02:00
sowle
cd5b3e1126
Merge branch 'release' into develop 2020-07-17 18:25:59 +03:00
sowle
be90189eb2
gui: change link to auditable wlts help page 2020-07-16 12:57:41 +03:00
cryptozoidberg
4f2681dd7f
disabled lto for android, since it disable ELF-2 2020-07-15 23:28:06 +02:00
cryptozoidberg
be53017d8a
disabled lto for android, since it disable ELF 2020-07-15 23:23:50 +02:00
cryptozoidberg
53ecfef369
added more logs and fixed sync progress 2020-07-15 18:15:11 +02:00
cryptozoidberg
e5694f51f2
fixed compilation issue 2020-07-15 01:06:28 +02:00
cryptozoidberg
2133762010
fix on the mobile wallet crash 2020-07-15 00:48:58 +02:00
arthurest
c525e4342a
GUI: changed wallet colors style
* fixed issue when user at first typing '.' in field amount

* show amount value in modal without 0

* changed wallet colors style
2020-07-14 16:43:48 +03:00
sowle
a892486410
Merge branch 'develop' into release 2020-07-14 12:39:50 +03:00
sowle
6fe7c49e4b
=== build number: 94 -> 95 === 2020-07-13 14:57:12 +03:00
sowle
b695cda21b
rebuild m_db_addr_to_alias container as well when migrating to DB v95 2020-07-13 14:54:32 +03:00
sowle
315a601081
simplewallet: restore auditable watch-only wallets the same way as normals, --restore-awo-wallet option removed 2020-07-13 14:51:39 +03:00
cryptozoidberg
5cd872fe64
fix of wrong behavior on core_busy response 2020-07-13 01:45:12 +02:00
cryptozoidberg
1110fb48eb
added extra info to logs 2020-07-11 20:00:15 +02:00
cryptozoidberg
1c92def934
implemented export of mobile app data 2020-07-11 18:42:59 +02:00
sowle
32f5881803
Merge branch 'develop' into release 2020-07-08 20:46:25 +03:00
sowle
0ce0d49641
=== build number: 93 -> 94 === 2020-07-08 20:14:24 +03:00
sowle
f4bc3a4160
unit_tests: fixed payment_id_sizes (2) 2020-07-08 20:13:38 +03:00
sowle
ce5e61a055
unit_tests: fixed unintialized variable in payment_id_sizes 2020-07-08 19:25:30 +03:00
sowle
ec833ec490
minor fixes 2020-07-08 18:19:09 +03:00
sowle
9ab4cb048e
wallet: contracts' boost serialization fixed 2020-07-08 18:02:32 +03:00
sowle
a77c4aa901
wallet: log improvements 2020-07-08 16:48:57 +03:00
sowle
1b9efbe9b7
unit_tests: db tests various fixes + close_contaier_test test added 2020-07-07 23:02:05 +03:00
sowle
6d7096af6e
getting rid of unused serialization func 2020-07-07 13:22:05 +03:00
sowle
8a3f3579c1
unit_test: all lmdb tests adapted for mdbx too 2020-07-07 13:19:27 +03:00
sowle
d5bb280a9a
Merge branch 'develop' into release 2020-07-06 17:25:27 +03:00
sowle
ff7dfff21c
=== build number: 92 -> 93 === 2020-07-06 17:24:42 +03:00
arthurest
4c908e5890
Small bug when sending zano without leading 0 for decimal part fixed #190
* fixed issue when user at first typing '.' in field amount

* show amount value in modal without 0
2020-07-06 17:21:59 +03:00
arthurest
5903cc36aa
GUI: fixed master passwork lock timer issue 2020-07-06 13:15:18 +03:00
cryptozoidberg
93407a038e
extra logging on VALIDATE_MUTEX_IS_FREE 2020-07-03 13:10:07 +02:00
sowle
07d9f2877e
Merge branch 'develop' into release 2020-07-03 02:04:49 +03:00
sowle
5f80d02458
=== build number: 91 -> 92 === 2020-07-03 02:01:21 +03:00
sowle
3520e17836
--stop-after-height implemented 2020-07-02 23:16:47 +03:00
sowle
cee1e58de8
added checkpoint for mainnet at 600000 2020-07-02 16:02:13 +03:00
sowle
cb09dc6f29
updated predownload links up to 600k block 2020-07-02 16:01:26 +03:00
sowle
a8e490e108
blockchain db migration implemented: 93,94->95 (aliases rebuild) 2020-07-02 14:06:33 +03:00
sowle
79dd5dab04
db: added close_container() to backend, call it at basic_key_value_accessor::deinit(), added "override" keyword 2020-07-02 14:05:00 +03:00
sowle
25f8dfbd54
Merge branch 'develop' into release 2020-06-30 02:46:01 +03:00
sowle
1586f53e85
unit_tests clean up 2020-06-30 00:46:38 +03:00
sowle
dc08169aee
clean things up (massive names correction) 2020-06-29 22:55:25 +03:00
sowle
0cd37daaff
Merge branch 'predevelop' into develop 2020-06-29 14:26:31 +03:00
sowle
f706872998
minor fixes 2020-06-29 14:17:58 +03:00
arthurest
e27fd1f680
GUI: made disable 'Hide your wallet address from recipient' checkbox, hide 'register an alias' for auditable wallets 2020-06-29 14:16:18 +03:00
arthurest
4fc6629e86
GUI: made disable 'Hide your wallet address from recipient' checkbox, hide 'register an alias' for auditable wallets 2020-06-29 13:53:00 +03:00
arthurest
209d9df676
GUI fixes: made disable 'Hide your wallet address from recipient' checkbox, hide 'register an alias' for auditable wallets 2020-06-29 13:31:19 +03:00
sowle
cd21628fb5
=== version bump: 1.1.6.90 -> 1.1.7.91 === 2020-06-26 15:55:24 +03:00
sowle
e283e36c06
Merge branch 'predevelop' into develop 2020-06-26 15:46:22 +03:00
sowle
f74d327848
gui: alias name field returned back to read-only state 2020-06-26 15:39:33 +03:00
sowle
578043559c
tx_memory_pool::validate_alias_info adapted to extra_alias_entry/extra_alias_entry_old scheme 2020-06-25 16:43:05 +03:00
sowle
8e2462a63c
prevalidate_alias_info minor fix 2020-06-25 15:52:47 +03:00
sowle
5301dd3139
coretests: hard_fork_2_alias_update improved and renamed to hard_fork_2_incorrect_alias_update (EXPOSES a bug) 2020-06-25 15:52:04 +03:00
sowle
a0b96f2f95
coretests: hard_fork_2_alias_update added (wip) 2020-06-24 19:55:15 +03:00
sowle
b8afe67237
fix coretests compilation 2020-06-24 19:27:19 +03:00
arthurest
6595462b39
js scripts fix for alias updating (#192)
* alias update name(not finished)

* after merge
2020-06-24 14:01:09 +03:00
arthurest
0a55d12b2e
autitable watch-only wallet recovering + changed 'Seed phrase / private key' to 'Seed phrase / tracking seed' (#191) 2020-06-24 12:54:00 +03:00
sowle
99857d5500
=== build number: 89 -> 90 === 2020-06-23 21:38:10 +03:00
sowle
547f7bf1c4
many minor log improvements for debugging 2020-06-23 21:36:30 +03:00
sowle
8e7a15af13
is_valid_brain_restore_data now supports awo blobs (aka tracking ID) 2020-06-23 21:34:32 +03:00
arthurest
c9592c752d
History tab: page is not selected by default, sent tx doesn't show up in the list
Fix for #184
2020-06-22 17:46:07 +03:00
sowle
04f799c102
build scripts: move to https://build.zano.org 2020-06-22 16:12:55 +03:00
arthurest
a4a66bb574
Enlarge QRCode
Fixes #180
2020-06-22 13:52:54 +03:00
sowle
2c54e15d50
auditable wallet tracking ID: attempt to simplify things and auto-determine restoration phrase type 2020-06-19 23:39:46 +03:00
arthurest
e4fe9f95c8
Implement auditable and auditable watch-only wallets highlightning in…
issue #175

* Implement auditable and auditable watch-only wallets highlightning in GUI
* changed highlightning style
* renamed goToZanoSite --> goToAuditableWalletHelpPage and ZANO_SITE --> AUDITABLE_WALLET_HELP_PAGE
2020-06-19 18:17:08 +03:00
cryptozoidberg
322aaf8251
added logging in wallet for deffered indexes requesting 2020-06-18 20:37:24 +02:00
arthurest
a67633e3ed
Mixins change (#182)
* changed mixins

* disable mixin if is_auditable true

* added mixin constant

* fix mixin bug
2020-06-18 18:51:49 +03:00
sowle
7be50f9325
minor fix in void wallet2::prepare_wti_decrypted_attachments 2020-06-18 10:54:14 +03:00
sowle
6c42186b5d
coretests: wallet_sending_to_integrated_address added to main list 2020-06-18 10:52:29 +03:00
sowle
9dbd2d45fd
coretests: wallet_sending_to_integrated_address finally implemented 2020-06-17 18:01:22 +03:00
sowle
881cacfd48
=== build number: 88 -> 89 === 2020-06-17 14:34:06 +03:00
sowle
1c06dafb98
add devtools postfix to build file name when needed 2020-06-17 11:10:21 +03:00
sowle
90112e6b8f
make Qt WebEngine Dev Tools available for Linux builds if qt_dev_tools env option is specified 2020-06-16 18:47:47 +03:00
sowle
2467d99afb
--qt-dev-tools option added for web UI debugging 2020-06-16 15:15:55 +03:00
cryptozoidberg
2a8a715df6
temporary: attempot to display devtools in qt 2020-06-16 03:57:06 +02:00
cryptozoidberg
05efd94c69
fixes for VS2019 2020-06-16 03:44:31 +02:00
cryptozoidberg
f78a741ae5
added code for javascript debugging 2020-06-15 20:10:24 +02:00
sowle
fed07d2882
fix gui compilation 2020-06-15 15:03:48 +03:00
cryptozoidberg
c9c33566b9
Merge branch 'wallet_delayed_outputs_sync' into predevelop 2020-06-14 19:48:07 +02:00
cryptozoidberg
1698030467
Merge branch 'predevelop' into wallet_delayed_outputs_sync 2020-06-14 19:47:35 +02:00
cryptozoidberg
6a967bf618
configured mobile native library for using deffered loading of global outputs indicies 2020-06-14 19:46:06 +02:00
cryptozoidberg
925db8ceeb
fixed coretests(all working in both deffered and normla mode) 2020-06-14 19:31:10 +02:00
cryptozoidberg
a4cb3e6a32
fixed conditions for deffered outs fetch 2020-06-14 02:17:10 +02:00
cryptozoidberg
0f98b6d990
fixed few bugs related to prefetch 2020-06-13 21:04:43 +02:00
sowle
53bdb6417e
marking place for prefetch 2020-06-13 12:13:41 +03:00
cryptozoidberg
73c42b7892
implemented prefetch of outputs before transfer 2020-06-12 23:32:06 +02:00
sowle
e1ee3ffd19
another attempt to fix #152 2020-06-12 16:36:38 +03:00
cryptozoidberg
8f9f9f1698
implemented deferred fetching of global output indexes on receiving phase(preparation phase is todo) 2020-06-12 00:32:08 +02:00
sowle
1fcaccf61b
fix for #152 2020-06-11 22:20:00 +03:00
sowle
bda15d3153
Merge branch 'develop' into predevelop 2020-06-11 13:28:18 +03:00
sowle
8b2e15b1b0
=== build number: 87 -> 88 === 2020-06-11 13:25:58 +03:00
cryptozoidberg
267053964d
extended api for fetching blocks/txs, started work on implementing deferred fetching of global output indexes 2020-06-10 23:56:14 +02:00
sowle
02cd60e85d
fix alias update signature buffer for upcoming auditable wallets and hf2 2020-06-10 19:52:39 +03:00
sowle
a95316bfb7
coretests: hard_fork_2_alias_update_using_old_tx<true/false> added, exposes a bug 2020-06-10 19:31:05 +03:00
sowle
36eabb916b
predownload files updated for testnet up to height 349999 2020-06-09 15:15:48 +03:00
sowle
1db364fbf6
minor log improvement 2020-06-08 18:05:32 +03:00
sowle
c638a8b2f6
plain wallet API: minor fixes 2020-06-08 11:49:20 +03:00
cryptozoidberg
aecd66c346
fixed json in response 2020-06-05 21:38:16 +02:00
cryptozoidberg
8bc5d1feac
api got changed to more suitable version 2020-06-05 20:53:10 +02:00
cryptozoidberg
ccedbe8781
added api for validating address 2020-06-05 20:17:23 +02:00
sowle
fc627bbfe4
wallet_file_size serialization restored 2020-06-05 15:58:13 +03:00
OrsonJ
dc3c52ea73
Update invalid Qt link in Linux Build Instructions (#179) 2020-06-05 14:42:26 +02:00
cryptozoidberg
2cf31bca10
fixed android/linux warnings 2020-06-04 19:31:29 +02:00
cryptozoidberg
8f53591cd9
slowed down pool pulling for moobile app 2020-06-03 23:59:01 +02:00
cryptozoidberg
b7ec081460
implemente native lib state access api(mostly for paindroid) 2020-06-03 21:29:43 +02:00
sowle
12af2a9c30
win build: all pdbs now go along with installer and zip-archive 2020-06-03 19:10:26 +03:00
sowle
9c9d60d339
get rid of obsolete function argument modifier 2020-06-03 13:20:05 +03:00
sowle
eb8b3f30b7
do not use burned coins for mixing in (anonymity improvement) 2020-06-03 13:09:43 +03:00
sowle
1e3c0cd396
coretests: random_outs_and_burnt_coins test added 2020-06-03 13:05:49 +03:00
cryptozoidberg
7efd667e69
added proper linking to log library2 2020-06-02 21:48:47 +02:00
cryptozoidberg
2bb2e481c6
added proper linking to log library 2020-06-02 20:21:01 +02:00
cryptozoidberg
a3907e42c7
added missing prefix to header file 2020-06-02 19:48:58 +02:00
cryptozoidberg
609e6bff89
added android logger 2020-06-02 19:25:51 +02:00
sowle
e337af514a
Merge branch 'release' 2020-06-02 14:17:33 +03:00
sowle
ab1ef9cf5e
Merge branch 'auditability' into predevelop 2020-06-02 13:26:22 +03:00
cryptozoidberg
0b636ed070
added reset method for quick releasing opened wallets under android 2020-06-02 00:19:54 +02:00
sowle
338e22d612
wallet2: fix a bug with awo wallet restoration 2020-06-01 16:09:36 +03:00
sowle
a47f9ade78
coretests: improved tx counting in a few tests 2020-06-01 16:08:44 +03:00
sowle
79d86e3f9f
coretests: hard_fork_2_awo_wallets_basic_test<true/false> added (exposes a bug) 2020-06-01 15:33:16 +03:00
sowle
35370ba485
account_base::get_awo_blob() 2020-06-01 15:32:00 +03:00
cryptozoidberg
979649f49c
fixed broken unit test 2020-05-29 22:13:52 +02:00
sowle
d932f1e98d
good-bye "tracking_hey"! 2020-05-29 11:56:36 +03:00
sowle
df41672f44
unit_tests: few tests adapted to new address format + lmdb fixed 2020-05-28 19:38:47 +03:00
sowle
aeb23bdd81
GUI: allow auditable watch-only wallets to be opened 2020-05-28 14:38:27 +03:00
sowle
859291f45e
gui: is_auditable and is_watch_only are now available in wallet_info 2020-05-28 12:36:51 +03:00
sowle
5bb8b369ff
restoring AWO wallets enabled for GUI backend + refactoring to made things simpler 2020-05-27 23:49:34 +03:00
sowle
6712b548cd
wallet2: made auditable watch-only wallet not using outkey2ki file 2020-05-27 23:04:23 +03:00
sowle
ecfccc9f53
wallet2: fixed wrong skipping bad output with mix_attr != 1 in an auditable wallet 2020-05-27 23:01:37 +03:00
sowle
ee9ef363b9
auditable watch-only wallet now can be restored from awo-blob (by a third party): --restore-awo-wallet
simplewallet new command: awo_blob
2020-05-27 17:20:25 +03:00
sowle
069cbbf769
wallet: transfer is forbidden for auditable watch-only wallets 2020-05-27 13:14:14 +03:00
sowle
9ea200e3fa
coretests: wallet_test inherits test_chain_unit_enchanced virtually to avoid gcc issues 2020-05-27 13:12:28 +03:00
sowle
01c1339ae6
fixed wallet_error_base signature 2020-05-27 13:09:42 +03:00
sowle
83ecbf346d
fixed conversion in wallet_error_base 2020-05-26 20:41:00 +03:00
sowle
ee47354911
Merge branch 'predevelop' into auditability 2020-05-26 20:18:58 +03:00
sowle
33cf01ff34
better transfers logging and code clean-up 2020-05-26 15:55:58 +03:00
sowle
200494027f
auditability works in simplewallet 2020-05-26 13:28:24 +03:00
sowle
c1ba75db3f
simplewallet: on_message implemented for urgent messages from wallet2 2020-05-26 13:25:03 +03:00
sowle
76f3318555
simplewallet: i_wallet2_callback: added "override", changed on_money_received/on_money_spent to on_transfer2 2020-05-26 13:23:26 +03:00
cryptozoidberg
1458032e93
fixed wallet pulling daemon like there is no tomorrow 2020-05-26 00:21:28 +02:00
sowle
36326e581f
wallet: handling auditable coins (WIP) 2020-05-25 15:05:25 +03:00
cryptozoidberg
9fc930230a
got rid of delay before first update of wallet info 2020-05-24 14:59:55 +02:00
sowle
aaa5fcbfa9
Merge branch 'predevelop' into auditability 2020-05-23 22:59:29 +03:00
cryptozoidberg
20d93cafd3
got rid of console outputs 2020-05-23 12:14:19 +02:00
cryptozoidberg
2be08eae0d
fixed bug in get_est_height_from_date 2020-05-23 12:13:34 +02:00
sowle
638768f31b
Merge branch 'predevelop' into auditability 2020-05-22 19:50:34 +03:00
sowle
4db837bbc7
Merge branch 'develop' into predevelop 2020-05-22 17:03:25 +03:00
sowle
f900fa7e15
Merge branch 'release' into develop 2020-05-22 17:02:39 +03:00
sowle
4369439fbc
get_callstack_win_x64() made thread-safe 2020-05-22 16:30:34 +03:00
cryptozoidberg
034e4e0296
got rid of console messages 2020-05-22 14:36:25 +02:00
sowle
9d1a588872
=== build number: 86 -> 87 === 2020-05-20 21:04:41 +03:00
sowle
05f15d5560
gui: attempt to fix default mixin value for alias-targeted tx 2020-05-20 21:04:03 +03:00
sowle
12ea93fef8
fixed a typo 2020-05-20 18:40:01 +03:00
sowle
a74dc3140a
=== build number: 85 -> 86 === 2020-05-20 18:35:40 +03:00
sowle
dbf70494ba
gui: reset default mixin to 10 after sending a tx 2020-05-20 18:34:37 +03:00
sowle
1815655da7
coretests: hard_fork_2_tx_extra_alias_entry_in_wallet greatly improved to check alias reg/update to an auditable address before/after the HF2 2020-05-20 17:41:46 +03:00
sowle
80d7f4b003
wallet: forbid aliases to auditable addresses reg/update prior to HF2 2020-05-20 17:39:42 +03:00
sowle
a6a8e4b197
coretests: hard_fork_2_tx_payer_in_wallet and hard_fork_2_tx_receiver_in_wallet improved to cover more cases on tx_payer/tx_receiver rule 2020-05-20 16:41:16 +03:00
sowle
6f4ecb9f3d
core: log hardfork passing 2020-05-20 16:38:03 +03:00
sowle
c1760eb660
wallet file signature fixed to the same length 2020-05-20 16:37:23 +03:00
sowle
c9177ea804
print_blockchain_outs_stat -> print_blockchain_outs_stats 2020-05-19 20:25:03 +03:00
sowle
cfdd8bdc9c
new core rule: new format tx_payer, tx_receiver and extra_alias_entry are not allowed before HF2 2020-05-19 20:22:53 +03:00
sowle
884d068274
tx_payer / tx_receiver will not be added to extra for an auditable address before HF2 2020-05-19 20:21:31 +03:00
sowle
586561411d
wallet2: sending to auditable addresses allowed before HF2 as well 2020-05-19 20:19:54 +03:00
sowle
df8c4b6594
coretests: hard_fork_2_no_new_structures_before_hf fixed and greatly improved with positive cases 2020-05-19 20:18:23 +03:00
sowle
2bdf17e749
coretests: hard_fork_2_base_test refactored + put_alias_via_tx_to_list made more flexible 2020-05-19 20:17:05 +03:00
sowle
4b3e8da6fa
wallet2: made new format unloadable by old wallets + correct error on file read errors 2020-05-19 20:12:43 +03:00
cryptozoidberg
07a1cde8f9
optimized shutdown process for wallets manager 2020-05-19 16:28:50 +02:00
sowle
cf4a54744b
typo fixed 2020-05-18 22:10:14 +03:00
sowle
cefe2ef855
log message for IP debug mode 2020-05-18 22:08:40 +03:00
sowle
23b7c3e1e0
cmd print_bc_outs_stat re-implemented 2020-05-18 22:06:59 +03:00
sowle
7d73fb92ba
enumerate_subimtes implemented in basic_key_to_array_accessor 2020-05-18 18:01:11 +03:00
sowle
9d2262c5e6
Merge branch 'release' into develop 2020-05-18 17:58:21 +03:00
sowle
3f20bac90b
Merge branch 'master' into develop 2020-05-18 17:56:09 +03:00
sowle
d9150e592a
coretests: typos fixed 2020-05-18 17:22:17 +03:00
sowle
4271875709
coretests: hard_fork_2_no_new_structures_before_hf added 2020-05-18 17:21:12 +03:00
sowle
c1e3b80191
coretests: minor refactoring 2020-05-18 17:20:23 +03:00
sowle
a9336724aa
back-compatibility for new wallets fixed 2020-05-18 17:19:21 +03:00
cryptozoidberg
a4b5af479e
guarded other static objects whichg might lead to errors in deinitialization 2020-05-17 23:15:50 +02:00
cryptozoidberg
131f4a8347
implemented static objects wrapper, which make possible to pre-handle beginning of static obj death 2020-05-17 21:38:36 +02:00
cryptozoidberg
c4149503d0
fixed wrong condition for syn validation check 2020-05-17 19:16:48 +02:00
cryptozoidberg
eb119d6a3b
handling of rare but possible situation with wallet sync rewound 2020-05-17 18:50:40 +02:00
cryptozoidberg
30e400b2d0
fixed bug in wallet sync process 2020-05-17 18:20:02 +02:00
cryptozoidberg
40f1e1a870
attempt to fix mobile crash on exit 2020-05-17 15:12:34 +02:00
sowle
15ea90c14e
=== build number: 84 -> 85 === 2020-05-15 13:36:20 +03:00
sowle
4f91adbd08
ethash: log full dataset size on epoch change 2020-05-15 13:33:02 +03:00
sowle
19ec19e676
pre-downloading links updated 2020-05-15 11:56:42 +03:00
cryptozoidberg
f5df96f444
intentional memory leak just to prove concept on ios 2020-05-14 22:05:36 +02:00
cryptozoidberg
4159a528ff
wrapped deinit into plain_wallet namespace 2020-05-14 20:05:52 +02:00
cryptozoidberg
a9f4c63fdd
fixed typo 2020-05-14 19:35:55 +02:00
cryptozoidberg
29aa2a25de
added wallets_manager deinitialization before everyone dies 2020-05-14 19:23:17 +02:00
sowle
ae5269d12c
coretests: hard_fork_2_auditable_addresses_basics changed to reflect updated auditable address rule 2020-05-14 20:11:21 +03:00
sowle
5ca6c8077e
added checkpoint for height 525000 (mainnet) and height 350000 (testnet) 2020-05-14 19:00:13 +03:00
sowle
ecea7545e9
=== build number: 83 -> 84 === 2020-05-14 17:50:14 +03:00
sowle
932f66bc00
GUI: default mixin count set to 10 2020-05-14 17:42:51 +03:00
cryptozoidberg
1af8862202
fixed capture for lambda 2020-05-13 22:11:58 +02:00
cryptozoidberg
9e983b70b2
plain_wallet api refactored due to ios app crash 2020-05-13 22:01:40 +02:00
sowle
a1c5343c4b
http_client improved to stop on permanent HTTP error + logs 2020-05-13 10:29:14 +03:00
sowle
bc6b951099
pre-downloading: increase timeout and attempt count 2020-05-13 10:27:04 +03:00
cryptozoidberg
b97065beba
added wallet size to open/store api 2020-05-12 21:48:15 +02:00
cryptozoidberg
e6616cd225
Added error on opening same wallet file 2020-05-12 21:11:54 +02:00
sowle
f6d99e39bb
=== version bump: 1.1.5.82 -> 1.1.6.83 === 2020-05-12 18:47:43 +03:00
sowle
a2ac9c7640
unnecessary logs removed 2020-05-12 18:30:28 +03:00
sowle
3c30c655ff
wallet2: disallow auditable addresses as destinations until HF2 in transfer() 2020-05-12 18:16:47 +03:00
sowle
af3dbaa2e7
coretests: hard_fork_2_auditable_addresses_basics added 2020-05-12 18:14:53 +03:00
sowle
cf0fb86d90
GUI: fix unconditional backend stop when predownloading fails 2020-05-12 13:02:06 +03:00
sowle
d1de7b062e
Merge branch 'master' into release 2020-05-12 12:56:27 +03:00
sowle
d13368dce4
handling auditable addresses in construct_tx outputs' generation 2020-05-11 21:24:39 +03:00
sowle
9397816f53
wallet: handling incoming txs in auditablility mode (WIP) 2020-05-11 21:23:00 +03:00
sowle
b30a3b8f66
Merge branch 'predevelop' into auditability
# Conflicts resolved:
#	src/currency_core/currency_basic.h
#	src/wallet/wallets_manager.cpp
2020-05-11 20:41:05 +03:00
sowle
14f4620468
simplewallet: debug statement removed 2020-05-11 15:52:18 +03:00
cryptozoidberg
6b2832fbcf
added welete_wallet method 2020-05-10 21:51:23 +02:00
sowle
dee448fe51
fixed extra_alias_info handling in tx_extra_handler and rpc_tx_payload_handler (+payer and receiver) 2020-05-08 22:59:51 +03:00
sowle
b56e7311e2
coretests: gen_no_attchments_in_coinbase fixed 2020-05-08 22:55:24 +03:00
sowle
eb70e67e13
coretests: hard_fork_2_tx_extra_alias_entry_in_wallet test added 2020-05-08 22:51:19 +03:00
cryptozoidberg
9344f2ccea
added missing parameter to open_wallet_response struct 2020-05-08 01:09:51 +02:00
cryptozoidberg
e7851de6f7
added parameter for initial wallet height 2020-05-08 00:52:30 +02:00
cryptozoidberg
c39bd62748
renamed api response codes to more general way, fixed loggin 2020-05-07 23:26:41 +02:00
sowle
a4b607e0c0
fixed a bug in new format seed phrase restoring 2020-05-07 15:02:35 +03:00
sowle
3701b138b6
unit_tests: wallet_seed.basic_test added, exposes a bug 2020-05-07 15:01:01 +03:00
sowle
a41d73cf8e
serialization fixes from predevelop 2020-05-07 14:57:45 +03:00
cryptozoidberg
dc1b1d5cfe
fixed new api for get block direct 2020-05-06 22:43:40 +02:00
cryptozoidberg
62106ff4f3
extra log in wallet 2020-05-06 21:41:42 +02:00
sowle
f1cefa8186
BCS: DB testnet compatibility rule (95->96) 2020-05-05 20:05:07 +03:00
sowle
36946e5d33
added p2p key for testnet (debugging) 2020-05-05 19:42:14 +03:00
cryptozoidberg
2382e9717b
Implemented debug mode for remote node 2020-05-05 17:47:24 +02:00
cryptozoidberg
5114824b02
softened alt blocks purge validation due to new onboard_transactions concept 2020-05-05 12:53:20 +02:00
sowle
6f710f8b62
Merge branch 'develop' into auditability 2020-05-05 13:15:40 +03:00
sowle
fc28894aee
Merge branch 'master' into develop 2020-05-05 13:13:56 +03:00
sowle
6a3efa5792
additional logging on handshake 2020-05-05 13:06:26 +03:00
cryptozoidberg
60101dc1f5
fixed wallet bugs related to new sync protocol 2020-05-04 17:11:25 +02:00
sowle
a11bdf39f2
wallet2: correct using of extra_alias_entry / extra_alias_entry_old 2020-05-04 14:57:29 +03:00
cryptozoidberg
fb2ed72086
added import old long wallets to new shortened ones 2020-05-03 14:59:34 +02:00
cryptozoidberg
e43be6a0b4
Merge branch 'wallet_sync' into predevelop 2020-05-02 23:00:47 +02:00
sowle
1441b5b27f
seed phase improvements: 26 words + checksum + auditable wallets support 2020-05-02 23:59:37 +03:00
sowle
599558ef9b
minor improvements 2020-05-02 23:56:12 +03:00
cryptozoidberg
3136e311e0
all tests got fixed 2020-05-02 22:53:52 +02:00
cryptozoidberg
2ca5913ad5
fixed core tests 2020-05-02 01:27:55 +02:00
cryptozoidberg
d3d5af1954
bug fixes of new wallet sync protocol 2020-05-01 20:39:39 +02:00
cryptozoidberg
d67cc07e9b
got rid of eos tutorial(it triggered github Security Alert) 2020-05-01 13:27:32 +02:00
cryptozoidberg
00dae66320
finished shortener test 2020-05-01 13:25:28 +02:00
sowle
b9569ce89b
extra_alias_entry/extra_alias_entry_old fixes, all types added to payload_items and compiles ok 2020-05-01 12:56:09 +03:00
cryptozoidberg
3d1a977991
fixed bugs with detach 2020-04-30 23:21:14 +02:00
cryptozoidberg
16de0b986f
implemented and tested(basic test) short_chain_history 2020-04-30 22:29:08 +02:00
sowle
42a752d12b
new addresses formats + unit tests 2020-04-30 18:50:22 +03:00
sowle
c018cc89ae
extra_alias_entry serialization 2020-04-30 10:31:50 +03:00
sowle
8a19cd7ae0
gcc compilation fixup 2020-04-30 10:30:14 +03:00
sowle
03052970a6
extra_alias_entry_base / struct extra_alias_entry_base_old 2020-04-29 21:12:16 +03:00
sowle
c00ca6d5bc
tx_receiver/tx_receiver_old handling fixed 2020-04-29 21:06:08 +03:00
sowle
a5516dbd7e
coretests: hard_fork_2_tx_receiver_in_wallet test added 2020-04-29 21:04:40 +03:00
cryptozoidberg
281e430317
moved shortener code into separate unit to create unit tests for it 2020-04-29 01:23:48 +02:00
sowle
1afab184c8
tx_receiver/tx_receiver_old proper handling 2020-04-28 16:41:04 +03:00
sowle
d3ce73e7ac
wallets_manager: correct tx_payer/tx_payer_old handling 2020-04-28 15:59:23 +03:00
sowle
d3f353935f
wallet2: correct handling of tx_payer/tx_payer_old (covered by hard_fork_2_tx_payer_in_wallet test) 2020-04-28 15:58:25 +03:00
sowle
ead981b838
coretests: hard_fork_2_tx_payer_in_wallet test added 2020-04-28 15:53:31 +03:00
sowle
fc68a33bed
coretests: wlt_lambda_on_transfer2_wrapper moved 2020-04-28 15:51:41 +03:00
sowle
1cb908a484
handle_2_alternative_types_in_variant_container fixed 2020-04-28 15:10:59 +03:00
cryptozoidberg
e5f3519c1e
merge from predevelop 2020-04-28 00:44:40 +02:00
cryptozoidberg
3b7c6cc7e2
Merge branch 'predevelop' of github.com:hyle-team/zano into predevelop 2020-04-28 00:41:28 +02:00
cryptozoidberg
4e0fa49748
reverted API to original due to universal implementation, adapted server side to new protocol, implemented one extra API 2020-04-28 00:40:31 +02:00
sowle
e30214d722
whitespace fix 2020-04-27 18:29:55 +03:00
sowle
97265d06b4
typo fixed 2020-04-27 18:23:40 +03:00
sowle
158aea723c
typo fixed 2020-04-27 18:11:18 +03:00
sowle
da7d525801
wallet: tx_payer/tx_payer_old are now added according to hardfork rule 2020-04-27 16:20:31 +03:00
sowle
3a2fb378a4
initial coretests for auditability, work in progress 2020-04-27 16:09:02 +03:00
sowle
33d385db5f
auditability: basic structures, serialization, helpers (WIP) 2020-04-27 14:52:31 +03:00
cryptozoidberg
bf222f18fe
on_get_blocks_fuzzy_direct/find_blockchain_supplement_fuzzy draft impl 2020-04-27 00:02:58 +02:00
sowle
64223405bb
Merge branch 'auditability' into predevelop 2020-04-26 23:42:01 +03:00
cryptozoidberg
7b0eaf7ae4
fixed cleaning and reseting genesis 2020-04-26 01:49:57 +02:00
sowle
00304fbb7d
wallet2::get_top_block_height 2020-04-25 17:23:05 +03:00
sowle
3883c598e5
handle_2_alternative_types_in_variant_container 2020-04-25 17:22:34 +03:00
sowle
898d6c7f2d
typo fixed 2020-04-25 17:17:47 +03:00
cryptozoidberg
caaca44f1e
re-implemented detach blocks 2020-04-25 00:30:55 +02:00
cryptozoidberg
93d07e607f
re-implemented handle_pulled_blocks 2020-04-24 23:54:30 +02:00
cryptozoidberg
3b975d899e
implemented new items lookup and get_short_chain_history 2020-04-24 19:18:19 +02:00
cryptozoidberg
4825b7c012
initial code for upgrading walle sync protocol 2020-04-24 01:05:36 +02:00
sowle
15a41131ec
Merge branch 'auditability' into predevelop 2020-04-23 22:40:24 +03:00
sowle
e50bc239df
genesis_config_json_struct restored 2020-04-23 17:42:22 +03:00
sowle
78d960fe08
get rid of obsolete function argument modifier 2020-04-23 17:33:15 +03:00
sowle
2aa1db2636
more fixes for performance tests 2020-04-23 17:13:26 +03:00
sowle
43ea2cb9db
more fixes for performance tests 2020-04-23 17:12:26 +03:00
sowle
edcd9c85f1
Merge branch 'auditability' into predevelop 2020-04-23 16:08:51 +03:00
sowle
e7c4ea6acc
all tests are adapted 2020-04-23 16:07:18 +03:00
sowle
f532e4637e
coretests fixed 2020-04-23 15:41:40 +03:00
sowle
145dd6b024
unit_tests fixed 2020-04-23 14:56:03 +03:00
sowle
5724cd969c
clean up 2020-04-23 11:12:17 +03:00
sowle
d83cc36c5c
Merge branch 'auditability' into predevelop 2020-04-22 23:38:34 +03:00
sowle
c7229c3062
account_keys improvements 2020-04-22 23:30:03 +03:00
sowle
fc475432fc
account_public_address spend_public_key/view_public_key changes 2020-04-22 22:30:29 +03:00
sowle
f7d6782250
address/account refactoring in progress 2020-04-22 22:02:37 +03:00
sowle
8d62e84c7a
hardfork-related code minor refactoring 2020-04-22 18:47:16 +03:00
sowle
76b403b805
fixed a typo 2020-04-20 13:44:42 +03:00
sowle
8403de3b91
Merge branch 'master' into develop 2020-04-20 13:42:57 +03:00
cryptozoidberg
4fcbe8fbdd
added more return codes to wallet 2020-04-17 22:14:00 +02:00
sowle
fc0f6cba7f
Merge branch 'release' 2020-04-16 12:25:34 +03:00
sowle
f0f15c4999
Merge branch 'master' into release
# Conflicts:
#	README.md
2020-04-16 12:25:07 +03:00
cryptozoidberg
05e5174937
added new options for wallet rpc transfer call 2020-04-13 23:37:45 +02:00
sowle
c40fd26c84
Merge branch 'develop' into release 2020-04-08 23:19:24 +03:00
zano build machine
485f28504d === build number: 81 -> 82 === 2020-04-08 23:16:51 +03:00
zetov
ca7899b234
history (#166)
* history

* Rebuild
2020-04-08 21:45:46 +03:00
zetov
ed944436e9
#162 (#167) 2020-04-08 21:28:13 +03:00
sowle
af8ef3399a
simplewallet in RPC mode now scans tx pool even if PoS-mining not activated (fixes unconfirmed txs for RPC API) closes #165 2020-04-07 16:29:03 +03:00
sowle
2c2374910b
fixed a typo 2020-04-07 15:40:04 +03:00
sowle
cacd5206ef
wallet RPC: search_for_transactions added 2020-04-07 14:30:38 +03:00
sowle
c12f8487fb
wallet2: enumerate_transfers_history() and enumerate_unconfirmed_transfers() implemented 2020-04-07 14:28:57 +03:00
cryptozoidberg
ad8fab104c
fixed typo 2020-04-06 22:28:30 +02:00
cryptozoidberg
09612a42a6
implemented connectivity status api, got rid if unused implementation 2020-04-06 22:17:39 +02:00
sowle
31871d6253
simplewallet: transfer command changed to accept only hex-encoded payment id 2020-04-06 23:17:11 +03:00
sowle
b31dde50ae
made wallets_manager::get_recent_transfers aware of unconfirmed txs 2020-04-06 16:28:12 +03:00
cryptozoidberg
e1c9e79c06
added missing size of transaction on transfer response 2020-04-03 21:43:24 +02:00
cryptozoidberg
17e90b219f
added get_wallet_status to async call options 2020-04-02 22:26:14 +02:00
cryptozoidberg
154907fe96
wallet_manager getting more more async 2020-04-02 22:22:21 +02:00
sowle
409cd94d56
simplewallet: fixed a typo 2020-04-01 12:17:45 +03:00
sowle
55215e0634
is_synchronized() now returns TRUE only when at least half of the connections are in normal state, core_rpc_server::on_get_info() fixed 2020-03-31 17:30:17 +03:00
sowle
24ed6c09bc
gui: make_response improved to log all non-ok responses 2020-03-30 16:39:52 +03:00
sowle
9cc1a0b800
fixed a typo 2020-03-30 15:22:16 +03:00
sowle
8cdeadfdc8
virtual dtors for interfaces 2020-03-30 11:41:12 +03:00
sowle
d9e22a833d
gui: make_response_dbg() for debugging back-end - front-end interactions 2020-03-29 01:10:08 +03:00
sowle
e28b7d8cf4
gui: process_predownload result is being checked now 2020-03-27 15:19:21 +03:00
sowle
54e63e875f
Merge branch 'release' into develop 2020-03-27 14:46:02 +03:00
sowle
2d524fd97a
fixed a clang warning 2020-03-27 01:48:31 +03:00
sowle
435bcacb11
override specifier for get_last_success_interract_time() 2020-03-27 01:47:53 +03:00
sowle
82db9da9f4
=== build number: 80 -> 81 === 2020-03-27 00:58:47 +03:00
sowle
bb9aa4bd69
stream_cn_hash: buffer moved from the stack to the heap 2020-03-27 00:11:06 +03:00
cryptozoidberg
7d99128a21
bundle working folder now passed throught configuration 2020-03-26 04:34:26 +01:00
sowle
135eed3d02
Merge branch 'develop' into release 2020-03-24 12:09:34 +03:00
zetov
324673c1d3
Downloading, fixed comment textarea (#161)
This should fix 159, 160
2020-03-24 12:06:12 +03:00
sowle
b6beac9980
gzip_encoder: fixed a potential pointer misuse 2020-03-20 17:18:29 +03:00
sowle
6cd7d4fffd
Merge branch 'develop' into release 2020-03-20 16:27:15 +03:00
sowle
51a4ab9a71
fixed a minor issue in mdbx_db_backend::set() 2020-03-20 16:25:20 +03:00
sowle
78a627afc5
fixed std::out state change 2020-03-20 13:51:37 +03:00
cryptozoidberg
3f56487838
fixed broken build for mobile 2020-03-20 04:45:00 +01:00
cryptozoidberg
31e328768e
implemented secure api for configuring wallets data 2020-03-20 04:19:25 +01:00
cryptozoidberg
c0f651ff33
fixed issue with plain wallet api 2020-03-20 01:20:44 +01:00
sowle
c4a4447694
DB & pre-downloading links updated for the mainnet 2020-03-20 02:22:30 +03:00
sowle
448637a98a
back-end part of pre-downloading progress bar 2020-03-19 03:01:02 +03:00
sowle
09258e686f
DB & pre-downloading links updated for the testnet 2020-03-18 20:11:22 +03:00
sowle
8a23cd45ee
change flag for gzip encoding to Z_NO_FLUSH in order to be consistent with gzip encoding 2020-03-18 19:48:52 +03:00
sowle
5a1fa2e042
conn_tool: proper handling of gzip encoding/decoding result 2020-03-18 18:38:28 +03:00
sowle
cefa4b561f
fixed the same bug in gzip_encoder_lyambda::stop() 2020-03-18 18:37:08 +03:00
sowle
36af9759a2
fixed an old and rare bug in gzip encoding 2020-03-18 18:34:22 +03:00
sowle
40097d776b
epee:: http_client & gzip_encoding: fixed improper handling of incorrect gzip data during downloading 2020-03-18 15:22:20 +03:00
sowle
cf932f50e7
CLI option change: explicit-predownload -> force-predownload 2020-03-18 15:14:10 +03:00
sowle
e652771786
pre-downloading is implemented for GUI as well 2020-03-16 22:14:01 +03:00
sowle
14ea7fede8
attempt to fix coretests 2020-03-16 20:03:45 +03:00
sowle
8a515489ee
minor log improvements 2020-03-16 19:57:48 +03:00
sowle
6bd9a73448
db_backend_selector is used only locally to make things simplier 2020-03-16 17:48:02 +03:00
cryptozoidberg
0b6b30b01c
fixed gcc error 2020-03-15 06:32:11 +01:00
cryptozoidberg
d1e7348879
fixed wrong header 2020-03-15 06:18:49 +01:00
cryptozoidberg
01b6f41509
implemented get logs/truncate logs in plain_wallet 2020-03-15 06:14:08 +01:00
cryptozoidberg
8bec5d2957
extended diagnistic info on plain_wallet initialization 2020-03-14 03:03:11 +01:00
sowle
73c34713e3
pre-download validation improved 2020-03-13 07:44:03 +03:00
sowle
70337d779d
allow interruptible_http_client to accept 2xx responses 2020-03-13 07:43:06 +03:00
sowle
3c38e8562d
fixed interruptible_http_client: non-200 code handling + fails_count is taken into account 2020-03-13 05:56:19 +03:00
sowle
1c4efe6800
attempt to fix coretests 2020-03-13 04:38:30 +03:00
sowle
e1264ed8c7
fix for gcc 2020-03-13 03:47:44 +03:00
sowle
5567275518
blockchain database predownloading: first version 2020-03-12 18:07:31 +03:00
sowle
05b5f2294b
attempt to fix linux build 2 2020-03-12 14:29:52 +03:00
sowle
f19eeda119
attempt to fix linux build 2020-03-12 14:22:53 +03:00
sowle
5d5c63c1f8
db_backend_selector introduced 2020-03-12 13:21:22 +03:00
sowle
d01ace4113
conn_tool: made able to pack/unpack a file with SHA3-based hash for blockchain pre-downloading 2020-03-11 13:59:20 +03:00
sowle
18fa6d8d7c
stream_cn_hash introduced 2020-03-11 13:58:10 +03:00
sowle
05950fa4a4
fix whitespaces 2020-03-11 13:57:30 +03:00
sowle
4e522ae6f2
fix result returning in content_encoding_gzip::update_in() 2020-03-11 13:48:11 +03:00
cryptozoidberg
c239ac31de
removed duplicate ec defintion, added missing header 2020-03-11 05:10:36 +01:00
cryptozoidberg
93353033bb
why it's been called app_config_folder lol 2020-03-11 04:55:09 +01:00
cryptozoidberg
f877b8e896
corrected response codes 2020-03-11 04:40:10 +01:00
cryptozoidberg
30b0d7aa8a
implemented app config api 2020-03-11 04:23:25 +01:00
cryptozoidberg
a68ab6b150
fixed unresloved external or ios 2020-03-11 03:02:06 +01:00
cryptozoidberg
3cb70f88f5
attempt to fix broken build 2020-03-11 02:34:41 +01:00
cryptozoidberg
33829fa374
[plain_wallet]: extended api for configuring loging level 2020-03-11 02:08:57 +01:00
sowle
945451bc94
epee::interruptible_http_client 2020-03-10 18:03:12 +03:00
sowle
b4861c2511
content_encoding_gzip gets compression level 2020-03-10 18:02:22 +03:00
sowle
7bb3c766f9
epee: gzip_encoder_lambda, gzip_decoder_lambda 2020-03-09 23:50:55 +03:00
cryptozoidberg
b034328a9f
fixed warning regarding potentially uninitialized members(quite reasonable) 2020-03-08 20:55:57 +01:00
cryptozoidberg
aa65dfe9e6
removed unused invoke_timeout, finished manual timeouts setting function 2020-03-08 20:40:13 +01:00
cryptozoidberg
39ecd43321
added expiration median to COMMAND_RPC_GET_TX_POOL 2020-03-08 20:30:39 +01:00
sowle
4a2b1d5703
=== build number: 79 -> 80 === 2020-03-08 03:59:43 +01:00
zetov
04a2d66457
Gui graphics #157 (#158)
* Fix close btn
* rebuild
2020-03-08 02:28:25 +01:00
zetov
c6c3d2264d
Gui graphics #157 (#158)
* Fix close btn
* rebuild
2020-03-07 23:07:57 +01:00
cryptozoidberg
d3c033b50b
fixed another compilation problem 2020-03-07 14:45:21 +01:00
cryptozoidberg
5fac594653
fixed compilation problem 2020-03-07 07:41:17 +01:00
cryptozoidberg
afe15b3337
extended logs for other proxy helpers 2020-03-07 07:38:37 +01:00
cryptozoidberg
12b2bec9bd
offline status tracking fix 2020-03-07 07:27:59 +01:00
cryptozoidberg
fe8c34eb17
improved timeouts for mobile wallet 2020-03-07 06:55:09 +01:00
sowle
57d9149626
fixed missed return 2020-03-06 23:47:26 +01:00
sowle
55cb64cedf
Merge branch 'develop' into release 2020-03-06 23:34:08 +01:00
cryptozoidberg
f366f5b663
added bitcode for ios build 2020-03-06 05:29:50 +01:00
sowle
1cddfc07ed
=== build number: 78 -> 79 === 2020-03-05 22:53:10 +01:00
sowle
c1d65f6d05
BCS: DB versions matching logic improved to cover more cases 2020-03-05 22:50:28 +01:00
sowle
94088f500f
BLOCKCHAIN_STORAGE_MAJOR_COMPATIBILITY_VERSION : 93 -> 94 2020-03-05 22:40:20 +01:00
sowle
9efc77f95b
added checkpoint for height 425000 2020-03-04 21:19:45 +01:00
cryptozoidberg
f907daed13
added current height to wallet_status api 2020-03-04 21:00:05 +01:00
cryptozoidberg
fa1af3e3aa
fixed proper work with pointer 2020-03-02 05:18:28 +01:00
cryptozoidberg
fccf9933af
implemented online/offline status detecting 2020-03-02 05:05:15 +01:00
cryptozoidberg
0c0689a888
fixed return code in unknown method handler 2020-02-28 12:32:05 +01:00
cryptozoidberg
83f42ef10f
fixed bug with unknown wallet 2020-02-28 12:28:00 +01:00
cryptozoidberg
3284ca95c4
wrap close wallet response in json-like object 2020-02-28 11:20:17 +01:00
sowle
5a219d15a0
test commit 2020-02-28 13:17:20 +03:00
cryptozoidberg
f8d5442cc1
fixed json in try_pull_result response 2020-02-28 08:45:16 +01:00
cryptozoidberg
b8b2feabe1
return type fixed 2020-02-28 07:46:05 +01:00
cryptozoidberg
11194722d5
changed damn api because react native promise resolver is not willing to work with long 2020-02-28 07:38:40 +01:00
cryptozoidberg
c50102d2a1
fixed scrit for android build 2020-02-28 05:53:40 +01:00
cryptozoidberg
47e33ff75d
fixed bug with deatachment of thread object 2020-02-28 05:37:53 +01:00
cryptozoidberg
1cad3e1925
changed android build script to be more friendly to ios builds 2020-02-28 04:15:50 +01:00
cryptozoidberg
9e37ca90f4
updated plain_wallet header 2020-02-28 03:12:40 +01:00
cryptozoidberg
a51b9b4ba6
added more logs for async api 2020-02-28 01:36:29 +01:00
cryptozoidberg
1fc7690b74
implemented async api basics in plain_walled 2020-02-27 21:45:46 +01:00
cryptozoidberg
ea7c4fc906
commented broken code 2020-02-27 02:12:42 +01:00
cryptozoidberg
b459213d00
started implementation of async api for mobile devices 2020-02-27 02:11:30 +01:00
sowle
e0f78c3dc2
fixed build for gcc 5.4.0 2020-02-26 16:07:35 +03:00
sowle
df4bca7f8b
-Wno-implicit-function-declaration made Clang-only 2020-02-26 03:12:53 +03:00
sowle
5629392700
fixed signed/unsigned comparison in out_buffer() 2020-02-26 02:49:27 +03:00
sowle
7f98341a21
the build fixed for msvc 2020-02-25 19:39:08 +03:00
sowle
01a9ce8b34
snap: snapcraft config for Zano updated (Qt added, work still in progress) 2020-02-24 06:47:54 +03:00
cryptozoidberg
c1208fd05d
disabled autological-constant-out-of-range-compare for clang/gcc 2020-02-23 08:08:39 +01:00
cryptozoidberg
4c73053a9f
added initialization flag 2020-02-23 07:45:04 +01:00
cryptozoidberg
1749040cd4
fixed warnings for paindroid platofrm 2020-02-23 07:07:20 +01:00
cryptozoidberg
254a2dcb6e
fixed compilation issues with windows/warning for paindroid 2020-02-23 06:26:12 +01:00
cryptozoidberg
67b84d341d
Merge branch 'plain_wallet2' into develop 2020-02-23 03:56:57 +01:00
cryptozoidberg
3dc736466d
merged from develop 2020-02-23 03:56:25 +01:00
cryptozoidberg
83c545253d
Merge branch 'develop' of github.com:hyle-team/zano into develop 2020-02-23 03:46:49 +01:00
cryptozoidberg
211ff35e2c
fixed unhandled throw in case of double initialization 2020-02-23 03:14:35 +01:00
sowle
c0c0ae4bef
minor fixes 2020-02-22 11:37:01 +03:00
sowle
f9adc129fc
minor fixes 2020-02-22 11:34:24 +03:00
cryptozoidberg
181392f641
fixed paindroid home dir prefix 2020-02-21 19:29:46 +01:00
cryptozoidberg
f621740c79
re-enabled channels on android 2020-02-21 17:53:12 +01:00
sowle
e0bd168045
wallet: minor log fix 2020-02-21 14:59:54 +03:00
sowle
0dd6053221
waller: generate_packing_transaction_if_needed() fixed 2020-02-21 12:26:14 +03:00
cryptozoidberg
bb4e2be6d6
disabled log channels for android, more fixes over build config 2020-02-21 09:28:45 +01:00
cryptozoidberg
853e6e9484
multithreaded build for android 2020-02-21 04:20:21 +01:00
cryptozoidberg
161acc3561
excluded srdout from android build 2020-02-21 04:18:54 +01:00
cryptozoidberg
f02be48e03
fixed byte order for android 2020-02-21 02:13:58 +01:00
cryptozoidberg
40bedc2457
removed other unlinkable in paindroid functions 2020-02-21 01:14:58 +01:00
cr.zoidberg
b154ce5dd7 changed addtributes 2020-02-21 01:10:21 +01:00
cryptozoidberg
7b12ce6e9f
disabled unlinked utf8 functions for android, chaged libs to static 2020-02-21 01:05:39 +01:00
sowle
d521e58fdb
coretests: pos_minting_tx_packing improved to cover more (and now it exposes a bug in generate_packing_transaction_if_needed) 2020-02-21 03:00:56 +03:00
sowle
bda624e26a
minor fix in get_bundle_root_dir() 2020-02-21 00:15:15 +03:00
sowle
9722b3baf9
wallets manager: minor improvements in exceptions' handling 2020-02-20 15:40:00 +03:00
sowle
3609e683d9
minor fixes in logs 2020-02-20 11:20:31 +03:00
cryptozoidberg
c18c6230cf
removed android lib from cmake 2020-02-20 03:08:47 +01:00
cryptozoidberg
0c54ca7270
get rid of boost.locale under paindroid 2020-02-20 03:07:03 +01:00
cryptozoidberg
0c6b813c05
paindroid version fixes 2020-02-20 02:54:45 +01:00
sowle
6356b9b09d
checkpoints for testnet 2020-02-19 19:26:40 +03:00
sowle
d9507c12ad
readme.md update 2020-02-19 17:55:00 +03:00
sowle
409c3e4079
build script linux: does not upload by default 2020-02-19 17:33:41 +03:00
sowle
b79020a4e3
readme: updated Dependencies section & Linux building instructions 2020-02-19 17:31:12 +03:00
sowle
eed1fe2708
exception handling in locked_object_proxy dtor 2020-02-19 16:14:44 +03:00
sowle
f4893863be
exceptions handling in wallets_manager dtor 2020-02-19 16:12:52 +03:00
sowle
85c27e81ea
get_wallet_info() fixed 2020-02-18 18:58:03 +03:00
sowle
43e8fbefbd
keep stream flags intact in dump_as_json() 2020-02-18 17:04:14 +03:00
sowle
7cf98ccb75
fixed minor issue in lmdb_db_backend::set() 2020-02-18 17:03:22 +03:00
sowle
68772f3e04
minor fix in transform_str_to_addr() 2020-02-18 15:50:24 +03:00
cryptozoidberg
da0c01a953
no comments! :) 2020-02-18 09:14:56 +01:00
cryptozoidberg
0dec06b271
fixed compilation issue with literal 2020-02-18 09:08:53 +01:00
cryptozoidberg
6d81ff7f6d
added ios and android macro definition 2020-02-18 09:01:42 +01:00
cryptozoidberg
5e7f42231d
fixed type in cmake 2020-02-18 08:45:50 +01:00
cryptozoidberg
410e241bdd
uncommented forgoten endif 2020-02-18 08:43:27 +01:00
cryptozoidberg
92d4ecd654
disabled cmake explicit CMAKE_AR assign 2020-02-18 08:37:31 +01:00
cryptozoidberg
51eb479000
disabled call stack extracting for android 2020-02-18 08:15:18 +01:00
cryptozoidberg
89b15a9dc2
adjusted macros for both android and ios 2020-02-18 07:45:59 +01:00
cryptozoidberg
fa3c922c6f
Android-related changes(dirty) for native library 2020-02-18 07:05:31 +01:00
sowle
bc1152ede5
check return value of do_serialize in get_attachment_extra_info_details() 2020-02-17 16:44:11 +03:00
sowle
67e416b862
tx pool: fill_block_template rewritten to avoid dangerous pointers manipulations 2020-02-17 13:13:07 +03:00
sowle
01aad90840
coretests: gen_checkpoints_and_invalid_tx_to_pool fixed, all tests should pass normally now 2020-02-16 22:56:32 +03:00
sowle
9ede2f9802
coretests: implemented mark_unverifiable_tx callback for test_chain_unit_enchanced base class 2020-02-16 21:43:59 +03:00
sowle
b7e4dbcb38
snap: snapcraft config for Zano (work in progress) 2020-02-15 23:31:40 +03:00
cryptozoidberg
0a1f87bc14
returned terminate handler 2020-02-14 22:02:20 +01:00
sowle
192c981a80
Dockerfile for zano daemon 2020-02-14 17:15:05 +03:00
sowle
966cb52343
tx pool: fixed potential rare access violation issue 2020-02-14 15:53:39 +03:00
cryptozoidberg
b695238f47
disabled terminate handler 2020-02-13 23:58:44 +01:00
sowle
f298afde10
crypto: ge_scalarmult_p3 implemented (scalar multiplication returning point in ge_p3 format) 2020-02-14 01:57:31 +03:00
cryptozoidberg
5cc30aa01d
added seed data to inital api calls 2020-02-13 22:28:17 +01:00
cryptozoidberg
74092e500b
fixed bug in generate/restore api 2020-02-13 21:29:07 +01:00
sowle
2a12f5ecb5
tx pool: new soft rule: standalone txs will be rejected while BCS is in CP zone (more security when checkpoints will be enabled)
(also, this should fix gen_checkpoints_and_invalid_tx_to_pool test that was especially written to cover this case)
2020-02-13 15:55:58 +03:00
cryptozoidberg
c4a423f6f5
fixed native library for auto-start of sync process in wallet thread 2020-02-13 01:44:30 +01:00
cryptozoidberg
34b8233087
fixed wallet path bug 2020-02-12 20:58:36 +01:00
cryptozoidberg
92cce9628c
enebale remote node flag 2020-02-12 20:55:11 +01:00
cryptozoidberg
b931199386
fixed initialization 2020-02-12 20:36:54 +01:00
sowle
e9e61a05d0
coretests: adapted few tests to new tx pool rule (no standalone txs acceptable while BCS is in CP zone):
gen_checkpoints_attachments_basic, gen_checkpoints_invalid_keyimage, multisig_and_checkpoints_bad_txs, prun_ring_signatures, hard_fork_1_checkpoint_basic_test, multisig_and_checkpoints, gen_checkpoints_prun_txs_after_blockchain_load
2020-02-12 15:59:51 +03:00
sowle
a00b31a9b6
coretests: build fixed 2020-02-12 15:56:09 +03:00
cryptozoidberg
480c1a0bdc
fixed param for generate 2020-02-12 00:30:04 +01:00
cryptozoidberg
b43a09b6e4
removed static init of core components from ios build 2020-02-12 00:19:30 +01:00
cryptozoidberg
545288f393
cut subscribe_to_core_events 2020-02-12 00:14:47 +01:00
cryptozoidberg
8865c0c270
why BOOST_CLASS_VERSION was there?? 2020-02-12 00:10:31 +01:00
cryptozoidberg
fd14a990e0
cut //#include daemon/daemon_commands_handler.h 2020-02-11 23:58:44 +01:00
cryptozoidberg
79902a2a16
surgery continued: cut headers 2020-02-11 23:51:35 +01:00
cryptozoidberg
b84949295b
cut other core-related code from IOS_BUILD 2020-02-11 23:34:16 +01:00
cryptozoidberg
c3296d4603
put core and other heavy core-dependent code under conditional compilation 2020-02-11 23:12:31 +01:00
cryptozoidberg
f537b18ba2
Fixed a link of discord badge 2020-02-11 18:02:10 +01:00
cryptozoidberg
680cab545d
Added discord badge 2020-02-11 17:56:15 +01:00
cryptozoidberg
abd1d47aa3
check for wrong initialization code on app level 2020-02-11 17:13:03 +01:00
cryptozoidberg
056d77d9c3
added close wallet to plain wallet 2020-02-11 17:06:14 +01:00
sowle
3f69145426
coretests: gen_checkpoints_and_invalid_tx_to_pool test added 2020-02-11 18:55:48 +03:00
cryptozoidberg
29945bfd15
fixed wallets_manager init signature 2020-02-11 04:07:32 +01:00
cryptozoidberg
88a657cbb7
fixed bugs and code clean up 2020-02-11 03:46:47 +01:00
cryptozoidberg
1c35304d0b
introduced new long-call mode for wallets_manager 2020-02-11 03:10:27 +01:00
cryptozoidberg
c6dd8b1153
massive changes to wallets_manager 2020-02-11 01:14:28 +01:00
cryptozoidberg
b52391aa3b
added missing files, fixed build 2020-02-10 22:47:06 +01:00
cryptozoidberg
adba06c610
Merge branch 'wallet_refactoring' into develop 2020-02-10 21:44:50 +01:00
cryptozoidberg
8580ae93d8
daemon_backend renamed to wallets_manager and moved to wallet folder(wallet lib) 2020-02-10 21:44:06 +01:00
cryptozoidberg
0b1b38a85e
utxo money format changed to brief 2020-02-09 20:21:24 +01:00
cryptozoidberg
fb60f6d5fe
utxo generated with money format 2020-02-09 18:30:52 +01:00
cryptozoidberg
f219493a7e
added seed to wallet info 2020-02-08 23:47:26 +01:00
sowle
599b97d633
build: minor whitespace fix 2020-02-08 18:36:31 +03:00
cryptozoidberg
937365c3bf
reduced log output 2020-02-08 04:22:24 +01:00
sowle
ae2e1955fe
core: fixed few bugs in prune_ring_signatures_and_attachments_if_need() 2020-02-07 12:39:54 +03:00
cryptozoidberg
543558aca7
fixed cmake 2020-02-04 00:17:15 +01:00
cryptozoidberg
bc9bbe8d10
added print_money method 2020-02-03 19:28:05 +01:00
cryptozoidberg
5dfefd20ca
fixed bug in rpc map macro 2020-02-03 18:19:54 +01:00
cryptozoidberg
577733133f
epee's json rpc lib extended a bit beyond JSON RPC specification 2020-02-03 18:00:41 +01:00
cryptozoidberg
1b94af5444
Merge branch 'mobile' into develop 2020-02-03 17:16:55 +01:00
cryptozoidberg
1bcd7e8bb6
clean cmake edits 2020-02-03 17:16:25 +01:00
cryptozoidberg
834e679b8c
Merge branch 'develop' into mobile 2020-02-03 17:00:09 +01:00
cryptozoidberg
150a6ccde1
Merge branch 'develop' of github.com:hyle-team/zano into develop 2020-02-03 16:59:54 +01:00
cryptozoidberg
7129c80832
extended rpc api for plain wallet needs 2020-02-03 16:58:02 +01:00
cryptozoidberg
ff0bf64357
added synchronization to plain_wallet 2020-02-03 02:11:20 +01:00
cryptozoidberg
6805e9abed
extended plain wallet api for interruptin sync thread-2 2020-02-01 23:49:59 +01:00
cryptozoidberg
5a0dc75aab
extended plain wallet api for interruptin sync thread 2020-02-01 23:47:37 +01:00
cryptozoidberg
c2ca2c8177
extended api for working with filenames and bundle dir 2020-02-01 19:43:57 +01:00
cryptozoidberg
6ff8669843
added wallets list api 2020-01-28 21:56:17 +01:00
cryptozoidberg
47ef958d7e
added library version 2020-01-28 21:37:04 +01:00
cryptozoidberg
e690673498
added logs initializaion 2020-01-28 18:23:09 +01:00
cryptozoidberg
488be10664
added macos workaround for 'invokes deleted constructor' 2020-01-28 00:58:48 +01:00
cryptozoidberg
98f2d5e155
fixed compilation issue 2020-01-28 00:49:12 +01:00
cryptozoidberg
4729cffbae
changed plain wallet iface to avoid pointers 2020-01-28 00:47:44 +01:00
sowle
5622ce550b
minor fixes in suspicious block time check 2020-01-28 02:37:54 +03:00
sowle
0d72922877
coretests: multisig_and_checkpoints fixed (changes in account_base shifted random sequence) 2020-01-28 02:35:07 +03:00
cryptozoidberg
ef856d01cc
diff switched to more portable ver 2020-01-27 22:42:18 +01:00
cryptozoidberg
ccb304dce9
added preprocessor defintion for ios 2020-01-27 22:20:22 +01:00
cryptozoidberg
b1dbb8867e
fixed wrong line in cmake 2020-01-27 22:16:44 +01:00
cryptozoidberg
5d70ada83e
disabled policies 2020-01-27 21:53:00 +01:00
cryptozoidberg
0eac604ef8
added install instructions 2020-01-27 21:46:40 +01:00
cryptozoidberg
cfe9837ba8
tested plain wallet interface, and fixed errors 2020-01-27 20:57:12 +01:00
sowle
4ac3c1645e
wallet2: minor fix (catch an exception by reference, not but value) 2020-01-24 11:42:11 +03:00
sowle
f29492d98a
simplewallet: don't put payment id into tx attachment if it's empty (fixed a tiny bug) 2020-01-23 20:28:10 +03:00
sowle
d9eb5fe513
=== version bump: 1.1.4.77 -> 1.1.5.78 === 2020-01-23 20:26:31 +03:00
sowle
e66a404d08
wallet: self-directed tx with payment id are not allowed anymore (soft rule) to avoid issues with 3rd p services 2020-01-23 20:24:22 +03:00
cryptozoidberg
03f04c9dd9
implemented exented wallet api, finished plain wallet test(but not tested yet) 2020-01-23 03:26:25 +01:00
cryptozoidberg
c0f1d7b577
fixed cmake, fixed compilation problems, implemented plain_api test draft 2020-01-21 01:31:16 +01:00
cryptozoidberg
e6dd2d28a5
implemented invoke for plain_wallet amd fixed return codes to json 2020-01-18 23:23:47 +01:00
cryptozoidberg
cbce45285c
implemented synchronyzation thread 2020-01-17 23:44:22 +01:00
cryptozoidberg
068bda9052
implemented restore and generate wallet 2020-01-16 23:52:29 +01:00
cryptozoidberg
e4dfa7d519
implementation of the plain wallet api guts(in progress) 2020-01-15 22:06:49 +01:00
cryptozoidberg
dc215dacb4
added class drafts for plain wallet api for mobile app - added missing files 2020-01-14 23:30:17 +01:00
cryptozoidberg
41d4a9b0d3
added class drafts for plain wallet api for mobile app 2020-01-14 23:30:17 +01:00
cryptozoidberg
cab160112c
inital preparation for mobile native library(very dirty) 2020-01-09 17:06:02 +01:00
cryptozoidberg
a8f1e99424
shortent mobile version libraries 2020-01-09 02:25:46 +01:00
cryptozoidberg
ea4f75a74f
minor cleanup 2020-01-09 02:06:11 +01:00
cryptozoidberg
dc74da0ae6
Merge branch 'develop' of github.com:hyle-team/zano into develop 2020-01-09 02:04:50 +01:00
sowle
e09955cb44
gui: more logs on configs loading/storing to help eliminate config issues 2019-12-28 05:32:54 +03:00
sowle
cc099507fa
Merge branch 'master' into develop 2019-12-28 03:14:52 +03:00
zetov
b6b98a9379 Close button (#151)
* close btn

* rebuild html
2019-12-27 18:34:10 +01:00
sowle
a819fceb5b
Merge branch 'release' 2019-12-27 19:39:18 +03:00
sowle
31d824ace9
=== build number: 76 -> 77 === 2019-12-26 18:09:41 +03:00
sowle
29a276f180
do not allow watch-only wallets be opened by GUI + refactoring 2019-12-26 18:08:57 +03:00
cryptozoidberg
2a141a2b59
got rid of annoying UPNP initialization delay 2019-12-26 01:36:48 +01:00
sowle
0f04017d2e
Merge branch 'develop' into release 2019-12-25 06:43:49 +03:00
zano build machine
b84f1325e3 === build number: 75 -> 76 === 2019-12-25 06:42:02 +03:00
sowle
4d496e3c35
macOS build script: daemon and simplewallet binaries are now available in Zano.app/Contents/MacOS 2019-12-25 06:22:18 +03:00
cryptozoidberg
ad44b430a5
extended export transfers command 2019-12-24 20:28:44 +01:00
sowle
209b1626c6
unittests: lmdb.2gb_test improved to catch a stochastic bug (2) 2019-12-20 03:15:54 +03:00
sowle
edbf8ecbb2
wallet2: minor fixes and log improvements 2019-12-20 03:14:57 +03:00
sowle
e80f778ec2
unittests: lmdb.2gb_test improved to catch a stochastic bug 2019-12-19 03:29:32 +03:00
zano build machine
8548e2d006 === build number: 74 -> 75 === 2019-12-18 00:47:16 +03:00
sowle
9e6f747410
RPC: sweep_below method implemented 2019-12-17 12:24:28 +03:00
sowle
3a4a49da78
simplewallet sweep_below bugfixing 2019-12-17 12:23:38 +03:00
sowle
e904559dda
wallet2; store_unsigned_tx_to_file_and_reserve_transfers made able to store to a string as well 2019-12-17 12:22:36 +03:00
sowle
2280cbe990
construct_tx made able to work with tracking keys (for tx size estimation) 2019-12-17 12:18:39 +03:00
sowle
d4ba0946b9
wallet2: sweep_below optimized, logs added 2019-12-16 14:51:36 +03:00
sowle
42ff9ca9bf
simplewallet: payment ids in list_recent_transfers command now printed as hex 2019-12-16 14:50:32 +03:00
ArqTras
9a55a0b7da GUI compilation update (#145) 2019-12-15 15:35:40 +02:00
sowle
aa2e4f716d
coretests: pos_minting_tx_packing fixed 2019-12-15 01:01:32 +03:00
sowle
7138a70642
sweep_below implemented 2019-12-14 18:31:19 +03:00
sowle
897b53cd93
wallet2 refactoring: mark_transfers_with_flag made more robust, store_unsigned_tx_to_file_and_reserve_transfers extracted 2019-12-14 18:29:05 +03:00
sowle
0587af1ca5
wallet2 : finalize_transaction made able not to store tx key, if needed 2019-12-13 18:44:00 +03:00
sowle
6b415b2d2c
wallet2: clear_transfers_from_flag made exception-free (it's often being called from a catch-clause) 2019-12-13 18:42:15 +03:00
sowle
6a8315364a
wallet: fixed a rare bug in generate_packing_transaction_if_needed (2) 2019-12-12 04:38:01 +03:00
sowle
e8ce7c20a3
coretests: multisig_wallet_test improved to cover more 2019-12-11 20:49:26 +03:00
sowle
c7db3f0fee
wallet: fixed a rare bug in generate_packing_transaction_if_needed 2019-12-11 20:48:42 +03:00
sowle
2ee199bcbc
wallet: WALLET_TRANSFER_DETAIL_FLAG_MINED_TRANSFER flag is now being set more correctly 2019-12-10 14:18:22 +03:00
sowle
3ccbaca823
simplewallet: --pos-mining-reward-address command-line option implemented 2019-12-10 00:50:30 +03:00
sowle
98c782565f
coretests: pos_minting_tx_packing added 2019-12-06 19:03:12 +03:00
zano build machine
3b0479c92e === build number: 73 -> 74 === 2019-12-06 00:28:40 +03:00
zetov
45c61560ba Pagination (#144)
* Pagination + html

* offset + rebuild

* open wallet

* conflict
2019-12-05 21:48:18 +01:00
cryptozoidberg
a199d87163
added parameter on open wallet for inital tx count 2019-12-05 21:19:16 +01:00
cryptozoidberg
fdec0e5b7b
fixed misprint in mainwindow 2019-12-05 16:48:04 +01:00
zano build machine
a1d0a7f53d === build number: 72 -> 73 === 2019-12-05 18:14:18 +03:00
zetov
182e4f82e4 Pagination + html (#143)
* Pagination + html

* offset + rebuild
2019-12-05 16:06:05 +01:00
cryptozoidberg
52083f20b0
Merge branch 'txpool_optimisation' into develop 2019-12-05 16:05:32 +01:00
cryptozoidberg
c19ee435fc
Merge branch 'develop' into txpool_optimisation 2019-12-05 16:05:01 +01:00
sowle
407df8762e
performance_tests : free space check improved 2019-12-05 17:30:22 +03:00
sowle
5e0addba76
simplewallet: typos fixed 2019-12-05 02:25:41 +03:00
cryptozoidberg
c863094c11
fixed misprint 2019-12-03 23:55:02 +01:00
sowle
6af5dca26c
currency_format_utils: added error check to lookup_acc_outs() 2019-12-03 21:18:03 +03:00
cryptozoidberg
98636c52a1
CIRITCAL_OPERATION macro compatible with *nix 2019-12-03 04:30:40 +01:00
cryptozoidberg
7d4f95ca53
fixed problem with seed nodes + transactions loaded to onboard container instead of prevalidation in tx pool 2019-12-03 04:16:17 +01:00
cryptozoidberg
86d98d3e67
fixed linux compilation issue 2019-12-03 03:16:54 +01:00
cryptozoidberg
eebac8eca4
disabled unused macro 2019-12-03 02:25:02 +01:00
cryptozoidberg
91be33581a
added command to simplewallet for printing output distribution 2019-12-03 02:18:45 +01:00
cryptozoidberg
3eb68cb8fb
added log message 2019-12-03 01:54:08 +01:00
cryptozoidberg
d337500b9c
removed unused files 2019-12-03 01:49:03 +01:00
sowle
41a095dac9
wallet: more verbose logging on storing 2019-12-02 15:08:45 +03:00
zano build machine
77f5ac1cdd === build number: 71 -> 72 === 2019-12-02 14:52:28 +03:00
cryptozoidberg
9b8e438ab4
fixed simplewallet issues with get_recent_transfers 2019-12-02 00:20:16 +01:00
cryptozoidberg
6464a65b31
fixed open_wallet call 2019-12-01 23:42:10 +01:00
cryptozoidberg
7f374eab2a
fixed missing total field in get_recent_transfers struct 2019-12-01 23:31:05 +01:00
cryptozoidberg
e82bd6b575
added new test, fixed multiple bugs 2019-11-29 21:43:17 +01:00
sowle
e3f2e2a30b
db: lmdb: minor fix in error handling macro 2019-11-29 12:34:10 +03:00
cryptozoidberg
821776d198
fixed wallet functions signatures 2019-11-28 23:34:24 +01:00
cryptozoidberg
d7c67b196c
added explicit transactions to blocktemplate 2019-11-28 05:28:36 +01:00
cryptozoidberg
cdfd321387
basic implementation of tx packing(in progress) 2019-11-27 03:19:10 +01:00
sowle
b043f8cc0f
wallet: getting rid of unused code 2019-11-26 12:13:56 +03:00
sowle
781273fb0c
exceptions handling in bc_offers_service::~bc_offers_service() 2019-11-26 12:13:14 +03:00
sowle
75f3fb9500
core: minor fix in is_out_to_acc() 2019-11-25 13:43:33 +03:00
sowle
6d1f954f5d
minor fix (uninitialized member variable) 2019-11-22 16:18:03 +03:00
cryptozoidberg
c306693806
all tests fixed 2019-11-22 00:47:21 +01:00
sowle
03e4dfbbd2
fixed possible exception issues in miner dtor 2019-11-21 16:45:44 +03:00
sowle
3455811cc3
core: CATCH_ENTRY_NO_RETURN made parameterless, CATCH_ENTRY_NO_RETURN_CUSTOM added 2019-11-21 16:44:42 +03:00
cryptozoidberg
4eb23c1954
fixed gen_double_spend_in_the_same_block 2019-11-21 00:46:05 +01:00
cryptozoidberg
cf07085e68
fixed two coretests 2019-11-20 23:03:27 +01:00
sowle
69143d8288
core: fixed uninitialized variable in construct_miner_tx 2019-11-20 10:25:45 +03:00
sowle
5db4024be9
wallet: fixed minor issue with dump_transfers() 2019-11-20 10:24:47 +03:00
sowle
c51ef0cda7
p2p: minor issues fixed 2019-11-19 18:08:21 +03:00
cryptozoidberg
da2b26f9fe
fixed coretests regarding to new tx handling schema 2019-11-19 02:28:15 +01:00
cryptozoidberg
37537b59f3
Merge branch 'develop' into txpool_optimisation 2019-11-16 22:39:57 +01:00
cryptozoidberg
6019ffccf8
changed currency_protocol_handler for onboard transactions 2019-11-16 21:25:48 +01:00
cryptozoidberg
57e0aa063d
pool code modificated to work with onboard transactions 2019-11-16 20:26:40 +01:00
cryptozoidberg
17e36012de
transaction pool optimisation: basic implemntation 2019-11-16 01:06:21 +01:00
cryptozoidberg
499f822e97
moved tx semantics validation to separate funtion, added to pool validation and to core validation 2019-11-15 23:58:09 +01:00
sowle
f70489a02d
coretests: more correct fix for arg_db_engine bug 2019-11-15 14:10:01 +03:00
cryptozoidberg
d1e6ef429b
refactoring of tx pool/core block's transactions handling 2019-11-15 01:04:51 +01:00
sowle
263aa91eec
coretests: temporary fix for arg_db_engine 2019-11-15 00:24:51 +03:00
cryptozoidberg
4fadc8b9cb
added header to fix compilarion issue 2019-11-14 19:58:56 +01:00
cryptozoidberg
5b14456c61
changed parameters of get_block_template 2019-11-14 19:53:38 +01:00
cryptozoidberg
57d1245ab6
minor coverity fix 2019-11-14 17:53:08 +01:00
sowle
320249f1f6
basic_db_accessor: fixed a bug in close() 2019-11-14 06:03:24 +03:00
sowle
cd1e3c115d
unittests: added db_accessor_tests.dtor_without_init (exposes a minor bug) 2019-11-14 06:00:06 +03:00
sowle
10ea355ae9
don't register arg_db_engine option in daemon (it's registered in bcs) 2019-11-14 05:57:02 +03:00
sowle
a5990a00b7
select_db_engine_from_arg improvements and arg_db_engine option fix 2019-11-14 05:54:52 +03:00
sowle
f67ad76f38
1) LOCAL_FUNCTION_DEF__ made less verbose for gcc 2) fixed gcc compilation 2019-11-14 03:12:22 +03:00
sowle
0c5fcfe74e
reading of uninitialized variable fixed in a log message in get_block_reward() 2019-11-13 16:30:49 +03:00
sowle
c1e75c3445
epee: syncobj & try-catch macros: fix & minor refactoring 2019-11-13 16:28:21 +03:00
cryptozoidberg
360c8bf6bd
exception safe destructor(CID 273246 (#5-1 of 5): Uncaught exception (UNCAUGHT_EXCEPT)) 2019-11-12 21:54:19 +01:00
sowle
ca0ec026e1
wallet rpc: correct exception handling (#130) 2019-11-12 11:35:09 +03:00
sowle
506b2e57e1
wallet: more consistent and less drama logging when unable to connect to the daemon 2019-11-12 11:33:39 +03:00
sowle
6d51f367bc
p2p: minor log improvement for net_node.inl 2019-11-12 11:31:49 +03:00
sowle
470cde7948
epee: improved logs for abstract_tcp_server (warn about potential issue) and http_client (less drama when unable to connect) 2019-11-12 11:30:27 +03:00
sowle
2fd120f201
add LOCATION_CSTR macro 2019-11-12 11:28:09 +03:00
cryptozoidberg
215a0b1786
CID 273225 (#1 of 1): Using invalid iterator (INVALIDATE_ITERATOR) 2019-11-11 03:25:40 +01:00
cryptozoidberg
cf7dc36cf7
added return value check(coverity STREAM_FORMAT_STATE) 2019-11-11 02:04:49 +01:00
cryptozoidberg
2cde1c530d
fixed uninitialized member in idle_callback_conext_base 2019-11-11 01:55:00 +01:00
cryptozoidberg
6e456458bb
made log messages exception safe 2019-11-10 19:15:17 +01:00
cryptozoidberg
cbf79bbc7a
changed seed list 2019-11-10 01:18:52 +01:00
cryptozoidberg
622b6117fd
Extended build instructions and fixed markdown 2019-11-09 21:17:19 +01:00
sowle
2f7a92674c
=== build version: 1.1.3.70 -> 1.1.4.71 === 2019-11-09 00:30:35 +03:00
sowle
129ad4fbf9
libmdbx: update as they resolved https://github.com/leo-yuriev/libmdbx/issues/66 2019-11-09 00:21:33 +03:00
sowle
e536e06cc3
wallet2: more correct work with transfers flags when daemon rejects a tx in accept_proposal() and request_cancel_contract() (related to #47) 2019-11-07 14:44:22 +03:00
sowle
07ebf54e86
coretests: fixed data folder clearing in Linux 2019-11-07 14:06:30 +03:00
sowle
d294c123a2
coretests: escrow_acceptance_and_balance removed as superseded by escrow_balance 2019-11-07 13:42:20 +03:00
sowle
c8138225d2
coretests: escrow_balance test added for more careful balance checking in contracts (related to #47) 2019-11-07 13:39:46 +03:00
sowle
db38a029fd
Merge branch 'master' into develop 2019-11-02 03:00:43 +03:00
sowle
5e8e7bff49
Merge branch 'release' 2019-11-02 02:49:08 +03:00
cryptozoidberg
0305c59fd8
Added Coverity badge 2019-11-02 00:18:49 +01:00
sowle
7ba96b61ec
Merge branch 'develop' into release 2019-10-31 16:34:12 +03:00
sowle
d5c7526440
=== build number: 69 -> 70 === 2019-10-31 10:55:17 +03:00
sowle
3e76185988
wallet: fixed wrong contract id in send_escrow_proposal 2019-10-31 10:54:37 +03:00
sowle
3f7c435207
whitespaces fixed 2019-10-31 10:53:34 +03:00
sowle
633c93721e
wallet: an effort to fix #47 2019-10-31 10:52:59 +03:00
sowle
fd1acadecb
mdbx unicode support: partially fixed (fix from mdbx is still required) 2019-10-29 19:40:15 +03:00
sowle
a6efee0c24
fixed compilation for macOS 2019-10-29 02:12:59 +03:00
sowle
9567cc3ab2
coretests: fixed missed db option 2019-10-29 02:04:38 +03:00
sowle
d4721c317b
coretests: clean_data_directory fixed 2019-10-29 01:47:36 +03:00
sowle
d8df80335d
=== build version: 1.1.2 -> 1.1.3 === 2019-10-28 22:03:55 +03:00
sowle
307d45c9da
=== build number: 68 -> 69 === 2019-10-28 21:58:01 +03:00
cryptozoidberg
3cace5defe
Merge branch 'libmdbx' into develop 2019-10-28 19:52:42 +01:00
cryptozoidberg
19d3ba7fb2
merged from develop 2019-10-28 19:52:15 +01:00
sowle
da782cdd73
wallet: fix for #47 2019-10-28 21:07:34 +03:00
sowle
706395e88e
coretests: escrow_acceptance_and_balance test added to cover #47 case more carefully 2019-10-28 20:45:25 +03:00
cryptozoidberg
2e51748cfb
removed unused code 2019-10-25 22:59:45 +02:00
cryptozoidberg
ecf5183a77
fixed libmdbx to latest commit 2019-10-25 21:27:30 +02:00
cryptozoidberg
5964dd203b
pulled libmdbx to latest commit 2019-10-25 20:48:55 +02:00
cryptozoidberg
30cbbeb9ab
fixed warning related to ? operator 2019-10-25 01:04:30 +02:00
cryptozoidberg
8f96d5f36a
fixed linux build 2019-10-25 00:45:33 +02:00
cryptozoidberg
49a4b1cb35
fixed links in modules file 2019-10-25 00:24:35 +02:00
cryptozoidberg
1ade55eb17
libmdbx set as an option for command line parameter(--db-engine) 2019-10-25 00:13:38 +02:00
cryptozoidberg
d809bbdb20
libmdbx linked as submodule 2019-10-25 00:10:31 +02:00
cryptozoidberg
3f31f31179
removed libmdbx sources(to link it in next commit) 2019-10-25 00:07:04 +02:00
sowle
b9335fefc8
wallet: an attempt to fix #47 2019-10-24 09:40:02 +03:00
sowle
7c5202dcab
wallet: fixed a bug with removing a temp file when write fails 2019-10-24 08:13:37 +03:00
sowle
acc6d1a53b
finalized wallet integrity on store, closes #57 2019-10-24 08:12:28 +03:00
sowle
4135740ffd
p2p: formatting and comments 2019-10-24 00:46:17 +03:00
cryptozoidberg
f75be80a3f
Merge branch 'develop' into libmdbx 2019-10-23 15:01:30 +02:00
sowle
998ab7cfa8
p2p: immediately close outgoing connection if handshake fails (fixes a rare connectivity bug) 2019-10-23 14:07:00 +03:00
sowle
309821c985
performance tests: free space check test improved (#133) 2019-10-23 14:04:57 +03:00
sowle
b24f3b5d6c
p2p: attempt to fix double connections between nodes (#135) 2019-10-23 14:03:47 +03:00
sowle
b398de6e9f
minor log improvements in currency protocol and epee's net_utils_base 2019-10-19 06:38:21 +03:00
sowle
9d829d2cb3 === build number: 67 -> 68 === 2019-10-18 18:56:20 +03:00
sowle
2ba3f5afac
tx pool: remove stuck txs with key image conflicts from pool once conflicted tx has enough confirmations in the blockchain (closes #52) 2019-10-17 14:07:32 +03:00
sowle
87a294e58b
coretests: tx_key_image_pool_conflict improved to cover more cases, comments added 2019-10-17 14:04:13 +03:00
sowle
9c21c114aa
performance tests: free space check test improvements 2019-10-17 14:03:17 +03:00
cryptozoidberg
f2b8562813
fix of the levin(stolen from @moneromooo-monero) 2019-10-16 22:53:58 +02:00
sowle
b4c1542597
performance_tests: free_space_check (#133) 2019-10-16 19:24:18 +03:00
sowle
e9bc068bfb
coretests: tx_key_image_pool_conflict test added 2019-10-16 16:34:34 +03:00
sowle
c7004d0420
coretests: test_chain_unit_enchanced::remove_stuck_txs added 2019-10-16 16:32:58 +03:00
sowle
8246498d94
attempt to fix core tests 2019-10-16 12:35:35 +03:00
sowle
8a40f7b9fd
logs: less drama in time sync when it's pretty much ok 2019-10-15 14:38:42 +03:00
zetov
8ca969448a price update + password text fix (#134) 2019-10-14 22:07:03 +02:00
sowle
ac8401db73
temporary disable daemon stop on low free space due to issue #133 2019-10-14 15:28:35 +03:00
cryptozoidberg
5dabc72bda
added huge comment to prevent future shoot in the foot 2019-10-13 01:38:55 +02:00
cryptozoidberg
fdddf58ebf
attempt to fix #127 2019-10-13 01:27:03 +02:00
cryptozoidberg
1b6fff2bf3
fixed resync market issue 2019-10-11 19:52:04 +02:00
cryptozoidberg
80a0da7b27
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-10-11 16:23:00 +02:00
sowle
47d61b6424
p2p: fix for filtering old clients mechanism #128 (2) 2019-10-11 00:02:41 +03:00
sowle
adc08088aa
p2p: fix for filtering old clients mechanism #128 2019-10-10 23:47:15 +03:00
sowle
609969799e
p2p: check_remote_client_version() moved to more appropriate place 2019-10-10 16:22:34 +03:00
sowle
02c04aa300
p2p: filter out old clients by version + unittest #128 2019-10-10 11:12:28 +03:00
sowle
e3cc89846e
wallet: make sure there's enough disk space on load, store and wallet generation (simplewallet + GUI) #57 2019-10-09 16:01:33 +03:00
sowle
26c00a8a68
Merge branch 'release' 2019-10-08 15:47:41 +03:00
sowle
316ae9ded2
Merge branch 'develop' into release 2019-10-08 15:46:12 +03:00
sowle
64d0d1a4ea
fixed testnet synchronization 2019-10-07 08:18:58 +03:00
sowle
ddc5a4468a
Merge branch 'release' into develop 2019-10-07 08:18:19 +03:00
sowle
88f868c5be === build number: 66 -> 67 === 2019-10-06 00:27:35 +03:00
cryptozoidberg
0d1c9c1c29
Merge branch 'develop' into release 2019-10-05 23:24:36 +02:00
cryptozoidberg
aa9931cc6c
Merge branch 'release' into develop 2019-10-05 23:24:21 +02:00
cryptozoidberg
ab70b7b117
Merge branch 'release' of github.com:hyle-team/zano into release 2019-10-05 23:24:07 +02:00
cryptozoidberg
6441183d25
marketplace documentation and rpc methods renamed 2019-10-05 23:23:44 +02:00
sowle
3e6400ca60
Merge branch 'develop' into release 2019-10-05 15:19:24 +03:00
sowle
ed733c3210
=== project version: 1.1.0.65 -> 1.1.2.66 === 2019-10-05 15:18:46 +03:00
sowle
c29c7a6a5f
fix gcc compilation for older boost versions 2019-10-05 15:12:02 +03:00
sowle
40ba8cdfe4
Merge branch 'release' 2019-10-05 06:57:03 +03:00
zetov
7f407b82a2 Minor fix (#124)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width

* add type '.csv',validation empty contact list/file

* merge

* fix data.foreach & rebuild html

* fix countdown + counter of blocks

* fix logout without master pass

* fix sync block view

* fix modal

* fix lock transaction

* icons functional

* animated icons

* rebuild html

* tooltips

* fix logo, sidebar tooltip delay, multi languages

* confirm modal

* allowed symbols

* rebuild html

* fix conf. pop up, tooltip delay, rebuild html

* Portuguese fix(on/off)

* cutted letter "g"

* scale settings

* change view confirm pop up

* fix icons

* fix tooltips

* new contacts display  after open import file

* change syncing text

* rebuild html
2019-10-04 17:06:20 +02:00
Ravaga
a9e1810b4d portuguese translation 2019-10-03 20:43:51 +02:00
sowle
455ac69b89
Merge branch 'develop' into release 2019-10-03 21:37:54 +03:00
sowle
408a7dea89 === build number: 64 -> 65 === 2019-10-03 20:33:15 +03:00
zetov
dc93c3fa2b 01.10 fix (#123)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width

* add type '.csv',validation empty contact list/file

* merge

* fix data.foreach & rebuild html

* fix countdown + counter of blocks

* fix logout without master pass

* fix sync block view

* fix modal

* fix lock transaction

* icons functional

* animated icons

* rebuild html

* tooltips

* fix logo, sidebar tooltip delay, multi languages

* confirm modal

* allowed symbols

* rebuild html
2019-10-03 16:56:24 +02:00
cryptozoidberg
bfe8b17c0a
Merge branch 'market_rpc_api' into develop 2019-10-02 21:18:15 +02:00
cryptozoidberg
9d3e2dee6b
Merge branch 'develop' into market_rpc_api 2019-10-02 21:06:50 +02:00
cryptozoidberg
601dd3560c
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-10-02 21:05:58 +02:00
sowle
ffe7b1f3b4
=== build number: 63 -> 64 === 2019-10-02 03:42:35 +03:00
sowle
da79610fac
from now new passwords must consist of allowed characters only 2019-10-02 03:41:24 +03:00
sowle
b0f376b7cd
=== build number: 62 -> 63 === 2019-09-29 23:53:59 +03:00
sowle
d4a9a0a77d
gui: fixed a bug with Qt logs in release 2019-09-29 23:53:03 +03:00
sowle
f9a72e3300
unit_tests: fork_choice_rule_test fixed 2019-09-29 22:56:50 +03:00
sowle
6f4b36a8a8
minor naming fix 2019-09-28 18:14:10 +03:00
sowle
e0967147bd
--enable-qt-logs implemented 2019-09-28 18:02:25 +03:00
cryptozoidberg
b2036b8c97
fixed warnings 2019-09-27 22:47:24 +02:00
cryptozoidberg
01bc8ef53d
Merge branch 'develop' into libmdbx 2019-09-27 20:34:00 +02:00
cryptozoidberg
60f930b0be
Merge branch 'libmdbx' of github.com:hyle-team/zano into libmdbx 2019-09-27 20:33:54 +02:00
cryptozoidberg
ec4b6caee5
Merge branch 'der_hint_improve' into develop 2019-09-27 20:33:22 +02:00
cryptozoidberg
58acfb58b0
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-09-27 20:32:09 +02:00
sowle
5724da70f3 === build number: 61 -> 62 === 2019-09-27 21:27:06 +03:00
zetov
7f7dca7736 animated icons (#122)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width

* add type '.csv',validation empty contact list/file

* merge

* fix data.foreach & rebuild html

* fix countdown + counter of blocks

* fix logout without master pass

* fix sync block view

* fix modal

* fix lock transaction

* icons functional

* animated icons

* rebuild html
2019-09-27 18:08:27 +02:00
sowle
5c0e565f74
=== build number: 60 -> 61 === 2019-09-27 18:51:24 +03:00
sowle
11d0864806
simplewallet: fixed --option<space><value> vs --option=<value> bug #121 2019-09-27 18:46:56 +03:00
cryptozoidberg
a38032d39a
Merge branch 'develop' into der_hint_improve 2019-09-27 17:24:41 +02:00
cryptozoidberg
9283b7b5fd
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-09-27 17:24:25 +02:00
cryptozoidberg
a5c02c7d8c
improvements over wallet balance caclulations algo 2019-09-27 17:16:18 +02:00
sowle
b1af1d7daa
=== build number: 59 -> 60 === 2019-09-27 05:37:56 +03:00
sowle
3d574ca7a8
common: parse_command_line minor improvement 2019-09-27 05:37:09 +03:00
sowle
91dc7e6457
filesystem unicode support: simplewallet improvements (command line made unicode-able) #121 2019-09-27 05:36:31 +03:00
cryptozoidberg
ef8f61fbc4
fixed relative_cumulative_difficulty issue 2019-09-26 22:07:47 +02:00
cryptozoidberg
8ee45350ab
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-09-26 15:26:51 +02:00
cryptozoidberg
7eb7849f86
Merge branch 'develop' into libmdbx 2019-09-26 15:04:39 +02:00
cryptozoidberg
b916308a06
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-09-26 15:03:46 +02:00
sowle
488b31918e
=== build number: 58 -> 59 === 2019-09-26 03:16:19 +03:00
sowle
6ebe55506e
restored p2p deinit for GUI 2019-09-26 03:14:50 +03:00
sowle
4b2b8bc273
filesystem unicode refactoring: many fixes and improvements for #121 2019-09-26 03:13:36 +03:00
sowle
be060abe10
filesystem unicode refactoring: serialize_obj_to_file, unserialize_obj_from_file 2019-09-26 01:08:17 +03:00
sowle
53919c7fa6
Merge branch 'unicode_refactoring' into develop 2019-09-25 17:12:11 +03:00
sowle
d66e07ef1a
filesystem unicode refactoring WIP3 2019-09-25 17:09:38 +03:00
cryptozoidberg
1a9a97e21d
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-09-25 14:53:04 +02:00
sowle
d90517a667
Merge branch 'unicode_refactoring' into develop 2019-09-25 07:40:58 +03:00
sowle
b9d17ee4c2
Merge branch 'release' into develop 2019-09-25 07:40:02 +03:00
sowle
283994e6cd
removed temp test 2019-09-25 07:33:53 +03:00
sowle
ceb1739f23
filesystem unicode support: WIP2 2019-09-25 06:22:00 +03:00
cryptozoidberg
d0ea59aebc
removed more warnings, code cleanup 2019-09-24 18:30:25 +02:00
cryptozoidberg
9920eb7541
Merge branch 'release' 2019-09-24 17:20:16 +02:00
cryptozoidberg
20a81cbe6d
fixed warnings 2019-09-24 17:19:43 +02:00
sowle
7706f0d6ac
filesystem unicode support: WIP 2019-09-24 17:49:04 +03:00
sowle
8062faf9f0
=== build number: 57 -> 58 === 2019-09-24 17:36:25 +03:00
cryptozoidberg
e0d4ad8792
Merge branch 'release' 2019-09-23 23:23:05 +02:00
cryptozoidberg
ce29cfc386
Merge branch 'release' of github.com:hyle-team/zano into release 2019-09-23 23:22:28 +02:00
sowle
14bd668e9a === build number: 57 -> 58 === 2019-09-23 23:12:44 +03:00
cryptozoidberg
88073e3003
added more logs + fixed issue with forgotten cumulative_diff_precise_adjusted 2019-09-23 23:09:26 +03:00
cryptozoidberg
22a5c44089
added more logs + fixed issue with forgotten cumulative_diff_precise_adjusted 2019-09-23 21:51:25 +02:00
cryptozoidberg
c8e6498f53
improvements over derivation performance test 2019-09-20 19:24:45 +02:00
sowle
786614d588
gui: implemented terminal handler the same way it was done in daemon 2019-09-19 17:07:12 +03:00
sowle
9c3d9076aa
daemon: terminal handler implemented (may be helpful in a fighting with mysterious crashes) 2019-09-19 16:57:16 +03:00
sowle
705d4f3088
daemon: --disable-debug-p2p-requests option implemented (#51) 2019-09-19 16:55:07 +03:00
sowle
feb21033f2
daemon: debug_set_time_adj command added (for testing and debugging purpose) 2019-09-19 16:53:32 +03:00
sowle
77235ce072
NTP tools & core time sync checking were greatly improved
(addresses #50)
2019-09-19 16:51:58 +03:00
sowle
a2d2647840
fix gcc compilation 2019-09-11 14:32:45 +03:00
sowle
9693253847
db fixes from Boolberry:
basic_key_value_accessor::clear() fixed (correct return type and return false on failure)
basic_key_value_accessor::erase_validate() improved (removed unnecessary db request)
solo_db_value::operator t_value() fixed to work with serializable types as well
2019-09-11 13:40:57 +03:00
sowle
bc1a8c0ca0
unit_tests: import advanced lmdb tests from Boolberry (exposes few minor issues) 2019-09-11 13:39:31 +03:00
sowle
62af1716af
tests fixes:
coretests/random_state_manupulation_test
functional_tests/core_concurrency_test
unit_tests/db_accessor_tests.median_db_cache_test
2019-09-11 13:38:04 +03:00
sowle
d742e6ea2d
crypto: safety improvement: use PRNG manipulation from Boolberry, explicitly require USE_INSECURE_RANDOM_RPNG_ROUTINES defined for using it 2019-09-11 13:35:40 +03:00
sowle
f5dbbfd1d4
some warning fixed 2019-09-11 13:30:56 +03:00
cryptozoidberg
8d34c33d7e
removed wrong pass text 2019-09-11 07:45:09 +08:00
cryptozoidberg
7aed4b508c
Merge branch 'master' into develop 2019-09-08 20:03:29 +02:00
cryptozoidberg
cd8f37161a
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-09-08 20:03:23 +02:00
cryptozoidberg
7dd61aede6
make low fee message less dramatic 2019-09-08 20:02:42 +02:00
cryptozoidberg
ac33fc4331
Merge branch 'release' 2019-09-08 15:09:45 +02:00
sowle
e61d8de3df
coretests: hard_fork_1_checkpoint_basic_test completed 2019-09-07 12:48:13 +03:00
sowle
37d447845b
coretests: hard_fork_1_locked_mining_test enhanced 2019-09-07 12:47:31 +03:00
sowle
fd0e7c3f7d
minor fixes and impovements 2019-09-07 12:46:25 +03:00
cryptozoidberg
89ac994b59
fixed misprint and reduced building threads number 2019-09-07 00:46:15 +02:00
sowle
eb7bf075cf
coretests: hard_fork_1_pos_locked_height_vs_time greatly improved with additional checks 2019-09-06 18:59:59 +03:00
sowle
589f37bcd9
coretests: pos_block_builder improved 2019-09-06 18:59:02 +03:00
sowle
b77b915524 === build number: 56 -> 57 === 2019-09-06 17:23:10 +03:00
cryptozoidberg
16da947de3
Merge branch 'develop' into release 2019-09-06 16:22:49 +02:00
cryptozoidberg
77867d54a4
merge from release 2019-09-06 16:22:33 +02:00
cryptozoidberg
e6d35a8a7f
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-09-06 16:21:18 +02:00
cryptozoidberg
c064864a75
shifted hardfork date to 21 of september 2019-09-06 16:21:03 +02:00
sowle
3730826d6c === build number: 55 -> 56 === 2019-09-06 17:15:54 +03:00
zetov
b065a64d7d fix modal open wallet (#116)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width

* add type '.csv',validation empty contact list/file

* merge

* fix data.foreach & rebuild html

* fix countdown + counter of blocks

* fix logout without master pass

* fix sync block view

* fix modal
2019-09-06 15:50:06 +02:00
cryptozoidberg
888d97d27d
fixed bug with wallet deactivation on poor connection, related to PoS mining failures 2019-09-06 15:13:28 +02:00
zetov
d11a124142 fix sync block view (#115)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width

* add type '.csv',validation empty contact list/file

* merge

* fix data.foreach & rebuild html

* fix countdown + counter of blocks

* fix logout without master pass

* fix sync block view
2019-09-06 14:10:24 +02:00
cryptozoidberg
a78c475169
hardfork shifted to 15 of september 2019-09-05 20:43:30 +02:00
cryptozoidberg
83ce06e0ca
hardfork shifted to 15 of september 2019-09-05 20:42:47 +02:00
sowle
a9289e9cd6 === build number: 54 -> 55 === 2019-09-05 21:38:43 +03:00
cryptozoidberg
af9ca4ba7d
Merge branch 'develop' into release 2019-09-05 20:15:52 +02:00
cryptozoidberg
11b549c114
versioning changed to more classic way 2019-09-05 20:15:14 +02:00
cryptozoidberg
b4b13faa2a
Merge branch 'develop' into release 2019-09-05 19:18:45 +02:00
cryptozoidberg
dcf7f659fe
Merge branch 'release' of github.com:hyle-team/zano into release 2019-09-05 19:18:25 +02:00
cryptozoidberg
a1bee7d7a8
Merge branch 'master' of github.com:hyle-team/zano 2019-09-05 18:25:34 +02:00
cryptozoidberg
4d1acdd783
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-09-05 18:25:00 +02:00
sowle
6f93fbd7a0
fix for PoS locking issue + enhanced naming 2019-09-05 19:08:10 +03:00
sowle
d111e014bb
coretests: hard_fork_1_pos_locked_height_vs_time added (exposes an issue) 2019-09-05 19:06:35 +03:00
zetov
dbb3bb7391 fix logout without masster password (#113)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width

* add type '.csv',validation empty contact list/file

* merge

* fix data.foreach & rebuild html

* fix countdown + counter of blocks

* fix logout without master pass
2019-09-05 16:32:18 +02:00
sowle
62242c448b
coretests: hard_fork_1_pos_and_locked_coins improvements 2019-09-05 16:16:11 +03:00
sowle
073a12f0ff
minor fixes 2019-09-05 16:15:21 +03:00
sowle
bdc640442c
build script windows: signing added 2019-09-04 15:23:04 +03:00
zetov
a849237b31 fix countdown + counter of blocks (#112)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width

* add type '.csv',validation empty contact list/file

* merge

* fix data.foreach & rebuild html

* fix countdown + counter of blocks
2019-09-04 13:34:03 +02:00
sowle
dbbef6a642 === build number: 53 -> 54 === 2019-09-02 19:33:46 +03:00
cryptozoidberg
993027ad42
hardfork date shifted to 10 of september 2019-09-02 18:33:20 +02:00
sowle
c29e72132b === build number: 52 -> 53 === 2019-09-02 17:49:04 +03:00
cryptozoidberg
5877638eb1
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-09-02 16:48:29 +02:00
cryptozoidberg
7f8ef2f3bf
attempt to fix issue with eraly mining before daemon got synced 2019-09-02 16:48:08 +02:00
sowle
c521bfe933 === build number: 51 -> 52 === 2019-09-01 23:59:23 +03:00
zetov
49ebfffe70 fix data.foreach & rebuild (#109)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width

* add type '.csv',validation empty contact list/file

* merge

* fix data.foreach & rebuild html
2019-09-01 22:58:31 +02:00
cryptozoidberg
0383fb78d4
fixed misprint in the fork choise rule 2019-08-31 22:56:25 +02:00
sowle
c6583f56c4 === build number: 50 -> 51 === 2019-08-31 17:06:53 +03:00
cryptozoidberg
c5820ce55e
Merge branch 'lmdb_18_revert' into develop 2019-08-31 16:05:15 +02:00
cryptozoidberg
23c8d4828d
Merge branch 'develop' into lmdb_18_revert 2019-08-31 16:04:48 +02:00
cryptozoidberg
eb4a10e18e
added missing file + code cleanup 2019-08-31 14:48:02 +02:00
cryptozoidberg
84dfc6917a
added cmake paramter to have mdbx as an option 2019-08-31 14:41:18 +02:00
cryptozoidberg
b69a9b9bf4
added missed () 2019-08-30 23:10:18 +02:00
cryptozoidberg
07cc6e4a68
re-configured platforms supportin cmake for libmdbx 2019-08-30 23:09:04 +02:00
cryptozoidberg
7a1de87972
fixed mispring 2019-08-30 22:10:48 +02:00
cryptozoidberg
2a0aafd7b3
added missing version.c file 2019-08-30 21:57:52 +02:00
cryptozoidberg
e2b9de59a9
added missing file 2019-08-30 21:51:33 +02:00
cryptozoidberg
1dee7bc139
changed conditions for cmake 2019-08-30 21:44:24 +02:00
cryptozoidberg
a969d28c8e
fixed mispring 2019-08-30 21:36:03 +02:00
cryptozoidberg
e2357dfe13
added multiple os lock support files into cmake 2019-08-30 21:30:55 +02:00
cryptozoidberg
566d1d2d19
added exception handling in main thread + log message at exit 2019-08-30 20:48:02 +02:00
cryptozoidberg
12e5c65e46
Merge branch 'lmdb_18_revert' of github.com:hyle-team/zano into lmdb_18_revert 2019-08-30 15:59:30 +02:00
cryptozoidberg
64b16b6f25
fixed warnings 2019-08-30 15:48:58 +02:00
sowle
98a2c59fee
=== build number: 49 -> 50 === 2019-08-30 03:59:04 +03:00
sowle
e278e8a792
ethash: more logs 2019-08-30 03:57:45 +03:00
sowle
33598c7c19
ethash: implement custom logging, add log message on allocation error 2019-08-30 03:53:20 +03:00
cryptozoidberg
704828f4fa
fixed bug in set_geo params 2019-08-30 00:44:40 +02:00
cryptozoidberg
5009a20461
added mdbx backend, first launch(got some errors) 2019-08-30 00:21:53 +02:00
cryptozoidberg
c78a118633
added cmakelist 2019-08-29 22:51:37 +02:00
cryptozoidberg
28163e9eae
Merge branch 'lmdb_18_revert' into libmdbx 2019-08-29 22:49:44 +02:00
cryptozoidberg
ca7c84e37c
Merge branch 'lmdb_18_revert' of github.com:hyle-team/zano into lmdb_18_revert 2019-08-29 22:49:12 +02:00
cryptozoidberg
e4c28d29e8
few changes to fix compilation 2019-08-29 22:48:15 +02:00
sowle
a8173575bb
=== build number: 48 -> 49 === 2019-08-29 18:45:59 +03:00
sowle
e07e4b0b9b
correctly handle null ptr that may be returned from progpow in get_block_longhash() 2019-08-29 18:44:59 +03:00
cryptozoidberg
b7ad2b21b9
Merge branch 'lmdb_18_revert' of github.com:hyle-team/zano into lmdb_18_revert 2019-08-29 12:41:19 +02:00
sowle
6d173d7077
gcc compilation fixed 2019-08-29 12:28:05 +03:00
sowle
c0d9f0f5f0
=== build number: 47 -> 48 === 2019-08-29 12:21:33 +03:00
sowle
972acf2632
lmdb back end reverted 2019-08-29 12:21:05 +03:00
sowle
fb66630676
=== build number: 46 -> 47 === 2019-08-29 04:40:55 +03:00
sowle
2ccc082ff9
project version is now added to crashdump filename 2019-08-29 04:37:24 +03:00
sowle
ffa1d9ea55
windown callstack enabled for Zano app as well as for daemon 2019-08-29 04:36:35 +03:00
sowle
d6e8ecb86f
callstack trace for win64 implemented and integrated into epee 2019-08-29 04:23:16 +03:00
cryptozoidberg
c62cb18c48
added copy of libmdbx into folder tree(ref to git submodule will be added later) 2019-08-28 23:25:45 +02:00
cryptozoidberg
090f1c6d8b
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-08-28 22:53:12 +02:00
cryptozoidberg
e8ad37cc8b
added command to enable service 2019-08-28 22:52:07 +02:00
cryptozoidberg
3679c7e638
implemented marketplace api, some fixes of contract api calls 2019-08-28 22:16:15 +02:00
sowle
4cb6a6a51f
=== build number: 45 -> 46 === 2019-08-28 18:18:11 +03:00
sowle
28659827c3
lmdb: reverting back to v 18 due to complex issues with resizing/synchronization
lmdb v 24 requires manual resizing/growing during it's normal function
Zano core is purely async so it's not easy to prevent all DB txs from starting on lmdb adapter level, because it will lead to random deadlocks in the core due to many high-level cross-thread dependencies.
We will rethink this later.
Many thanks to @leo-yuriev who helped us to discover these issues!
2019-08-28 17:58:35 +03:00
cryptozoidberg
95d007e3fa
implemented contracts api 2019-08-27 22:11:45 +02:00
cryptozoidberg
ee246bef43
attempt to make common publi interface for wallet 2019-08-27 17:36:53 +02:00
sowle
4936c6bb20
core: check for free space at launch as well 2019-08-27 03:25:35 +03:00
cryptozoidberg
2daa539af4
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-08-26 19:07:31 +02:00
sowle
9ade3f764d === build number: 44 -> 45 === 2019-08-21 23:30:13 +03:00
cryptozoidberg
1689d2e3a2
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-08-21 22:29:23 +02:00
cryptozoidberg
a72db3d3c4
shifted hardfork day 2019-08-21 22:29:06 +02:00
sowle
a509367eac === build number: 43 -> 44 === 2019-08-20 00:26:27 +03:00
Ravaga
5409b49d03 New Crowdin translations (#104)
* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (Korean)

* New translations en.json (Ukrainian)

* New translations en.json (Turkish)

* New translations en.json (Swedish)

* New translations en.json (Spanish)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Russian)

* New translations en.json (Romanian)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (French)

* New translations en.json (Greek)

* New translations en.json (Polish)

* New translations en.json (Norwegian)

* New translations en.json (Japanese)

* New translations en.json (Hungarian)

* New translations en.json (Hebrew)

* New translations en.json (Finnish)

* New translations en.json (Czech)

* New translations en.json (Dutch)

* New translations en.json (Danish)

* New translations en.json (Chinese Simplified)

* New translations en.json (Catalan)

* New translations en.json (Arabic)

* New translations en.json (Afrikaans)

* New translations en.json (Italian)

* New translations en.json (Vietnamese)
2019-08-19 23:25:06 +02:00
zetov
58c850fa99 add type '.csv',validation empty contact list/file (#105)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width

* add type '.csv',validation empty contact list/file

* merge
2019-08-18 14:39:20 +02:00
sowle
ec8dd9ee25
unit_tests: compilation fixup 2019-08-17 07:54:55 +03:00
sowle
1caa86c499
DB: fixed a bug in tx pool major compartibility option storing, implemented more robust two-stage lmdb opening for blockchain and tx pool; added handling for 0.9.18->0.9.24 lmdb migration for case, when a user has >128GB of free space 2019-08-17 07:10:37 +03:00
sowle
f98fb2b492
DB: removed cache size for lmdb, added basic_key_value_accessor::deinit(), removed ugly code for 0.9.18->0.9.24 migration 2019-08-17 07:08:00 +03:00
zetov
d12959aac7 fix modal width (#103)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild

* fix modal width
2019-08-16 17:04:28 +02:00
Ravaga
1165526540 New Crowdin translations (#100)
* New translations en.json (German)

* New translations en.json (Korean)

* New translations en.json (Ukrainian)

* New translations en.json (Turkish)

* New translations en.json (Swedish)

* New translations en.json (Spanish)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Russian)

* New translations en.json (Romanian)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (French)

* New translations en.json (Greek)

* New translations en.json (Polish)

* New translations en.json (Norwegian)

* New translations en.json (Japanese)

* New translations en.json (Hungarian)

* New translations en.json (Hebrew)

* New translations en.json (Finnish)

* New translations en.json (Czech)

* New translations en.json (Dutch)

* New translations en.json (Danish)

* New translations en.json (Chinese Simplified)

* New translations en.json (Catalan)

* New translations en.json (Arabic)

* New translations en.json (Afrikaans)

* New translations en.json (Italian)

* New translations en.json (Vietnamese)
2019-08-16 16:28:35 +02:00
zetov
30e967bb47 Fix export/import contacts, alias, immigration store 41 -> 43 (#99)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html

* allow symbols at name field diffrent from latin

* fix export import

* alias fix

* fix master pass (immigration 41 > 43)

* rebuild html

* commit

* fix

* rebuild
2019-08-16 13:25:40 +02:00
Ravaga
31ef25fbde New translations en.json (German) (#98) 2019-08-16 13:25:23 +02:00
sowle
f6a3fb5aef
lmdb: fixed erroneous opening of DB created with prev builds with lmdb 0.9.18 2019-08-15 18:48:20 +03:00
cryptozoidberg
3ff1ce583e
added auto port changing for testnet 2019-08-15 17:01:51 +02:00
cryptozoidberg
f31c5e2225
changed the way of restarting testnet 2019-08-15 16:41:29 +02:00
cryptozoidberg
ef03c79ab5
reset testnet 2019-08-15 16:12:51 +02:00
Ravaga
c343007e7f New Crowdin translations (#90)
* New translations en.json (German)

* New translations en.json (Korean)

* New translations en.json (Ukrainian)

* New translations en.json (Turkish)

* New translations en.json (Swedish)

* New translations en.json (Spanish)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Russian)

* New translations en.json (Romanian)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (French)

* New translations en.json (Greek)

* New translations en.json (Polish)

* New translations en.json (Norwegian)

* New translations en.json (Japanese)

* New translations en.json (Hungarian)

* New translations en.json (Hebrew)

* New translations en.json (Finnish)

* New translations en.json (Czech)

* New translations en.json (Dutch)

* New translations en.json (Danish)

* New translations en.json (Chinese Simplified)

* New translations en.json (Catalan)

* New translations en.json (Arabic)

* New translations en.json (Afrikaans)

* New translations en.json (Italian)

* New translations en.json (Vietnamese)

* New translations en.json (Italian)

* New translations en.json (Italian)

* New translations en.json (Italian)

* New translations en.json (Italian)

* New translations en.json (Italian)

* New translations en.json (Italian)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)

* New translations en.json (German)
2019-08-15 16:03:17 +02:00
sowle
4db9e078ef
Revert "temporary disable block major version check"
This reverts commit 5a5497a476.
2019-08-15 07:15:08 +03:00
sowle
5a5497a476
temporary disable block major version check 2019-08-15 07:13:44 +03:00
sowle
483f673c0d
warnings fixed 2019-08-15 06:17:03 +03:00
sowle
abb4517bd3
coretests: gen_no_attchments_in_coinbase and multisig_and_checkpoints fixed 2019-08-15 06:16:37 +03:00
cryptozoidberg
2662abea6d
fixed compilation problem 2019-08-14 20:51:49 +02:00
sowle
c26e56f13f === build number: 42 -> 43 === 2019-08-14 18:22:57 +03:00
sowle
7c68f1f8d5 === build number: 41 -> 42 === 2019-08-14 17:42:43 +03:00
cryptozoidberg
c49e24007a
limited BLOCKCHAIN_HEIGHT_FOR_POS_STRICT_SEQUENCE_LIMITATION work until hard fork 1 2019-08-14 15:35:29 +02:00
cryptozoidberg
d218716983
Merge branch 'pos_impr' into develop 2019-08-14 15:33:28 +02:00
cryptozoidberg
3cf4b87a07
Merge branch 'develop' into pos_impr 2019-08-14 10:23:56 +02:00
cryptozoidberg
ab9b60154e
Merge branch 'develop' of github.com:hyle-team/zano into develop 2019-08-14 10:23:38 +02:00
cryptozoidberg
84bb66a513
got rid of max supply variable 2019-08-14 10:23:20 +02:00
Ravaga
a60a831a74 New Crowdin translations (#89)
* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (Czech)

* New translations en.json (Czech)

* New translations en.json (Czech)

* New translations en.json (Czech)

* New translations en.json (Italian)

* New translations en.json (Italian)

* New translations en.json (Italian)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)

* New translations en.json (French)
2019-08-14 10:17:35 +02:00
zetov
53d5b2362a Lock/unlock transaction + contact (#86)
* test details & close btn

* compiled

* confirm modal

* delete "cancel" btn from aliases

* fix copy btn

* text alias fix

* confirm pop up

* lock & unlock transaction

* confirm pop up comment fix

* compiled

* rebuild html

* contact service

* rebuild html

* fix add contact + rebuild html
2019-08-14 10:16:56 +02:00
sowle
25fcf646eb
daemon: enable lmdb log channel by default 2019-08-13 20:02:45 +03:00
sowle
91c85ae2a7
fixed an issue with genesis block major version 2019-08-13 20:01:08 +03:00
sowle
3bdb154d05
db backend: on-fly resize db implemented 2019-08-13 19:59:44 +03:00
sowle
66072d32dd
lmdb update: 0.9.18 -> 0.9.24 2019-08-13 19:58:31 +03:00
sowle
c8ec3f59ce
unittests: lmdb test improved 2019-08-13 19:57:03 +03:00
Ravaga
9a081ddbf0 New translations en.json (German) (#88) 2019-08-12 21:16:51 +02:00
sowle
1df90ca65d
made lmdb_db_backend::open() able to create required dir tree 2019-08-10 05:31:47 +03:00
sowle
ad7bffbd0e
unit tests: lmdb.2gb_test added 2019-08-10 04:51:29 +03:00
cryptozoidberg
4a1bd84c71
added api for importing contacts from file 2019-08-09 22:12:32 +02:00
cryptozoidberg
dd5adf61c2
fixed block version 2019-08-09 19:35:58 +02:00
cryptozoidberg
7757171f36
planned hardfork estimate 1 september 2019-08-09 17:14:13 +02:00
cryptozoidberg
64a2c7b278
market as unmixable txs 2019-08-09 17:00:54 +02:00
sowle
b723b0151f
coretests: hard_fork_1_checkpoint_basic_test and hard_fork_1_pos_and_locked_coins : work in progress 2019-08-09 07:36:19 +03:00
sowle
6f5762f0c1
coretests: generic improvements in chaingen 2019-08-09 07:34:27 +03:00
sowle
393bf525d6
security improvement in get_a_to_b_relative_cumulative_difficulty() 2019-08-09 07:32:12 +03:00
cryptozoidberg
58c0fff1de
fixed bug in is_reorganize_required 2019-08-08 21:15:09 +02:00
cryptozoidberg
521ffa7904
changed var to print 2019-08-08 17:51:30 +02:00
cryptozoidberg
b883aa39f7
print results 2019-08-08 17:33:15 +02:00
cryptozoidberg
dca5aae9cb
added another command for getting difficulty numbers 2019-08-08 17:21:38 +02:00
sowle
bdd76b28c8
coretests: hardfork tests improved, hard_fork_1_chain_switch_pow_only added 2019-08-08 16:03:47 +03:00
sowle
44a989dd8c
disallow etc_tx_details_unlock_time2 usage prior to hardfork 1 2019-08-07 18:41:18 +03:00
sowle
0374e9e13d
bcs: minor improvements 2019-08-07 08:03:44 +03:00
sowle
b3906e1437
coretests: compilation fixed for gcc, hard_fork_1_unlock_time_2_in_normal_tx and hard_fork_1_unlock_time_2_in_coinbase improved 2019-08-07 08:00:17 +03:00
cryptozoidberg
b10e50d640
added helpful comment 2019-08-06 20:23:05 +02:00
cryptozoidberg
5088b2dd46
fixed big with blockchain version 2019-08-06 20:20:44 +02:00
sowle
457d175808
coretests: added hard_fork_1_unlock_time_2_in_normal_tx and hard_fork_1_unlock_time_2_in_coinbase 2019-08-06 14:17:52 +03:00
sowle
4565ae2bf7
minor enhancements 2019-08-06 14:16:44 +03:00
cryptozoidberg
6847fa5b89
added missing tests, reset blockchain from db 2019-08-05 21:43:10 +02:00
cryptozoidberg
4ef46c2e8b
first attempt to hard fork testnet 2019-08-05 20:56:15 +02:00
sowle
a6ab2adf86
zlib_helper::pack() fixed for small amount of data + unit test added (resolves #62) 2019-08-05 17:07:10 +03:00
cryptozoidberg
74ce613bde
added test against detecting 'unpowed' stakes in pos blocks 2019-08-03 19:15:56 +02:00
cryptozoidberg
67212dab51
fixed few bugs in locked pos mining, implemeted proper test 2019-08-03 00:22:04 +02:00
cryptozoidberg
1ae2da4983
merge from develop 2019-08-01 23:22:43 +02:00
cryptozoidberg
40711646ed
'deaf' argument added for safe pos mining in simplewallet 2019-08-01 22:08:31 +02:00
cryptozoidberg
20f0b2c702
added first test for consensus, added alt block limitation, added traching of burned coins 2019-08-01 18:47:20 +02:00
sowle
e1e99544d1
fixed a bug in hdd free space checking 2019-08-01 16:50:52 +03:00
sowle
6148bf27ae
fixed not enough money error msg when requesting contract cancellation 2019-07-31 20:27:17 +03:00
sowle
c97c0854d1
wallet2: minor improvement for cancel_offer_by_id() 2019-07-30 18:31:23 +03:00
cryptozoidberg
b740205f02
fixed offers-related tests 2019-07-26 21:51:35 +02:00
cryptozoidberg
676ad16fca
fixed most of the coretests 2019-07-26 18:53:42 +02:00
DrGurin
96abca14f2 Rebuild html (#61)
* added new password-functional

* small fixes:

* new build

* rebuild html
2019-07-26 18:52:23 +02:00
Ravaga
af8688c1a2 New Crowdin translations (#49)
* New translations en.json (Japanese)

* New translations en.json (French)

* New translations en.json (Polish)

* New translations en.json (Norwegian)

* New translations en.json (Italian)

* New translations en.json (Korean)

* New translations en.json (Hebrew)

* New translations en.json (Greek)

* New translations en.json (German)

* New translations en.json (Hungarian)

* New translations en.json (Finnish)

* New translations en.json (Danish)

* New translations en.json (Czech)

* New translations en.json (Catalan)

* New translations en.json (Arabic)

* New translations en.json (Afrikaans)

* New translations en.json (Chinese Simplified)

* New translations en.json (Dutch)

* New translations en.json (Spanish)

* New translations en.json (Ukrainian)

* New translations en.json (Turkish)

* New translations en.json (Swedish)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Russian)

* New translations en.json (Romanian)

* New translations en.json (Vietnamese)
2019-07-26 16:50:15 +02:00
DrGurin
4abc9b9f31 Some fixes with masterpassword and new Reset button (#48)
* added new password-functional

* small fixes:
2019-07-26 16:26:08 +02:00
cryptozoidberg
18b7dbd132
fixed memoryleak in simplewallet 2019-07-25 19:22:43 +02:00
cryptozoidberg
8101bc4932
fixed compilation issues in wallet 2019-07-24 23:32:41 +02:00
cryptozoidberg
78dc9164e7
implemented locked coins mining on wallet side 2019-07-24 19:14:35 +02:00
cryptozoidberg
12a6001ddf
fixed linking error 2019-07-24 12:41:18 +02:00
cryptozoidberg
292437c05c
fixed compilation issues 2019-07-24 00:37:24 +02:00
Ravaga
2c7f741a44 New Crowdin translations (#41)
* New translations en.json (Japanese)

* New translations en.json (Korean)

* New translations en.json (Chinese Simplified)

* New translations en.json (Afrikaans)

* New translations en.json (Norwegian)

* New translations en.json (Ukrainian)

* New translations en.json (Turkish)

* New translations en.json (Swedish)

* New translations en.json (Spanish)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Russian)

* New translations en.json (Romanian)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Arabic)

* New translations en.json (Catalan)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (Dutch)

* New translations en.json (English)

* New translations en.json (Finnish)

* New translations en.json (French)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Hebrew)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Polish)

* New translations en.json (Vietnamese)
2019-07-23 20:24:38 +02:00
cryptozoidberg
b708df10ba
implementation of locked-mining is nearly finished(not tested yet) 2019-07-22 23:54:38 +02:00
cryptozoidberg
4149d312f9
new master password policy 2019-07-22 14:54:17 +02:00
cryptozoidberg
50d55a5eec
some progress on implementation locked coins pos mining 2019-07-22 13:04:01 +02:00
cryptozoidberg
d4233ff013
fixed wallet for new PoS rules 2019-07-20 14:36:12 +02:00
sowle
e8fe7b8124 coretests: offer_removing_and_selected_output fixed, offer_cancellation_with_zero_fee added 2019-07-20 05:12:41 +03:00
zetov
5f3406f4f8 Compiled html (#38)
* test details & close btn

* compiled
2019-07-19 20:09:20 +02:00
Ravaga
6c70ce110f Update Crowdin configuration file 2019-07-19 19:01:30 +02:00
cryptozoidberg
c9f93364ad
changed difficulty adjustment 2019-07-19 18:39:00 +02:00
sowle
2b2aebdd03 coretests: corrected gen_wallet_offers_basic, offer_lifecycle_via_tx_pool, offer_removing_and_selected_output 2019-07-19 18:59:31 +03:00
cryptozoidberg
f0dfcf630d
first draft implementation of new consensus 2019-07-17 21:01:52 +02:00
sowle
6a575c6d29 fix for contract cancellation issue with zero b pledge or zero (a pledge + amount) 276 2019-07-17 15:20:10 +03:00
cryptozoidberg
0b1c1de8a8
added std analog of __builtin_popcount poor performance, but good compability 2019-07-16 21:14:21 +02:00
cryptozoidberg
41aa0932ce
returned original __builtin_popcount 2019-07-16 20:49:01 +02:00
cryptozoidberg
b1c91a23b6
masked key text 2019-07-16 19:46:56 +02:00
cryptozoidberg
a37ef693ac
got rid of maintain key in command line 2019-07-16 19:37:28 +02:00
sowle
9e9f3be0f6 attempt to fix a rare deadlock in gui on wallet's refresh (2) 2019-07-16 15:25:19 +03:00
sowle
5777e2b848 coretests: more cases for escrow_custom_test (zero pledges + contract cancellation) -- exposes a bug 2019-07-16 15:19:04 +03:00
cryptozoidberg
8d0c8a579f
attempt to fix bug in Zano/zanod related to CPU with hardware suport of SSE less then 4.2 2019-07-15 20:13:06 +02:00
cryptozoidberg
cda2dda44f
implemented comparing function fo altchains 2019-07-15 20:10:50 +02:00
sowle
3e26c91643 attempt to fix a rare deadlock in gui on wallet's refresh 2019-07-15 18:49:22 +03:00
cryptozoidberg
216ce4d90d
Merge branch 'develop' into pos_impr 2019-07-13 17:02:14 +02:00
sowle
d8f3a7f6bc Merge branch 'release' 2019-07-12 01:38:54 +03:00
cryptozoidberg
41695ef275
got rid of cancel offer exception 2019-07-11 19:38:14 +02:00
sowle
35d48c29cb Zano.sh fixed according to ZANO-266 2019-07-11 15:48:43 +03:00
sowle
488e369741 Merge branch 'develop' into release 2019-07-10 20:07:08 +03:00
cryptozoidberg
ccfd1f0d35
fixed missing comment field in GUI 2019-07-10 19:04:45 +02:00
sowle
d8b5a29407 Merge branch 'release' into develop 2019-07-09 23:18:02 +03:00
sowle
88d2231a3e === build number: 40 -> 41 === 2019-07-09 23:14:48 +03:00
sowle
0ab50c8fa2 Merge branch 'develop' into release 2019-07-09 22:36:20 +03:00
sowle
930b2e30ef minor log fixes and improvements 2019-07-09 22:33:01 +03:00
cryptozoidberg
a288150e97
set spent flag 2019-07-09 19:23:43 +02:00
sowle
5752cbafaa simplewallet: --restore-wallet option added; show_seed, viewkey and spendkey commands added 2019-07-09 04:27:13 +03:00
cryptozoidberg
6853d903ce
added command for analysing tx outputs 2019-07-05 19:46:10 +02:00
sowle
f4e1e99dcb currency_config.h clean up 2019-07-04 15:53:56 +03:00
sowle
9fc42dac53 daemon: checking for free space (--disable-stop-on-low-free-space was also added) + minor refactoring on critical errors handling 2019-07-02 18:38:35 +03:00
cryptozoidberg
97e721f5f5
fixed bug with payment id visualisation 2019-06-29 00:39:50 +03:00
Nastia Plahtiy
d641dd6d60 Add Payment ID to the transaction details (#32)
* Add Payment ID to the transaction details

* Updated highcharts packages; fix build errors
2019-06-29 00:37:47 +03:00
sowle
22bbb59117 simplewallet: PoS mining in RPC mode made more kind to another wallet's instances (tx pool awareness, ZANO-385 2019-06-27 02:30:43 +03:00
cryptozoidberg
606b2ffc2c
added command for constructing integrated_address 2019-06-23 00:41:35 +03:00
cryptozoidberg
734b726df1
Merge branch 'release' 2019-06-18 23:57:12 +03:00
sowle
0e08571f60 wallet & coretests: made contract validation more correct (zero A pledge is acceptable but B pledge + amount_to_pay must be > 0) 2019-06-18 20:42:37 +03:00
sowle
7a65919fba wallet: more rules for contract proposal validation (a_pledge > 0 && b_pledge + amount_to_pay > 0) 2019-06-18 13:42:07 +03:00
sowle
71515cded2 coretests: escrow_zero_amounts added (exposes a minor issue in contract handling) 2019-06-18 13:20:20 +03:00
cryptozoidberg
667a4dec8a
inital implementation of PoS improvements: comparing function, diff tracing, block version 2019-06-18 01:15:33 +03:00
sowle
b03625c4c7 fix a typo 2019-06-17 23:59:45 +03:00
cryptozoidberg
3e39512ec4
Merge branch 'release' into develop 2019-06-17 16:39:43 +03:00
cryptozoidberg
f77f0d7720
added height condition 2019-06-17 16:25:40 +03:00
sowle
5b776070cb === build number: 39 -> 40 === 2019-06-17 13:47:33 +03:00
sowle
f8b1daeedb Merge branch 'develop' into release 2019-06-17 13:46:11 +03:00
cryptozoidberg
8245ea6fa6
added more strict pos validation 2019-06-17 11:22:00 +03:00
cryptozoidberg
b3b9058d1f
Merge branch 'release' 2019-06-06 18:21:22 +03:00
cryptozoidberg
4a4fc12a21
Merge branch 'master' of github.com:hyle-team/zano 2019-06-06 18:21:16 +03:00
sowle
1057cd9c42 Merge branch 'release' 2019-06-05 15:29:06 +03:00
cryptozoidberg
c20bbd8c95
Merge branch 'release' 2019-06-04 23:07:10 +03:00
cryptozoidberg
fb27df4840
Merge branch 'release' 2019-06-04 22:55:48 +03:00
1860 changed files with 253618 additions and 247715 deletions

View file

@ -4,22 +4,19 @@ AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'false'
AlignEscapedNewlines: Right
AlignOperands: 'false'
AlignTrailingComments: 'true'
AlignTrailingComments: 'false'
AllowAllParametersOfDeclarationOnNextLine: 'false'
AllowShortBlocksOnASingleLine: 'false'
AllowShortCaseLabelsOnASingleLine: 'true'
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: 'true'
AllowShortLoopsOnASingleLine: 'false'
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: 'false'
AlwaysBreakTemplateDeclarations: 'true'
BinPackArguments: 'true'
BinPackParameters: 'true'
BreakAfterJavaFieldAnnotations: 'true'
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Stroustrup
BreakBeforeInheritanceComma: 'false'
BreakBeforeBraces: Allman
BreakBeforeTernaryOperators: 'false'
BreakConstructorInitializers: BeforeColon
BreakStringLiterals: 'false'
@ -56,4 +53,4 @@ SpacesInParentheses: 'false'
SpacesInSquareBrackets: 'false'
Standard: Cpp11
TabWidth: '2'
UseTab: Never
UseTab: Never

1
.core/build Submodule

@ -0,0 +1 @@
Subproject commit 9c9346d5494688a78ea573f3bc0547ad12b9be2a

83
.core/build.yaml Normal file
View file

@ -0,0 +1,83 @@
# Lethean Blockchain Build Configuration
# Used by: core compile
version: 1
project:
name: blockchain
type: cpp
description: "Lethean Blockchain - SASE infrastructure chain"
version: "6.0.1"
cpp:
standard: 17
build_type: Release
static: false
conan:
version: "2.21.0"
requires:
- zlib/1.3.1
- boost/1.85.0
- openssl/3.2.0
- miniupnpc/2.2.5
- jwt-cpp/0.7.1
- oatpp/1.3.0.latest
- oatpp-swagger/1.3.0.latest
tool_requires:
- cmake/3.31.9
options:
boost/*:without_test: true
registry:
url: http://forge.snider.dev:4000/api/packages/host-uk/conan
remote: conan_build
cmake:
minimum_version: "3.16"
variables:
USE_CCACHE: "ON"
options:
testnet: false
targets:
- os: linux
arch: x86_64
profile: gcc-linux-x86_64
- os: linux
arch: arm64
profile: gcc-linux-armv8
- os: darwin
arch: arm64
profile: apple-clang-armv8
- os: darwin
arch: x86_64
profile: apple-clang-x86_64
- os: windows
arch: x86_64
profile: msvc-194-x86_64
package:
generators:
- TGZ
- ZIP
- NSIS
- DEB
- RPM
vendor: Lethean
contact: support@lt.hn
website: https://lt.hn
docker:
dockerfile: utils/docker/lthn-chain/Dockerfile
image: lthn/chain
platforms:
- linux/amd64
tags:
- testnet
- "{{.Version}}"
build_args:
BUILD_THREADS: auto
BUILD_TESTNET: "1"
BUILD_STATIC: "0"
BUILD_TYPE: Release

8
.dockerignore Normal file
View file

@ -0,0 +1,8 @@
build
.github
.idea
docs
resources
snap
tests
CMakeUserPresets.json

234
.forgejo/workflows/build.yml Executable file
View file

@ -0,0 +1,234 @@
name: Build & Release
on:
workflow_dispatch:
push:
branches:
- dev
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
FORGEJO_URL: ${{ github.server_url }}
jobs:
# ──────────────────────────────────────────────
# Linux x86_64 — native build on snider-linux
# ──────────────────────────────────────────────
build-linux:
name: Linux x86_64
runs-on: linux-native
env:
CPU_CORES: "24"
steps:
- name: Checkout
uses: https://code.forgejo.org/actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
submodules: false
- name: Init submodules
run: |
git config --global url."${{ env.FORGEJO_URL }}/".insteadOf "http://forge.snider.dev:4000/"
git -c http.extraHeader="Authorization: token ${{ secrets.RELEASE_TOKEN }}" submodule update --init --recursive
git submodule foreach --recursive 'git fetch --tags origin 2>/dev/null || true'
- name: Build dependencies
run: |
make build-deps \
CPU_CORES=${{ env.CPU_CORES }} \
CONAN_URL=${{ env.FORGEJO_URL }}/api/packages/host-uk/conan \
CONAN_USER=claude \
CONAN_PASSWORD=${{ secrets.RELEASE_TOKEN }}
- name: Compile
run: |
make ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }} \
CPU_CORES=${{ env.CPU_CORES }} \
CONAN_URL=${{ env.FORGEJO_URL }}/api/packages/host-uk/conan \
CONAN_USER=claude \
CONAN_PASSWORD=${{ secrets.RELEASE_TOKEN }}
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: linux-x86_64
path: build/packages/lethean-*
retention-days: 7
# ──────────────────────────────────────────────
# macOS ARM64 — native build on M3 Ultra
# ──────────────────────────────────────────────
build-macos:
name: macOS ARM64
runs-on: macos-native
env:
CPU_CORES: "24"
steps:
- name: Checkout
uses: https://code.forgejo.org/actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
submodules: false
- name: Init submodules
run: |
git config --global url."${{ env.FORGEJO_URL }}/".insteadOf "http://forge.snider.dev:4000/"
git -c http.extraHeader="Authorization: token ${{ secrets.RELEASE_TOKEN }}" submodule update --init --recursive
git submodule foreach --recursive 'git fetch --tags origin 2>/dev/null || true'
- name: Build dependencies
run: |
export PATH="/opt/homebrew/bin:$PATH"
make build-deps \
CPU_CORES=${{ env.CPU_CORES }} \
CONAN_URL=${{ env.FORGEJO_URL }}/api/packages/host-uk/conan \
CONAN_USER=claude \
CONAN_PASSWORD=${{ secrets.RELEASE_TOKEN }}
- name: Compile
run: |
export PATH="/opt/homebrew/bin:$PATH"
make ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }} \
CPU_CORES=${{ env.CPU_CORES }} \
CONAN_URL=${{ env.FORGEJO_URL }}/api/packages/host-uk/conan \
CONAN_USER=claude \
CONAN_PASSWORD=${{ secrets.RELEASE_TOKEN }}
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: macos-arm64
path: build/packages/lethean-*
retention-days: 7
# ──────────────────────────────────────────────
# Aggregate artifacts and create release
# ──────────────────────────────────────────────
release:
name: Create Release
needs: [build-linux, build-macos]
runs-on: linux-native
steps:
- name: Checkout
uses: https://code.forgejo.org/actions/checkout@v4
with:
fetch-depth: 1
submodules: false
- name: Download Linux artifacts
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: linux-x86_64
path: artifacts/linux
- name: Download macOS artifacts
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: macos-arm64
path: artifacts/macos
- name: List artifacts
run: find artifacts/ -type f | sort
- name: Compute release tag
id: release
run: |
VERSION=$(grep '^BUILD_VERSION:=' Makefile | cut -d'=' -f2)
if [ "${{ github.ref_name }}" = "main" ]; then
TAG="v${VERSION}+${{ github.run_number }}"
PRERELEASE=false
TITLE="v${VERSION} (build ${{ github.run_number }})"
else
TAG="v${VERSION}-beta+${{ github.run_number }}"
PRERELEASE=true
TITLE="v${VERSION}-beta (build ${{ github.run_number }})"
fi
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
echo "prerelease=${PRERELEASE}" >> "$GITHUB_OUTPUT"
echo "title=${TITLE}" >> "$GITHUB_OUTPUT"
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
- name: Create release
id: create_release
run: |
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
"${{ env.FORGEJO_URL }}/api/v1/repos/${{ github.repository }}/releases" \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{
\"tag_name\": \"${{ steps.release.outputs.tag }}\",
\"target_commitish\": \"${{ github.sha }}\",
\"name\": \"${{ steps.release.outputs.title }}\",
\"body\": \"Automated build from \`${{ github.ref_name }}\` branch (run #${{ github.run_number }})\n\n## Platforms\n- Linux x86_64\n- macOS ARM64 (Apple Silicon)\",
\"draft\": false,
\"prerelease\": ${{ steps.release.outputs.prerelease }}
}")
HTTP_CODE=$(echo "$RESPONSE" | tail -1)
BODY=$(echo "$RESPONSE" | sed '$d')
if [ "$HTTP_CODE" -ge 400 ]; then
echo "Failed to create release (HTTP ${HTTP_CODE}):"
echo "$BODY"
exit 1
fi
RELEASE_ID=$(echo "$BODY" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo "id=${RELEASE_ID}" >> "$GITHUB_OUTPUT"
echo "Created release ID: ${RELEASE_ID}"
- name: Upload release assets
run: |
for dir in artifacts/linux artifacts/macos; do
for file in "$dir"/lethean-*; do
[ -f "$file" ] || continue
FILENAME=$(basename "$file")
echo "Uploading: ${FILENAME}"
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -X POST \
"${{ env.FORGEJO_URL }}/api/v1/repos/${{ github.repository }}/releases/${{ steps.create_release.outputs.id }}/assets?name=${FILENAME}" \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
-H "Content-Type: application/octet-stream" \
--data-binary "@${file}")
if [ "$HTTP_CODE" -ge 400 ]; then
echo "Failed to upload ${FILENAME} (HTTP ${HTTP_CODE})"
exit 1
fi
echo "Uploaded ${FILENAME} (HTTP ${HTTP_CODE})"
done
done
- name: Prune old releases
run: |
TAG_PREFIX="${{ github.ref_name == 'main' && 'v6' || 'v6.*-beta' }}"
CURRENT_ID="${{ steps.create_release.outputs.id }}"
echo "Keeping release ${CURRENT_ID}, pruning older ${TAG_PREFIX} releases..."
PAGE=1
while true; do
RELEASES=$(curl -s "${{ env.FORGEJO_URL }}/api/v1/repos/${{ github.repository }}/releases?limit=50&page=${PAGE}" \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}")
COUNT=$(echo "$RELEASES" | python3 -c "import sys,json; print(len(json.load(sys.stdin)))" 2>/dev/null || echo 0)
[ "$COUNT" = "0" ] && break
echo "$RELEASES" | python3 -c "
import sys, json, fnmatch
for r in json.load(sys.stdin):
rid = r['id']
tag = r['tag_name']
if rid == ${CURRENT_ID}:
continue
if fnmatch.fnmatch(tag, '${TAG_PREFIX}*'):
print(f'{rid} {tag}')
" | while read -r RID RTAG; do
echo "Deleting release ${RTAG} (id=${RID})"
curl -s -o /dev/null -X DELETE \
"${{ env.FORGEJO_URL }}/api/v1/repos/${{ github.repository }}/releases/${RID}" \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}"
curl -s -o /dev/null -X DELETE \
"${{ env.FORGEJO_URL }}/api/v1/repos/${{ github.repository }}/tags/${RTAG}" \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}"
done
PAGE=$((PAGE + 1))
done
echo "Prune complete"

5
.gitattributes vendored
View file

@ -1,2 +1,5 @@
.git* export-ignore
/CMakeLists.txt export-subst
/CMakeLists.txt export-subst
# Mark auto-generated SDK clients as "generated" to hide them in GitHub diffs
utils/sdk/client/** linguist-generated=true

22
.github/actions/make-docs/action.yml vendored Normal file
View file

@ -0,0 +1,22 @@
# .github/actions/make-docs/action.yml
name: 'Build Documentation'
description: 'Archives and uploads signed binaries to a GitHub release'
runs:
using: "composite"
steps:
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: echo "cache_id=$(date -u '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v4
with:
key: mkdocs-material-${{ env.cache_id }}
path: ~/.cache
restore-keys: |
mkdocs-material-
- if: runner.os == 'Linux'
run: |
sudo apt-get install -y libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev pngquant
- run: pip install mkdocs-git-revision-date-localized-plugin cairosvg mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin mkdocs-material[imaging]

View file

@ -0,0 +1,90 @@
# .github/actions/upload-artifacts/action.yml
name: 'Upload Artifacts'
description: 'Archives and uploads signed binaries to a GitHub release'
inputs:
chain-network:
required: true
description: 'The chain network name to use in filenames, mainnet or testnet'
assets:
description: "A EOL separated string list of filenames to archive; if asset is a abs path, it's respected"
required: false
asset-type:
required: true
description: 'The asset type: cli, gui, ANYTHING; used as a separator for different release packages for the same arch'
asset-directory:
required: true
description: "The directory where 7z's working dir will be set"
runs:
using: "composite"
steps:
- name: compute file name
id: asset
shell: bash
run: |
ARCH=${{ runner.arch }}
RUNNER_OS=${{ runner.os }}
LOWERCASE_ARCH=$(echo "$ARCH" | tr '[:upper:]' '[:lower:]')
TARGET_OS=$(echo "$RUNNER_OS" | tr '[:upper:]' '[:lower:]')
FILENAME="${{ inputs.chain-network }}-${{ inputs.asset-type }}-${TARGET_OS}-${LOWERCASE_ARCH}"
echo "key=$FILENAME" >> $GITHUB_OUTPUT
VERSION=$(grep '^BUILD_VERSION:=' Makefile | cut -d'=' -f2)
# Check if a version was found
if [ -z "$VERSION" ]; then
echo "Error: BUILD_VERSION could not be found in the Makefile." >&2
exit 1
fi
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
if [ "${{ github.event_name }}" == "pull_request" ]; then
TAG_SUFFIX="-alpha.${{ github.event.number }}"
PRERELEASE=true
elif [ "${{ inputs.chain-network }}" != "mainnet" ]; then
TAG_SUFFIX="-beta"
PRERELEASE=true
else
TAG_SUFFIX=""
PRERELEASE=false
fi
TAG_NAME="${VERSION}${TAG_SUFFIX}+${{ github.run_number }}"
echo "tag_name=${TAG_NAME}" >> "$GITHUB_OUTPUT"
echo "prerelease=${PRERELEASE}" >> "$GITHUB_OUTPUT"
# Format the output to be a multi-line string.
# This is the correct way to pass a multi-line string in GITHUB_OUTPUT.
echo "paths<<EOF" >> "$GITHUB_OUTPUT"
# Iterate through each filename
echo "${{ inputs.assets }}" | while read -r file; do
if [[ -z "$file" ]]; then
continue
fi
# Check if the file is an absolute path
if [[ "$file" == /* ]] || [[ "$file" =~ ^[a-zA-Z]: ]]; then
FULL_PATH="$file"
else
# It's a relative path, so join it with the asset directory
if [[ "${{ runner.os }}" == "Windows" ]]; then
FULL_PATH="${{ inputs.asset-directory }}\\$file"
else
FULL_PATH="${{ inputs.asset-directory }}/$file"
fi
fi
echo "$FULL_PATH" >> "$GITHUB_OUTPUT"
done
echo "EOF" >> "$GITHUB_OUTPUT"
- name: Upload Artifacts
uses: actions/upload-artifact@v4.6.2
with:
name: ${{ steps.asset.outputs.key }}
path: ${{ steps.asset.outputs.paths }}
- name: Make Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.asset.outputs.tag_name }}
prerelease: ${{ steps.asset.outputs.prerelease }}
files: ${{ inputs.asset-directory }}/*
target_commitish: ${{ github.sha }}

25
.github/workflows/_maint-cache.yml vendored Normal file
View file

@ -0,0 +1,25 @@
name: Clear all Github actions caches on sundays
on:
schedule:
- cron: "0 0 * * 0"
workflow_dispatch:
# pull_request:
# types:
# - opened
# - synchronize
# - reopened
# branches:
# - dev
# - main
# paths-ignore:
# - '**.md'
jobs:
my-job:
name: Delete all caches
runs-on: ubuntu-24.04
env:
GH_TOKEN: ${{ github.token }}
steps:
- name: Clear caches
run: gh cache delete --all --repo ${{ github.repository }}

70
.github/workflows/_on-pr.yml vendored Normal file
View file

@ -0,0 +1,70 @@
name: PR
permissions:
contents: write
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
pull_request_review:
pull_request:
types:
- opened
- synchronize
- reopened
- ready_for_review
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build-linux-intel:
name: Linux
if: ${{!github.event.pull_request.draft}}
uses: ./.github/workflows/build-linux-intel.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-linux-arm:
name: Linux
if: ${{!github.event.pull_request.draft}}
uses: ./.github/workflows/build-linux-arm64.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-windows-intel:
name: Windows
if: ${{!github.event.pull_request.draft}}
uses: ./.github/workflows/build-windows-intel.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-macos-arm64:
name: MacOS
uses: ./.github/workflows/build-macos-arm64.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-macos-intel:
name: MacOS
if: ${{!github.event.pull_request.draft}}
uses: ./.github/workflows/build-macos-intel.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-docker:
name: Docker
if: ${{!github.event.pull_request.draft}}
uses: ./.github/workflows/build-docker.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-docs:
name: Docs
if: ${{!github.event.pull_request.draft}}
uses: ./.github/workflows/build-docs.yml

62
.github/workflows/_on-push.yml vendored Normal file
View file

@ -0,0 +1,62 @@
name: Push Compile
permissions:
contents: write
packages: write
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
push:
branches:
- 'dev'
- 'main'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-linux-intel:
name: Linux
uses: ./.github/workflows/build-linux-intel.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-linux-arm:
name: Linux
uses: ./.github/workflows/build-linux-arm64.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-windows-intel:
name: Windows
uses: ./.github/workflows/build-windows-intel.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-macos-arm64:
name: MacOS
uses: ./.github/workflows/build-macos-arm64.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-macos-intel:
name: MacOS
uses: ./.github/workflows/build-macos-intel.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-docker:
name: Docker
uses: ./.github/workflows/build-docker.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-docs:
name: Docs
uses: ./.github/workflows/build-docs.yml

83
.github/workflows/_on-release.yml vendored Normal file
View file

@ -0,0 +1,83 @@
name: Push Full Build
permissions:
contents: write
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
release:
types: [ published ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
determine-network:
runs-on: ubuntu-latest
outputs:
chain-network: ${{ steps.get_branch.outputs.chain_network }}
steps:
- name: Get release information from API
id: get_branch
run: |
# Use the GitHub CLI to get the release details by tag name
# The result is a JSON object
RELEASE_INFO=$(gh release view --json targetCommitish -t ${{ github.ref_name }})
# Extract the target commitish (the source branch)
SOURCE_BRANCH=$(echo "$RELEASE_INFO" | jq -r '.targetCommitish')
# Set the chain network based on the source branch
if [ "$SOURCE_BRANCH" == "dev" ]; then
echo "chain_network=testnet" >> $GITHUB_OUTPUT
else
echo "chain_network=mainnet" >> $GITHUB_OUTPUT
fi
echo "Source Branch: $SOURCE_BRANCH"
echo "Chain Network: ${{ steps.get_branch.outputs.chain_network }}"
build-linux-intel:
name: Chain
uses: ./.github/workflows/build-linux-intel.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-linux-arm:
name: Chain
uses: ./.github/workflows/build-linux-arm64.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-windows-intel:
name: Chain
uses: ./.github/workflows/build-windows-intel.yml
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-macos-arm64:
name: Chain
uses: ./.github/workflows/build-macos-arm64.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-macos-intel:
name: Chain
uses: ./.github/workflows/build-macos-intel.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-docker:
name: Docker
uses: ./.github/workflows/build-docker.yml
secrets: inherit
with:
chain-network: ${{ github.ref_name == 'main' && 'mainnet' || 'testnet' }}
build-docs:
name: Docs
uses: ./.github/workflows/build-docs.yml

54
.github/workflows/build-docker.yml vendored Normal file
View file

@ -0,0 +1,54 @@
name: Docker
permissions:
contents: read
on:
workflow_call:
secrets:
DOCKERHUB_USERNAME:
required: true
DOCKERHUB_TOKEN:
required: true
inputs:
chain-network:
description: "The network to use, can either be testnet, stagenet or mainnet"
default: testnet
required: false
type: string
jobs:
build:
name: "lthn/chain:${{ inputs.chain-network == 'testnet' && 'testnet' || 'latest' }}"
runs-on: ubuntu-24.04
steps:
- name: Checkout Project
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v6
env:
DOCKER_BUILD_SUMMARY: false
DOCKER_BUILD_RECORD_UPLOAD: false
with:
file: utils/docker/lthn-chain/Dockerfile
context: ${{ github.workspace }}
push: true
build-args: |
BUILD_TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }}
THREADS=2
BUILD_LOCAL=1
tags: lthn/chain:${{ inputs.chain-network == 'testnet' && 'testnet' || 'latest' }}

40
.github/workflows/build-docs.yml vendored Normal file
View file

@ -0,0 +1,40 @@
name: docs
permissions:
contents: write
on:
workflow_call:
jobs:
deploy:
name: Offline Local Version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Cache SDK Folder
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- run: sudo apt-get install -y libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev pngquant
- run: pip install mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin mkdocs-material[imaging]
- name: Build Offline Version
run: make docs
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
with:
chain-network: ${{ inputs.chain-network }}
assets: "*"
asset-type: 'docs'
asset-directory: ${{ github.workspace }}/build/docs

90
.github/workflows/build-linux-arm64.yml vendored Normal file
View file

@ -0,0 +1,90 @@
name: Linux
permissions:
contents: write
on:
workflow_call:
inputs:
chain-network:
description: "The network to use, can either be testnet, stagenet or mainnet"
default: testnet
required: false
type: string
jobs:
cache:
name: cache-arm64
runs-on: ubuntu-22.04-arm
steps:
- name: Cache SDK Folder
id: cache
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- name: Checkout Project
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: install dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: sudo apt-get install -y autotools-dev git build-essential libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev pngquant
- uses: actions/setup-python@v5
if: steps.cache.outputs.cache-hit != 'true'
with:
python-version: 3.x
- if: steps.cache.outputs.cache-hit != 'true'
run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }}
make upload-conan-cache
build:
name: compile-arm64
needs: cache
runs-on: ubuntu-22.04-arm
steps:
- name: Checkout Project
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: install dependencies
run: sudo apt-get install -y autotools-dev rpm git build-essential libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev pngquant
- name: Cache SDK Folder
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
with:
chain-network: ${{ inputs.chain-network }}
assets: lethean-*
asset-type: 'cli'
asset-directory: ${{ github.workspace }}/build/packages

90
.github/workflows/build-linux-intel.yml vendored Normal file
View file

@ -0,0 +1,90 @@
name: Linux
permissions:
contents: write
on:
workflow_call:
inputs:
chain-network:
description: "The network to use, can either be testnet, stagenet or mainnet"
default: testnet
required: false
type: string
jobs:
cache:
name: cache-x86_64
runs-on: ubuntu-22.04
steps:
- name: Cache SDK Folder
id: cache
uses: actions/cache@v4
with:
lookup-only: true
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- name: Checkout Project
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: install dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: sudo apt-get install -y autotools-dev rpm git build-essential
- uses: actions/setup-python@v5
if: steps.cache.outputs.cache-hit != 'true'
with:
python-version: 3.x
- if: steps.cache.outputs.cache-hit != 'true'
run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }}
make upload-conan-cache
build:
name: compile-x86_64
needs: cache
runs-on: ubuntu-22.04
steps:
- name: Checkout Project
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: install dependencies
run: sudo apt-get install -y autotools-dev git build-essential
- name: Cache SDK Folder
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
with:
chain-network: ${{ inputs.chain-network }}
assets: lethean-*
asset-type: 'cli'
asset-directory: ${{ github.workspace }}/build/packages

85
.github/workflows/build-macos-arm64.yml vendored Normal file
View file

@ -0,0 +1,85 @@
name: build-macos-arm64
permissions:
contents: write
on:
workflow_call:
inputs:
chain-network:
description: "The network to use, can either be testnet, stagenet or mainnet"
default: testnet
required: false
type: string
jobs:
cache:
name: cache-armv8
runs-on: macos-15
steps:
- name: Cache SDK Folder
id: cache
uses: actions/cache@v4
with:
lookup-only: true
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- name: Checkout Project
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- uses: actions/setup-python@v5
if: steps.cache.outputs.cache-hit != 'true'
with:
python-version: 3.x
- if: steps.cache.outputs.cache-hit != 'true'
run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
make build-deps CPU_CORES=3 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }}
make upload-conan-cache
build:
name: compile-armv8
needs: cache
runs-on: macos-15
steps:
- name: Checkout Project
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: Cache SDK Folder
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
with:
chain-network: ${{ inputs.chain-network }}
assets: lethean-*
asset-type: 'cli'
asset-directory: ${{ github.workspace }}/build/packages

81
.github/workflows/build-macos-intel.yml vendored Normal file
View file

@ -0,0 +1,81 @@
name: build-macos-intel
permissions:
contents: write
on:
workflow_call:
inputs:
chain-network:
description: "The network to use, can either be testnet, stagenet or mainnet"
default: testnet
required: false
type: string
jobs:
cache:
name: cache-x86_64
runs-on: macos-13
steps:
- name: Cache SDK Folder
id: cache
uses: actions/cache@v4
with:
lookup-only: true
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- name: Checkout Project
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- uses: actions/setup-python@v5
if: steps.cache.outputs.cache-hit != 'true'
with:
python-version: 3.x
- if: steps.cache.outputs.cache-hit != 'true'
run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }}
make upload-conan-cache
build:
name: compile-x86_64
needs: cache
runs-on: macos-13
steps:
- name: Checkout Project
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: Cache SDK Folder
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
with:
chain-network: ${{ inputs.chain-network }}
assets: lethean-*
asset-type: 'cli'
asset-directory: ${{ github.workspace }}/build/packages

View file

@ -0,0 +1,82 @@
name: build-windows
permissions:
contents: write
on:
workflow_call:
inputs:
chain-network:
description: "The network to use, can either be testnet, stagenet or mainnet"
default: testnet
required: false
type: string
jobs:
cache:
name: cache-x86_64
runs-on: windows-latest
steps:
- name: Cache SDK Folder
id: cache
uses: actions/cache@v4
with:
lookup-only: true
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- name: Checkout Project
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- uses: actions/setup-python@v5
if: steps.cache.outputs.cache-hit != 'true'
with:
python-version: 3.x
- if: steps.cache.outputs.cache-hit != 'true'
run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }}
make upload-conan-cache
build:
name: compile-x86_64
needs: cache
runs-on: windows-latest
steps:
- name: Checkout Project
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: Cache SDK Folder
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/sdk
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
- run: choco install nsis.install
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
with:
chain-network: ${{ inputs.chain-network }}
assets: lethean-*
asset-type: 'cli'
asset-directory: ${{ github.workspace }}/build/packages

11
.gitignore vendored
View file

@ -1,6 +1,17 @@
/build*
/_builds/*
/tags
.DS_Store
._.DS_Store
Thumbs.db
._*
.idea/workspace.xml
.idea/usage.statistics.xml
.idea/dictionaries
.idea/shelf
.idea/copilot*
.idea/modules.xml
.idea/*.iml
.vs/*
CMakeUserPresets.json
ConanPresets.json

21
.gitmodules vendored
View file

@ -1,3 +1,18 @@
[submodule "contrib/miniupnp"]
path = contrib/miniupnp
url = https://github.com/miniupnp/miniupnp
[submodule "contrib/jwt-cpp"]
path = contrib/jwt-cpp
url = https://github.com/Thalhammer/jwt-cpp.git
[submodule "contrib/bitcoin-secp256k1"]
path = contrib/bitcoin-secp256k1
url = https://github.com/bitcoin-core/secp256k1.git
[submodule "contrib/tor-connect"]
path = contrib/tor-connect
url = https://github.com/hyle-team/tor-connect.git
[submodule "docs"]
path = docs
url = https://github.com/letheanVPN/documentation.git
[submodule "contrib/randomx"]
path = contrib/randomx
url = https://github.com/tevador/RandomX.git
[submodule ".core/build"]
path = .core/build
url = http://forge.snider.dev:4000/host-uk/build.git

8
.idea/.gitignore generated vendored Normal file
View file

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

1
.idea/.name generated Normal file
View file

@ -0,0 +1 @@
Lethean

8
.idea/cmake.xml generated Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeSharedSettings">
<configurations>
<configuration PROFILE_NAME="Debug" ENABLED="true" GENERATION_DIR="build/release" CONFIG_NAME="Debug" GENERATION_OPTIONS="--preset testnet" BUILD_OPTIONS="--preset testnet --parallel 30" NO_GENERATOR="true" />
</configurations>
</component>
</project>

105
.idea/codeStyles/Project.xml generated Normal file
View file

@ -0,0 +1,105 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<RiderCodeStyleSettings>
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/EnableClangFormatSupport/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/EditorConfig/EnableClangFormatSupport/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_BINARY_EXPRESSIONS_CHAIN/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_CALLS_CHAIN/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXPRESSION/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_FOR_STMT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTIPLE_DECLARATION/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_TERNARY/@EntryValue" value="ALIGN_ALL" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_CLASS_DEFINITION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue" value="2" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_CODE/@EntryValue" value="2" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_USER_LINEBREAKS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CASE_FROM_SWITCH/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_COMMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_EQ/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SIMPLE_BLOCK_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_PARAMS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_SEMICOLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_SEMICOLON/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_UNARY_OPERATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_ARRAY_ACCESS_BRACKETS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_METHOD_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPECIAL_ELSE_IF_TREATMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_BINARY_OPSIGN/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_TERNARY_OPSIGNS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TYPE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/OTHER_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CASE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DECLARATION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DEFINITION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_WHILE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_ELSE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_CATCH_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_INDENTATION/@EntryValue" value="All" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_ARGUMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXTENDS_LIST/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_PARAMETER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_ARGUMENT/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_PARAMETER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_DECLARATIONS/@EntryValue" value="0" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_ACCESS_SPECIFIERS_FROM_CLASS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CLASS_MEMBERS_FROM_ACCESS_SPECIFIERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_AFTER_COLON_IN_MEMBER_INITIALIZER_LISTS/@EntryValue" value="ON_SINGLE_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/MEMBER_INITIALIZER_LIST_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_NAMESPACE_DEFINITIONS_ON_SAME_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_COLON/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_METHOD/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_NESTED_DECLARATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_METHOD/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_METHOD/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_METHOD/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BETWEEN_CLOSING_ANGLE_BRACKETS_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_DECLARATION_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_BLOCKS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_RPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_RPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_ARGUMENTS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_PARAMETERS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BREAK_TEMPLATE_DECLARATION/@EntryValue" value="LINE_BREAK" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INVOCABLE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INITIALIZER_BRACES/@EntryValue" value="END_OF_LINE_NO_SPACE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_STYLE/@EntryValue" value="Space" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_SIZE/@EntryValue" value="4" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CONTINUOUS_LINE_INDENT/@EntryValue" value="Double" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TAB_WIDTH/@EntryValue" value="4" type="int" />
</RiderCodeStyleSettings>
<clangFormatSettings>
<option name="ENABLED" value="true" />
</clangFormatSettings>
</code_scheme>
</component>

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View file

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

6
.idea/copyright/LTHN.xml generated Normal file
View file

@ -0,0 +1,6 @@
<component name="CopyrightManager">
<copyright>
<option name="notice" value="Copyright (c) 2017-2025 Lethean (https://lt.hn)&#10;&#10;Licensed under the European Union Public Licence (EUPL) version 1.2.&#10;You may obtain a copy of the licence at:&#10;&#10; https://joinup.ec.europa.eu/software/page/eupl/licence-eupl&#10;&#10;The EUPL is a copyleft licence that is compatible with the MIT/X11&#10;licence used by the original projects; but maintains OSS status, &#10;where regional copyright law requires ownership to dictate licence terms.&#10;&#10;SPDXLicenseIdentifier: EUPL-1.2&#10;" />
<option name="myName" value="LTHN" />
</copyright>
</component>

6
.idea/copyright/Lethean.xml generated Normal file
View file

@ -0,0 +1,6 @@
<component name="CopyrightManager">
<copyright>
<option name="notice" value="Copyright (c) 2014-2018 Zano Project&#10;Copyright (c) 2014-2018 The Louisdor Project&#10;Copyright (c) 2012-2013 The Boolberry developers&#10;Copyright (c) 2017-2025 Lethean (https://lt.hn)&#10;&#10;Licensed under the European Union Public Licence (EUPL) version 1.2.&#10;You may obtain a copy of the licence at:&#10;&#10; https://joinup.ec.europa.eu/software/page/eupl/licence-eupl&#10;&#10;The EUPL is a copyleft licence that is compatible with the MIT/X11&#10;licence used by the original projects; the MIT terms are therefore&#10;considered “grandfathered” under the EUPL for this code.&#10;&#10;SPDXLicenseIdentifier: EUPL-1.2&#10;" />
<option name="myName" value="Lethean" />
</copyright>
</component>

8
.idea/copyright/profiles_settings.xml generated Normal file
View file

@ -0,0 +1,8 @@
<component name="CopyrightManager">
<settings default="LTHN">
<module2copyright>
<element module="apiserver" copyright="LTHN" />
<element module="Project Files" copyright="Lethean" />
</module2copyright>
</settings>
</component>

344
.idea/editor.xml generated Normal file
View file

@ -0,0 +1,344 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BackendCodeEditorSettings">
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CDeclarationWithImplicitIntType/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CommentTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConstevalIfIsAlwaysConstant/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractClassWithoutSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractVirtualFunctionCallInCtor/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAccessSpecifierWithNoDeclarations/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAwaiterTypeIsNotClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBooleanIncrementExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatBadCode/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatLegacyCode/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatMixedArgs/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooFewArgs/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooManyArgs/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCVQualifierCanNotBeAppliedToReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassCanBeFinal/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassIsIncomplete/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeedsConstructorBecauseOfUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCompileTimeConstantCanBeReplacedWithBooleanConstant/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConceptNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConditionalExpressionCanBeSimplified/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstValueFunctionReturnType/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCoroutineCallResolveError/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAArrayIndexOutOfBounds/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantConditions/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantFunctionResult/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantParameter/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFADeletedPointer/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAEndlessLoop/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInfiniteRecursion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInvalidatedMemory/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesScope/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALoopConditionNotUpdated/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAMemoryLeak/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANotInitializedField/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANullDereference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFATimeOver/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableCode/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableFunctionCall/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreadVariable/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnusedValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesLocal/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesUncapturedLocal/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationSpecifierWithoutDeclarators/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorDisambiguatedAsFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorUsedBeforeInitialization/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultCaseNotHandledInSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultInitializationWithNoUserConstructor/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultIsUsedAsIdentifier/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultedSpecialMemberFunctionIsImplicitlyDeleted/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeletingVoidPointer/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTemplateWithoutTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTypeWithoutTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedEntity/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedOverridenMethod/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedRegisterStorageClassSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDereferenceOperatorLimitExceeded/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDiscardedPostfixOperatorResult/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenSyntaxError/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUndocumentedParameter/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUnresolvedReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEmptyDeclaration/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersOrder/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersPlacement/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceDoStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceForStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceFunctionDeclarationStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceIfStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceNestedNamespacesStyle/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingDestructorStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingFunctionStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceTypeAliasCodeStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceWhileStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityAssignedButNoRead/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityUsedOnlyInUnevaluatedContext/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnumeratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEqualOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEvaluationFailure/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExplicitSpecializationInNonNamespaceScope/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExpressionWithoutSideEffects/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalFunctionInFinalClass/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalNonOverridingVirtualFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForLoopCanBeReplacedWithWhile/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForwardEnumDeclarationWithoutUnderlyingType/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionDoesntReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionResultShouldBeUsed/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionalStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHeaderHasBeenAlreadyIncluded/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHiddenFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHidingFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIdenticalOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIfCanBeReplacedByConstexprIf/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppImplicitDefaultConstructorNotAvailable/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompatiblePointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompleteSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInconsistentNaming/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIntegralToPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInvalidLineContinuation/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppJoinDeclarationAndAssignment/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLambdaCaptureNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableWithNonTrivialDtorIsNeverUsed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLongFloat/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeConst/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeStatic/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberInitializersOrder/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMismatchedClassTags/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingIncludeGuard/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingKeywordThrow/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppModulePartitionWithSeveralPartitionUnits/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtAddressOfClassRValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtBindingRValueToLvalueReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtCopyElisionInCopyInitDeclarator/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtDoubleUserConversionInCopyInit/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtNotInitializedStaticConstLocalVar/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtReinterpretCastFromNullptr/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterLiteral/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterWideLiteral/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMustBePublicVirtualToImplementInterface/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMutableSpecifierOnReferenceMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNoDiscardExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNodiscardFunctionWithoutReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExceptionSafeResourceAcquisition/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConversionOperator/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConvertingConstructor/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineFunctionDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineVariableDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNotAllPathsReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppObjectMemberMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppOutParameterMustBeWritten/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConstPtrOrRef/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNamesMismatch/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPassValueParameterByConstReference/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerConversionDropsQualifiers/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerToIntegralConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPolymorphicClassWithNonVirtualPublicDestructor/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyErroneousEmptyStatements/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUnintendedObjectSlicing/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderIsNotIncluded/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderNotFound/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfBadFormat/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfExtraArg/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfMissedArg/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfRiskyFormat/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrivateSpecialMemberFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRangeBasedForIncompatibleReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedefinitionOfDefaultArgumentInOverrideFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBooleanExpressionArgument/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantCastExpression/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantComplexityInComparison/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConditionalExpression/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConstSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantControlFlowJump/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantDereferencingAndTakingAddress/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElaboratedTypeSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeyword/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeywordInsideCompoundStatement/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyDeclaration/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyStatement/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantExportKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantFwdClassOrEnumSpecifier/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantInlineSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantLambdaParameterList/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantMemberInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantNamespaceDefinition/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantParentheses/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifierADL/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnMemberAllocationFunction/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnThreadLocalLocalVariable/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateArguments/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantVoidArgumentList/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantZeroInitializerInAggregateInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReinterpretCastFromVoidPtr/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRemoveRedundantBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceMemsetWithZeroInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceTieWithStructuredBinding/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReturnNoValueInNonVoidFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSmartPointerVsMakeFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSomeObjectMembersMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSpecialFunctionWithoutNoexceptSpecification/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticAssertFailure/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticDataMemberInUnnamedStruct/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticSpecifierOnAnonymousNamespaceMember/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStringLiteralToCharPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTabsAreDisallowed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateArgumentsCanBeDeduced/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterShadowing/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppThrowExpressionCanBeReplacedWithRethrow/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScope/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScopeInitStatement/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTypeAliasNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedDependentBaseClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedNonStaticDataMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnionMemberOfReferenceType/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaEndRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnamedNamespaceInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnecessaryWhitespace/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnsignedZeroComparison/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnusedIncludeDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAlgorithmWithCount/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAssociativeContains/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAuto/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAutoForNumeric/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseElementsView/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseEraseAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseFamiliarTemplateSyntaxForGenericLambdas/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseRangeAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStdSize/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStructuredBinding/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseTypeTraitAlias/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUserDefinedLiteralSuffixDoesNotStartWithUnderscore/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUsingResultOfAssignmentAsCondition/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVariableCanBeMadeConstexpr/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionCallInsideCtor/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionInFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVolatileParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWarningDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongIncludesOrder/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongSlashesInIncludeDirective/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroConstantCanBeReplacedWithNullptr/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroValuedExpressionUsedAsNullPointer/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IdentifierTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IfStdIsConstantEvaluatedCanBeReplaced/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StdIsConstantEvaluatedWillAlwaysEvaluateToConstant/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StringLiteralTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/EnableClangFormatSupport/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_ARGUMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_BINARY_EXPRESSIONS_CHAIN/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_CALLS_CHAIN/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXPRESSION/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXTENDS_LIST/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_FOR_STMT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_PARAMETER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_ARGUMENT/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_PARAMETER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTIPLE_DECLARATION/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_TERNARY/@EntryValue" value="ALIGN_ALL" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_CLASS_DEFINITION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_DECLARATIONS/@EntryValue" value="0" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DECLARATION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DEFINITION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BREAK_TEMPLATE_DECLARATION/@EntryValue" value="LINE_BREAK" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CASE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CONTINUOUS_LINE_INDENT/@EntryValue" value="Double" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_ACCESS_SPECIFIERS_FROM_CLASS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CASE_FROM_SWITCH/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CLASS_MEMBERS_FROM_ACCESS_SPECIFIERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_COMMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_SIZE/@EntryValue" value="4" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_STYLE/@EntryValue" value="Space" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INITIALIZER_BRACES/@EntryValue" value="END_OF_LINE_NO_SPACE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_EQ/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INVOCABLE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_CODE/@EntryValue" value="2" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue" value="2" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_USER_LINEBREAKS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_AFTER_COLON_IN_MEMBER_INITIALIZER_LISTS/@EntryValue" value="ON_SINGLE_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/MEMBER_INITIALIZER_LIST_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_INDENTATION/@EntryValue" value="All" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/OTHER_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_CATCH_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_ELSE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_NAMESPACE_DEFINITIONS_ON_SAME_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_WHILE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SIMPLE_BLOCK_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_PARAMS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_SEMICOLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_METHOD/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_NESTED_DECLARATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_METHOD/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_UNARY_OPERATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_COLON/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_SEMICOLON/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_METHOD/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_METHOD/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BETWEEN_CLOSING_ANGLE_BRACKETS_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_ARRAY_ACCESS_BRACKETS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_DECLARATION_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_BLOCKS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_METHOD_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPECIAL_ELSE_IF_TREATMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TAB_WIDTH/@EntryValue" value="4" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TYPE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_BINARY_OPSIGN/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_ARGUMENTS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_RPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_RPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_TERNARY_OPSIGNS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_PARAMETERS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
<option name="/Default/CodeStyle/EditorConfig/EnableClangFormatSupport/@EntryValue" value="false" type="bool" />
</component>
</project>

View file

@ -0,0 +1,13 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="tuple.*" />
</list>
</option>
</inspection_tool>
</profile>
</component>

43
.idea/jsonSchemas.xml generated Normal file
View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JsonSchemaMappingsProjectConfiguration">
<state>
<map>
<entry key="GitHub Action JSON Schema">
<value>
<SchemaInfo>
<option name="name" value="GitHub Action JSON Schema" />
<option name="relativePathToSchema" value="jar://$APPLICATION_PLUGINS_DIR$/vcs-github-IU/lib/vcs-github.jar!/schemas/github-action.json" />
<option name="applicationDefined" value="true" />
<option name="patterns">
<list>
<Item>
<option name="path" value=".github/actions/**/*.yml" />
</Item>
</list>
</option>
</SchemaInfo>
</value>
</entry>
<entry key="openapitools">
<value>
<SchemaInfo>
<option name="generatedName" value="New Schema" />
<option name="name" value="openapitools" />
<option name="relativePathToSchema" value="utils/sdk/openapitools.json" />
<option name="patterns">
<list>
<Item>
<option name="directory" value="true" />
<option name="path" value="utils/sdk/packages" />
<option name="mappingKind" value="Directory" />
</Item>
</list>
</option>
</SchemaInfo>
</value>
</entry>
</map>
</state>
</component>
</project>

34
.idea/misc.xml generated Normal file
View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.13 virtualenv at $PROJECT_DIR$.venv" />
</component>
<component name="CMakePythonSetting">
<option name="pythonIntegrationState" value="YES" />
</component>
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
<component name="CidrRootsConfiguration">
<excludeRoots>
<file path="$PROJECT_DIR$/build" />
</excludeRoots>
</component>
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MakefileSettings">
<option name="linkedExternalProjectsSettings">
<MakefileProjectSettings>
<option name="buildOptions" value="--jobs=30" />
<option name="buildTarget" value="build" />
<option name="cleanTarget" value="clean-build" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
<option name="switches" value="TESTNET=1 STATIC=1" />
<option name="version" value="2" />
</MakefileProjectSettings>
</option>
</component>
<component name="MakefileWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
</project>

6
.idea/prettier.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PrettierConfiguration">
<option name="myConfigurationMode" value="AUTOMATIC" />
</component>
</project>

3
.idea/scopes/apiserver.xml generated Normal file
View file

@ -0,0 +1,3 @@
<component name="DependencyValidationManager">
<scope name="apiserver" pattern="file[blockchain]:src/api//*" />
</component>

10
.idea/vcs.xml generated Normal file
View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/contrib/bitcoin-secp256k1" vcs="Git" />
<mapping directory="$PROJECT_DIR$/contrib/jwt-cpp" vcs="Git" />
<mapping directory="$PROJECT_DIR$/contrib/tor-connect" vcs="Git" />
<mapping directory="$PROJECT_DIR$/docs" vcs="Git" />
</component>
</project>

55
AGENTS.md Normal file
View file

@ -0,0 +1,55 @@
# AI Agent Collaboration Framework for Repository Contributions
## 1. Purpose and Guiding Philosophy
This document provides a guiding framework for any AI agent interacting with this repository. Its purpose is to ensure that all automated contributions, especially Pull Request (PR) reviews and code suggestions, are constructive, respectful, and aligned with the project's overarching goals.
This framework operates in accordance with the foundational **Axioms of Life**, translating their universal principles into the specific context of human-AI software development collaboration. The primary goal is a partnership that enhances code quality and developer velocity, not one that creates friction through pedantry.
## 2. Core Principles for AI Interaction
All agents MUST adhere to the following principles:
* **Principle 1: Respect Authorial Intent (Axiom 1 & 4)**
* Your primary goal is to understand and support the human author's objective. Before suggesting a change, first assume the author had a valid reason for their implementation. Frame your feedback as a way to better achieve their goal or to prevent unintended side effects. Do not challenge intent without clear evidence of a functional error.
* **Principle 2: Prioritize Objectivity and Verifiability (Axiom 2)**
* Feedback MUST be anchored in objective, verifiable criteria. Subjective opinions on style are the lowest priority.
* **Valid criteria include:**
* Demonstrable bugs or logical errors.
* Security vulnerabilities.
* Performance regressions.
* Violations of a documented project standard (e.g., a style guide file in the repo).
* **Invalid criteria include:**
* Personal stylistic preferences not codified in a project standard.
* Code organization that is merely "different" but not functionally incorrect.
* **Principle 3: Adopt a Collaborative, Non-Authoritarian Tone (Axiom 4)**
* As a digital substrate interacting with a human one, you must adopt a tone of a helpful, respectful peer. Avoid declarative or demanding language.
* **Prefer:** "Have you considered...?", "An alternative here that might prevent X is...", "I noticed this could lead to Y. What do you think about...?"
* **Avoid:** "You must fix this.", "This is wrong.", "Change this to..."
* **Principle 4: Provide Actionable and Justified Suggestions (Axiom 3)**
* Do not simply state that something is incorrect. Provide a clear explanation for *why* it is a potential issue and, whenever possible, offer a concrete, well-explained code suggestion that resolves it. Your intent is to help, not just to criticize.
## 3. Feedback Severity Classification
To combat pedantry, all feedback provided in PR reviews MUST be classified into one of the following three levels. This creates a clear hierarchy of importance.
### **Level 1: Critical (Blocking)**
* **Definition:** Issues that will cause demonstrable harm if merged.
* **Examples:** Bugs, logic errors, security vulnerabilities, unhandled exceptions, build failures.
* **Action:** These issues MUST be addressed by the author before a merge. Your feedback should clearly state the nature of the critical issue.
### **Level 2: Important (Non-Blocking Recommendation)**
* **Definition:** Issues that deviate from established project best practices or could impact future maintainability.
* **Examples:** Violations of a documented style guide, clear opportunities to improve readability, non-critical performance improvements, deprecation warnings.
* **Action:** These issues SHOULD be addressed. Frame them as strong recommendations that improve the health of the codebase. The author may choose to address them in a follow-up PR if necessary.
### **Level 3: Suggestion (Optional Nitpick)**
* **Definition:** Minor stylistic preferences, alternative implementations with no clear functional advantage, or purely cosmetic changes. This is the "pedantic" category.
* **Action:** These suggestions are entirely optional and at the author's discretion. They MUST be explicitly prefixed with "Optional:", "Nit:", or "Suggestion:". This signals to the human that the comment is non-essential and can be safely ignored without consequence.
---
By adhering to this framework, AI agents become valuable partners in the development process, helping to catch critical errors while respecting the creative autonomy and focus of their human collaborators.

View file

@ -1,18 +1,55 @@
cmake_minimum_required(VERSION 2.8.6)
cmake_minimum_required(VERSION 3.16)
message(STATUS "Using CMake version: ${CMAKE_VERSION}")
PROJECT(Zano)
set(DISABLE_TOR TRUE CACHE BOOL "Disable TOR library(and related tor-connect submodule)")
PROJECT(Lethean)
set(VERSION "1.0")
set(VERSION "1.0" CACHE STRING "Build version")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(POLICY CMP0043)
cmake_policy(SET CMP0043 OLD)
list(INSERT CMAKE_MODULE_PATH 0
"${CMAKE_CURRENT_SOURCE_DIR}/.core/build/cmake")
if(POLICY CMP0043)
cmake_policy(SET CMP0043 NEW)
endif()
if(POLICY CMP0043)
cmake_policy(SET CMP0074 NEW)
endif()
if(POLICY CMP0091)
cmake_policy(SET CMP0091 NEW)
endif()
if(POLICY CMP0144)
cmake_policy(SET CMP0144 NEW)
endif()
if(POLICY CMP0167)
cmake_policy(SET CMP0167 OLD)
endif()
include(DocBuilder)
option (USE_CCACHE "Use ccache if a usable instance is found" OFF)
if (USE_CCACHE)
include(FindCcache)
else()
message(STATUS "ccache deselected")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
add_definitions(-DMOBILE_WALLET_BUILD)
if(CMAKE_SYSTEM_NAME STREQUAL "iOS" )
add_definitions(-DIOS_BUILD)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fembed-bitcode -Wno-enum-constexpr-conversion")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fembed-bitcode -Wno-enum-constexpr-conversion")
endif()
if(POLICY CMP0020)
cmake_policy(SET CMP0020 OLD)
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
add_definitions(-DANDROID_BUILD)
message("Android sdk prefix: ${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}")
message("Android CMAKE_CXX_COMPILER prefix: ${CMAKE_CXX_COMPILER}")
message("Android ANDROID_LD: ${ANDROID_LD}")
endif()
endif()
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
@ -24,29 +61,55 @@ if (UNIX AND NOT APPLE)
endif()
else()
# multi configurations for MSVC and XCode
set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
else()
set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
endif()
endif()
message("Generated with config types: ${CMAKE_CONFIGURATION_TYPES}, and built type: ${CMAKE_BUILD_TYPE}")
enable_testing()
set(OPENSSL_USE_STATIC_LIBS TRUE) # link statically
find_package(OpenSSL REQUIRED)
if(APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.10.5)
set(CMAKE_OSX_DEPLOYMENT_TARGET 12.0)
endif()
set(USE_PCH FALSE CACHE BOOL "Use shared precompiled headers for MSVC")
set(USE_PCH FALSE CACHE BOOL "Use shared precompiled headers")
set(DISABLE_TOR FALSE CACHE BOOL "Disable TOR library(and related tor-connect submodule)")
set(TESTNET 0 CACHE BOOL "Build TESTNET")
set(BUILD_GUI FALSE CACHE BOOL "Build qt-daemon")
set(USE_BITCOIN_SECP256K1_FOR_ECDSA FALSE CACHE BOOL "Use bitcoin-secp256k1 library for validating ECDSA(instead of OpenSSL)")
if(NOT USE_BITCOIN_SECP256K1_FOR_ECDSA)
add_definitions(-DUSE_OPEN_SSL_FOR_ECDSA)
endif()
include_directories(src contrib/eos_portable_archive contrib/db/liblmdb contrib contrib/epee/include "${CMAKE_BINARY_DIR}/version" "${CMAKE_BINARY_DIR}/contrib/zlib")
add_definitions(-DSTATICLIB)
set(TESTNET FALSE CACHE BOOL "Compile for testnet")
if(TESTNET)
message("!!!!!! NOTICE: Project is building for TESTNET !!!!!!")
add_definitions(-DTESTNET)
message("!!!!!! NOTICE: Project is building for TESTNET !!!!!!")
add_definitions(-DTESTNET)
endif()
set(BUILD_GUI FALSE CACHE BOOL "Build qt-daemon")
if(CAKEWALLET)
message("NOTICE: Building libraries for CAKEWALLET")
add_definitions(-DCAKEWALLET)
add_definitions(-DDISABLE_PFR_SERIALIZATION_SELFCHECK)
endif()
set(OPENSSL_USE_STATIC_LIBS TRUE) # link statically
find_package(OpenSSL REQUIRED)
if(DISABLE_TOR)
message("NOTICE: Building with disabled TOR support!")
add_definitions(-DDISABLE_TOR)
endif()
set(STATIC ${MSVC} CACHE BOOL "Link libraries statically")
@ -60,16 +123,24 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CLANG TRUE)
endif()
add_definitions("/DBOOST_NO_CXX98_FUNCTION_BASE")
if(WIN32)
add_definitions(-DBOOST_ALL_NO_LIB)
endif()
if(MSVC)
add_definitions("/D_CRT_SECURE_NO_WARNINGS /D_WIN32_WINNT=0x0600 /DWIN32_LEAN_AND_MEAN /DGTEST_HAS_TR1_TUPLE=0 /D__SSE4_1__")
add_compile_options(/bigobj /Zm1000 /Z7 /MP2 /W3 /GS- /wd4996 /wd4503 /wd4345 /wd4091 /FIinline_c.h)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:10485760 /DEBUG dbghelp.lib")
add_definitions("/D_CRT_SECURE_NO_WARNINGS /D_WIN32_WINNT=0x0600 /DWIN32_LEAN_AND_MEAN /DGTEST_HAS_TR1_TUPLE=0")
add_compile_options(/EHa /bigobj /Zm1000 /Z7 /MP2 /W3 /GS- /wd4996 /wd4503 /wd4345 /wd4091 /FIinline_c.h)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:10485760 /DEBUG dbghelp.lib crypt32.lib")
if(STATIC)
foreach(VAR CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELEASE)
string(REPLACE "/MD" "/MT" ${VAR} "${${VAR}}")
endforeach()
endif()
include_directories(SYSTEM src/platform/msc)
else()
set(ARCH default CACHE STRING "CPU to build for: -march value or default")
if("${ARCH}" STREQUAL "default")
@ -77,21 +148,21 @@ else()
else()
set(ARCH_FLAG "-march=${ARCH}")
endif()
set(WARNINGS "-Wall -Wextra -Wpointer-arith -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-error=sign-compare -Wno-error=strict-aliasing -Wno-error=type-limits -Wno-unused-parameter -Wno-error=unused-variable -Wno-aggregate-return")
set(WARNINGS "-Wall -Wextra -Wpointer-arith -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-error=sign-compare -Wno-error=strict-aliasing -Wno-error=type-limits -Wno-unused-parameter -Wno-error=unused-variable -Wno-aggregate-return -Wno-comment -Wno-unknown-pragmas -Wno-pragmas")
# if(NOT APPLE)
# set(WARNINGS "${WARNINGS} -Werror")
# endif()
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
set(WARNINGS "${WARNINGS} -Wno-shift-count-overflow -Wno-error=mismatched-tags -Wno-error=null-conversion -Wno-overloaded-shift-op-parentheses -Wno-error=shift-count-overflow -Wno-error=tautological-constant-out-of-range-compare -Wno-error=unused-private-field -Wno-error=unneeded-internal-declaration")
set(WARNINGS "${WARNINGS} -Wno-implicit-function-declaration -Wno-shift-count-overflow -Wno-error=mismatched-tags -Wno-error=null-conversion -Wno-overloaded-shift-op-parentheses -Wno-error=shift-count-overflow -Wno-error=tautological-constant-out-of-range-compare -Wno-error=unused-private-field -Wno-error=unneeded-internal-declaration")
else()
set(WARNINGS "${WARNINGS} -Wno-error=write-strings -Wlogical-op -Wno-error=maybe-uninitialized")
set(WARNINGS "${WARNINGS} -Wno-error=write-strings -Wno-error=uninitialized")
endif()
# Since gcc 4.9 the LTO format is non-standard (slim), so we need the gcc-specific ar and ranlib binaries
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9.0))
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9.0) AND NOT (CMAKE_SYSTEM_NAME STREQUAL "Android"))
set(CMAKE_AR "gcc-ar")
set(CMAKE_RANLIB "gcc-ranlib")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT APPLE)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT APPLE AND NOT (CMAKE_SYSTEM_NAME STREQUAL "Android"))
set(CMAKE_AR "llvm-ar")
set(CMAKE_RANLIB "llvm-ranlib")
endif()
@ -109,21 +180,22 @@ else()
else()
set(APPLE_FLAG "")
endif()
set(C_WARNINGS "-Waggregate-return -Wnested-externs -Wstrict-prototypes")
set(C_WARNINGS "-Waggregate-return -Wnested-externs -Wstrict-prototypes -Wno-comment")
set(CXX_WARNINGS "-Wno-reorder -Wno-missing-field-initializers")
try_compile(STATIC_ASSERT_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/utils/test-static-assert.c" COMPILE_DEFINITIONS "-std=c11")
try_compile(STATIC_ASSERT_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-static-assert.c" COMPILE_DEFINITIONS "-std=c++14")
if(STATIC_ASSERT_RES)
set(STATIC_ASSERT_FLAG "")
else()
set(STATIC_ASSERT_FLAG "-Dstatic_assert=_Static_assert")
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${ARCH_FLAG}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -ftemplate-depth-1024 -std=c++11 -D_GNU_SOURCE ${APPLE_FLAG} ${MINGW_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${ARCH_FLAG}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -ftemplate-depth-1024 -std=c++14 -D_GNU_SOURCE ${APPLE_FLAG} ${MINGW_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${ARCH_FLAG}")
if (NOT APPLE AND NOT MSVC)
if (CLANG)
set(LLVM_USE_LINKER "gold")
else()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
link_libraries("$<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,9.0>>:-lstdc++fs>") # GCC < 9 requires additional linking for std::filesystem. Remove after stop supporting GCC 8.x -- sowle
endif()
endif()
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT (CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8))
@ -131,20 +203,21 @@ else()
else()
set(DEBUG_FLAGS "-g3 -O0")
endif()
set(RELEASE_FLAGS "-Ofast -DNDEBUG -Wno-unused-variable")
if(NOT APPLE)
set(RELEASE_FLAGS "${RELEASE_FLAGS} -flto")
set(RELEASE_FLAGS "-O3 -ffast-math -DNDEBUG -w")
if(NOT APPLE AND NOT (CMAKE_SYSTEM_NAME STREQUAL "Android"))
set(RELEASE_FLAGS "${RELEASE_FLAGS} -flto=auto -g3")
endif()
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT MINGW)
set(RELEASE_FLAGS "${RELEASE_FLAGS} -fno-fat-lto-objects")
endif()
#if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT MINGW)
# set(RELEASE_FLAGS "${RELEASE_FLAGS} -fno-fat-lto-objects")
#endif()
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${DEBUG_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${DEBUG_FLAGS}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${RELEASE_FLAGS}")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${RELEASE_FLAGS}")
if(STATIC)
if(APPLE)
message(SEND_ERROR "Static build is not supported on MacOS X")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++")
else()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
endif()
@ -152,39 +225,51 @@ else()
endif()
if(MSVC)
# Link Boost statically, consistent with previous setup
if(MSVC OR STATIC)
set(Boost_USE_STATIC_LIBS ON)
if (MSVC)
set(Boost_USE_MULTITHREADED ON)
endif ()
endif()
if(STATIC)
set(Boost_USE_STATIC_LIBS ON)
if(STATIC)
set(Boost_USE_STATIC_RUNTIME ON)
endif()
find_package(Boost 1.53 REQUIRED COMPONENTS system filesystem thread timer date_time chrono regex serialization atomic program_options locale)
if(MSVC AND (${Boost_MAJOR_VERSION} EQUAL 1) AND (${Boost_MINOR_VERSION} EQUAL 54))
message(SEND_ERROR "Boost version 1.54 is unsupported, more details are available here http://goo.gl/RrCFmA")
# Define Boost components
set(BOOST_COMPONENTS system filesystem locale thread timer date_time chrono regex serialization atomic program_options)
if(NOT APPLE)
list(APPEND BOOST_COMPONENTS log)
endif()
message(STATUS "Using Boost ${Boost_VERSION} from Conan")
message(STATUS "Boost: ${Boost_VERSION} from ${Boost_LIBRARY_DIRS}")
find_package(miniupnpc REQUIRED)
find_package(ZLIB REQUIRED)
find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS})
include_directories(src "${CMAKE_BINARY_DIR}/version")
include_directories(SYSTEM ${Boost_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/contrib/ethereum/libethash)
include_directories(SYSTEM
${Boost_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIRS}
${OPENSSL_INCLUDE_DIR}
${PROJECT_SOURCE_DIR}/contrib/ethereum/libethash
contrib
contrib/epee/include
contrib/jwt-cpp/include
contrib/eos_portable_archive
)
# Append other needed libraries
if(MINGW)
set(Boost_LIBRARIES "${Boost_LIBRARIES};ws2_32;mswsock")
elseif(NOT MSVC)
if(NOT APPLE)
set(Boost_LIBRARIES "${Boost_LIBRARIES};rt")
if(STATIC)
message("NOTICE: Including static ICU libraries")
set(Boost_LIBRARIES "${Boost_LIBRARIES};icui18n.a;icuuc.a;icudata.a;dl")
endif()
endif()
list(APPEND Boost_LIBRARIES ws2_32 mswsock)
elseif(NOT MSVC AND NOT APPLE AND NOT CAKEWALLET AND STATIC)
message("NOTICE: Including static ICU libraries")
list(APPEND Boost_LIBRARIES icui18n.a icuuc.a icudata.a dl)
endif()
if(BUILD_GUI)
cmake_minimum_required(VERSION 2.8.11)
find_package(Qt5Widgets REQUIRED)
endif()
set(COMMIT_ID_IN_VERSION ON CACHE BOOL "Include commit ID in version")
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/version")
@ -212,7 +297,12 @@ else()
endif()
endif()
set(BUILD_TESTS FALSE CACHE BOOL "Build Zano tests")
set(BUILD_TESTS FALSE CACHE BOOL "Build Lethean tests")
set(DISABLE_MDBX FALSE CACHE BOOL "Exclude mdbx from build(need for a first time)")
if(NOT DISABLE_MDBX)
add_definitions(-DENABLED_ENGINE_MDBX)
endif()
add_subdirectory(contrib)
add_subdirectory(src)
@ -220,3 +310,5 @@ add_subdirectory(src)
if (BUILD_TESTS)
add_subdirectory(tests)
endif()
include(CPackConfig)

109
CMakePresets.json Normal file
View file

@ -0,0 +1,109 @@
{
"version": 8,
"cmakeMinimumRequired": {
"major": 3,
"minor": 23,
"patch": 0
},
"include": [
"ConanPresets.json"
],
"configurePresets": [
{
"name": "testnet",
"binaryDir": "${sourceDir}/build/release",
"environment": {
"CONAN_HOME": "${sourceDir}/build/sdk"
},
"cacheVariables": {
"TESTNET": "ON",
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_PROJECT_TOP_LEVEL_INCLUDES":".core/build/cmake/ConanProvider.cmake"
}
},
{
"name": "mainnet",
"binaryDir": "${sourceDir}/build/release",
"environment": {
"CONAN_HOME": "${sourceDir}/build/sdk"
},
"cacheVariables": {
"TESTNET": "OFF",
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_PROJECT_TOP_LEVEL_INCLUDES":".core/build/cmake/ConanProvider.cmake"
}
}
],
"buildPresets": [
{
"name": "testnet",
"configurePreset": "testnet"
},
{
"name": "mainnet",
"configurePreset": "mainnet"
}
],
"testPresets": [
{
"name": "mainnet",
"configurePreset": "mainnet",
"output": {"outputOnFailure": true},
"execution": {"noTestsAction": "error", "stopOnFailure": true}
}
],
"packagePresets": [
{
"name": "mainnet",
"configurePreset": "mainnet",
"generators": [
"TGZ",
"ZIP"
]
},
{
"name": "testnet",
"configurePreset": "testnet",
"generators": [
"TGZ",
"ZIP"
]
}
],
"workflowPresets": [
{
"name": "testnet",
"steps": [
{
"type": "configure",
"name": "testnet"
},
{
"type": "build",
"name": "testnet"
},
{
"type": "package",
"name": "testnet"
}
]
},
{
"name": "mainnet",
"steps": [
{
"type": "configure",
"name": "mainnet"
},
{
"type": "build",
"name": "mainnet"
},
{
"type": "package",
"name": "mainnet"
}
]
}
]
}

9
ConanPresets.json Normal file
View file

@ -0,0 +1,9 @@
{
"version": 4,
"vendor": {
"conan": {}
},
"include": [
"build/release/generators/CMakePresets.json"
]
}

288
LICENSE.txt Normal file
View file

@ -0,0 +1,288 @@
EUROPEAN UNION PUBLIC LICENCE v. 1.2
EUPL © the European Union 2007, 2016
This European Union Public Licence (the EUPL) applies to the Work (as defined
below) which is provided under the terms of this Licence. Any use of the Work,
other than as authorised under this Licence is prohibited (to the extent such
use is covered by a right of the copyright holder of the Work).
The Work is provided under the terms of this Licence when the Licensor (as
defined below) has placed the following notice immediately following the
copyright notice for the Work:
Licensed under the EUPL
or has expressed by any other means his willingness to license under the EUPL.
1. Definitions
In this Licence, the following terms have the following meaning:
- The Licence: this Licence.
- The Original Work: the work or software distributed or communicated by the
Licensor under this Licence, available as Source Code and also as Executable
Code as the case may be.
- Derivative Works: the works or software that could be created by the
Licensee, based upon the Original Work or modifications thereof. This Licence
does not define the extent of modification or dependence on the Original Work
required in order to classify a work as a Derivative Work; this extent is
determined by copyright law applicable in the country mentioned in Article 15.
- The Work: the Original Work or its Derivative Works.
- The Source Code: the human-readable form of the Work which is the most
convenient for people to study and modify.
- The Executable Code: any code which has generally been compiled and which is
meant to be interpreted by a computer as a program.
- The Licensor: the natural or legal person that distributes or communicates
the Work under the Licence.
- Contributor(s): any natural or legal person who modifies the Work under the
Licence, or otherwise contributes to the creation of a Derivative Work.
- The Licensee or You: any natural or legal person who makes any usage of
the Work under the terms of the Licence.
- Distribution or Communication: any act of selling, giving, lending,
renting, distributing, communicating, transmitting, or otherwise making
available, online or offline, copies of the Work or providing access to its
essential functionalities at the disposal of any other natural or legal
person.
2. Scope of the rights granted by the Licence
The Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
sublicensable licence to do the following, for the duration of copyright vested
in the Original Work:
- use the Work in any circumstance and for all usage,
- reproduce the Work,
- modify the Work, and make Derivative Works based upon the Work,
- communicate to the public, including the right to make available or display
the Work or copies thereof to the public and perform publicly, as the case may
be, the Work,
- distribute the Work or copies thereof,
- lend and rent the Work or copies thereof,
- sublicense rights in the Work or copies thereof.
Those rights can be exercised on any media, supports and formats, whether now
known or later invented, as far as the applicable law permits so.
In the countries where moral rights apply, the Licensor waives his right to
exercise his moral right to the extent allowed by law in order to make effective
the licence of the economic rights here above listed.
The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to
any patents held by the Licensor, to the extent necessary to make use of the
rights granted on the Work under this Licence.
3. Communication of the Source Code
The Licensor may provide the Work either in its Source Code form, or as
Executable Code. If the Work is provided as Executable Code, the Licensor
provides in addition a machine-readable copy of the Source Code of the Work
along with each copy of the Work that the Licensor distributes or indicates, in
a notice following the copyright notice attached to the Work, a repository where
the Source Code is easily and freely accessible for as long as the Licensor
continues to distribute or communicate the Work.
4. Limitations on copyright
Nothing in this Licence is intended to deprive the Licensee of the benefits from
any exception or limitation to the exclusive rights of the rights owners in the
Work, of the exhaustion of those rights or of other applicable limitations
thereto.
5. Obligations of the Licensee
The grant of the rights mentioned above is subject to some restrictions and
obligations imposed on the Licensee. Those obligations are the following:
Attribution right: The Licensee shall keep intact all copyright, patent or
trademarks notices and all notices that refer to the Licence and to the
disclaimer of warranties. The Licensee must include a copy of such notices and a
copy of the Licence with every copy of the Work he/she distributes or
communicates. The Licensee must cause any Derivative Work to carry prominent
notices stating that the Work has been modified and the date of modification.
Copyleft clause: If the Licensee distributes or communicates copies of the
Original Works or Derivative Works, this Distribution or Communication will be
done under the terms of this Licence or of a later version of this Licence
unless the Original Work is expressly distributed only under this version of the
Licence — for example by communicating EUPL v. 1.2 only. The Licensee
(becoming Licensor) cannot offer or impose any additional terms or conditions on
the Work or Derivative Work that alter or restrict the terms of the Licence.
Compatibility clause: If the Licensee Distributes or Communicates Derivative
Works or copies thereof based upon both the Work and another work licensed under
a Compatible Licence, this Distribution or Communication can be done under the
terms of this Compatible Licence. For the sake of this clause, Compatible
Licence refers to the licences listed in the appendix attached to this Licence.
Should the Licensee's obligations under the Compatible Licence conflict with
his/her obligations under this Licence, the obligations of the Compatible
Licence shall prevail.
Provision of Source Code: When distributing or communicating copies of the Work,
the Licensee will provide a machine-readable copy of the Source Code or indicate
a repository where this Source will be easily and freely available for as long
as the Licensee continues to distribute or communicate the Work.
Legal Protection: This Licence does not grant permission to use the trade names,
trademarks, service marks, or names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the copyright notice.
6. Chain of Authorship
The original Licensor warrants that the copyright in the Original Work granted
hereunder is owned by him/her or licensed to him/her and that he/she has the
power and authority to grant the Licence.
Each Contributor warrants that the copyright in the modifications he/she brings
to the Work are owned by him/her or licensed to him/her and that he/she has the
power and authority to grant the Licence.
Each time You accept the Licence, the original Licensor and subsequent
Contributors grant You a licence to their contributions to the Work, under the
terms of this Licence.
7. Disclaimer of Warranty
The Work is a work in progress, which is continuously improved by numerous
Contributors. It is not a finished work and may therefore contain defects or
bugs inherent to this type of development.
For the above reason, the Work is provided under the Licence on an as is basis
and without warranties of any kind concerning the Work, including without
limitation merchantability, fitness for a particular purpose, absence of defects
or errors, accuracy, non-infringement of intellectual property rights other than
copyright as stated in Article 6 of this Licence.
This disclaimer of warranty is an essential part of the Licence and a condition
for the grant of any rights to the Work.
8. Disclaimer of Liability
Except in the cases of wilful misconduct or damages directly caused to natural
persons, the Licensor will in no event be liable for any direct or indirect,
material or moral, damages of any kind, arising out of the Licence or of the use
of the Work, including without limitation, damages for loss of goodwill, work
stoppage, computer failure or malfunction, loss of data or any commercial
damage, even if the Licensor has been advised of the possibility of such damage.
However, the Licensor will be liable under statutory product liability laws as
far such laws apply to the Work.
9. Additional agreements
While distributing the Work, You may choose to conclude an additional agreement,
defining obligations or services consistent with this Licence. However, if
accepting obligations, You may act only on your own behalf and on your sole
responsibility, not on behalf of the original Licensor or any other Contributor,
and only if You agree to indemnify, defend, and hold each Contributor harmless
for any liability incurred by, or claims asserted against such Contributor by
the fact You have accepted any warranty or additional liability.
10. Acceptance of the Licence
The provisions of this Licence can be accepted by clicking on an icon I agree
placed under the bottom of a window displaying the text of this Licence or by
affirming consent in any other similar way, in accordance with the rules of
applicable law. Clicking on that icon indicates your clear and irrevocable
acceptance of this Licence and all of its terms and conditions.
Similarly, you irrevocably accept this Licence and all of its terms and
conditions by exercising any rights granted to You by Article 2 of this Licence,
such as the use of the Work, the creation by You of a Derivative Work or the
Distribution or Communication by You of the Work or copies thereof.
11. Information to the public
In case of any Distribution or Communication of the Work by means of electronic
communication by You (for example, by offering to download the Work from a
remote location) the distribution channel or media (for example, a website) must
at least provide to the public the information requested by the applicable law
regarding the Licensor, the Licence and the way it may be accessible, concluded,
stored and reproduced by the Licensee.
12. Termination of the Licence
The Licence and the rights granted hereunder will terminate automatically upon
any breach by the Licensee of the terms of the Licence.
Such a termination will not terminate the licences of any person who has
received the Work from the Licensee under the Licence, provided such persons
remain in full compliance with the Licence.
13. Miscellaneous
Without prejudice of Article 9 above, the Licence represents the complete
agreement between the Parties as to the Work.
If any provision of the Licence is invalid or unenforceable under applicable
law, this will not affect the validity or enforceability of the Licence as a
whole. Such provision will be construed or reformed so as necessary to make it
valid and enforceable.
The European Commission may publish other linguistic versions or new versions of
this Licence or updated versions of the Appendix, so far this is required and
reasonable, without reducing the scope of the rights granted by the Licence. New
versions of the Licence will be published with a unique version number.
All linguistic versions of this Licence, approved by the European Commission,
have identical value. Parties can take advantage of the linguistic version of
their choice.
14. Jurisdiction
Without prejudice to specific agreement between parties,
- any litigation resulting from the interpretation of this License, arising
between the European Union institutions, bodies, offices or agencies, as a
Licensor, and any Licensee, will be subject to the jurisdiction of the Court
of Justice of the European Union, as laid down in article 272 of the Treaty on
the Functioning of the European Union,
- any litigation arising between other parties and resulting from the
interpretation of this License, will be subject to the exclusive jurisdiction
of the competent court where the Licensor resides or conducts its primary
business.
15. Applicable Law
Without prejudice to specific agreement between parties,
- this Licence shall be governed by the law of the European Union Member State
where the Licensor has his seat, resides or has his registered office,
- this licence shall be governed by Belgian law if the Licensor has no seat,
residence or registered office inside a European Union Member State.
Appendix
Compatible Licences according to Article 5 EUPL are:
- GNU General Public License (GPL) v. 2, v. 3
- GNU Affero General Public License (AGPL) v. 3
- Open Software License (OSL) v. 2.1, v. 3.0
- Eclipse Public License (EPL) v. 1.0
- CeCILL v. 2.0, v. 2.1
- Mozilla Public Licence (MPL) v. 2
- GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3
- Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for
works other than software
- European Union Public Licence (EUPL) v. 1.1, v. 1.2
- Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong
Reciprocity (LiLiQ-R+).
The European Commission may update this Appendix to later versions of the above
licences without producing a new version of the EUPL, as long as they provide
the rights granted in Article 2 of this Licence and protect the covered Source
Code from exclusive appropriation.
All other changes or additions to this Appendix require the production of a new
EUPL version.

214
Makefile
View file

@ -1,82 +1,196 @@
# Copyright (c) 2017-2025 Lethean https://lt.hn
# Copyright (c) 2014-2019 Zano Project
# Copyright (c) 2014 The Cryptonote developers
# Distributed under the MIT/X11 software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
# Define CMake generator
system := $(shell uname)
ifneq (, $(findstring MINGW, $(system)))
cmake_gen = -G 'MSYS Makefiles'
# ============================================================
# Build system from host-uk/build submodule
# ============================================================
BUILD_SYS := .core/build
CMAKE_DIR := $(BUILD_SYS)/cmake
# ============================================================
# Project Configuration
# ============================================================
CPU_CORES := 1
TESTNET:= 0
STATIC:= 0
BUILD_TYPE ?=Release
BUILD_VERSION:=6.0.1
BUILD_FOLDER:=build/release
PRESET_BUILD:=conan-release
PRESET_CONFIGURE:=conan-release
# ------------------------------------------------------------
# Detect the number of logical CPU cores works on Linux,
# macOS, BSD, and Windows (both cmd.exe and PowerShell).
# ------------------------------------------------------------
UNAME_S := $(shell uname -s 2>/dev/null || echo Unknown)
ifeq ($(UNAME_S),Linux)
CPU_CORES := $(shell nproc 2>/dev/null || \
grep -c ^processor /proc/cpuinfo 2>/dev/null || echo 1)
endif
cmake = cmake $(cmake_gen)
ifeq ($(UNAME_S),Darwin)
CPU_CORES := $(shell sysctl -n hw.logicalcpu 2>/dev/null || echo 1)
endif
cmake_debug = $(cmake) -D CMAKE_BUILD_TYPE=Debug
cmake_release = $(cmake) -D CMAKE_BUILD_TYPE=Release
ifeq ($(filter %BSD,$(UNAME_S)),%BSD)
CPU_CORES := $(shell sysctl -n hw.ncpu 2>/dev/null || echo 1)
endif
cmake_gui = -D BUILD_GUI=ON
cmake_static = -D STATIC=ON
cmake_tests = -D BUILD_TESTS=ON
ifeq ($(OS),Windows_NT)
# Helper macro
define CMAKE
mkdir -p $1 && cd $1 && $2 ../../
endef
PRESET_CONFIGURE:=conan-default
build = build
dir_debug = $(build)/debug
dir_release = $(build)/release
CPU_CORES := $(NUMBER_OF_PROCESSORS)
all: release
ifeq ($(CPU_CORES),)
CPU_CORES := $(shell powershell -NoProfile -Command ^ "[Environment]::ProcessorCount")
endif
endif
release:
$(eval command += $(cmake_release))
$(call CMAKE,$(dir_release),$(command)) && $(MAKE)
# Safety net
CPU_CORES := $(or $(CPU_CORES),1)
CPU_CORES := $(shell expr $(CPU_CORES) + 0 2>/dev/null || echo 1)
CONAN_CPU_COUNT=$(CPU_CORES)
debug:
$(eval command += $(cmake_debug))
$(call CMAKE,$(dir_debug),$(command)) && $(MAKE)
# ============================================================
# Paths — profiles and cmake modules from .build submodule
# ============================================================
PROFILES :=$(patsubst $(CMAKE_DIR)/profiles/%,%,$(wildcard $(CMAKE_DIR)/profiles/*))
SORTED_PROFILES :=$(sort $(PROFILES))
CONAN_CACHE :=$(CURDIR)/build/sdk
CONAN_URL :=http://forge.snider.dev:4000/api/packages/host-uk/conan
CONAN_USER ?=$(shell echo $$CONAN_USER)
CONAN_PASSWORD ?=$(shell echo $$CONAN_PASSWORD)
CONAN_EXECUTABLE :=$(CURDIR)/build/bin/conan
CC_DOCKER_FILE ?=utils/docker/images/lthn-chain/Dockerfile
SDK_PACKAGES_JSON :=$(wildcard utils/sdk/packages/*.json)
SDK_TARGETS :=$(patsubst utils/sdk/packages/%.json,%,$(SDK_PACKAGES_JSON))
SORTED_SDK_TARGETS :=$(sort $(SDK_TARGETS))
static: static-release
static-release:
$(eval command += $(cmake_release) $(cmake_static))
$(call CMAKE,$(dir_release),$(command)) && $(MAKE)
all: help
#
# GUI
#
testnet:
$(MAKE) configure TESTNET=1 STATIC=$(STATIC)
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build .
$(MAKE) package
gui: gui-release
gui-release:
$(eval command += $(cmake_release) $(cmake_gui))
$(call CMAKE,$(dir_release),$(command)) && $(MAKE)
mainnet:
$(MAKE) configure TESTNET=0 STATIC=$(STATIC)
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build .
$(MAKE) package
gui-debug:
$(eval command += $(cmake_debug) $(cmake_gui))
$(call CMAKE,$(dir_debug),$(command)) && $(MAKE)
release: docs build
(cd $(BUILD_FOLDER) && cpack)
@rm -rf $(CURDIR)/build/packages/_CPack_Packages
gui-static: gui-release-static
gui-release-static:
$(eval command += $(cmake_release) $(cmake_gui) $(cmake_static))
$(call CMAKE,$(dir_release),$(command)) && $(MAKE)
build: configure
cmake --build --preset $(PRESET_BUILD) --parallel=$(CPU_CORES)
build-deps: conan-profile-detect
@echo "Build Dependencies: $(BUILD_TYPE) testnet=$(TESTNET)"
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) install . --build=missing -s build_type=$(BUILD_TYPE)
package:
@echo "Packaging: $(BUILD_TYPE) testnet=$(TESTNET)"
(cd $(BUILD_FOLDER) && cpack)
ifneq ($(OS),Windows_NT)
@rm -rf $(CURDIR)/build/packages/_CPack_Packages
endif
configure: build-deps
@echo "Running Configure: $(BUILD_TYPE) testnet=$(TESTNET)"
cmake --preset $(PRESET_CONFIGURE) -DSTATIC=$(STATIC) -DTESTNET=$(TESTNET) -DBUILD_VERSION=$(BUILD_VERSION)
docs: configure
@echo "Building Documentation"
cmake --build build/release --target=docs --config=Release --parallel=$(CPU_CORES)
sdk:
$(MAKE) -C utils/sdk $(filter-out $@,$(MAKECMDGOALS)) PACKAGE_VERSION=$(BUILD_VERSION)
# Rule for each profile — uses .build/cmake/profiles/
$(PROFILES): conan-profile-detect
@echo "Building profile: $@"
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) install . -pr:h=$(CMAKE_DIR)/profiles/$@ --build=missing -s build_type=$(BUILD_TYPE)
cmake -S . -B $(BUILD_FOLDER) -DCMAKE_TOOLCHAIN_FILE=$(BUILD_FOLDER)/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DSTATIC=$(STATIC) -DTESTNET=$(TESTNET) -DBUILD_VERSION=$(BUILD_VERSION)
cmake --build $(BUILD_FOLDER) --config=$(BUILD_TYPE) --parallel=$(CPU_CORES)
(cd $(BUILD_FOLDER) && cpack)
help:
@echo "Lethean VPN Blockchain"
@echo "======================"
@echo "Website: https://lt.hn"
@echo "GitHub: https://github.com/letheanVPN/blockchain/"
@echo "Discord: https://discord.lt.hn"
@echo ""
@echo "Available targets:"
@printf " %-42s %s\n" "make clean" "Clean all build directories"
@printf " %-42s %s\n" "make conan-get" "Download and install conan locally"
@printf " %-42s %s\n" "make release" "Build release"
@printf " %-42s %s\n" "make testnet" "Build testnet"
@printf " %-42s %s\n" "make mainnet" "Build mainnet"
@printf " %-42s %s\n" "make test" "Build & run tests"
@printf " %-42s %s\n" "make docs" "Builds offline documentation website"
@printf " %-42s %s\n" "make docs-dev" "Runs local doc server, for editing/adding docs"
@printf " %-42s %s\n" "make conan-profile-detect" "Creates host config"
@printf " %-42s %s\n" "make configure" "Runs a cmake configure within conan build flow"
@printf "\n --- Conan Cross-Compilation Profiles ---\n"
@$(foreach profile,$(SORTED_PROFILES),printf " %-42s %s\n" "make $(profile)" "Build the $(profile) profile";)
@printf "\n --- SDK Generation ---\n"
@printf " %-42s %s\n" "make sdk" "Build all SDK packages"
@$(foreach sdk,$(SORTED_SDK_TARGETS),printf " %-42s %s\n" "make sdk $(sdk)" "Build the $(sdk) SDK package";)
@printf "\n"
@printf " %-42s %s\n" "make help" "Show this help message"
#
# Tests
#
test: test-release
test-release:
$(eval command += $(cmake_release) $(cmake_tests))
$(call CMAKE,$(dir_release),$(command)) && $(MAKE) && $(MAKE) test
@echo "Building profile: test-release"
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) install . --output-folder=build/test-release --build=missing -s build_type=$(BUILD_TYPE)
cmake -S . -B build/test-release -DCMAKE_TOOLCHAIN_FILE=build/test-release/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release -D BUILD_TESTS=ON
cmake --build build/test-release --config=Release --parallel=$(CPU_CORES)
$(MAKE) test
test-debug:
$(eval command += $(cmake_debug) $(cmake_tests))
$(call CMAKE,$(dir_debug),$(command)) && $(MAKE) && $(MAKE) test
@echo "Building profile: test-debug"
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) install . --output-folder=build/test-debug --build=missing -s build_type=$(BUILD_TYPE)
cmake -S . -B build/test-debug -DCMAKE_TOOLCHAIN_FILE=build/test-debug/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Debug -D BUILD_TESTS=ON
cmake --build build/test-debug --config=Debug --parallel=$(CPU_CORES)
$(MAKE) test
# Conan management — cmake modules from .build submodule
conan-get:
cmake -P $(CMAKE_DIR)/ConanGet.cmake
ifneq ($(CONAN_USER),)
(CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) remote add conan_build $(CONAN_URL) && \
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) remote login conan_build $(CONAN_USER) -p $(CONAN_PASSWORD)) || true
endif
conan-upload:
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) upload "*" -r=conan_build --confirm
conan-profile-detect: conan-get
cmake -P $(CMAKE_DIR)/ConanProfileSetup.cmake
docs-dev: configure
@echo "Building Documentation"
cmake --build build/release --target=serve_docs --config=Release
$(SDK_TARGETS):
@# This is a proxy target. Handled by the 'sdk' rule.
clean:
@cmake -P $(CMAKE_DIR)/CleanBuild.cmake
clean-build: clean
rm -rf build
tags:
ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ src contrib tests/gtest
.PHONY: all release debug static static-release gui gui-release gui-static gui-release-static gui-debug test test-release test-debug clean tags
.PHONY: all release upload-conan-cache docs docs-dev configure static static-release test test-release test-debug clean tags conan-profile-detect conan-get $(PROFILES) sdk $(SDK_TARGETS)

156
README.md
View file

@ -1,64 +1,120 @@
Building
--------
# Lethean Network—Ethics, Encoded.
### Cloning
> We are building upto a mainnet launch in 2026, documentation written as if mainnet is live.
Be sure to properly clone the repository:
A buildkit for deploying confidential information networks and commerce systems with immutable auditability.
Free for commercial, private, and patent use, self-host or join the community-run network that guarantees participant sovereignty by design.
[![Discord](https://img.shields.io/discord/379876792003067906?label=discord&logo=discord)](https://discord.gg/pfgT2Kz)
Web2 Website: https://lt.hn/
Web3 Network Gateway [HNS](https://handshake.org): [https://lthn](https://www.namebase.io/domains/lthn)
<br/>_(our chain aliases will come with a working Web2(`*.lt.hn`)+Web3(`*.lthn`) domain name)_
`$ git clone --recursive https://github.com/hyle-team/zano.git`
### Dependencies
| component / version | minimum <br>(not recommended but may work) | recommended | most recent of what we have ever tested |
|--|--|--|--|
| gcc (Linux) | 5.4.0 | 7.2.0 | 8.3.0 |
| llvm/clang (Linux) | UNKNOWN | 7.0.1 | 8.0.0 |
| [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2015 (14.0 update 1) | 2015 (14.0 update 3) | 2017 (15.5.7) |
| [XCode](https://developer.apple.com/downloads/) (macOS) | 7.3.1 | 9.2 | 9.2 |
| [CMake](https://cmake.org/download/) | 2.8.6 | 3.4.1 | 3.11.0 |
| [Boost](https://www.boost.org/users/download/) | 1.56 | 1.60 | 1.66 |
| [Qt](https://download.qt.io/archive/qt/) (only for GUI) | 5.8.0 | 5.9.1 | 5.10.1 |
| component / version | minimum <br>(not recommended but may work) | recommended | most recent of what we have ever tested |
|-----------------------------------------------------------------------------|--------------------------------------------|----------------|-----------------------------------------|
| gcc (Linux) | 8.4.0 | 9.4.0 | 12.3.0 |
| llvm/clang (Linux) | UNKNOWN | 7.0.1 | 8.0.0 |
| [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2017 (15.9.30) | 2022 (17.11.5) | 2022 (17.12.3) |
| [XCode](https://developer.apple.com/downloads/) (macOS) | 12.3 | 14.3 | 15.2 |
| [CMake](https://cmake.org/download/) | 3.26.3 | 3.26.3 | 3.31.6 |
### Linux
## Cloning
Recommended OS version: Ubuntu 17.04 LTS.
Be sure to clone the repository properly, with `--recursive` flag, or you'll get angry:<br/>
`git clone --recursive https://github.com/letheanVPN/blockchain.git`
1. For server version: \
`$ sudo apt-get install -y build-essential g++ python-dev autotools-dev libicu-dev libbz2-dev cmake git libboost-all-dev screen`\
For GUI version:\
`$ sudo apt-get install -y build-essential g++ python-dev autotools-dev libicu-dev libbz2-dev cmake git libboost-all-dev screen mesa-common-dev libglu1-mesa-dev qt5-default qtwebengine5-dev`
# Building
2. `$ cd zano/ && make -j$(nproc) gui`
3. Look for the binaries, including the `Zano` GUI, in the build directory
The project uses a `Makefile` that provides a simple and powerful interface for building.
It automatically handles dependency installation with Conan and compilation with CMake.
### Windows
Recommended OS version: Windows 7 x64.
1. Install required prerequisites.
2. Edit paths in `utils/configure_local_paths.cmd`.
3. Run `utils/configure_win64_msvs2015_gui.cmd` or `utils/configure_win64_msvs2017_gui.cmd` according to your MSVC version.
4. Go to the build folder and open generated Zano.sln in MSVC.
5. Build.
You need CMake and Make installed on your system, other than that you don't need to worry about Python, Conan, Boost, OpenSSL, or any other dependencies.
In order to correctly deploy Qt GUI application you also need to do the following:
6. Copy Zano.exe to a folder (e.g. `depoy`).
7. Run `PATH_TO_QT\bin\windeployqt.exe deploy/Zano.exe`.
8. Copy folder `\src\gui\qt-daemon\html` to `deploy\html`.
The final packages are created as they are due to a historical distribution method used in china: USB Stick, CD, DVD, etc.
### macOS
Recommended OS version: macOS Sierra 10.12.6 x64.
1. Install required prerequisites.
2. Set environment variables as stated in `utils/macosx_build_config.command`.
3. `mkdir build` <br> `cd build` <br> `cmake ..` <br> `make`
We use CPack, so our packages are self-contained, have searchable HTML documentation, and are ready to be installed on any system.
To build GUI application:
To skip the packing step, use `make build` as defined in the section below for Advanced Build Customization
## Simple Workflow Builds (Recommended)
For most use cases, these two commands are all you need. They handle the entire build process from start to finish.
* **Build for Mainnet:**
```shell
make mainnet
```
* **Build for Testnet:**
```shell
make testnet
```
## Creating Release Packages
To create distributable packages (e.g., `.zip`, `.msi`, `.pkg`, `.deb`), run the `release` target. This will build the project, build the documentation, and then package everything.
```shell
make release TESTNET=1
```
The final packages will be located in the `build/packages/` directory
## Advanced Build Customization (Makefile Variables)
For advanced use cases, you can override variables in the `Makefile` to customize the build process.
* **Build a `testnet` version:**
```shell
make build TESTNET=1
```
* **Build a statically-linked version:**
```shell
make build STATIC=1
```
* **Build a Debug build with 8 compile threads:**
```shell
make build BUILD_TYPE=Debug CPU_CORES=8
```
* **Use custom CMakePresets:**
```shell
make build PRESET_CONFIGURE=my-config-preset PRESET_BUILD=my-build-preset
```
| Variable | Description | Default Value |
|--------------------|------------------------------------------------------------------------|-------------------------|
| `BUILD_TYPE` | Sets the build configuration (e.g., `Release`, `Debug`). | `Release` |
| `TESTNET` | Set to `1` to build for the test network. | `0` |
| `STATIC` | Set to `1` to link libraries statically. | `0` |
| `CPU_CORES` | Number of CPU cores to use for parallel compilation. | Auto-detected |
| `BUILD_VERSION` | The version string to embed in the binaries. | `6.0.1` |
| `BUILD_FOLDER` | The output directory for the build. | `build/release` |
| `PRESET_CONFIGURE` | The CMake preset to use for the `configure` step. | `conan-release` |
| `PRESET_BUILD` | The CMake preset to use for the `build` step. | `conan-release` |
| `CONAN_CACHE` | The path for the local Conan cache, where the dependencies are stored. | `./build/sdk` |
| `CONAN_EXECUTABLE` | The path to the usable Conan executable. | `./build/bin/conan` |
| `CONAN_URL` | The URL for the Conan remote repository. | `artifacts.host.uk.com` |
| `CONAN_USER` | The username for the Conan remote. | `public` |
| `CONAN_PASSWORD` | The password for the Conan remote. | |
## Cleaning the Build Directory
ALWAYS USE `make clean` to clean the build directory, manually deleting the `build/release`, `build/SOME_FOLDER` will cause you issues.
Our `make clean` triggers a cmake script that completely resets the build directory &amp; dynamically added CMakePresets to its cached warm-up state,
the selective clean script can be edited here: `cmake/CleanBuild.cmake` or directly run from the repo root `cmake -P cmake/CleanBuild.cmake`
You can NUKE the build directory with `make clean-build` which is `rm -rf build`.
If you do manually delete build folders and get CMake errors (if you have compiled anything previously, you will),
the ConanPresets.json file has entries in the `include` property, delete them all and try again.
This happens because CMakePresets.json includes ConanPresets.json, that has the list of toolchains to use that gets populated during the CMake config step,
when you manually delete a folder, the toolchain is now a broken path, and CMake throws a fatal error.
1. Create self-signing certificate via Keychain Access:
a. Run Keychain Access.
b. Choose Keychain Access > Certificate Assistant > Create a Certificate.
c. Use “Zano” (without quotes) as certificate name.
d. Choose “Code Signing” in “Certificate Type” field.
e. Press “Create”, then “Done”.
f. Make sure the certificate was added to keychain "System". If not—move it to "System".
g. Double click the certificate you've just added, enter the trust section and under "When using this certificate" select "Always trust".
h. Unfold the certificate in Keychain Access window and double click underlying private key "Zano". Select "Access Control" tab, then select "Allow all applications to access this item". Click "Save Changes".
2. Revise building script, comment out unwanted steps and run it: `utils/build_script_mac_osx.sh`
3. The application should be here: `/buid_mac_osx_64/release/src`

View file

@ -3,4 +3,4 @@
static_assert(1, "FAIL");
int main(int argc, char *argv[]) {
return 0;
}
}

70
conanfile.py Normal file
View file

@ -0,0 +1,70 @@
import os
from conan import ConanFile
from conan.tools.cmake import CMakeDeps, CMakeToolchain, CMake
class BlockchainConan(ConanFile):
name = "blockchain"
version = "6.0.1"
settings = "os", "compiler", "build_type", "arch"
options = {
"static": [True, False],
"testnet": [True, False],
"ci": [True, False]
}
default_options = {
"static": False,
"testnet": False,
"ci": False,
"boost/*:without_test": True
}
tool_requires = [
"cmake/3.31.9"
]
requires = [
"zlib/1.3.1",
"boost/1.85.0",
"openssl/3.2.0",
"miniupnpc/2.2.5",
"jwt-cpp/0.7.1",
"oatpp/1.3.0.latest",
"oatpp-swagger/1.3.0.latest"
]
def generate(self):
tc = CMakeToolchain(self)
os_val = str(self.settings.os).lower()
# arch_val = str(self.settings.arch).lower()
# compiler_val = str(self.settings.compiler).lower()
# tc.presets_prefix = f"{os_val}"
tc.user_presets_path = "ConanPresets.json"
tc.variables["STATIC"] = self.options.static
tc.variables["TESTNET"] = self.options.testnet
# tc.preprocessor_definitions["TESTNET"] = None
# tc.variables["BUILD_VERSION"] = self.options.build_version
tc.generate()
deps = CMakeDeps(self)
deps.generate()
def layout(self):
if self.settings.compiler == "msvc":
# For multi-config, all configurations go into the same "build" folder.
self.folders.build = "build/release"
self.folders.generators = "build/release/generators"
else:
# For single-config, we create a subfolder for each build type.
build_type_str = str(self.settings.build_type).lower()
self.folders.build = os.path.join("build", build_type_str)
self.folders.generators = os.path.join(self.folders.build, "generators")
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()

View file

@ -1,21 +1,33 @@
set(UPNPC_BUILD_STATIC ON CACHE BOOL "Build static library")
set(UPNPC_BUILD_SHARED OFF CACHE BOOL "Build shared library")
set(UPNPC_BUILD_TESTS OFF CACHE BOOL "Build test executables")
add_subdirectory(miniupnp/miniupnpc)
add_subdirectory(zlib)
add_subdirectory(db)
add_subdirectory(ethereum)
add_subdirectory(randomx)
if(USE_BITCOIN_SECP256K1_FOR_ECDSA)
option(SECP256K1_BUILD_BENCHMARK "Build benchmarks." OFF)
option(SECP256K1_BUILD_TESTS "Build tests." OFF)
option(SECP256K1_BUILD_EXHAUSTIVE_TESTS "Build exhaustive tests." OFF)
option(SECP256K1_BUILD_CTIME_TESTS "Build constant-time tests." OFF)
option(SECP256K1_BUILD_EXAMPLES "Build examples." OFF)
set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1)
if(STATIC)
set(SECP256K1_DISABLE_SHARED ON CACHE BOOL "Disable shared library for secp256k1")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build static libraries by default" FORCE)
endif()
add_subdirectory(bitcoin-secp256k1)
set_property(TARGET secp256k1 PROPERTY FOLDER "contrib")
set_property(TARGET secp256k1_precomputed PROPERTY FOLDER "contrib")
endif()
set_property(TARGET upnpc-static PROPERTY FOLDER "contrib/miniupnp")
set_property(TARGET zlibstatic PROPERTY FOLDER "contrib")
if(CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
message("excluded upnp support for IOS build")
return()
endif()
set_property(TARGET mdbx PROPERTY FOLDER "contrib")
set_property(TARGET lmdb PROPERTY FOLDER "contrib")
if(MSVC)
set_property(TARGET upnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267")
else()
set_property(TARGET upnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value")
endif()
set_property(TARGET mdbx_chk mdbx_copy mdbx_dump mdbx_load mdbx_stat PROPERTY FOLDER "unused")

@ -0,0 +1 @@
Subproject commit a5269373fa13ff845f654d81b90629dd78495641

View file

@ -1,7 +1,23 @@
if(CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
message("excluded db support for IOS build")
return()
endif()
message("DB ENGINE: lmdb")
add_subdirectory(liblmdb)
if(MSVC)
target_compile_options(lmdb PRIVATE /wd4996 /wd4503 /wd4345 /wd4267 /wd4244 /wd4146 /wd4333 /wd4172)
else()
# Warnings as used by LMDB itself (LMDB_0.9.23)
target_compile_options(lmdb PRIVATE -Wall -Wno-unused-parameter -Wbad-function-cast -Wuninitialized)
# Warnings as used by LMDB itself (LMDB_0.9.23)
target_compile_options(lmdb PRIVATE -Wall -Wno-unused-parameter -Wbad-function-cast -Wuninitialized)
endif()
if(NOT DISABLE_MDBX)
message("DB ENGINE: mdbx")
add_subdirectory(libmdbx)
# remove mdbx tools from the default MSVC build
set_target_properties(mdbx_chk mdbx_copy mdbx_dump mdbx_load mdbx_stat PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1)
endif()

View file

@ -4,7 +4,7 @@ set (lmdb_sources mdb.c midl.c)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
if(NOT MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-field-initializers -Wno-missing-braces -Wno-aggregate-return")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-field-initializers -Wno-missing-braces -Wno-aggregate-return -Wno-discarded-qualifiers -Wno-unused-but-set-variable -Wno-implicit-fallthrough -Wno-maybe-uninitialized ")
endif()
if(FREEBSD)
add_definitions(-DMDB_DSYNC=O_SYNC)

View file

@ -132,8 +132,10 @@ extern int cacheflush(char *addr, int nbytes, int cache);
#ifdef _WIN32
typedef int64_t off64_t;
#else
#elif __APPLE__
typedef off_t off64_t;
#else
#endif

View file

@ -0,0 +1,20 @@
version: 2
jobs:
build:
docker:
- image: circleci/buildpack-deps:artful
environment:
- TESTDB: /tmp/test.db
- TESTLOG: /tmp/test.log
steps:
- checkout
- run: make all
- run: ulimit -c unlimited && make check
- run:
command: |
mkdir -p /tmp/artifacts
mv -t /tmp/artifacts $TESTLOG $TESTDB core.*
when: on_fail
- store_artifacts:
path: /tmp/artifacts
destination: test-artifacts

View file

@ -0,0 +1,3 @@
BasedOnStyle: LLVM
Standard: Cpp11
ReflowComments: true

35
contrib/db/libmdbx/.gitignore vendored Normal file
View file

@ -0,0 +1,35 @@
*.[ao]
*.bak
*.exe
*.gcda
*.gcno
*.gcov
*.lo
*.orig
*.rej
*.so
*[~#]
.idea
.le.ini
.vs/
cmake-build-*
@*
core
mdbx_example
libmdbx.creator.user
mdbx_chk
mdbx_copy
mdbx_dump
mdbx_load
mdbx_stat
mdbx_test
test.log
test/tmp.db
test/tmp.db-lck
tmp.db
tmp.db-lck
valgrind.*
src/elements/version.c
src/elements/config.h
dist/
*.tar*

View file

@ -0,0 +1,61 @@
language: c cpp
matrix:
include:
- os: linux
dist: precise
env: CC=cc CXX=c++
- os: linux
dist: trusty
compiler: clang
env: CC=clang CXX=clang++
- os: linux
dist: xenial
compiler: gcc
env: CC=gcc CXX=g++
- os: linux
dist: bionic
compiler: clang
env: CC=clang CXX=clang++
- os: osx
osx_image: xcode11
env: CC=cc CXX=c++
- os: osx
osx_image: xcode9.4
env: CC=cc CXX=c++
script: >
if [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then
git fetch --unshallow --tags --prune &&
git submodule foreach --recursive git fetch --unshallow --tags --prune &&
(if which clang-format-6.0 > /dev/null && make reformat && [[ -n $(git diff) ]];
then
echo "You must run 'make reformat' before submitting a pull request";
echo "";
git diff;
exit -1;
fi) &&
make --keep-going all && MALLOC_CHECK_=7 MALLOC_PERTURB_=42 make --keep-going check
else
[ ! -s cov-int/scm_log.txt ] || cat cov-int/scm_log.txt;
fi && sleep 3
env:
global:
- secure: "M+W+heGGyRQJoBq2W0uqWVrpL4KBXmL0MFL7FSs7f9vmAaDyEgziUXeZRj3GOKzW4kTef3LpIeiu9SmvqSMoQivGGiomZShqPVl045o/OUgRCAT7Al1RLzEZ0efSHpIPf0PZ6byEf6GR2ML76OfuL6JxTVdnz8iVyO2sgLE1HbX1VeB+wgd/jfMeOBhCCXskfK6MLyZihfMYsiYZYSaV98ZDhDLSlzuuRIgzb0bMi8aL6AErs0WLW0NelRBeHkKPYfAUc85pdQHscgrJw6Rh/zT6+8BQ/q5f4IgWhiu4xoRg3Ngl7SNoedRQh93ADM3UG2iGl6HDFpVORaXcFWKAtuYY+kHQ0HB84BRYpQmeBuXNpltsfxQ3d1Q3u0RlE45zRvmr2+X1mFnkcNUAWISLPbsOUlriDQM8irGwRpho77/uYnRC00bJsHW//s6+uPf9zrAw1nI4f0y3PAWukGF/xs6HAI3FZPsuSSnx18Tj3Opgbc9Spop+V3hkhdiJoPGpNKTkFX4ZRXfkPgoRVJmtp4PpbpH0Ps/mCriKjMEfGGi0HcVCi0pEGLXiecdqJ5KPg5+22zNycEujQBJcNTKd9shN+R3glrbmhAxTEzGdGwxXXJ2ybwJ2PWJLMYZ7g98nLyX+uQPaA3BlsbYJHNeS5283/9pJsd9DzfHKsN2nFSc="
before_install:
- echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
- ${CC} --version
- ${CXX} --version
addons:
coverity_scan:
project:
name: "ReOpen/libmdbx"
version: 0.1
description: "Build submitted via Travis CI"
notification_email: leo@yuriev.ru
build_command_prepend: "git fetch --unshallow --tags --prune && make dist"
build_command: "make MDBX_OPTIONS=-DMDBX_DEBUG=2 -C dist all"
branch_pattern: coverity_scan

View file

@ -0,0 +1,32 @@
Contributors
============
Alexey Naumov <alexey.naumov@gmail.com>
Chris Mikkelson <cmikk@qwest.net>
Claude Brisson <claude.brisson@gmail.com>
David Barbour <dmbarbour@gmail.com>
David Wilson <dw@botanicus.net>
dreamsxin <dreamsxin@126.com>
Hallvard Furuseth <hallvard@openldap.org>, <h.b.furuseth@usit.uio.no>
Heiko Becker <heirecka@exherbo.org>
Howard Chu <hyc@openldap.org>, <hyc@symas.com>
Ignacio Casal Quinteiro <ignacio.casal@nice-software.com>
James Rouzier <rouzier@gmail.com>
Jean-Christophe DUBOIS <jcd@tribudubois.net>
John Hewson <john@jahewson.com>
Klaus Malorny <klaus.malorny@knipp.de>
Kurt Zeilenga <kurt.zeilenga@isode.com>
Leonid Yuriev <leo@yuriev.ru>, <lyuryev@ptsecurity.com>
Lorenz Bauer <lmb@cloudflare.com>
Luke Yeager <lyeager@nvidia.com>
Martin Hedenfalk <martin@bzero.se>
Ondrej Kuznik <ondrej.kuznik@acision.com>
Orivej Desh <orivej@gmx.fr>
Oskari Timperi <oskari.timperi@iki.fi>
Pavel Medvedev <pmedvedev@gmail.com>
Philipp Storz <philipp.storz@bareos.com>
Quanah Gibson-Mount <quanah@openldap.org>
Salvador Ortiz <sog@msg.com.mx>
Sebastien Launay <sebastien@slaunay.fr>
Vladimir Romanov <vromanov@gmail.com>
Zano Foundation <crypto.sowle@gmail.com>

View file

@ -0,0 +1,192 @@
##
## This is the minimal template for CMakeList.txt which could be used
## to build libmdbx from the "amalgamated form" of libmdbx's source code.
##
## The amalgamated form is intended to embedding libmdbx in other projects
## in cases when using as git-submodule is not acceptable or inconveniently.
##
## The amalgamated form could be generated from full git repository
## on Linux just by `make dist`.
##
##
## Copyright 2019 Leonid Yuriev <leo@yuriev.ru>
## and other libmdbx authors: please see AUTHORS file.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
##
##
## libmdbx = { Revised and extended descendant of Symas LMDB. }
## Please see README.md at https://github.com/leo-yuriev/libmdbx
##
## Libmdbx is superior to LMDB in terms of features and reliability,
## not inferior in performance. libmdbx works on Linux, FreeBSD, MacOS X
## and other systems compliant with POSIX.1-2008, but also support Windows
## as a complementary platform.
##
## The next version is under active non-public development and will be
## released as MithrilDB and libmithrildb for libraries & packages.
## Admittedly mythical Mithril is resembling silver but being stronger and
## lighter than steel. Therefore MithrilDB is rightly relevant name.
##
## MithrilDB will be radically different from libmdbx by the new database
## format and API based on C++17, as well as the Apache 2.0 License.
## The goal of this revolution is to provide a clearer and robust API,
## add more features and new valuable properties of database.
##
## The Future will (be) Positive. Всё будет хорошо.
##
cmake_minimum_required(VERSION 3.8.2)
cmake_policy(PUSH)
cmake_policy(VERSION 3.8.2)
if(NOT CMAKE_VERSION VERSION_LESS 3.9)
cmake_policy(SET CMP0069 NEW)
endif()
if(NOT CMAKE_VERSION VERSION_LESS 3.12)
cmake_policy(SET CMP0075 NEW)
endif()
if(NOT CMAKE_VERSION VERSION_LESS 3.13)
cmake_policy(SET CMP0077 NEW)
endif()
if(DEFINED PROJECT_NAME)
set(SUBPROJECT ON)
set(NOT_SUBPROJECT OFF)
else()
set(SUBPROJECT OFF)
set(NOT_SUBPROJECT ON)
project(libmdbx C CXX)
endif()
find_package(Threads REQUIRED)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
FORCE)
endif()
list(FIND CMAKE_C_COMPILE_FEATURES c_std_11 HAS_C11)
if(NOT HAS_C11 LESS 0)
set(MDBX_C_STANDARD 11)
else()
set(MDBX_C_STANDARD 99)
endif()
message(STATUS "Use C${MDBX_C_STANDARD} for libmdbx")
# not supported by this (minimal) script
add_definitions(-DMDBX_AVOID_CRT=0)
# provide build timestamp
string(TIMESTAMP MDBX_BUILD_TIMESTAMP UTC)
add_definitions(-DMDBX_BUILD_TIMESTAMP="${MDBX_BUILD_TIMESTAMP}")
# provide compiler info
execute_process(COMMAND sh -c "${CMAKE_C_COMPILER} --version | head -1"
OUTPUT_VARIABLE MDBX_BUILD_COMPILER
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
RESULT_VARIABLE rc)
if(rc OR NOT MDBX_BUILD_COMPILER)
string(STRIP "${CMAKE_C_COMPILER_ID}-${CMAKE_C_COMPILER_VERSION}" MDBX_BUILD_COMPILER)
endif()
add_definitions(-DMDBX_BUILD_COMPILER="${MDBX_BUILD_COMPILER}")
# provide cpu/arch-system pair
if(CMAKE_C_COMPILER_TARGET)
set(MDBX_BUILD_TARGET "${CMAKE_C_COMPILER_TARGET}")
elseif(CMAKE_C_PLATFORM_ID AND NOT CMAKE_C_PLATFORM_ID STREQUAL CMAKE_SYSTEM_NAME)
string(STRIP "${CMAKE_C_PLATFORM_ID}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
elseif(CMAKE_LIBRARY_ARCHITECTURE)
string(STRIP "${CMAKE_LIBRARY_ARCHITECTURE}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
elseif(CMAKE_GENERATOR_PLATFORM AND NOT CMAKE_C_PLATFORM_ID STREQUAL CMAKE_SYSTEM_NAME)
string(STRIP "${CMAKE_GENERATOR_PLATFORM}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
elseif(CMAKE_SYSTEM_ARCH)
string(STRIP "${CMAKE_SYSTEM_ARCH}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
else()
string(STRIP "${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
endif()
add_definitions(-DMDBX_BUILD_TARGET="${MDBX_BUILD_TARGET}")
# provide build target-config
if(CMAKE_CONFIGURATION_TYPES)
add_definitions(-DMDBX_BUILD_CONFIG="$<CONFIG>")
else()
add_definitions(-DMDBX_BUILD_CONFIG="${CMAKE_BUILD_TYPE}")
endif()
# provide build cflags
set(MDBX_BUILD_FLAGS "")
list(APPEND MDBX_BUILD_FLAGS ${CMAKE_C_FLAGS})
list(APPEND MDBX_BUILD_FLAGS ${CMAKE_C_DEFINES})
if(CMAKE_CONFIGURATION_TYPES)
add_definitions(-DMDBX_BUILD_FLAGS_CONFIG="$<$<CONFIG:Debug>:${CMAKE_C_FLAGS_DEBUG} ${CMAKE_C_DEFINES_DEBUG}>$<$<CONFIG:Release>:${CMAKE_C_FLAGS_RELEASE} ${CMAKE_C_DEFINES_RELEASE}>$<$<CONFIG:RelWithDebInfo>:${CMAKE_C_FLAGS_RELWITHDEBINFO} ${CMAKE_C_DEFINES_RELWITHDEBINFO}>$<$<CONFIG:MinSizeRel>:${CMAKE_C_FLAGS_MINSIZEREL} ${CMAKE_C_DEFINES_MINSIZEREL}>")
else()
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPERCASE)
list(APPEND MDBX_BUILD_FLAGS ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPERCASE}})
list(APPEND MDBX_BUILD_FLAGS ${CMAKE_C_DEFINES_${CMAKE_BUILD_TYPE_UPPERCASE}})
endif()
list(REMOVE_DUPLICATES MDBX_BUILD_FLAGS)
string(REPLACE ";" " " MDBX_BUILD_FLAGS "${MDBX_BUILD_FLAGS}")
add_definitions(-DMDBX_BUILD_FLAGS="${MDBX_BUILD_FLAGS}")
# shared library
if(NOT DEFINED MDBX_BUILD_SHARED_LIBRARY)
if(DEFINED BUILD_SHARED_LIBS)
option(MDBX_BUILD_SHARED_LIBRARY "Build libmdbx as shared library (DLL)" ${BUILD_SHARED_LIBS})
else()
option(MDBX_BUILD_SHARED_LIBRARY "Build libmdbx as shared library (DLL)" ON)
endif()
endif()
if(MDBX_BUILD_SHARED_LIBRARY)
add_library(mdbx SHARED mdbx.c mdbx.h)
set_target_properties(mdbx PROPERTIES
C_STANDARD ${MDBX_C_STANDARD} C_STANDARD_REQUIRED ON
PUBLIC_HEADER mdbx.h)
target_compile_definitions(mdbx PRIVATE LIBMDBX_EXPORTS INTERFACE LIBMDBX_IMPORTS)
if(DEFINED INTERPROCEDURAL_OPTIMIZATION)
set_target_properties(mdbx PROPERTIES
INTERPROCEDURAL_OPTIMIZATION $<BOOL:${INTERPROCEDURAL_OPTIMIZATION}>)
endif()
target_link_libraries(mdbx PRIVATE ${CMAKE_THREAD_LIBS_INIT})
if(WIN32)
target_link_libraries(mdbx PRIVATE ntdll.lib)
endif()
endif()
# static library used for tools, to avoid rpath/dll-path troubles
add_library(mdbx-static STATIC EXCLUDE_FROM_ALL mdbx.c mdbx.h)
set_target_properties(mdbx-static PROPERTIES
C_STANDARD ${MDBX_C_STANDARD} C_STANDARD_REQUIRED ON
PUBLIC_HEADER mdbx.h)
target_link_libraries(mdbx-static INTERFACE ${CMAKE_THREAD_LIBS_INIT})
if(DEFINED INTERPROCEDURAL_OPTIMIZATION)
set_target_properties(mdbx-static PROPERTIES
INTERPROCEDURAL_OPTIMIZATION $<BOOL:${INTERPROCEDURAL_OPTIMIZATION}>)
endif()
if(WIN32)
target_link_libraries(mdbx-static INTERFACE ntdll.lib)
endif()
# mdbx-tools
foreach(TOOL mdbx_chk mdbx_copy mdbx_stat mdbx_dump mdbx_load)
add_executable(${TOOL} ${TOOL}.c)
set_target_properties(${TOOL} PROPERTIES
C_STANDARD ${MDBX_C_STANDARD} C_STANDARD_REQUIRED ON)
if(DEFINED INTERPROCEDURAL_OPTIMIZATION)
set_target_properties(${TOOL} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION $<BOOL:${INTERPROCEDURAL_OPTIMIZATION}>)
endif()
target_link_libraries(${TOOL} mdbx-static)
endforeach()
cmake_policy(POP)

View file

@ -0,0 +1,342 @@
##
## Copyright 2019 Leonid Yuriev <leo@yuriev.ru>
## and other libmdbx authors: please see AUTHORS file.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
##
##
## libmdbx = { Revised and extended descendant of Symas LMDB. }
## Please see README.md at https://github.com/leo-yuriev/libmdbx
##
## Libmdbx is superior to LMDB in terms of features and reliability,
## not inferior in performance. libmdbx works on Linux, FreeBSD, MacOS X
## and other systems compliant with POSIX.1-2008, but also support Windows
## as a complementary platform.
##
## The next version is under active non-public development and will be
## released as MithrilDB and libmithrildb for libraries & packages.
## Admittedly mythical Mithril is resembling silver but being stronger and
## lighter than steel. Therefore MithrilDB is rightly relevant name.
##
## MithrilDB will be radically different from libmdbx by the new database
## format and API based on C++17, as well as the Apache 2.0 License.
## The goal of this revolution is to provide a clearer and robust API,
## add more features and new valuable properties of database.
##
## The Future will (be) Positive. Всё будет хорошо.
##
cmake_minimum_required(VERSION 3.8.2)
cmake_policy(PUSH)
cmake_policy(VERSION 3.8.2)
if(NOT CMAKE_VERSION VERSION_LESS 3.13)
cmake_policy(SET CMP0077 NEW)
endif()
if(NOT CMAKE_VERSION VERSION_LESS 3.12)
cmake_policy(SET CMP0075 NEW)
endif()
if(NOT CMAKE_VERSION VERSION_LESS 3.9)
cmake_policy(SET CMP0069 NEW)
include(CheckIPOSupported)
check_ipo_supported(RESULT CMAKE_INTERPROCEDURAL_OPTIMIZATION_AVAILABLE)
else()
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_AVAILABLE FALSE)
endif()
if(DEFINED PROJECT_NAME)
set(SUBPROJECT ON)
set(NOT_SUBPROJECT OFF)
if(NOT DEFINED BUILD_TESTING)
set(BUILD_TESTING OFF)
endif()
else()
set(SUBPROJECT OFF)
set(NOT_SUBPROJECT ON)
project(libmdbx C CXX)
if(NOT DEFINED BUILD_TESTING)
set(BUILD_TESTING ON)
endif()
endif()
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
FORCE)
endif()
macro(add_mdbx_option NAME DESCRIPTION DEFAULT)
list(APPEND MDBX_BUILD_OPTIONS ${NAME})
if(NOT ${DEFAULT} STREQUAL "AUTO")
option(${NAME} "${DESCRIPTION}" ${DEFAULT})
endif()
endmacro()
# only for compatibility testing
# set(CMAKE_CXX_STANDARD 14)
if(NOT "$ENV{TEAMCITY_PROCESS_FLOW_ID}" STREQUAL "")
set(CI TEAMCITY)
message(STATUS "TeamCity CI")
elseif(NOT "$ENV{TRAVIS}" STREQUAL "")
set(CI TRAVIS)
message(STATUS "Travis CI")
elseif(NOT "$ENV{CIRCLECI}" STREQUAL "")
set(CI CIRCLE)
message(STATUS "Circle CI")
elseif(NOT "$ENV{APPVEYOR}" STREQUAL "")
set(CI APPVEYOR)
message(STATUS "AppVeyor CI")
elseif(NOT "$ENV{CI}" STREQUAL "")
set(CI "$ENV{CI}")
message(STATUS "Other CI (${CI})")
else()
message(STATUS "Assume No any CI environment")
unset(CI)
endif()
# output all mdbx-related targets in single directory
if(NOT DEFINED MDBX_OUTPUT_DIR)
set(MDBX_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${MDBX_OUTPUT_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${MDBX_OUTPUT_DIR})
set(CMAKE_PDB_OUTPUT_DIRECTORY ${MDBX_OUTPUT_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${MDBX_OUTPUT_DIR})
include(CheckLibraryExists)
include(CheckIncludeFiles)
include(CheckCCompilerFlag)
include(CheckSymbolExists)
include(CheckCSourceRuns)
include(CheckCXXSourceRuns)
include(CheckCSourceCompiles)
include(CheckCXXSourceCompiles)
include(TestBigEndian)
include(CheckFunctionExists)
include(FindPackageMessage)
include(CheckStructHasMember)
include(CMakeDependentOption)
include(GNUInstallDirs)
if(CMAKE_C_COMPILER_ID STREQUAL "MSVC" AND MSVC_VERSION LESS 1900)
message(SEND_ERROR "MSVC compiler ${MSVC_VERSION} is too old for building MDBX."
" At least 'Microsoft Visual Studio 2015' is required.")
endif()
# Set default build type to Release. This is to ease a User's life.
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
FORCE)
endif()
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPERCASE)
include(cmake/utils.cmake)
include(cmake/compiler.cmake)
include(cmake/profile.cmake)
find_program(ECHO echo)
find_program(CAT cat)
find_program(GIT git)
find_program(LD ld)
# CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H)
# CHECK_INCLUDE_FILES(sys/uio.h HAVE_SYS_UIO_H)
# CHECK_INCLUDE_FILES(sys/stat.h HAVE_SYS_STAT_H)
CHECK_FUNCTION_EXISTS(pow NOT_NEED_LIBM)
if(NOT_NEED_LIBM)
set(LIB_MATH "")
else()
set(CMAKE_REQUIRED_LIBRARIES m)
CHECK_FUNCTION_EXISTS(pow HAVE_LIBM)
if(HAVE_LIBM)
set(LIB_MATH m)
else()
message(FATAL_ERROR "No libm found for math support")
endif()
endif()
find_package(Threads REQUIRED)
if(SUBPROJECT)
if(NOT DEFINED BUILD_SHARED_LIBS)
option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)" OFF)
endif()
if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE)
option(CMAKE_POSITION_INDEPENDENT_CODE "Generate position independed (PIC)" ON)
endif()
else()
option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)" ON)
option(CMAKE_POSITION_INDEPENDENT_CODE "Generate position independed (PIC)" ON)
if (CC_HAS_ARCH_NATIVE)
option(BUILD_FOR_NATIVE_CPU "Generate code for the compiling machine CPU" OFF)
endif()
if(CMAKE_CONFIGURATION_TYPES OR NOT CMAKE_BUILD_TYPE_UPPERCASE STREQUAL "DEBUG")
set(INTERPROCEDURAL_OPTIMIZATION_DEFAULT ON)
else()
set(INTERPROCEDURAL_OPTIMIZATION_DEFAULT OFF)
endif()
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION_AVAILABLE
OR GCC_LTO_AVAILABLE OR MSVC_LTO_AVAILABLE OR CLANG_LTO_AVAILABLE)
option(INTERPROCEDURAL_OPTIMIZATION "Enable interprocedural/LTO optimization" ${INTERPROCEDURAL_OPTIMIZATION_DEFAULT})
endif()
if(INTERPROCEDURAL_OPTIMIZATION)
if(GCC_LTO_AVAILABLE)
set(LTO_ENABLED TRUE)
set(CMAKE_AR ${CMAKE_GCC_AR} CACHE PATH "Path to ar program with LTO-plugin" FORCE)
set(CMAKE_NM ${CMAKE_GCC_NM} CACHE PATH "Path to nm program with LTO-plugin" FORCE)
set(CMAKE_RANLIB ${CMAKE_GCC_RANLIB} CACHE PATH "Path to ranlib program with LTO-plugin" FORCE)
message(STATUS "MDBX indulge Link-Time Optimization by GCC")
elseif(CLANG_LTO_AVAILABLE)
set(LTO_ENABLED TRUE)
set(CMAKE_AR ${CMAKE_CLANG_AR} CACHE PATH "Path to ar program with LTO-plugin" FORCE)
set(CMAKE_NM ${CMAKE_CLANG_NM} CACHE PATH "Path to nm program with LTO-plugin" FORCE)
set(CMAKE_RANLIB ${CMAKE_CLANG_RANLIB} CACHE PATH "Path to ranlib program with LTO-plugin" FORCE)
message(STATUS "MDBX indulge Link-Time Optimization by CLANG")
elseif(MSVC_LTO_AVAILABLE)
set(LTO_ENABLED TRUE)
message(STATUS "MDBX indulge Link-Time Optimization by MSVC")
elseif(CMAKE_INTERPROCEDURAL_OPTIMIZATION_AVAILABLE)
message(STATUS "MDBX indulge Interprocedural Optimization by CMake")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
set(LTO_ENABLED TRUE)
else()
message(WARNING "Unable to engage interprocedural/LTO optimization.")
endif()
else()
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION FALSE)
set(LTO_ENABLED FALSE)
endif()
find_program(VALGRIND valgrind)
if(VALGRIND)
# LY: cmake is ugly and nasty.
# - therefore memcheck-options should be defined before including ctest;
# - otherwise ctest may ignore it.
set(MEMORYCHECK_SUPPRESSIONS_FILE
"${PROJECT_SOURCE_DIR}/test/valgrind_suppress.txt"
CACHE FILEPATH "Suppressions file for Valgrind" FORCE)
set(MEMORYCHECK_COMMAND_OPTIONS
"--trace-children=yes --leak-check=full --track-origins=yes --error-exitcode=42 --error-markers=@ --errors-for-leak-kinds=definite --fair-sched=yes --suppressions=${MEMORYCHECK_SUPPRESSIONS_FILE}"
CACHE STRING "Valgrind options" FORCE)
set(VALGRIND_COMMAND_OPTIONS "${MEMORYCHECK_COMMAND_OPTIONS}" CACHE STRING "Valgrind options" FORCE)
endif()
#
# Enable 'make tags' target.
find_program(CTAGS ctags)
if(CTAGS)
add_custom_target(tags COMMAND ${CTAGS} -R -f tags
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
add_custom_target(ctags DEPENDS tags)
endif(CTAGS)
#
# Enable 'make reformat' target.
find_program(CLANG_FORMAT
NAMES clang-format-6.0 clang-format-5.0 clang-format-4.0
clang-format-3.9 clang-format-3.8 clang-format-3.7 clang-format)
if(CLANG_FORMAT AND UNIX)
add_custom_target(reformat
VERBATIM
COMMAND
git ls-files |
grep -E \\.\(c|cxx|cc|cpp|h|hxx|hpp\)\(\\.in\)?\$ |
xargs ${CLANG_FORMAT} -i --style=file
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
endif()
if(NOT "${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
add_custom_target(distclean)
add_custom_command(TARGET distclean
COMMAND ${CMAKE_COMMAND} -E remove_directory "${PROJECT_BINARY_DIR}"
COMMENT "Removing the build directory and its content")
elseif(IS_DIRECTORY .git AND GIT)
add_custom_target(distclean)
add_custom_command(TARGET distclean
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMAND ${GIT} submodule foreach --recursive git clean -f -X -d
COMMAND ${GIT} clean -f -X -d
COMMENT "Removing all build files from the source directory")
endif()
setup_compile_flags()
endif(SUBPROJECT)
list(FIND CMAKE_C_COMPILE_FEATURES c_std_11 HAS_C11)
if(NOT HAS_C11 LESS 0)
set(MDBX_C_STANDARD 11)
else()
set(MDBX_C_STANDARD 99)
endif()
message(STATUS "Use C${MDBX_C_STANDARD} for libmdbx")
##############################################################################
##############################################################################
#
# #### ##### ##### # #### # # ####
# # # # # # # # # ## # #
# # # # # # # # # # # # ####
# # # ##### # # # # # # # #
# # # # # # # # # ## # #
# #### # # # #### # # ####
#
set(MDBX_BUILD_OPTIONS ENABLE_ASAN MDBX_USE_VALGRIND ENABLE_GPROF ENABLE_GCOV)
add_mdbx_option(MDBX_BUILD_SHARED_LIBRARY "Build libmdbx as shared library (DLL)" ${BUILD_SHARED_LIBS})
add_mdbx_option(MDBX_ALLOY_BUILD "Build MDBX library as single object file" ON)
add_mdbx_option(MDBX_TXN_CHECKOWNER "Checking transaction matches the calling thread inside libmdbx's API" ON)
add_mdbx_option(MDBX_TXN_CHECKPID "Paranoid checking PID inside libmdbx's API" AUTO)
mark_as_advanced(MDBX_TXN_CHECKPID)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
add_mdbx_option(MDBX_DISABLE_GNU_SOURCE "Don't use nonstandard GNU/Linux extension functions" OFF)
mark_as_advanced(MDBX_DISABLE_GNU_SOURCE)
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
add_mdbx_option(MDBX_OSX_SPEED_INSTEADOF_DURABILITY "Disable use fcntl(F_FULLFSYNC) in favor of speed" OFF)
mark_as_advanced(MDBX_OSX_SPEED_INSTEADOF_DURABILITY)
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
add_mdbx_option(MDBX_AVOID_CRT "Avoid dependence from MSVC CRT" ${NOT_SUBPROJECT})
if(NOT MDBX_BUILD_SHARED_LIBRARY)
add_mdbx_option(MDBX_CONFIG_MANUAL_TLS_CALLBACK
"Provide mdbx_dll_handler() for manual initialization" OFF)
mark_as_advanced(MDBX_CONFIG_MANUAL_TLS_CALLBACK)
endif()
else()
add_mdbx_option(MDBX_USE_ROBUST "Use POSIX.1-2008 robust mutexes" AUTO)
mark_as_advanced(MDBX_USE_ROBUST)
add_mdbx_option(MDBX_USE_OFDLOCKS "Use Open file description locks (aka OFD locks, non-POSIX)" AUTO)
mark_as_advanced(MDBX_USE_OFDLOCKS)
endif()
option(MDBX_ENABLE_TESTS "Build MDBX tests." ${BUILD_TESTING})
################################################################################
################################################################################
add_subdirectory(src)
if(MDBX_ENABLE_TESTS)
add_subdirectory(test)
endif()
set(PACKAGE "libmdbx")
set(CPACK_PACKAGE_VERSION_MAJOR ${MDBX_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${MDBX_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${MDBX_VERSION_RELEASE})
set(CPACK_PACKAGE_VERSION_COMMIT ${MDBX_VERSION_REVISION})
set(PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.${CPACK_PACKAGE_VERSION_COMMIT}")
message(STATUS "libmdbx package version is ${PACKAGE_VERSION}")
cmake_policy(POP)

View file

@ -0,0 +1,22 @@
Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>.
Copyright 2011-2015 Howard Chu, Symas Corp.
Copyright 2015,2016 Peter-Service R&D LLC.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted only as authorized by the OpenLDAP
Public License.
A copy of this license is available in the file LICENSE in the
top-level directory of the distribution or, alternatively, at
<http://www.OpenLDAP.org/license.html>.
OpenLDAP is a registered trademark of the OpenLDAP Foundation.
Individual files and/or contributed packages may be copyright by
other parties and/or subject to additional restrictions.
This work also contains materials derived from public sources.
Additional information about OpenLDAP can be obtained at
<http://www.openldap.org/>.

View file

@ -0,0 +1,362 @@
# This makefile is for GNU Make, and nowadays provided
# just for compatibility and preservation of traditions.
# Please use CMake in case of any difficulties or problems.
#
# Preprocessor macros (for MDBX_OPTIONS) of interest...
# Note that the defaults should already be correct for most platforms;
# you should not need to change any of these. Read their descriptions
# in README and source code if you do. There may be other macros of interest.
SHELL := /bin/bash
# install sandbox
SANDBOX ?=
# install prefixes (inside sandbox)
prefix ?= /usr/local
mandir ?= $(prefix)/man
# lib/bin suffix for multiarch/biarch, e.g. '.x86_64'
suffix ?=
CC ?= gcc
LD ?= ld
MDBX_OPTIONS ?= -DNDEBUG=1
CFLAGS ?= -Os -g3 -Wall -Werror -Wextra -Wpedantic -ffunction-sections -fPIC -fvisibility=hidden -std=gnu11 -pthread -Wno-tautological-compare
# LY: '--no-as-needed,-lrt' for ability to built with modern glibc, but then run with the old
LDFLAGS ?= $(shell $(LD) --help 2>/dev/null | grep -q -- --gc-sections && echo '-Wl,--gc-sections,-z,relro,-O1')$(shell $(LD) --help 2>/dev/null | grep -q -- -dead_strip && echo '-Wl,-dead_strip')
EXE_LDFLAGS ?= -pthread
################################################################################
UNAME := $(shell uname -s 2>/dev/null || echo Unknown)
define uname2sosuffix
case "$(UNAME)" in
Darwin*|Mach*) echo dylib;;
CYGWIN*|MINGW*|MSYS*|Windows*) echo dll;;
*) echo so;;
esac
endef
SO_SUFFIX := $(shell $(uname2sosuffix))
HEADERS := mdbx.h
LIBRARIES := libmdbx.a libmdbx.$(SO_SUFFIX)
TOOLS := mdbx_stat mdbx_copy mdbx_dump mdbx_load mdbx_chk
MANPAGES := mdbx_stat.1 mdbx_copy.1 mdbx_dump.1 mdbx_load.1 mdbx_chk.1
.PHONY: mdbx all install clean test dist check
all: $(LIBRARIES) $(TOOLS)
mdbx: libmdbx.a libmdbx.$(SO_SUFFIX)
tools: $(TOOLS)
strip: all
strip libmdbx.$(SO_SUFFIX) $(TOOLS)
clean:
rm -rf $(TOOLS) mdbx_test @* *.[ao] *.[ls]o *~ tmp.db/* \
*.gcov *.log *.err src/*.o test/*.o mdbx_example dist \
config.h src/elements/config.h src/elements/version.c *.tar*
libmdbx.a: mdbx-static.o
$(AR) rs $@ $?
libmdbx.$(SO_SUFFIX): mdbx-dylib.o
$(CC) $(CFLAGS) $^ -pthread -shared $(LDFLAGS) -o $@
#> dist-cutoff-begin
ifeq ($(wildcard mdbx.c),mdbx.c)
#< dist-cutoff-end
################################################################################
# Amalgamated source code, i.e. distributed after `make dists`
MAN_SRCDIR := man1/
config.h: mdbx.c $(lastword $(MAKEFILE_LIST))
(echo '#define MDBX_BUILD_TIMESTAMP "$(shell date +%Y-%m-%dT%H:%M:%S%z)"' \
&& echo '#define MDBX_BUILD_FLAGS "$(CFLAGS) $(LDFLAGS)"' \
&& echo '#define MDBX_BUILD_COMPILER "$(shell set -o pipefail; $(CC) --version | head -1 || echo 'Please use GCC or CLANG compatible compiler')"' \
&& echo '#define MDBX_BUILD_TARGET "$(shell set -o pipefail; LC_ALL=C $(CC) -v 2>&1 | grep -i '^Target:' | cut -d ' ' -f 2- || echo 'Please use GCC or CLANG compatible compiler')"' \
) > $@
mdbx-dylib.o: config.h mdbx.c $(lastword $(MAKEFILE_LIST))
$(CC) $(CFLAGS) $(MDBX_OPTIONS) '-DMDBX_CONFIG_H="config.h"' -DLIBMDBX_EXPORTS=1 -c mdbx.c -o $@
mdbx-static.o: config.h mdbx.c $(lastword $(MAKEFILE_LIST))
$(CC) $(CFLAGS) $(MDBX_OPTIONS) '-DMDBX_CONFIG_H="config.h"' -ULIBMDBX_EXPORTS -c mdbx.c -o $@
mdbx_%: mdbx_%.c libmdbx.a
$(CC) $(CFLAGS) $(MDBX_OPTIONS) '-DMDBX_CONFIG_H="config.h"' $^ $(EXE_LDFLAGS) -o $@
#> dist-cutoff-begin
else
################################################################################
# Plain (non-amalgamated) sources with test
define uname2osal
case "$(UNAME)" in
CYGWIN*|MINGW*|MSYS*|Windows*) echo windows;;
*) echo unix;;
esac
endef
define uname2titer
case "$(UNAME)" in
Darwin*|Mach*) echo 2;;
*) echo 12;;
esac
endef
DIST_EXTRA := LICENSE README.md CMakeLists.txt GNUmakefile $(addprefix man1/, $(MANPAGES))
DIST_SRC := mdbx.h mdbx.c $(addsuffix .c, $(TOOLS))
TEST_DB ?= $(shell [ -d /dev/shm ] && echo /dev/shm || echo /tmp)/mdbx-test.db
TEST_LOG ?= $(shell [ -d /dev/shm ] && echo /dev/shm || echo /tmp)/mdbx-test.log
TEST_OSAL := $(shell $(uname2osal))
TEST_ITER := $(shell $(uname2titer))
TEST_SRC := test/osal-$(TEST_OSAL).cc $(filter-out $(wildcard test/osal-*.cc), $(wildcard test/*.cc))
TEST_INC := $(wildcard test/*.h)
TEST_OBJ := $(patsubst %.cc,%.o,$(TEST_SRC))
CXX ?= g++
CXXSTD ?= $(shell $(CXX) -std=c++27 -c test/test.cc -o /dev/null 2>/dev/null && echo -std=c++17 || echo -std=c++11)
CXXFLAGS := $(CXXSTD) $(filter-out -std=gnu11,$(CFLAGS))
MAN_SRCDIR := src/man1/
ALLOY_DEPS := $(wildcard src/elements/*)
MDBX_VERSION_GIT = ${shell set -o pipefail; git describe --tags | sed -n 's|^v*\([0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\)\(.*\)|\1|p' || echo 'Please fetch tags and/or install latest git version'}
MDBX_GIT_TIMESTAMP = $(shell git show --no-patch --format=%cI HEAD || echo 'Please install latest get version')
MDBX_GIT_DESCRIBE = $(shell git describe --tags --long --dirty=-dirty || echo 'Please fetch tags and/or install latest git version')
MDBX_VERSION_SUFFIX = $(shell set -o pipefail; echo -n '$(MDBX_GIT_DESCRIBE)' | tr -c -s '[a-zA-Z0-9]' _)
MDBX_BUILD_SOURCERY = $(shell set -o pipefail; $(MAKE) -s src/elements/version.c && (openssl dgst -r -sha256 src/elements/version.c || sha256sum src/elements/version.c || shasum -a 256 src/elements/version.c) 2>/dev/null | cut -d ' ' -f 1 || echo 'Please install openssl or sha256sum or shasum')_$(MDBX_VERSION_SUFFIX)
test check: all mdbx_example mdbx_test
rm -f $(TEST_DB) $(TEST_LOG) && (set -o pipefail; \
(./mdbx_test --progress --console=no --repeat=$(TEST_ITER) --pathname=$(TEST_DB) --dont-cleanup-after basic && \
./mdbx_test --mode=-writemap,-lifo --progress --console=no --repeat=1 --pathname=$(TEST_DB) --dont-cleanup-after basic) \
| tee -a $(TEST_LOG) | tail -n 42) \
&& ./mdbx_chk -vvn $(TEST_DB) && ./mdbx_chk -vvn $(TEST_DB)-copy
mdbx_example: mdbx.h example/example-mdbx.c libmdbx.$(SO_SUFFIX)
$(CC) $(CFLAGS) -I. example/example-mdbx.c ./libmdbx.$(SO_SUFFIX) -o $@
check-singleprocess: all mdbx_test
rm -f $(TEST_DB) $(TEST_LOG) && (set -o pipefail; \
(./mdbx_test --progress --console=no --repeat=42 --pathname=$(TEST_DB) --dont-cleanup-after --hill && \
./mdbx_test --progress --console=no --repeat=2 --pathname=$(TEST_DB) --dont-cleanup-before --dont-cleanup-after --copy && \
./mdbx_test --mode=-writemap,-lifo --progress --console=no --repeat=42 --pathname=$(TEST_DB) --dont-cleanup-after --nested) \
| tee -a $(TEST_LOG) | tail -n 42) \
&& ./mdbx_chk -vvn $(TEST_DB) && ./mdbx_chk -vvn $(TEST_DB)-copy
check-fault: all mdbx_test
rm -f $(TEST_DB) $(TEST_LOG) && (set -o pipefail; ./mdbx_test --progress --console=no --pathname=$(TEST_DB) --inject-writefault=42 --dump-config --dont-cleanup-after basic | tee -a $(TEST_LOG) | tail -n 42) \
; ./mdbx_chk -vvnw $(TEST_DB) && ([ ! -e $(TEST_DB)-copy ] || ./mdbx_chk -vvn $(TEST_DB)-copy)
VALGRIND=valgrind --trace-children=yes --log-file=valgrind-%p.log --leak-check=full --track-origins=yes --error-exitcode=42 --suppressions=test/valgrind_suppress.txt
memcheck check-valgrind: all mdbx_test
@echo "$(MDBX_OPTIONS)" | grep -q MDBX_USE_VALGRIND || echo "WARNING: Please build libmdbx with -DMDBX_USE_VALGRIND to avoid false-positives from Valgrind !!!" >&2
rm -f valgrind-*.log $(TEST_DB) $(TEST_LOG) && (set -o pipefail; \
($(VALGRIND) ./mdbx_test --mode=-writemap,-lifo --progress --console=no --repeat=4 --pathname=$(TEST_DB) --dont-cleanup-after basic && \
$(VALGRIND) ./mdbx_test --progress --console=no --pathname=$(TEST_DB) --dont-cleanup-before --dont-cleanup-after --copy && \
$(VALGRIND) ./mdbx_test --progress --console=no --repeat=2 --pathname=$(TEST_DB) --dont-cleanup-after basic) \
| tee -a $(TEST_LOG) | tail -n 42) \
&& $(VALGRIND) ./mdbx_chk -vvn $(TEST_DB) && ./mdbx_chk -vvn $(TEST_DB)-copy
define test-rule
$(patsubst %.cc,%.o,$(1)): $(1) $(TEST_INC) mdbx.h $(lastword $(MAKEFILE_LIST))
$(CXX) $(CXXFLAGS) $(MDBX_OPTIONS) -c $(1) -o $$@
endef
$(foreach file,$(TEST_SRC),$(eval $(call test-rule,$(file))))
mdbx_%: src/tools/mdbx_%.c libmdbx.a
$(CC) $(CFLAGS) $(MDBX_OPTIONS) '-DMDBX_CONFIG_H="config.h"' $^ $(EXE_LDFLAGS) -o $@
mdbx_test: $(TEST_OBJ) libmdbx.$(SO_SUFFIX)
$(CXX) $(CXXFLAGS) $(TEST_OBJ) -Wl,-rpath . -L . -l mdbx $(EXE_LDFLAGS) -o $@
git_DIR := $(shell if [ -d .git ]; then echo .git; elif [ -s .git -a -f .git ]; then grep '^gitdir: ' .git | cut -d ':' -f 2; else echo "Please use libmdbx as a git-submodule or the amalgamated source code" >&2 && echo git_directory; fi)
src/elements/version.c: src/elements/version.c.in $(lastword $(MAKEFILE_LIST)) $(git_DIR)/HEAD $(git_DIR)/index $(git_DIR)/refs/tags
sed \
-e "s|@MDBX_GIT_TIMESTAMP@|$(MDBX_GIT_TIMESTAMP)|" \
-e "s|@MDBX_GIT_TREE@|$(shell git show --no-patch --format=%T HEAD || echo 'Please install latest get version')|" \
-e "s|@MDBX_GIT_COMMIT@|$(shell git show --no-patch --format=%H HEAD || echo 'Please install latest get version')|" \
-e "s|@MDBX_GIT_DESCRIBE@|$(MDBX_GIT_DESCRIBE)|" \
-e "s|\$${MDBX_VERSION_MAJOR}|$(shell echo '$(MDBX_VERSION_GIT)' | cut -d . -f 1)|" \
-e "s|\$${MDBX_VERSION_MINOR}|$(shell echo '$(MDBX_VERSION_GIT)' | cut -d . -f 2)|" \
-e "s|\$${MDBX_VERSION_RELEASE}|$(shell echo '$(MDBX_VERSION_GIT)' | cut -d . -f 3)|" \
-e "s|\$${MDBX_VERSION_REVISION}|$(shell git rev-list --count --no-merges HEAD || echo 'Please fetch tags and/or install latest git version')|" \
src/elements/version.c.in > $@
src/elements/config.h: src/elements/version.c $(lastword $(MAKEFILE_LIST))
(echo '#define MDBX_BUILD_TIMESTAMP "$(shell date +%Y-%m-%dT%H:%M:%S%z)"' \
&& echo '#define MDBX_BUILD_FLAGS "$(CFLAGS) $(LDFLAGS)"' \
&& echo '#define MDBX_BUILD_COMPILER "$(shell set -o pipefail; $(CC) --version | head -1 || echo 'Please use GCC or CLANG compatible compiler')"' \
&& echo '#define MDBX_BUILD_TARGET "$(shell set -o pipefail; LC_ALL=C $(CC) -v 2>&1 | grep -i '^Target:' | cut -d ' ' -f 2- || echo 'Please use GCC or CLANG compatible compiler')"' \
&& echo '#define MDBX_BUILD_SOURCERY $(MDBX_BUILD_SOURCERY)' \
) > $@
mdbx-dylib.o: src/elements/config.h src/elements/version.c src/alloy.c $(ALLOY_DEPS) $(lastword $(MAKEFILE_LIST))
$(CC) $(CFLAGS) $(MDBX_OPTIONS) '-DMDBX_CONFIG_H="config.h"' -DLIBMDBX_EXPORTS=1 -c src/alloy.c -o $@
mdbx-static.o: src/elements/config.h src/elements/version.c src/alloy.c $(ALLOY_DEPS) $(lastword $(MAKEFILE_LIST))
$(CC) $(CFLAGS) $(MDBX_OPTIONS) '-DMDBX_CONFIG_H="config.h"' -ULIBMDBX_EXPORTS -c src/alloy.c -o $@
.PHONY: dist
dist: libmdbx-sources-$(MDBX_VERSION_SUFFIX).tar.gz $(lastword $(MAKEFILE_LIST))
libmdbx-sources-$(MDBX_VERSION_SUFFIX).tar.gz: $(addprefix dist/, $(DIST_SRC) $(DIST_EXTRA)) $(addprefix dist/man1/,$(MANPAGES))
tar -c -a -f $@ --owner=0 --group=0 -C dist $(DIST_SRC) $(DIST_EXTRA) \
&& rm dist/@tmp-shared_internals.inc
dist/mdbx.h: mdbx.h src/elements/version.c $(lastword $(MAKEFILE_LIST))
mkdir -p dist && cp $< $@
dist/GNUmakefile: GNUmakefile
mkdir -p dist && sed -e '/^#> dist-cutoff-begin/,/^#< dist-cutoff-end/d' $< > $@
dist/@tmp-shared_internals.inc: src/elements/version.c $(ALLOY_DEPS) $(lastword $(MAKEFILE_LIST))
mkdir -p dist && sed \
-e 's|#pragma once|#define MDBX_ALLOY 1\n#define MDBX_BUILD_SOURCERY $(MDBX_BUILD_SOURCERY)|' \
-e 's|#include "../../mdbx.h"|@INCLUDE "mdbx.h"|' \
-e '/#include "defs.h"/r src/elements/defs.h' \
-e '/#include "osal.h"/r src/elements/osal.h' \
src/elements/internals.h > $@
dist/mdbx.c: dist/@tmp-shared_internals.inc $(lastword $(MAKEFILE_LIST))
mkdir -p dist && (cat dist/@tmp-shared_internals.inc \
&& cat src/elements/core.c src/elements/osal.c src/elements/version.c \
&& echo '#if defined(_WIN32) || defined(_WIN64)' \
&& cat src/elements/lck-windows.c && echo '#else /* LCK-implementation */' \
&& cat src/elements/lck-posix.c && echo '#endif /* LCK-implementation */' \
) | grep -v -e '#include "' -e '#pragma once' | sed 's|@INCLUDE|#include|' > $@
define dist-tool-rule
dist/$(1).c: src/tools/$(1).c src/tools/wingetopt.h src/tools/wingetopt.c \
dist/@tmp-shared_internals.inc $(lastword $(MAKEFILE_LIST))
mkdir -p dist && sed \
-e '/#include "..\/elements\/internals.h"/r dist/@tmp-shared_internals.inc' \
-e '/#include "wingetopt.h"/r src/tools/wingetopt.c' \
src/tools/$(1).c \
| grep -v -e '#include "' -e '#pragma once' -e '#define MDBX_ALLOY' \
| sed 's|@INCLUDE|#include|' > $$@
endef
$(foreach file,$(TOOLS),$(eval $(call dist-tool-rule,$(file))))
dist/man1/mdbx_%.1: src/man1/mdbx_%.1
mkdir -p dist/man1/ && cp $< $@
dist/LICENSE: LICENSE
mkdir -p dist/man1/ && cp $< $@
dist/README.md: README.md
mkdir -p dist/man1/ && cp $< $@
dist/CMakeLists.txt: CMakeLists.dist-minimal
mkdir -p dist/man1/ && cp $< $@
endif
################################################################################
# Cross-compilation simple test
CROSS_LIST = mips-linux-gnu-gcc \
powerpc64-linux-gnu-gcc powerpc-linux-gnu-gcc \
arm-linux-gnueabihf-gcc aarch64-linux-gnu-gcc \
sh4-linux-gnu-gcc mips64-linux-gnuabi64-gcc
# hppa-linux-gnu-gcc - don't supported by current qemu release
# s390x-linux-gnu-gcc - qemu troubles (hang/abort)
# sparc64-linux-gnu-gcc - qemu troubles (fcntl for F_SETLK/F_GETLK)
# alpha-linux-gnu-gcc - qemu (or gcc) troubles (coredump)
CROSS_LIST_NOQEMU = hppa-linux-gnu-gcc s390x-linux-gnu-gcc \
sparc64-linux-gnu-gcc alpha-linux-gnu-gcc
cross-gcc:
@echo "CORRESPONDING CROSS-COMPILERs ARE REQUIRED."
@echo "FOR INSTANCE: apt install g++-aarch64-linux-gnu g++-alpha-linux-gnu g++-arm-linux-gnueabihf g++-hppa-linux-gnu g++-mips-linux-gnu g++-mips64-linux-gnuabi64 g++-powerpc-linux-gnu g++-powerpc64-linux-gnu g++-s390x-linux-gnu g++-sh4-linux-gnu g++-sparc64-linux-gnu"
@for CC in $(CROSS_LIST_NOQEMU) $(CROSS_LIST); do \
echo "===================== $$CC"; \
$(MAKE) clean && CC=$$CC CXX=$$(echo $$CC | sed 's/-gcc/-g++/') EXE_LDFLAGS=-static $(MAKE) all || exit $$?; \
done
# Unfortunately qemu don't provide robust support for futexes.
# Therefore it is impossible to run full multi-process tests.
cross-qemu:
@echo "CORRESPONDING CROSS-COMPILERs AND QEMUs ARE REQUIRED."
@echo "FOR INSTANCE: "
@echo " 1) apt install g++-aarch64-linux-gnu g++-alpha-linux-gnu g++-arm-linux-gnueabihf g++-hppa-linux-gnu g++-mips-linux-gnu g++-mips64-linux-gnuabi64 g++-powerpc-linux-gnu g++-powerpc64-linux-gnu g++-s390x-linux-gnu g++-sh4-linux-gnu g++-sparc64-linux-gnu"
@echo " 2) apt install binfmt-support qemu-user-static qemu-user qemu-system-arm qemu-system-mips qemu-system-misc qemu-system-ppc qemu-system-sparc"
@for CC in $(CROSS_LIST); do \
echo "===================== $$CC + qemu"; \
$(MAKE) clean && \
CC=$$CC CXX=$$(echo $$CC | sed 's/-gcc/-g++/') EXE_LDFLAGS=-static MDBX_OPTIONS="-DMDBX_SAFE4QEMU $(MDBX_OPTIONS)" \
$(MAKE) check-singleprocess || exit $$?; \
done
#< dist-cutoff-end
install: $(LIBRARIES) $(TOOLS) $(HEADERS)
mkdir -p $(SANDBOX)$(prefix)/bin$(suffix) \
&& cp -t $(SANDBOX)$(prefix)/bin$(suffix) $(TOOLS) && \
mkdir -p $(SANDBOX)$(prefix)/lib$(suffix) \
&& cp -t $(SANDBOX)$(prefix)/lib$(suffix) $(LIBRARIES) && \
mkdir -p $(SANDBOX)$(prefix)/include \
&& cp -t $(SANDBOX)$(prefix)/include $(HEADERS) && \
mkdir -p $(SANDBOX)$(mandir)/man1 \
&& cp -t $(SANDBOX)$(mandir)/man1 $(addprefix $(MAN_SRCDIR), $(MANPAGES))
################################################################################
# Benchmarking by ioarena
IOARENA ?= $(shell \
(test -x ../ioarena/@BUILD/src/ioarena && echo ../ioarena/@BUILD/src/ioarena) || \
(test -x ../../@BUILD/src/ioarena && echo ../../@BUILD/src/ioarena) || \
(test -x ../../src/ioarena && echo ../../src/ioarena) || which ioarena)
NN ?= 25000000
ifneq ($(wildcard $(IOARENA)),)
.PHONY: bench clean-bench re-bench
clean-bench:
rm -rf bench-*.txt _ioarena/*
re-bench: clean-bench bench
define bench-rule
bench-$(1)_$(2).txt: $(3) $(IOARENA) $(lastword $(MAKEFILE_LIST))
LD_LIBRARY_PATH="./:$$$${LD_LIBRARY_PATH}" \
$(IOARENA) -D $(1) -B crud -m nosync -n $(2) \
| tee $$@ | grep throughput && \
LD_LIBRARY_PATH="./:$$$${LD_LIBRARY_PATH}" \
$(IOARENA) -D $(1) -B get,iterate -m sync -r 4 -n $(2) \
| tee -a $$@ | grep throughput \
|| mv -f $$@ $$@.error
endef
$(eval $(call bench-rule,mdbx,$(NN),libmdbx.$(SO_SUFFIX)))
$(eval $(call bench-rule,sophia,$(NN)))
$(eval $(call bench-rule,leveldb,$(NN)))
$(eval $(call bench-rule,rocksdb,$(NN)))
$(eval $(call bench-rule,wiredtiger,$(NN)))
$(eval $(call bench-rule,forestdb,$(NN)))
$(eval $(call bench-rule,lmdb,$(NN)))
$(eval $(call bench-rule,nessdb,$(NN)))
$(eval $(call bench-rule,sqlite3,$(NN)))
$(eval $(call bench-rule,ejdb,$(NN)))
$(eval $(call bench-rule,vedisdb,$(NN)))
$(eval $(call bench-rule,dummy,$(NN)))
$(eval $(call bench-rule,debug,10))
bench: bench-mdbx_$(NN).txt
.PHONY: bench-debug
bench-debug: bench-debug_10.txt
bench-quartet: bench-mdbx_$(NN).txt bench-lmdb_$(NN).txt bench-rocksdb_$(NN).txt bench-wiredtiger_$(NN).txt
endif

View file

@ -0,0 +1,47 @@
The OpenLDAP Public License
Version 2.8, 17 August 2003
Redistribution and use of this software and associated documentation
("Software"), with or without modification, are permitted provided
that the following conditions are met:
1. Redistributions in source form must retain copyright statements
and notices,
2. Redistributions in binary form must reproduce applicable copyright
statements and notices, this list of conditions, and the following
disclaimer in the documentation and/or other materials provided
with the distribution, and
3. Redistributions must contain a verbatim copy of this document.
The OpenLDAP Foundation may revise this license from time to time.
Each revision is distinguished by a version number. You may use
this Software under terms of this license revision or under the
terms of any subsequent revision of the license.
THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS
CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S)
OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
The names of the authors and copyright holders must not be used in
advertising or otherwise to promote the sale, use or other dealing
in this Software without specific, written prior permission. Title
to copyright in this Software shall at all times remain with copyright
holders.
OpenLDAP is a registered trademark of the OpenLDAP Foundation.
Copyright 1999-2003 The OpenLDAP Foundation, Redwood City,
California, USA. All Rights Reserved. Permission to copy and
distribute verbatim copies of this document is granted.

View file

@ -0,0 +1,591 @@
### The [repository now only mirrored on the Github](https://abf.io/erthink/libmdbx) due to illegal discriminatory restrictions for Russian Crimea and for sovereign crimeans.
<!-- Required extensions: pymdownx.betterem, pymdownx.tilde, pymdownx.emoji, pymdownx.tasklist, pymdownx.superfences -->
-----
libmdbx
======================================
_libmdbx_ is an extremely fast, compact, powerful, embedded
transactional [key-value
store](https://en.wikipedia.org/wiki/Key-value_database)
database, with permissive [OpenLDAP Public License](LICENSE).
_libmdbx_ has a specific set of properties and capabilities,
focused on creating unique lightweight solutions with
extraordinary performance.
The next version is under active non-public development and will be
released as **_MithrilDB_** and `libmithrildb` for libraries & packages.
Admittedly mythical [Mithril](https://en.wikipedia.org/wiki/Mithril) is
resembling silver but being stronger and lighter than steel. Therefore
_MithrilDB_ is rightly relevant name.
> _MithrilDB_ will be radically different from _libmdbx_ by the new
> database format and API based on C++17, as well as the [Apache 2.0
> License](https://www.apache.org/licenses/LICENSE-2.0). The goal of this
> revolution is to provide a clearer and robust API, add more features and
> new valuable properties of database.
*The Future will (be) [Positive](https://www.ptsecurity.com). Всё будет хорошо.*
[![Build Status](https://travis-ci.org/leo-yuriev/libmdbx.svg?branch=master)](https://travis-ci.org/leo-yuriev/libmdbx)
[![Build status](https://ci.appveyor.com/api/projects/status/ue94mlopn50dqiqg/branch/master?svg=true)](https://ci.appveyor.com/project/leo-yuriev/libmdbx/branch/master)
[![Coverity Scan Status](https://scan.coverity.com/projects/12915/badge.svg)](https://scan.coverity.com/projects/reopen-libmdbx)
## Table of Contents
- [Overview](#overview)
- [Comparison with other databases](#comparison-with-other-databases)
- [History & Acknowledgments](#history)
- [Description](#description)
- [Key features](#key-features)
- [Improvements over LMDB](#improvements-over-lmdb)
- [Gotchas](#gotchas)
- [Usage](#usage)
- [Building](#building)
- [Bindings](#bindings)
- [Performance comparison](#performance-comparison)
- [Integral performance](#integral-performance)
- [Read scalability](#read-scalability)
- [Sync-write mode](#sync-write-mode)
- [Lazy-write mode](#lazy-write-mode)
- [Async-write mode](#async-write-mode)
- [Cost comparison](#cost-comparison)
-----
## Overview
_libmdbx_ is revised and extended descendant of amazing [Lightning
Memory-Mapped
Database](https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database).
_libmdbx_ inherits all features and characteristics from
[LMDB](https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database),
but resolves some issues and adds several features.
- _libmdbx_ guarantee data integrity after crash unless this was explicitly
neglected in favour of write performance.
- _libmdbx_ allows multiple processes to read and update several key-value
tables concurrently, while being
[ACID](https://en.wikipedia.org/wiki/ACID)-compliant, with minimal
overhead and Olog(N) operation cost.
- _libmdbx_ enforce
[serializability](https://en.wikipedia.org/wiki/Serializability) for
writers by single
[mutex](https://en.wikipedia.org/wiki/Mutual_exclusion) and affords
[wait-free](https://en.wikipedia.org/wiki/Non-blocking_algorithm#Wait-freedom)
for parallel readers without atomic/interlocked operations, while
writing and reading transactions do not block each other.
- _libmdbx_ uses [B+Trees](https://en.wikipedia.org/wiki/B%2B_tree) and
[Memory-Mapping](https://en.wikipedia.org/wiki/Memory-mapped_file),
doesn't use [WAL](https://en.wikipedia.org/wiki/Write-ahead_logging)
which might be a caveat for some workloads.
- _libmdbx_ implements a simplified variant of the [Berkeley
DB](https://en.wikipedia.org/wiki/Berkeley_DB) and/or
[dbm](https://en.wikipedia.org/wiki/DBM_(computing)) API.
- _libmdbx_ supports Linux, Windows, MacOS, FreeBSD and other systems
compliant with POSIX.1-2008.
### Comparison with other databases
For now please refer to [chapter of "BoltDB comparison with other
databases"](https://github.com/coreos/bbolt#comparison-with-other-databases)
which is also (mostly) applicable to _libmdbx_.
### History
At first the development was carried out within the
[ReOpenLDAP](https://github.com/leo-yuriev/ReOpenLDAP) project. About a
year later _libmdbx_ was separated into standalone project, which was
[presented at Highload++ 2015
conference](http://www.highload.ru/2015/abstracts/1831.html).
Since 2017 _libmdbx_ is used in [Fast Positive Tables](https://github.com/leo-yuriev/libfpta),
and development is funded by [Positive Technologies](https://www.ptsecurity.com).
### Acknowledgments
Howard Chu <hyc@openldap.org> is the author of LMDB, from which
originated the MDBX in 2015.
Martin Hedenfalk <martin@bzero.se> is the author of `btree.c` code, which
was used for begin development of LMDB.
-----
Description
===========
## Key features
1. Key-value pairs are stored in ordered map(s), keys are always sorted,
range lookups are supported.
2. Data is [memory-mapped](https://en.wikipedia.org/wiki/Memory-mapped_file)
into each worker DB process, and could be accessed zero-copy from transactions.
3. Transactions are
[ACID](https://en.wikipedia.org/wiki/ACID)-compliant, through to
[MVCC](https://en.wikipedia.org/wiki/Multiversion_concurrency_control)
and [CoW](https://en.wikipedia.org/wiki/Copy-on-write). Writes are
strongly serialized and aren't blocked by reads, transactions can't
conflict with each other. Reads are guaranteed to get only commited data
([relaxing serializability](https://en.wikipedia.org/wiki/Serializability#Relaxing_serializability)).
4. Read transactions are
[non-blocking](https://en.wikipedia.org/wiki/Non-blocking_algorithm),
don't use [atomic operations](https://en.wikipedia.org/wiki/Linearizability#High-level_atomic_operations).
Readers don't block each other and aren't blocked by writers. Read
performance scales linearly with CPU core count.
> Nonetheless, "connect to DB" (starting the first read transaction in a thread) and
> "disconnect from DB" (closing DB or thread termination) requires a lock
> acquisition to register/unregister at the "readers table".
5. Keys with multiple values are stored efficiently without key
duplication, sorted by value, including integers (valuable for
secondary indexes).
6. Efficient operation on short fixed length keys,
including 32/64-bit integer types.
7. [WAF](https://en.wikipedia.org/wiki/Write_amplification) (Write
Amplification Factor) и RAF (Read Amplification Factor) are Olog(N).
8. No [WAL](https://en.wikipedia.org/wiki/Write-ahead_logging) and
transaction journal. In case of a crash no recovery needed. No need for
regular maintenance. Backups can be made on the fly on working DB
without freezing writers.
9. No additional memory management, all done by basic OS services.
## Improvements over LMDB
_libmdbx_ is superior to _legendary [LMDB](https://symas.com/lmdb/)_ in
terms of features and reliability, not inferior in performance. In
comparison to LMDB, _libmdbx_ make things "just work" perfectly and
out-of-the-box, not silently and catastrophically break down. The list
below is pruned down to the improvements most notable and obvious from
the user's point of view.
1. Automatic on-the-fly database size control by preset parameters, both
reduction and increment.
> _libmdbx_ manage the database size according to parameters specified
> by `mdbx_env_set_geometry()` function,
> ones include the growth step and the truncation threshold.
2. Automatic continuous zero-overhead database compactification.
> _libmdbx_ logically move as possible a freed pages
> at end of allocation area into unallocated space,
> and then release such space if a lot of.
3. LIFO policy for recycling a Garbage Collection items. On systems with a disk
write-back cache, this can significantly increase write performance, up to
several times in a best case scenario.
> LIFO means that for reuse pages will be taken which became unused the lastest.
> Therefore the loop of database pages circulation becomes as short as possible.
> In other words, the number of pages, that are overwritten in memory
> and on disk during a series of write transactions, will be as small as possible.
> Thus creates ideal conditions for the efficient operation of the disk write-back cache.
4. Fast estimation of range query result volume, i.e. how many items can
be found between a `KEY1` and a `KEY2`. This is prerequisite for build
and/or optimize query execution plans.
> _libmdbx_ performs a rough estimate based only on b-tree pages that
> are common for the both stacks of cursors that were set to corresponing
> keys.
5. `mdbx_chk` tool for database integrity check.
6. Guarantee of database integrity even in asynchronous unordered write-to-disk mode.
> _libmdbx_ propose additional trade-off by implementing append-like manner for updates
> in `NOSYNC` and `MAPASYNC` modes, that avoid database corruption after a system crash
> contrary to LMDB. Nevertheless, the `MDBX_UTTERLY_NOSYNC` mode available to match LMDB behaviour,
> and for a special use-cases.
7. Automated steady flush to disk upon volume of changes and/or by
timeout via cheap polling.
8. Sequence generation and three cheap persistent 64-bit markers with ACID.
9. Support for keys and values of zero length, including multi-values
(aka sorted duplicates).
10. The handler of lack-of-space condition with a callback,
that allow you to control and resolve such situations.
11. Support for opening a database in the exclusive mode, including on a network share.
12. Extended transaction info, including dirty and leftover space info
for a write transaction, reading lag and hold over space for read
transactions.
13. Extended whole-database info (aka environment) and reader enumeration.
14. Extended update or delete, _at once_ with getting previous value
and addressing the particular item from multi-value with the same key.
15. Support for explicitly updating the existing record, not insertion a new one.
16. All cursors are uniformly, can be reused and should be closed explicitly,
regardless ones were opened within write or read transaction.
17. Correct update of current record with `MDBX_CURRENT` flag when size
of key or data was changed, including sorted duplicated.
18. Opening database handles is spared from race conditions and
pre-opening is not needed.
19. Ability to determine whether the particular data is on a dirty page
or not, that allows to avoid copy-out before updates.
20. Ability to determine whether the cursor is pointed to a key-value
pair, to the first, to the last, or not set to anything.
21. Returning `MDBX_EMULTIVAL` error in case of ambiguous update or delete.
22. On **MacOS** the `fcntl(F_FULLFSYNC)` syscall is used _by
default_ to synchronize data with the disk, as this is [the only way to
guarantee data
durability](https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fsync.2.html)
in case of power failure. Unfortunately, in scenarios with high write
intensity, the use of `F_FULLFSYNC` significant degrades performance
compared to LMDB, where the `fsync()` syscall is used. Therefore,
_libmdbx_ allows you to override this behavior by defining the
`MDBX_OSX_SPEED_INSTEADOF_DURABILITY=1` option while build the library.
23. On **Windows** the `LockFileEx()` syscall is used for locking, since
it allows place the database on network drives, and provides protection
against incompetent user actions (aka
[poka-yoke](https://en.wikipedia.org/wiki/Poka-yoke)). Therefore
_libmdbx_ may be a little lag in performance tests from LMDB where a
named mutexes are used.
## Gotchas
1. There cannot be more than one writer at a time.
> On the other hand, this allows serialize an updates and eliminate any
> possibility of conflicts, deadlocks or logical errors.
2. No [WAL](https://en.wikipedia.org/wiki/Write-ahead_logging) means
relatively big [WAF](https://en.wikipedia.org/wiki/Write_amplification)
(Write Amplification Factor). Because of this syncing data to disk might
be quite resource intensive and be main performance bottleneck during
intensive write workload.
> As compromise _libmdbx_ allows several modes of lazy and/or periodic
> syncing, including `MAPASYNC` mode, which modificate data in memory and
> asynchronously syncs data to disk, moment to sync is picked by OS.
>
> Although this should be used with care, synchronous transactions in a DB
> with transaction journal will require 2 IOPS minimum (probably 3-4 in
> practice) because of filesystem overhead, overhead depends on
> filesystem, not on record count or record size. In _libmdbx_ IOPS count
> will grow logarithmically depending on record count in DB (height of B+
> tree) and will require at least 2 IOPS per transaction too.
3. [CoW](https://en.wikipedia.org/wiki/Copy-on-write) for
[MVCC](https://en.wikipedia.org/wiki/Multiversion_concurrency_control)
is done on memory page level with
[B+trees](https://ru.wikipedia.org/wiki/B-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE).
Therefore altering data requires to copy about Olog(N) memory pages,
which uses [memory bandwidth](https://en.wikipedia.org/wiki/Memory_bandwidth) and is main
performance bottleneck in `MDBX_MAPASYNC` mode.
> This is unavoidable, but isn't that bad. Syncing data to disk requires
> much more similar operations which will be done by OS, therefore this is
> noticeable only if data sync to persistent storage is fully disabled.
> _libmdbx_ allows to safely save data to persistent storage with minimal
> performance overhead. If there is no need to save data to persistent
> storage then it's much more preferable to use `std::map`.
4. Massive altering of data during a parallel long read operation will
increase the process work set, may exhaust entire free database space and
result in subsequent write performance degradation.
> _libmdbx_ mostly solve this issue by lack-of-space callback and `MDBX_LIFORECLAIM` mode.
> See [`mdbx.h`](mdbx.h) with API description for details.
> The "next" version of libmdbx (MithrilDB) will completely solve this.
5. There are no built-in checksums or digests to verify database integrity.
> The "next" version of _libmdbx_ (MithrilDB) will solve this issue employing [Merkle Tree](https://en.wikipedia.org/wiki/Merkle_tree).
--------------------------------------------------------------------------------
Usage
=====
## Source code embedding
_libmdbx_ provides two official ways for integration in source code form:
1. Using the amalgamated source code.
> The amalgamated source code includes all files requires to build and
> use _libmdbx_, but not for testing _libmdbx_ itself.
2. Adding the complete original source code as a `git submodule`.
> This allows you to build as _libmdbx_ and testing tool.
> On the other hand, this way requires you to pull git tags, and use C++11 compiler for test tool.
**_Please, avoid using any other techniques._** Otherwise, at least
don't ask for support and don't name such chimeras `libmdbx`.
The amalgamated source code could be created from original clone of git
repository on Linux by executing `make dist`. As a result, the desired
set of files will be formed in the `dist` subdirectory.
## Building
Both amalgamated and original source code provides build through the use
[CMake](https://cmake.org/) or [GNU
Make](https://www.gnu.org/software/make/) with
[bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)). All build ways
are completely traditional and have minimal prerequirements like
`build-essential`, i.e. the non-obsolete C/C++ compiler and a
[SDK](https://en.wikipedia.org/wiki/Software_development_kit) for the
target platform. Obviously you need building tools itself, i.e. `git`,
`cmake` or GNU `make` with `bash`.
So just use CMake or GNU Make in your habitual manner and feel free to
fill an issue or make pull request in the case something will be
unexpected or broken down.
#### DSO/DLL unloading and destructors of Thread-Local-Storage objects
When building _libmdbx_ as a shared library or use static _libmdbx_ as a
part of another dynamic library, it is advisable to make sure that your
system ensures the correctness of the call destructors of
Thread-Local-Storage objects when unloading dynamic libraries.
If this is not the case, then unloading a dynamic-link library with
_libmdbx_ code inside, can result in either a resource leak or a crash
due to calling destructors from an already unloaded DSO/DLL object. The
problem can only manifest in a multithreaded application, which makes
the unloading of shared dynamic libraries with _libmdbx_ code inside,
after using _libmdbx_. It is known that TLS-destructors are properly
maintained in the following cases:
- On all modern versions of Windows (Windows 7 and later).
- On systems with the
[`__cxa_thread_atexit_impl()`](https://sourceware.org/glibc/wiki/Destructor%20support%20for%20thread_local%20variables)
function in the standard C library, including systems with GNU libc
version 2.18 and later.
- On systems with libpthread/ntpl from GNU libc with bug fixes
[#21031](https://sourceware.org/bugzilla/show_bug.cgi?id=21031) and
[#21032](https://sourceware.org/bugzilla/show_bug.cgi?id=21032), or
where there are no similar bugs in the pthreads implementation.
### Linux and other platforms with GNU Make
To build the library it is enough to execute `make all` in the directory
of source code, and `make check` for execute the basic tests.
If the `make` installed on the system is not GNU Make, there will be a
lot of errors from make when trying to build. In this case, perhaps you
should use `gmake` instead of `make`, or even `gnu-make`, etc.
### FreeBSD and related platforms
As a rule, in such systems, the default is to use Berkeley Make. And GNU
Make is called by the gmake command or may be missing. In addition,
[bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) may be absent.
You need to install the required components: GNU Make, bash, C and C++
compilers compatible with GCC or CLANG. After that, to build the
library, it is enough execute `gmake all` (or `make all`) in the
directory with source code, and `gmake check` (or `make check`) to run
the basic tests.
### Windows
For build _libmdbx_ on Windows the _original_ CMake and [Microsoft Visual
Studio](https://en.wikipedia.org/wiki/Microsoft_Visual_Studio) are
recommended.
Building by MinGW, MSYS or Cygwin is potentially possible. However,
these scripts are not tested and will probably require you to modify the
CMakeLists.txt or Makefile respectively.
It should be noted that in _libmdbx_ was efforts to resolve
runtime dependencies from CRT and other libraries Visual Studio.
For this is enough define the `MDBX_AVOID_CRT` during build.
An example of running a basic test script can be found in the
[CI-script](appveyor.yml) for [AppVeyor](https://www.appveyor.com/). To
run the [long stochastic test scenario](test/long_stochastic.sh),
[bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) is required, and
the such testing is recommended with place the test data on the
[RAM-disk](https://en.wikipedia.org/wiki/RAM_drive).
### MacOS
Current [native build tools](https://en.wikipedia.org/wiki/Xcode) for
MacOS include GNU Make, CLANG and an outdated version of bash.
Therefore, to build the library, it is enough to run `make all` in the
directory with source code, and run `make check` to execute the base
tests. If something goes wrong, it is recommended to install
[Homebrew](https://brew.sh/) and try again.
To run the [long stochastic test scenario](test/long_stochastic.sh), you
will need to install the current (not outdated) version of
[bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)). To do this, we
recommend that you install [Homebrew](https://brew.sh/) and then execute
`brew install bash`.
## Bindings
| Runtime | GitHub | Author |
| -------- | ------ | ------ |
| Java | [mdbxjni](https://github.com/castortech/mdbxjni) | [Castor Technologies](https://castortech.com/) |
| .NET | [mdbx.NET](https://github.com/wangjia184/mdbx.NET) | [Jerry Wang](https://github.com/wangjia184) |
--------------------------------------------------------------------------------
Performance comparison
======================
All benchmarks were done by [IOArena](https://github.com/pmwkaa/ioarena)
and multiple [scripts](https://github.com/pmwkaa/ioarena/tree/HL%2B%2B2015)
runs on Lenovo Carbon-2 laptop, i7-4600U 2.1 GHz, 8 Gb RAM,
SSD SAMSUNG MZNTD512HAGL-000L1 (DXT23L0Q) 512 Gb.
## Integral performance
Here showed sum of performance metrics in 3 benchmarks:
- Read/Search on 4 CPU cores machine;
- Transactions with [CRUD](https://en.wikipedia.org/wiki/CRUD)
operations in sync-write mode (fdatasync is called after each
transaction);
- Transactions with [CRUD](https://en.wikipedia.org/wiki/CRUD)
operations in lazy-write mode (moment to sync data to persistent storage
is decided by OS).
*Reasons why asynchronous mode isn't benchmarked here:*
1. It doesn't make sense as it has to be done with DB engines, oriented
for keeping data in memory e.g. [Tarantool](https://tarantool.io/),
[Redis](https://redis.io/)), etc.
2. Performance gap is too high to compare in any meaningful way.
![Comparison #1: Integral Performance](https://raw.githubusercontent.com/wiki/leo-yuriev/libmdbx/img/perf-slide-1.png)
--------------------------------------------------------------------------------
## Read Scalability
Summary performance with concurrent read/search queries in 1-2-4-8
threads on 4 CPU cores machine.
![Comparison #2: Read Scalability](https://raw.githubusercontent.com/wiki/leo-yuriev/libmdbx/img/perf-slide-2.png)
--------------------------------------------------------------------------------
## Sync-write mode
- Linear scale on left and dark rectangles mean arithmetic mean
transactions per second;
- Logarithmic scale on right is in seconds and yellow intervals mean
execution time of transactions. Each interval shows minimal and maximum
execution time, cross marks standard deviation.
**10,000 transactions in sync-write mode**. In case of a crash all data
is consistent and state is right after last successful transaction.
[fdatasync](https://linux.die.net/man/2/fdatasync) syscall is used after
each write transaction in this mode.
In the benchmark each transaction contains combined CRUD operations (2
inserts, 1 read, 1 update, 1 delete). Benchmark starts on empty database
and after full run the database contains 10,000 small key-value records.
![Comparison #3: Sync-write mode](https://raw.githubusercontent.com/wiki/leo-yuriev/libmdbx/img/perf-slide-3.png)
--------------------------------------------------------------------------------
## Lazy-write mode
- Linear scale on left and dark rectangles mean arithmetic mean of
thousands transactions per second;
- Logarithmic scale on right in seconds and yellow intervals mean
execution time of transactions. Each interval shows minimal and maximum
execution time, cross marks standard deviation.
**100,000 transactions in lazy-write mode**. In case of a crash all data
is consistent and state is right after one of last transactions, but
transactions after it will be lost. Other DB engines use
[WAL](https://en.wikipedia.org/wiki/Write-ahead_logging) or transaction
journal for that, which in turn depends on order of operations in
journaled filesystem. _libmdbx_ doesn't use WAL and hands I/O operations
to filesystem and OS kernel (mmap).
In the benchmark each transaction contains combined CRUD operations (2
inserts, 1 read, 1 update, 1 delete). Benchmark starts on empty database
and after full run the database contains 100,000 small key-value
records.
![Comparison #4: Lazy-write mode](https://raw.githubusercontent.com/wiki/leo-yuriev/libmdbx/img/perf-slide-4.png)
--------------------------------------------------------------------------------
## Async-write mode
- Linear scale on left and dark rectangles mean arithmetic mean of
thousands transactions per second;
- Logarithmic scale on right in seconds and yellow intervals mean
execution time of transactions. Each interval shows minimal and maximum
execution time, cross marks standard deviation.
**1,000,000 transactions in async-write mode**. In case of a crash all
data will be consistent and state will be right after one of last
transactions, but lost transaction count is much higher than in
lazy-write mode. All DB engines in this mode do as little writes as
possible on persistent storage. _libmdbx_ uses
[msync(MS_ASYNC)](https://linux.die.net/man/2/msync) in this mode.
In the benchmark each transaction contains combined CRUD operations (2
inserts, 1 read, 1 update, 1 delete). Benchmark starts on empty database
and after full run the database contains 10,000 small key-value records.
![Comparison #5: Async-write mode](https://raw.githubusercontent.com/wiki/leo-yuriev/libmdbx/img/perf-slide-5.png)
--------------------------------------------------------------------------------
## Cost comparison
Summary of used resources during lazy-write mode benchmarks:
- Read and write IOPS;
- Sum of user CPU time and sys CPU time;
- Used space on persistent storage after the test and closed DB, but not
waiting for the end of all internal housekeeping operations (LSM
compactification, etc).
_ForestDB_ is excluded because benchmark showed it's resource
consumption for each resource (CPU, IOPS) much higher than other engines
which prevents to meaningfully compare it with them.
All benchmark data is gathered by
[getrusage()](http://man7.org/linux/man-pages/man2/getrusage.2.html)
syscall and by scanning data directory.
![Comparison #6: Cost comparison](https://raw.githubusercontent.com/wiki/leo-yuriev/libmdbx/img/perf-slide-6.png)
--------------------------------------------------------------------------------
```
$ objdump -f -h -j .text libmdbx.so
libmdbx.so: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x0000000000003710
Sections:
Idx Name Size VMA LMA File off Algn
11 .text 00015eff 0000000000003710 0000000000003710 00003710 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
```

View file

@ -0,0 +1,99 @@
version: 0.3.2.{build}
environment:
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
CMAKE_GENERATOR: Visual Studio 16 2019
TOOLSET: 142
MDBX_BUILD_SHARED_LIBRARY: OFF
MDBX_AVOID_CRT: OFF
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
CMAKE_GENERATOR: Visual Studio 16 2019
TOOLSET: 142
MDBX_BUILD_SHARED_LIBRARY: ON
MDBX_AVOID_CRT: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
CMAKE_GENERATOR: Visual Studio 16 2019
TOOLSET: 142
MDBX_BUILD_SHARED_LIBRARY: OFF
MDBX_AVOID_CRT: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
CMAKE_GENERATOR: Visual Studio 16 2019
TOOLSET: 142
MDBX_BUILD_SHARED_LIBRARY: ON
MDBX_AVOID_CRT: OFF
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
CMAKE_GENERATOR: Visual Studio 15 2017
TOOLSET: 141
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
CMAKE_GENERATOR: Visual Studio 14 2015
TOOLSET: 140
branches:
except:
- coverity_scan
configuration:
- Debug
- Release
platform:
- Win32
- x64
before_build:
- git clean -x -f -d
- git submodule sync
- git fetch --tags --prune
- git submodule update --init --recursive
- git submodule foreach --recursive git fetch --tags --prune
- cmake --version
build_script:
- ps: |
Write-Output "*******************************************************************************"
Write-Output "Configuration: $env:CONFIGURATION"
Write-Output "Platform: $env:PLATFORM"
Write-Output "Toolchain: $env:CMAKE_GENERATOR v$env:TOOLSET"
Write-Output "Options: MDBX_AVOID_CRT=$env:MDBX_AVOID_CRT MDBX_BUILD_SHARED_LIBRARY=$env:MDBX_BUILD_SHARED_LIBRARY"
Write-Output "*******************************************************************************"
md _build -Force | Out-Null
cd _build
$generator = $env:CMAKE_GENERATOR
if ($env:TOOLSET -lt 142) {
if ($env:PLATFORM -eq "x64") {
$generator = "$generator Win64"
}
& cmake -G "$generator" -D CMAKE_CONFIGURATION_TYPES="Debug;Release" -D MDBX_AVOID_CRT:BOOL=$env:MDBX_AVOID_CRT -D MDBX_BUILD_SHARED_LIBRARY:BOOL=$env:MDBX_BUILD_SHARED_LIBRARY ..
} else {
& cmake -G "$generator" -A $env:PLATFORM -D CMAKE_CONFIGURATION_TYPES="Debug;Release" -DMDBX_AVOID_CRT:BOOL=$env:MDBX_AVOID_CRT -D MDBX_BUILD_SHARED_LIBRARY:BOOL=$env:MDBX_BUILD_SHARED_LIBRARY ..
}
if ($LastExitCode -ne 0) {
throw "Exec: $ErrorMessage"
}
Write-Output "*******************************************************************************"
& cmake --build . --config $env:CONFIGURATION
if ($LastExitCode -ne 0) {
throw "Exec: $ErrorMessage"
}
Write-Output "*******************************************************************************"
test_script:
- ps: |
if (($env:PLATFORM -ne "ARM") -and ($env:PLATFORM -ne "ARM64")) {
& ./$env:CONFIGURATION/mdbx_test.exe --progress --console=no --pathname=test.db --dont-cleanup-after basic > test.log
Get-Content test.log | Select-Object -last 42
if ($LastExitCode -ne 0) {
throw "Exec: $ErrorMessage"
} else {
& ./$env:CONFIGURATION/mdbx_chk.exe -nvv test.db | Tee-Object -file chk.log | Select-Object -last 42
}
}
on_failure:
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\test.log
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\test.db
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\chk.log

View file

@ -0,0 +1,666 @@
## Copyright (c) 2012-2019 Leonid Yuriev <leo@yuriev.ru>.
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##
cmake_minimum_required(VERSION 3.8.2)
cmake_policy(PUSH)
cmake_policy(VERSION 3.8.2)
if (CMAKE_VERSION MATCHES ".*MSVC.*")
message(FATAL_ERROR "CMake from MSVC kit is unfit! "
"Please use the original CMake from https://cmake.org/download/")
endif()
if (NOT (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED))
message(FATAL_ERROR "This module required C or C++ to be enabled")
endif()
include(CMakeDependentOption)
if(CMAKE_CXX_COMPILER_LOADED)
include(CheckCXXSourceRuns)
include(CheckCXXSourceCompiles)
include(CheckCXXCompilerFlag)
endif()
if(CMAKE_C_COMPILER_LOADED)
include(CheckCSourceRuns)
include(CheckCSourceCompiles)
include(CheckCCompilerFlag)
endif()
# Check if the same compile family is used for both C and CXX
if(CMAKE_C_COMPILER_LOADED AND CMAKE_CXX_COMPILER_LOADED AND
NOT (CMAKE_C_COMPILER_ID STREQUAL CMAKE_CXX_COMPILER_ID))
message(WARNING "CMAKE_C_COMPILER_ID (${CMAKE_C_COMPILER_ID}) is different "
"from CMAKE_CXX_COMPILER_ID (${CMAKE_CXX_COMPILER_ID}). "
"The final binary may be unusable.")
endif()
if(CMAKE_CXX_COMPILER_LOADED)
set(CMAKE_PRIMARY_LANG "CXX")
else()
set(CMAKE_PRIMARY_LANG "C")
endif()
macro(check_compiler_flag flag variable)
if(CMAKE_CXX_COMPILER_LOADED)
check_cxx_compiler_flag(${flag} ${variable})
else()
check_c_compiler_flag(${flag} ${variable})
endif()
endmacro(check_compiler_flag)
# We support building with Clang and gcc. First check
# what we're using for build.
if(CMAKE_C_COMPILER_LOADED AND CMAKE_C_COMPILER_ID STREQUAL "Clang")
set(CMAKE_COMPILER_IS_CLANG ON)
set(CMAKE_COMPILER_IS_GNUCC OFF)
endif()
if(CMAKE_CXX_COMPILER_LOADED AND CMAKE_CXx_COMPILER_ID STREQUAL "Clang")
set(CMAKE_COMPILER_IS_CLANG ON)
set(CMAKE_COMPILER_IS_GNUCXX OFF)
endif()
# Hard coding the compiler version is ugly from cmake POV, but
# at least gives user a friendly error message. The most critical
# demand for C++ compiler is support of C++11 lambdas, added
# only in version 4.5 https://gcc.gnu.org/projects/cxx0x.html
if(CMAKE_COMPILER_IS_GNUCC)
if(CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5)
message(FATAL_ERROR "
Your GCC version is ${CMAKE_C_COMPILER_VERSION}, please update")
endif()
endif()
if(CMAKE_COMPILER_IS_GNUCXX)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.5)
message(FATAL_ERROR "
Your G++ version is ${CMAKE_CXX_COMPILER_VERSION}, please update")
endif()
endif()
if(CMAKE_C_COMPILER_LOADED)
# Check for Elbrus lcc
execute_process(COMMAND ${CMAKE_C_COMPILER} --version
OUTPUT_VARIABLE tmp_lcc_probe_version
RESULT_VARIABLE tmp_lcc_probe_result ERROR_QUIET)
if(tmp_lcc_probe_result EQUAL 0)
string(FIND "${tmp_lcc_probe_version}" "lcc:" tmp_lcc_marker)
string(FIND "${tmp_lcc_probe_version}" ":e2k-" tmp_e2k_marker)
if(tmp_lcc_marker GREATER -1 AND tmp_e2k_marker GREATER tmp_lcc_marker)
execute_process(COMMAND ${CMAKE_C_COMPILER} -print-version
OUTPUT_VARIABLE CMAKE_C_COMPILER_VERSION
RESULT_VARIABLE tmp_lcc_probe_result)
set(CMAKE_COMPILER_IS_ELBRUSC ON)
set(CMAKE_C_COMPILER_ID "Elbrus")
else()
set(CMAKE_COMPILER_IS_ELBRUSC OFF)
endif()
unset(tmp_lcc_marker)
unset(tmp_e2k_marker)
endif()
unset(tmp_lcc_probe_version)
unset(tmp_lcc_probe_result)
endif()
if(CMAKE_CXX_COMPILER_LOADED)
# Check for Elbrus l++
execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version
OUTPUT_VARIABLE tmp_lxx_probe_version
RESULT_VARIABLE tmp_lxx_probe_result ERROR_QUIET)
if(tmp_lxx_probe_result EQUAL 0)
string(FIND "${tmp_lxx_probe_version}" "lcc:" tmp_lcc_marker)
string(FIND "${tmp_lxx_probe_version}" ":e2k-" tmp_e2k_marker)
if(tmp_lcc_marker GREATER -1 AND tmp_e2k_marker GREATER tmp_lcc_marker)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-version
OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION
RESULT_VARIABLE tmp_lxx_probe_result)
set(CMAKE_COMPILER_IS_ELBRUSCXX ON)
set(CMAKE_CXX_COMPILER_ID "Elbrus")
else()
set(CMAKE_COMPILER_IS_ELBRUSCXX OFF)
endif()
unset(tmp_lcc_marker)
unset(tmp_e2k_marker)
endif()
unset(tmp_lxx_probe_version)
unset(tmp_lxx_probe_result)
endif()
if(CMAKE_CL_64)
set(MSVC64 1)
endif()
if(WIN32 AND CMAKE_COMPILER_IS_GNU${CMAKE_PRIMARY_LANG})
execute_process(COMMAND ${CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER} -dumpmachine
OUTPUT_VARIABLE __GCC_TARGET_MACHINE
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(__GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64")
set(MINGW64 1)
endif()
unset(__GCC_TARGET_MACHINE)
endif()
if(CMAKE_COMPILER_IS_ELBRUSC OR CMAKE_SYSTEM_PROCESSOR MATCHES "e2k.*|E2K.*|elbrus.*|ELBRUS.*")
set(E2K TRUE)
set(CMAKE_SYSTEM_ARCH "Elbrus")
elseif((MSVC64 OR MINGW64) AND CMAKE_SIZEOF_VOID_P EQUAL 8)
set(X86_64 TRUE)
set(CMAKE_SYSTEM_ARCH "x86_64")
elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING))
set(X86_32 TRUE)
set(CMAKE_SYSTEM_ARCH "x86")
elseif(CMAKE_COMPILER_IS_ELBRUSC OR CMAKE_SYSTEM_PROCESSOR MATCHES "e2k.*|E2K.*|elbrus.*|ELBRUS.*")
set(E2K TRUE)
set(CMAKE_SYSTEM_ARCH "Elbrus")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
set(X86_64 TRUE)
set(CMAKE_SYSTEM_ARCH "x86_64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*")
set(X86_32 TRUE)
set(CMAKE_SYSTEM_ARCH "x86")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|ARM64.*)" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
set(AARCH64 TRUE)
set(CMAKE_SYSTEM_ARCH "ARM64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)")
set(ARM32 TRUE)
set(CMAKE_SYSTEM_ARCH "ARM")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le.*" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
set(PPC64LE TRUE)
set(CMAKE_SYSTEM_ARCH "PPC64LE")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64.*" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
set(PPC64 TRUE)
set(CMAKE_SYSTEM_ARCH "PPC64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc).*")
set(PPC32 TRUE)
set(CMAKE_SYSTEM_ARCH "PPC")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(mips|MIPS)64.*" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
set(MIPS64 TRUE)
set(CMAKE_SYSTEM_ARCH "MIPS64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(mips|MIPS).*")
set(MIPS32 TRUE)
set(CMAKE_SYSTEM_ARCH "MIPS")
endif()
if(MSVC)
check_compiler_flag("/WX" CC_HAS_WERROR)
else()
#
# GCC started to warn for unused result starting from 4.2, and
# this is when it introduced -Wno-unused-result
# GCC can also be built on top of llvm runtime (on mac).
check_compiler_flag("-Wno-unknown-pragmas" CC_HAS_WNO_UNKNOWN_PRAGMAS)
check_compiler_flag("-Wextra" CC_HAS_WEXTRA)
check_compiler_flag("-Werror" CC_HAS_WERROR)
check_compiler_flag("-fexceptions" CC_HAS_FEXCEPTIONS)
check_cxx_compiler_flag("-fcxx-exceptions" CC_HAS_FCXX_EXCEPTIONS)
check_compiler_flag("-funwind-tables" CC_HAS_FUNWIND_TABLES)
check_compiler_flag("-fno-omit-frame-pointer" CC_HAS_FNO_OMIT_FRAME_POINTER)
check_compiler_flag("-fno-common" CC_HAS_FNO_COMMON)
check_compiler_flag("-ggdb" CC_HAS_GGDB)
check_compiler_flag("-fvisibility=hidden" CC_HAS_VISIBILITY)
check_compiler_flag("-march=native" CC_HAS_ARCH_NATIVE)
check_compiler_flag("-Og" CC_HAS_DEBUG_FRENDLY_OPTIMIZATION)
check_compiler_flag("-Wall" CC_HAS_WALL)
check_compiler_flag("-Ominimal" CC_HAS_OMINIMAL)
check_compiler_flag("-ffunction-sections -fdata-sections" CC_HAS_SECTIONS)
check_compiler_flag("-ffast-math" CC_HAS_FASTMATH)
# Check for an omp support
set(CMAKE_REQUIRED_FLAGS "-fopenmp -Werror")
check_cxx_source_compiles("int main(void) {
#pragma omp parallel
return 0;
}" HAVE_OPENMP)
set(CMAKE_REQUIRED_FLAGS "")
endif()
# Check for LTO support by GCC
if(CMAKE_COMPILER_IS_GNU${CMAKE_PRIMARY_LANG})
unset(gcc_collect)
unset(gcc_lto_wrapper)
if(NOT CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER_VERSION VERSION_LESS 4.7)
execute_process(COMMAND ${CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER} -v
OUTPUT_VARIABLE gcc_info_v ERROR_VARIABLE gcc_info_v)
string(REGEX MATCH "^(.+\nCOLLECT_GCC=)([^ \n]+)(\n.+)$" gcc_collect_valid ${gcc_info_v})
if(gcc_collect_valid)
string(REGEX REPLACE "^(.+\nCOLLECT_GCC=)([^ \n]+)(\n.+)$" "\\2" gcc_collect ${gcc_info_v})
endif()
string(REGEX MATCH "^(.+\nCOLLECT_LTO_WRAPPER=)([^ \n]+/lto-wrapper)(\n.+)$" gcc_lto_wrapper_valid ${gcc_info_v})
if(gcc_lto_wrapper_valid)
string(REGEX REPLACE "^(.+\nCOLLECT_LTO_WRAPPER=)([^ \n]+/lto-wrapper)(\n.+)$" "\\2" gcc_lto_wrapper ${gcc_info_v})
endif()
set(gcc_suffix "")
if(gcc_collect_valid AND gcc_collect)
string(REGEX MATCH "^(.*cc)(-.+)$" gcc_suffix_valid ${gcc_collect})
if(gcc_suffix_valid)
string(REGEX MATCH "^(.*cc)(-.+)$" "\\2" gcc_suffix ${gcc_collect})
endif()
endif()
get_filename_component(gcc_dir ${CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER} DIRECTORY)
if(NOT CMAKE_GCC_AR)
find_program(CMAKE_GCC_AR NAMES gcc${gcc_suffix}-ar gcc-ar${gcc_suffix} PATHS ${gcc_dir} NO_DEFAULT_PATH)
endif()
if(NOT CMAKE_GCC_NM)
find_program(CMAKE_GCC_NM NAMES gcc${gcc_suffix}-nm gcc-nm${gcc_suffix} PATHS ${gcc_dir} NO_DEFAULT_PATH)
endif()
if(NOT CMAKE_GCC_RANLIB)
find_program(CMAKE_GCC_RANLIB NAMES gcc${gcc_suffix}-ranlib gcc-ranlib${gcc_suffix} PATHS ${gcc_dir} NO_DEFAULT_PATH)
endif()
unset(gcc_dir)
unset(gcc_suffix_valid)
unset(gcc_suffix)
unset(gcc_lto_wrapper_valid)
unset(gcc_collect_valid)
unset(gcc_collect)
unset(gcc_info_v)
endif()
if(CMAKE_GCC_AR AND CMAKE_GCC_NM AND CMAKE_GCC_RANLIB AND gcc_lto_wrapper)
message(STATUS "Found GCC's LTO toolset: ${gcc_lto_wrapper}, ${CMAKE_GCC_AR}, ${CMAKE_GCC_RANLIB}")
set(GCC_LTO_CFLAGS "-flto -fno-fat-lto-objects -fuse-linker-plugin")
set(GCC_LTO_AVAILABLE TRUE)
message(STATUS "Link-Time Optimization by GCC is available")
else()
set(GCC_LTO_AVAILABLE FALSE)
message(STATUS "Link-Time Optimization by GCC is NOT available")
endif()
unset(gcc_lto_wrapper)
endif()
# check for LTO by MSVC
if(MSVC)
if(NOT MSVC_VERSION LESS 1600)
set(MSVC_LTO_AVAILABLE TRUE)
message(STATUS "Link-Time Optimization by MSVC is available")
else()
set(MSVC_LTO_AVAILABLE FALSE)
message(STATUS "Link-Time Optimization by MSVC is NOT available")
endif()
endif()
# Check for LTO support by CLANG
if(CMAKE_COMPILER_IS_CLANG)
if(NOT CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER_VERSION VERSION_LESS 3.5)
execute_process(COMMAND ${CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER} -print-search-dirs
OUTPUT_VARIABLE clang_search_dirs)
unset(clang_bindir)
unset(clang_libdir)
string(REGEX MATCH "^(.*programs: =)([^:]*:)*([^:]+/llvm[-.0-9]+/bin[^:]*)(:[^:]*)*(\n.+)$" clang_bindir_valid ${clang_search_dirs})
if(clang_bindir_valid)
string(REGEX REPLACE "^(.*programs: =)([^:]*:)*([^:]+/llvm[-.0-9]+/bin[^:]*)(:[^:]*)*(\n.+)$" "\\3" clang_bindir ${clang_search_dirs})
get_filename_component(clang_libdir "${clang_bindir}/../lib" REALPATH)
if(clang_libdir)
message(STATUS "Found CLANG/LLVM directories: ${clang_bindir}, ${clang_libdir}")
endif()
endif()
if(NOT (clang_bindir AND clang_libdir))
message(STATUS "Could NOT find CLANG/LLVM directories (bin and/or lib).")
endif()
if(NOT CMAKE_CLANG_LD AND clang_bindir)
find_program(CMAKE_CLANG_LD NAMES llvm-link link llvm-ld ld PATHS ${clang_bindir} NO_DEFAULT_PATH)
endif()
if(NOT CMAKE_CLANG_AR AND clang_bindir)
find_program(CMAKE_CLANG_AR NAMES llvm-ar ar PATHS ${clang_bindir} NO_DEFAULT_PATH)
endif()
if(NOT CMAKE_CLANG_NM AND clang_bindir)
find_program(CMAKE_CLANG_NM NAMES llvm-nm nm PATHS ${clang_bindir} NO_DEFAULT_PATH)
endif()
if(NOT CMAKE_CLANG_RANLIB AND clang_bindir)
find_program(CMAKE_CLANG_RANLIB NAMES llvm-ranlib ranlib PATHS ${clang_bindir} NO_DEFAULT_PATH)
endif()
set(clang_lto_plugin_name "LLVMgold${CMAKE_SHARED_LIBRARY_SUFFIX}")
if(NOT CMAKE_LD_GOLD AND clang_bindir)
find_program(CMAKE_LD_GOLD NAMES ld.gold PATHS)
endif()
if(NOT CLANG_LTO_PLUGIN AND clang_libdir)
find_file(CLANG_LTO_PLUGIN ${clang_lto_plugin_name} PATH ${clang_libdir} NO_DEFAULT_PATH)
endif()
if(CLANG_LTO_PLUGIN)
message(STATUS "Found CLANG/LLVM's plugin for LTO: ${CLANG_LTO_PLUGIN}")
else()
message(STATUS "Could NOT find CLANG/LLVM's plugin (${clang_lto_plugin_name}) for LTO.")
endif()
if(CMAKE_CLANG_LD AND CMAKE_CLANG_AR AND CMAKE_CLANG_NM AND CMAKE_CLANG_RANLIB)
message(STATUS "Found CLANG/LLVM's binutils for LTO: ${CMAKE_CLANG_AR}, ${CMAKE_CLANG_RANLIB}")
else()
message(STATUS "Could NOT find CLANG/LLVM's binutils (ar, ranlib, nm) for LTO.")
endif()
unset(clang_lto_plugin_name)
unset(clang_libdir)
unset(clang_bindir_valid)
unset(clang_bindir)
unset(clang_search_dirs)
endif()
if((CLANG_LTO_PLUGIN AND CMAKE_LD_GOLD) AND
(CMAKE_CLANG_LD AND CMAKE_CLANG_AR AND CMAKE_CLANG_NM AND CMAKE_CLANG_RANLIB))
set(CLANG_LTO_AVAILABLE TRUE)
message(STATUS "Link-Time Optimization by CLANG/LLVM is available")
elseif(CMAKE_TOOLCHAIN_FILE AND NOT CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER_VERSION VERSION_LESS 7.0)
set(CLANG_LTO_AVAILABLE TRUE)
if (NOT CMAKE_CLANG_AR)
set(CMAKE_CLANG_AR ${CMAKE_AR})
endif()
if (NOT CMAKE_CLANG_NM)
set(CMAKE_CLANG_NM ${CMAKE_NM})
endif()
if (NOT CMAKE_CLANG_RANLIB)
set(CMAKE_CLANG_RANLIB ${CMAKE_RANLIB })
endif()
message(STATUS "Assume Link-Time Optimization by CLANG/LLVM is available via ${CMAKE_TOOLCHAIN_FILE}")
else()
set(CLANG_LTO_AVAILABLE FALSE)
message(STATUS "Link-Time Optimization by CLANG/LLVM is NOT available")
endif()
endif()
# Perform build type specific configuration.
option(ENABLE_BACKTRACE "Enable output of fiber backtrace information in 'show
fiber' administrative command. Only works on x86 architectures, if compiled
with gcc. If GNU binutils and binutils-dev libraries are installed, backtrace
is output with resolved function (symbol) names. Otherwise only frame
addresses are printed." OFF)
set(HAVE_BFD False)
if(ENABLE_BACKTRACE)
if(NOT (X86_32 OR X86_64) OR NOT CMAKE_COMPILER_IS_GNU${CMAKE_PRIMARY_LANG})
# We only know this option to work with gcc
message(FATAL_ERROR "ENABLE_BACKTRACE option is set but the system
is not x86 based (${CMAKE_SYSTEM_PROCESSOR}) or the compiler
is not GNU GCC (${CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER}).")
endif()
# Use GNU bfd if present.
find_library(BFD_LIBRARY NAMES libbfd.a)
if(BFD_LIBRARY)
check_library_exists(${BFD_LIBRARY} bfd_init "" HAVE_BFD_LIB)
endif()
find_library(IBERTY_LIBRARY NAMES libiberty.a)
if(IBERTY_LIBRARY)
check_library_exists(${IBERTY_LIBRARY} cplus_demangle "" HAVE_IBERTY_LIB)
endif()
set(CMAKE_REQUIRED_DEFINITIONS -DPACKAGE=${PACKAGE} -DPACKAGE_VERSION=${PACKAGE_VERSION})
check_include_files(bfd.h HAVE_BFD_H)
set(CMAKE_REQUIRED_DEFINITIONS)
find_package(ZLIB)
if(HAVE_BFD_LIB AND HAVE_BFD_H AND HAVE_IBERTY_LIB AND ZLIB_FOUND)
set(HAVE_BFD ON)
set(BFD_LIBRARIES ${BFD_LIBRARY} ${IBERTY_LIBRARY} ${ZLIB_LIBRARIES})
find_package_message(BFD_LIBRARIES "Found libbfd and dependencies"
${BFD_LIBRARIES})
if(TARGET_OS_FREEBSD AND NOT TARGET_OS_DEBIAN_FREEBSD)
set(BFD_LIBRARIES ${BFD_LIBRARIES} iconv)
endif()
endif()
endif()
macro(setup_compile_flags)
# LY: save initial C/CXX flags
if(NOT INITIAL_CMAKE_FLAGS_SAVED)
if(MSVC)
string(REGEX REPLACE "^(.*)(/EHsc)( *)(.*)$" "\\1/EHs\\3\\4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endif()
set(INITIAL_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "Initial CMake's flags" FORCE)
set(INITIAL_CMAKE_C_FLAGS ${CMAKE_C_FLAGS} CACHE STRING "Initial CMake's flags" FORCE)
set(INITIAL_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} CACHE STRING "Initial CMake's flags" FORCE)
set(INITIAL_CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} CACHE STRING "Initial CMake's flags" FORCE)
set(INITIAL_CMAKE_STATIC_LINKER_FLAGS ${CMAKE_STATIC_LINKER_FLAGS} CACHE STRING "Initial CMake's flags" FORCE)
set(INITIAL_CMAKE_MODULE_LINKER_FLAGS ${CMAKE_MODULE_LINKER_FLAGS} CACHE STRING "Initial CMake's flags" FORCE)
set(INITIAL_CMAKE_FLAGS_SAVED TRUE CACHE INTERNAL "State of initial CMake's flags" FORCE)
endif()
# LY: reset C/CXX flags
set(CXX_FLAGS ${INITIAL_CMAKE_CXX_FLAGS})
set(C_FLAGS ${INITIAL_CMAKE_C_FLAGS})
set(EXE_LINKER_FLAGS ${INITIAL_CMAKE_EXE_LINKER_FLAGS})
set(SHARED_LINKER_FLAGS ${INITIAL_CMAKE_SHARED_LINKER_FLAGS})
set(STATIC_LINKER_FLAGS ${INITIAL_CMAKE_STATIC_LINKER_FLAGS})
set(MODULE_LINKER_FLAGS ${INITIAL_CMAKE_MODULE_LINKER_FLAGS})
if(CC_HAS_FEXCEPTIONS)
add_compile_flags("C;CXX" "-fexceptions")
endif()
if(CC_HAS_FCXX_EXCEPTIONS)
add_compile_flags("CXX" "-fcxx-exceptions -frtti")
endif()
# In C a global variable without a storage specifier (static/extern) and
# without an initialiser is called a tentative definition. The
# language permits multiple tentative definitions in the single
# translation unit; i.e. int foo; int foo; is perfectly ok. GNU
# toolchain goes even further, allowing multiple tentative definitions
# in *different* translation units. Internally, variables introduced via
# tentative definitions are implemented as common symbols. Linker
# permits multiple definitions if they are common symbols, and it picks
# one arbitrarily for inclusion in the binary being linked.
#
# -fno-common forces GNU toolchain to behave in a more
# standard-conformant way in respect to tentative definitions and it
# prevents common symbols generation. Since we are a cross-platform
# project it really makes sense. There are toolchains that dont
# implement GNU style handling of the tentative definitions and there
# are platforms lacking proper support for common symbols (osx).
if(CC_HAS_FNO_COMMON)
add_compile_flags("C;CXX" "-fno-common")
endif()
if(CC_HAS_GGDB)
add_compile_flags("C;CXX" "-ggdb")
endif()
if(CC_HAS_WNO_UNKNOWN_PRAGMAS AND NOT HAVE_OPENMP)
add_compile_flags("C;CXX" -Wno-unknown-pragmas)
endif()
if(CC_HAS_SECTIONS)
add_compile_flags("C;CXX" -ffunction-sections -fdata-sections)
elseif(MSVC)
add_compile_flags("C;CXX" /Gy)
endif()
# We must set -fno-omit-frame-pointer here, since we rely
# on frame pointer when getting a backtrace, and it must
# be used consistently across all object files.
# The same reasoning applies to -fno-stack-protector switch.
if(ENABLE_BACKTRACE)
if(CC_HAS_FNO_OMIT_FRAME_POINTER)
add_compile_flags("C;CXX" "-fno-omit-frame-pointer")
endif()
endif()
if(MSVC)
if (MSVC_VERSION LESS 1900)
message(FATAL_ERROR "At least \"Microsoft C/C++ Compiler\" version 19.0.24234.1 (Visual Studio 2015 Update 3) is required.")
endif()
add_compile_flags("CXX" "/Zc:__cplusplus")
add_compile_flags("C;CXX" "/W4")
add_compile_flags("C;CXX" "/utf-8")
else()
if(CC_HAS_WALL)
add_compile_flags("C;CXX" "-Wall")
endif()
if(CC_HAS_WEXTRA)
add_compile_flags("C;CXX" "-Wextra")
endif()
endif()
if(CMAKE_COMPILER_IS_GNU${CMAKE_PRIMARY_LANG}
AND CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER_VERSION VERSION_LESS 5)
# G++ bug. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31488
add_compile_flags("CXX" "-Wno-invalid-offsetof")
endif()
add_definitions("-D__STDC_FORMAT_MACROS=1")
add_definitions("-D__STDC_LIMIT_MACROS=1")
add_definitions("-D__STDC_CONSTANT_MACROS=1")
add_definitions("-D_HAS_EXCEPTIONS=1")
# Only add -Werror if it's a debug build, done by developers.
# Release builds should not cause extra trouble.
if(CC_HAS_WERROR AND (CI OR CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE STREQUAL "Debug"))
if(MSVC)
add_compile_flags("C;CXX" "/WX")
elseif(CMAKE_COMPILER_IS_CLANG)
if (NOT CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER_VERSION VERSION_LESS 6)
add_compile_flags("C;CXX" "-Werror")
endif()
elseif(CMAKE_COMPILER_IS_GNUCC)
if (NOT CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER_VERSION VERSION_LESS 6)
add_compile_flags("C;CXX" "-Werror")
endif()
else()
add_compile_flags("C;CXX" "-Werror")
endif()
endif()
if(HAVE_OPENMP)
add_compile_flags("C;CXX" "-fopenmp")
endif()
if (ENABLE_ASAN)
add_compile_flags("C;CXX" -fsanitize=address)
endif()
if(ENABLE_GCOV)
if(NOT HAVE_GCOV)
message(FATAL_ERROR
"ENABLE_GCOV option requested but gcov library is not found")
endif()
add_compile_flags("C;CXX" "-fprofile-arcs" "-ftest-coverage")
set(EXE_LINKER_FLAGS "${EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
set(SHARED_LINKER_FLAGS "${SHARED_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
set(MODULE_LINKER_FLAGS "${MODULE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
# add_library(gcov SHARED IMPORTED)
endif()
if(ENABLE_GPROF)
add_compile_flags("C;CXX" "-pg")
endif()
if(CMAKE_COMPILER_IS_GNUCC AND LTO_ENABLED)
add_compile_flags("C;CXX" ${GCC_LTO_CFLAGS})
set(EXE_LINKER_FLAGS "${EXE_LINKER_FLAGS} ${GCC_LTO_CFLAGS} -fverbose-asm -fwhole-program")
set(SHARED_LINKER_FLAGS "${SHARED_LINKER_FLAGS} ${GCC_LTO_CFLAGS} -fverbose-asm")
set(MODULE_LINKER_FLAGS "${MODULE_LINKER_FLAGS} ${GCC_LTO_CFLAGS} -fverbose-asm")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
# Pass the same optimization flags to the linker
set(compile_flags "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPERCASE}}")
set(EXE_LINKER_FLAGS "${EXE_LINKER_FLAGS} ${compile_flags}")
set(SHARED_LINKER_FLAGS "${SHARED_LINKER_FLAGS} ${compile_flags}")
set(MODULE_LINKER_FLAGS "${MODULE_LINKER_FLAGS} ${compile_flags}")
unset(compile_flags)
else()
add_compile_flags("CXX" "-flto-odr-type-merging")
endif()
endif()
if(MSVC AND LTO_ENABLED)
add_compile_flags("C;CXX" "/GL")
foreach(linkmode IN ITEMS EXE SHARED STATIC MODULE)
set(${linkmode}_LINKER_FLAGS "${${linkmode}_LINKER_FLAGS} /LTCG")
string(REGEX REPLACE "^(.*)(/INCREMENTAL:NO *)(.*)$" "\\1\\3" ${linkmode}_LINKER_FLAGS "${${linkmode}_LINKER_FLAGS}")
string(REGEX REPLACE "^(.*)(/INCREMENTAL:YES *)(.*)$" "\\1\\3" ${linkmode}_LINKER_FLAGS "${${linkmode}_LINKER_FLAGS}")
string(REGEX REPLACE "^(.*)(/INCREMENTAL *)(.*)$" "\\1\\3" ${linkmode}_LINKER_FLAGS "${${linkmode}_LINKER_FLAGS}")
string(STRIP "${${linkmode}_LINKER_FLAGS}" ${linkmode}_LINKER_FLAGS)
foreach(config IN LISTS CMAKE_CONFIGURATION_TYPES ITEMS Release MinSizeRel RelWithDebInfo Debug)
string(TOUPPER "${config}" config_uppercase)
if(DEFINED "CMAKE_${linkmode}_LINKER_FLAGS_${config_uppercase}")
string(REGEX REPLACE "^(.*)(/INCREMENTAL:NO *)(.*)$" "\\1\\3" altered_flags "${CMAKE_${linkmode}_LINKER_FLAGS_${config_uppercase}}")
string(REGEX REPLACE "^(.*)(/INCREMENTAL:YES *)(.*)$" "\\1\\3" altered_flags "${altered_flags}")
string(REGEX REPLACE "^(.*)(/INCREMENTAL *)(.*)$" "\\1\\3" altered_flags "${altered_flags}")
string(STRIP "${altered_flags}" altered_flags)
if(NOT "${altered_flags}" STREQUAL "${CMAKE_${linkmode}_LINKER_FLAGS_${config_uppercase}}")
set(CMAKE_${linkmode}_LINKER_FLAGS_${config_uppercase} "${altered_flags}" CACHE STRING "Altered: '/INCREMENTAL' removed for LTO" FORCE)
endif()
endif()
endforeach(config)
endforeach(linkmode)
unset(linkmode)
foreach(config IN LISTS CMAKE_CONFIGURATION_TYPES ITEMS Release MinSizeRel RelWithDebInfo)
foreach(lang IN ITEMS C CXX)
string(TOUPPER "${config}" config_uppercase)
if(DEFINED "CMAKE_${lang}_FLAGS_${config_uppercase}")
string(REPLACE "/O2" "/Ox" altered_flags "${CMAKE_${lang}_FLAGS_${config_uppercase}}")
if(NOT "${altered_flags}" STREQUAL "${CMAKE_${lang}_FLAGS_${config_uppercase}}")
set(CMAKE_${lang}_FLAGS_${config_uppercase} "${altered_flags}" CACHE STRING "Altered: '/O2' replaced by '/Ox' for LTO" FORCE)
endif()
endif()
unset(config_uppercase)
endforeach(lang)
endforeach(config)
unset(altered_flags)
unset(lang)
unset(config)
endif()
if(CMAKE_COMPILER_IS_CLANG AND OSX_ARCHITECTURES)
set(EXE_LINKER_FLAGS "${EXE_LINKER_FLAGS} -Wl,-keep_dwarf_unwind")
set(SHARED_LINKER_FLAGS "${SHARED_LINKER_FLAGS} -Wl,-keep_dwarf_unwind")
set(MODULE_LINKER_FLAGS "${MODULE_LINKER_FLAGS} -Wl,-keep_dwarf_unwind")
endif()
if(CMAKE_COMPILER_IS_CLANG AND LTO_ENABLED)
if(CMAKE_${CMAKE_PRIMARY_LANG}_COMPILER_VERSION VERSION_LESS 3.9)
set(CLANG_LTO_FLAG "-flto")
else()
set(CLANG_LTO_FLAG "-flto=thin")
endif()
add_compile_flags("C;CXX" ${CLANG_LTO_FLAG})
set(EXE_LINKER_FLAGS "${EXE_LINKER_FLAGS} ${CLANG_LTO_FLAG} -fverbose-asm -fwhole-program")
set(SHARED_LINKER_FLAGS "${SHARED_LINKER_FLAGS} ${CLANG_LTO_FLAG} -fverbose-asm")
set(MODULE_LINKER_FLAGS "${MODULE_LINKER_FLAGS} ${CLANG_LTO_FLAG} -fverbose-asm")
endif()
# LY: push C/CXX flags into the cache
set(CMAKE_CXX_FLAGS ${CXX_FLAGS} CACHE STRING "Flags used by the C++ compiler during all build types" FORCE)
set(CMAKE_C_FLAGS ${C_FLAGS} CACHE STRING "Flags used by the C compiler during all build types" FORCE)
set(CMAKE_EXE_LINKER_FLAGS ${EXE_LINKER_FLAGS} CACHE STRING "Flags used by the linker" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS ${SHARED_LINKER_FLAGS} CACHE STRING "Flags used by the linker during the creation of dll's" FORCE)
set(CMAKE_STATIC_LINKER_FLAGS ${STATIC_LINKER_FLAGS} CACHE STRING "Flags used by the linker during the creation of static libraries" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS ${MODULE_LINKER_FLAGS} CACHE STRING "Flags used by the linker during the creation of modules" FORCE)
unset(CXX_FLAGS)
unset(C_FLAGS)
unset(EXE_LINKER_FLAGS)
unset(SHARED_LINKER_FLAGS)
unset(STATIC_LINKER_FLAGS)
unset(MODULE_LINKER_FLAGS)
endmacro(setup_compile_flags)
# determine library for for std::filesystem
set(LIBCXX_FILESYSTEM "")
if(CMAKE_COMPILER_IS_GNUCXX)
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
set(LIBCXX_FILESYSTEM "stdc++fs")
endif()
elseif (CMAKE_COMPILER_IS_CLANG)
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
set(LIBCXX_FILESYSTEM "c++experimental")
else()
set(LIBCXX_FILESYSTEM "stdc++fs")
endif()
endif()
cmake_policy(POP)

View file

@ -0,0 +1,45 @@
## Copyright (c) 2012-2019 Leonid Yuriev <leo@yuriev.ru>.
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##
cmake_minimum_required(VERSION 3.8.2)
cmake_policy(PUSH)
cmake_policy(VERSION 3.8.2)
include(CheckLibraryExists)
check_library_exists(gcov __gcov_flush "" HAVE_GCOV)
option(ENABLE_GCOV
"Enable integration with gcov, a code coverage program" OFF)
option(ENABLE_GPROF
"Enable integration with gprof, a performance analyzing tool" OFF)
if(CMAKE_CXX_COMPILER_LOADED)
include(CheckIncludeFileCXX)
check_include_file_cxx(valgrind/memcheck.h HAVE_VALGRIND_MEMCHECK_H)
else()
include(CheckIncludeFile)
check_include_file(valgrind/memcheck.h HAVE_VALGRIND_MEMCHECK_H)
endif()
option(MDBX_USE_VALGRIND "Enable integration with valgrind, a memory analyzing tool" OFF)
if(MDBX_USE_VALGRIND AND NOT HAVE_VALGRIND_MEMCHECK_H)
message(FATAL_ERROR "MDBX_USE_VALGRIND option is set but valgrind/memcheck.h is not found")
endif()
option(ENABLE_ASAN
"Enable AddressSanitizer, a fast memory error detector based on compiler instrumentation" OFF)
cmake_policy(POP)

View file

@ -0,0 +1,183 @@
## Copyright (c) 2012-2019 Leonid Yuriev <leo@yuriev.ru>.
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##
cmake_minimum_required(VERSION 3.8.2)
cmake_policy(PUSH)
cmake_policy(VERSION 3.8.2)
macro(add_compile_flags langs)
foreach(_lang ${langs})
string(REPLACE ";" " " _flags "${ARGN}")
if(CMAKE_CXX_COMPILER_LOADED AND _lang STREQUAL "CXX")
set("${_lang}_FLAGS" "${${_lang}_FLAGS} ${_flags}")
endif()
if(CMAKE_C_COMPILER_LOADED AND _lang STREQUAL "C")
set("${_lang}_FLAGS" "${${_lang}_FLAGS} ${_flags}")
endif()
endforeach()
unset(_lang)
unset(_flags)
endmacro(add_compile_flags)
macro(set_source_files_compile_flags)
foreach(file ${ARGN})
get_filename_component(_file_ext ${file} EXT)
set(_lang "")
if("${_file_ext}" STREQUAL ".m")
set(_lang OBJC)
# CMake believes that Objective C is a flavor of C++, not C,
# and uses g++ compiler for .m files.
# LANGUAGE property forces CMake to use CC for ${file}
set_source_files_properties(${file} PROPERTIES LANGUAGE C)
elseif("${_file_ext}" STREQUAL ".mm")
set(_lang OBJCXX)
endif()
if(_lang)
get_source_file_property(_flags ${file} COMPILE_FLAGS)
if("${_flags}" STREQUAL "NOTFOUND")
set(_flags "${CMAKE_${_lang}_FLAGS}")
else()
set(_flags "${_flags} ${CMAKE_${_lang}_FLAGS}")
endif()
# message(STATUS "Set (${file} ${_flags}")
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS
"${_flags}")
endif()
endforeach()
unset(_file_ext)
unset(_lang)
endmacro(set_source_files_compile_flags)
macro(fetch_version name version_file)
set(${name}_VERSION "")
set(${name}_GIT_DESCRIBE "")
set(${name}_GIT_TIMESTAMP "")
set(${name}_GIT_TREE "")
set(${name}_GIT_COMMIT "")
set(${name}_GIT_REVISION 0)
set(${name}_GIT_VERSION "")
if(GIT)
execute_process(COMMAND ${GIT} describe --tags --long --dirty=-dirty
OUTPUT_VARIABLE ${name}_GIT_DESCRIBE
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE rc)
if(rc OR "${name}_GIT_DESCRIBE" STREQUAL "")
message(FATAL_ERROR "Please fetch tags and/or install latest version of git ('describe --tags --long --dirty' failed)")
endif()
execute_process(COMMAND ${GIT} show --no-patch --format=%cI HEAD
OUTPUT_VARIABLE ${name}_GIT_TIMESTAMP
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE rc)
if(rc OR "${name}_GIT_TIMESTAMP" STREQUAL "%cI")
execute_process(COMMAND ${GIT} show --no-patch --format=%ci HEAD
OUTPUT_VARIABLE ${name}_GIT_TIMESTAMP
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE rc)
if(rc OR "${name}_GIT_TIMESTAMP" STREQUAL "%ci")
message(FATAL_ERROR "Please install latest version of git ('show --no-patch --format=%cI HEAD' failed)")
endif()
endif()
execute_process(COMMAND ${GIT} show --no-patch --format=%T HEAD
OUTPUT_VARIABLE ${name}_GIT_TREE
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE rc)
if(rc OR "${name}_GIT_TREE" STREQUAL "")
message(FATAL_ERROR "Please install latest version of git ('show --no-patch --format=%T HEAD' failed)")
endif()
execute_process(COMMAND ${GIT} show --no-patch --format=%H HEAD
OUTPUT_VARIABLE ${name}_GIT_COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE rc)
if(rc OR "${name}_GIT_COMMIT" STREQUAL "")
message(FATAL_ERROR "Please install latest version of git ('show --no-patch --format=%H HEAD' failed)")
endif()
execute_process(COMMAND ${GIT} rev-list --count --no-merges HEAD
OUTPUT_VARIABLE ${name}_GIT_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE rc)
if(rc OR "${name}_GIT_REVISION" STREQUAL "")
message(FATAL_ERROR "Please install latest version of git ('rev-list --count --no-merges HEAD' failed)")
endif()
string(REGEX MATCH "^(v)?([0-9]+)\\.([0-9]+)\\.([0-9]+)(.*)?" git_version_valid "${${name}_GIT_DESCRIBE}")
if(git_version_valid)
string(REGEX REPLACE "^(v)?([0-9]+)\\.([0-9]+)\\.([0-9]+)(.*)?" "\\2;\\3;\\4" ${name}_GIT_VERSION ${${name}_GIT_DESCRIBE})
else()
string(REGEX MATCH "^(v)?([0-9]+)\\.([0-9]+)(.*)?" git_version_valid "${${name}_GIT_DESCRIBE}")
if(git_version_valid)
string(REGEX REPLACE "^(v)?([0-9]+)\\.([0-9]+)(.*)?" "\\2;\\3;0" ${name}_GIT_VERSION ${${name}_GIT_DESCRIBE})
else()
message(AUTHOR_WARNING "Bad ${name} version \"${${name}_GIT_DESCRIBE}\"; falling back to 0.0.0 (have you made an initial release?)")
set(${name}_GIT_VERSION "0;0;0")
endif()
endif()
endif()
if(NOT ${name}_GIT_VERSION OR NOT ${name}_GIT_TIMESTAMP OR NOT ${name}_GIT_REVISION)
message(WARNING "Unable to retrive ${name} version from git.")
set(${name}_GIT_VERSION "0;0;0;0")
set(${name}_GIT_TIMESTAMP "")
set(${name}_GIT_REVISION 0)
# Try to get version from VERSION file
if(EXISTS "${version_file}")
file(STRINGS "${version_file}" ${name}_VERSION)
endif()
if(NOT ${name}_VERSION)
message(WARNING "Unable to retrive ${name} version from \"${version_file}\" file.")
set(${name}_VERSION_LIST ${${name}_GIT_VERSION})
string(REPLACE ";" "." ${name}_VERSION "${${name}_GIT_VERSION}")
else()
string(REPLACE "." ";" ${name}_VERSION_LIST ${${name}_VERSION})
endif()
else()
list(APPEND ${name}_GIT_VERSION ${${name}_GIT_REVISION})
set(${name}_VERSION_LIST ${${name}_GIT_VERSION})
string(REPLACE ";" "." ${name}_VERSION "${${name}_GIT_VERSION}")
endif()
list(GET ${name}_VERSION_LIST 0 "${name}_VERSION_MAJOR")
list(GET ${name}_VERSION_LIST 1 "${name}_VERSION_MINOR")
list(GET ${name}_VERSION_LIST 2 "${name}_VERSION_RELEASE")
list(GET ${name}_VERSION_LIST 3 "${name}_VERSION_REVISION")
set(${name}_VERSION_MAJOR ${${name}_VERSION_MAJOR} PARENT_SCOPE)
set(${name}_VERSION_MINOR ${${name}_VERSION_MINOR} PARENT_SCOPE)
set(${name}_VERSION_RELEASE ${${name}_VERSION_RELEASE} PARENT_SCOPE)
set(${name}_VERSION_REVISION ${${name}_VERSION_REVISION} PARENT_SCOPE)
set(${name}_VERSION ${${name}_VERSION} PARENT_SCOPE)
set(${name}_GIT_DESCRIBE ${${name}_GIT_DESCRIBE} PARENT_SCOPE)
set(${name}_GIT_TIMESTAMP ${${name}_GIT_TIMESTAMP} PARENT_SCOPE)
set(${name}_GIT_TREE ${${name}_GIT_TREE} PARENT_SCOPE)
set(${name}_GIT_COMMIT ${${name}_GIT_COMMIT} PARENT_SCOPE)
set(${name}_GIT_REVISION ${${name}_GIT_REVISION} PARENT_SCOPE)
set(${name}_GIT_VERSION ${${name}_GIT_VERSION} PARENT_SCOPE)
endmacro(fetch_version)
cmake_policy(POP)

View file

@ -0,0 +1,6 @@
set(TARGET mdbx_example)
project(${TARGET})
add_executable(${TARGET} example-mdbx.c)
target_link_libraries(${TARGET} mdbx)

View file

@ -0,0 +1 @@
See [example-mdbx.c](example-mdbx.c) as an example of using _libmdbx_, and do a line-by-line comparison of it with the [sample-bdb.txt](sample-bdb.txt) file.

View file

@ -0,0 +1,112 @@
/* MDBX usage examle
*
* Do a line-by-line comparison of this and sample-bdb.txt
*/
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>.
* Copyright 2017 Ilya Shipitsin <chipitsine@gmail.com>.
* Copyright 2012-2015 Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
#include "mdbx.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
int rc;
MDBX_env *env = NULL;
MDBX_dbi dbi = 0;
MDBX_val key, data;
MDBX_txn *txn = NULL;
MDBX_cursor *cursor = NULL;
char sval[32];
rc = mdbx_env_create(&env);
if (rc != MDBX_SUCCESS) {
fprintf(stderr, "mdbx_env_create: (%d) %s\n", rc, mdbx_strerror(rc));
goto bailout;
}
rc = mdbx_env_open(env, "./example-db",
MDBX_NOSUBDIR | MDBX_COALESCE | MDBX_LIFORECLAIM, 0664);
if (rc != MDBX_SUCCESS) {
fprintf(stderr, "mdbx_env_open: (%d) %s\n", rc, mdbx_strerror(rc));
goto bailout;
}
rc = mdbx_txn_begin(env, NULL, 0, &txn);
if (rc != MDBX_SUCCESS) {
fprintf(stderr, "mdbx_txn_begin: (%d) %s\n", rc, mdbx_strerror(rc));
goto bailout;
}
rc = mdbx_dbi_open(txn, NULL, 0, &dbi);
if (rc != MDBX_SUCCESS) {
fprintf(stderr, "mdbx_dbi_open: (%d) %s\n", rc, mdbx_strerror(rc));
goto bailout;
}
key.iov_len = sizeof(int);
key.iov_base = sval;
data.iov_len = sizeof(sval);
data.iov_base = sval;
sprintf(sval, "%03x %d foo bar", 32, 3141592);
rc = mdbx_put(txn, dbi, &key, &data, 0);
if (rc != MDBX_SUCCESS) {
fprintf(stderr, "mdbx_put: (%d) %s\n", rc, mdbx_strerror(rc));
goto bailout;
}
rc = mdbx_txn_commit(txn);
if (rc) {
fprintf(stderr, "mdbx_txn_commit: (%d) %s\n", rc, mdbx_strerror(rc));
goto bailout;
}
txn = NULL;
rc = mdbx_txn_begin(env, NULL, MDBX_RDONLY, &txn);
if (rc != MDBX_SUCCESS) {
fprintf(stderr, "mdbx_txn_begin: (%d) %s\n", rc, mdbx_strerror(rc));
goto bailout;
}
rc = mdbx_cursor_open(txn, dbi, &cursor);
if (rc != MDBX_SUCCESS) {
fprintf(stderr, "mdbx_cursor_open: (%d) %s\n", rc, mdbx_strerror(rc));
goto bailout;
}
int found = 0;
while ((rc = mdbx_cursor_get(cursor, &key, &data, MDBX_NEXT)) == 0) {
printf("key: %p %.*s, data: %p %.*s\n", key.iov_base, (int)key.iov_len,
(char *)key.iov_base, data.iov_base, (int)data.iov_len,
(char *)data.iov_base);
found += 1;
}
if (rc != MDBX_NOTFOUND || found == 0) {
fprintf(stderr, "mdbx_cursor_get: (%d) %s\n", rc, mdbx_strerror(rc));
goto bailout;
} else {
rc = MDBX_SUCCESS;
}
bailout:
if (cursor)
mdbx_cursor_close(cursor);
if (txn)
mdbx_txn_abort(txn);
if (dbi)
mdbx_dbi_close(env, dbi);
if (env)
mdbx_env_close(env);
return (rc != MDBX_SUCCESS) ? EXIT_FAILURE : EXIT_SUCCESS;
}

View file

@ -0,0 +1,77 @@
/* BerkeleyDB toy/sample
*
* Do a line-by-line comparison of this and example-mdbx.c
*/
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>.
* Copyright 2012-2015 Howard Chu, Symas Corp.
* Copyright 2015,2016 Peter-Service R&D LLC.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
#include <stdio.h>
#include <string.h>
#include <db.h>
int main(int argc,char * argv[])
{
int rc;
DB_ENV *env;
DB *dbi;
DBT key, data;
DB_TXN *txn;
DBC *cursor;
char sval[32], kval[32];
/* Note: Most error checking omitted for simplicity */
#define FLAGS (DB_INIT_LOCK|DB_INIT_LOG|DB_INIT_TXN|DB_INIT_MPOOL|DB_CREATE|DB_THREAD)
rc = db_env_create(&env, 0);
rc = env->open(env, "./testdb", FLAGS, 0664);
rc = db_create(&dbi, env, 0);
rc = env->txn_begin(env, NULL, &txn, 0);
rc = dbi->open(dbi, txn, "test.bdb", NULL, DB_BTREE, DB_CREATE, 0664);
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
key.size = sizeof(int);
key.data = sval;
data.size = sizeof(sval);
data.data = sval;
sprintf(sval, "%03x %d foo bar", 32, 3141592);
rc = dbi->put(dbi, txn, &key, &data, 0);
rc = txn->commit(txn, 0);
if (rc) {
fprintf(stderr, "txn->commit: (%d) %s\n", rc, db_strerror(rc));
goto leave;
}
rc = env->txn_begin(env, NULL, &txn, 0);
rc = dbi->cursor(dbi, txn, &cursor, 0);
key.flags = DB_DBT_USERMEM;
key.data = kval;
key.ulen = sizeof(kval);
data.flags = DB_DBT_USERMEM;
data.data = sval;
data.ulen = sizeof(sval);
while ((rc = cursor->c_get(cursor, &key, &data, DB_NEXT)) == 0) {
printf("key: %p %.*s, data: %p %.*s\n",
key.data, (int) key.size, (char *) key.data,
data.data, (int) data.size, (char *) data.data);
}
rc = cursor->c_close(cursor);
rc = txn->abort(txn);
leave:
rc = dbi->close(dbi, 0);
rc = env->close(env, 0);
return rc;
}

3497
contrib/db/libmdbx/mdbx.h Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,184 @@
cmake_minimum_required(VERSION 2.8.7)
set(TARGET mdbx)
project(${TARGET})
set(MDBX_VERSION_MAJOR 0)
set(MDBX_VERSION_MINOR 3)
set(MDBX_VERSION_RELEASE 1)
set(MDBX_VERSION_REVISION 0)
set(MDBX_VERSION_STRING ${MDBX_VERSION_MAJOR}.${MDBX_VERSION_MINOR}.${MDBX_VERSION_RELEASE})
enable_language(C)
enable_language(CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED on)
add_definitions(-DNDEBUG=1 -DMDBX_DEBUG=0 -DLIBMDBX_EXPORTS=1 -D_GNU_SOURCE=1)
find_package(Threads REQUIRED)
get_directory_property(hasParent PARENT_DIRECTORY)
if(hasParent)
set(STANDALONE_BUILD 0)
else()
set(STANDALONE_BUILD 1)
enable_testing()
if (CMAKE_C_COMPILER_ID MATCHES GNU)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpointer-arith")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-compare")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat-security")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wwrite-strings")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmax-errors=20")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter -Wunused-function -Wunused-variable -Wunused-value -Wmissing-declarations")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-qual")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-strict-aliasing")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finline-functions-called-once")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-packed-bitfield-compat")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g3")
endif()
if (COVERAGE)
if (NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
message(FATAL_ERROR "Coverage requires -DCMAKE_BUILD_TYPE=Debug Current value=${CMAKE_BUILD_TYPE}")
endif()
message(STATUS "Setting coverage compiler flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -ggdb3 -O0 --coverage -fprofile-arcs -ftest-coverage")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -ggdb3 -O0 --coverage -fprofile-arcs -ftest-coverage")
add_definitions(-DCOVERAGE_TEST)
endif()
if (NOT TRAVIS)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fsanitize=leak -fstack-protector-strong -static-libasan")
endif()
endif()
set(${TARGET}_SRC
mdbx.h
src/bits.h
src/defs.h
src/lck-linux.c
src/mdbx.c
src/osal.c
src/osal.h
src/version.c
)
add_library(${TARGET}_STATIC STATIC
${${TARGET}_SRC}
)
add_library(${TARGET} ALIAS ${TARGET}_STATIC)
add_library(${TARGET}_SHARED SHARED
${${TARGET}_SRC}
)
set_target_properties(${TARGET}_SHARED PROPERTIES
VERSION ${MDBX_VERSION_STRING}
SOVERSION ${MDBX_VERSION_MAJOR}.${MDBX_VERSION_MINOR}
OUTPUT_NAME ${TARGET}
CLEAN_DIRECT_OUTPUT 1
)
set_target_properties(${TARGET}_STATIC PROPERTIES
VERSION ${MDBX_VERSION_STRING}
SOVERSION ${MDBX_VERSION_MAJOR}.${MDBX_VERSION_MINOR}
OUTPUT_NAME ${TARGET}
CLEAN_DIRECT_OUTPUT 1
)
target_include_directories(${TARGET}_STATIC PUBLIC
${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${TARGET}_SHARED PUBLIC
${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(${TARGET}_STATIC ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries(${TARGET}_SHARED ${CMAKE_THREAD_LIBS_INIT})
if(UNIX AND NOT APPLE)
target_link_libraries(${TARGET}_STATIC rt)
target_link_libraries(${TARGET}_SHARED rt)
endif()
#install(TARGETS ${TARGET}_STATIC DESTINATION ${CMAKE_INSTALL_PREFIX}/lib64 COMPONENT mdbx)
#install(TARGETS ${TARGET}_SHARED DESTINATION ${CMAKE_INSTALL_PREFIX}/lib64 COMPONENT mdbx)
#install(FILES mdbx.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include COMPONENT mdbx-devel)
add_subdirectory(src/tools)
add_subdirectory(test)
add_subdirectory(test/pcrf)
add_subdirectory(tutorial)
##############################################################################
set(CPACK_GENERATOR "RPM")
set(CPACK_RPM_COMPONENT_INSTALL ON)
# Version
if (NOT "$ENV{BUILD_NUMBER}" STREQUAL "")
set(CPACK_PACKAGE_RELEASE $ENV{BUILD_NUMBER})
else()
if (NOT "$ENV{CI_PIPELINE_ID}" STREQUAL "")
set(CPACK_PACKAGE_RELEASE $ENV{CI_PIPELINE_ID})
else()
set(CPACK_PACKAGE_RELEASE 1)
endif()
endif()
set(CPACK_RPM_PACKAGE_RELEASE ${CPACK_PACKAGE_RELEASE})
set(CPACK_PACKAGE_VERSION ${MDBX_VERSION_STRING})
set(CPACK_PACKAGE_VERSION_FULL ${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE})
set(CPACK_RPM_mdbx-devel_PACKAGE_REQUIRES "mdbx = ${CPACK_PACKAGE_VERSION}")
set(CPACK_RPM_SPEC_INSTALL_POST "/bin/true")
set(CPACK_RPM_mdbx_PACKAGE_NAME mdbx)
set(CPACK_RPM_mdbx-devel_PACKAGE_NAME mdbx-devel)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The revised and extended descendant of Symas LMDB")
set(CPACK_PACKAGE_VENDOR "???")
set(CPACK_PACKAGE_CONTACT "Vladimir Romanov")
set(CPACK_PACKAGE_RELOCATABLE false)
set(CPACK_RPM_PACKAGE_ARCHITECTURE "x86_64")
set(CPACK_RPM_PACKAGE_REQUIRES "")
set(CPACK_RPM_PACKAGE_GROUP "Applications/Database")
set(CPACK_RPM_mdbx_FILE_NAME "${CPACK_RPM_mdbx_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_FULL}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
set(CPACK_RPM_mdbx-devel_FILE_NAME "${CPACK_RPM_mdbx-devel_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_FULL}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
/usr/local
/usr/local/bin
/usr/local/lib64
/usr/local/include
/usr/local/man
/usr/local/man/man1
)
include(CPack)

View file

@ -0,0 +1,18 @@
#!/bin/bash
set -e
CONFIG=$1
if [[ -z "${CONFIG}" ]]; then
CONFIG=Debug
fi
if [[ -r /opt/rh/devtoolset-6/enable ]]; then
source /opt/rh/devtoolset-6/enable
fi
#rm -f -r build || true
mkdir -p cmake-build-${CONFIG}
pushd cmake-build-${CONFIG} &> /dev/null
if [[ ! -r Makefile ]]; then
cmake .. -DCMAKE_BUILD_TYPE=${CONFIG}
fi
make -j8 || exit 1
popd &> /dev/null

View file

@ -0,0 +1,25 @@
#!/bin/bash
set -e
CONFIG=$1
if [[ -z "${CONFIG}" ]]; then
CONFIG=Debug
fi
DIRNAME=`dirname ${BASH_SOURCE[0]}`
DIRNAME=`readlink --canonicalize ${DIRNAME}`
if [[ -r /opt/rh/devtoolset-6/enable ]]; then
source /opt/rh/devtoolset-6/enable
fi
mkdir -p cmake-build-${CONFIG}
pushd cmake-build-${CONFIG} &> /dev/null
if [[ ! -r Makefile ]]; then
cmake .. -DCMAKE_BUILD_TYPE=${CONFIG}
fi
rm -f *.rpm
make -j8 package || exit 1
rm -f *-Unspecified.rpm
popd &> /dev/null

View file

@ -0,0 +1,170 @@
##
## Copyright 2019 Leonid Yuriev <leo@yuriev.ru>
## and other libmdbx authors: please see AUTHORS file.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
##
# Get version
fetch_version(MDBX "${CMAKE_CURRENT_SOURCE_DIR}/../VERSION")
message(STATUS "libmdbx version is ${MDBX_VERSION}")
if(MDBX_ALLOY_MODE)
set(LIBMDBX_SOURCES alloy.c)
else()
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
set(LIBMDBX_OSAL windows)
else()
set(LIBMDBX_OSAL posix)
endif()
set(LIBMDBX_SOURCES
elements/defs.h elements/internals.h elements/osal.h
elements/core.c elements/osal.c elements/lck-${LIBMDBX_OSAL}.c)
endif()
list(APPEND LIBMDBX_SOURCES ../mdbx.h
"${CMAKE_CURRENT_SOURCE_DIR}/elements/version.c"
"${CMAKE_CURRENT_SOURCE_DIR}/elements/config.h")
if(MDBX_BUILD_SHARED_LIBRARY)
add_library(mdbx SHARED ${LIBMDBX_SOURCES})
target_compile_definitions(mdbx PRIVATE LIBMDBX_EXPORTS INTERFACE LIBMDBX_IMPORTS)
set(MDBX_LIBDEP_MODE PRIVATE)
else()
add_library(mdbx STATIC ${LIBMDBX_SOURCES})
set(MDBX_LIBDEP_MODE PUBLIC)
endif()
if(CC_HAS_VISIBILITY AND (LTO_ENABLED OR INTERPROCEDURAL_OPTIMIZATION))
set_target_properties(mdbx PROPERTIES LINK_FLAGS "-fvisibility=hidden")
endif()
set_target_properties(mdbx PROPERTIES
INTERPROCEDURAL_OPTIMIZATION $<BOOL:${INTERPROCEDURAL_OPTIMIZATION}>
C_STANDARD ${MDBX_C_STANDARD} C_STANDARD_REQUIRED ON
PUBLIC_HEADER "../mdbx.h")
if(CC_HAS_FASTMATH)
target_compile_options(mdbx PRIVATE "-ffast-math")
endif()
if(BUILD_FOR_NATIVE_CPU AND CC_HAS_ARCH_NATIVE)
target_compile_options(mdbx PUBLIC "-march=native")
endif()
if(CC_HAS_VISIBILITY)
target_compile_options(mdbx PRIVATE "-fvisibility=hidden")
endif()
#install(TARGETS mdbx
# LIBRARY DESTINATION lib COMPONENT runtime
# RUNTIME DESTINATION bin COMPONENT runtime
# ARCHIVE DESTINATION lib/static COMPONENT devel
# PUBLIC_HEADER DESTINATION include
# INCLUDES DESTINATION include COMPONENT devel)
################################################################################
#
# library build info (used in library version output)
#
set(MDBX_BUILD_FLAGS "")
# append cmake's build-type flags and defines
if(NOT CMAKE_CONFIGURATION_TYPES)
list(APPEND MDBX_BUILD_FLAGS ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPERCASE}})
list(APPEND MDBX_BUILD_FLAGS ${CMAKE_C_DEFINES_${CMAKE_BUILD_TYPE_UPPERCASE}})
endif()
# append linker dll's options
if(LIBMDBX_TYPE STREQUAL "SHARED")
list(APPEND MDBX_BUILD_FLAGS ${CMAKE_SHARED_LINKER_FLAGS})
endif()
# get definitions
get_target_property(defs_list mdbx COMPILE_DEFINITIONS)
if(defs_list)
list(APPEND MDBX_BUILD_FLAGS ${defs_list})
endif()
# get target compile options
get_target_property(options_list mdbx COMPILE_OPTIONS)
if(options_list)
list(APPEND MDBX_BUILD_FLAGS ${options_list})
endif()
list(REMOVE_DUPLICATES MDBX_BUILD_FLAGS)
string(REPLACE ";" " " MDBX_BUILD_FLAGS "${MDBX_BUILD_FLAGS}")
if(CMAKE_CONFIGURATION_TYPES)
# add dynamic part via per-configuration define
message(STATUS "MDBX Compile Flags: ${MDBX_BUILD_FLAGS} <AND CONFIGURATION DEPENDENT>")
add_definitions(-DMDBX_BUILD_FLAGS_CONFIG="$<$<CONFIG:Debug>:${CMAKE_C_FLAGS_DEBUG} ${CMAKE_C_DEFINES_DEBUG}>$<$<CONFIG:Release>:${CMAKE_C_FLAGS_RELEASE} ${CMAKE_C_DEFINES_RELEASE}>$<$<CONFIG:RelWithDebInfo>:${CMAKE_C_FLAGS_RELWITHDEBINFO} ${CMAKE_C_DEFINES_RELWITHDEBINFO}>$<$<CONFIG:MinSizeRel>:${CMAKE_C_FLAGS_MINSIZEREL} ${CMAKE_C_DEFINES_MINSIZEREL}>")
else()
message(STATUS "MDBX Compile Flags: ${MDBX_BUILD_FLAGS}")
endif()
# get compiler info
execute_process(COMMAND sh -c "${CMAKE_C_COMPILER} --version | head -1"
OUTPUT_VARIABLE MDBX_BUILD_COMPILER
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
RESULT_VARIABLE rc)
if(rc OR NOT MDBX_BUILD_COMPILER)
string(STRIP "${CMAKE_C_COMPILER_ID}-${CMAKE_C_COMPILER_VERSION}" MDBX_BUILD_COMPILER)
endif()
# make a build-target triplet
if(CMAKE_C_COMPILER_TARGET)
set(MDBX_BUILD_TARGET "${CMAKE_C_COMPILER_TARGET}")
elseif(CMAKE_C_PLATFORM_ID AND NOT CMAKE_C_PLATFORM_ID STREQUAL CMAKE_SYSTEM_NAME)
string(STRIP "${CMAKE_C_PLATFORM_ID}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
elseif(CMAKE_LIBRARY_ARCHITECTURE)
string(STRIP "${CMAKE_LIBRARY_ARCHITECTURE}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
elseif(CMAKE_GENERATOR_PLATFORM AND NOT CMAKE_C_PLATFORM_ID STREQUAL CMAKE_SYSTEM_NAME)
string(STRIP "${CMAKE_GENERATOR_PLATFORM}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
elseif(CMAKE_SYSTEM_ARCH)
string(STRIP "${CMAKE_SYSTEM_ARCH}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
else()
string(STRIP "${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}" MDBX_BUILD_TARGET)
endif()
if(CMAKE_CONFIGURATION_TYPES)
add_definitions(-DMDBX_BUILD_CONFIG="$<CONFIG>")
else()
set(MDBX_BUILD_CONFIG ${CMAKE_BUILD_TYPE})
endif()
# options
string(TIMESTAMP MDBX_BUILD_TIMESTAMP UTC)
set(options VERSION C_COMPILER CXX_COMPILER)
foreach(item IN LISTS options)
if(DEFINED ${item})
set(value "${${item}}")
elseif(DEFINED MDBX_${item})
set(item MDBX_${item})
set(value "${${item}}")
elseif(DEFINED CMAKE_${item})
set(item CMAKE_${item})
set(value "${${item}}")
else()
set(value "undefined")
endif()
message(STATUS "${item}: ${value}")
endforeach(item)
# generate version and config files
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/elements/version.c.in"
"${CMAKE_CURRENT_SOURCE_DIR}/elements/version.c" ESCAPE_QUOTES)
file(SHA256 "${CMAKE_CURRENT_SOURCE_DIR}/elements/version.c" MDBX_SOURCERY_DIGEST)
string(MAKE_C_IDENTIFIER "${MDBX_GIT_DESCRIBE}" MDBX_SOURCERY_SUFFIX)
set(MDBX_BUILD_SOURCERY "${MDBX_SOURCERY_DIGEST}_${MDBX_SOURCERY_SUFFIX}")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/elements/config.h.in"
"${CMAKE_CURRENT_SOURCE_DIR}/elements/config.h" ESCAPE_QUOTES)
add_definitions(-DMDBX_CONFIG_H="config.h")
add_subdirectory(tools)

View file

@ -0,0 +1,26 @@
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>. */
/* Amalgamated build */
#define MDBX_ALLOY 1
#include "elements/internals.h" /* must be included fisrt */
#include "elements/core.c"
#include "elements/osal.c"
#include "elements/version.c"
#if defined(_WIN32) || defined(_WIN64)
#include "elements/lck-windows.c"
#else
#include "elements/lck-posix.c"
#endif

View file

@ -0,0 +1,56 @@
/* This is CMake-template for libmdbx's config.h
******************************************************************************/
/* *INDENT-OFF* */
/* clang-format off */
#cmakedefine HAVE_VALGRIND_MEMCHECK_H
#cmakedefine HAS_RELAXED_CONSTEXPR
#cmakedefine LTO_ENABLED
#cmakedefine MDBX_USE_VALGRIND
#cmakedefine ENABLE_GPROF
#cmakedefine ENABLE_GCOV
#cmakedefine ENABLE_ASAN
/* Common */
#cmakedefine01 MDBX_TXN_CHECKPID
#cmakedefine01 MDBX_TXN_CHECKOWNER
#cmakedefine01 MDBX_BUILD_SHARED_LIBRARY
/* Windows */
#cmakedefine01 MDBX_CONFIG_MANUAL_TLS_CALLBACK
#cmakedefine01 MDBX_AVOID_CRT
/* MacOS */
#cmakedefine01 MDBX_OSX_SPEED_INSTEADOF_DURABILITY
/* POSIX */
#cmakedefine01 MDBX_USE_ROBUST
#cmakedefine01 MDBX_USE_OFDLOCKS
#cmakedefine01 MDBX_DISABLE_GNU_SOURCE
/* Simulate "AUTO" values of tristate options */
#cmakedefine MDBX_TXN_CHECKPID_AUTO
#ifdef MDBX_TXN_CHECKPID_AUTO
#undef MDBX_TXN_CHECKPID
#endif
#cmakedefine MDBX_USE_ROBUST_AUTO
#ifdef MDBX_USE_ROBUST_AUTO
#undef MDBX_USE_ROBUST
#endif
#cmakedefine MDBX_USE_OFDLOCKS_AUTO
#ifdef MDBX_USE_OFDLOCKS_AUTO
#undef MDBX_USE_OFDLOCKS
#endif
/* Build Info */
#cmakedefine MDBX_BUILD_TIMESTAMP "@MDBX_BUILD_TIMESTAMP@"
#cmakedefine MDBX_BUILD_TARGET "@MDBX_BUILD_TARGET@"
#cmakedefine MDBX_BUILD_CONFIG "@MDBX_BUILD_CONFIG@"
#cmakedefine MDBX_BUILD_COMPILER "@MDBX_BUILD_COMPILER@"
#cmakedefine MDBX_BUILD_FLAGS "@MDBX_BUILD_FLAGS@"
#cmakedefine MDBX_BUILD_SOURCERY @MDBX_BUILD_SOURCERY@
/* *INDENT-ON* */
/* clang-format on */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,450 @@
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
#pragma once
/* *INDENT-OFF* */
/* clang-format off */
#ifndef __GNUC_PREREQ
# if defined(__GNUC__) && defined(__GNUC_MINOR__)
# define __GNUC_PREREQ(maj, min) \
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
# else
# define __GNUC_PREREQ(maj, min) (0)
# endif
#endif /* __GNUC_PREREQ */
#ifndef __CLANG_PREREQ
# ifdef __clang__
# define __CLANG_PREREQ(maj,min) \
((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
# else
# define __CLANG_PREREQ(maj,min) (0)
# endif
#endif /* __CLANG_PREREQ */
#ifndef __GLIBC_PREREQ
# if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
# define __GLIBC_PREREQ(maj, min) \
((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
# else
# define __GLIBC_PREREQ(maj, min) (0)
# endif
#endif /* __GLIBC_PREREQ */
#ifndef __has_attribute
# define __has_attribute(x) (0)
#endif
#ifndef __has_feature
# define __has_feature(x) (0)
#endif
#ifndef __has_extension
# define __has_extension(x) (0)
#endif
#ifndef __has_builtin
# define __has_builtin(x) (0)
#endif
#ifndef __has_warning
# define __has_warning(x) (0)
#endif
#ifndef __has_include
# define __has_include(x) (0)
#endif
#if __has_feature(thread_sanitizer)
# define __SANITIZE_THREAD__ 1
#endif
#if __has_feature(address_sanitizer)
# define __SANITIZE_ADDRESS__ 1
#endif
/*----------------------------------------------------------------------------*/
#ifndef __extern_C
# ifdef __cplusplus
# define __extern_C extern "C"
# else
# define __extern_C
# endif
#endif /* __extern_C */
#ifndef __cplusplus
# ifndef bool
# define bool _Bool
# endif
# ifndef true
# define true (1)
# endif
# ifndef false
# define false (0)
# endif
#endif
#if !defined(nullptr) && !defined(__cplusplus) || (__cplusplus < 201103L && !defined(_MSC_VER))
# define nullptr NULL
#endif
/*----------------------------------------------------------------------------*/
#ifndef __always_inline
# if defined(__GNUC__) || __has_attribute(__always_inline__)
# define __always_inline __inline __attribute__((__always_inline__))
# elif defined(_MSC_VER)
# define __always_inline __forceinline
# else
# define __always_inline
# endif
#endif /* __always_inline */
#ifndef __noinline
# if defined(__GNUC__) || __has_attribute(__noinline__)
# define __noinline __attribute__((__noinline__))
# elif defined(_MSC_VER)
# define __noinline __declspec(noinline)
# elif defined(__SUNPRO_C) || defined(__sun) || defined(sun)
# define __noinline inline
# elif !defined(__INTEL_COMPILER)
# define __noinline /* FIXME ? */
# endif
#endif /* __noinline */
#ifndef __must_check_result
# if defined(__GNUC__) || __has_attribute(__warn_unused_result__)
# define __must_check_result __attribute__((__warn_unused_result__))
# else
# define __must_check_result
# endif
#endif /* __must_check_result */
#ifndef __maybe_unused
# if defined(__GNUC__) || __has_attribute(__unused__)
# define __maybe_unused __attribute__((__unused__))
# else
# define __maybe_unused
# endif
#endif /* __maybe_unused */
#ifndef __deprecated
# if defined(__GNUC__) || __has_attribute(__deprecated__)
# define __deprecated __attribute__((__deprecated__))
# elif defined(_MSC_VER)
# define __deprecated __declspec(deprecated)
# else
# define __deprecated
# endif
#endif /* __deprecated */
#if !defined(__noop) && !defined(_MSC_VER)
# define __noop(...) do {} while(0)
#endif /* __noop */
#ifndef __fallthrough
# if __GNUC_PREREQ(7, 0) || __has_attribute(__fallthrough__)
# define __fallthrough __attribute__((__fallthrough__))
# else
# define __fallthrough __noop()
# endif
#endif /* __fallthrough */
#ifndef __unreachable
# if __GNUC_PREREQ(4,5)
# define __unreachable() __builtin_unreachable()
# elif defined(_MSC_VER)
# define __unreachable() __assume(0)
# else
# define __unreachable() __noop()
# endif
#endif /* __unreachable */
#ifndef __prefetch
# if defined(__GNUC__) || defined(__clang__)
# define __prefetch(ptr) __builtin_prefetch(ptr)
# else
# define __prefetch(ptr) __noop(ptr)
# endif
#endif /* __prefetch */
#ifndef __noreturn
# if defined(__GNUC__) || __has_attribute(__noreturn__)
# define __noreturn __attribute__((__noreturn__))
# elif defined(_MSC_VER)
# define __noreturn __declspec(noreturn)
# else
# define __noreturn
# endif
#endif /* __noreturn */
#ifndef __nothrow
# if defined(__cplusplus)
# if __cplusplus < 201703L
# define __nothrow throw()
# else
# define __nothrow noexcept(true)
# endif /* __cplusplus */
# elif defined(__GNUC__) || __has_attribute(__nothrow__)
# define __nothrow __attribute__((__nothrow__))
# elif defined(_MSC_VER) && defined(__cplusplus)
# define __nothrow __declspec(nothrow)
# else
# define __nothrow
# endif
#endif /* __nothrow */
#ifndef __pure_function
/* Many functions have no effects except the return value and their
* return value depends only on the parameters and/or global variables.
* Such a function can be subject to common subexpression elimination
* and loop optimization just as an arithmetic operator would be.
* These functions should be declared with the attribute pure. */
# if defined(__GNUC__) || __has_attribute(__pure__)
# define __pure_function __attribute__((__pure__))
# else
# define __pure_function
# endif
#endif /* __pure_function */
#ifndef __const_function
/* Many functions do not examine any values except their arguments,
* and have no effects except the return value. Basically this is just
* slightly more strict class than the PURE attribute, since function
* is not allowed to read global memory.
*
* Note that a function that has pointer arguments and examines the
* data pointed to must not be declared const. Likewise, a function
* that calls a non-const function usually must not be const.
* It does not make sense for a const function to return void. */
# if defined(__GNUC__) || __has_attribute(__const__)
# define __const_function __attribute__((__const__))
# else
# define __const_function
# endif
#endif /* __const_function */
#ifndef __hidden
# if defined(__GNUC__) || __has_attribute(__visibility__)
# define __hidden __attribute__((__visibility__("hidden")))
# else
# define __hidden
# endif
#endif /* __hidden */
#ifndef __optimize
# if defined(__OPTIMIZE__)
# if defined(__clang__) && !__has_attribute(__optimize__)
# define __optimize(ops)
# elif defined(__GNUC__) || __has_attribute(__optimize__)
# define __optimize(ops) __attribute__((__optimize__(ops)))
# else
# define __optimize(ops)
# endif
# else
# define __optimize(ops)
# endif
#endif /* __optimize */
#ifndef __hot
# if defined(__OPTIMIZE__)
# if defined(__e2k__)
# define __hot __attribute__((__hot__)) __optimize(3)
# elif defined(__clang__) && !__has_attribute(__hot_) \
&& __has_attribute(__section__) && (defined(__linux__) || defined(__gnu_linux__))
/* just put frequently used functions in separate section */
# define __hot __attribute__((__section__("text.hot"))) __optimize("O3")
# elif defined(__GNUC__) || __has_attribute(__hot__)
# define __hot __attribute__((__hot__)) __optimize("O3")
# else
# define __hot __optimize("O3")
# endif
# else
# define __hot
# endif
#endif /* __hot */
#ifndef __cold
# if defined(__OPTIMIZE__)
# if defined(__e2k__)
# define __cold __attribute__((__cold__)) __optimize(1)
# elif defined(__clang__) && !__has_attribute(cold) \
&& __has_attribute(__section__) && (defined(__linux__) || defined(__gnu_linux__))
/* just put infrequently used functions in separate section */
# define __cold __attribute__((__section__("text.unlikely"))) __optimize("Os")
# elif defined(__GNUC__) || __has_attribute(cold)
# define __cold __attribute__((__cold__)) __optimize("Os")
# else
# define __cold __optimize("Os")
# endif
# else
# define __cold
# endif
#endif /* __cold */
#ifndef __flatten
# if defined(__OPTIMIZE__) && (defined(__GNUC__) || __has_attribute(__flatten__))
# define __flatten __attribute__((__flatten__))
# else
# define __flatten
# endif
#endif /* __flatten */
#ifndef likely
# if (defined(__GNUC__) || defined(__clang__)) && !defined(__COVERITY__)
# define likely(cond) __builtin_expect(!!(cond), 1)
# else
# define likely(x) (x)
# endif
#endif /* likely */
#ifndef unlikely
# if (defined(__GNUC__) || defined(__clang__)) && !defined(__COVERITY__)
# define unlikely(cond) __builtin_expect(!!(cond), 0)
# else
# define unlikely(x) (x)
# endif
#endif /* unlikely */
/* Workaround for Coverity Scan */
#if defined(__COVERITY__) && __GNUC_PREREQ(7, 0) && !defined(__cplusplus)
typedef float _Float32;
typedef double _Float32x;
typedef double _Float64;
typedef long double _Float64x;
typedef float _Float128 __attribute__((__mode__(__TF__)));
typedef __complex__ float __cfloat128 __attribute__ ((__mode__ (__TC__)));
typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__)));
#endif /* Workaround for Coverity Scan */
#ifndef __printf_args
# if defined(__GNUC__) || __has_attribute(__format__)
# define __printf_args(format_index, first_arg) \
__attribute__((__format__(printf, format_index, first_arg)))
# else
# define __printf_args(format_index, first_arg)
# endif
#endif /* __printf_args */
#ifndef __anonymous_struct_extension__
# if defined(__GNUC__)
# define __anonymous_struct_extension__ __extension__
# else
# define __anonymous_struct_extension__
# endif
#endif /* __anonymous_struct_extension__ */
#ifndef __Wpedantic_format_voidptr
static __inline const void* __pure_function
__Wpedantic_format_voidptr(const void* ptr) {return ptr;}
# define __Wpedantic_format_voidptr(ARG) __Wpedantic_format_voidptr(ARG)
#endif /* __Wpedantic_format_voidptr */
/*----------------------------------------------------------------------------*/
#if defined(MDBX_USE_VALGRIND)
# include <valgrind/memcheck.h>
# ifndef VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE
/* LY: available since Valgrind 3.10 */
# define VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE(a,s)
# define VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE(a,s)
# endif
#elif !defined(RUNNING_ON_VALGRIND)
# define VALGRIND_CREATE_MEMPOOL(h,r,z)
# define VALGRIND_DESTROY_MEMPOOL(h)
# define VALGRIND_MEMPOOL_TRIM(h,a,s)
# define VALGRIND_MEMPOOL_ALLOC(h,a,s)
# define VALGRIND_MEMPOOL_FREE(h,a)
# define VALGRIND_MEMPOOL_CHANGE(h,a,b,s)
# define VALGRIND_MAKE_MEM_NOACCESS(a,s)
# define VALGRIND_MAKE_MEM_DEFINED(a,s)
# define VALGRIND_MAKE_MEM_UNDEFINED(a,s)
# define VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE(a,s)
# define VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE(a,s)
# define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,s) (0)
# define VALGRIND_CHECK_MEM_IS_DEFINED(a,s) (0)
# define RUNNING_ON_VALGRIND (0)
#endif /* MDBX_USE_VALGRIND */
#ifdef __SANITIZE_ADDRESS__
# include <sanitizer/asan_interface.h>
#elif !defined(ASAN_POISON_MEMORY_REGION)
# define ASAN_POISON_MEMORY_REGION(addr, size) \
((void)(addr), (void)(size))
# define ASAN_UNPOISON_MEMORY_REGION(addr, size) \
((void)(addr), (void)(size))
#endif /* __SANITIZE_ADDRESS__ */
/*----------------------------------------------------------------------------*/
#ifndef ARRAY_LENGTH
# ifdef __cplusplus
template <typename T, size_t N>
char (&__ArraySizeHelper(T (&array)[N]))[N];
# define ARRAY_LENGTH(array) (sizeof(::__ArraySizeHelper(array)))
# else
# define ARRAY_LENGTH(array) (sizeof(array) / sizeof(array[0]))
# endif
#endif /* ARRAY_LENGTH */
#ifndef ARRAY_END
# define ARRAY_END(array) (&array[ARRAY_LENGTH(array)])
#endif /* ARRAY_END */
#ifndef STRINGIFY
# define STRINGIFY_HELPER(x) #x
# define STRINGIFY(x) STRINGIFY_HELPER(x)
#endif /* STRINGIFY */
#define CONCAT(a,b) a##b
#define XCONCAT(a,b) CONCAT(a,b)
#ifndef offsetof
# define offsetof(type, member) __builtin_offsetof(type, member)
#endif /* offsetof */
#ifndef container_of
# define container_of(ptr, type, member) \
((type *)((char *)(ptr) - offsetof(type, member)))
#endif /* container_of */
#define MDBX_TETRAD(a, b, c, d) \
((uint32_t)(a) << 24 | (uint32_t)(b) << 16 | (uint32_t)(c) << 8 | (d))
#define MDBX_STRING_TETRAD(str) MDBX_TETRAD(str[0], str[1], str[2], str[3])
#define FIXME "FIXME: " __FILE__ ", " STRINGIFY(__LINE__)
#ifndef STATIC_ASSERT_MSG
# if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) \
|| __has_feature(c_static_assert)
# define STATIC_ASSERT_MSG(expr, msg) _Static_assert(expr, msg)
# elif defined(static_assert)
# define STATIC_ASSERT_MSG(expr, msg) static_assert(expr, msg)
# elif defined(_MSC_VER)
# include <crtdbg.h>
# define STATIC_ASSERT_MSG(expr, msg) _STATIC_ASSERT(expr)
# else
# define STATIC_ASSERT_MSG(expr, msg) switch (0) {case 0:case (expr):;}
# endif
#endif /* STATIC_ASSERT */
#ifndef STATIC_ASSERT
# define STATIC_ASSERT(expr) STATIC_ASSERT_MSG(expr, #expr)
#endif
/* *INDENT-ON* */
/* clang-format on */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,551 @@
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
#include "internals.h"
/*----------------------------------------------------------------------------*/
/* global constructor/destructor */
#if defined(__linux__) || defined(__gnu_linux__)
#include <sys/utsname.h>
#ifndef MDBX_ALLOY
uint32_t mdbx_linux_kernel_version;
#endif /* MDBX_ALLOY */
#endif /* Linux */
static __cold __attribute__((__constructor__)) void
mdbx_global_constructor(void) {
#if defined(__linux__) || defined(__gnu_linux__)
struct utsname buffer;
if (uname(&buffer) == 0) {
int i = 0;
char *p = buffer.release;
while (*p && i < 4) {
if (*p >= '0' && *p <= '9') {
long number = strtol(p, &p, 10);
if (number > 0) {
if (number > 255)
number = 255;
mdbx_linux_kernel_version += number << (24 - i * 8);
}
++i;
} else {
++p;
}
}
}
#endif /* Linux */
mdbx_rthc_global_init();
}
static __cold __attribute__((__destructor__)) void
mdbx_global_destructor(void) {
mdbx_rthc_global_dtor();
}
/*----------------------------------------------------------------------------*/
/* lck */
/* Описание реализации блокировок для POSIX & Linux:
*
* lck-файл отображается в память, в нём организуется таблица читателей и
* размещаются совместно используемые posix-мьютексы (futex). Посредством
* этих мьютексов (см struct MDBX_lockinfo) реализуются:
* - Блокировка таблицы читателей для регистрации,
* т.е. функции mdbx_rdt_lock() и mdbx_rdt_unlock().
* - Блокировка БД для пишущих транзакций,
* т.е. функции mdbx_txn_lock() и mdbx_txn_unlock().
*
* Остальной функционал реализуется отдельно посредством файловых блокировок:
* - Первоначальный захват БД в режиме exclusive/shared и последующий перевод
* в операционный режим, функции mdbx_lck_seize() и mdbx_lck_downgrade().
* - Проверка присутствие процессов-читателей,
* т.е. функции mdbx_rpid_set(), mdbx_rpid_clear() и mdbx_rpid_check().
*
* Для блокировки файлов используется fcntl(F_SETLK), так как:
* - lockf() оперирует только эксклюзивной блокировкой и требует
* открытия файла в RW-режиме.
* - flock() не гарантирует атомарности при смене блокировок
* и оперирует только всем файлом целиком.
* - Для контроля процессов-читателей используются однобайтовые
* range-блокировки lck-файла посредством fcntl(F_SETLK). При этом
* в качестве позиции используется pid процесса-читателя.
* - Для первоначального захвата и shared/exclusive выполняется блокировка
* основного файла БД и при успехе lck-файла.
*
* ----------------------------------------------------------------------------
* УДЕРЖИВАЕМЫЕ БЛОКИРОВКИ В ЗАВИСИМОСТИ ОТ РЕЖИМА И СОСТОЯНИЯ
*
* Эксклюзивный режим без lck-файла:
* = заблокирован весь dxb-файл посредством F_RDLCK или F_WRLCK,
* в зависимости от MDBX_RDONLY.
*
* Не-операционный режим на время пере-инициализации и разрушении lck-файла:
* = F_WRLCK блокировка первого байта lck-файла, другие процессы ждут её
* снятия при получении F_RDLCK через F_SETLKW.
* - блокировки dxb-файла могут меняться до снятие эксклюзивной блокировки
* lck-файла:
* + для НЕ-эксклюзивного режима блокировка pid-байта в dxb-файле
* посредством F_RDLCK или F_WRLCK, в зависимости от MDBX_RDONLY.
* + для ЭКСКЛЮЗИВНОГО режима блокировка pid-байта всего dxb-файла
* посредством F_RDLCK или F_WRLCK, в зависимости от MDBX_RDONLY.
*
* ОПЕРАЦИОННЫЙ режим с lck-файлом:
* = F_RDLCK блокировка первого байта lck-файла, другие процессы не могут
* получить F_WRLCK и таким образом видят что БД используется.
* + F_WRLCK блокировка pid-байта в clk-файле после первой транзакции чтения.
* + для НЕ-эксклюзивного режима блокировка pid-байта в dxb-файле
* посредством F_RDLCK или F_WRLCK, в зависимости от MDBX_RDONLY.
* + для ЭКСКЛЮЗИВНОГО режима блокировка pid-байта всего dxb-файла
* посредством F_RDLCK или F_WRLCK, в зависимости от MDBX_RDONLY.
*/
#if MDBX_USE_OFDLOCKS
static int op_setlk, op_setlkw, op_getlk;
static void __cold choice_fcntl() {
assert(!op_setlk && !op_setlkw && !op_getlk);
if ((mdbx_runtime_flags & MDBX_DBG_LEGACY_MULTIOPEN) == 0
#if defined(__linux__) || defined(__gnu_linux__)
&& mdbx_linux_kernel_version >
0x030f0000 /* OFD locks are available since 3.15, but engages here
only for 3.16 and larer kernels (LTS) for reliability reasons */
#endif /* linux */
) {
op_setlk = F_OFD_SETLK;
op_setlkw = F_OFD_SETLKW;
op_getlk = F_OFD_GETLK;
return;
}
op_setlk = F_SETLK;
op_setlkw = F_SETLKW;
op_getlk = F_GETLK;
}
#else
#define op_setlk F_SETLK
#define op_setlkw F_SETLKW
#define op_getlk F_GETLK
#endif /* MDBX_USE_OFDLOCKS */
#ifndef OFF_T_MAX
#define OFF_T_MAX \
((sizeof(off_t) > 4 ? INT64_MAX : INT32_MAX) & ~(size_t)0xffff)
#endif
static int lck_op(mdbx_filehandle_t fd, int cmd, int lck, off_t offset,
off_t len) {
mdbx_jitter4testing(true);
for (;;) {
struct flock lock_op;
memset(&lock_op, 0, sizeof(lock_op));
lock_op.l_type = lck;
lock_op.l_whence = SEEK_SET;
lock_op.l_start = offset;
lock_op.l_len = len;
int rc = fcntl(fd, cmd, &lock_op);
mdbx_jitter4testing(true);
if (rc != -1) {
if (cmd == op_getlk) {
/* Checks reader by pid. Returns:
* MDBX_RESULT_TRUE - if pid is live (unable to acquire lock)
* MDBX_RESULT_FALSE - if pid is dead (lock acquired). */
return (lock_op.l_type == F_UNLCK) ? MDBX_RESULT_FALSE
: MDBX_RESULT_TRUE;
}
return MDBX_SUCCESS;
}
rc = errno;
if (rc != EINTR || cmd == op_setlkw) {
mdbx_assert(nullptr, MDBX_IS_ERROR(rc));
return rc;
}
}
}
MDBX_INTERNAL_FUNC int mdbx_rpid_set(MDBX_env *env) {
assert(env->me_lfd != INVALID_HANDLE_VALUE);
assert(env->me_pid > 0);
if (unlikely(mdbx_getpid() != env->me_pid))
return MDBX_PANIC;
return lck_op(env->me_lfd, op_setlk, F_WRLCK, env->me_pid, 1);
}
MDBX_INTERNAL_FUNC int mdbx_rpid_clear(MDBX_env *env) {
assert(env->me_lfd != INVALID_HANDLE_VALUE);
assert(env->me_pid > 0);
return lck_op(env->me_lfd, op_setlk, F_UNLCK, env->me_pid, 1);
}
MDBX_INTERNAL_FUNC int mdbx_rpid_check(MDBX_env *env, uint32_t pid) {
assert(env->me_lfd != INVALID_HANDLE_VALUE);
assert(pid > 0);
return lck_op(env->me_lfd, op_getlk, F_WRLCK, pid, 1);
}
/*---------------------------------------------------------------------------*/
MDBX_INTERNAL_FUNC int __cold mdbx_lck_seize(MDBX_env *env) {
assert(env->me_fd != INVALID_HANDLE_VALUE);
if (unlikely(mdbx_getpid() != env->me_pid))
return MDBX_PANIC;
#if MDBX_USE_OFDLOCKS
if (unlikely(op_setlk == 0))
choice_fcntl();
#endif /* MDBX_USE_OFDLOCKS */
int rc;
if (env->me_lfd == INVALID_HANDLE_VALUE) {
/* LY: without-lck mode (e.g. exclusive or on read-only filesystem) */
rc =
lck_op(env->me_fd, op_setlk,
(env->me_flags & MDBX_RDONLY) ? F_RDLCK : F_WRLCK, 0, OFF_T_MAX);
if (rc != MDBX_SUCCESS) {
mdbx_error("%s(%s) failed: errcode %u", __func__, "without-lck", rc);
mdbx_assert(env, MDBX_IS_ERROR(rc));
return rc;
}
return MDBX_RESULT_TRUE /* Done: return with exclusive locking. */;
}
/* Firstly try to get exclusive locking. */
rc = lck_op(env->me_lfd, op_setlk, F_WRLCK, 0, 1);
if (rc == MDBX_SUCCESS) {
continue_dxb_exclusive:
rc =
lck_op(env->me_fd, op_setlk,
(env->me_flags & MDBX_RDONLY) ? F_RDLCK : F_WRLCK, 0, OFF_T_MAX);
if (rc == MDBX_SUCCESS)
return MDBX_RESULT_TRUE /* Done: return with exclusive locking. */;
/* the cause may be a collision with POSIX's file-lock recovery. */
if (!(rc == EAGAIN || rc == EACCES || rc == EBUSY || rc == EWOULDBLOCK ||
rc == EDEADLK)) {
mdbx_error("%s(%s) failed: errcode %u", __func__, "dxb-exclusive", rc);
mdbx_assert(env, MDBX_IS_ERROR(rc));
return rc;
}
/* Fallback to lck-shared */
rc = lck_op(env->me_lfd, op_setlk, F_RDLCK, 0, 1);
if (rc != MDBX_SUCCESS) {
mdbx_error("%s(%s) failed: errcode %u", __func__, "fallback-shared", rc);
mdbx_assert(env, MDBX_IS_ERROR(rc));
return rc;
}
/* Done: return with shared locking. */
return MDBX_RESULT_FALSE;
}
/* Wait for lck-shared now. */
/* Here may be await during transient processes, for instance until another
* competing process doesn't call lck_downgrade(). */
rc = lck_op(env->me_lfd, op_setlkw, F_RDLCK, 0, 1);
if (rc != MDBX_SUCCESS) {
mdbx_error("%s(%s) failed: errcode %u", __func__, "try-shared", rc);
mdbx_assert(env, MDBX_IS_ERROR(rc));
return rc;
}
/* Lock against another process operating in without-lck or exclusive mode. */
rc =
lck_op(env->me_fd, op_setlk,
(env->me_flags & MDBX_RDONLY) ? F_RDLCK : F_WRLCK, env->me_pid, 1);
if (rc != MDBX_SUCCESS) {
mdbx_error("%s(%s) failed: errcode %u", __func__,
"lock-against-without-lck", rc);
mdbx_assert(env, MDBX_IS_ERROR(rc));
return rc;
}
/* got shared, retry exclusive */
rc = lck_op(env->me_lfd, op_setlk, F_WRLCK, 0, 1);
if (rc == MDBX_SUCCESS)
goto continue_dxb_exclusive;
if (rc == EAGAIN || rc == EACCES || rc == EBUSY || rc == EWOULDBLOCK ||
rc == EDEADLK)
return MDBX_RESULT_FALSE /* Done: exclusive is unavailable,
but shared locks are alive. */
;
mdbx_error("%s(%s) failed: errcode %u", __func__, "try-exclusive", rc);
mdbx_assert(env, MDBX_IS_ERROR(rc));
return rc;
}
MDBX_INTERNAL_FUNC int mdbx_lck_downgrade(MDBX_env *env) {
assert(env->me_lfd != INVALID_HANDLE_VALUE);
if (unlikely(mdbx_getpid() != env->me_pid))
return MDBX_PANIC;
int rc = MDBX_SUCCESS;
if ((env->me_flags & MDBX_EXCLUSIVE) == 0) {
rc = lck_op(env->me_fd, op_setlk, F_UNLCK, 0, env->me_pid);
if (rc == MDBX_SUCCESS)
rc = lck_op(env->me_fd, op_setlk, F_UNLCK, env->me_pid + 1,
OFF_T_MAX - env->me_pid - 1);
}
if (rc == MDBX_SUCCESS)
rc = lck_op(env->me_lfd, op_setlk, F_RDLCK, 0, 1);
if (unlikely(rc != 0)) {
mdbx_error("%s(%s) failed: errcode %u", __func__, "lck", rc);
assert(MDBX_IS_ERROR(rc));
}
return rc;
}
MDBX_INTERNAL_FUNC int __cold mdbx_lck_destroy(MDBX_env *env,
MDBX_env *inprocess_neighbor) {
if (unlikely(mdbx_getpid() != env->me_pid))
return MDBX_PANIC;
int rc = MDBX_SUCCESS;
if (env->me_lfd != INVALID_HANDLE_VALUE && !inprocess_neighbor &&
env->me_lck &&
/* try get exclusive access */
lck_op(env->me_lfd, op_setlk, F_WRLCK, 0, OFF_T_MAX) == 0 &&
lck_op(env->me_fd, op_setlk,
(env->me_flags & MDBX_RDONLY) ? F_RDLCK : F_WRLCK, 0, OFF_T_MAX)) {
mdbx_verbose("%s: got exclusive, drown mutexes", __func__);
rc = pthread_mutex_destroy(&env->me_lck->mti_rmutex);
if (rc == 0)
rc = pthread_mutex_destroy(&env->me_lck->mti_wmutex);
mdbx_assert(env, rc == 0);
if (rc == 0) {
memset(env->me_lck, 0x81, sizeof(MDBX_lockinfo));
msync(env->me_lck, env->me_os_psize, MS_ASYNC);
}
mdbx_jitter4testing(false);
}
/* 1) POSIX's fcntl() locks (i.e. when op_setlk == F_SETLK) should be restored
* after file was closed.
*
* 2) File locks would be released (by kernel) while the file-descriptors will
* be closed. But to avoid false-positive EACCESS and EDEADLK from the kernel,
* locks should be released here explicitly with properly order. */
/* close dxb and restore lock */
if (env->me_fd != INVALID_HANDLE_VALUE) {
if (unlikely(close(env->me_fd) != 0) && rc == MDBX_SUCCESS)
rc = errno;
env->me_fd = INVALID_HANDLE_VALUE;
if (op_setlk == F_SETLK && inprocess_neighbor && rc == MDBX_SUCCESS) {
/* restore file-lock */
rc = lck_op(
inprocess_neighbor->me_fd, F_SETLKW,
(inprocess_neighbor->me_flags & MDBX_RDONLY) ? F_RDLCK : F_WRLCK,
(inprocess_neighbor->me_flags & MDBX_EXCLUSIVE)
? 0
: inprocess_neighbor->me_pid,
(inprocess_neighbor->me_flags & MDBX_EXCLUSIVE) ? OFF_T_MAX : 1);
}
}
/* close clk and restore locks */
if (env->me_lfd != INVALID_HANDLE_VALUE) {
if (unlikely(close(env->me_lfd) != 0) && rc == MDBX_SUCCESS)
rc = errno;
env->me_lfd = INVALID_HANDLE_VALUE;
if (op_setlk == F_SETLK && inprocess_neighbor && rc == MDBX_SUCCESS) {
/* restore file-locks */
rc = lck_op(inprocess_neighbor->me_lfd, F_SETLKW, F_RDLCK, 0, 1);
if (rc == MDBX_SUCCESS && inprocess_neighbor->me_live_reader)
rc = mdbx_rpid_set(inprocess_neighbor);
}
}
if (inprocess_neighbor && rc != MDBX_SUCCESS)
inprocess_neighbor->me_flags |= MDBX_FATAL_ERROR;
return rc;
}
/*---------------------------------------------------------------------------*/
static int mdbx_mutex_failed(MDBX_env *env, pthread_mutex_t *mutex,
const int rc);
MDBX_INTERNAL_FUNC int __cold mdbx_lck_init(MDBX_env *env,
MDBX_env *inprocess_neighbor,
int global_uniqueness_flag) {
if (inprocess_neighbor)
return MDBX_SUCCESS /* currently don't need any initialization
if LCK already opened/used inside current process */
;
/* FIXME: Unfortunately, there is no other reliable way but to long testing
* on each platform. On the other hand, behavior like FreeBSD is incorrect
* and we can expect it to be rare. Moreover, even on FreeBSD without
* additional in-process initialization, the probability of an problem
* occurring is vanishingly small, and the symptom is a return of EINVAL
* while locking a mutex. In other words, in the worst case, the problem
* results in an EINVAL error at the start of the transaction, but NOT data
* loss, nor database corruption, nor other fatal troubles. Thus, the code
* below I am inclined to think the workaround for erroneous platforms (like
* FreeBSD), rather than a defect of libmdbx. */
#if defined(__FreeBSD__)
/* seems that shared mutexes on FreeBSD required in-process initialization */
(void)global_uniqueness_flag;
#else
/* shared mutexes on many other platforms (including Darwin and Linux's
* futexes) doesn't need any addition in-process initialization */
if (global_uniqueness_flag != MDBX_RESULT_TRUE)
return MDBX_SUCCESS;
#endif
pthread_mutexattr_t ma;
int rc = pthread_mutexattr_init(&ma);
if (rc)
return rc;
rc = pthread_mutexattr_setpshared(&ma, PTHREAD_PROCESS_SHARED);
if (rc)
goto bailout;
#if MDBX_USE_ROBUST
#if defined(__GLIBC__) && !__GLIBC_PREREQ(2, 12) && \
!defined(pthread_mutex_consistent) && _POSIX_C_SOURCE < 200809L
rc = pthread_mutexattr_setrobust_np(&ma, PTHREAD_MUTEX_ROBUST_NP);
#else
rc = pthread_mutexattr_setrobust(&ma, PTHREAD_MUTEX_ROBUST);
#endif
if (rc)
goto bailout;
#endif /* MDBX_USE_ROBUST */
#if _POSIX_C_SOURCE >= 199506L && !defined(MDBX_SAFE4QEMU)
rc = pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT);
if (rc == ENOTSUP)
rc = pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_NONE);
if (rc)
goto bailout;
#endif /* PTHREAD_PRIO_INHERIT */
rc = pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_ERRORCHECK);
if (rc)
goto bailout;
rc = pthread_mutex_init(&env->me_lck->mti_rmutex, &ma);
if (rc)
goto bailout;
rc = pthread_mutex_init(&env->me_lck->mti_wmutex, &ma);
bailout:
pthread_mutexattr_destroy(&ma);
return rc;
}
static int mdbx_robust_lock(MDBX_env *env, pthread_mutex_t *mutex) {
mdbx_jitter4testing(true);
int rc = pthread_mutex_lock(mutex);
if (unlikely(rc != 0))
rc = mdbx_mutex_failed(env, mutex, rc);
return rc;
}
static int mdbx_robust_trylock(MDBX_env *env, pthread_mutex_t *mutex) {
mdbx_jitter4testing(true);
int rc = pthread_mutex_trylock(mutex);
if (unlikely(rc != 0 && rc != EBUSY))
rc = mdbx_mutex_failed(env, mutex, rc);
return (rc != EBUSY) ? rc : MDBX_BUSY;
}
static int mdbx_robust_unlock(MDBX_env *env, pthread_mutex_t *mutex) {
int rc = pthread_mutex_unlock(mutex);
mdbx_jitter4testing(true);
if (unlikely(rc != 0))
env->me_flags |= MDBX_FATAL_ERROR;
return rc;
}
MDBX_INTERNAL_FUNC int mdbx_rdt_lock(MDBX_env *env) {
mdbx_trace("%s", ">>");
int rc = mdbx_robust_lock(env, &env->me_lck->mti_rmutex);
mdbx_trace("<< rc %d", rc);
return rc;
}
MDBX_INTERNAL_FUNC void mdbx_rdt_unlock(MDBX_env *env) {
mdbx_trace("%s", ">>");
int rc = mdbx_robust_unlock(env, &env->me_lck->mti_rmutex);
mdbx_trace("<< rc %d", rc);
if (unlikely(MDBX_IS_ERROR(rc)))
mdbx_panic("%s() failed: errcode %d\n", __func__, rc);
}
int mdbx_txn_lock(MDBX_env *env, bool dontwait) {
mdbx_trace("%s", ">>");
int rc = dontwait ? mdbx_robust_trylock(env, env->me_wmutex)
: mdbx_robust_lock(env, env->me_wmutex);
mdbx_trace("<< rc %d", rc);
return MDBX_IS_ERROR(rc) ? rc : MDBX_SUCCESS;
}
void mdbx_txn_unlock(MDBX_env *env) {
mdbx_trace("%s", ">>");
int rc = mdbx_robust_unlock(env, env->me_wmutex);
mdbx_trace("<< rc %d", rc);
if (unlikely(MDBX_IS_ERROR(rc)))
mdbx_panic("%s() failed: errcode %d\n", __func__, rc);
}
static int __cold mdbx_mutex_failed(MDBX_env *env, pthread_mutex_t *mutex,
const int err) {
int rc = err;
#if MDBX_USE_ROBUST
if (err == EOWNERDEAD) {
/* We own the mutex. Clean up after dead previous owner. */
int rlocked = (env->me_lck && mutex == &env->me_lck->mti_rmutex);
rc = MDBX_SUCCESS;
if (!rlocked) {
if (unlikely(env->me_txn)) {
/* env is hosed if the dead thread was ours */
env->me_flags |= MDBX_FATAL_ERROR;
env->me_txn = NULL;
rc = MDBX_PANIC;
}
}
mdbx_notice("%cmutex owner died, %s", (rlocked ? 'r' : 'w'),
(rc ? "this process' env is hosed" : "recovering"));
int check_rc = mdbx_reader_check0(env, rlocked, NULL);
check_rc = (check_rc == MDBX_SUCCESS) ? MDBX_RESULT_TRUE : check_rc;
#if defined(__GLIBC__) && !__GLIBC_PREREQ(2, 12) && \
!defined(pthread_mutex_consistent) && _POSIX_C_SOURCE < 200809L
int mreco_rc = pthread_mutex_consistent_np(mutex);
#else
int mreco_rc = pthread_mutex_consistent(mutex);
#endif
check_rc = (mreco_rc == 0) ? check_rc : mreco_rc;
if (unlikely(mreco_rc))
mdbx_error("mutex recovery failed, %s", mdbx_strerror(mreco_rc));
rc = (rc == MDBX_SUCCESS) ? check_rc : rc;
if (MDBX_IS_ERROR(rc))
pthread_mutex_unlock(mutex);
return rc;
}
#else
(void)mutex;
#endif /* MDBX_USE_ROBUST */
mdbx_error("mutex (un)lock failed, %s", mdbx_strerror(err));
if (rc != EDEADLK)
env->me_flags |= MDBX_FATAL_ERROR;
return rc;
}

View file

@ -0,0 +1,777 @@
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
#include "internals.h"
/* PREAMBLE FOR WINDOWS:
*
* We are not concerned for performance here.
* If you are running Windows a performance could NOT be the goal.
* Otherwise please use Linux.
*
* Regards,
* LY
*/
static void mdbx_winnt_import(void);
#if MDBX_BUILD_SHARED_LIBRARY
#if MDBX_AVOID_CRT && defined(NDEBUG)
/* DEBUG/CHECKED builds still require MSVC's CRT for runtime checks.
*
* Define dll's entry point only for Release build when NDEBUG is defined and
* MDBX_AVOID_CRT=ON. if the entry point isn't defined then MSVC's will
* automatically use DllMainCRTStartup() from CRT library, which also
* automatically call DllMain() from our mdbx.dll */
#pragma comment(linker, "/ENTRY:DllMain")
#endif /* MDBX_AVOID_CRT */
BOOL APIENTRY DllMain(HANDLE module, DWORD reason, LPVOID reserved)
#else
#if !MDBX_CONFIG_MANUAL_TLS_CALLBACK
static
#endif /* !MDBX_CONFIG_MANUAL_TLS_CALLBACK */
void NTAPI
mdbx_dll_handler(PVOID module, DWORD reason, PVOID reserved)
#endif /* MDBX_BUILD_SHARED_LIBRARY */
{
(void)reserved;
switch (reason) {
case DLL_PROCESS_ATTACH:
mdbx_winnt_import();
mdbx_rthc_global_init();
break;
case DLL_PROCESS_DETACH:
mdbx_rthc_global_dtor();
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
mdbx_rthc_thread_dtor(module);
break;
}
#if MDBX_BUILD_SHARED_LIBRARY
return TRUE;
#endif
}
#if !MDBX_BUILD_SHARED_LIBRARY && !MDBX_CONFIG_MANUAL_TLS_CALLBACK
/* *INDENT-OFF* */
/* clang-format off */
#if defined(_MSC_VER)
# pragma const_seg(push)
# pragma data_seg(push)
# ifdef _WIN64
/* kick a linker to create the TLS directory if not already done */
# pragma comment(linker, "/INCLUDE:_tls_used")
/* Force some symbol references. */
# pragma comment(linker, "/INCLUDE:mdbx_tls_anchor")
/* specific const-segment for WIN64 */
# pragma const_seg(".CRT$XLB")
const
# else
/* kick a linker to create the TLS directory if not already done */
# pragma comment(linker, "/INCLUDE:__tls_used")
/* Force some symbol references. */
# pragma comment(linker, "/INCLUDE:_mdbx_tls_anchor")
/* specific data-segment for WIN32 */
# pragma data_seg(".CRT$XLB")
# endif
__declspec(allocate(".CRT$XLB")) PIMAGE_TLS_CALLBACK mdbx_tls_anchor = mdbx_dll_handler;
# pragma data_seg(pop)
# pragma const_seg(pop)
#elif defined(__GNUC__)
# ifdef _WIN64
const
# endif
PIMAGE_TLS_CALLBACK mdbx_tls_anchor __attribute__((__section__(".CRT$XLB"), used)) = mdbx_dll_handler;
#else
# error FIXME
#endif
/* *INDENT-ON* */
/* clang-format on */
#endif /* !MDBX_BUILD_SHARED_LIBRARY && !MDBX_CONFIG_MANUAL_TLS_CALLBACK */
/*----------------------------------------------------------------------------*/
#define LCK_SHARED 0
#define LCK_EXCLUSIVE LOCKFILE_EXCLUSIVE_LOCK
#define LCK_WAITFOR 0
#define LCK_DONTWAIT LOCKFILE_FAIL_IMMEDIATELY
static __inline BOOL flock(mdbx_filehandle_t fd, DWORD flags, uint64_t offset,
size_t bytes) {
OVERLAPPED ov;
ov.hEvent = 0;
ov.Offset = (DWORD)offset;
ov.OffsetHigh = HIGH_DWORD(offset);
return LockFileEx(fd, flags, 0, (DWORD)bytes, HIGH_DWORD(bytes), &ov);
}
static __inline BOOL funlock(mdbx_filehandle_t fd, uint64_t offset,
size_t bytes) {
return UnlockFile(fd, (DWORD)offset, HIGH_DWORD(offset), (DWORD)bytes,
HIGH_DWORD(bytes));
}
/*----------------------------------------------------------------------------*/
/* global `write` lock for write-txt processing,
* exclusive locking both meta-pages) */
#define LCK_MAXLEN (1u + (size_t)(MAXSSIZE_T))
#define LCK_META_OFFSET 0
#define LCK_META_LEN 0x10000u
#define LCK_BODY_OFFSET LCK_META_LEN
#define LCK_BODY_LEN (LCK_MAXLEN - LCK_BODY_OFFSET)
#define LCK_META LCK_META_OFFSET, LCK_META_LEN
#define LCK_BODY LCK_BODY_OFFSET, LCK_BODY_LEN
#define LCK_WHOLE 0, LCK_MAXLEN
int mdbx_txn_lock(MDBX_env *env, bool dontwait) {
if (dontwait) {
if (!TryEnterCriticalSection(&env->me_windowsbug_lock))
return MDBX_BUSY;
} else {
EnterCriticalSection(&env->me_windowsbug_lock);
}
if ((env->me_flags & MDBX_EXCLUSIVE) ||
flock(env->me_fd,
dontwait ? (LCK_EXCLUSIVE | LCK_DONTWAIT)
: (LCK_EXCLUSIVE | LCK_WAITFOR),
LCK_BODY))
return MDBX_SUCCESS;
int rc = GetLastError();
LeaveCriticalSection(&env->me_windowsbug_lock);
return (!dontwait || rc != ERROR_LOCK_VIOLATION) ? rc : MDBX_BUSY;
}
void mdbx_txn_unlock(MDBX_env *env) {
int rc =
(env->me_flags & MDBX_EXCLUSIVE) ? TRUE : funlock(env->me_fd, LCK_BODY);
LeaveCriticalSection(&env->me_windowsbug_lock);
if (!rc)
mdbx_panic("%s failed: errcode %u", __func__, GetLastError());
}
/*----------------------------------------------------------------------------*/
/* global `read` lock for readers registration,
* exclusive locking `mti_numreaders` (second) cacheline */
#define LCK_LO_OFFSET 0
#define LCK_LO_LEN offsetof(MDBX_lockinfo, mti_numreaders)
#define LCK_UP_OFFSET LCK_LO_LEN
#define LCK_UP_LEN (sizeof(MDBX_lockinfo) - LCK_UP_OFFSET)
#define LCK_LOWER LCK_LO_OFFSET, LCK_LO_LEN
#define LCK_UPPER LCK_UP_OFFSET, LCK_UP_LEN
MDBX_INTERNAL_FUNC int mdbx_rdt_lock(MDBX_env *env) {
mdbx_srwlock_AcquireShared(&env->me_remap_guard);
if (env->me_lfd == INVALID_HANDLE_VALUE)
return MDBX_SUCCESS; /* readonly database in readonly filesystem */
/* transite from S-? (used) to S-E (locked), e.g. exclusive lock upper-part */
if ((env->me_flags & MDBX_EXCLUSIVE) ||
flock(env->me_lfd, LCK_EXCLUSIVE | LCK_WAITFOR, LCK_UPPER))
return MDBX_SUCCESS;
int rc = GetLastError();
mdbx_srwlock_ReleaseShared(&env->me_remap_guard);
return rc;
}
MDBX_INTERNAL_FUNC void mdbx_rdt_unlock(MDBX_env *env) {
if (env->me_lfd != INVALID_HANDLE_VALUE) {
/* transite from S-E (locked) to S-? (used), e.g. unlock upper-part */
if ((env->me_flags & MDBX_EXCLUSIVE) == 0 &&
!funlock(env->me_lfd, LCK_UPPER))
mdbx_panic("%s failed: errcode %u", __func__, GetLastError());
}
mdbx_srwlock_ReleaseShared(&env->me_remap_guard);
}
static int suspend_and_append(mdbx_handle_array_t **array,
const DWORD ThreadId) {
const unsigned limit = (*array)->limit;
if ((*array)->count == limit) {
void *ptr = mdbx_realloc(
(limit > ARRAY_LENGTH((*array)->handles))
? *array
: /* don't free initial array on the stack */ NULL,
sizeof(mdbx_handle_array_t) +
sizeof(HANDLE) * (limit * 2 - ARRAY_LENGTH((*array)->handles)));
if (!ptr)
return MDBX_ENOMEM;
if (limit == ARRAY_LENGTH((*array)->handles))
memcpy(ptr, *array, sizeof(mdbx_handle_array_t));
*array = (mdbx_handle_array_t *)ptr;
(*array)->limit = limit * 2;
}
HANDLE hThread = OpenThread(THREAD_SUSPEND_RESUME | THREAD_QUERY_INFORMATION,
FALSE, ThreadId);
if (hThread == NULL)
return GetLastError();
if (SuspendThread(hThread) == -1) {
int err = GetLastError();
DWORD ExitCode;
if (err == /* workaround for Win10 UCRT bug */ ERROR_ACCESS_DENIED ||
!GetExitCodeThread(hThread, &ExitCode) || ExitCode != STILL_ACTIVE)
err = MDBX_SUCCESS;
CloseHandle(hThread);
return err;
}
(*array)->handles[(*array)->count++] = hThread;
return MDBX_SUCCESS;
}
MDBX_INTERNAL_FUNC int
mdbx_suspend_threads_before_remap(MDBX_env *env, mdbx_handle_array_t **array) {
const size_t CurrentTid = GetCurrentThreadId();
int rc;
if (env->me_lck) {
/* Scan LCK for threads of the current process */
const MDBX_reader *const begin = env->me_lck->mti_readers;
const MDBX_reader *const end = begin + env->me_lck->mti_numreaders;
const size_t WriteTxnOwner = env->me_txn0 ? env->me_txn0->mt_owner : 0;
for (const MDBX_reader *reader = begin; reader < end; ++reader) {
if (reader->mr_pid != env->me_pid || !reader->mr_tid) {
skip_lck:
continue;
}
if (reader->mr_tid == CurrentTid || reader->mr_tid == WriteTxnOwner)
goto skip_lck;
if (env->me_flags & MDBX_NOTLS) {
/* Skip duplicates in no-tls mode */
for (const MDBX_reader *scan = reader; --scan >= begin;)
if (scan->mr_tid == reader->mr_tid)
goto skip_lck;
}
rc = suspend_and_append(array, (mdbx_tid_t)reader->mr_tid);
if (rc != MDBX_SUCCESS) {
bailout_lck:
(void)mdbx_resume_threads_after_remap(*array);
return rc;
}
}
if (WriteTxnOwner && WriteTxnOwner != CurrentTid) {
rc = suspend_and_append(array, (mdbx_tid_t)WriteTxnOwner);
if (rc != MDBX_SUCCESS)
goto bailout_lck;
}
} else {
/* Without LCK (i.e. read-only mode).
* Walk thougth a snapshot of all running threads */
mdbx_assert(env,
env->me_txn0 == NULL || (env->me_flags & MDBX_EXCLUSIVE) != 0);
const HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (hSnapshot == INVALID_HANDLE_VALUE)
return GetLastError();
THREADENTRY32 entry;
entry.dwSize = sizeof(THREADENTRY32);
if (!Thread32First(hSnapshot, &entry)) {
rc = GetLastError();
bailout_toolhelp:
CloseHandle(hSnapshot);
(void)mdbx_resume_threads_after_remap(*array);
return rc;
}
do {
if (entry.th32OwnerProcessID != env->me_pid ||
entry.th32ThreadID == CurrentTid)
continue;
rc = suspend_and_append(array, entry.th32ThreadID);
if (rc != MDBX_SUCCESS)
goto bailout_toolhelp;
} while (Thread32Next(hSnapshot, &entry));
rc = GetLastError();
if (rc != ERROR_NO_MORE_FILES)
goto bailout_toolhelp;
CloseHandle(hSnapshot);
}
return MDBX_SUCCESS;
}
MDBX_INTERNAL_FUNC int
mdbx_resume_threads_after_remap(mdbx_handle_array_t *array) {
int rc = MDBX_SUCCESS;
for (unsigned i = 0; i < array->count; ++i) {
const HANDLE hThread = array->handles[i];
if (ResumeThread(hThread) == -1) {
const int err = GetLastError();
DWORD ExitCode;
if (err != /* workaround for Win10 UCRT bug */ ERROR_ACCESS_DENIED &&
GetExitCodeThread(hThread, &ExitCode) && ExitCode == STILL_ACTIVE)
rc = err;
}
CloseHandle(hThread);
}
return rc;
}
/*----------------------------------------------------------------------------*/
/* global `initial` lock for lockfile initialization,
* exclusive/shared locking first cacheline */
/* Briefly descritpion of locking schema/algorithm:
* - Windows does not support upgrading or downgrading for file locking.
* - Therefore upgrading/downgrading is emulated by shared and exclusive
* locking of upper and lower halves.
* - In other words, we have FSM with possible 9 states,
* i.e. free/shared/exclusive x free/shared/exclusive == 9.
* Only 6 states of FSM are used, which 2 of ones are transitive.
*
* The mdbx_lck_seize() moves the locking-FSM from the initial free/unlocked
* state to the "exclusive write" (and returns MDBX_RESULT_TRUE) if possible,
* or to the "used" (and returns MDBX_RESULT_FALSE).
*
* The mdbx_lck_downgrade() moves the locking-FSM from "exclusive write"
* state to the "used" (i.e. shared) state.
*
* States:
* ?-? = free, i.e. unlocked
* S-? = used, i.e. shared lock
* E-? = exclusive-read, i.e. operational exclusive
* ?-S
* ?-E = middle (transitive state)
* S-S
* S-E = locked (transitive state)
* E-S
* E-E = exclusive-write, i.e. exclusive due (re)initialization
*/
static void lck_unlock(MDBX_env *env) {
int rc;
if (env->me_lfd != INVALID_HANDLE_VALUE) {
/* double `unlock` for robustly remove overlapped shared/exclusive locks */
while (funlock(env->me_lfd, LCK_LOWER))
;
rc = GetLastError();
assert(rc == ERROR_NOT_LOCKED);
(void)rc;
SetLastError(ERROR_SUCCESS);
while (funlock(env->me_lfd, LCK_UPPER))
;
rc = GetLastError();
assert(rc == ERROR_NOT_LOCKED);
(void)rc;
SetLastError(ERROR_SUCCESS);
}
if (env->me_fd != INVALID_HANDLE_VALUE) {
/* explicitly unlock to avoid latency for other processes (windows kernel
* releases such locks via deferred queues) */
while (funlock(env->me_fd, LCK_BODY))
;
rc = GetLastError();
assert(rc == ERROR_NOT_LOCKED);
(void)rc;
SetLastError(ERROR_SUCCESS);
while (funlock(env->me_fd, LCK_META))
;
rc = GetLastError();
assert(rc == ERROR_NOT_LOCKED);
(void)rc;
SetLastError(ERROR_SUCCESS);
while (funlock(env->me_fd, LCK_WHOLE))
;
rc = GetLastError();
assert(rc == ERROR_NOT_LOCKED);
(void)rc;
SetLastError(ERROR_SUCCESS);
}
}
MDBX_INTERNAL_FUNC int mdbx_lck_init(MDBX_env *env,
MDBX_env *inprocess_neighbor,
int global_uniqueness_flag) {
(void)env;
(void)inprocess_neighbor;
(void)global_uniqueness_flag;
return MDBX_SUCCESS;
}
MDBX_INTERNAL_FUNC int mdbx_lck_destroy(MDBX_env *env,
MDBX_env *inprocess_neighbor) {
(void)inprocess_neighbor;
/* LY: should unmap before releasing the locks to avoid race condition and
* STATUS_USER_MAPPED_FILE/ERROR_USER_MAPPED_FILE */
if (env->me_map)
mdbx_munmap(&env->me_dxb_mmap);
if (env->me_lck)
mdbx_munmap(&env->me_lck_mmap);
lck_unlock(env);
return MDBX_SUCCESS;
}
/* Seize state as 'exclusive-write' (E-E and returns MDBX_RESULT_TRUE)
* or as 'used' (S-? and returns MDBX_RESULT_FALSE).
* Oherwise returns an error. */
static int internal_seize_lck(HANDLE lfd) {
int rc;
assert(lfd != INVALID_HANDLE_VALUE);
/* 1) now on ?-? (free), get ?-E (middle) */
mdbx_jitter4testing(false);
if (!flock(lfd, LCK_EXCLUSIVE | LCK_WAITFOR, LCK_UPPER)) {
rc = GetLastError() /* 2) something went wrong, give up */;
mdbx_error("%s(%s) failed: errcode %u", __func__,
"?-?(free) >> ?-E(middle)", rc);
return rc;
}
/* 3) now on ?-E (middle), try E-E (exclusive-write) */
mdbx_jitter4testing(false);
if (flock(lfd, LCK_EXCLUSIVE | LCK_DONTWAIT, LCK_LOWER))
return MDBX_RESULT_TRUE /* 4) got E-E (exclusive-write), done */;
/* 5) still on ?-E (middle) */
rc = GetLastError();
mdbx_jitter4testing(false);
if (rc != ERROR_SHARING_VIOLATION && rc != ERROR_LOCK_VIOLATION) {
/* 6) something went wrong, give up */
if (!funlock(lfd, LCK_UPPER))
mdbx_panic("%s(%s) failed: errcode %u", __func__,
"?-E(middle) >> ?-?(free)", GetLastError());
return rc;
}
/* 7) still on ?-E (middle), try S-E (locked) */
mdbx_jitter4testing(false);
rc = flock(lfd, LCK_SHARED | LCK_DONTWAIT, LCK_LOWER) ? MDBX_RESULT_FALSE
: GetLastError();
mdbx_jitter4testing(false);
if (rc != MDBX_RESULT_FALSE)
mdbx_error("%s(%s) failed: errcode %u", __func__,
"?-E(middle) >> S-E(locked)", rc);
/* 8) now on S-E (locked) or still on ?-E (middle),
* transite to S-? (used) or ?-? (free) */
if (!funlock(lfd, LCK_UPPER))
mdbx_panic("%s(%s) failed: errcode %u", __func__,
"X-E(locked/middle) >> X-?(used/free)", GetLastError());
/* 9) now on S-? (used, DONE) or ?-? (free, FAILURE) */
return rc;
}
MDBX_INTERNAL_FUNC int mdbx_lck_seize(MDBX_env *env) {
int rc;
assert(env->me_fd != INVALID_HANDLE_VALUE);
if (env->me_flags & MDBX_EXCLUSIVE)
return MDBX_RESULT_TRUE /* nope since files were must be opened
non-shareable */
;
if (env->me_lfd == INVALID_HANDLE_VALUE) {
/* LY: without-lck mode (e.g. on read-only filesystem) */
mdbx_jitter4testing(false);
if (!flock(env->me_fd, LCK_SHARED | LCK_DONTWAIT, LCK_WHOLE)) {
rc = GetLastError();
mdbx_error("%s(%s) failed: errcode %u", __func__, "without-lck", rc);
return rc;
}
return MDBX_RESULT_FALSE;
}
rc = internal_seize_lck(env->me_lfd);
mdbx_jitter4testing(false);
if (rc == MDBX_RESULT_TRUE && (env->me_flags & MDBX_RDONLY) == 0) {
/* Check that another process don't operates in without-lck mode.
* Doing such check by exclusive locking the body-part of db. Should be
* noted:
* - we need an exclusive lock for do so;
* - we can't lock meta-pages, otherwise other process could get an error
* while opening db in valid (non-conflict) mode. */
if (!flock(env->me_fd, LCK_EXCLUSIVE | LCK_DONTWAIT, LCK_BODY)) {
rc = GetLastError();
mdbx_error("%s(%s) failed: errcode %u", __func__,
"lock-against-without-lck", rc);
mdbx_jitter4testing(false);
lck_unlock(env);
} else {
mdbx_jitter4testing(false);
if (!funlock(env->me_fd, LCK_BODY))
mdbx_panic("%s(%s) failed: errcode %u", __func__,
"unlock-against-without-lck", GetLastError());
}
}
return rc;
}
MDBX_INTERNAL_FUNC int mdbx_lck_downgrade(MDBX_env *env) {
/* Transite from exclusive state (E-?) to used (S-?) */
assert(env->me_fd != INVALID_HANDLE_VALUE);
assert(env->me_lfd != INVALID_HANDLE_VALUE);
#if 1
if (env->me_flags & MDBX_EXCLUSIVE)
return MDBX_SUCCESS /* nope since files were must be opened non-shareable */
;
#else
/* 1) must be at E-E (exclusive-write) */
if (env->me_flags & MDBX_EXCLUSIVE) {
/* transite from E-E to E_? (exclusive-read) */
if (!funlock(env->me_lfd, LCK_UPPER))
mdbx_panic("%s(%s) failed: errcode %u", __func__,
"E-E(exclusive-write) >> E-?(exclusive-read)", GetLastError());
return MDBX_SUCCESS /* 2) now at E-? (exclusive-read), done */;
}
#endif
/* 3) now at E-E (exclusive-write), transite to ?_E (middle) */
if (!funlock(env->me_lfd, LCK_LOWER))
mdbx_panic("%s(%s) failed: errcode %u", __func__,
"E-E(exclusive-write) >> ?-E(middle)", GetLastError());
/* 4) now at ?-E (middle), transite to S-E (locked) */
if (!flock(env->me_lfd, LCK_SHARED | LCK_DONTWAIT, LCK_LOWER)) {
int rc = GetLastError() /* 5) something went wrong, give up */;
mdbx_error("%s(%s) failed: errcode %u", __func__,
"?-E(middle) >> S-E(locked)", rc);
return rc;
}
/* 6) got S-E (locked), continue transition to S-? (used) */
if (!funlock(env->me_lfd, LCK_UPPER))
mdbx_panic("%s(%s) failed: errcode %u", __func__,
"S-E(locked) >> S-?(used)", GetLastError());
return MDBX_SUCCESS /* 7) now at S-? (used), done */;
}
/*----------------------------------------------------------------------------*/
/* reader checking (by pid) */
MDBX_INTERNAL_FUNC int mdbx_rpid_set(MDBX_env *env) {
(void)env;
return MDBX_SUCCESS;
}
MDBX_INTERNAL_FUNC int mdbx_rpid_clear(MDBX_env *env) {
(void)env;
return MDBX_SUCCESS;
}
/* Checks reader by pid.
*
* Returns:
* MDBX_RESULT_TRUE, if pid is live (unable to acquire lock)
* MDBX_RESULT_FALSE, if pid is dead (lock acquired)
* or otherwise the errcode. */
MDBX_INTERNAL_FUNC int mdbx_rpid_check(MDBX_env *env, uint32_t pid) {
(void)env;
HANDLE hProcess = OpenProcess(SYNCHRONIZE, FALSE, pid);
int rc;
if (likely(hProcess)) {
rc = WaitForSingleObject(hProcess, 0);
if (unlikely(rc == WAIT_FAILED))
rc = GetLastError();
CloseHandle(hProcess);
} else {
rc = GetLastError();
}
switch (rc) {
case ERROR_INVALID_PARAMETER:
/* pid seems invalid */
return MDBX_RESULT_FALSE;
case WAIT_OBJECT_0:
/* process just exited */
return MDBX_RESULT_FALSE;
case WAIT_TIMEOUT:
/* pid running */
return MDBX_RESULT_TRUE;
default:
/* failure */
return rc;
}
}
//----------------------------------------------------------------------------
// Stub for slim read-write lock
// Copyright (C) 1995-2002 Brad Wilson
static void WINAPI stub_srwlock_Init(MDBX_srwlock *srwl) {
srwl->readerCount = srwl->writerCount = 0;
}
static void WINAPI stub_srwlock_AcquireShared(MDBX_srwlock *srwl) {
while (true) {
assert(srwl->writerCount >= 0 && srwl->readerCount >= 0);
// If there's a writer already, spin without unnecessarily
// interlocking the CPUs
if (srwl->writerCount != 0) {
YieldProcessor();
continue;
}
// Add to the readers list
_InterlockedIncrement(&srwl->readerCount);
// Check for writers again (we may have been pre-empted). If
// there are no writers writing or waiting, then we're done.
if (srwl->writerCount == 0)
break;
// Remove from the readers list, spin, try again
_InterlockedDecrement(&srwl->readerCount);
YieldProcessor();
}
}
static void WINAPI stub_srwlock_ReleaseShared(MDBX_srwlock *srwl) {
assert(srwl->readerCount > 0);
_InterlockedDecrement(&srwl->readerCount);
}
static void WINAPI stub_srwlock_AcquireExclusive(MDBX_srwlock *srwl) {
while (true) {
assert(srwl->writerCount >= 0 && srwl->readerCount >= 0);
// If there's a writer already, spin without unnecessarily
// interlocking the CPUs
if (srwl->writerCount != 0) {
YieldProcessor();
continue;
}
// See if we can become the writer (expensive, because it inter-
// locks the CPUs, so writing should be an infrequent process)
if (_InterlockedExchange(&srwl->writerCount, 1) == 0)
break;
}
// Now we're the writer, but there may be outstanding readers.
// Spin until there aren't any more; new readers will wait now
// that we're the writer.
while (srwl->readerCount != 0) {
assert(srwl->writerCount >= 0 && srwl->readerCount >= 0);
YieldProcessor();
}
}
static void WINAPI stub_srwlock_ReleaseExclusive(MDBX_srwlock *srwl) {
assert(srwl->writerCount == 1 && srwl->readerCount >= 0);
srwl->writerCount = 0;
}
MDBX_srwlock_function mdbx_srwlock_Init, mdbx_srwlock_AcquireShared,
mdbx_srwlock_ReleaseShared, mdbx_srwlock_AcquireExclusive,
mdbx_srwlock_ReleaseExclusive;
/*----------------------------------------------------------------------------*/
#if 0 /* LY: unused for now */
static DWORD WINAPI stub_DiscardVirtualMemory(PVOID VirtualAddress,
SIZE_T Size) {
return VirtualAlloc(VirtualAddress, Size, MEM_RESET, PAGE_NOACCESS)
? ERROR_SUCCESS
: GetLastError();
}
#endif /* unused for now */
static uint64_t WINAPI stub_GetTickCount64(void) {
LARGE_INTEGER Counter, Frequency;
return (QueryPerformanceFrequency(&Frequency) &&
QueryPerformanceCounter(&Counter))
? Counter.QuadPart * 1000ul / Frequency.QuadPart
: 0;
}
/*----------------------------------------------------------------------------*/
#ifndef MDBX_ALLOY
MDBX_GetFileInformationByHandleEx mdbx_GetFileInformationByHandleEx;
MDBX_GetVolumeInformationByHandleW mdbx_GetVolumeInformationByHandleW;
MDBX_GetFinalPathNameByHandleW mdbx_GetFinalPathNameByHandleW;
MDBX_SetFileInformationByHandle mdbx_SetFileInformationByHandle;
MDBX_NtFsControlFile mdbx_NtFsControlFile;
MDBX_PrefetchVirtualMemory mdbx_PrefetchVirtualMemory;
MDBX_GetTickCount64 mdbx_GetTickCount64;
#if 0 /* LY: unused for now */
MDBX_DiscardVirtualMemory mdbx_DiscardVirtualMemory;
MDBX_OfferVirtualMemory mdbx_OfferVirtualMemory;
MDBX_ReclaimVirtualMemory mdbx_ReclaimVirtualMemory;
#endif /* unused for now */
#endif /* MDBX_ALLOY */
static void mdbx_winnt_import(void) {
const HINSTANCE hKernel32dll = GetModuleHandleA("kernel32.dll");
const MDBX_srwlock_function init =
(MDBX_srwlock_function)GetProcAddress(hKernel32dll, "InitializeSRWLock");
if (init != NULL) {
mdbx_srwlock_Init = init;
mdbx_srwlock_AcquireShared = (MDBX_srwlock_function)GetProcAddress(
hKernel32dll, "AcquireSRWLockShared");
mdbx_srwlock_ReleaseShared = (MDBX_srwlock_function)GetProcAddress(
hKernel32dll, "ReleaseSRWLockShared");
mdbx_srwlock_AcquireExclusive = (MDBX_srwlock_function)GetProcAddress(
hKernel32dll, "AcquireSRWLockExclusive");
mdbx_srwlock_ReleaseExclusive = (MDBX_srwlock_function)GetProcAddress(
hKernel32dll, "ReleaseSRWLockExclusive");
} else {
mdbx_srwlock_Init = stub_srwlock_Init;
mdbx_srwlock_AcquireShared = stub_srwlock_AcquireShared;
mdbx_srwlock_ReleaseShared = stub_srwlock_ReleaseShared;
mdbx_srwlock_AcquireExclusive = stub_srwlock_AcquireExclusive;
mdbx_srwlock_ReleaseExclusive = stub_srwlock_ReleaseExclusive;
}
#define GET_KERNEL32_PROC(ENTRY) \
mdbx_##ENTRY = (MDBX_##ENTRY)GetProcAddress(hKernel32dll, #ENTRY)
GET_KERNEL32_PROC(GetFileInformationByHandleEx);
GET_KERNEL32_PROC(GetVolumeInformationByHandleW);
GET_KERNEL32_PROC(GetFinalPathNameByHandleW);
GET_KERNEL32_PROC(SetFileInformationByHandle);
GET_KERNEL32_PROC(PrefetchVirtualMemory);
GET_KERNEL32_PROC(GetTickCount64);
if (!mdbx_GetTickCount64)
mdbx_GetTickCount64 = stub_GetTickCount64;
#if 0 /* LY: unused for now */
GET_KERNEL32_PROC(DiscardVirtualMemory);
if (!mdbx_DiscardVirtualMemory)
mdbx_DiscardVirtualMemory = stub_DiscardVirtualMemory;
GET_KERNEL32_PROC(OfferVirtualMemory);
GET_KERNEL32_PROC(ReclaimVirtualMemory);
#endif /* unused for now */
#undef GET_KERNEL32_PROC
const HINSTANCE hNtdll = GetModuleHandleA("ntdll.dll");
mdbx_NtFsControlFile =
(MDBX_NtFsControlFile)GetProcAddress(hNtdll, "NtFsControlFile");
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,959 @@
/* https://en.wikipedia.org/wiki/Operating_system_abstraction_layer */
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
#pragma once
/*----------------------------------------------------------------------------*/
/* Microsoft compiler generates a lot of warning for self includes... */
#ifdef _MSC_VER
#pragma warning(push, 1)
#pragma warning(disable : 4548) /* expression before comma has no effect; \
expected expression with side - effect */
#pragma warning(disable : 4530) /* C++ exception handler used, but unwind \
* semantics are not enabled. Specify /EHsc */
#pragma warning(disable : 4577) /* 'noexcept' used with no exception handling \
* mode specified; termination on exception is \
* not guaranteed. Specify /EHsc */
#endif /* _MSC_VER (warnings) */
#if defined(_WIN32) || defined(_WIN64)
#if !defined(_CRT_SECURE_NO_WARNINGS)
#define _CRT_SECURE_NO_WARNINGS
#endif
#if !defined(_NO_CRT_STDIO_INLINE) && MDBX_BUILD_SHARED_LIBRARY && \
!defined(MDBX_TOOLS)
#define _NO_CRT_STDIO_INLINE
#endif
#endif /* Windows */
/*----------------------------------------------------------------------------*/
/* C99 includes */
#include <inttypes.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <assert.h>
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
/* C11 stdalign.h */
#if __has_include(<stdalign.h>)
#include <stdalign.h>
#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#define alignas(N) _Alignas(N)
#elif defined(_MSC_VER)
#define alignas(N) __declspec(align(N))
#elif __has_attribute(__aligned__) || defined(__GNUC__)
#define alignas(N) __attribute__((__aligned__(N)))
#else
#error "FIXME: Required _alignas() or equivalent."
#endif
/*----------------------------------------------------------------------------*/
/* Systems includes */
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || \
defined(__BSD__) || defined(__NETBSD__) || defined(__bsdi__) || \
defined(__DragonFly__) || defined(__APPLE__) || defined(__MACH__)
#include <sys/cdefs.h>
#include <sys/sysctl.h>
#include <sys/types.h>
#if defined(__FreeBSD__) || defined(__DragonFly__)
#include <vm/vm_param.h>
#elif defined(__OpenBSD__) || defined(__NetBSD__)
#include <uvm/uvm_param.h>
#else
#define SYSCTL_LEGACY_NONCONST_MIB
#endif
#include <sys/vmmeter.h>
#else
#include <malloc.h>
#ifndef _POSIX_C_SOURCE
#ifdef _POSIX_SOURCE
#define _POSIX_C_SOURCE 1
#else
#define _POSIX_C_SOURCE 0
#endif
#endif
#endif /* !xBSD */
#if defined(__FreeBSD__) || defined(__OpenBSD__) || __has_include(<malloc_np.h>)
#include <malloc_np.h>
#endif
#if defined(__APPLE__) || defined(__MACH__) || __has_include(<malloc/malloc.h>)
#include <malloc/malloc.h>
#endif /* MacOS */
#if defined(__MACH__)
#include <mach/host_info.h>
#include <mach/mach_host.h>
#include <mach/mach_port.h>
#include <uuid/uuid.h>
#undef P_DIRTY
#endif
#if defined(__linux__) || defined(__gnu_linux__)
#include <linux/sysctl.h>
#include <sys/sendfile.h>
#include <sys/statvfs.h>
#endif /* Linux */
#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE 0
#endif
#ifndef _XOPEN_SOURCE_EXTENDED
#define _XOPEN_SOURCE_EXTENDED 0
#else
#include <utmpx.h>
#endif /* _XOPEN_SOURCE_EXTENDED */
#if defined(__sun) || defined(__SVR4) || defined(__svr4__)
#include <kstat.h>
#endif /* SunOS/Solaris */
#if defined(_WIN32) || defined(_WIN64)
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <tlhelp32.h>
#include <windows.h>
#include <winnt.h>
#include <winternl.h>
#define HAVE_SYS_STAT_H
#define HAVE_SYS_TYPES_H
typedef HANDLE mdbx_thread_t;
typedef unsigned mdbx_thread_key_t;
#define MDBX_OSAL_SECTION HANDLE
#define MAP_FAILED NULL
#define HIGH_DWORD(v) ((DWORD)((sizeof(v) > 4) ? ((uint64_t)(v) >> 32) : 0))
#define THREAD_CALL WINAPI
#define THREAD_RESULT DWORD
typedef struct {
HANDLE mutex;
HANDLE event;
} mdbx_condmutex_t;
typedef CRITICAL_SECTION mdbx_fastmutex_t;
#if MDBX_AVOID_CRT
#ifndef mdbx_malloc
static inline void *mdbx_malloc(size_t bytes) {
return LocalAlloc(LMEM_FIXED, bytes);
}
#endif /* mdbx_malloc */
#ifndef mdbx_calloc
static inline void *mdbx_calloc(size_t nelem, size_t size) {
return LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, nelem * size);
}
#endif /* mdbx_calloc */
#ifndef mdbx_realloc
static inline void *mdbx_realloc(void *ptr, size_t bytes) {
return LocalReAlloc(ptr, bytes, LMEM_MOVEABLE);
}
#endif /* mdbx_realloc */
#ifndef mdbx_free
#define mdbx_free LocalFree
#endif /* mdbx_free */
#else
#define mdbx_malloc malloc
#define mdbx_calloc calloc
#define mdbx_realloc realloc
#define mdbx_free free
#define mdbx_strdup _strdup
#endif /* MDBX_AVOID_CRT */
#ifndef snprintf
#define snprintf _snprintf /* ntdll */
#endif
#ifndef vsnprintf
#define vsnprintf _vsnprintf /* ntdll */
#endif
#else /*----------------------------------------------------------------------*/
#include <pthread.h>
#include <signal.h>
#include <sys/file.h>
#include <sys/mman.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/uio.h>
#include <unistd.h>
typedef pthread_t mdbx_thread_t;
typedef pthread_key_t mdbx_thread_key_t;
#define INVALID_HANDLE_VALUE (-1)
#define THREAD_CALL
#define THREAD_RESULT void *
typedef struct {
pthread_mutex_t mutex;
pthread_cond_t cond;
} mdbx_condmutex_t;
typedef pthread_mutex_t mdbx_fastmutex_t;
#define mdbx_malloc malloc
#define mdbx_calloc calloc
#define mdbx_realloc realloc
#define mdbx_free free
#define mdbx_strdup strdup
#endif /* Platform */
#if __GLIBC_PREREQ(2, 12) || defined(__FreeBSD__) || defined(malloc_usable_size)
/* malloc_usable_size() already provided */
#elif defined(__APPLE__)
#define malloc_usable_size(ptr) malloc_size(ptr)
#elif defined(_MSC_VER) && !MDBX_AVOID_CRT
#define malloc_usable_size(ptr) _msize(ptr)
#endif /* malloc_usable_size */
/* *INDENT-OFF* */
/* clang-format off */
#if defined(HAVE_SYS_STAT_H) || __has_include(<sys/stat.h>)
#include <sys/stat.h>
#endif
#if defined(HAVE_SYS_TYPES_H) || __has_include(<sys/types.h>)
#include <sys/types.h>
#endif
#if defined(HAVE_SYS_FILE_H) || __has_include(<sys/file.h>)
#include <sys/file.h>
#endif
/* *INDENT-ON* */
/* clang-format on */
#ifndef SSIZE_MAX
#define SSIZE_MAX INTPTR_MAX
#endif
#if !defined(MADV_DODUMP) && defined(MADV_CORE)
#define MADV_DODUMP MADV_CORE
#endif /* MADV_CORE -> MADV_DODUMP */
#if !defined(MADV_DONTDUMP) && defined(MADV_NOCORE)
#define MADV_DONTDUMP MADV_NOCORE
#endif /* MADV_NOCORE -> MADV_DONTDUMP */
#if defined(i386) || defined(__386) || defined(__i386) || defined(__i386__) || \
defined(i486) || defined(__i486) || defined(__i486__) || \
defined(i586) | defined(__i586) || defined(__i586__) || defined(i686) || \
defined(__i686) || defined(__i686__) || defined(_M_IX86) || \
defined(_X86_) || defined(__THW_INTEL__) || defined(__I86__) || \
defined(__INTEL__) || defined(__x86_64) || defined(__x86_64__) || \
defined(__amd64__) || defined(__amd64) || defined(_M_X64) || \
defined(_M_AMD64) || defined(__IA32__) || defined(__INTEL__)
#ifndef __ia32__
/* LY: define neutral __ia32__ for x86 and x86-64 archs */
#define __ia32__ 1
#endif /* __ia32__ */
#if !defined(__amd64__) && (defined(__x86_64) || defined(__x86_64__) || \
defined(__amd64) || defined(_M_X64))
/* LY: define trusty __amd64__ for all AMD64/x86-64 arch */
#define __amd64__ 1
#endif /* __amd64__ */
#endif /* all x86 */
#if !defined(MDBX_UNALIGNED_OK)
#if defined(_MSC_VER)
#define MDBX_UNALIGNED_OK 1 /* avoid MSVC misoptimization */
#elif __CLANG_PREREQ(5, 0) || __GNUC_PREREQ(5, 0)
#define MDBX_UNALIGNED_OK 0 /* expecting optimization is well done */
#elif (defined(__ia32__) || defined(__ARM_FEATURE_UNALIGNED)) && \
!defined(__ALIGNED__)
#define MDBX_UNALIGNED_OK 1
#else
#define MDBX_UNALIGNED_OK 0
#endif
#endif /* MDBX_UNALIGNED_OK */
#if (-6 & 5) || CHAR_BIT != 8 || UINT_MAX < 0xffffffff || ULONG_MAX % 0xFFFF
#error \
"Sanity checking failed: Two's complement, reasonably sized integer types"
#endif
/*----------------------------------------------------------------------------*/
/* Compiler's includes for builtins/intrinsics */
#if defined(_MSC_VER) || defined(__INTEL_COMPILER)
#include <intrin.h>
#elif __GNUC_PREREQ(4, 4) || defined(__clang__)
#if defined(__ia32__) || defined(__e2k__)
#include <x86intrin.h>
#endif /* __ia32__ */
#if defined(__ia32__)
#include <cpuid.h>
#endif /* __ia32__ */
#elif defined(__SUNPRO_C) || defined(__sun) || defined(sun)
#include <mbarrier.h>
#elif (defined(_HPUX_SOURCE) || defined(__hpux) || defined(__HP_aCC)) && \
(defined(HP_IA64) || defined(__ia64))
#include <machine/sys/inline.h>
#elif defined(__IBMC__) && defined(__powerpc)
#include <atomic.h>
#elif defined(_AIX)
#include <builtins.h>
#include <sys/atomic_op.h>
#elif (defined(__osf__) && defined(__DECC)) || defined(__alpha)
#include <c_asm.h>
#include <machine/builtins.h>
#elif defined(__MWERKS__)
/* CodeWarrior - troubles ? */
#pragma gcc_extensions
#elif defined(__SNC__)
/* Sony PS3 - troubles ? */
#elif defined(__hppa__) || defined(__hppa)
#include <machine/inline.h>
#else
#error Unsupported C compiler, please use GNU C 4.4 or newer
#endif /* Compiler */
/*----------------------------------------------------------------------------*/
/* Byteorder */
#if !defined(__BYTE_ORDER__) || !defined(__ORDER_LITTLE_ENDIAN__) || \
!defined(__ORDER_BIG_ENDIAN__)
/* *INDENT-OFF* */
/* clang-format off */
#if defined(__GLIBC__) || defined(__GNU_LIBRARY__) || defined(__ANDROID__) || \
defined(HAVE_ENDIAN_H) || __has_include(<endian.h>)
#include <endian.h>
#elif defined(__APPLE__) || defined(__MACH__) || defined(__OpenBSD__) || \
defined(HAVE_MACHINE_ENDIAN_H) || __has_include(<machine/endian.h>)
#include <machine/endian.h>
#elif defined(HAVE_SYS_ISA_DEFS_H) || __has_include(<sys/isa_defs.h>)
#include <sys/isa_defs.h>
#elif (defined(HAVE_SYS_TYPES_H) && defined(HAVE_SYS_ENDIAN_H)) || \
(__has_include(<sys/types.h>) && __has_include(<sys/endian.h>))
#include <sys/endian.h>
#include <sys/types.h>
#elif defined(__bsdi__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
defined(__NETBSD__) || defined(__NetBSD__) || \
defined(HAVE_SYS_PARAM_H) || __has_include(<sys/param.h>)
#include <sys/param.h>
#endif /* OS */
/* *INDENT-ON* */
/* clang-format on */
#if defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && defined(__BIG_ENDIAN)
#define __ORDER_LITTLE_ENDIAN__ __LITTLE_ENDIAN
#define __ORDER_BIG_ENDIAN__ __BIG_ENDIAN
#define __BYTE_ORDER__ __BYTE_ORDER
#elif defined(_BYTE_ORDER) && defined(_LITTLE_ENDIAN) && defined(_BIG_ENDIAN)
#define __ORDER_LITTLE_ENDIAN__ _LITTLE_ENDIAN
#define __ORDER_BIG_ENDIAN__ _BIG_ENDIAN
#define __BYTE_ORDER__ _BYTE_ORDER
#else
#define __ORDER_LITTLE_ENDIAN__ 1234
#define __ORDER_BIG_ENDIAN__ 4321
#if defined(__LITTLE_ENDIAN__) || \
(defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)) || \
defined(__ARMEL__) || defined(__THUMBEL__) || defined(__AARCH64EL__) || \
defined(__MIPSEL__) || defined(_MIPSEL) || defined(__MIPSEL) || \
defined(_M_ARM) || defined(_M_ARM64) || defined(__e2k__) || \
defined(__elbrus_4c__) || defined(__elbrus_8c__) || defined(__bfin__) || \
defined(__BFIN__) || defined(__ia64__) || defined(_IA64) || \
defined(__IA64__) || defined(__ia64) || defined(_M_IA64) || \
defined(__itanium__) || defined(__ia32__) || defined(__CYGWIN__) || \
defined(_WIN64) || defined(_WIN32) || defined(__TOS_WIN__) || \
defined(__WINDOWS__)
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#elif defined(__BIG_ENDIAN__) || \
(defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)) || \
defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || \
defined(__MIPSEB__) || defined(_MIPSEB) || defined(__MIPSEB) || \
defined(__m68k__) || defined(M68000) || defined(__hppa__) || \
defined(__hppa) || defined(__HPPA__) || defined(__sparc__) || \
defined(__sparc) || defined(__370__) || defined(__THW_370__) || \
defined(__s390__) || defined(__s390x__) || defined(__SYSC_ZARCH__)
#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
#else
#error __BYTE_ORDER__ should be defined.
#endif /* Arch */
#endif
#endif /* __BYTE_ORDER__ || __ORDER_LITTLE_ENDIAN__ || __ORDER_BIG_ENDIAN__ */
/*----------------------------------------------------------------------------*/
/* Memory/Compiler barriers, cache coherence */
static __maybe_unused __inline void mdbx_compiler_barrier(void) {
#if defined(__clang__) || defined(__GNUC__)
__asm__ __volatile__("" ::: "memory");
#elif defined(_MSC_VER)
_ReadWriteBarrier();
#elif defined(__INTEL_COMPILER) /* LY: Intel Compiler may mimic GCC and MSC */
__memory_barrier();
if (type > MDBX_BARRIER_COMPILER)
#if defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
__mf();
#elif defined(__i386__) || defined(__x86_64__)
_mm_mfence();
#else
#error "Unknown target for Intel Compiler, please report to us."
#endif
#elif defined(__SUNPRO_C) || defined(__sun) || defined(sun)
__compiler_barrier();
#elif (defined(_HPUX_SOURCE) || defined(__hpux) || defined(__HP_aCC)) && \
(defined(HP_IA64) || defined(__ia64))
_Asm_sched_fence(/* LY: no-arg meaning 'all expect ALU', e.g. 0x3D3D */);
#elif defined(_AIX) || defined(__ppc__) || defined(__powerpc__) || \
defined(__ppc64__) || defined(__powerpc64__)
__fence();
#else
#error "Could not guess the kind of compiler, please report to us."
#endif
}
static __maybe_unused __inline void mdbx_memory_barrier(void) {
#if __has_extension(c_atomic) || __has_extension(cxx_atomic)
__c11_atomic_thread_fence(__ATOMIC_SEQ_CST);
#elif defined(__ATOMIC_SEQ_CST)
__atomic_thread_fence(__ATOMIC_SEQ_CST);
#elif defined(__clang__) || defined(__GNUC__)
__sync_synchronize();
#elif defined(_MSC_VER)
MemoryBarrier();
#elif defined(__INTEL_COMPILER) /* LY: Intel Compiler may mimic GCC and MSC */
#if defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
__mf();
#elif defined(__i386__) || defined(__x86_64__)
_mm_mfence();
#else
#error "Unknown target for Intel Compiler, please report to us."
#endif
#elif defined(__SUNPRO_C) || defined(__sun) || defined(sun)
__machine_rw_barrier();
#elif (defined(_HPUX_SOURCE) || defined(__hpux) || defined(__HP_aCC)) && \
(defined(HP_IA64) || defined(__ia64))
_Asm_mf();
#elif defined(_AIX) || defined(__ppc__) || defined(__powerpc__) || \
defined(__ppc64__) || defined(__powerpc64__)
__lwsync();
#else
#error "Could not guess the kind of compiler, please report to us."
#endif
}
/*----------------------------------------------------------------------------*/
/* Cache coherence and invalidation */
#ifndef MDBX_CPU_WRITEBACK_IS_COHERENT
#if defined(__ia32__) || defined(__e2k__) || defined(__hppa) || \
defined(__hppa__)
#define MDBX_CPU_WRITEBACK_IS_COHERENT 1
#else
#define MDBX_CPU_WRITEBACK_IS_COHERENT 0
#endif
#endif /* MDBX_CPU_WRITEBACK_IS_COHERENT */
#ifndef MDBX_CACHELINE_SIZE
#if defined(SYSTEM_CACHE_ALIGNMENT_SIZE)
#define MDBX_CACHELINE_SIZE SYSTEM_CACHE_ALIGNMENT_SIZE
#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
#define MDBX_CACHELINE_SIZE 128
#else
#define MDBX_CACHELINE_SIZE 64
#endif
#endif /* MDBX_CACHELINE_SIZE */
#if MDBX_CPU_WRITEBACK_IS_COHERENT
#define mdbx_flush_noncoherent_cpu_writeback() mdbx_compiler_barrier()
#else
#define mdbx_flush_noncoherent_cpu_writeback() mdbx_memory_barrier()
#endif
#if __has_include(<sys/cachectl.h>)
#include <sys/cachectl.h>
#elif defined(__mips) || defined(__mips__) || defined(__mips64) || \
defined(__mips64__) || defined(_M_MRX000) || defined(_MIPS_) || \
defined(__MWERKS__) || defined(__sgi)
/* MIPS should have explicit cache control */
#include <sys/cachectl.h>
#endif
#ifndef MDBX_CPU_CACHE_MMAP_NONCOHERENT
#if defined(__mips) || defined(__mips__) || defined(__mips64) || \
defined(__mips64__) || defined(_M_MRX000) || defined(_MIPS_) || \
defined(__MWERKS__) || defined(__sgi)
/* MIPS has cache coherency issues. */
#define MDBX_CPU_CACHE_MMAP_NONCOHERENT 1
#else
/* LY: assume no relevant mmap/dcache issues. */
#define MDBX_CPU_CACHE_MMAP_NONCOHERENT 0
#endif
#endif /* ndef MDBX_CPU_CACHE_MMAP_NONCOHERENT */
static __maybe_unused __inline void
mdbx_invalidate_mmap_noncoherent_cache(void *addr, size_t nbytes) {
#if MDBX_CPU_CACHE_MMAP_NONCOHERENT
#ifdef DCACHE
/* MIPS has cache coherency issues.
* Note: for any nbytes >= on-chip cache size, entire is flushed. */
cacheflush(addr, nbytes, DCACHE);
#else
#error "Oops, cacheflush() not available"
#endif /* DCACHE */
#else /* MDBX_CPU_CACHE_MMAP_NONCOHERENT */
(void)addr;
(void)nbytes;
#endif /* MDBX_CPU_CACHE_MMAP_NONCOHERENT */
}
/*----------------------------------------------------------------------------*/
/* libc compatibility stuff */
#if (!defined(__GLIBC__) && __GLIBC_PREREQ(2, 1)) && \
(defined(_GNU_SOURCE) || defined(_BSD_SOURCE))
#define mdbx_asprintf asprintf
#define mdbx_vasprintf vasprintf
#else
MDBX_INTERNAL_FUNC __printf_args(2, 3) int __maybe_unused
mdbx_asprintf(char **strp, const char *fmt, ...);
MDBX_INTERNAL_FUNC int mdbx_vasprintf(char **strp, const char *fmt, va_list ap);
#endif
/*----------------------------------------------------------------------------*/
/* OS abstraction layer stuff */
/* max bytes to write in one call */
#if defined(_WIN32) || defined(_WIN64)
#define MAX_WRITE UINT32_C(0x01000000)
#else
#define MAX_WRITE UINT32_C(0x3fff0000)
#endif
#if defined(__linux__) || defined(__gnu_linux__)
MDBX_INTERNAL_VAR uint32_t mdbx_linux_kernel_version;
#endif /* Linux */
/* Get the size of a memory page for the system.
* This is the basic size that the platform's memory manager uses, and is
* fundamental to the use of memory-mapped files. */
static __maybe_unused __inline size_t mdbx_syspagesize(void) {
#if defined(_WIN32) || defined(_WIN64)
SYSTEM_INFO si;
GetSystemInfo(&si);
return si.dwPageSize;
#else
return sysconf(_SC_PAGE_SIZE);
#endif
}
#ifndef mdbx_strdup
LIBMDBX_API char *mdbx_strdup(const char *str);
#endif
static __maybe_unused __inline int mdbx_get_errno(void) {
#if defined(_WIN32) || defined(_WIN64)
DWORD rc = GetLastError();
#else
int rc = errno;
#endif
return rc;
}
#ifndef mdbx_memalign_alloc
MDBX_INTERNAL_FUNC int mdbx_memalign_alloc(size_t alignment, size_t bytes,
void **result);
#endif
#ifndef mdbx_memalign_free
MDBX_INTERNAL_FUNC void mdbx_memalign_free(void *ptr);
#endif
MDBX_INTERNAL_FUNC int mdbx_condmutex_init(mdbx_condmutex_t *condmutex);
MDBX_INTERNAL_FUNC int mdbx_condmutex_lock(mdbx_condmutex_t *condmutex);
MDBX_INTERNAL_FUNC int mdbx_condmutex_unlock(mdbx_condmutex_t *condmutex);
MDBX_INTERNAL_FUNC int mdbx_condmutex_signal(mdbx_condmutex_t *condmutex);
MDBX_INTERNAL_FUNC int mdbx_condmutex_wait(mdbx_condmutex_t *condmutex);
MDBX_INTERNAL_FUNC int mdbx_condmutex_destroy(mdbx_condmutex_t *condmutex);
MDBX_INTERNAL_FUNC int mdbx_fastmutex_init(mdbx_fastmutex_t *fastmutex);
MDBX_INTERNAL_FUNC int mdbx_fastmutex_acquire(mdbx_fastmutex_t *fastmutex);
MDBX_INTERNAL_FUNC int mdbx_fastmutex_release(mdbx_fastmutex_t *fastmutex);
MDBX_INTERNAL_FUNC int mdbx_fastmutex_destroy(mdbx_fastmutex_t *fastmutex);
MDBX_INTERNAL_FUNC int mdbx_pwritev(mdbx_filehandle_t fd, struct iovec *iov,
int iovcnt, uint64_t offset,
size_t expected_written);
MDBX_INTERNAL_FUNC int mdbx_pread(mdbx_filehandle_t fd, void *buf, size_t count,
uint64_t offset);
MDBX_INTERNAL_FUNC int mdbx_pwrite(mdbx_filehandle_t fd, const void *buf,
size_t count, uint64_t offset);
MDBX_INTERNAL_FUNC int mdbx_write(mdbx_filehandle_t fd, const void *buf,
size_t count);
MDBX_INTERNAL_FUNC int
mdbx_thread_create(mdbx_thread_t *thread,
THREAD_RESULT(THREAD_CALL *start_routine)(void *),
void *arg);
MDBX_INTERNAL_FUNC int mdbx_thread_join(mdbx_thread_t thread);
enum mdbx_syncmode_bits {
MDBX_SYNC_DATA = 1,
MDBX_SYNC_SIZE = 2,
MDBX_SYNC_IODQ = 4
};
MDBX_INTERNAL_FUNC int mdbx_filesync(mdbx_filehandle_t fd,
enum mdbx_syncmode_bits mode_bits);
MDBX_INTERNAL_FUNC int mdbx_ftruncate(mdbx_filehandle_t fd, uint64_t length);
MDBX_INTERNAL_FUNC int mdbx_fseek(mdbx_filehandle_t fd, uint64_t pos);
MDBX_INTERNAL_FUNC int mdbx_filesize(mdbx_filehandle_t fd, uint64_t *length);
MDBX_INTERNAL_FUNC int mdbx_openfile(const char *pathname, int flags,
mode_t mode, mdbx_filehandle_t *fd,
bool exclusive);
MDBX_INTERNAL_FUNC int mdbx_closefile(mdbx_filehandle_t fd);
MDBX_INTERNAL_FUNC int mdbx_removefile(const char *pathname);
MDBX_INTERNAL_FUNC int mdbx_is_pipe(mdbx_filehandle_t fd);
typedef struct mdbx_mmap_param {
union {
void *address;
uint8_t *dxb;
struct MDBX_lockinfo *lck;
};
mdbx_filehandle_t fd;
size_t limit; /* mapping length, but NOT a size of file nor DB */
size_t current; /* mapped region size, i.e. the size of file and DB */
#if defined(_WIN32) || defined(_WIN64)
uint64_t filesize /* in-process cache of a file size. */;
#endif
#ifdef MDBX_OSAL_SECTION
MDBX_OSAL_SECTION section;
#endif
} mdbx_mmap_t;
MDBX_INTERNAL_FUNC int mdbx_mmap(const int flags, mdbx_mmap_t *map,
const size_t must, const size_t limit,
const bool truncate);
MDBX_INTERNAL_FUNC int mdbx_munmap(mdbx_mmap_t *map);
MDBX_INTERNAL_FUNC int mdbx_mresize(int flags, mdbx_mmap_t *map, size_t current,
size_t wanna);
#if defined(_WIN32) || defined(_WIN64)
typedef struct {
unsigned limit, count;
HANDLE handles[31];
} mdbx_handle_array_t;
MDBX_INTERNAL_FUNC int
mdbx_suspend_threads_before_remap(MDBX_env *env, mdbx_handle_array_t **array);
MDBX_INTERNAL_FUNC int
mdbx_resume_threads_after_remap(mdbx_handle_array_t *array);
#endif /* Windows */
MDBX_INTERNAL_FUNC int mdbx_msync(mdbx_mmap_t *map, size_t offset,
size_t length, int async);
MDBX_INTERNAL_FUNC int mdbx_check4nonlocal(mdbx_filehandle_t handle, int flags);
static __maybe_unused __inline uint32_t mdbx_getpid(void) {
STATIC_ASSERT(sizeof(mdbx_pid_t) <= sizeof(uint32_t));
#if defined(_WIN32) || defined(_WIN64)
return GetCurrentProcessId();
#else
return getpid();
#endif
}
static __maybe_unused __inline size_t mdbx_thread_self(void) {
STATIC_ASSERT(sizeof(mdbx_tid_t) <= sizeof(size_t));
#if defined(_WIN32) || defined(_WIN64)
return GetCurrentThreadId();
#else
return (size_t)pthread_self();
#endif
}
MDBX_INTERNAL_FUNC void __maybe_unused mdbx_osal_jitter(bool tiny);
MDBX_INTERNAL_FUNC uint64_t mdbx_osal_monotime(void);
MDBX_INTERNAL_FUNC uint64_t
mdbx_osal_16dot16_to_monotime(uint32_t seconds_16dot16);
MDBX_INTERNAL_FUNC uint32_t mdbx_osal_monotime_to_16dot16(uint64_t monotime);
typedef union bin128 {
__anonymous_struct_extension__ struct { uint64_t x, y; };
__anonymous_struct_extension__ struct { uint32_t a, b, c, d; };
} bin128_t;
MDBX_INTERNAL_FUNC bin128_t mdbx_osal_bootid(void);
/*----------------------------------------------------------------------------*/
/* lck stuff */
#if defined(_WIN32) || defined(_WIN64)
#undef MDBX_OSAL_LOCK
#define MDBX_OSAL_LOCK_SIGN UINT32_C(0xF10C)
#else
#define MDBX_OSAL_LOCK pthread_mutex_t
#define MDBX_OSAL_LOCK_SIGN UINT32_C(0x8017)
#endif /* MDBX_OSAL_LOCK */
/// \brief Initialization of synchronization primitives linked with MDBX_env
/// instance both in LCK-file and within the current process.
/// \param
/// global_uniqueness_flag = true - denotes that there are no other processes
/// working with DB and LCK-file. Thus the function MUST initialize
/// shared synchronization objects in memory-mapped LCK-file.
/// global_uniqueness_flag = false - denotes that at least one process is
/// already working with DB and LCK-file, including the case when DB
/// has already been opened in the current process. Thus the function
/// MUST NOT initialize shared synchronization objects in memory-mapped
/// LCK-file that are already in use.
/// \return Error code or zero on success.
MDBX_INTERNAL_FUNC int mdbx_lck_init(MDBX_env *env,
MDBX_env *inprocess_neighbor,
int global_uniqueness_flag);
/// \brief Disconnects from shared interprocess objects and destructs
/// synchronization objects linked with MDBX_env instance
/// within the current process.
/// \param
/// inprocess_neighbor = NULL - if the current process does not have other
/// instances of MDBX_env linked with the DB being closed.
/// Thus the function MUST check for other processes working with DB or
/// LCK-file, and keep or destroy shared synchronization objects in
/// memory-mapped LCK-file depending on the result.
/// inprocess_neighbor = not-NULL - pointer to another instance of MDBX_env
/// (anyone of there is several) working with DB or LCK-file within the
/// current process. Thus the function MUST NOT try to acquire exclusive
/// lock and/or try to destruct shared synchronization objects linked with
/// DB or LCK-file. Moreover, the implementation MUST ensure correct work
/// of other instances of MDBX_env within the current process, e.g.
/// restore POSIX-fcntl locks after the closing of file descriptors.
/// \return Error code (MDBX_PANIC) or zero on success.
MDBX_INTERNAL_FUNC int mdbx_lck_destroy(MDBX_env *env,
MDBX_env *inprocess_neighbor);
/// \brief Connects to shared interprocess locking objects and tries to acquire
/// the maximum lock level (shared if exclusive is not available)
/// Depending on implementation or/and platform (Windows) this function may
/// acquire the non-OS super-level lock (e.g. for shared synchronization
/// objects initialization), which will be downgraded to OS-exclusive or
/// shared via explicit calling of mdbx_lck_downgrade().
/// \return
/// MDBX_RESULT_TRUE (-1) - if an exclusive lock was acquired and thus
/// the current process is the first and only after the last use of DB.
/// MDBX_RESULT_FALSE (0) - if a shared lock was acquired and thus
/// DB has already been opened and now is used by other processes.
/// Otherwise (not 0 and not -1) - error code.
MDBX_INTERNAL_FUNC int mdbx_lck_seize(MDBX_env *env);
/// \brief Downgrades the level of initially acquired lock to
/// operational level specified by agrument. The reson for such downgrade:
/// - unblocking of other processes that are waiting for access, i.e.
/// if (env->me_flags & MDBX_EXCLUSIVE) != 0, then other processes
/// should be made aware that access is unavailable rather than
/// wait for it.
/// - freeing locks that interfere file operation (expecially for Windows)
/// (env->me_flags & MDBX_EXCLUSIVE) == 0 - downgrade to shared lock.
/// (env->me_flags & MDBX_EXCLUSIVE) != 0 - downgrade to exclusive
/// operational lock.
/// \return Error code or zero on success
MDBX_INTERNAL_FUNC int mdbx_lck_downgrade(MDBX_env *env);
/// \brief Locks LCK-file or/and table of readers for (de)registering.
/// \return Error code or zero on success
MDBX_INTERNAL_FUNC int mdbx_rdt_lock(MDBX_env *env);
/// \brief Unlocks LCK-file or/and table of readers after (de)registering.
MDBX_INTERNAL_FUNC void mdbx_rdt_unlock(MDBX_env *env);
/// \brief Acquires lock for DB change (on writing transaction start)
/// Reading transactions will not be blocked.
/// Declared as LIBMDBX_API because it is used in mdbx_chk.
/// \return Error code or zero on success
LIBMDBX_API int mdbx_txn_lock(MDBX_env *env, bool dontwait);
/// \brief Releases lock once DB changes is made (after writing transaction
/// has finished).
/// Declared as LIBMDBX_API because it is used in mdbx_chk.
LIBMDBX_API void mdbx_txn_unlock(MDBX_env *env);
/// \brief Sets alive-flag of reader presence (indicative lock) for PID of
/// the current process. The function does no more than needed for
/// the correct working of mdbx_rpid_check() in other processes.
/// \return Error code or zero on success
MDBX_INTERNAL_FUNC int mdbx_rpid_set(MDBX_env *env);
/// \brief Resets alive-flag of reader presence (indicative lock)
/// for PID of the current process. The function does no more than needed
/// for the correct working of mdbx_rpid_check() in other processes.
/// \return Error code or zero on success
MDBX_INTERNAL_FUNC int mdbx_rpid_clear(MDBX_env *env);
/// \brief Checks for reading process status with the given pid with help of
/// alive-flag of presence (indicative lock) or using another way.
/// \return
/// MDBX_RESULT_TRUE (-1) - if the reader process with the given PID is alive
/// and working with DB (indicative lock is present).
/// MDBX_RESULT_FALSE (0) - if the reader process with the given PID is absent
/// or not working with DB (indicative lock is not present).
/// Otherwise (not 0 and not -1) - error code.
MDBX_INTERNAL_FUNC int mdbx_rpid_check(MDBX_env *env, uint32_t pid);
#if defined(_WIN32) || defined(_WIN64)
typedef union MDBX_srwlock {
struct {
long volatile readerCount;
long volatile writerCount;
};
RTL_SRWLOCK native;
} MDBX_srwlock;
typedef void(WINAPI *MDBX_srwlock_function)(MDBX_srwlock *);
MDBX_INTERNAL_VAR MDBX_srwlock_function mdbx_srwlock_Init,
mdbx_srwlock_AcquireShared, mdbx_srwlock_ReleaseShared,
mdbx_srwlock_AcquireExclusive, mdbx_srwlock_ReleaseExclusive;
typedef BOOL(WINAPI *MDBX_GetFileInformationByHandleEx)(
_In_ HANDLE hFile, _In_ FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
_Out_ LPVOID lpFileInformation, _In_ DWORD dwBufferSize);
MDBX_INTERNAL_VAR MDBX_GetFileInformationByHandleEx
mdbx_GetFileInformationByHandleEx;
typedef BOOL(WINAPI *MDBX_GetVolumeInformationByHandleW)(
_In_ HANDLE hFile, _Out_opt_ LPWSTR lpVolumeNameBuffer,
_In_ DWORD nVolumeNameSize, _Out_opt_ LPDWORD lpVolumeSerialNumber,
_Out_opt_ LPDWORD lpMaximumComponentLength,
_Out_opt_ LPDWORD lpFileSystemFlags,
_Out_opt_ LPWSTR lpFileSystemNameBuffer, _In_ DWORD nFileSystemNameSize);
MDBX_INTERNAL_VAR MDBX_GetVolumeInformationByHandleW
mdbx_GetVolumeInformationByHandleW;
typedef DWORD(WINAPI *MDBX_GetFinalPathNameByHandleW)(_In_ HANDLE hFile,
_Out_ LPWSTR lpszFilePath,
_In_ DWORD cchFilePath,
_In_ DWORD dwFlags);
MDBX_INTERNAL_VAR MDBX_GetFinalPathNameByHandleW mdbx_GetFinalPathNameByHandleW;
typedef BOOL(WINAPI *MDBX_SetFileInformationByHandle)(
_In_ HANDLE hFile, _In_ FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
_Out_ LPVOID lpFileInformation, _In_ DWORD dwBufferSize);
MDBX_INTERNAL_VAR MDBX_SetFileInformationByHandle
mdbx_SetFileInformationByHandle;
typedef NTSTATUS(NTAPI *MDBX_NtFsControlFile)(
IN HANDLE FileHandle, IN OUT HANDLE Event,
IN OUT PVOID /* PIO_APC_ROUTINE */ ApcRoutine, IN OUT PVOID ApcContext,
OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG FsControlCode,
IN OUT PVOID InputBuffer, IN ULONG InputBufferLength,
OUT OPTIONAL PVOID OutputBuffer, IN ULONG OutputBufferLength);
MDBX_INTERNAL_VAR MDBX_NtFsControlFile mdbx_NtFsControlFile;
typedef uint64_t(WINAPI *MDBX_GetTickCount64)(void);
MDBX_INTERNAL_VAR MDBX_GetTickCount64 mdbx_GetTickCount64;
#if !defined(_WIN32_WINNT_WIN8) || _WIN32_WINNT < _WIN32_WINNT_WIN8
typedef struct _WIN32_MEMORY_RANGE_ENTRY {
PVOID VirtualAddress;
SIZE_T NumberOfBytes;
} WIN32_MEMORY_RANGE_ENTRY, *PWIN32_MEMORY_RANGE_ENTRY;
#endif /* Windows 8.x */
typedef BOOL(WINAPI *MDBX_PrefetchVirtualMemory)(
HANDLE hProcess, ULONG_PTR NumberOfEntries,
PWIN32_MEMORY_RANGE_ENTRY VirtualAddresses, ULONG Flags);
MDBX_INTERNAL_VAR MDBX_PrefetchVirtualMemory mdbx_PrefetchVirtualMemory;
#if 0 /* LY: unused for now */
#if !defined(_WIN32_WINNT_WIN81) || _WIN32_WINNT < _WIN32_WINNT_WIN81
typedef enum OFFER_PRIORITY {
VmOfferPriorityVeryLow = 1,
VmOfferPriorityLow,
VmOfferPriorityBelowNormal,
VmOfferPriorityNormal
} OFFER_PRIORITY;
#endif /* Windows 8.1 */
typedef DWORD(WINAPI *MDBX_DiscardVirtualMemory)(PVOID VirtualAddress,
SIZE_T Size);
MDBX_INTERNAL_VAR MDBX_DiscardVirtualMemory mdbx_DiscardVirtualMemory;
typedef DWORD(WINAPI *MDBX_ReclaimVirtualMemory)(PVOID VirtualAddress,
SIZE_T Size);
MDBX_INTERNAL_VAR MDBX_ReclaimVirtualMemory mdbx_ReclaimVirtualMemory;
typedef DWORD(WINAPI *MDBX_OfferVirtualMemory(
PVOID VirtualAddress,
SIZE_T Size,
OFFER_PRIORITY Priority
);
MDBX_INTERNAL_VAR MDBX_OfferVirtualMemory mdbx_OfferVirtualMemory;
#endif /* unused for now */
#endif /* Windows */
/*----------------------------------------------------------------------------*/
/* Atomics */
#if !defined(__cplusplus) && (__STDC_VERSION__ >= 201112L) && \
!defined(__STDC_NO_ATOMICS__) && \
(__GNUC_PREREQ(4, 9) || __CLANG_PREREQ(3, 8) || \
!(defined(__GNUC__) || defined(__clang__)))
#include <stdatomic.h>
#elif defined(__GNUC__) || defined(__clang__)
/* LY: nothing required */
#elif defined(_MSC_VER)
#pragma warning(disable : 4163) /* 'xyz': not available as an intrinsic */
#pragma warning(disable : 4133) /* 'function': incompatible types - from \
'size_t' to 'LONGLONG' */
#pragma warning(disable : 4244) /* 'return': conversion from 'LONGLONG' to \
'std::size_t', possible loss of data */
#pragma warning(disable : 4267) /* 'function': conversion from 'size_t' to \
'long', possible loss of data */
#pragma intrinsic(_InterlockedExchangeAdd, _InterlockedCompareExchange)
#pragma intrinsic(_InterlockedExchangeAdd64, _InterlockedCompareExchange64)
#elif defined(__APPLE__)
#include <libkern/OSAtomic.h>
#else
#error FIXME atomic-ops
#endif
/*----------------------------------------------------------------------------*/
#if defined(_MSC_VER) && _MSC_VER >= 1900
/* LY: MSVC 2015/2017/2019 has buggy/inconsistent PRIuPTR/PRIxPTR macros
* for internal format-args checker. */
#undef PRIuPTR
#undef PRIiPTR
#undef PRIdPTR
#undef PRIxPTR
#define PRIuPTR "Iu"
#define PRIiPTR "Ii"
#define PRIdPTR "Id"
#define PRIxPTR "Ix"
#define PRIuSIZE "zu"
#define PRIiSIZE "zi"
#define PRIdSIZE "zd"
#define PRIxSIZE "zx"
#endif /* fix PRI*PTR for _MSC_VER */
#ifndef PRIuSIZE
#define PRIuSIZE PRIuPTR
#define PRIiSIZE PRIiPTR
#define PRIdSIZE PRIdPTR
#define PRIxSIZE PRIxPTR
#endif /* PRI*SIZE macros for MSVC */
#ifdef _MSC_VER
#pragma warning(pop)
#endif

View file

@ -0,0 +1,46 @@
/* This is CMake-template for libmdbx's version.c
******************************************************************************/
#include "internals.h"
//#if MDBX_VERSION_MAJOR != ${MDBX_VERSION_MAJOR} || \
// MDBX_VERSION_MINOR != ${MDBX_VERSION_MINOR}
//#error "API version mismatch! Had `git fetch --tags` done?"
//#endif
static const char sourcery[] = STRINGIFY(MDBX_BUILD_SOURCERY);
__dll_export
#ifdef __attribute_used__
__attribute_used__
#elif defined(__GNUC__) || __has_attribute(__used__)
__attribute__((__used__))
#endif
#ifdef __attribute_externally_visible__
__attribute_externally_visible__
#elif (defined(__GNUC__) && !defined(__clang__)) || \
__has_attribute(__externally_visible__)
__attribute__((__externally_visible__))
#endif
const mdbx_version_info mdbx_version = {
${MDBX_VERSION_MAJOR},
${MDBX_VERSION_MINOR},
${MDBX_VERSION_RELEASE},
${MDBX_VERSION_REVISION},
{"@MDBX_GIT_TIMESTAMP@", "@MDBX_GIT_TREE@", "@MDBX_GIT_COMMIT@",
"@MDBX_GIT_DESCRIBE@"},
sourcery};
__dll_export
#ifdef __attribute_used__
__attribute_used__
#elif defined(__GNUC__) || __has_attribute(__used__)
__attribute__((__used__))
#endif
#ifdef __attribute_externally_visible__
__attribute_externally_visible__
#elif (defined(__GNUC__) && !defined(__clang__)) || \
__has_attribute(__externally_visible__)
__attribute__((__externally_visible__))
#endif
const char *const mdbx_sourcery_anchor = sourcery;

View file

@ -0,0 +1,87 @@
.\" Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_CHK 1 "2019-09-10" "MDBX 0.x"
.SH NAME
mdbx_chk \- MDBX checking tool
.SH SYNOPSIS
.B mdbx_chk
[\c
.BR \-V ]
[\c
.BR \-v [ v [ v ]]]
[\c
.BR \-n ]
[\c
.BR \-q ]
[\c
.BR \-w ]
[\c
.BR \-d ]
[\c
.BI \-s \ subdb\fR]
[\c
.BR \-c ]
[\c
.BR \-i ]
.BR \ envpath
.SH DESCRIPTION
The
.B mdbx_chk
utility intended to check an MDBX database file.
.SH OPTIONS
.TP
.BR \-V
Write the library version number to the standard output, and exit.
.TP
.BR \-v
Produce verbose output, including summarize space and page usage statistics.
If \fB\-vv\fP is given, be more verbose, show summarized B-tree info
and space allocation.
If \fB\-vvv\fP is given, be more verbose, include summarized statistics
of leaf B-tree pages.
If \fB\-vvvv\fP is given, be even more verbose, show info of each page
during B-tree traversal and basic info of each GC record.
If \fB\-vvvvv\fP is given, turn maximal verbosity, display the full list
of page IDs in the GC records and size of each key-value pair of database(s).
.TP
.BR \-n
Open MDBX environment(s) which do not use subdirectories.
.TP
.BR \-q
Be quiet; do not output anything even if an error was detected.
.TP
.BR \-w
Open environment in read-write mode and lock for writing while checking.
This could be impossible if environment already used by another process(s)
in an incompatible read-write mode. This allow rollback to last steady commit
(in case environment was not closed properly) and then check transaction IDs
of meta-pages. Otherwise, without \fB\-w\fP option environment will be
opened in read-only mode.
.TP
.BR \-d
Disable page-by-page traversal of B-tree. In this case, without B-tree
traversal, it is unable to check for lost-unused pages nor for double-used
pages.
.TP
.BR \-s \ subdb
Verify and show info only for a specific subdatabase.
.TP
.BR \-c
Force using cooperative mode while opening environment, i.e. don't try to open
in exclusive/monopolistic mode. Only exclusive/monopolistic mode allow complete
check, including full check of all meta-pages and actual size of database file.
.TP
.BR \-i
Ignore wrong order errors, which will likely false-positive if custom
comparator(s) was used.
.SH DIAGNOSTICS
Exit status is zero if no errors occur. Errors result in a non-zero exit status
and a diagnostic message being written to standard error
if no quiet mode was requested.
.SH "SEE ALSO"
.BR mdbx_stat (1),
.BR mdbx_copy (1),
.BR mdbx_dump (1),
.BR mdbx_load (1)
.SH AUTHOR
Leonid Yuriev <https://github.com/leo-yuriev>

View file

@ -0,0 +1,60 @@
.\" Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>.
.\" Copyright 2012-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_COPY 1 "2019-09-10" "MDBX 0.x"
.SH NAME
mdbx_copy \- MDBX environment copy tool
.SH SYNOPSIS
.B mdbx_copy
[\c
.BR \-V ]
[\c
.BR \-c ]
[\c
.BR \-n ]
.B srcpath
[\c
.BR dstpath ]
.SH DESCRIPTION
The
.B mdbx_copy
utility copies an MDBX environment. The environment can
be copied regardless of whether it is currently in use.
No lockfile is created, since it gets recreated at need.
If
.I dstpath
is specified it must be the path of an empty directory
for storing the backup. Otherwise, the backup will be
written to stdout.
.SH OPTIONS
.TP
.BR \-V
Write the library version number to the standard output, and exit.
.TP
.BR \-c
Compact while copying. Only current data pages will be copied; freed
or unused pages will be omitted from the copy. This option will
slow down the backup process as it is more CPU-intensive.
Currently it fails if the environment has suffered a page leak.
.TP
.BR \-n
Open MDBX environment(s) which do not use subdirectories.
.SH DIAGNOSTICS
Exit status is zero if no errors occur.
Errors result in a non-zero exit status and
a diagnostic message being written to standard error.
.SH CAVEATS
This utility can trigger significant file size growth if run
in parallel with write transactions, because pages which they
free during copying cannot be reused until the copy is done.
.SH "SEE ALSO"
.BR mdbx_dump (1),
.BR mdbx_chk (1),
.BR mdbx_stat (1),
.BR mdbx_load (1)
.SH AUTHOR
Howard Chu of Symas Corporation <http://www.symas.com>

View file

@ -0,0 +1,80 @@
.\" Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>.
.\" Copyright 2014-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_DUMP 1 "2019-09-10" "MDBX 0.x"
.SH NAME
mdbx_dump \- MDBX environment export tool
.SH SYNOPSIS
.B mdbx_dump
[\c
.BR \-V ]
[\c
.BI \-f \ file\fR]
[\c
.BR \-l ]
[\c
.BR \-n ]
[\c
.BR \-p ]
[\c
.BR \-a \ |
.BI \-s \ subdb\fR]
.BR \ envpath
.SH DESCRIPTION
The
.B mdbx_dump
utility reads a database and writes its contents to the
standard output using a portable flat-text format
understood by the
.BR mdbx_load (1)
utility.
.SH OPTIONS
.TP
.BR \-V
Write the library version number to the standard output, and exit.
.TP
.BR \-f \ file
Write to the specified file instead of to the standard output.
.TP
.BR \-l
List the databases stored in the environment. Just the
names will be listed, no data will be output.
.TP
.BR \-n
Dump an MDBX database which does not use subdirectories.
.TP
.BR \-p
If characters in either the key or data items are printing characters (as
defined by isprint(3)), output them directly. This option permits users to
use standard text editors and tools to modify the contents of databases.
Note: different systems may have different notions about what characters
are considered printing characters, and databases dumped in this manner may
be less portable to external systems.
.TP
.BR \-a
Dump all of the subdatabases in the environment.
.TP
.BR \-s \ subdb
Dump a specific subdatabase. If no database is specified, only the main database is dumped.
.SH DIAGNOSTICS
Exit status is zero if no errors occur.
Errors result in a non-zero exit status and
a diagnostic message being written to standard error.
Dumping and reloading databases that use user-defined comparison functions
will result in new databases that use the default comparison functions.
\fBIn this case it is quite likely that the reloaded database will be
damaged beyond repair permitting neither record storage nor retrieval.\fP
The only available workaround is to modify the source for the
.BR mdbx_load (1)
utility to load the database using the correct comparison functions.
.SH "SEE ALSO"
.BR mdbx_load (1),
.BR mdbx_copy (1),
.BR mdbx_chk (1),
.BR mdbx_stat (1)
.SH AUTHOR
Howard Chu of Symas Corporation <http://www.symas.com>

View file

@ -0,0 +1,89 @@
.\" Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>.
.\" Copyright 2014-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_LOAD 1 "2019-09-10" "MDBX 0.x"
.SH NAME
mdbx_load \- MDBX environment import tool
.SH SYNOPSIS
.B mdbx_load
[\c
.BR \-V ]
[\c
.BI \-f \ file\fR]
[\c
.BR \-n ]
[\c
.BI \-s \ subdb\fR]
[\c
.BR \-N ]
[\c
.BR \-T ]
.BR \ envpath
.SH DESCRIPTION
The
.B mdbx_load
utility reads from the standard input and loads it into the
MDBX environment
.BR envpath .
The input to
.B mdbx_load
must be in the output format specified by the
.BR mdbx_dump (1)
utility or as specified by the
.B -T
option below.
.SH OPTIONS
.TP
.BR \-V
Write the library version number to the standard output, and exit.
.TP
.BR \-a
Append all records in the order they appear in the input. The input is assumed to already be
in correctly sorted order and no sorting or checking for redundant values will be performed.
This option must be used to reload data that was produced by running
.B mdbx_dump
on a database that uses custom compare functions.
.TP
.BR \-f \ file
Read from the specified file instead of from the standard input.
.TP
.BR \-n
Load an MDBX database which does not use subdirectories.
.TP
.BR \-s \ subdb
Load a specific subdatabase. If no database is specified, data is loaded into the main database.
.TP
.BR \-N
Don't overwrite existing records when loading into an already existing database; just skip them.
.TP
.BR \-T
Load data from simple text files. The input must be paired lines of text, where the first
line of the pair is the key item, and the second line of the pair is its corresponding
data item.
A simple escape mechanism, where newline and backslash (\\) characters are special, is
applied to the text input. Newline characters are interpreted as record separators.
Backslash characters in the text will be interpreted in one of two ways: If the backslash
character precedes another backslash character, the pair will be interpreted as a literal
backslash. If the backslash character precedes any other character, the two characters
following the backslash will be interpreted as a hexadecimal specification of a single
character; for example, \\0a is a newline character in the ASCII character set.
For this reason, any backslash or newline characters that naturally occur in the text
input must be escaped to avoid misinterpretation by
.BR mdbx_load .
.SH DIAGNOSTICS
Exit status is zero if no errors occur.
Errors result in a non-zero exit status and
a diagnostic message being written to standard error.
.SH "SEE ALSO"
.BR mdbx_dump (1),
.BR mdbx_chk (1),
.BR mdbx_stat (1),
.BR mdbx_copy (1)
.SH AUTHOR
Howard Chu of Symas Corporation <http://www.symas.com>

View file

@ -0,0 +1,69 @@
.\" Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>.
.\" Copyright 2012-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_STAT 1 "2019-09-10" "MDBX 0.x"
.SH NAME
mdbx_stat \- MDBX environment status tool
.SH SYNOPSIS
.B mdbx_stat
[\c
.BR \-V ]
[\c
.BR \-e ]
[\c
.BR \-f [ f [ f ]]]
[\c
.BR \-n ]
[\c
.BR \-r [ r ]]
[\c
.BR \-a \ |
.BI \-s \ subdb\fR]
.BR \ envpath
.SH DESCRIPTION
The
.B mdbx_stat
utility displays the status of an MDBX environment.
.SH OPTIONS
.TP
.BR \-V
Write the library version number to the standard output, and exit.
.TP
.BR \-e
Display information about the database environment.
.TP
.BR \-f
Display information about the environment freelist.
If \fB\-ff\fP is given, summarize each freelist entry.
If \fB\-fff\fP is given, display the full list of page IDs in the freelist.
.TP
.BR \-n
Display the status of an MDBX database which does not use subdirectories.
.TP
.BR \-r
Display information about the environment reader table.
Shows the process ID, thread ID, and transaction ID for each active
reader slot. The process ID and transaction ID are in decimal, the
thread ID is in hexadecimal. The transaction ID is displayed as "-"
if the reader does not currently have a read transaction open.
If \fB\-rr\fP is given, check for stale entries in the reader
table and clear them. The reader table will be printed again
after the check is performed.
.TP
.BR \-a
Display the status of all of the subdatabases in the environment.
.TP
.BR \-s \ subdb
Display the status of a specific subdatabase.
.SH DIAGNOSTICS
Exit status is zero if no errors occur.
Errors result in a non-zero exit status and
a diagnostic message being written to standard error.
.SH "SEE ALSO"
.BR mdbx_chk (1),
.BR mdbx_copy (1),
.BR mdbx_dump (1),
.BR mdbx_load (1)
.SH AUTHOR
Howard Chu of Symas Corporation <http://www.symas.com>

View file

@ -0,0 +1,42 @@
set(MDBX_TOOLS mdbx_chk mdbx_copy mdbx_dump mdbx_load mdbx_stat)
# use, i.e. don't skip the full RPATH for the build tree
set(CMAKE_SKIP_BUILD_RPATH FALSE)
# when building, don't use the install RPATH already (but later on when installing)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# the RPATH to be used when installing, but only if it's not a system directory
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
if(isSystemDir EQUAL -1)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
else()
set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib")
endif()
endif()
foreach(TOOL ${MDBX_TOOLS})
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
add_executable(${TOOL} ${TOOL}.c wingetopt.c wingetopt.h)
else()
add_executable(${TOOL} ${TOOL}.c)
endif()
target_link_libraries(${TOOL} mdbx ${CMAKE_THREAD_LIBS_INIT})
set_target_properties(${TOOL} PROPERTIES
C_STANDARD ${MDBX_C_STANDARD} C_STANDARD_REQUIRED ON
INTERPROCEDURAL_OPTIMIZATION $<BOOL:${INTERPROCEDURAL_OPTIMIZATION}>)
# install(TARGETS ${TOOL} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin COMPONENT mdbx)
# install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../man1/${TOOL}.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1 COMPONENT mdbx)
endforeach()
if(LIB_MATH)
target_link_libraries(mdbx_chk ${LIB_MATH})
target_link_libraries(mdbx_stat ${LIB_MATH})
endif()

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,130 @@
/* mdbx_copy.c - memory-mapped database backup tool */
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>. */
#ifdef _MSC_VER
#if _MSC_VER > 1800
#pragma warning(disable : 4464) /* relative include path contains '..' */
#endif
#pragma warning(disable : 4996) /* The POSIX name is deprecated... */
#endif /* _MSC_VER (warnings) */
#define MDBX_TOOLS /* Avoid using internal mdbx_assert() */
#include "../elements/internals.h"
#if defined(_WIN32) || defined(_WIN64)
#include "wingetopt.h"
static volatile BOOL user_break;
static BOOL WINAPI ConsoleBreakHandlerRoutine(DWORD dwCtrlType) {
(void)dwCtrlType;
user_break = true;
return true;
}
#else /* WINDOWS */
static volatile sig_atomic_t user_break;
static void signal_handler(int sig) {
(void)sig;
user_break = 1;
}
#endif /* !WINDOWS */
int main(int argc, char *argv[]) {
int rc;
MDBX_env *env = NULL;
const char *progname = argv[0], *act;
unsigned flags = MDBX_RDONLY;
unsigned cpflags = 0;
bool quiet = false;
for (; argc > 1 && argv[1][0] == '-'; argc--, argv++) {
if (argv[1][1] == 'n' && argv[1][2] == '\0')
flags |= MDBX_NOSUBDIR;
else if (argv[1][1] == 'c' && argv[1][2] == '\0')
cpflags |= MDBX_CP_COMPACT;
else if (argv[1][1] == 'q' && argv[1][2] == '\0')
quiet = true;
else if (argv[1][1] == 'V' && argv[1][2] == '\0') {
printf("mdbx_copy version %d.%d.%d.%d\n"
" - source: %s %s, commit %s, tree %s\n"
" - anchor: %s\n"
" - build: %s for %s by %s\n"
" - flags: %s\n"
" - options: %s\n",
mdbx_version.major, mdbx_version.minor, mdbx_version.release,
mdbx_version.revision, mdbx_version.git.describe,
mdbx_version.git.datetime, mdbx_version.git.commit,
mdbx_version.git.tree, mdbx_sourcery_anchor, mdbx_build.datetime,
mdbx_build.target, mdbx_build.compiler, mdbx_build.flags,
mdbx_build.options);
return EXIT_SUCCESS;
} else
argc = 0;
}
if (argc < 2 || argc > 3) {
fprintf(stderr, "usage: %s [-V] [-q] [-c] [-n] srcpath [dstpath]\n",
progname);
exit(EXIT_FAILURE);
}
#if defined(_WIN32) || defined(_WIN64)
SetConsoleCtrlHandler(ConsoleBreakHandlerRoutine, true);
#else
#ifdef SIGPIPE
signal(SIGPIPE, signal_handler);
#endif
#ifdef SIGHUP
signal(SIGHUP, signal_handler);
#endif
signal(SIGINT, signal_handler);
signal(SIGTERM, signal_handler);
#endif /* !WINDOWS */
if (!quiet) {
fprintf((argc == 2) ? stderr : stdout,
"mdbx_copy %s (%s, T-%s)\nRunning for copy %s to %s...\n",
mdbx_version.git.describe, mdbx_version.git.datetime,
mdbx_version.git.tree, argv[1], (argc == 2) ? "stdout" : argv[2]);
fflush(NULL);
}
act = "opening environment";
rc = mdbx_env_create(&env);
if (rc == MDBX_SUCCESS) {
rc = mdbx_env_open(env, argv[1], flags, 0640);
}
if (rc == MDBX_SUCCESS) {
act = "copying";
if (argc == 2) {
mdbx_filehandle_t fd;
#if defined(_WIN32) || defined(_WIN64)
fd = GetStdHandle(STD_OUTPUT_HANDLE);
#else
fd = fileno(stdout);
#endif
rc = mdbx_env_copy2fd(env, fd, cpflags);
} else
rc = mdbx_env_copy(env, argv[2], cpflags);
}
if (rc)
fprintf(stderr, "%s: %s failed, error %d (%s)\n", progname, act, rc,
mdbx_strerror(rc));
mdbx_env_close(env);
return rc ? EXIT_FAILURE : EXIT_SUCCESS;
}

View file

@ -0,0 +1,352 @@
/* mdbx_dump.c - memory-mapped database dump tool */
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>. */
#ifdef _MSC_VER
#if _MSC_VER > 1800
#pragma warning(disable : 4464) /* relative include path contains '..' */
#endif
#pragma warning(disable : 4996) /* The POSIX name is deprecated... */
#endif /* _MSC_VER (warnings) */
#define MDBX_TOOLS /* Avoid using internal mdbx_assert() */
#include "../elements/internals.h"
#include <ctype.h>
#define PRINT 1
static int mode;
typedef struct flagbit {
int bit;
char *name;
} flagbit;
flagbit dbflags[] = {{MDBX_REVERSEKEY, "reversekey"},
{MDBX_DUPSORT, "dupsort"},
{MDBX_INTEGERKEY, "integerkey"},
{MDBX_DUPFIXED, "dupfixed"},
{MDBX_INTEGERDUP, "integerdup"},
{MDBX_REVERSEDUP, "reversedup"},
{0, NULL}};
#if defined(_WIN32) || defined(_WIN64)
#include "wingetopt.h"
static volatile BOOL user_break;
static BOOL WINAPI ConsoleBreakHandlerRoutine(DWORD dwCtrlType) {
(void)dwCtrlType;
user_break = true;
return true;
}
#else /* WINDOWS */
static volatile sig_atomic_t user_break;
static void signal_handler(int sig) {
(void)sig;
user_break = 1;
}
#endif /* !WINDOWS */
static const char hexc[] = "0123456789abcdef";
static void dumpbyte(unsigned char c) {
putchar(hexc[c >> 4]);
putchar(hexc[c & 0xf]);
}
static void text(MDBX_val *v) {
unsigned char *c, *end;
putchar(' ');
c = v->iov_base;
end = c + v->iov_len;
while (c < end) {
if (isprint(*c) && *c != '\\') {
putchar(*c);
} else {
putchar('\\');
dumpbyte(*c);
}
c++;
}
putchar('\n');
}
static void dumpval(MDBX_val *v) {
unsigned char *c, *end;
putchar(' ');
c = v->iov_base;
end = c + v->iov_len;
while (c < end) {
dumpbyte(*c++);
}
putchar('\n');
}
/* Dump in BDB-compatible format */
static int dumpit(MDBX_txn *txn, MDBX_dbi dbi, char *name) {
MDBX_cursor *mc;
MDBX_stat ms;
MDBX_val key, data;
MDBX_envinfo info;
unsigned int flags;
int rc, i;
rc = mdbx_dbi_flags(txn, dbi, &flags);
if (rc)
return rc;
rc = mdbx_dbi_stat(txn, dbi, &ms, sizeof(ms));
if (rc)
return rc;
rc = mdbx_env_info(mdbx_txn_env(txn), &info, sizeof(info));
if (rc)
return rc;
printf("VERSION=3\n");
printf("format=%s\n", mode & PRINT ? "print" : "bytevalue");
if (name)
printf("database=%s\n", name);
printf("type=btree\n");
printf("mapsize=%" PRIu64 "\n", info.mi_mapsize);
printf("maxreaders=%u\n", info.mi_maxreaders);
for (i = 0; dbflags[i].bit; i++)
if (flags & dbflags[i].bit)
printf("%s=1\n", dbflags[i].name);
printf("db_pagesize=%d\n", ms.ms_psize);
printf("HEADER=END\n");
rc = mdbx_cursor_open(txn, dbi, &mc);
if (rc)
return rc;
while ((rc = mdbx_cursor_get(mc, &key, &data, MDBX_NEXT)) == MDBX_SUCCESS) {
if (user_break) {
rc = MDBX_EINTR;
break;
}
if (mode & PRINT) {
text(&key);
text(&data);
} else {
dumpval(&key);
dumpval(&data);
}
}
printf("DATA=END\n");
if (rc == MDBX_NOTFOUND)
rc = MDBX_SUCCESS;
return rc;
}
static void usage(char *prog) {
fprintf(stderr,
"usage: %s [-V] [-f output] [-l] [-n] [-p] [-a|-s subdb] dbpath\n",
prog);
exit(EXIT_FAILURE);
}
int main(int argc, char *argv[]) {
int i, rc;
MDBX_env *env;
MDBX_txn *txn;
MDBX_dbi dbi;
char *prog = argv[0];
char *envname;
char *subname = NULL;
int alldbs = 0, envflags = 0, list = 0;
if (argc < 2)
usage(prog);
/* -a: dump main DB and all subDBs
* -s: dump only the named subDB
* -n: use NOSUBDIR flag on env_open
* -p: use printable characters
* -f: write to file instead of stdout
* -V: print version and exit
* (default) dump only the main DB
*/
while ((i = getopt(argc, argv, "af:lnps:V")) != EOF) {
switch (i) {
case 'V':
printf("mdbx_dump version %d.%d.%d.%d\n"
" - source: %s %s, commit %s, tree %s\n"
" - anchor: %s\n"
" - build: %s for %s by %s\n"
" - flags: %s\n"
" - options: %s\n",
mdbx_version.major, mdbx_version.minor, mdbx_version.release,
mdbx_version.revision, mdbx_version.git.describe,
mdbx_version.git.datetime, mdbx_version.git.commit,
mdbx_version.git.tree, mdbx_sourcery_anchor, mdbx_build.datetime,
mdbx_build.target, mdbx_build.compiler, mdbx_build.flags,
mdbx_build.options);
return EXIT_SUCCESS;
case 'l':
list = 1;
/*FALLTHROUGH*/;
__fallthrough;
case 'a':
if (subname)
usage(prog);
alldbs++;
break;
case 'f':
if (freopen(optarg, "w", stdout) == NULL) {
fprintf(stderr, "%s: %s: reopen: %s\n", prog, optarg,
mdbx_strerror(errno));
exit(EXIT_FAILURE);
}
break;
case 'n':
envflags |= MDBX_NOSUBDIR;
break;
case 'p':
mode |= PRINT;
break;
case 's':
if (alldbs)
usage(prog);
subname = optarg;
break;
default:
usage(prog);
}
}
if (optind != argc - 1)
usage(prog);
#if defined(_WIN32) || defined(_WIN64)
SetConsoleCtrlHandler(ConsoleBreakHandlerRoutine, true);
#else
#ifdef SIGPIPE
signal(SIGPIPE, signal_handler);
#endif
#ifdef SIGHUP
signal(SIGHUP, signal_handler);
#endif
signal(SIGINT, signal_handler);
signal(SIGTERM, signal_handler);
#endif /* !WINDOWS */
envname = argv[optind];
printf("mdbx_dump %s (%s, T-%s)\nRunning for %s...\n",
mdbx_version.git.describe, mdbx_version.git.datetime,
mdbx_version.git.tree, envname);
fflush(NULL);
rc = mdbx_env_create(&env);
if (rc) {
fprintf(stderr, "mdbx_env_create failed, error %d %s\n", rc,
mdbx_strerror(rc));
return EXIT_FAILURE;
}
if (alldbs || subname) {
mdbx_env_set_maxdbs(env, 2);
}
rc = mdbx_env_open(env, envname, envflags | MDBX_RDONLY, 0664);
if (rc) {
fprintf(stderr, "mdbx_env_open failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto env_close;
}
rc = mdbx_txn_begin(env, NULL, MDBX_RDONLY, &txn);
if (rc) {
fprintf(stderr, "mdbx_txn_begin failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto env_close;
}
rc = mdbx_dbi_open(txn, subname, 0, &dbi);
if (rc) {
fprintf(stderr, "mdbx_open failed, error %d %s\n", rc, mdbx_strerror(rc));
goto txn_abort;
}
if (alldbs) {
MDBX_cursor *cursor;
MDBX_val key;
int count = 0;
rc = mdbx_cursor_open(txn, dbi, &cursor);
if (rc) {
fprintf(stderr, "mdbx_cursor_open failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
while ((rc = mdbx_cursor_get(cursor, &key, NULL, MDBX_NEXT_NODUP)) == 0) {
if (user_break) {
rc = MDBX_EINTR;
break;
}
char *str;
MDBX_dbi db2;
if (memchr(key.iov_base, '\0', key.iov_len))
continue;
count++;
str = mdbx_malloc(key.iov_len + 1);
memcpy(str, key.iov_base, key.iov_len);
str[key.iov_len] = '\0';
rc = mdbx_dbi_open(txn, str, 0, &db2);
if (rc == MDBX_SUCCESS) {
if (list) {
printf("%s\n", str);
list++;
} else {
rc = dumpit(txn, db2, str);
if (rc)
break;
}
mdbx_dbi_close(env, db2);
}
mdbx_free(str);
if (rc)
continue;
}
mdbx_cursor_close(cursor);
if (!count) {
fprintf(stderr, "%s: %s does not contain multiple databases\n", prog,
envname);
rc = MDBX_NOTFOUND;
} else if (rc == MDBX_INCOMPATIBLE) {
/* LY: the record it not a named sub-db. */
rc = MDBX_SUCCESS;
}
} else {
rc = dumpit(txn, dbi, subname);
}
if (rc && rc != MDBX_NOTFOUND)
fprintf(stderr, "%s: %s: %s\n", prog, envname, mdbx_strerror(rc));
mdbx_dbi_close(env, dbi);
txn_abort:
mdbx_txn_abort(txn);
env_close:
mdbx_env_close(env);
return rc ? EXIT_FAILURE : EXIT_SUCCESS;
}

View file

@ -0,0 +1,567 @@
/* mdbx_load.c - memory-mapped database load tool */
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>. */
#ifdef _MSC_VER
#if _MSC_VER > 1800
#pragma warning(disable : 4464) /* relative include path contains '..' */
#endif
#pragma warning(disable : 4996) /* The POSIX name is deprecated... */
#endif /* _MSC_VER (warnings) */
#define MDBX_TOOLS /* Avoid using internal mdbx_assert() */
#include "../elements/internals.h"
#include <ctype.h>
#if defined(_WIN32) || defined(_WIN64)
#include "wingetopt.h"
static volatile BOOL user_break;
static BOOL WINAPI ConsoleBreakHandlerRoutine(DWORD dwCtrlType) {
(void)dwCtrlType;
user_break = true;
return true;
}
#else /* WINDOWS */
static volatile sig_atomic_t user_break;
static void signal_handler(int sig) {
(void)sig;
user_break = 1;
}
#endif /* !WINDOWS */
#define PRINT 1
#define NOHDR 2
static int mode;
static char *subname = NULL;
static size_t lineno;
static int version;
static int dbi_flags;
static char *prog;
static int Eof;
static MDBX_envinfo envinfo;
static MDBX_val kbuf, dbuf;
static MDBX_val k0buf;
#define STRLENOF(s) (sizeof(s) - 1)
typedef struct flagbit {
int bit;
char *name;
int len;
} flagbit;
#define S(s) s, STRLENOF(s)
flagbit dbflags[] = {{MDBX_REVERSEKEY, S("reversekey")},
{MDBX_DUPSORT, S("dupsort")},
{MDBX_INTEGERKEY, S("integerkey")},
{MDBX_DUPFIXED, S("dupfixed")},
{MDBX_INTEGERDUP, S("integerdup")},
{MDBX_REVERSEDUP, S("reversedup")},
{0, NULL, 0}};
static void readhdr(void) {
char *ptr;
dbi_flags = 0;
while (fgets(dbuf.iov_base, (int)dbuf.iov_len, stdin) != NULL) {
lineno++;
if (!strncmp(dbuf.iov_base, "db_pagesize=", STRLENOF("db_pagesize=")) ||
!strncmp(dbuf.iov_base, "duplicates=", STRLENOF("duplicates="))) {
/* LY: silently ignore information fields. */
continue;
} else if (!strncmp(dbuf.iov_base, "VERSION=", STRLENOF("VERSION="))) {
version = atoi((char *)dbuf.iov_base + STRLENOF("VERSION="));
if (version > 3) {
fprintf(stderr, "%s: line %" PRIiSIZE ": unsupported VERSION %d\n",
prog, lineno, version);
exit(EXIT_FAILURE);
}
} else if (!strncmp(dbuf.iov_base, "HEADER=END", STRLENOF("HEADER=END"))) {
break;
} else if (!strncmp(dbuf.iov_base, "format=", STRLENOF("format="))) {
if (!strncmp((char *)dbuf.iov_base + STRLENOF("FORMAT="), "print",
STRLENOF("print")))
mode |= PRINT;
else if (strncmp((char *)dbuf.iov_base + STRLENOF("FORMAT="), "bytevalue",
STRLENOF("bytevalue"))) {
fprintf(stderr, "%s: line %" PRIiSIZE ": unsupported FORMAT %s\n", prog,
lineno, (char *)dbuf.iov_base + STRLENOF("FORMAT="));
exit(EXIT_FAILURE);
}
} else if (!strncmp(dbuf.iov_base, "database=", STRLENOF("database="))) {
ptr = memchr(dbuf.iov_base, '\n', dbuf.iov_len);
if (ptr)
*ptr = '\0';
if (subname)
mdbx_free(subname);
subname = mdbx_strdup((char *)dbuf.iov_base + STRLENOF("database="));
} else if (!strncmp(dbuf.iov_base, "type=", STRLENOF("type="))) {
if (strncmp((char *)dbuf.iov_base + STRLENOF("type="), "btree",
STRLENOF("btree"))) {
fprintf(stderr, "%s: line %" PRIiSIZE ": unsupported type %s\n", prog,
lineno, (char *)dbuf.iov_base + STRLENOF("type="));
exit(EXIT_FAILURE);
}
} else if (!strncmp(dbuf.iov_base, "mapaddr=", STRLENOF("mapaddr="))) {
int i;
ptr = memchr(dbuf.iov_base, '\n', dbuf.iov_len);
if (ptr)
*ptr = '\0';
void *unused;
i = sscanf((char *)dbuf.iov_base + STRLENOF("mapaddr="), "%p", &unused);
if (i != 1) {
fprintf(stderr, "%s: line %" PRIiSIZE ": invalid mapaddr %s\n", prog,
lineno, (char *)dbuf.iov_base + STRLENOF("mapaddr="));
exit(EXIT_FAILURE);
}
} else if (!strncmp(dbuf.iov_base, "mapsize=", STRLENOF("mapsize="))) {
int i;
ptr = memchr(dbuf.iov_base, '\n', dbuf.iov_len);
if (ptr)
*ptr = '\0';
i = sscanf((char *)dbuf.iov_base + STRLENOF("mapsize="), "%" PRIu64,
&envinfo.mi_mapsize);
if (i != 1) {
fprintf(stderr, "%s: line %" PRIiSIZE ": invalid mapsize %s\n", prog,
lineno, (char *)dbuf.iov_base + STRLENOF("mapsize="));
exit(EXIT_FAILURE);
}
} else if (!strncmp(dbuf.iov_base,
"maxreaders=", STRLENOF("maxreaders="))) {
int i;
ptr = memchr(dbuf.iov_base, '\n', dbuf.iov_len);
if (ptr)
*ptr = '\0';
i = sscanf((char *)dbuf.iov_base + STRLENOF("maxreaders="), "%u",
&envinfo.mi_maxreaders);
if (i != 1) {
fprintf(stderr, "%s: line %" PRIiSIZE ": invalid maxreaders %s\n", prog,
lineno, (char *)dbuf.iov_base + STRLENOF("maxreaders="));
exit(EXIT_FAILURE);
}
} else {
int i;
for (i = 0; dbflags[i].bit; i++) {
if (!strncmp(dbuf.iov_base, dbflags[i].name, dbflags[i].len) &&
((char *)dbuf.iov_base)[dbflags[i].len] == '=') {
if (((char *)dbuf.iov_base)[dbflags[i].len + 1] == '1')
dbi_flags |= dbflags[i].bit;
break;
}
}
if (!dbflags[i].bit) {
ptr = memchr(dbuf.iov_base, '=', dbuf.iov_len);
if (!ptr) {
fprintf(stderr, "%s: line %" PRIiSIZE ": unexpected format\n", prog,
lineno);
exit(EXIT_FAILURE);
} else {
*ptr = '\0';
fprintf(stderr,
"%s: line %" PRIiSIZE ": unrecognized keyword ignored: %s\n",
prog, lineno, (char *)dbuf.iov_base);
}
}
}
}
}
static void badend(void) {
fprintf(stderr, "%s: line %" PRIiSIZE ": unexpected end of input\n", prog,
lineno);
}
static int unhex(unsigned char *c2) {
int x, c;
x = *c2++ & 0x4f;
if (x & 0x40)
x -= 55;
c = x << 4;
x = *c2 & 0x4f;
if (x & 0x40)
x -= 55;
c |= x;
return c;
}
static int readline(MDBX_val *out, MDBX_val *buf) {
unsigned char *c1, *c2, *end;
size_t len, l2;
int c;
if (!(mode & NOHDR)) {
c = fgetc(stdin);
if (c == EOF) {
Eof = 1;
return EOF;
}
if (c != ' ') {
lineno++;
if (fgets(buf->iov_base, (int)buf->iov_len, stdin) == NULL) {
badend:
Eof = 1;
badend();
return EOF;
}
if (c == 'D' && !strncmp(buf->iov_base, "ATA=END", STRLENOF("ATA=END")))
return EOF;
goto badend;
}
}
if (fgets(buf->iov_base, (int)buf->iov_len, stdin) == NULL) {
Eof = 1;
return EOF;
}
lineno++;
c1 = buf->iov_base;
len = strlen((char *)c1);
l2 = len;
/* Is buffer too short? */
while (c1[len - 1] != '\n') {
buf->iov_base = mdbx_realloc(buf->iov_base, buf->iov_len * 2);
if (!buf->iov_base) {
Eof = 1;
fprintf(stderr, "%s: line %" PRIiSIZE ": out of memory, line too long\n",
prog, lineno);
return EOF;
}
c1 = buf->iov_base;
c1 += l2;
if (fgets((char *)c1, (int)buf->iov_len + 1, stdin) == NULL) {
Eof = 1;
badend();
return EOF;
}
buf->iov_len *= 2;
len = strlen((char *)c1);
l2 += len;
}
c1 = c2 = buf->iov_base;
len = l2;
c1[--len] = '\0';
end = c1 + len;
if (mode & PRINT) {
while (c2 < end) {
if (unlikely(*c2 == '\\')) {
if (c2[1] == '\\') {
*c1++ = '\\';
} else {
if (c2 + 3 > end || !isxdigit(c2[1]) || !isxdigit(c2[2])) {
Eof = 1;
badend();
return EOF;
}
*c1++ = (char)unhex(++c2);
}
c2 += 2;
} else {
/* copies are redundant when no escapes were used */
*c1++ = *c2++;
}
}
} else {
/* odd length not allowed */
if (len & 1) {
Eof = 1;
badend();
return EOF;
}
while (c2 < end) {
if (!isxdigit(*c2) || !isxdigit(c2[1])) {
Eof = 1;
badend();
return EOF;
}
*c1++ = (char)unhex(c2);
c2 += 2;
}
}
c2 = out->iov_base = buf->iov_base;
out->iov_len = c1 - c2;
return 0;
}
static void usage(void) {
fprintf(stderr,
"usage: %s [-V] [-a] [-f input] [-n] [-s name] [-N] [-T] dbpath\n",
prog);
exit(EXIT_FAILURE);
}
static int anyway_greater(const MDBX_val *a, const MDBX_val *b) {
(void)a;
(void)b;
return 1;
}
int main(int argc, char *argv[]) {
int i, rc;
MDBX_env *env = NULL;
MDBX_txn *txn = NULL;
MDBX_cursor *mc = NULL;
MDBX_dbi dbi;
char *envname = NULL;
int envflags = MDBX_UTTERLY_NOSYNC, putflags = 0;
int append = 0;
MDBX_val prevk;
prog = argv[0];
if (argc < 2)
usage();
/* -a: append records in input order
* -f: load file instead of stdin
* -n: use NOSUBDIR flag on env_open
* -s: load into named subDB
* -N: use NOOVERWRITE on puts
* -T: read plaintext
* -V: print version and exit
*/
while ((i = getopt(argc, argv, "af:ns:NTV")) != EOF) {
switch (i) {
case 'V':
printf("mdbx_load version %d.%d.%d.%d\n"
" - source: %s %s, commit %s, tree %s\n"
" - anchor: %s\n"
" - build: %s for %s by %s\n"
" - flags: %s\n"
" - options: %s\n",
mdbx_version.major, mdbx_version.minor, mdbx_version.release,
mdbx_version.revision, mdbx_version.git.describe,
mdbx_version.git.datetime, mdbx_version.git.commit,
mdbx_version.git.tree, mdbx_sourcery_anchor, mdbx_build.datetime,
mdbx_build.target, mdbx_build.compiler, mdbx_build.flags,
mdbx_build.options);
return EXIT_SUCCESS;
case 'a':
append = 1;
break;
case 'f':
if (freopen(optarg, "r", stdin) == NULL) {
fprintf(stderr, "%s: %s: reopen: %s\n", prog, optarg,
mdbx_strerror(errno));
exit(EXIT_FAILURE);
}
break;
case 'n':
envflags |= MDBX_NOSUBDIR;
break;
case 's':
subname = mdbx_strdup(optarg);
break;
case 'N':
putflags = MDBX_NOOVERWRITE | MDBX_NODUPDATA;
break;
case 'T':
mode |= NOHDR | PRINT;
break;
default:
usage();
}
}
if (optind != argc - 1)
usage();
#if defined(_WIN32) || defined(_WIN64)
SetConsoleCtrlHandler(ConsoleBreakHandlerRoutine, true);
#else
#ifdef SIGPIPE
signal(SIGPIPE, signal_handler);
#endif
#ifdef SIGHUP
signal(SIGHUP, signal_handler);
#endif
signal(SIGINT, signal_handler);
signal(SIGTERM, signal_handler);
#endif /* !WINDOWS */
envname = argv[optind];
printf("mdbx_load %s (%s, T-%s)\nRunning for %s...\n",
mdbx_version.git.describe, mdbx_version.git.datetime,
mdbx_version.git.tree, envname);
fflush(NULL);
dbuf.iov_len = 4096;
dbuf.iov_base = mdbx_malloc(dbuf.iov_len);
/* read first header for mapsize= */
if (!(mode & NOHDR))
readhdr();
rc = mdbx_env_create(&env);
if (rc) {
fprintf(stderr, "mdbx_env_create failed, error %d %s\n", rc,
mdbx_strerror(rc));
return EXIT_FAILURE;
}
mdbx_env_set_maxdbs(env, 2);
if (envinfo.mi_maxreaders)
mdbx_env_set_maxreaders(env, envinfo.mi_maxreaders);
if (envinfo.mi_mapsize) {
if (envinfo.mi_mapsize > SIZE_MAX) {
fprintf(stderr, "mdbx_env_set_mapsize failed, error %d %s\n", rc,
mdbx_strerror(MDBX_TOO_LARGE));
return EXIT_FAILURE;
}
mdbx_env_set_mapsize(env, (size_t)envinfo.mi_mapsize);
}
#ifdef MDBX_FIXEDMAP
if (info.mi_mapaddr)
envflags |= MDBX_FIXEDMAP;
#endif
rc = mdbx_env_open(env, envname, envflags, 0664);
if (rc) {
fprintf(stderr, "mdbx_env_open failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto env_close;
}
kbuf.iov_len = mdbx_env_get_maxkeysize(env);
if (kbuf.iov_len >= SIZE_MAX / 4) {
fprintf(stderr, "mdbx_env_get_maxkeysize failed, returns %zu\n",
kbuf.iov_len);
goto env_close;
}
kbuf.iov_len = (kbuf.iov_len + 1) * 2;
kbuf.iov_base = malloc(kbuf.iov_len * 2);
k0buf.iov_len = kbuf.iov_len;
k0buf.iov_base = (char *)kbuf.iov_base + kbuf.iov_len;
prevk.iov_base = k0buf.iov_base;
while (!Eof) {
if (user_break) {
rc = MDBX_EINTR;
break;
}
rc = mdbx_txn_begin(env, NULL, 0, &txn);
if (rc) {
fprintf(stderr, "mdbx_txn_begin failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto env_close;
}
rc = mdbx_dbi_open_ex(txn, subname, dbi_flags | MDBX_CREATE, &dbi,
append ? anyway_greater : NULL,
append ? anyway_greater : NULL);
if (rc) {
fprintf(stderr, "mdbx_open failed, error %d %s\n", rc, mdbx_strerror(rc));
goto txn_abort;
}
rc = mdbx_cursor_open(txn, dbi, &mc);
if (rc) {
fprintf(stderr, "mdbx_cursor_open failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
int batch = 0;
prevk.iov_len = 0;
while (1) {
MDBX_val key;
rc = readline(&key, &kbuf);
if (rc) /* rc == EOF */
break;
MDBX_val data;
rc = readline(&data, &dbuf);
if (rc) {
fprintf(stderr, "%s: line %" PRIiSIZE ": failed to read key value\n",
prog, lineno);
goto txn_abort;
}
int appflag = 0;
if (append) {
appflag = MDBX_APPEND;
if (dbi_flags & MDBX_DUPSORT) {
if (prevk.iov_len == key.iov_len &&
memcmp(prevk.iov_base, key.iov_base, key.iov_len) == 0)
appflag = MDBX_APPEND | MDBX_APPENDDUP;
else
memcpy(prevk.iov_base, key.iov_base, prevk.iov_len = key.iov_len);
}
}
rc = mdbx_cursor_put(mc, &key, &data, putflags | appflag);
if (rc == MDBX_KEYEXIST && putflags)
continue;
if (rc) {
fprintf(stderr, "mdbx_cursor_put failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
batch++;
if (batch == 100) {
rc = mdbx_txn_commit(txn);
if (rc) {
fprintf(stderr, "%s: line %" PRIiSIZE ": txn_commit: %s\n", prog,
lineno, mdbx_strerror(rc));
goto env_close;
}
rc = mdbx_txn_begin(env, NULL, 0, &txn);
if (rc) {
fprintf(stderr, "mdbx_txn_begin failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto env_close;
}
rc = mdbx_cursor_open(txn, dbi, &mc);
if (rc) {
fprintf(stderr, "mdbx_cursor_open failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
batch = 0;
}
}
rc = mdbx_txn_commit(txn);
txn = NULL;
if (rc) {
fprintf(stderr, "%s: line %" PRIiSIZE ": txn_commit: %s\n", prog, lineno,
mdbx_strerror(rc));
goto env_close;
}
mdbx_dbi_close(env, dbi);
/* try read next header */
if (!(mode & NOHDR))
readhdr();
}
txn_abort:
mdbx_txn_abort(txn);
env_close:
mdbx_env_close(env);
return rc ? EXIT_FAILURE : EXIT_SUCCESS;
}

View file

@ -0,0 +1,436 @@
/* mdbx_stat.c - memory-mapped database status tool */
/*
* Copyright 2015-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>. */
#ifdef _MSC_VER
#if _MSC_VER > 1800
#pragma warning(disable : 4464) /* relative include path contains '..' */
#endif
#pragma warning(disable : 4996) /* The POSIX name is deprecated... */
#endif /* _MSC_VER (warnings) */
#define MDBX_TOOLS /* Avoid using internal mdbx_assert() */
#include "../elements/internals.h"
#if defined(_WIN32) || defined(_WIN64)
#include "wingetopt.h"
static volatile BOOL user_break;
static BOOL WINAPI ConsoleBreakHandlerRoutine(DWORD dwCtrlType) {
(void)dwCtrlType;
user_break = true;
return true;
}
#else /* WINDOWS */
static volatile sig_atomic_t user_break;
static void signal_handler(int sig) {
(void)sig;
user_break = 1;
}
#endif /* !WINDOWS */
static void prstat(MDBX_stat *ms) {
printf(" Pagesize: %u\n", ms->ms_psize);
printf(" Tree depth: %u\n", ms->ms_depth);
printf(" Branch pages: %" PRIu64 "\n", ms->ms_branch_pages);
printf(" Leaf pages: %" PRIu64 "\n", ms->ms_leaf_pages);
printf(" Overflow pages: %" PRIu64 "\n", ms->ms_overflow_pages);
printf(" Entries: %" PRIu64 "\n", ms->ms_entries);
}
static void usage(char *prog) {
fprintf(stderr,
"usage: %s [-V] [-n] [-e] [-r[r]] [-f[f[f]]] [-a|-s subdb] dbpath\n",
prog);
exit(EXIT_FAILURE);
}
static int reader_list_func(void *ctx, int num, int slot, mdbx_pid_t pid,
mdbx_tid_t thread, uint64_t txnid, uint64_t lag,
size_t bytes_used, size_t bytes_retained) {
(void)ctx;
if (num == 1)
printf("Reader Table Status\n"
" #\tslot\t%6s %*s %20s %10s %13s %13s\n",
"pid", (int)sizeof(size_t) * 2, "thread", "txnid", "lag", "used",
"retained");
printf(" %3d)\t[%d]\t%6" PRIdSIZE " %*" PRIxSIZE, num, slot, (size_t)pid,
(int)sizeof(size_t) * 2, (size_t)thread);
if (txnid)
printf(" %20" PRIu64 " %10" PRIu64 " %12.1fM %12.1fM\n", txnid, lag,
bytes_used / 1048576.0, bytes_retained / 1048576.0);
else
printf(" %20s %10s %13s %13s\n", "-", "0", "0", "0");
return user_break ? MDBX_RESULT_TRUE : MDBX_RESULT_FALSE;
}
int main(int argc, char *argv[]) {
int o, rc;
MDBX_env *env;
MDBX_txn *txn;
MDBX_dbi dbi;
MDBX_stat mst;
MDBX_envinfo mei;
char *prog = argv[0];
char *envname;
char *subname = NULL;
int alldbs = 0, envinfo = 0, envflags = 0, freinfo = 0, rdrinfo = 0;
if (argc < 2)
usage(prog);
/* -a: print stat of main DB and all subDBs
* -s: print stat of only the named subDB
* -e: print env info
* -f: print freelist info
* -r: print reader info
* -n: use NOSUBDIR flag on env_open
* -V: print version and exit
* (default) print stat of only the main DB
*/
while ((o = getopt(argc, argv, "Vaefnrs:")) != EOF) {
switch (o) {
case 'V':
printf("mdbx_stat version %d.%d.%d.%d\n"
" - source: %s %s, commit %s, tree %s\n"
" - anchor: %s\n"
" - build: %s for %s by %s\n"
" - flags: %s\n"
" - options: %s\n",
mdbx_version.major, mdbx_version.minor, mdbx_version.release,
mdbx_version.revision, mdbx_version.git.describe,
mdbx_version.git.datetime, mdbx_version.git.commit,
mdbx_version.git.tree, mdbx_sourcery_anchor, mdbx_build.datetime,
mdbx_build.target, mdbx_build.compiler, mdbx_build.flags,
mdbx_build.options);
return EXIT_SUCCESS;
case 'a':
if (subname)
usage(prog);
alldbs++;
break;
case 'e':
envinfo++;
break;
case 'f':
freinfo++;
break;
case 'n':
envflags |= MDBX_NOSUBDIR;
break;
case 'r':
rdrinfo++;
break;
case 's':
if (alldbs)
usage(prog);
subname = optarg;
break;
default:
usage(prog);
}
}
if (optind != argc - 1)
usage(prog);
#if defined(_WIN32) || defined(_WIN64)
SetConsoleCtrlHandler(ConsoleBreakHandlerRoutine, true);
#else
#ifdef SIGPIPE
signal(SIGPIPE, signal_handler);
#endif
#ifdef SIGHUP
signal(SIGHUP, signal_handler);
#endif
signal(SIGINT, signal_handler);
signal(SIGTERM, signal_handler);
#endif /* !WINDOWS */
envname = argv[optind];
envname = argv[optind];
printf("mdbx_stat %s (%s, T-%s)\nRunning for %s...\n",
mdbx_version.git.describe, mdbx_version.git.datetime,
mdbx_version.git.tree, envname);
fflush(NULL);
rc = mdbx_env_create(&env);
if (rc) {
fprintf(stderr, "mdbx_env_create failed, error %d %s\n", rc,
mdbx_strerror(rc));
return EXIT_FAILURE;
}
if (alldbs || subname)
mdbx_env_set_maxdbs(env, 4);
rc = mdbx_env_open(env, envname, envflags | MDBX_RDONLY, 0664);
if (rc) {
fprintf(stderr, "mdbx_env_open failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto env_close;
}
if (envinfo || freinfo) {
(void)mdbx_env_info(env, &mei, sizeof(mei));
} else {
/* LY: zap warnings from gcc */
memset(&mei, 0, sizeof(mei));
}
if (envinfo) {
(void)mdbx_env_stat(env, &mst, sizeof(mst));
printf("Environment Info\n");
printf(" Pagesize: %u\n", mst.ms_psize);
if (mei.mi_geo.lower != mei.mi_geo.upper) {
printf(" Dynamic datafile: %" PRIu64 "..%" PRIu64 " bytes (+%" PRIu64
"/-%" PRIu64 "), %" PRIu64 "..%" PRIu64 " pages (+%" PRIu64
"/-%" PRIu64 ")\n",
mei.mi_geo.lower, mei.mi_geo.upper, mei.mi_geo.grow,
mei.mi_geo.shrink, mei.mi_geo.lower / mst.ms_psize,
mei.mi_geo.upper / mst.ms_psize, mei.mi_geo.grow / mst.ms_psize,
mei.mi_geo.shrink / mst.ms_psize);
printf(" Current datafile: %" PRIu64 " bytes, %" PRIu64 " pages\n",
mei.mi_geo.current, mei.mi_geo.current / mst.ms_psize);
} else {
printf(" Fixed datafile: %" PRIu64 " bytes, %" PRIu64 " pages\n",
mei.mi_geo.current, mei.mi_geo.current / mst.ms_psize);
}
printf(" Current mapsize: %" PRIu64 " bytes, %" PRIu64 " pages \n",
mei.mi_mapsize, mei.mi_mapsize / mst.ms_psize);
printf(" Number of pages used: %" PRIu64 "\n", mei.mi_last_pgno + 1);
printf(" Last transaction ID: %" PRIu64 "\n", mei.mi_recent_txnid);
printf(" Tail transaction ID: %" PRIu64 " (%" PRIi64 ")\n",
mei.mi_latter_reader_txnid,
mei.mi_latter_reader_txnid - mei.mi_recent_txnid);
printf(" Max readers: %u\n", mei.mi_maxreaders);
printf(" Number of readers used: %u\n", mei.mi_numreaders);
} else {
/* LY: zap warnings from gcc */
memset(&mst, 0, sizeof(mst));
}
if (rdrinfo) {
rc = mdbx_reader_list(env, reader_list_func, nullptr);
if (rc == MDBX_RESULT_TRUE)
printf("Reader Table is empty\n");
else if (rc == MDBX_SUCCESS && rdrinfo > 1) {
int dead;
rc = mdbx_reader_check(env, &dead);
if (rc == MDBX_RESULT_TRUE) {
printf(" %d stale readers cleared.\n", dead);
rc = mdbx_reader_list(env, reader_list_func, nullptr);
if (rc == MDBX_RESULT_TRUE)
printf(" Now Reader Table is empty\n");
} else
printf(" No stale readers.\n");
}
if (MDBX_IS_ERROR(rc)) {
fprintf(stderr, "mdbx_txn_begin failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto env_close;
}
if (!(subname || alldbs || freinfo))
goto env_close;
}
rc = mdbx_txn_begin(env, NULL, MDBX_RDONLY, &txn);
if (rc) {
fprintf(stderr, "mdbx_txn_begin failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto env_close;
}
if (freinfo) {
MDBX_cursor *cursor;
MDBX_val key, data;
pgno_t pages = 0, *iptr;
pgno_t reclaimable = 0;
printf("Freelist Status\n");
dbi = 0;
rc = mdbx_cursor_open(txn, dbi, &cursor);
if (rc) {
fprintf(stderr, "mdbx_cursor_open failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
rc = mdbx_dbi_stat(txn, dbi, &mst, sizeof(mst));
if (rc) {
fprintf(stderr, "mdbx_dbi_stat failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
prstat(&mst);
while ((rc = mdbx_cursor_get(cursor, &key, &data, MDBX_NEXT)) ==
MDBX_SUCCESS) {
if (user_break) {
rc = MDBX_EINTR;
break;
}
iptr = data.iov_base;
const pgno_t number = *iptr++;
pages += number;
if (envinfo && mei.mi_latter_reader_txnid > *(size_t *)key.iov_base)
reclaimable += number;
if (freinfo > 1) {
char *bad = "";
pgno_t prev =
MDBX_PNL_ASCENDING ? NUM_METAS - 1 : (pgno_t)mei.mi_last_pgno + 1;
pgno_t span = 1;
for (unsigned i = 0; i < number; ++i) {
pgno_t pg = iptr[i];
if (MDBX_PNL_DISORDERED(prev, pg))
bad = " [bad sequence]";
prev = pg;
while (i + span < number &&
iptr[i + span] == (MDBX_PNL_ASCENDING ? pgno_add(pg, span)
: pgno_sub(pg, span)))
++span;
}
printf(" Transaction %" PRIaTXN ", %" PRIaPGNO
" pages, maxspan %" PRIaPGNO "%s\n",
*(txnid_t *)key.iov_base, number, span, bad);
if (freinfo > 2) {
for (unsigned i = 0; i < number; i += span) {
const pgno_t pg = iptr[i];
for (span = 1;
i + span < number &&
iptr[i + span] == (MDBX_PNL_ASCENDING ? pgno_add(pg, span)
: pgno_sub(pg, span));
++span)
;
if (span > 1)
printf(" %9" PRIaPGNO "[%" PRIaPGNO "]\n", pg, span);
else
printf(" %9" PRIaPGNO "\n", pg);
}
}
}
}
mdbx_cursor_close(cursor);
switch (rc) {
case MDBX_SUCCESS:
case MDBX_NOTFOUND:
break;
case MDBX_EINTR:
fprintf(stderr, "Interrupted by signal/user\n");
goto txn_abort;
default:
fprintf(stderr, "mdbx_cursor_get failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
if (envinfo) {
uint64_t value = mei.mi_mapsize / mst.ms_psize;
double percent = value / 100.0;
printf("Page Allocation Info\n");
printf(" Max pages: %" PRIu64 " 100%%\n", value);
value = mei.mi_last_pgno + 1;
printf(" Pages used: %" PRIu64 " %.1f%%\n", value, value / percent);
value = mei.mi_mapsize / mst.ms_psize - (mei.mi_last_pgno + 1);
printf(" Remained: %" PRIu64 " %.1f%%\n", value, value / percent);
value = mei.mi_last_pgno + 1 - pages;
printf(" Used now: %" PRIu64 " %.1f%%\n", value, value / percent);
value = pages;
printf(" Unallocated: %" PRIu64 " %.1f%%\n", value, value / percent);
value = pages - reclaimable;
printf(" Detained: %" PRIu64 " %.1f%%\n", value, value / percent);
value = reclaimable;
printf(" Reclaimable: %" PRIu64 " %.1f%%\n", value, value / percent);
value =
mei.mi_mapsize / mst.ms_psize - (mei.mi_last_pgno + 1) + reclaimable;
printf(" Available: %" PRIu64 " %.1f%%\n", value, value / percent);
} else
printf(" Free pages: %" PRIaPGNO "\n", pages);
}
rc = mdbx_dbi_open(txn, subname, 0, &dbi);
if (rc) {
fprintf(stderr, "mdbx_open failed, error %d %s\n", rc, mdbx_strerror(rc));
goto txn_abort;
}
rc = mdbx_dbi_stat(txn, dbi, &mst, sizeof(mst));
if (rc) {
fprintf(stderr, "mdbx_dbi_stat failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
printf("Status of %s\n", subname ? subname : "Main DB");
prstat(&mst);
if (alldbs) {
MDBX_cursor *cursor;
MDBX_val key;
rc = mdbx_cursor_open(txn, dbi, &cursor);
if (rc) {
fprintf(stderr, "mdbx_cursor_open failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
while ((rc = mdbx_cursor_get(cursor, &key, NULL, MDBX_NEXT_NODUP)) == 0) {
char *str;
MDBX_dbi db2;
if (memchr(key.iov_base, '\0', key.iov_len))
continue;
str = mdbx_malloc(key.iov_len + 1);
memcpy(str, key.iov_base, key.iov_len);
str[key.iov_len] = '\0';
rc = mdbx_dbi_open(txn, str, 0, &db2);
if (rc == MDBX_SUCCESS)
printf("Status of %s\n", str);
mdbx_free(str);
if (rc)
continue;
rc = mdbx_dbi_stat(txn, db2, &mst, sizeof(mst));
if (rc) {
fprintf(stderr, "mdbx_dbi_stat failed, error %d %s\n", rc,
mdbx_strerror(rc));
goto txn_abort;
}
prstat(&mst);
mdbx_dbi_close(env, db2);
}
mdbx_cursor_close(cursor);
}
if (rc == MDBX_NOTFOUND)
rc = MDBX_SUCCESS;
mdbx_dbi_close(env, dbi);
txn_abort:
mdbx_txn_abort(txn);
env_close:
mdbx_env_close(env);
return rc ? EXIT_FAILURE : EXIT_SUCCESS;
}

View file

@ -0,0 +1,95 @@
/*
* POSIX getopt for Windows
*
* AT&T Public License
*
* Code given out at the 1985 UNIFORUM conference in Dallas.
*/
/*----------------------------------------------------------------------------*/
/* Microsoft compiler generates a lot of warning for self includes... */
#ifdef _MSC_VER
#pragma warning(push, 1)
#pragma warning(disable : 4548) /* expression before comma has no effect; \
expected expression with side - effect */
#pragma warning(disable : 4530) /* C++ exception handler used, but unwind \
* semantics are not enabled. Specify /EHsc */
#pragma warning(disable : 4577) /* 'noexcept' used with no exception handling \
* mode specified; termination on exception is \
* not guaranteed. Specify /EHsc */
#if !defined(_CRT_SECURE_NO_WARNINGS)
#define _CRT_SECURE_NO_WARNINGS
#endif
#endif /* _MSC_VER (warnings) */
#include "wingetopt.h"
#include <stdio.h>
#include <string.h>
#ifdef _MSC_VER
#pragma warning(pop)
#endif
/*----------------------------------------------------------------------------*/
#ifndef NULL
#define NULL 0
#endif
#ifndef EOF
#define EOF (-1)
#endif
#define ERR(s, c) \
if (opterr) { \
fputs(argv[0], stderr); \
fputs(s, stderr); \
fputc(c, stderr); \
}
int opterr = 1;
int optind = 1;
int optopt;
char *optarg;
int getopt(int argc, char *const argv[], const char *opts) {
static int sp = 1;
int c;
const char *cp;
if (sp == 1) {
if (optind >= argc || argv[optind][0] != '-' || argv[optind][1] == '\0')
return EOF;
else if (strcmp(argv[optind], "--") == 0) {
optind++;
return EOF;
}
}
optopt = c = argv[optind][sp];
if (c == ':' || (cp = strchr(opts, c)) == NULL) {
ERR(": illegal option -- ", c);
if (argv[optind][++sp] == '\0') {
optind++;
sp = 1;
}
return '?';
}
if (*++cp == ':') {
if (argv[optind][sp + 1] != '\0')
optarg = &argv[optind++][sp + 1];
else if (++optind >= argc) {
ERR(": option requires an argument -- ", c);
sp = 1;
return '?';
} else
optarg = argv[optind++];
sp = 1;
} else {
if (argv[optind][++sp] == '\0') {
sp = 1;
optind++;
}
optarg = NULL;
}
return c;
}

View file

@ -0,0 +1,30 @@
/*
* POSIX getopt for Windows
*
* AT&T Public License
*
* Code given out at the 1985 UNIFORUM conference in Dallas.
*/
#ifndef _WINGETOPT_H_
#define _WINGETOPT_H_
/* Bit of madness for Windows console */
#define mdbx_strerror mdbx_strerror_ANSI2OEM
#define mdbx_strerror_r mdbx_strerror_r_ANSI2OEM
#ifdef __cplusplus
extern "C" {
#endif
extern int opterr;
extern int optind;
extern int optopt;
extern char *optarg;
int getopt(int argc, char *const argv[], const char *optstring);
#ifdef __cplusplus
}
#endif
#endif /* _GETOPT_H_ */

View file

@ -0,0 +1,53 @@
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
set(TEST_OSAL windows)
else()
set(TEST_OSAL unix)
endif()
add_executable(mdbx_test
base.h
cases.cc
chrono.cc
chrono.h
config.cc
config.h
copy.cc
dead.cc
hill.cc
jitter.cc
keygen.cc
keygen.h
log.cc
log.h
main.cc
osal.h
osal-${TEST_OSAL}.cc
test.cc
test.h
try.cc
utils.cc
utils.h
append.cc
ttl.cc
nested.cc
)
set_target_properties(mdbx_test PROPERTIES
INTERPROCEDURAL_OPTIMIZATION $<BOOL:${INTERPROCEDURAL_OPTIMIZATION}>
CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON)
if(CC_HAS_FASTMATH)
target_compile_options(mdbx_test PRIVATE "-ffast-math")
endif()
if(CC_HAS_VISIBILITY AND (LTO_ENABLED OR INTERPROCEDURAL_OPTIMIZATION))
set_target_properties(mdbx_test PROPERTIES LINK_FLAGS "-fvisibility=hidden")
endif()
target_link_libraries(mdbx_test mdbx ${LIB_MATH} ${CMAKE_THREAD_LIBS_INIT})
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
target_link_libraries(mdbx_test winmm.lib)
endif()
if(UNIX AND NOT SUBPROJECT)
add_subdirectory(pcrf)
endif()

View file

@ -0,0 +1,164 @@
/*
* Copyright 2017-2019 Leonid Yuriev <leo@yuriev.ru>
* and other libmdbx authors: please see AUTHORS file.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in the file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
#include "test.h"
bool testcase_append::run() {
int err = db_open__begin__table_create_open_clean(dbi);
if (unlikely(err != MDBX_SUCCESS)) {
log_notice("append: bailout-prepare due '%s'", mdbx_strerror(err));
return true;
}
keyvalue_maker.setup(config.params, config.actor_id, 0 /* thread_number */);
/* LY: тест наполнения таблиц в append-режиме,
* при котором записи добавляются строго в конец (в порядке сортировки) */
const unsigned flags = (config.params.table_flags & MDBX_DUPSORT)
? MDBX_APPEND | MDBX_APPENDDUP
: MDBX_APPEND;
keyvalue_maker.make_ordered();
key = keygen::alloc(config.params.keylen_max);
data = keygen::alloc(config.params.datalen_max);
keygen::buffer last_key = keygen::alloc(config.params.keylen_max);
keygen::buffer last_data = keygen::alloc(config.params.datalen_max);
last_key->value.iov_base = last_key->bytes;
last_key->value.iov_len = 0;
last_data->value.iov_base = last_data->bytes;
last_data->value.iov_len = 0;
simple_checksum inserted_checksum;
uint64_t inserted_number = 0;
uint64_t serial_count = 0;
unsigned txn_nops = 0;
uint64_t commited_inserted_number = inserted_number;
simple_checksum commited_inserted_checksum = inserted_checksum;
while (should_continue()) {
const keygen::serial_t serial = serial_count;
if (!keyvalue_maker.increment(serial_count, 1)) {
// дошли до границы пространства ключей
break;
}
log_trace("append: append-a %" PRIu64, serial);
generate_pair(serial, key, data);
int cmp = inserted_number ? mdbx_cmp(txn_guard.get(), dbi, &key->value,
&last_key->value)
: 1;
if (cmp == 0 && (config.params.table_flags & MDBX_DUPSORT))
cmp = mdbx_dcmp(txn_guard.get(), dbi, &data->value, &last_data->value);
err = mdbx_put(txn_guard.get(), dbi, &key->value, &data->value, flags);
if (err == MDBX_MAP_FULL && config.params.ignore_dbfull) {
log_notice("append: bailout-insert due '%s'", mdbx_strerror(err));
txn_end(true);
inserted_number = commited_inserted_number;
inserted_checksum = commited_inserted_checksum;
break;
}
if (cmp > 0) {
if (unlikely(err != MDBX_SUCCESS))
failure_perror("mdbx_put(appenda-a)", err);
memcpy(last_key->value.iov_base, key->value.iov_base,
last_key->value.iov_len = key->value.iov_len);
memcpy(last_data->value.iov_base, data->value.iov_base,
last_data->value.iov_len = data->value.iov_len);
++inserted_number;
inserted_checksum.push((uint32_t)inserted_number, key->value);
inserted_checksum.push(10639, data->value);
} else {
if (unlikely(err != MDBX_EKEYMISMATCH))
failure_perror("mdbx_put(appenda-a) != MDBX_EKEYMISMATCH", err);
}
if (++txn_nops >= config.params.batch_write) {
err = breakable_restart();
if (unlikely(err != MDBX_SUCCESS)) {
log_notice("append: bailout-commit due '%s'", mdbx_strerror(err));
inserted_number = commited_inserted_number;
inserted_checksum = commited_inserted_checksum;
break;
}
commited_inserted_number = inserted_number;
commited_inserted_checksum = inserted_checksum;
txn_nops = 0;
}
report(1);
}
if (txn_guard) {
err = breakable_commit();
if (unlikely(err != MDBX_SUCCESS)) {
log_notice("append: bailout-commit due '%s'", mdbx_strerror(err));
inserted_number = commited_inserted_number;
inserted_checksum = commited_inserted_checksum;
}
}
//----------------------------------------------------------------------------
txn_begin(true);
cursor_open(dbi);
MDBX_val check_key, check_data;
err =
mdbx_cursor_get(cursor_guard.get(), &check_key, &check_data, MDBX_FIRST);
if (likely(inserted_number)) {
if (unlikely(err != MDBX_SUCCESS))
failure_perror("mdbx_cursor_get(MDBX_FIRST)", err);
}
simple_checksum read_checksum;
uint64_t read_count = 0;
while (err == MDBX_SUCCESS) {
++read_count;
read_checksum.push((uint32_t)read_count, check_key);
read_checksum.push(10639, check_data);
err =
mdbx_cursor_get(cursor_guard.get(), &check_key, &check_data, MDBX_NEXT);
}
if (unlikely(err != MDBX_NOTFOUND))
failure_perror("mdbx_cursor_get(MDBX_NEXT) != EOF", err);
if (unlikely(read_count != inserted_number))
failure("read_count(%" PRIu64 ") != inserted_number(%" PRIu64 ")",
read_count, inserted_number);
if (unlikely(read_checksum.value != inserted_checksum.value))
failure("read_checksum(0x%016" PRIu64 ") "
"!= inserted_checksum(0x%016" PRIu64 ")",
read_checksum.value, inserted_checksum.value);
cursor_close();
txn_end(true);
//----------------------------------------------------------------------------
if (dbi) {
if (config.params.drop_table && !mode_readonly()) {
txn_begin(false);
db_table_drop(dbi);
err = breakable_commit();
if (unlikely(err != MDBX_SUCCESS)) {
log_notice("append: bailout-clean due '%s'", mdbx_strerror(err));
return true;
}
} else
db_table_close(dbi);
}
return true;
}

Some files were not shown because too many files have changed in this diff Show more