3id-blockchain-utils 中文文档教程
3id-blockchain-utils
这个包包含一堆实用程序,3ID 和 3Box 使用这些实用程序来创建和验证来自区块链的链接地址。
Tabel of Contents
Install
$ npm install --save 3id-blockchain-utils
Usage
将包导入您的项目
import { createLink, validateLink, authenticate } from '3id-blockchain-utils'
使用库创建和验证链接:
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')
}
使用库进行 3ID 身份验证:
await authenticate(message, '0x123abc...', ethereumProvider)
Supported blockchains
您可以在下面看到一个表格,其中列出了支持的区块链及其提供者对象。
Blockchain | CAIP-2 namespace | Supported providers |
---|---|---|
Ethereum | eip155 | metamask-like ethereum provider |
Filecoin | fil | Filecoin Wallet Provider |
Maintainers
Adding support for a blockchain
如果您想为 3ID 添加对新区块链的支持,这是这样做的地方。 该库使用 CAIP-10 以与区块链无关的方式表示帐户。 如果您要添加的区块链还不是 CAIP 标准的一部分,您应该确保将其添加到那里。
要开始添加对给定区块链的支持,请添加路径为:src/blockchains/
的文件。 该模块需要导出三个函数:
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
它还需要导出一个名为namespace
的常量。 此常量是一个字符串,其中包含 CAIP-2 chainId 命名空间。
请参阅 src/blockchains/ethereum.js
以了解如何为 eip155
(ethereum) CAIP-2 命名空间实现的示例。
最后在 src/index.js
中添加对您的区块链的支持。 只需将它添加到 handlers
数组即可。
Test
通过运行测试代码:
$ npm test
Licence
Apache-2.0 或 MIT
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.
Blockchain | CAIP-2 namespace | Supported providers |
---|---|---|
Ethereum | eip155 | metamask-like ethereum provider |
Filecoin | fil | Filecoin Wallet Provider |
Maintainers
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