rsksmart / rskj

RSKj is a Java implementation of the Rootstock protocol.
https://rootstock.io
GNU Lesser General Public License v3.0
670 stars 268 forks source link

Replace the multilevel cache system with a journaling system #1040

Open SergioDemianLerner opened 5 years ago

SergioDemianLerner commented 5 years ago

Prize Bounty

The Prize Bounty is 21 ETH.

Challenge Description

Currently the RSKj nodes employs a multi-level cache system to track changes to the world state. This allows to revert the state in case of REVERT opcode or OOG.

The main class involved is MutableTrieCache.java. Every new contract called gets a new MutableTrieCache on top of the previous one.

This implementation is sub-optimal in terms of efficiency. Put/get are O(N) operations, where N is the level of the cache while revert is O(1). It is preferable to use a journaling cache "JournalTrieCache" that:

The task is to change the structure of the node such that: for each block a MutableTrieCache is used, but for each transaction a JournalTrieCache is used (and the same object is is used for all internal CALL frames).

Submission Requirements

A valid submission should modify the RSKj node to implement JournalTrieCache integrated to transaction processing, pass all unit tests and synchronize with the RSK mainnet.

The code should respect the contribution standards specified in https://github.com/rsksmart/rskj/blob/master/CONTRIBUTING.md

Submission Deadline

The deadline for submissions is November 11, 2019.

Judging Criteria

The prize will be awarded to the best valid submission.

Winner Announcement Date

The submission will be reviewed between November 11 and November 18. Winners will be privately notified before a public announcement of all hackathon prices given by IOV Labs. The announcement and prize payouts will occur before November 31, 2019.

gitcoinbot commented 5 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 2 weeks, 4 days ago. Please review their action plans below:

1) levalleux-ludo has started work.

Hi, here is my plan :

Would you have any metrics / relevant usecases to assess the performances before and after these changes ? 2) michaeltendossemwanga has started work.

Optimizing the buffers Transforming cache system

Learn more on the Gitcoin Issue Details page.

gitcoinbot commented 5 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work for 21.0 ETH (3948.3 USD @ $188.01/ETH) has been submitted by:

  1. @levalleux-ludo

@SergioDemianLerner please take a look at the submitted work:


levalleux-ludo commented 4 years ago

Current progress : the PR #1072 is still waiting for some reviews. I update the branch (rebase) regularly to avoid merge conflict ...

gitcoinbot commented 4 years ago

⚡️ A tip worth 2.10000 ETH (311.47 USD @ $148.32/ETH) has been granted to @levalleux-ludo for this issue from @SergioDemianLerner. ⚡️

Nice work @levalleux-ludo! Your tip has automatically been deposited in the ETH address we have on file.

levalleux-ludo commented 4 years ago

Hi @SergioDemianLerner Thanks, but I don't understand why I've got 10% of the expected reward. Did you see my latest PR update taking into account your feedback ?

ghost commented 4 years ago

@levalleux-ludo , just as an observer/visitor: https://github.com/rsksmart/rskj/pull/1072#issuecomment-563897891 (it looks like there is still not final review of this).

gitcoinbot commented 4 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This Bounty has been completed.

Additional Tips for this Bounty: