Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gnarly Nest Proposal #30

Merged
merged 4 commits into from Jun 12, 2018
Merged

Gnarly Nest Proposal #30

merged 4 commits into from Jun 12, 2018

Conversation

@shrugs
Copy link
Contributor

shrugs commented Mar 16, 2018

Request for Nest membership and Funding (#21)

Team name: XLNT β€” @shrugs @mykelp

Proof of concept / research whitepaper: https://github.com/XLNT/gnarly πŸ€™

Burn rate: $3.5k/person/month

Legal structure: None, but we could set something up if necessary.

Proposal

XLNT would like to build Gnarly. Gnarly is a solid-state interpreter that reduces blockchain information to a developer-friendly format, that supports optimistic state transfers, enabling reactive and user-friendly client-side interfaces. It does this by running a developer-provided state function over every block in the Ethereum blockchain, intelligently handling forks and rollbacks, with no extra effort from the developer. The state function looks a little something like

...

if (tx.to === CRYPTO_KITTIES && events.include('Transfer')) { // this line is pseudo code
  because('KITTY_TRANSFER', () => {
    kittyState.ownerOf[tokenId] = event.to
  })
}

...

Gnarly then handles the logic of keeping kittyState in sync with your chosen persisted store (Postgres, Redis, ElasticSearch, etc) so that you can query this state like a normal web developer later on in your application's lifecycle.

Because of this "solid-state interpreter" approach, we can easily integrate optimistic state transfers. When a developer provides a transaction to gnarly that's also been submitted to the network, gnarly can optimistically include a block with that transaction in it. The rest of the system functions identically, meaning that the state transition caused by your transaction is already reflected in the persistent store (with an attached "confidence").

Gnarly can be run server-side for shared state, or client-side for personal state reduction.

Gnarly has many usecases, including:

  • literally anything that talks to the blockchain on behalf of a user
    • by simplifying the process of using blockchain info, we make developing high quality blockchain interfaces much more reasonable and approachable
  • gas price oracle API
  • unified token balance API
  • event webhook API
  • literally any other "blockchain info but as an API" API
  • indexing blockchain events for searching
  • decentralized dApp store *
  • decentralized Etherscan *

* for the fully-decentralized solutions, it's necessary to implement some sort of checkpointing system to avoid every client needing to re-index the blockchain themselves. It may be possible to use Truebit to iteratively run the gnarly interpreter over the past n blocks, publishing the resulting state to IPFS or similar, allowing a subset of nodes to calculate the state but having everyone in the network trust it.


Let me know if we should be more detailed with the roadmap specifications.

@CLAassistant

This comment has been minimized.

Copy link

CLAassistant commented Mar 16, 2018

CLA assistant check
All committers have signed the CLA.

Copy link
Contributor

mariapao left a comment

@shrugs thanks for the application! I have reviewed the RFF and the PoC and your application is candidate for funding.

Next step: the RFF and PoC will be reviewed by Placeholder.

@mariapao mariapao requested review from cburniske and removed request for cburniske Mar 19, 2018
@mariapao

This comment has been minimized.

Copy link
Contributor

mariapao commented Mar 27, 2018

Hey @shrugs and @mykelp: we have approved your request for funding! Welcome to nest :)

Next steps: I'd like to have a call to discuss some details about wrapping up this process. We can discuss what else you guys need to start working on the project as soon as possibe. Are you in the community channel: the Arachat? Or, can you email me to maria@aragon.one so we can schedule the call? Thanks and talk to you soon.

@shrugs

This comment has been minimized.

Copy link
Contributor Author

shrugs commented Mar 27, 2018

We'll email you now! And we've already started working on it of course πŸ˜„

mykelp and others added 2 commits Apr 3, 2018
@mariapao mariapao merged commit 8a3bd50 into aragon:master Jun 12, 2018
1 check passed
1 check passed
license/cla Contributor License Agreement is signed.
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.