The Basic Idea

We will be discussing Facet the protocol in the context of the Facet VM, an open source project that enables anyone to run the protocol.

Here is the Facet VM repository.

The Basic Idea

Facet recreates an EVM-like environment to execute computation and store data. The goal is to create something familiar for Solidity developers.

Here's how it works. Suppose a user wants to mint an NFT:

First, the user encodes the details of the mint into an Ethereum transaction. Facet uses a dataURI instead of ABI encoding, but otherwise this step is quite similar to a Smart Contract-based mint.

Next, the user adds this encoded message as calldata on an Ethereum transaction and sends the transaction not to a Smart Contract, but instead to 0x00000000000000000000000000000000000face7.

The Facet VM observes what is being sent to 0x00000000000000000000000000000000000face7and will route your mint transaction to the appropriate Dumb Contract (Facet contracts are called Dumb Contracts).

Contract logic executes, state is persisted, and a transaction receipt becomes available via the API.


All Facet transactions are Ethscriptions. However, the Ethscriptions Protocol is entirely separate from Facet. Facet depends on Ethscriptions, but Ethscriptions users need-not use Facet (or even be aware it exists).

Last updated