Observed since 20 Oct, 19:45 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
3id-blockchain-utils
Blockchain utils for 3ID
This package contains a bunch of utilities that is used by 3ID and 3Box in order to create and verify links from blockchain addresses.
$ npm install --save 3id-blockchain-utils
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)
Below you can see a table which lists supported blockchains and their provider objects.
| Blockchain | CAIP-2 namespace | Supported providers |
|---|---|---|
| Ethereum | eip155 | metamask-like ethereum provider |
| Filecoin | fil | Filecoin Wallet Provider |
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 deterministicIt 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 the code by running:
$ npm test
Apache-2.0 OR MIT
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
@ethersproject/contractsEnvironment{
"local_name": "@ethersproject/contracts",
"alias": false,
"peer_metadata": null
} | ^5.0.0-beta.140 | runtime |
@ethersproject/providersEnvironment{
"local_name": "@ethersproject/providers",
"alias": false,
"peer_metadata": null
} | ^5.0.0-beta.144 | runtime |
@ethersproject/walletEnvironment{
"local_name": "@ethersproject/wallet",
"alias": false,
"peer_metadata": null
} | ^5.0.0-beta.133 | runtime |
@babel/cliEnvironment{
"local_name": "@babel/cli",
"alias": false,
"peer_metadata": null
} | ^7.7.0 | development |
@babel/coreEnvironment{
"local_name": "@babel/core",
"alias": false,
"peer_metadata": null
} | ^7.7.2 | development |
@babel/plugin-transform-modules-commonjsEnvironment{
"local_name": "@babel/plugin-transform-modules-commonjs",
"alias": false,
"peer_metadata": null
} | ^7.7.0 | development |
@babel/preset-envEnvironment{
"local_name": "@babel/preset-env",
"alias": false,
"peer_metadata": null
} | ^7.7.1 | development |
babel-jestEnvironment{
"local_name": "babel-jest",
"alias": false,
"peer_metadata": null
} | ^24.9.0 | development |
eth-sig-utilEnvironment{
"local_name": "eth-sig-util",
"alias": false,
"peer_metadata": null
} | ^2.5.0 | development |
ganache-coreEnvironment{
"local_name": "ganache-core",
"alias": false,
"peer_metadata": null
} | ^2.8.0 | development |
jestEnvironment{
"local_name": "jest",
"alias": false,
"peer_metadata": null
} | ^24.9.0 | development |
standardEnvironment{
"local_name": "standard",
"alias": false,
"peer_metadata": null
} | ^14.3.1 | development |
Source distribution
{
"integrity": "sha512-MOMRgb6YJf8o1Ys2BHLl7hdP8a9p9JF10IC196yMsMVa8FI3coVA0iNCs3lagiciMjgRIu8UcQcptWNvP1W7zw==",
"shasum": "1e01ec5365bb3237890fceb5e106679e94296397",
"tarball": "https://registry.npmjs.org/3id-blockchain-utils/-/3id-blockchain-utils-0.2.0.tgz",
"fileCount": 20,
"unpackedSize": 60131,
"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyvRhCRA9TVsSAnZWagAAUGwP/i+CFHE4ERGTaWn3Q1qS\np/UTBy026FSPA9VEbBYztw54n6q39WfkYWZta5lWz/i1Tz/iy2gqaaJPPJ+9\nfUCBpCY06YcG1ocOQiVSFKyOw4+p8JiCfg/YrI86CDJT6IehX+jCZfGzoKRU\nyHU/5kFHVU7wG9xUmID+rxeKqG0O9FEORmmcmGI6dgiNwyI+Z2joChl1ywEw\nAgGZ9v7lAAUSpthqeLTtaMvIdrB9OelyRT5pPv0F0STBjLmJ6JcvQLOJsoW5\nMSZyMUrzsFgbmGKakAAOpqtMLfpo0qwqDRtFF0pEAYgsnlXh+rjHLsvEyLnh\nEg4sMMzsNUzjJoa++FVEsa+XVPOfELhwaOWr9yVQaxp1iKOihh8MX83tPT6W\nCs3zXDnkNt+VcqM2yXU4bEkK1utyodbtbk7qGSiAFXElmFI5Q5KMYIikFzOD\nT/VmMGUm6Qg0Lq8ePd6QdwMvDYm4QngB1FLpIxWeEcjzd1xHCYn+2U4Au7cx\nYLwf4kmFnl1uvOQvWQ4NChRcQag2lgZYOhTiinxIBXMOm4s/UrQyb79HyspT\nKM+eXis4jqnhQZEWoL+tfKl5LSC//6vi3UuwTDKybspIQA5I5+wAqxX/Qt0x\nYPHXOaHHlpo7vakoK+uivDrGziKx9N2Y/GRm247bqEyQYlzPQ1Y2OBY3IKj4\nK2QB\r\n=lI6S\r\n-----END PGP SIGNATURE-----\r\n",
"signatures": [
{
"keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
"sig": "MEUCICjHG4g+/aR7s+Y0G7oDFD8Y0IEgyisMChMxsLgJnmHnAiEA0O54aoMmMRmHVSZH0/fDowGDZDBJlHV8N6DvHhl1Bw8="
}
]
}Observed since 20 Oct, 19:45 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:ed919362e84c8b6faddbeca1ebee74316ef601c879e24dea2814ca4d0bb54de2