Thanks to Chain Fusion technology, I believe ICP makes for an amazing execution layer for Ethereum and the wider web3 ecosystem. Yet adoption of that still seems pretty low. A significant reason is probably the steep learning curve for an EVM developer: You have to learn about ICP, learn Rust, learn about the EVM canister, buy ICP, buy cycles, deploy a bridge, deploy and manage a canister etc.
The last couple of months I’ve been working on
Frosty Functions, which aims to hide all of those complexities:
-
TypeScript-like: Frosty Functions are written in AssemblyScript, a variant of TypeScript that compiles into WASM. Developers can write code in a familiar language directly in the Frosty web app without having to learn Rust or Motoko or install anything on their machine. The WASM binary is interpreted by the canister using wasmi.
-
Cross-chain: Frosty Functions can be invoked from any smart contract or EOA via a generic bridge contract. Currently this is deployed on Arbitrum, but more EVM chains as well as Bitcoin and Solana will be supported in the future. Functions have full control over wallets managed by ICP’s chain-key signatures. That means they can hold assets and invoke arbitrary smart contracts, e.g. to post back results of computations too expensive for other chains.
-
Canister-less: Since the code is interpreted by Frosty’s canister, developers can focus on their business logic without having to deploy any canisters or manage cycles. They simply pay for gas costs by sending ETH to the bridge contract. Frosty will use verifiable builds and non-upgradeable cansiters to still provide the same security and decentralization guarantees that you get from a native cansiter (or you can self host if you prefer). Being canister-less and (mostly) stateless also allows execution to scale horizontally in the future, as I outlined in my post on building planet-scale apps on ICP
Try it out here: https://vayms-xiaaa-aaaao-qmb6q-cai.icp0.io/
Example logs: FrostyNg
Example function: FrostyNg (you can run this with less than $0.01 from Arbitrum One)
Demo video: https://drive.google.com/file/d/1pnjRNsjfdiGSVFzueKU_nHnjLtfAYkGf/view
GitHub: GitHub - marceljuenemann/frosty-functions
Status: This project is still very much work in progress. The execution and bridge contract are fully working, but to make the EVM-interop really useful, I’m planning to port some core parts of ethers.js and add ABI support on the language level. Other ICP features like HTTP outcalls, timers and inter-canister calls can be added later as well.
Get involved: At this point I’m mainly looking for feedback on the idea and for a few developers who are experienced with the EVM and would like to build / prototype cross-chain experiences on top of Frosty Functions. You’ll be the first to get full access and I’ll provide 1:1 support. Please DM here or reach out to frosty@web3.services if interested ![]()