add get_primary_address() impl; cleanup scratchpad
Monero C++ Library
This project is a library for working with Monero wallets in C++ by wrapping Monero Core's C++ wallet, wallet2.
In addition, this project conforms to an API specification intended to be intuitive, robust, and for long-term use in the Monero project.
This library may be used to build Monero-related GUI applications, libraries in other languages (e.g. monero-java), or a compliant REST/JSON-RPC API.
Main Features
- Manage a Monero wallet
- Object-oriented model with rigorous focus on ease-of-use
- Query wallet transactions, transfers, and outputs by their many attributes
- Receive notifications as a wallet is synchronized, when blocks are added to the chain, or when the wallet sends or receives transfers
Sample Code
TODO
Building a Dynamic / Shared Library
The source code in this project may be built as a dynamic or "shared" library for use on a target platform (e.g. Linux, Mac, Windows, etc). For example, the associated Java library depends on a dynamic library built from this project to support a wallet using JNI.
Build Steps
- Setup Boost
- Download and extract the boost 1.69.0 source code zip from https://www.boost.org/users/download/ to ./external/boost-sdk/.
cd ./external/boost-sdk/./bootstraph.sh./b2- Copy .a files from ./external/boost-sdk/bin.v2/libs/*/link-static/* to ./external-libs/boost according to CMakeLists.txt.
- Setup OpenSSL
- Download and extract the latest OpenSSL source code zip from https://github.com/openssl/openssl to ./external/openssl-sdk/.
- Build for your system.
Mac: installed through boost at /usr/local/opt/openssl/lib - Copy libcrypto.a and libssl.a ./external-libs/openssl.
- Setup Monero Core
- Initialize submodules:
git submodule update --init --recursive - cd ./submodules/monero-core
- Modify CMakeLists.txt:
option(BUILD_GUI_DEPS "Build GUI dependencies." ON). - Build twice to create libwallet_merged.a in addition to other .a libraries:
make release-static -j8. - Copy .a files from ./submodules/monero-core/build/release/* to ./external-libs/monero-core according to CMakeLists.txt.
- Initialize submodules:
- Setup hidapi
- Download the latest hidapi source code from https://github.com/signal11/hidapi.
- Build hidapi for your system.
Mac requires autoreconf:brew install automake - Copy libhidapi.a to ./external-libs/hidapi.
- Setup libsodium
- Build libsodium for your system.
- Copy libsodium.a to ./external-libs/libsodium.
Mac: installed through homebrew at /usr/local/Cellar/libsodium/1.0.17/lib/libsodium.a
- Build libmonero-cpp.dylib to ./build:
./bin/build-libmonero-cpp.sh.
These build steps aspire to be automated further.
See Also
JavaScript reference implementation
License
This project is licensed under MIT.
Donate
Please consider donating if you want to support this project. Thank you!
46FR1GKVqFNQnDiFkH7AuzbUBrGQwz2VdaXTDD4jcjRE8YkkoTYTmZ2Vohsz9gLSqkj5EM6ai9Q7sBoX4FPPYJdGKQQXPVz
