Making Incognito faster and lighter with lightning synchronization

What problem are you solving?

Describe the pain point. What are the shortcomings of current solutions?

14

The current Incognito blockchain has been developed to integrate with a network of highway nodes. After the initial application of this new network topology, we felt many improvements could be made to improve scalability. Here is a new version of Incognito and Highway that solves the following issues:

  • Data synchronization by nodes with poor network performance is very slow and sometimes interrupted.
  • Requests for data as well as response packets are frequent and redundant. This consumes a great deal of node resources.

What is the solution?

Why is it a good idea? What’s new about what you’re doing? The more details, the better. Sketches, mockups, demos, prototypes, videos, pictures - it all helps community members get excited as you are.

We have isolated the most appropriate techniques to tackle each problem. The following have been reviewed and tested:

  • Streaming, based on gRPC. This helps reduce synchronization latency and saves bandwidth by skipping redundant HTTP request headers.
  • Caching highway’s data in memory. Since Highway must serve many clients, the cache must support concurrent operations with minimal latency. Ristretto satisfies these requirements with an added bonus of memory-bounding.

Which solutions do people resort to because this doesn’t exist yet?

Who are the direct and indirect competitors? Why is your solution better?

None that we know of. Node owners with unstable network connections are facing many issues regarding synchronization speed.

Who are you?

Introduce the project team members (schools, jobs, projects, github, twitter, blogs, etc.) and any similar work you’ve done.

We are part of the Incognito Core team (@hyng, @duybao ), and also the creators of the current Highway version. Our research interests lie in distributed systems, cryptography and everything related to blockchain. Our advisors are @0xkumi and researcher @dungtran, they provide valuable support in the design of Highway’s architecture.

Why do you care?

Tell people why you’re passionate about your privacy project and committed to making it happen.

We want anyone to be able to join the Incognito network, with the lowest hardware and bandwidth requirements possible. Also, we want to transfer packets in the network faster and in an optimal manner. This will support the scaling of node numbers in the committee, which is essential for achieving decentralization and byzantine fault tolerance.

What’s your plan? What’s your schedule?

Layout a clear, specific timeline for what community members can expect.

There are 2 parts to this plan:

  1. Update syncing logic to support gRPC streaming and caching
  2. Implement streaming and caching features on highway

Schedule (total 2 months), starting from Jan 15:

  • Research and experiment: 2 weeks
  • Update syncing logic: 1 week
  • Implement streaming and caching: 3 weeks
  • Unit test and integration test: 1 week
  • Deploy on testnet: 1 week
  • Deploy on mainnet: March 15

What’s your budget?

A simple breakdown lets community members know you’ve thought things through and have a workable plan, so they can trust you to use funds wisely.

The project will be undertaken by 2 engineers:

Resource Cost Quantity Monthly Cost
Blockchain engineer @duybao(3/4 resource) 2,000 PRV 1 1,500 PRV
Research engineer @hyng(3/4 resource) 1,000 PRV 1 750 PRV
Sub total 2,250 PRV
Total (x 2 months) 4,500 PRV

Is there an existing conversation around this idea?

Not yet on this forum.

Is there anything else you would like the community to know?

Let us know what you think. Feedback on our design is welcome!

9 Likes

February update:

DONE:

  • Implemented streaming and caching (separately)
  • Unit test for caching
  • Tested locally

TODO:

  • Merge 2 features and update unit tests
  • Deploy on testnet (ETA Mar 04, on track)

Bonus:

  • Cache-hit rate of 2 highways (converge to around 0.5 => this update will reduce network usage of highway by half)
    Screenshot%20from%202020-02-28%2012-34-55
3 Likes

Thanks for your update, Hy!

This project was funded in Jan 15th so I moved it into the right category “work in progress”.

Funding for Feb has been disbursed and will continue to be disbursed every subsequent week dependent on progress.

1 Like

Thanks @annie! :smiling_face_with_three_hearts:

March 03 - 06 update:

Done:

  • Merged caching and streaming
  • Deployed on testnet

In progress:

  • Benchmarking sync speed
  • Refactoring block insertion on node
  • Updating unit tests
2 Likes

March 09 - 13 update (final):

  • Successfully deployed highway v2 on mainnet (benchmarking results will be updated shortly as we are monitoring the result on mainnet)
  • Implemented and testing highway authorization on testnet (to prevent malicious actors from spamming messages to highway)
  • Document highway for maintenance purposes in the future (in Vietnamese for now as we’re actively editing it to keep it up-to-date)
3 Likes

Hi team, please update for this proposal, supporting us to know about this performance is good or not

Hi everyone, we benchmarked the new highway for the last few days. Here are the key results:

  • We optimized the block-syncing process and with block-streaming, Incognito nodes now sync blocks up to 80% faster (from 208k to 372k blocks in 15 mins). Note that this is the sync speed, it takes more time to write data to the local database.
  • Also, streaming removed the cap for the number of blocks that can be transferred at a time. Previously, every node sync the same number of blocks per second. Now we can flexibly utilize the full network bandwidth of the Incognito node if we desire.
  • Caching on Highway has a really high cache-hit rate, up to 95%. This helps reduce the bandwidth (of Highway) needed to sync blocks by 10-20 times. Below is the cache-hit chart for mainnet in the first 30 mins.
  • Note: to reproduce our tests, check out the two tags highway-benchmark-v1 and highway-benchmark-v2.Screen Shot 2020-03-23 at 11.57.53 AM
4 Likes