-
sneurlax
Dart and Rust developers: I have published pub.dev/packages/monero as a simple proof-of-concept showing how to use Dart 3.6's new Native Assets tooling to produce cross-platform apps which use the same Rust source to support Android, iOS, Linux, macOS, Windows, and even commandline applications, too (because it's a Dart package, not a Flutter
-
sneurlax
package). You can try it out with `dart pub add monero` (or `flutter pub add monero` for Flutter projects).
-
sneurlax
Right now it's just a proof-of-concept that I am actively developing towards a full wallet and node. It uses the old monero-serai crate from kayabaNerve, now monero-wallet and soon to be monero-oxide. I've also been slowly working on integrating pieces of cuprate from boog9000 and hinto (did you know cuprate can now fully sync with the p2p
-
sneurlax
network?) but the node proof-of-concept is not finished yet. I am using crates.io/crates/monero-rust to wrap disparate Rust crates together in FFI-friendly ways.
-
sneurlax
The goal of this project is to produce an alternative to the ultimately-C++-backed flutter_libmonero. I recommend using flutter_libmonero if you need a full wallet and node in Flutter now/soon, but it only works for Flutter apps and not pure Dart ones so cannot be used on the commandline. I could probably work with MrCyjaneK's monero_c to produce
-
sneurlax
a sort of dart_libmonero that *is* compatible with a CLI, so please let me know if anyone wants that.
-
sneurlax
This project has thus far been produced in my spare time but would have never been possible without Diego "rehrar" Salazar and Cypher Stack commissioning me to produce the original proof-of-concept (called libxmr) which proved the feasibility of this project. It also depends upon kayabaNerve's many Monero Rust crates. Thank you both! And thank
-
sneurlax
you to everyone who has contributed to cuprate, especially boog9000 and hinto, which I hope to integrate soon™
-
sneurlax
I am actively seeking collaborators for both the Dart and Rust sides. I would like to eventually add someone reputable from the community as a 2nd admin for all packages and crates. Thank you Monero
-
sneurlax
oh and i have a question ... i am wondering about the utility, necessity, or potential futility of using at-rest encryption to protect secrets in memory
-
sneurlax
am i inventing a situation in my mind that an attacker could image my memory and steal keys? i know what i've made/shown could definitely get sniffed because i pass keys/mnemonics over ffi basically unaltered
-
sneurlax
so i'm definitely looking to improve that aspect, but then i think ... could a normal wallet's memory get watched for keys? would it be useful to extend at-rest encryption more widely to not just ffi interactions but any secrets in memory?
-
m-relay
<kewbit:matrix.org> Sounds ambitious but fun, I will help any way I can!
-
sneurlax
or is this potentially futile as secrets do eventually need to be decrypted for use unless homomorphic cryptography could be applied to protect secrets during use?
-
sneurlax
hell yea kewbit thanks. im still not sure if im inventing problems that don't exist or proposing a solution which is ultimately futile
-
sneurlax
is this something that has to be implemented at a lower level to have actual use, like by an os or hypervisor or something? (and im aware ops will need to be made constant-time to avoid eavesdropping)
-
sneurlax
if someone has access to your memory you're already cooked so ... is this futile?
-
sneurlax
and then any key eventually will eventually have to end up in memory for work, right? so i struggle to conceive of a sound end to end solution solution
-
sneurlax
the best answer is a hardware wallet, damn...
-
m-relay
<binarybaron:matrix.org> Do you have a link to the repo for the monero-rust crate?
-
m-relay
<kayabanerve:matrix.org> You can keep an encryption key elsewhere in memory so its harder to sniff the key (you need to sniff two 32 byte segments, not find the single 32 byte segment which an algorithm can quickly get the public key of) but yes, a full memory image still voids the security of that.
-
sneurlax
-
sneurlax
before extending this out to more wallet functions then node stuff I'm trying to handle the ffi process better... I could be passing the rust structs over to dart directly instead of casting things to eg strings... it's really not very much right now, just a demo of monero rust bound for dart and flutter. a proof of concept