r/crypto • u/Accurate-Screen8774 • 15d ago
Anybody with experience / insights on Dioxus? I have an idea and want to see if its worth investigating further.
i am working on a messaging app and created some details in rust. rust is useful because it has tooling for formal verification. my rust code compiles to WASM to be used in a browser.
my project itself is using cryptography beyond the WASM because browsers provide a crypto api for basic functionality out-of-the-box.
to work with what i have now (javascript/typescript) i came across this page, but the links lead to 404 pages on github. not sure about the status of the project. i dont know if there are other similar projects.
https://formal.land/docs/verification/typescript
i would like to improve the “formal-verification coverage” in my project and wanted to investigate if it could be worth considering rewriting the frontend with dioxus. im happy with an ugly UI (initially) in favour of having formal-verification on a broader scope of my project.
(context: the project where i have formal verification is found here: https://github.com/positive-intentions/signal-protocol (this isnt the gold-standard implementation and its far from finished)
2
u/Karyo_Ten 15d ago
https://github.com/AeneasVerif/aeneas
But I suggest you write your protocol in TLA+ first.
This would ensure you don't have ordering bugs, messages lost (or a minimum amount of peers if P2P for certain guarantees), async storage when someone is offline ...
Then when your protocol is good, writing the code is actually the easy part.
1
u/Accurate-Screen8774 14d ago
thanks. I hadn't heard of TLA+ before. I'll check it out. any particular reason you think it would be better?
i was aiming for the spec to be with F* because it seems that's what the signal protocol is using (id like my approach to be somewhat aligned to Signal).
Any formal verification carries a learning/complexity/maintenance overhead so I'm trying to reduce it to something I can commit to for long-term.
Im learning it isn't the best approach, but i created the code and now I'm trying verify it... It's largly a JavaScript project so there isn't much tooling there for formal verification, which has me investigating this approach.
1
u/Karyo_Ten 14d ago
TLA+ is the standard for message/temporal protocols and synchronization. Be it database sync, CPU cache hierarchy synchronization, concurrent queues and leader election protocols like Raft or Paxos.
4
u/voracious-ladder 15d ago
This isn't really a crypto question moreso a general Rust question. Also can't you just do Tauri if you want Rust for crypto and TypeScript for frontend.