All Projects → ewasm → Design

ewasm / Design

Licence: apache-2.0
Ewasm Design Overview and Specification

Projects that are alternatives of or similar to Design

Ssvm
SSVM is a high performance, extensible, and hardware optimized WebAssembly Virtual Machine for cloud, AI, and blockchain applications.
Stars: ✭ 751 (-9.19%)
Mutual labels:  ethereum, webassembly
0x Mesh
A peer-to-peer network for sharing 0x orders
Stars: ✭ 149 (-81.98%)
Mutual labels:  ethereum, webassembly
Evm2wasm
[ORPHANED] Transcompiles EVM code to eWASM
Stars: ✭ 96 (-88.39%)
Mutual labels:  ethereum, webassembly
Octopus
Security Analysis tool for WebAssembly module (wasm) and Blockchain Smart Contracts (BTC/ETH/NEO/EOS)
Stars: ✭ 261 (-68.44%)
Mutual labels:  ethereum, webassembly
Hera
Hera: Ewasm virtual machine conforming to the EVMC API
Stars: ✭ 132 (-84.04%)
Mutual labels:  ethereum, webassembly
Capstone
Capstone disassembly/disassembler framework: Core (Arm, Arm64, BPF, EVM, M68K, M680X, MOS65xx, Mips, PPC, RISCV, Sparc, SystemZ, TMS320C64x, Web Assembly, X86, X86_64, XCore) + bindings.
Stars: ✭ 5,374 (+549.82%)
Mutual labels:  ethereum, webassembly
Ethereum Development With Go Book
📖 A little book on Ethereum Development with Go (golang)
Stars: ✭ 754 (-8.83%)
Mutual labels:  ethereum
Parity Ethereum
The fast, light, and robust client for Ethereum-like networks.
Stars: ✭ 6,499 (+685.85%)
Mutual labels:  ethereum
Multipoolminer
Monitors crypto mining pools in real-time in order to find the most profitable for your machine. Controls any miner that is available via command line.
Stars: ✭ 750 (-9.31%)
Mutual labels:  ethereum
Webassembly Examples
Code examples that accompany the MDN WebAssembly documentation — see https://developer.mozilla.org/en-US/docs/WebAssembly.
Stars: ✭ 744 (-10.04%)
Mutual labels:  webassembly
Fluent
Fluent — planning, spec and documentation
Stars: ✭ 818 (-1.09%)
Mutual labels:  specification
Wasmer Php
🐘🕸️ WebAssembly runtime for PHP
Stars: ✭ 796 (-3.75%)
Mutual labels:  webassembly
Typechain
🔌 TypeScript bindings for Ethereum smart contracts
Stars: ✭ 769 (-7.01%)
Mutual labels:  ethereum
Coinbase Pro Node
DEPRECATED — The official Node.js library for Coinbase Pro
Stars: ✭ 782 (-5.44%)
Mutual labels:  ethereum
Blockchain
Compilation of useful documents and scientific papers about Blockchain & cryptocurrencies.
Stars: ✭ 751 (-9.19%)
Mutual labels:  ethereum
Web3 React
🧰 A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps
Stars: ✭ 788 (-4.72%)
Mutual labels:  ethereum
Awesome Blockchain
区块链白皮书、书籍、交易所、币种、自媒体等资源汇总 💯
Stars: ✭ 747 (-9.67%)
Mutual labels:  ethereum
Awesome Cryptoeconomics
An awesome curated list of Cryptoeconomic research and learning materials
Stars: ✭ 763 (-7.74%)
Mutual labels:  ethereum
Awesome Decentralized Finance
A curated list of awesome decentralized finance projects
Stars: ✭ 793 (-4.11%)
Mutual labels:  ethereum
Slither
Static Analyzer for Solidity
Stars: ✭ 759 (-8.22%)
Mutual labels:  ethereum

Ethereum flavored WebAssembly (ewasm)

Specification Revision 4

This repository contains documents describing the design and high-level overview of ewasm. Expect the contents of this repository to be in flux: everything is still under discussion.

This repository is also available through ReadTheDocs.

What is WebAssembly?

WebAssembly (or Wasm as a contraction) is a new, portable, size- and load-time-efficient format. WebAssembly aims to execute at native speed by taking advantage of common hardware capabilities available on a wide range of platforms. WebAssembly is currently being designed as an open standard by a W3C Community Group.

Please review the WebAssembly design and instruction set first. (You can also make a pull request or raise an issue at the Wasm Github repo.)

A few key points:

  • WebAssembly defines an instruction set, intermediate source format (wast) and a binary encoded format (wasm).
  • WebAssembly has a few higher level features, such as the ability to import and execute outside methods defined via an interface.
  • LLVM includes a WebAssembly backend to generate Wasm output.
  • Major browser JavaScript engines will notably have native support for WebAssembly, including but not limited to: Google's V8 engine (Node.js and Chromium-based browsers), Microsoft's Chakra engine (Microsoft Edge), Mozilla's Spidermonkey engine (Firefox and Thunderbird).
  • Other non-browser implementations exist too: wasm-jit-prototype (a standalone VM using an LLVM backend), wabt (a stack-based interpreter), ml-proto (the OCaml reference interpreter), etc.

What is Ethereum flavored WebAssembly (ewasm)?

ewasm is a restricted subset of Wasm to be used for contracts in Ethereum.

ewasm:

Goals of the ewasm project

  • To provide a specification of ewasm contract semantics and the Ethereum interface
  • To provide an EVM transcompiler, preferably as an ewasm contract
  • To provide a metering injector, preferably as an ewasm contract
  • To provide a VM implementation for executing ewasm contracts
  • To implement an ewasm backend in the Solidity compiler
  • To provide a library and instructions for writing contracts in Rust
  • To provide a library and instructions for writing contracts in C

Glossary

  • Ewasm contract: a contract adhering to the ewasm specification
  • Ethereum environment interface (EEI): a set of methods available to ewasm contracts
  • metering: the act of measuring execution cost in a deterministic way
  • metering injector: a transformation tool inserting metering code to an ewasm contract
  • EVM transcompiler: an EVM bytecode (the current Ethereum VM) to ewasm transcompiler. See this chapter.

Resources

Projects

Design Process & Contributing

For now, high-level design discussions should continue to be held in the design repository, via issues and pull requests. Feel free to file issues.

Chat

Gitter

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].