A presentation at IPFS þing in in Reykjavík, Iceland by Brooklyn Zelenka
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
Execution-as-IPLD Feedback Loop
Execution-as-IPLD Feedback Loop
Execution-as-IPLD Feedback Loop
Execution-as-IPLD Feedback Loop
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)