IPVM The Long-Fabled Execution Layer

IPVM The Long-Fabled Execution Layer “The Easiest Way to Run Wasm Everywhere”

IPVM The Long-Fabled Execution Layer “The Easiest Way to Run Wasm Everywhere” The Fastest Way to Ship IPFS Features to Users

IPVM The Long-Fabled Execution Layer “The Easiest Way to Run Wasm Everywhere” The Fastest Way to Ship IPFS Features to Users A Step Towards IPOS

Agenda 1. 2. 3. 4. 5. 6. 🦖 What 🌋 s y a d y Why l r a e r e p Security u S Scheduling Compute Commons Open Discussion 🌶

IPVM IP What?

IPVM IP What? A blessed VM (Wasm) in every IPFS node Transparent IPFS node upgrades (like the web) 🎭 Support features like Autocodec Compute without (required) consensus Global adaptive optimization Mobile (ambient) computing

IPVM What This Gets You

IPVM What This Gets You Like data, compute should be ubiquitous End users and IPFS teams can depend on having compute around Deep integration with tooling Fully consistent functionality between clients Replace AWS’s proprietary Lambda with an open protocol + nodes “The HTTP of Compute” 🤩

Requirements Working Backwards

Requirements The Basics

Requirements The Basics Portable Deterministic, verifiable Purity? Managed e ects? Enforced termination (enabled-by-default?) Move compute to data / move data to compute Push & pull both important ff (e.g.) UCAN for remote invocation

Requirements The Basics Portable Deterministic, verifiable Purity? Managed e ects? Enforced termination (enabled-by-default?) Move compute to data / move data to compute Push & pull both important ff (e.g.) UCAN for remote invocation https://twitter.com/impurepics

Requirements Familiarity as Adoption Tactic

Requirements Familiarity as Adoption Tactic Bring your own language Common patterns (e.g. manifests, cron, systemd, build packs)

Requirements Deep Integration

Requirements Deep Integration Lean into content addressing More than the sum of its parts Local and remote execution Reuse Wasm e ort, infra, tooling, community experience, etc ff FVM, Aquamarine, CloudFlare Workers, Bacalhau, web3.storage invocations, IPFS-FAN

Requirements Deep Integration Lean into content addressing More than the sum of its parts Local and remote execution Reuse Wasm e ort, infra, tooling, community experience, etc ff FVM, Aquamarine, CloudFlare Workers, Bacalhau, web3.storage invocations, IPFS-FAN

Requirements Juan’s Triangle

Requirements Antigoals?

Requirements Antigoals? Suggestions? 🙏

Execution-as-IPLD Interplanetary Linked Invocation (IPLI)

Execution-as-IPLD Invocation via IPLD

Execution-as-IPLD Invocation via IPLD Description of jobs & results Index and/or names for later lookup Streams of results per machine

Execution-as-IPLD Invocation via IPLD IPLI Input Description of jobs & results Index and/or names for later lookup Streams of results per machine f Arguments Scheduling Con ig, etc

Execution-as-IPLD Invocation via IPLD IPLI Output IPLI Input Description of jobs & results Index and/or names for later lookup Streams of results per machine f Arguments Scheduling Con ig, etc

Execution-as-IPLD Invocation via IPLD IPLI Output IPLI Input Description of jobs & results Results Index and/or names for later lookup Streams of results per machine f Arguments Scheduling Con ig, etc More (Stats etc)

Execution-as-IPLD Job Streams (Scheduler + Events)

Execution-as-IPLD Job Streams (Scheduler + Events) Pure E ect Stream Pure Function Stream ff Base Event Stream

Execution-as-IPLD Job Streams (Scheduler + Events) Pure E ect Stream Pure Function Stream ff Base Event Stream t→

Execution-as-IPLD Job Streams (Scheduler + Events) Pure E ect Stream Pure Function Stream ff Base Event Stream t→

Execution-as-IPLD Job Streams (Scheduler + Events) Pure E ect Stream Pure Function Stream ff Base Event Stream t→

Execution-as-IPLD Job Streams (Scheduler + Events) Pure E ect Stream Pure Function Stream ff Base Event Stream t→

Execution-as-IPLD Job Streams (Scheduler + Events) Pure E ect Stream Pure Function Stream ff Base Event Stream t→

Execution-as-IPLD With a Little Scale From My Friends

Execution-as-IPLD Throughput With a Little Scale From My Friends Parallelization

Execution-as-IPLD With a Little Scale From My Friends Throughput Ideal (Linear) Parallelization

Execution-as-IPLD With a Little Scale From My Friends Ideal (Linear) Throughput Amdahl’s Law Parallelization

Execution-as-IPLD With a Little Scale From My Friends Ideal (Linear) Throughput Amdahl’s Law Universal Scaling Law Parallelization

Execution-as-IPLD With a Little Scale From My Friends Ideal (Linear) Throughput Amdahl’s Law Incoherence, Data Contention Parallelization Universal Scaling Law

Execution-as-IPLD With a Little Scale From My Friends Throughput Global Adaptive Optimization 🤯 Ideal (Linear) Amdahl’s Law Incoherence, Data Contention Parallelization Universal Scaling Law

Execution-as-IPLD Cache Intermediate Results

Execution-as-IPLD Cache Intermediate Results 🚰 🚰

Execution-as-IPLD Cache Intermediate Results 🚰 🚰

Execution-as-IPLD Cache Intermediate Results 🚰 🚰

Execution-as-IPLD Cache Intermediate Results 🚰 🚰 🚰

Execution-as-IPLD Cache Intermediate Results 🚰 Suspend / resume 🚰 🚰

Execution-as-IPLD Cache Intermediate Results 🚰 Suspend / resume 🚰 🚰

Execution-as-IPLD Feedback Loop

Execution-as-IPLD Feedback Loop

  1. Fetch data

Execution-as-IPLD Feedback Loop

  1. Fetch data 2. Compute on data

Execution-as-IPLD Feedback Loop

  1. Fetch data 2. Compute on data 3. Output more data

Execution-as-IPLD Feedback Loop

  1. Fetch data 2. Compute on data 3. Output more data 4. GOTO 2

Execution-as-IPLD Feedback Loop

  1. Fetch data 2. Compute on data 3. Output more data 4. GOTO 2

Execution-as-IPLD Managed Effects Pure E ect Stream Pure Function Stream ff Base Event Stream t→

Execution-as-IPLD Managed Effects Managed E ect Stream Pure E ect Stream Pure Function Stream ff ff Base Event Stream t→

Execution-as-IPLD Managed Effects Managed E ect Stream Pure E ect Stream Pure Function Stream ff ff Base Event Stream t→

Execution-as-IPLD Managed Effects Managed E ect Stream Pure E ect Stream Pure Function Stream ff ff Base Event Stream t→

Execution-as-IPLD Managed Effects Managed E ect Stream Pure E ect Stream Pure Function Stream ff ff Base Event Stream t→

Execution-as-IPLD Managed Effects 🚀 Managed E ect Stream Pure E ect Stream Pure Function Stream ff ff Base Event Stream t→

Execution-as-IPLD Managed Effects 🚀 Managed E ect Stream Pure E ect Stream Pure Function Stream ff ff Base Event Stream t→

IPVM for IPFS Internals Shipping IPFS in IPFS

IPVM for IPFS Internals Content Addressing IPFS Itself

IPVM for IPFS Internals Content Addressing IPFS Itself New codecs (autocodec) Cryptography Smarter chunkers, incremental verifiers Critical bugfixes ff Share e ort between projects (Kubo, Iroh, UCAN, WNFS, Skip Ratchet, etc)

Security How Trusted is Your Execution?

Security Models Mobile computing OCAP, eRights, encryption, UCAN http://erights.org/elib/concurrency/msg-passing.html

Security More Capabilities, More Problems

Security More Capabilities, More Problems Minimum Viable Capability Option to switch on more powerful, trusted features Remote capabilities on other people’s systems (service providers, peers, etc)

State Channels Remote Deals & Execution

State Channels Eager Job Discovery 💁 💁 Discover providers (“matchmaking DHT”) Register providers, just like a bootstrap list ⚙ 💁 (Optional) reputation 💁 ⚙

State Channels Payments

State Channels Payments Reuse generalized state channels for (optional) payment, reputation, etc (Future: hierarchical consensus)

Where to Start 🗺

Where to Start Bootstrapping First Steps: Brass Tacks

Where to Start Bootstrapping First Steps: Brass Tacks Ship Wasm into an IPFS implementation Manual invocation from CLI IPLI format experimentation Concurrent job scheduler, trust & resource limits Figure out sensible default configs from experience Experiment with deeper integration: wasm-ipld or similar Cron, event triggers, etc Push jobs, associated authZ

Open Discussion 🌶 u o y y h w ! e s a m l e l d e i T e s e h t 💔 r o ❤

Open Discussion 🌶 u o y y h w ! e s a m l e l d e i T e s e h t 💔 r o ❤

🎉 Thank You, IPFS þing 🇮🇸 https://fission.codes brooklyn@fission.codes @expede

Therefore, the worse-is-better software first will […] be improved to a point that is almost the right thing. In concrete terms, even though Lisp compilers in 1987 were about as good as C compilers, there are many more compiler experts who want to make C compilers better than want to make Lisp compilers better. – Richard P. Gabriel, Lisp: Good News, Bad News, How to Win Big (1991)