Skip to content

Instantly share code, notes, and snippets.

@MaiaVictor MaiaVictor/moon-project.md Secret
Last active Nov 14, 2017

Embed
What would you like to do?
Moon Project

Moon Project

The Moon-Project is an initiative aiming to create a provably secure, extremelly performant engine for decentralized applications. Think of it as a browser, but not based on JavaScript / HTML.

2017 accomplishments

On 2017, we created:

  1. A prototype of Moon-Lang, an universal algorithm-specification language.

  2. A prototype of Moon-Browser, a safe browser for Moon-Lang DApps (video / demo).

2018 roadmap

  1. Moon-Lang 1.0

  2. Moon-Engine 1.0

  3. Moon-Book 1.0

Next milestone

Write a complete game DApp (probably Cryptomon) for Moon-Engine 1.0 using Moon-Lang 1.0. It is supposed to showcase everything that the engine is capable of. This is what I (Victor Maia) will be working on for the next months.

Moon-Lang 1.0

Moon-Lang's prototype highlights some of its features, but isn't complete. Version 1.0 will be the first and final release (i.e., the language will never update, and that's important). For it, we will take the prototype and reform it with insights gained so far and desired features. That core will be less JS-like and more Morte-like, but fixing Morte's major flaws (no pattern-matching and induction).

Moon-Lang 1.0 could be described as, basically, the calculus of constructions under elementary affine logic. Elementary affine logic allows fixing Morte's (i.e., CoC's) expressivity and performance problems at once, thanks to 1. linearity allowing optimal reductions, 2. linearity allowing type-level fixed-points without introducing logical inconsistencies (which, in turn, allows induction, pattern-matching, ADTs, etc.).

It will, thus, feature:

  1. Theorem proving

    Since it is based on the Calculus of Constructions and due to curry-howard's isomorphism, and thanks to fixing Morte's expressivity issues, one will be able to use Moon's type system to prove arbitrary theorems about its programs.

  2. Parallel evaluation

    Since it can be reduced directly with the abstract algorithm, a very lightweight, optimal graph-reduction machinery, we will be able to run Moon programs efficiently on the GPU, with OpenCL.

    • Will allow Moon DApps to render pixels directly.

    • Will remove the need for Inferno, DOM, HTML, etc.

    • Will allow games, animations, 3D, stunning visuals.

  3. Smart-contracts

    So far, Moon was limited to DApps. For the same reason above, we will be able to use Lamping's algorithm to lazily reduce Moon programs on the EVM with minimal resource usage, allowing it to be used as a smart-contract language.

    • Will allow replacing Solidity entirely.

    • Will, thus, allow proving theorems about contracts.

The syntax will also be reformed to be more Python-like.

Moon-Lang 2.0's compiler and parser will be written on itself.

Moon-Engine 1.0

Moon-Engine 1.0 will be written on Moon-Lang itself. This will allow:

  1. Proving theorems stating all the desired safety properties of the browser.

  2. Target more platforms: Moon-Browser (Web), Moon-DApp (iOS/Android/OSX/Windows/Linux).

  3. Even smaller, more performant builds.

Moon-Book 1.0

Moon-Book is a collection of libraries. It must be ported to Moon-Lang 1.0. It will include:

  1. Data-structures (list, set, queue, map, etc.).

  2. Ethereum primitives (Keccak, RLP, ABI, etc.).

  3. DApps

    • DApp Store

    • Token Wallet

    • Games

    • Etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.