Polygon ID 最核心的是 issuer-node,该项目是一个后端服务,提供了 polygon id 所需的核心 api,issuer-node 系统组成如下图所示。
- postgresql 存储相关的 credentials 和一些其他数据
- vault 存储证书、私钥等相关的数据
- redis 存储系统所需的一些元数据
- issuer-api 提供了系统所需的 api
- issuer-api-ui 提供了一个 api 的 ui 解码
- issuer-ui 提供了 credentials DID 的 ui
运行 issuer-node #
1. 获取以太坊 api 地址 #
我使用的是 infura, 通过 infura 注册账号后可以获得 etheruem 地址,选择切换测试网,复制保存下来
2. 获取 ehtereum 私钥 #
infura 使用以太坊哪个网络,就需要获取哪个网络上账户的私钥,例如我是 Goerli,通过 metamask 获取
3. 获取代码 #
git clone https://github.com/0xPolygonID/issuer-node.git
cd issuer-node
git checkout v.2.1.0
切换到 v.2.1.0 版本,main 分支本地没有 run 起来
4. 通过 docker 启动 #
-
拷贝
.env-api.sample
为.env-api
以及.env-issuer.sample
为.env-issue
. -
配置
.env-issuer
中的 ethereum 地址ISSUER_ETHEREUM_URL=从 infura 获取的连接
-
然后编译和启动 vault, postgres, redis 容器
make up
-
添加以太坊私钥到 vault
make private_key=<从 metamask 获取的私钥> add-private-key;
-
通过命令配置 vault token,实际上配置的是
.env-issuer
中的ISSUER_KEY_STORE_TOKEN
这个变量make add-vault-token;
-
生成 DID
# x86 运行这个命令 make generate-issuer-did; # 如果是 arm,运行这个命令 make generate-issuer-did-arm;
-
启动 api 相关的容器
# x86 运行这个命令 make run; # 如果是 arm,运行这个命令 make run-arm;
-
(可选项)启动 ui 相关的容器
# x86 运行这个命令 make run-ui; # 如果是 arm,运行这个命令 make run-ui-arm;
所有容器都启动好之后,我们需要配置 api-ui 的认证,访问 http://localhost:3002/
在页面上测试是否可以访问, 点击 try
最后,访问 issuer ui: http://localhost:8088/,不出现 Network Error 报错就完成了
运行验证者 #
一般验证者是结合自身的逻辑自己实现,并分为:链下验证和链上验证,所以 Polygon ID 提供的是相关的库。
钱包 #
Polygon ID 提供了 fluter sdk,并自己使用该 sdk 实现了一个 app,可以在 App Store 下载,如果需要定义 app 应用可以使用该 sdk 编写自己的业务逻辑。