Overview

Frame is an open source framework for publishing web pages to EVM-based block space.

It consists of two components:

  • A set of immutable smart contracts deployed to popular EVM-based networks, which are used for storing, retrieving, and rendering a cohesive web page.

  • FrameDataStore contracts that hold reusable browser code already on-chain, such as three.js and p5.js. Once data is added to these contracts it cannot be edited or removed.

The GitHub repo can be found here.

How it Works

Web pages are rendered from on-chain by iteratively calling the renderPage method on a Frame contract and viewing the result in any modern web browser.

Each Frame contract will usually reference two types of FrameDataStore contracts for its data:

  • Dependency data stores, such as FrameTools, which contain already-on-chain code to be run in the web page on page load

  • A newly-deployed data store containing any new browser code that will be run in the web page, after imported code is run

Frames can reference code that is already on-chain (and thus paid for), greatly reducing a creator's cost to create something reliant on powerful open source libraries. For example, the FrameTools contract provides access to p5.js or three.js for tiny percentage of their original on-chain storage cost.

Use-Case

Web pages are really just containers for media. Frame was built to help creatives publish dynamic, high-fidelity media that lives entirely on-chain for as low of a cost as possible.

A creator can also do more with code in the browser than in the EVM. For example, libraries in the Frame Tools data store are stored in a compressed format (gzip), and are decompressed on page load using code from the fflate js library.

Last updated