This post will serve as a wiki-style roadmap on the efforts by Greymass to build the ecosystem surrounding the EOSIO Signing Request protocol. This work is the foundation for our overall roadmap, which can be found here:
http://forums.eoscommunity.org/t/the-3-aspects-of-the-greymass-roadmap/90
While this content here will be technical, it is our hope that it illustrates the inner working of our team and the contributions we have made while advancing these new technologies.
ESR - who, what, why?
What is ESR? ESR is a protocol any application can use to integrate with EOSIO blockchains (EOS, FIO, Proton, Telos, WAX, etc) that allows the application (or “dapp”) to securely communicate with a users wallet (“signature provider”) to sign transactions.
Why is ESR needed? Protocols have existed since the genesis of the first EOSIO blockchains, but none have offered the power, privacy, and flexibility that ESR provides. ESR has enabled the creation of mobile apps that don’t require in-app browsers, enabled encrypted communications, brought QR code compatibility, account verification, and allows application developers to build once for both desktop and mobile.
Who is behind ESR? Members of the Greymass team started the ESR initiative for EOSIO in early 2019. This includes @aaron, @johan, and @dafuga who have all contributed to various aspects during development.
Progress and Roadmap for EOSIO Signing Request (ESR)
We will be posting regular updates in response to this post with changes as they occur, as well as maintaining this original post with an overall status of this effort.
Fall 2020:
In Progress
- Continue contribute development time to assist in integration of the ESR protocol with various open source signature providers and dapps.
- This is ongoing, so far we have helped many dozens of developers in their effort to understand and integrate.
- Multiple other wallets are now exploring integration with ESR and Link protocols
- EEP-X: EOSIO Resource Provider Specification
- A new EEP is being written to establish the concept and required patterns to for “Resource Providers” like Fuel.
- These resource providers will be open source based on an open standard, allowing anyone to develop their own platform for any EOSIO-based blockchain
- New SDK: Unnamed UAL/Transit replacement
- A new library yet unnamed library has been started as a replacement for UAL/Transit.
- This new library will likely replace the need for the anchor-link-browser-transport and match functionality, while bringing compatibility to other wallet providers.
- Support for multiple blockchains, user accounts, and resource providers a new concept of resource providers.
- Utilizing TDD (Test Driven Development) to ensure reliability and establish coverage of this codebase and its implementation of eosio-core, anchor-link, and the eosio-signing-request libraries.
- Preparing Version 1.x release of greymass/eosio-core
- Core types established and currently building out tests and API client functionality.
- Table data processing has been added along with the associated API helpers.
- Fixes issues with the get_info call and the data required to present.
- Increased test coverage across multiple blockchains.
- Fixed an issue with UTF-8 character handling.
- Preparing Version 2.x release of the eosio-signing-request library
- BETA available via npm as
eosio-signing-request@next
- Includes the replacement of eosjs with a new library, greymass/eosio-core (ALPHA)
- Update to identity proofs/requests to add additional fields, making them compatible with legacy protocols (such as OAUTH2, JWT, etc).
- Flexible chain ids within requests to allow the signer to select from a predefined list of available blockchains.
- BETA available via npm as
- Preparing Version 3.x release of anchor-link library
- BETA available via npm as
anchor-link@next
- Will be introducing the concept of transaction fees in the near future within the browser transport. Preview available on Twitter.
- Table data processing has been added along with the associated API helpers.
- Fixes issues with the get_info call and the data required to present.
- Increased test coverage across multiple blockchains.
- Fixed an issue with UTF-8 character handling.
- BETA available via npm as
- Official documentation portal linking all information related to ESR + WAL in one central hub.
- Rewrite our callback service layer in a compiled language for scalability.
- Finalize ESR V1 specification and publish the formally, moving out of the draft stage.
- REV1 and REV2 are published as drafts, working on REV3
Waiting:
- Release of Transit plugin (eos-transit/packages/eos-transit-anchorlink-provider at provider/anchor-link · greymass/eos-transit · GitHub) with anchor-link 2.1.x+
- Awaiting merge of eos-transit/pull/50
- REV3 of the ESR specification to include further details of identity requests and update all examples to modern code.
- Version 3 implementation of ESR + Link for WAL libraries (UAL + Transit)
- Requires completion of anchor-link v3+ and eosio-signing-request v3+
Summer 2020:
Completed
- Released 10x beta releases of Version 2.x of the eosio-signing-request library
- BETA available via npm as
eosio-signing-request@next
- Includes the replacement of eosjs with a new library, greymass/eosio-core (ALPHA)
- Update to identity proofs/requests to add additional fields, making them compatible with legacy protocols (such as OAUTH2, JWT, etc).
- Flexible chain ids within requests to allow the signer to select from a predefined list of available blockchains.
- BETA available via npm as
- Released 13x beta releases of Version 3.x of anchor-link library
- BETA available via npm as
anchor-link@next
- Includes the replacement of eosjs with a new library, greymass/eosio-core (ALPHA)
- Implementation of ESR REV3 specification for testing
- BETA available via npm as
- Created and released 9x beta versions of a new JS library for core EOSIO functionality to drop dependency on EOSJS
- In development: greymass/eosio-core (ALPHA)
- Core types established and currently building out tests and API client functionality.
- Prepared presentation materials and scheduling talks around ESR + WAL to help onboard more developers in the community.
- Version 0.5.0 of ual-anchor
- Upgrades EOSIO/universal-authenticator-library to version 0.3.x.
- Contributed code to UAL via (ual-reactjs-renderer/pull/97) fixes which led to the release of 0.3.x.
- Version 2.1 release of anchor-link library, transport, and protocol.
- Preflight hooks for browser transports to utilize have been added
- Integrate resource detection + management (Fuel) into browser transport using new hooks
- Improved ABI caching and optimized user wait times
- Improved eosjs compatibility on transact calls
- Added loading animation with dynamic status during any waits
- Version 0.4.2 of ual-anchor
- Includes Version 2.1 of anchor-link to include new listed features.
- Updated all ESR/Link related demos to use Version 2+
- Anchor Link: anchor-link-demo-multipass
- Transit: eos-transit-demo-multipass
- UAL: ual-reactjs-renderer-demo-multipass
Early 2020:
Completed
- Version 1.0 release of anchor-link library, transport, and protocol.
- Release of a default UI Kit and Browser Transport for anchor-link
- Version 2.0 release of anchor-link library, transport, and protocol.
- Adds support for persistent session management and REV2 ESR specification
- Version 1 release of eos-transit-anchorlink-provider for ESR Protocol
- Released a series of well documented reactjs examples showing (through code) how to utilize ESR through WAL providers.
- Release of anchor-link-demo-multipass
- Release of eos-transit-demo-multipass
- Release of ual-reactjs-renderer-demo-multipass
- Release of ual-anchor-demo
- Mirror image of the official ual-reactjs-renderer example modified for ual-anchor.
- Release of versions 0.1.1 - 0.4.1 of ual-anchor
- Initial releases offering Anchor + ESR support for the EOSIO/universal-authenticator-library
- Release of versions 4.0.3 - 4.0.7 of eos-transit-anchorlink-provider plugin for eos-transit using anchor-link.
- Release of version 1.0.0 of anchor-link, an identity and session management tools for ESR for apps.
- REV2 of ESR specification to include further details of identity requests and update all examples to modern code.
- Specification published as eosio-eeps/EEP-7.
- Release of Android SDK for ESR
- Release of versions 1.1.2 through 1.2.0 of the eosio-signing-request library, used for generating/consuming ESR requests.
- Bug fixes and support for additional blockchains
Winter 2020 and before:
Completed
- Release of versions 1.0.1 through 1.1.1 of the eosio-signing-request library, used for generating/consuming ESR requests.
- Alpha releases of anchor-link, an identity and session management tools for ESR for apps.
- Research, initial prototypes, REV1 and REV2 of the ESR Specification
Unscheduled tasks:
- Rebuild the eosio.to viewer utility (https://eosio.to)
- Rebuild the ESR Payload Builder (eosio-uri-builder)
Additional Information
Metrics - Adoption and Usage
With this suite of products being open source and meant to integrate into any EOSIO-based application, metrics are best tracked via the package distribution systems and looking at the number of developers installing the packages into their projects.
The following two npmjs.com pages represent the core of nearly all this work and download statistics can be referenced for a rough idea of adoption:
As of July 17th, 2020, a snapshot of the number is roughtly:
- eosio-signing-request library: 307 downloads per week
- anchor-link library: 370 download per week
Additional information on adoption can be observed by viewing the growing list of applications that have integrated with the ESR protocol:
Resulting Works
The following Github repositories contain the open source work that have been involved with this initiative:
- GitHub - greymass/eosio-signing-request: Library to assist in creating and digesting EOSIO Signing Requests (ESR)
- GitHub - greymass/eosio-signing-request-demo: Demos to showcase various ways to use the eosio-signing-request library
- GitHub - greymass/anchor-link: Persistent, fast and secure signature provider for EOSIO chains built on top of EOSIO Signing Requests (EEP-7)
- GitHub - greymass/anchor-link-browser-transport: User Interface for integrating ESR Sessions and Identity in web browsers
- GitHub - greymass/anchor-link-console-transport: JavaScript console transport for Anchor Link
- GitHub - greymass/anchor-link-demo: Demo project for Anchor Link
- GitHub - greymass/anchor-link-demo-multipass: Example for handling multi-chain/account/device sessions using anchor-link
- GitHub - greymass/buoy-nodejs: POST -> WebSocket forwarding service
- GitHub - greymass/swift-eosio: Library for swiftly working with EOSIO blockchains on Linux, macOS and iOS with ESR support
- GitHub - greymass/eosio-core: BETA RELEASE - Library for working with EOSIO blockchains
- GitHub - greymass/ual-anchor: Identity and session through ESR using EOSIO/universal-authenticator-library
- GitHub - greymass/ual-anchor-demo: UAL + Anchor demo
- GitHub - greymass/ual-reactjs-renderer-demo-multipass: Example for handling multi-wallet/chain/account/device sessions using ual
- GitHub - greymass/ual-plainjs-renderer-demo-multipass
- GitHub - greymass/eos-transit: Transit Wallet Access Layer for EOS blockchain networks
- GitHub - greymass/eos-transit-demo-multipass: Example for handling multi-wallet/chain/account/device sessions using eos-transit
- GitHub - greymass/eosio.to: EOSIO Signing Request Viewer
- GitHub - greymass/eosio-uri-builder: User Interface to create EOSIO Signing Requests