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

NatiVM #47

Open
1 task done
stephenpdeos opened this issue Aug 24, 2022 · 0 comments
Open
1 task done

NatiVM #47

stephenpdeos opened this issue Aug 24, 2022 · 0 comments
Labels
core Core Protocol Development Team work initiative principal-design

Comments

@stephenpdeos
Copy link
Member

stephenpdeos commented Aug 24, 2022

Problem

Opportunity: What are the needs of our target user groups?

Deterministic code.

EOS-VM and any other VM technology can't 100% guarantee that the kernel of running code (smart contract for Antelope) is purely deterministic. Code generation for interpreters, JITs and others can have bugs or patterns of instructions that elicit non-determinism. These also include EVM, etc.

Target audience: Who is the target audience and why?

All consumers of our technology.

  • BPs
  • Exchanges
  • dApp developers
  • Token holders

Strategic alignment: How does this problem align with our core strategic pillars?

Being truly deterministic eliminates unexpected behavior that can cause issues and create adverse user experiences.

Context

Competitors: Who are our top competitors (up to 5) and why? How do they solve this problem today?

Product differentiation: what would make our solution different?

Audience definition

Solution

Solution name: How should we refer to this product opportunity?

NatiVM

Purpose: Define the product’s purpose briefly

NatiVM will be a

  • deterministic VM
  • minimization of overheads of execution to near zero
  • high affinity for off-line compilation optimizations
  • MIT licensed

For Antelope we are utilizing WebAssembly (WASM) as the Intermediate Representation (IR) for the blockchain smart contract layer. NatiVM will instead use a subset of AMD64 I am calling Deterministic AMD64 as its VM architecture.

Instead of CDT or other toolchains producing WASM it will produce a binary that more closely matches the base architecture.

The IR of Deterministic AMD64 will be a proper subset of AMD64. This will allow for CDT/ANTLER to compile and generate either a smart contract binary or a regular shared object file.

  • The standard for NatiVM will be an open standard.
  • The licensing will be MIT.
  • Deterministic AMD64 will be a proper subset of AMD64 and therefore perfectly compatible with preexisting AMD64 machines.
  • Future (v2 or beyond) will introduce Deterministic ARM64 as these machines become more ubiquitous.
  • To mitigate 'return oriented programming' from occurring in smart contracts and supply developers with more security a simple stack canary system can be used with block time injected as the canary check value.

To short gap solution for ARM64 based systems will be created as a simple shotgun static binary rewriter. AMD64 to ARM64 tends to have good affinity for optimizations so a loss of performance should be minimal.

Success definition: What are the top metrics for the product (up to 5) to define success?

Assumptions

Risks: What risks should be considered? https://www.svpg.com/four-big-risks/

Business Objectives/Functionality

Features/Epics

User stories

Additional tasks

Timeline

Cost

Open questions

@stephenpdeos stephenpdeos moved this from 🪨 Unrefined to ⛏ Refining in Product Backlog Aug 24, 2022
@stephenpdeos stephenpdeos moved this from Solution Design to Opportunity Definition in Product Backlog Aug 29, 2022
@stephenpdeos stephenpdeos added the core Core Protocol Development Team work label Sep 21, 2022
@stephenpdeos stephenpdeos added this to the 5.0 milestone Oct 11, 2022
@stephenpdeos stephenpdeos modified the milestones: Leap v5.0.0 Sep/Oct 2023, CDT vTBD Sep/Oct 2023 Apr 16, 2023
@stephenpdeos stephenpdeos removed this from the CDT vTBD Sep/Oct 2023 milestone Apr 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Core Protocol Development Team work initiative principal-design
Projects
Status: Opportunity Definition
Development

No branches or pull requests

1 participant