Skip to main content

WebAssembly
on ICP

An advantage of the Internet Computer blockchain is its use of WebAssembly for executing smart contracts and decentralized applications — written in a wide variety of languages that compile to WebAssembly.

WebAssembly was designed from the ground up to be secure, safe, and fast. Such characteristics enable the Internet Computer to run scalable decentralized applications for clients and enterprises.

Read how Internet Computer uses WebAssembly

Why WebAssembly

The Internet Computer executes the code of an application on multiple decentralized nodes, which are operated by node providers who are selected and vetted by the NNS token holders. This replicated execution works even in the presence of untrusted and malicious nodes. A critical property for replicated execution is its determinism, which refers to executing identical code with the same inputs, invariably yielding the same result. This deterministic execution is a fundamental feature upon which the Internet Computer depends, and it's a guarantee provided by WebAssembly.

WebAssembly is becoming a de-facto standard for secure and safe computation, with benefits for both the server side of systems and the client browser side. Its ecosystem is continuously growing thanks to contributions from industry, academia, and open source enthusiasts. The Internet Computer is a secure platform to run server WebAssembly components and code in a more distributed and secure execution environment where developers and enterprises can leverage all this work to build powerful decentralized applications.

WebAssembly and Cloud

The Internet Computer aims to bring decentralization and statefulness to cloud computing. Conversely, it can be also viewed as bringing cloud features such as fast, scalable, general-purpose computation into the domain of blockchain. WebAssembly is well suited for this mission because it is a general-purpose, sandboxed virtual machine that was designed to be secure, safe, fast, and deterministic.

Read about cloud computing on ICP

WebAssembly vs EVM

WebAssembly and EVM are similar in the sense that they both are virtual machines for blockchains. The main difference is that WebAssembly is general-purpose and supports many programming languages. WebAssembly on the Internet Computer provides several orders of magnitudes higher compute and storage capacity to its applications.

Since WebAssembly is more expressive and performant, it can even emulate an EVM. This approach is currently being explored by Bitfinity EVM, an ICP community project.

Check out Bitfinity EVM

Joining forces to develop WebAssembly

Contributing to open standards, enhancing performance, and fostering collaborative research.

Bytecode Alliance

Bytecode Alliance

DFINITY is a member of the Bytecode Alliance, an organization that develops the Wasmtime runtime, which is a high-performance implementation of the WebAssembly standard.

About Wasmtime 1.0

Open Standard

Open Standard

WebAssembly was co-designed by Andreas Rossberg, who also contributed to the development of the WebAssembly standard. The open standard is overseen by the World Wide Web Consortium (W3C), an organization with over 400 members, including DFINITY.

Check out W3C

Andreas Rossberg

WebAssembly Research Center

WebAssembly Research Center

DFINITY is a founding member of the WebAssembly Research Center at Carnegie Mellon University (CMU). Under the direction of Ben Titzer, a co-designer of WebAssembly, this Center is the first to bring together researchers from academia and industry to explore the potential of the platform and its emerging applications.

Read the press release

Canister Development Kits

WebAssembly allows ICP developers to write canister smart contracts in any of these programming languages