Comments (7)
I will just leave it here. Benchmarking code of protobuf and bincode. https://gist.github.com/ilblackdragon/88ab377bf0da7ff721af80cb8a11fe28
from saito-rust.
Tagging @batzor here for maybe more feedback on this issue in general
Bincode
I'm a big fan of using default libs to do stuff. But yesterday I tried finding anything JS-library-ish that could handle Rust-bincode. Just to see if there's something in that direction. Didn't find anything that looked hopeful.
One of them in my mind is will the Rust version be the only version that is allowed to run consensus?
I could imagine that locking in now to this might be an issue later. Especially if there's no bincode support in other languages (But maybe there's chance this will be added in the future?).
How to send/receive data with a npm-module later on?
Related bincode-repo issues:
Protocol buffers
For the lack of alternatives this sounds most reasonable
Related projects:
Custom
I am not a big fan of implementing such things in a custom way, mostly because of the mentioned cons
from saito-rust.
One big downside of protobufs is that the entire protobuf spec becomes part of our spec. The upside is we might get considerable performance benefits.
I think bincode isn't a viable long-term solution.
"Would require recreating it for each new implementation in another language". I view this as a "pro" for custom serializers, not a con. The encoding scheme must be implementable in arbitrary languages.
from saito-rust.
Just though I'd mention, benchmarking and tests of these different solutions exist in the serialization
branch here in this repo for anyone who's curious or wishes to help us extend testing.
from saito-rust.
Linking the mentioned branches:
- https://github.com/SaitoTech/saito-rust/tree/serialization_play
- https://github.com/SaitoTech/saito-rust/tree/serialization_test
from saito-rust.
Can this be closed?
from saito-rust.
Thank you for the discussion everyone!
We are implementing custom serialization at this point.
from saito-rust.
Related Issues (20)
- Improve Routing Hops
- connect to other nodes HOT 3
- clippy error: src/blockchain.rs:315:16 - this boolean expression contains a logic bug
- Suggest using the updated jemalloc lib HOT 4
- Update and match the Onchain Reorganization behavior in Saito-Rust with Saito-lite-rust
- Move all related global variables for peer-to-peer communication to the Network class
- Deployment of Saito-Rust in Production
- More Configuration Options If Config File Not Found In Default Location HOT 3
- Tests hang
- Create a proper sprint-planning process and start using it HOT 1
- Lottery Game Module HOT 1
- add_block_to_blockchain 2/4 - core algorithm of adding block: if the block(or blocks?) are valid and a new longest chain: invalidate old blocks, fire rollback events, and add the new blocks(and fire rollforward events) HOT 1
- add_block_to_blockchain 3/4 - Validate Transactions against UTXO(no sig validation)
- Serialization Benchmark Tooling HOT 1
- Make sure all code is commented and tested
- add_block_to_blockchain 3/4 - blockchain.rs manages Removing non-LC blocks from the blockchain hashmap
- Refactor utxoset API and Slip Structures in preparation for add_block_to_blockchain HOT 1
- Implement a Double-ended-queue-like Class to hold the Epoch HOT 1
- Naming Conventions HOT 2
- Design epoch stackqueue API HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from saito-rust.