3id-blockchain-utils
This package contains a bunch of utilities that is used by 3ID and 3Box in order to create and verify links from blockchain addresses.
Tabel of Contents
Install
$ npm install --save 3id-blockchain-utils
Usage
Import the package into your project
import { createLink, validateLink, authenticate } from '3id-blockchain-utils'
Use the library to create and verify links:
const did = 'did:3:bafypwg9834gf...'
const proof = await createLink(did, '0x123abc...', ethereumProvider)
console.log(proof)
const verified = await validateLink(proof)
if (verified) {
console.log('Proof is valid', proof)
} else {
console.log('Proof is invalid')
}
Use the library for 3ID authenticate:
await authenticate(message, '0x123abc...', ethereumProvider)
Supported blockchains
Below you can see a table which lists supported blockchains and their provider objects.
Maintainers
@oed
Adding support for a blockchain
If you want to add support for a new blockchain to 3ID this is the place to do so. This library uses CAIP-10 to represent accounts in a blockchain agnostic way. If the blockchain you want to add isn't already part of the CAIP standards you shold make sure to add it there.
To begin adding support for a given blockchain add a file with the path: src/blockchains/<blockchain-name>.js
. This module needs to export three functions:
createLink
- creates a LinkProof object which associates the specified AccountID with the DIDvalidateLink
- validates the given LinkProofauthenticate
- signs a message and returns some entropy based on the signature. Needs to be deterministic
It also needs to export a constant called namespace
. This constant is a string which contains the CAIP-2 chainId namespace.
Please see src/blockchains/ethereum.js
for an example of how this is implemented for the eip155
(ethereum) CAIP-2 namespace.
Finally add support for your blockchain in src/index.js
. Simply add it to the handlers
array.
Test
Test the code by running:
$ npm test
Licence
Apache-2.0 OR MIT