Overview

Frame is an open source framework for publishing web pagesarrow-up-right 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.jsarrow-up-right and p5.jsarrow-up-right. Once data is added to these contracts it cannot be edited or removed.

The GitHub repo can be found herearrow-up-right.

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 FrameToolsarrow-up-right, 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 FrameToolsarrow-up-right contract provides access to p5.jsarrow-up-right or three.jsarrow-up-right 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 fflatearrow-up-right js library.

Last updated