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

Transpiling of RIDE scripts to native Go code #217

Open
alexeykiselev opened this issue Dec 4, 2019 · 0 comments
Open

Transpiling of RIDE scripts to native Go code #217

alexeykiselev opened this issue Dec 4, 2019 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@alexeykiselev
Copy link
Member

Аbstract
The interpretation of RIDE scripts is slow. The idea is to transpile scripts those already in blockchain into a native Go functions and use them while importing blockchain or while validation of all scripts known at the moment of release.

Motivation and Purposes
To speedup the import and validation of blocks, to reduce the memory footprint of the node.

Specification

  1. Transpiler
    Implement the transpiler as a command line utility that will extract all scripts that in given blockchain file and generate Go source code for every script.
  2. Node with built-in scripts
    Include the generated functions in separate package in gowaves node. Add the index to lookup for the native function for a script. If there is a native function for a script in blockchain use it to validate transactions, if not use the default interpretation technic.

Backwards Compatibility
In case of impossibility to transpile a script the existing interpretation will be used.

@alexeykiselev alexeykiselev added the enhancement New feature or request label Dec 4, 2019
@alexeykiselev alexeykiselev self-assigned this Dec 4, 2019
@alexeykiselev alexeykiselev added this to the v0.4.0 milestone Dec 4, 2019
@alexeykiselev alexeykiselev removed this from the v0.4.0 milestone Mar 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant