Excited to share this blog post about some of the work @durumcrustulum and I have been doing at the @ZcashFoundation, designing a new network stack for Zcash:https://www.zfnd.org/blog/a-new-network-stack-for-zcash/ …
-
Prikaži ovu nit
-
as mentioned in the post, our goal for Zebra is to support the core strength of Zcash – its best-in-class cryptography – by placing it on a solid foundation, providing a modern, modular implementation that can be broken into components and used in many different contexts.
1 reply 2 proslijeđena tweeta 14 korisnika označava da im se sviđaPrikaži ovu nit -
for instance, we'd like the networking layer to be useful not just for running a node but also for running a network crawler / monitoring infrastructure, for the chain data structures to be useful for our pegzone project, etc.
1 reply 2 proslijeđena tweeta 17 korisnika označava da im se sviđaPrikaži ovu nit -
but because the existing Zcash tooling is built on top of legacy Bitcoin code, this is extremely difficult and cumbersome, so a key part of this project is re-grounding the Zcash cryptography on a modern foundation.
2 proslijeđena tweeta 13 korisnika označava da im se sviđaPrikaži ovu nit -
as a Bitcoin fork, Zcash inherited Bitcoin's networking stack, and both the protocol and its implementation leave a lot to be desired.pic.twitter.com/K9Ykcq8XzC
1 reply 3 proslijeđena tweeta 16 korisnika označava da im se sviđaPrikaži ovu nit -
so instead, we define our own internal request/response protocol, and then perform per-peer translation between our protocol and the legacy Bitcoin protocol.
1 reply 1 proslijeđeni tweet 12 korisnika označava da im se sviđaPrikaži ovu nit -
unlike zcashd or bitcoind, which maintain one state machine for all connections, this means that we can isolate the connection state for each peer, and the state space is much smaller and easier to reason about.
1 reply 2 proslijeđena tweeta 11 korisnika označava da im se sviđaPrikaži ovu nit -
as a nice side effect, because connection state is isolated and each connection is an independent async task, we're automatically immune to the `ping` attack on Zcash, even though we chose this design before that attack was published :)
1 reply 1 proslijeđeni tweet 9 korisnika označava da im se sviđaPrikaži ovu nit -
then, we provide a connection pool that load-balances outbound requests over all available peers, so that the rest of our code doesn't need to know about individual peer connections.
1 reply 0 proslijeđenih tweetova 6 korisnika označava da im se sviđaPrikaži ovu nit
the size of the connection pool is dynamically determined by backpressure, growing when outbound request demand is high and shrinking to shed inbound request load.
-
-
this is all made possible by Tower (http://docs.rs/tower ), which provides a vocabulary for writing generic service-handling code, based on the ideas from
@marius's _Your Server As A Function_: https://monkey.org/~marius/funsrv.pdf …1 reply 1 proslijeđeni tweet 20 korisnika označava da im se sviđaPrikaži ovu nit -
and thanks to Monodraw there's even a nice diagram:pic.twitter.com/iFKNKXuBUb
0 replies 2 proslijeđena tweeta 14 korisnika označava da im se sviđaPrikaži ovu nit
Kraj razgovora
Novi razgovor -
Čini se da učitavanje traje već neko vrijeme.
Twitter je možda preopterećen ili ima kratkotrajnih poteškoća u radu. Pokušajte ponovno ili potražite dodatne informacije u odjeljku Status Twittera.