Anchor Link

Persistent, fast and secure signature provider for EOSIO chains built on top of EOSIO Signing Requests (EEP-7)
Key features:
- End to end encryption
- Cross device signing
- Persistent sessions
- Open standard
Take it for a spin: Anchor Link Demo
Resources:
Protocol
The Anchor Link protocol uses EEP-7 identity requests to establish a channel to compatible wallets using an untrusted HTTP POST to WebSocket forwarder (see buoy node.js and buoy golang).
A session key and unique channel URL is generated by the client which is attached to the identity request and sent to the wallet (see transports). The wallet signs the identity proof and sends it back along with its own channel URL and session key. Subsequent signature requests can now be encrypted to a shared secret derived from the two keys and pushed directly to the wallet channel.
📘 Full Protocol specification
Installation
The anchor-link
package is distributed both as a module on npm and a standalone bundle on unpkg.
Browser using a bundler (recommended)
Install Anchor Link and a transport:
yarn add anchor-link anchor-link-browser-transport
# or
npm install --save anchor-link anchor-link-browser-transport
Import them into your project:
import AnchorLink from 'anchor-link'
import AnchorLinkBrowserTransport from 'anchor-link-browser-transport'
Jump to basic usage.
Browser using a pre-built bundle
Include the scripts in your <head>
tag.
<script src="https://unpkg.com/anchor-link"></script>
<script src="https://unpkg.com/anchor-link-browser-transport"></script>
AnchorLink
and AnchorLinkBrowserTransport
are now available in the global scope of your document.
Using node.js
Using node.js or bundler (e.g. webpack) recommended
yarn add anchor-link
Transports
Transports in Anchor Link are responsible for getting signature requests to the users wallet when establishing a session or when using anchor link without logging in.
Available transports:
See the LinkTransport
documentation for details on how to implement custom transports.
Installation
Take it for a spin
Download Anchor
Persistent signing sessions for [Anchor]*
Persistent Session library for ESR
EOSIO
Example usage:
import {Link} from 'anchor-link'
const link = new Link({
chainId: 'e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473',
rpc: 'https://jungle.greymass.com',
service: 'https://link.dirty.fish',
})
link.transact({
broadcast: true,
action: {
account: 'eosio.token',
name: 'transfer',
authorization: [
{
actor: '............1',
permission: '............1',
},
],
data: {
from: '............1',
to: 'teamgreymass',
quantity: '0.0001 EOS',
memo: 'nani',
},
},
})
.then((result) => {
console.log('success', result)
})
.catch((error) => {
console.log('error', error)
})