|
Kenta Iwasaki
@
xtwokei
Okayama-shi Naka-ku, Okayama
|
|
CTO of @PerlinNetwork.
|
|
|
253
Tweetovi
|
53
Pratim
|
438
Osobe koje vas prate
|
| Tweetovi |
|
Kenta Iwasaki
@xtwokei
|
17 h |
|
|
||
|
Kenta Iwasaki
@xtwokei
|
19 h |
|
Experimented with and threw away 600 lines of code for storing consensus-related data to LevelDB. Atomic transactions in syndtr/goleveldb are slow 😢. #golang pic.twitter.com/yb5glUsjcI
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
19 h |
|
Rotating the bloom filters would help, though at that point a simple LRU would work best amortized. Should memory space be of a bigger concern vs. CPU cycles for caching gossiped entries, I would resort back to the bloom filter implementation.
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
19 h |
|
Right: classifying between eager/lazy peers, in this case, would definitely be a good way to have Noise's gossip package implement a general-purpose push-pull protocol. I'll keep this in mind for the next Noise release - busy with a lot of blockchain code at the moment :).
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
22 h |
|
I wanted to keep it naive as I felt keeping a second peer overlay would be redundant (Noise already provides a resilient Kademlia overlay).
For my personal projects using Noise, depending on the data gossiped, I would adjust the protocol to be push-pull instead of just push.
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
22 h |
|
Bloom filters work well, though fail once exceeding their designated capacity. Ristretto does not exhibit read-your-writes consistency as a cache and was thus unsuitable given how small the latency was for a single gossip push. Fastcache had neither of these issues.
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
4. velj |
|
Abstracting away the BFT consensus protocol I gave a talk on in SFBW 2019 into a general-purpose Go package. #golang #blockchain @PerlinNetwork pic.twitter.com/3dI9nge9cX
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
3. velj |
|
Trying this first thing tomorrow.
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
3. velj |
|
The full interface: pic.twitter.com/EtsKetdhvE
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
3. velj |
|
Neat and fun little abstraction pattern for creating atomic database helper methods with syndtr/goleveldb. #golang pic.twitter.com/194kfclhpl
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
3. velj |
|
Initial implementation used bloom filters for caching, which was then switched to dgraph-io/ristretto, which was then switched to VictoriaMetrics/fastcache with an in-memory cache size of 32mb.
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
3. velj |
|
The communication complexity through unit tests roughly approximates to O(n^2) messages being sent out in total. A random exponential delay before emitting out the next round of gossip further reduces the number of rounds and messages sent.
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
3. velj |
|
The other Perlin developers are currently engaged primarily in private repositories, unfortunately. My time, however, will be spent on public repositories in the meantime :).
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
3. velj |
|
Finished up an initial gossip protocol implementation on Noise with tests and documentation. github.com/perlin-network…
#golang #p2p @PerlinNetwork pic.twitter.com/ksIxMx7sPW
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
1. velj |
|
|
||
|
Kenta Iwasaki
@xtwokei
|
1. velj |
|
Writing a gossip protocol plugin over a Kademlia overlay network for Noise. This test demonstrates how the XOR distance metric over peer IDs asserts that peers are well-connected (with a lot of assumptions of course!). pic.twitter.com/Qn1cqAnDFf
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
1. velj |
|
Weekends are a good time to code 😌. #golang #noise $perl
github.com/perlin-network… pic.twitter.com/yD40DYk5p0
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
31. sij |
|
Now I need to find an alternative to Ristretto #golang. pic.twitter.com/JtA6EsEAYe
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
31. sij |
|
Slight revision to the version number :). twitter.com/PerlinNetwork/…
|
||
|
|
||
|
Kenta Iwasaki
@xtwokei
|
29. sij |
|
Released Noise v0.1: a decentralized p2p networking lib in #golang.
Tons of performance/security fixes + features (docs, examples, connection pooling, search for peers by public key, etc.).
Will write up a post tmrw; gonna sleep it's 1AM.
@PerlinNetwork github.com/perlin-network… pic.twitter.com/Oo5htqJl5N
|
||
|
|
||