* cleanup patches
* fix polyseed patch
* Fix iOS builds
* fix polyseed dependencies
* fix polyseed patch for macOS
* update ledger patch
* update wownero patches and version
* update checksums
* wip"
* update gitmodules
* update boost build script
* update build_single.sh
* vix verbosey_copy
* fix __clear_cache bug on wownero
* update randomwow
* migrate build system
* fix cross compilation issues
* some more build issue
* update polyseed
* cleanup cmakelists
* fix toolchain.cmake.in
* add ssp
* another attempt at building windows on CI
* fix package name
* migrate mirror to my own hosting
* change download mirror priority (fallback first)
* link ssp in monero module as well by using CMAKE_{C,CXX}_FLAGS
* fix android builds
* update polyseed source
* 13 -> trixie
* fix package name conflicts, update runner to sid
* update boost to 1_84_0, disable patch that's no longer needed
* switch to ubuntu:24.04
* add POLYSEED_STATIC to toolchain.cmake.in in order to properly link
* drop patches
* fixes to darwin
* link missing wowner-seed library
* a litte bit more of experiments
* build locale only on windows
* update iconv
* update definitions
* update ci builds
* update my progress
* ios fix, update depends, ci
* multithread build system
* fix android, mingw and linux build issues
* remove dependency check
* update Dockerfile to include pigz
* show a message when pigz is missing
* fix devcontainer mingw setup (missing ENV)
* update android build runner
* sailfishos dropped (you better go behave yourself and run actual linux programs)
* fiz pigz issues
* install llvm-ranlib for android
* fix iOS build issues
* fix dummy ledger patch
* fix macos and darwin
* fix macos ci
* fix macos build command
* install autoconf
* add automake
* add libtool
* macos fixes, wownero fixes, idk what else, please help me
* fix wownero iOS build
* Cleanup patches
* add try-catch into monero code
* fix error handling
* update checksums
monero.dart
Usage
monero:
git:
url: https://github.com/mrcyjanek/monero_c
ref: master
path: impls/monero.dart
import 'package: monero/monero.dart' as monero;
void main() {
final wm = monero.WalletManagerFactory_getWalletManager();
final w = monero.WalletManager_openWallet({...});
print(monero.Wallet_balance(w));
}
If you need more advanced usage, to for example use the code in an isolate, some workarounding is required NOTE: from now on you manage your own memory partialy.
Simplest example is this:
final addr = w.address;
final height = await Isolate.run(() async {
return monero.lib.MONERO_Wallet_daemonBlockChainHeight(Pointer.fromAddress(addr));
});
It gets even funnier when sending a transaction
final ptrAddr = xmrwPtr!.address;
final dstAddrPtr = txData.recipients!.first.address.toNativeUtf8().address;
final paymentAddrPtr = ''.toNativeUtf8().address;
final preferredInputsPtr = ''.toNativeUtf8().address;
final separatorPtr = ''.toNativeUtf8().address;
final amount = txData.recipients!.first.amount.raw.toInt();
final txPtrAddr = await Isolate.run(
() {
monero.lib ??= MoneroC(DynamicLibrary.open(monero.libPath));
final txPtr = monero.lib!.MONERO_Wallet_createTransaction(
Pointer.fromAddress(ptrAddr),
Pointer.fromAddress(dstAddrPtr).cast(),
Pointer.fromAddress(paymentAddrPtr).cast(),
amount, 0, 0, 0,
Pointer.fromAddress(preferredInputsPtr).cast(),
Pointer.fromAddress(separatorPtr).cast(),
);
// Nothing hits better than managing memory in GC language :)
return txPtr.address;
},
debugName: 'MONERO_Wallet_createTransaction',
);
final txPtr = Pointer.fromAddress(txPtrAddr).cast<Void>();
calloc.free(Pointer.fromAddress(dstAddrPtr));
calloc.free(Pointer.fromAddress(paymentAddrPtr));
calloc.free(Pointer.fromAddress(preferredInputsPtr));
calloc.free(Pointer.fromAddress(separatorPtr));
Async api will be made as a part of the generator update, too much effort under current design.
Building
$ bash update_bindings.sh
$ # you are done, this is a library, what more did you expect?