A presentation at IPFS þing in July 2022 in Reykjavík, Iceland by Brooklyn Zelenka
Autocodec Self-Decoding Graphs
High Level Pure Functions FTW
High Level Why?
High Level Why? Dynamically load codecs Instantly discoverable, travels with data Content signalling
High Level Blob vs DSL
High Level Blob vs DSL Content addressed Wasm blob Alternate: schema More “correct” via DSL, but would likely be extremely complex “Worse is better” Adoptable, familiar Easy tooling “Do exactly what I mean” Openly extensible
Layout Options
Layout Options Direct Optional Field Bytes Codec Links Bytes Codec Links Bytes Codec Links
Layout Options Direct Optional Field Bytes Codec Links Compact (Bitswap friendly) Deep linking intact Redundancy (space) Bytes Codec Links Bytes Codec Links
Layout Options Wrap DAG Entry Points Bytes Links AC Wrapper Bytes Links Bytes Links AC Wrapper Bytes Links
Layout Options Wrap DAG Entry Points Bytes Links More nodes (deeper graphs) AC Wrapper Potentially Byzantine (stacked wrappers) Have to be careful to wrap all nodes Breaks all existing codecs… but the Wasm will fix that Bytes Links Bytes Links AC Wrapper Bytes Links
Layout Options Self-Describing AC Wrapper ABI Metadata
Layout Options Self-Describing All interfaces via Wasm ABI AC Wrapper MUST include raw IPLD decoder (e.g. from DAG-CBOR) MUST include one or more codecs, with a default MAY include transversal functions for output type ABI Metadata
Layout Options Execution & Bounding
Layout Options Execution & Bounding MUST terminate Gas or timeout or AOT cost dynamics (probably gas)
Mutation Who Encodes the Encoders?
Mutation Adaptive Optimization AC Wrapper
Mutation Adaptive Optimization Either signalling method is “just” a tag Don’t have to execute exactly this Wasm blob AC Wrapper
Mutation Adaptive Optimization Either signalling method is “just” a tag Don’t have to execute exactly this Wasm blob AC Wrapper 🚀
Mutation In Place Upgrades & Fixes …why? Deterministic codec: check it Wrong layer: just replace 🤷 If you REALLY want to… Convention (detect and replace) Back to AOT loading Discourages updates 👍+👎 Mutable pointer (e.g. IPNS) How often to check? Malicious updates?
Mutation In Place Upgrades & Fixes …why? Deterministic codec: check it Wrong layer: just replace 🤷 If you REALLY want to… Convention (detect and replace) Back to AOT loading Discourages updates 👍+👎 Mutable pointer (e.g. IPNS) How often to check? Malicious updates? AC Wrapper
Mutation In Place Upgrades & Fixes …why? Deterministic codec: check it Wrong layer: just replace 🤷 If you REALLY want to… Convention (detect and replace) Back to AOT loading Discourages updates 👍+👎 Mutable pointer (e.g. IPNS) How often to check? Malicious updates? AC Wrapper 🥚🐣🐥
Mutation In Place Upgrades & Fixes …why? Deterministic codec: check it Wrong layer: just replace 🤷 If you REALLY want to… Convention (detect and replace) Back to AOT loading Discourages updates 👍+👎 Mutable pointer (e.g. IPNS) How often to check? Malicious updates? AC Wrapper 🥚 🐣 🐥🍗
Wrap Up 🎁
Wrap Up Summary
Wrap Up Summary Highly extensible Dynamic Concrete Pure function Optimizable
🎉 Thank You, IPFS þing 🇮🇸 https://fission.codes brooklyn@fission.codes @expede
View IPLD Autocodec on Notist.
Dismiss