> To make all of the below somewhat concrete, it may be best to start with the early 2024 demo recording and the in-repository demos under [endo](#endo). ## Object capabilities - [What are capabilities?](http://habitatchronicles.com/2017/05/what-are-capabilities/) - See also: https://en.wikipedia.org/wiki/Object-capability_model - https://en.wikipedia.org/wiki/Access-control_list - It's useful to recall what ACLs are and how they work. - "ACLs" or "Access Control Lists" being the dominant permissioning model in software since at least Unix. - [ACLs don't](https://papers.agoric.com/assets/pdf/papers/acls-dont.pdf) - [Capability myths demolished](https://srl.cs.jhu.edu/pubs/SRL2003-02.pdf) - [From Objects to Capabilities](http://www.erights.org/elib/capability/ode/ode-capabilities.html) - https://papers.agoric.com/papers/ - Lots of resources on a variety of related topics here. - See especially: [OCAPs](https://papers.agoric.com/papers/#ocaps), [POLA](https://papers.agoric.com/papers/#pola), [Robust composition](https://papers.agoric.com/papers/#robust-composition) ## Confused deputy problem The confused deputy problem is the reason why coordinating more than 2 mutually distrustful programs in an ACL setting is hard, or even practically impossible. - https://en.wikipedia.org/wiki/Confused_deputy_problem - http://www.erights.org/elib/capability/deputy.html - http://www.erights.org/elib/capability/duals/myths.html - Google also yields some good results that came out in the past 12-24 months, for example: - https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html ## `endo` - https://github.com/endojs/endo - [Demo from early 2024](https://www.youtube.com/watch?v=GgYJ5an3XoY&t=1291s) - [In-repository demos that to try out locally](https://github.com/endojs/endo/tree/master/packages/cli/demo) - [Outdated but still-relevant design document](https://github.com/endojs/endo/blob/kris-pet-daemon-design/packages/daemon/DESIGN.md#user-content-fnref-persistence-0cedb5a1dc7a6c6a3336954865ff309c) ## MetaMask Snaps - [Snaps technical documentation](https://docs.metamask.io/snaps) - [Snaps directory](https://snaps.metamask.io/) - [Snaps product landing page](https://metamask.io/snaps)