ethr-did-resolver
Advanced tools
Comparing version 3.0.3 to 3.1.0
@@ -0,1 +1,8 @@ | ||
# [3.1.0](https://github.com/decentralized-identity/ethr-did-resolver/compare/3.0.3...3.1.0) (2021-03-15) | ||
### Features | ||
* upgrade to latest did core spec ([#99](https://github.com/decentralized-identity/ethr-did-resolver/issues/99)) ([#109](https://github.com/decentralized-identity/ethr-did-resolver/issues/109)) ([d46eea3](https://github.com/decentralized-identity/ethr-did-resolver/commit/d46eea3ad4d85450f75a645ea9b33aa5223dd7b0)), closes [#105](https://github.com/decentralized-identity/ethr-did-resolver/issues/105) [#95](https://github.com/decentralized-identity/ethr-did-resolver/issues/95) [#106](https://github.com/decentralized-identity/ethr-did-resolver/issues/106) [#83](https://github.com/decentralized-identity/ethr-did-resolver/issues/83) [#85](https://github.com/decentralized-identity/ethr-did-resolver/issues/85) [#83](https://github.com/decentralized-identity/ethr-did-resolver/issues/83) [#85](https://github.com/decentralized-identity/ethr-did-resolver/issues/85) [#95](https://github.com/decentralized-identity/ethr-did-resolver/issues/95) [#105](https://github.com/decentralized-identity/ethr-did-resolver/issues/105) [#106](https://github.com/decentralized-identity/ethr-did-resolver/issues/106) | ||
## [3.0.3](https://github.com/decentralized-identity/ethr-did-resolver/compare/3.0.2...3.0.3) (2020-12-17) | ||
@@ -2,0 +9,0 @@ |
116
package.json
{ | ||
"name": "ethr-did-resolver", | ||
"version": "3.0.3", | ||
"version": "3.1.0", | ||
"description": "Resolve DID documents around ethereum addresses", | ||
"main": "dist/ethr-did-resolver.js", | ||
"source": "src/ethr-did-resolver.js", | ||
"types": "index.d.ts", | ||
"main": "lib/index.umd.js", | ||
"source": "src/index.ts", | ||
"module": "lib/index.modern.js", | ||
"types": "lib/index.d.ts", | ||
"repository": { | ||
@@ -23,7 +24,27 @@ "type": "git", | ||
"author": "Pelle Braendgaard <pelle.braendgaard@consensys.net>", | ||
"contributors": [ | ||
"Mircea Nistor <mircea.nistor@mesh.xyz>" | ||
], | ||
"license": "Apache-2.0", | ||
"keywords": [ | ||
"DID", | ||
"DID document", | ||
"PKI", | ||
"resolver", | ||
"resolve", | ||
"Verifiable Credential", | ||
"W3C", | ||
"ethereum", | ||
"ethereumAddress", | ||
"blockchainAccountId", | ||
"registry", | ||
"EIP1056", | ||
"EcdsaSecp256k1RecoveryMethod2020", | ||
"Ed25519VerificationKey2018", | ||
"did:ethr" | ||
], | ||
"scripts": { | ||
"build": "microbundle", | ||
"lint": "eslint \"src/**/*.js\"", | ||
"format": "prettier --write \"src/**/*.js\"", | ||
"lint": "eslint \"src/**/*.[jt]s\"", | ||
"format": "prettier --write \"src/**/*.[jt]s\"", | ||
"prepare": "npm run build", | ||
@@ -35,68 +56,45 @@ "prepublishOnly": "npm test && npm run build", | ||
}, | ||
"jest": { | ||
"coverageDirectory": "./coverage/", | ||
"collectCoverage": true, | ||
"testURL": "http://localhost/", | ||
"transform": { | ||
"^.+\\.jsx?$": "babel-jest" | ||
} | ||
}, | ||
"devDependencies": { | ||
"@babel/cli": "7.12.10", | ||
"@babel/core": "7.12.10", | ||
"@babel/preset-env": "7.12.11", | ||
"@commitlint/cli": "11.0.0", | ||
"@commitlint/config-conventional": "11.0.0", | ||
"@babel/core": "^7.13.10", | ||
"@babel/preset-env": "^7.13.10", | ||
"@babel/preset-typescript": "^7.13.0", | ||
"@commitlint/cli": "^12.0.1", | ||
"@commitlint/config-conventional": "^12.0.1", | ||
"@semantic-release/changelog": "5.0.1", | ||
"@semantic-release/git": "9.0.0", | ||
"babel-jest": "26.6.3", | ||
"@types/jest": "^26.0.20", | ||
"@typescript-eslint/eslint-plugin": "^4.17.0", | ||
"@typescript-eslint/parser": "^4.17.0", | ||
"babel-jest": "^26.6.3", | ||
"codecov": "3.8.1", | ||
"eslint": "7.15.0", | ||
"eslint-config-standard": "16.0.2", | ||
"eslint-plugin-import": "2.22.1", | ||
"eslint-plugin-jest": "24.1.3", | ||
"eslint-plugin-node": "11.1.0", | ||
"eslint-plugin-promise": "4.2.1", | ||
"eslint-plugin-standard": "4.1.0", | ||
"ganache-cli": "6.10.2", | ||
"husky": "4.3.6", | ||
"jdom": "3.2.1", | ||
"eslint": "^7.21.0", | ||
"eslint-config-prettier": "^8.1.0", | ||
"ganache-cli": "^6.12.2", | ||
"husky": "^5.1.3", | ||
"jest": "26.6.3", | ||
"microbundle": "0.12.4", | ||
"prettier": "2.2.1", | ||
"regenerator-runtime": "0.13.7", | ||
"semantic-release": "17.3.0", | ||
"truffle-contract": "3.0.7" | ||
"microbundle": "^0.13.0", | ||
"prettier": "^2.2.1", | ||
"pretty-quick": "^3.1.0", | ||
"semantic-release": "^17.4.1", | ||
"typescript": "^4.2.3", | ||
"uint8arrays": "^2.1.3" | ||
}, | ||
"dependencies": { | ||
"buffer": "^6.0.0", | ||
"did-resolver": "2.1.2", | ||
"elliptic": "^6.5.3", | ||
"ethjs-abi": "^0.2.1", | ||
"ethjs-contract": "^0.2.0", | ||
"ethjs-provider-http": "^0.1.6", | ||
"ethjs-query": "^0.3.5", | ||
"ethr-did-registry": "^0.0.3", | ||
"js-sha3": "^0.8.0" | ||
"@ethersproject/abi": "^5.0.13", | ||
"@ethersproject/abstract-signer": "^5.0.14", | ||
"@ethersproject/address": "^5.0.11", | ||
"@ethersproject/basex": "^5.0.9", | ||
"@ethersproject/bignumber": "^5.0.15", | ||
"@ethersproject/contracts": "^5.0.12", | ||
"@ethersproject/providers": "^5.0.24", | ||
"@ethersproject/transactions": "^5.0.11", | ||
"did-resolver": "^3.0.2", | ||
"ethr-did-registry": "^0.0.3" | ||
}, | ||
"husky": { | ||
"hooks": { | ||
"pre-commit": "pretty-quick --staged", | ||
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS" | ||
} | ||
}, | ||
"standard": { | ||
"ignore": [ | ||
"lib/**" | ||
], | ||
"globals": [ | ||
"it", | ||
"describe", | ||
"expect", | ||
"jest", | ||
"beforeAll", | ||
"beforeEach", | ||
"afterAll", | ||
"afterEach" | ||
] | ||
} | ||
} |
208
README.md
--- | ||
title: "Ethr DID Resolver" | ||
index: 7 | ||
category: "ethr-did-resolver" | ||
index: 7 category: "ethr-did-resolver" | ||
type: "reference" | ||
@@ -13,9 +12,11 @@ source: "https://github.com/decentralized-identity/ethr-did-resolver/blob/develop/README.md" | ||
[![CircleCI](https://circleci.com/gh/decentralized-identity/ethr-did-resolver.svg?style=svg)](https://circleci.com/gh/decentralized-identity/ethr-did-resolver) | ||
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/7bcde296af8e467787b04c956c2c9f6f)](https://www.codacy.com/manual/uport-project/ethr-did-resolver?utm_source=github.com&utm_medium=referral&utm_content=uport-project/ethr-did-resolver&utm_campaign=Badge_Grade) | ||
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/7bcde296af8e467787b04c956c2c9f6f)](https://www.codacy.com/manual/uport-project/ethr-did-resolver?utm_source=github.com&utm_medium=referral&utm_content=uport-project/ethr-did-resolver&utm_campaign=Badge_Grade) | ||
This library is intended to use ethereum addresses as fully self managed | ||
[Decentralized Identifiers](https://w3c-ccg.github.io/did-spec/#decentralized-identifiers-dids) and wrap them in a | ||
[DID Document](https://w3c-ccg.github.io/did-spec/#did-documents) | ||
This library is intended to use ethereum addresses as fully self managed [Decentralized Identifiers](https://w3c-ccg.github.io/did-spec/#decentralized-identifiers-dids) and wrap them in a [DID Document](https://w3c-ccg.github.io/did-spec/#did-documents) | ||
It supports the proposed [Decentralized Identifiers](https://w3c-ccg.github.io/did-spec/) spec from the | ||
[W3C Credentials Community Group](https://w3c-ccg.github.io). | ||
It supports the proposed [Decentralized Identifiers](https://w3c-ccg.github.io/did-spec/) spec from the [W3C Credentials Community Group](https://w3c-ccg.github.io). | ||
It requires the `did-resolver` library, which is the primary interface for resolving DIDs. | ||
@@ -36,41 +37,52 @@ | ||
For example: | ||
`did:ethr:rinkeby:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74` gets resolved on the rinkeby testnet, and represents a | ||
distinct identifier than the generic one. | ||
`did:ethr:0x4:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74` gets resolved on the rinkeby testnet (chainID=0x4), and | ||
represents a distinct identifier than the generic one. | ||
## DID Document | ||
The did resolver takes the ethereum address, checks for the current controller, looks at contract events and builds a simple DID document. | ||
The did resolver takes the ethereum address, checks for the current controller, looks at contract events and builds a | ||
simple DID document. | ||
The minimal DID document for a an ethereum address `0xb9c5714089478a327f09197987f16f9e5d936e8a` with no transactions to the registry looks like this: | ||
The minimal DID document for a an ethereum address `0xb9c5714089478a327f09197987f16f9e5d936e8a` with no transactions to | ||
the registry looks like this: | ||
```javascript | ||
```json | ||
{ | ||
'@context': 'https://w3id.org/did/v1', | ||
id: 'did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a', | ||
publicKey: [{ | ||
id: 'did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a#controller', | ||
type: 'Secp256k1VerificationKey2018', | ||
controller: 'did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a', | ||
ethereumAddress: '0xb9c5714089478a327f09197987f16f9e5d936e8a'}], | ||
authentication: [{ | ||
type: 'Secp256k1SignatureAuthentication2018', | ||
publicKey: 'did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a#controller'}] | ||
"@context": [ | ||
"https://www.w3.org/ns/did/v1", | ||
"https://identity.foundation/EcdsaSecp256k1RecoverySignature2020/lds-ecdsa-secp256k1-recovery2020-0.0.jsonld" | ||
], | ||
"id": "did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a", | ||
"verificationMethod": [ | ||
{ | ||
"id": "did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a#controller", | ||
"type": "EcdsaSecp256k1RecoveryMethod2020", | ||
"controller": "did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a", | ||
"blockchainAccountId": "0xb9c5714089478a327f09197987f16f9e5d936e8a" | ||
} | ||
], | ||
"authentication": ["did:ethr:0xb9c5714089478a327f09197987f16f9e5d936e8a#controller"] | ||
} | ||
``` | ||
Note this uses the `Secp256k1VerificationKey2018` type and an `ethereumAddress` instead of a `publicKeyHex`. | ||
Note this uses the `EcdsaSecp256k1RecoveryMethod2020` type and an `blockchainAccountId` to represent the default | ||
verification method and authentication entry. | ||
## Building a DID document | ||
The DID document is built by using read only functions and contract events on the [ethr-did-registry](https://github.com/uport-project/ethr-did-registry) Ethereum smart contract. | ||
The DID document is built by using read only functions and contract events on | ||
the [ethr-did-registry](https://github.com/uport-project/ethr-did-registry) Ethereum smart contract. | ||
Any value from the registry that returns an ethereum address will be added to the `publicKey` array of the DID document with type `Secp256k1VerificationKey2018` and an `ethereumAddress` attribute containing the address. | ||
Any value from the registry that returns an ethereum address will be added to the `verificationMethod` array of the DID document | ||
with type `EcdsaSecp256k1RecoveryMethod2020` and an `blockchainAccountId` attribute containing the address. | ||
### Controller Address | ||
Each identity always has a controller address. By default it's the same as the identity address, but check the read only contract function `identityOwner(address identity)` on the deployed version of the EthrDIDRegistry contract. | ||
Each identity always has a controller address. By default it's the same as the identity address, but check the read only | ||
contract function `identityOwner(address identity)` on the deployed version of the EthrDIDRegistry contract. | ||
The Identity controller will always have a `publicKey` with the id set as the DID with the fragment `#controller` appended. | ||
The Identity controller will always have a `verificationMethod` with the id set as the DID with the fragment `#controller` | ||
appended. | ||
An entry is also added to the `authentication` array of the DID document with type `Secp256k1SignatureAuthentication2018`. | ||
An entry is also added to the `authentication` array of the DID document with the id of the controller publicKey. | ||
@@ -102,3 +114,4 @@ ### Enumerating contract events for an identity | ||
They are also verifiable from solidity (see [ethr-did-registry](https://github.com/uport-project/ethr-did-registry) for more info). | ||
They are also verifiable from solidity (see [ethr-did-registry](https://github.com/uport-project/ethr-did-registry) for | ||
more info). | ||
@@ -109,8 +122,8 @@ A `DIDDelegateChanged` event is published that is used to build a DID. | ||
event DIDDelegateChanged( | ||
address indexed identity, | ||
bytes32 delegateType, | ||
address delegate, | ||
uint validTo, | ||
uint previousChange | ||
); | ||
address indexed identity, | ||
bytes32 delegateType, | ||
address delegate, | ||
uint validTo, | ||
uint previousChange | ||
); | ||
``` | ||
@@ -120,6 +133,8 @@ | ||
- `veriKey` Which adds a `Secp256k1VerificationKey2018` to the `publicKey` section of document | ||
- `sigAuth` Which adds a `Secp256k1SignatureAuthentication2018` to the `publicKey` section of document. An entry is also added to the `authentication` section of document. | ||
- `veriKey` Which adds a `EcdsaSecp256k1RecoveryMethod2020` to the `verificationMethod` section of document | ||
- `sigAuth` Which adds a `EcdsaSecp256k1RecoveryMethod2020` to the `verificationMEthod` section of document and then | ||
references it in the 'authentication` section of document. | ||
**Note** The `delegateType` is a `bytes32` type for Ethereum gas efficiency reasons and not a string. This restricts us to 32 bytes, which is why we use the short hand versions above. | ||
**Note** The `delegateType` is a `bytes32` type for Ethereum gas efficiency reasons and not a string. This restricts us | ||
to 32 bytes, which is why we use the short hand versions above. | ||
@@ -130,17 +145,20 @@ Only events with a `validTo` in seconds greater or equal to current time should be included in the DID document. | ||
Non ethereum keys, service elements etc can be added using attributes. Attributes only exist on the blockchain as contract events of type `DIDAttributeChanged` and can thus not be queried from within solidity code. | ||
Non ethereum keys, service elements etc can be added using attributes. Attributes only exist on the blockchain as | ||
contract events of type `DIDAttributeChanged` and can thus not be queried from within solidity code. | ||
```solidity | ||
event DIDAttributeChanged( | ||
address indexed identity, | ||
bytes32 name, | ||
bytes value, | ||
uint validTo, | ||
uint previousChange | ||
); | ||
address indexed identity, | ||
bytes32 name, | ||
bytes value, | ||
uint validTo, | ||
uint previousChange | ||
); | ||
``` | ||
**Note** The `name` is a `bytes32` type for Ethereum gas efficiency reasons and not a string. This restricts us to 32 bytes, which is why we use the short hand attribute versions below. | ||
**Note** The `name` is a `bytes32` type for Ethereum gas efficiency reasons and not a string. This restricts us to 32 | ||
bytes, which is why we use the short hand attribute versions below. | ||
While any attribute can be stored. For the DID document we currently support adding to each of these sections of the DID document: | ||
While any attribute can be stored. For the DID document we currently support adding to each of these sections of the DID | ||
document: | ||
@@ -154,3 +172,3 @@ - [`Public Keys`](https://w3c-ccg.github.io/did-spec/#public-keys) | ||
`did/pub/(Secp256k1|RSA|Ed25519|X25519)/(veriKey|sigAuth|enc)/(hex|base64)` | ||
`did/pub/(Secp256k1|RSA|Ed25519|X25519)/(veriKey|sigAuth|enc)/(hex|base64|base58)` | ||
@@ -161,9 +179,10 @@ (Essentially `did/pub/<key algorithm>/<key purpose>/<encoding>`) | ||
- `veriKey` adds a `<key algorithm>VerificationKey2018` to the `publicKey` section of document | ||
- `sigAuth` adds a `<key algorithm>SignatureAuthentication2018` to the `publicKey` section of document. An entry is also added to the `authentication` section of document. | ||
- `enc` adds a `<key algorithm>KeyAgreementKey2019` to the `publicKey` section. | ||
This is used to perform a Diffie-Hellman key exchange and derive a secret key for encrypting messages to the DID that lists such a key. | ||
- `veriKey` adds the corresponding verification key to the `verificationMethod` section of document | ||
- `sigAuth` adds the corresponding verification key to the `verificationMethod` section of document and adds an entry to | ||
the `authentication` section of document. | ||
- `enc` adds a key agreement key to the `verificationMethod` section. This is used to perform a Diffie-Hellman key | ||
exchange and derive a secret key for encrypting messages to the DID that lists such a key. | ||
> **Note** The `<encoding>` only refers to the key encoding in the resolved DID document. | ||
> Attribute values should always be hex encoded. | ||
> Attribute values sent to the ERC1056 registry should always be hex encoded. | ||
@@ -174,10 +193,10 @@ #### Example hex encoded Secp256k1 Verification Key | ||
`did/pub/Secp256k1/veriKey/hex` and the value of `0x02b97c30de767f084ce3080168ee293053ba33b235d7116a3263d29f1450936b71` | ||
generates a `PublicKey` entry like this: | ||
generates a `verificationMethod` entry like this: | ||
```javascript | ||
```json | ||
{ | ||
id: "did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74#delegate-1", | ||
type: "Secp256k1VerificationKey2018", | ||
controller: "did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74", | ||
publicKeyHex: '02b97c30de767f084ce3080168ee293053ba33b235d7116a3263d29f1450936b71' | ||
"id": "did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74#delegate-1", | ||
"type": "EcdsaSecp256k1VerificationKey2019", | ||
"controller": "did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74", | ||
"publicKeyHex": "02b97c30de767f084ce3080168ee293053ba33b235d7116a3263d29f1450936b71" | ||
} | ||
@@ -190,3 +209,3 @@ ``` | ||
`did/pub/Ed25519/veriKey/base64` and the value of | ||
`0xb97c30de767f084ce3080168ee293053ba33b235d7116a3263d29f1450936b71` generates a `PublicKey` entry like this: | ||
`0xb97c30de767f084ce3080168ee293053ba33b235d7116a3263d29f1450936b71` generates a `verificationMethod` entry like this: | ||
@@ -207,10 +226,10 @@ ```javascript | ||
`0x302a300506032b656e032100118557777ffb078774371a52b00fed75561dcf975e61c47553e664a617661052` | ||
generates a `PublicKey` entry like this: | ||
generates a `verificationMethod` entry like this: | ||
```javascript | ||
```json | ||
{ | ||
id: "did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74#delegate-1", | ||
type: "X25519KeyAgreementKey2019", | ||
controller: "did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74", | ||
publicKeyBase64: "MCowBQYDK2VuAyEAEYVXd3/7B4d0NxpSsA/tdVYdz5deYcR1U+ZkphdmEFI=" | ||
"id": "did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74#delegate-1", | ||
"type": "X25519KeyAgreementKey2019", | ||
"controller": "did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74", | ||
"publicKeyBase64": "MCowBQYDK2VuAyEAEYVXd3/7B4d0NxpSsA/tdVYdz5deYcR1U+ZkphdmEFI=" | ||
} | ||
@@ -227,12 +246,13 @@ ``` | ||
#### Hex encoded Secp256k1 Verification Key | ||
Example: | ||
A `DIDAttributeChanged` event for the identity `0xf3beac30c498d9e26865f34fcaa57dbb935b0d74` with the name | ||
`did/svc/HubService` and value of the url `https://hubs.uport.me` hex encoded as | ||
`0x68747470733a2f2f687562732e75706f72742e6d65` generates a `Service` entry like this: | ||
`did/svc/HubService` and value of the URL `https://hubs.uport.me` hex encoded as | ||
`0x68747470733a2f2f687562732e75706f72742e6d65` generates a service endpoint entry like the following: | ||
```javascript | ||
```json | ||
{ | ||
type: "HubService", | ||
serviceEndpoint: "https://hubs.uport.me" | ||
"id": "did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74#service-1", | ||
"type": "HubService", | ||
"serviceEndpoint": "https://hubs.uport.me" | ||
} | ||
@@ -243,6 +263,6 @@ ``` | ||
The library presents a `resolver()` function that returns a ES6 Promise returning the DID document. | ||
It is not meant to be used directly but through the | ||
[`did-resolver`](https://github.com/decentralized-identity/did-resolver) aggregator. | ||
You can use the `getResolver(conf)` method to produce an entry that can be used with the `Resolver` | ||
The library presents a `resolver()` function that returns a ES6 Promise returning the DID document. It is not meant to | ||
be used directly but through the | ||
[`did-resolver`](https://github.com/decentralized-identity/did-resolver) aggregator. You can use the `getResolver(conf)` | ||
method to produce an entry that can be used with the `Resolver` | ||
constructor. | ||
@@ -254,5 +274,7 @@ | ||
// You can set a rpc endpoint to be used by the web3 provider | ||
// You can also set an address for your own ethr-did-registry contract | ||
const providerConfig = { rpcUrl: 'https://rinkeby.infura.io/ethr-did', registry: registry.address } | ||
// While experimenting, you can set a rpc endpoint to be used by the web3 provider | ||
// You can also set the address for your own ethr-did-registry contract | ||
const providerConfig = { rpcUrl: 'http://localhost:7545', registry: registry.address } | ||
// It's recommended to use the multi-network configuration when using this in production | ||
// since that allows you to resolve on multiple public and private networks at the same time. | ||
@@ -263,3 +285,3 @@ // getResolver will return an object with a key/value pair of { "ethr": resolver } where resolver is a function used by the generic did resolver. | ||
didResolver.resolve('did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74').then(doc => console.log) | ||
didResolver.resolve('did:ethr:0xf3beac30c498d9e26865f34fcaa57dbb935b0d74').then((doc) => console.log) | ||
@@ -272,3 +294,5 @@ // You can also use ES7 async/await syntax | ||
An example configuration for multi-network DID resolving would look like this: | ||
In production, you will most likely want the ability to resolve DIDs that are based in different ethereum networks. To | ||
do this, you need a configuration that sets the network name or chain ID (and even the registry address) for each | ||
network. An example configuration for multi-network DID resolving would look like this: | ||
@@ -280,4 +304,5 @@ ```javascript | ||
{ name: "0x4", rpcUrl: "https://rinkeby.infura.io/v3/<YOUR PROJECT ID>" } | ||
{ name: "rsk:testnet", registry: "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b", rpcUrl: "https://did.testnet.rsk.co:4444" } | ||
{ name: "development", rpcUrl: "http://localhost:7545" } | ||
{ name: "rsk:testnet", chainId: "0x1f", rpcUrl: "https://did.testnet.rsk.co:4444" } | ||
{ name: "development", rpcUrl: "http://localhost:7545", registry: "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" } | ||
{ name: "myprivatenet", chainId: 123456, rpcUrl: "https://my.private.net.json.rpc.url" } | ||
] | ||
@@ -289,13 +314,16 @@ } | ||
This allows you to resolve ethr-did's of the formats: | ||
* `did:ethr:0xabcabc03e98e0dc2b855be647c39abe984193675` (uses mainnet configuration) | ||
* `did:ethr:mainnet:0xabcabc03e98e0dc2b855be647c39abe984193675` | ||
* `did:ethr:0x4:0xabcabc03e98e0dc2b855be647c39abe984193675` | ||
* `did:ethr:development:0xabcabc03e98e0dc2b855be647c39abe984193675` | ||
* `did:ethr:rsk:testnet:0xabcabc03e98e0dc2b855be647c39abe984193675` | ||
The configuration from above allows you to resolve ethr-did's of the formats: | ||
For each network you can specify either an `rpcUrl`, a `provider` or a `web3` instance that can be used to access that particular network. | ||
- `did:ethr:mainnet:0xabcabc03e98e0dc2b855be647c39abe984193675` | ||
- `did:ethr:0xabcabc03e98e0dc2b855be647c39abe984193675` (defaults to mainnet configuration) | ||
- `did:ethr:0x4:0xabcabc03e98e0dc2b855be647c39abe984193675` (refer to the rinkeby network by chainID) | ||
- `did:ethr:rsk:testnet:0xabcabc03e98e0dc2b855be647c39abe984193675` | ||
- `did:ethr:development:0xabcabc03e98e0dc2b855be647c39abe984193675` | ||
- `did:ethr:myprivatenet:0xabcabc03e98e0dc2b855be647c39abe984193675` | ||
These providers will have to support and `eth_call`, `eth_getLogs` to be able to resolve DIDs specific to that network. | ||
For each network you can specify either an `rpcUrl`, a `provider` or a `web3` instance that can be used to access that | ||
particular network. | ||
These providers will have to support `eth_call` and `eth_getLogs` to be able to resolve DIDs specific to that network. | ||
You can also override the default registry address by specifying a `registry` attribute per network. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
23
30
312
269284
10
2305
1
1
+ Added@ethersproject/abi@^5.0.13
+ Added@ethersproject/basex@^5.0.9
+ Added@ethersproject/abi@5.7.0(transitive)
+ Added@ethersproject/abstract-provider@5.7.0(transitive)
+ Added@ethersproject/abstract-signer@5.7.0(transitive)
+ Added@ethersproject/address@5.7.0(transitive)
+ Added@ethersproject/base64@5.7.0(transitive)
+ Added@ethersproject/basex@5.7.0(transitive)
+ Added@ethersproject/bignumber@5.7.0(transitive)
+ Added@ethersproject/bytes@5.7.0(transitive)
+ Added@ethersproject/constants@5.7.0(transitive)
+ Added@ethersproject/contracts@5.7.0(transitive)
+ Added@ethersproject/hash@5.7.0(transitive)
+ Added@ethersproject/keccak256@5.7.0(transitive)
+ Added@ethersproject/logger@5.7.0(transitive)
+ Added@ethersproject/networks@5.7.1(transitive)
+ Added@ethersproject/properties@5.7.0(transitive)
+ Added@ethersproject/providers@5.7.2(transitive)
+ Added@ethersproject/random@5.7.0(transitive)
+ Added@ethersproject/rlp@5.7.0(transitive)
+ Added@ethersproject/sha2@5.7.0(transitive)
+ Added@ethersproject/signing-key@5.7.0(transitive)
+ Added@ethersproject/strings@5.7.0(transitive)
+ Added@ethersproject/transactions@5.7.0(transitive)
+ Added@ethersproject/web@5.7.1(transitive)
+ Addedbech32@1.1.4(transitive)
+ Addedbn.js@5.2.1(transitive)
+ Addeddid-resolver@3.2.2(transitive)
+ Addedelliptic@6.5.4(transitive)
+ Addedws@7.4.6(transitive)
- Removedbuffer@^6.0.0
- Removedelliptic@^6.5.3
- Removedethjs-abi@^0.2.1
- Removedethjs-contract@^0.2.0
- Removedethjs-provider-http@^0.1.6
- Removedethjs-query@^0.3.5
- Removedjs-sha3@^0.8.0
- Removedbabel-runtime@6.26.0(transitive)
- Removedbase64-js@1.5.1(transitive)
- Removedbn.js@4.11.6(transitive)
- Removedbuffer@6.0.3(transitive)
- Removedcore-js@2.6.12(transitive)
- Removeddid-resolver@2.1.2(transitive)
- Removedelliptic@6.6.1(transitive)
- Removedethjs-abi@0.2.00.2.1(transitive)
- Removedethjs-contract@0.2.3(transitive)
- Removedethjs-filter@0.1.8(transitive)
- Removedethjs-format@0.2.7(transitive)
- Removedethjs-provider-http@0.1.6(transitive)
- Removedethjs-query@0.3.8(transitive)
- Removedethjs-rpc@0.2.0(transitive)
- Removedethjs-schema@0.2.1(transitive)
- Removedethjs-util@0.1.3(transitive)
- Removedieee754@1.2.1(transitive)
- Removedis-fn@1.0.0(transitive)
- Removedis-hex-prefixed@1.0.0(transitive)
- Removedjs-sha3@0.5.5(transitive)
- Removednumber-to-bn@1.7.0(transitive)
- Removedpromise-to-callback@1.0.0(transitive)
- Removedregenerator-runtime@0.11.1(transitive)
- Removedset-immediate-shim@1.0.1(transitive)
- Removedstrip-hex-prefix@1.0.0(transitive)
- Removedxhr2@0.1.3(transitive)
Updateddid-resolver@^3.0.2