Я создаю децентрализованный сервис с децентрализованными идентификаторами, используя IPFS и js -did-ipid .
Я пытаюсь создать и добавить DID Do c, но похоже, что он не добавляется в сеть. Может быть, вы поможете мне найти проблему.
Я получил настройку сервера node.js express со следующим кодом для создания did
var did = require('did-ipid');
...
ipid = did.default(ipfsNode, {lifetime: '24h'}); //IPFS.create({repo: "ipfs-server", pass: "}{.&PWPWPWPWPWPWPW000000"})
...
router.get('/register', function (req, res) {
let rsaKeyPair = generateRsaKeyPair(); //generates rsa keys with crypto
ipid.create(rsaKeyPair.privateKey, (document) => {
const publicKey = document.addPublicKey({
type: 'RsaVerificationKey2018',
publicKeyHex: rsaKeyPair.publicKey
});
const authentication = document.addAuthentication(publicKey.id);
const service = document.addService({
id: 'hub',
type: 'HubService',
serviceEndpoint: 'https://hub.example.com/',
});
})
.then(didDocument => res.send(didDocument))
.catch(reason => res.status(500).send(reason));
});
Это создает и отвечает на didDo c, но при попытке его решения я ничего не получаю.
router.get('/resolve', function (req, res) {
let did = req.query["did"]
if (did !== undefined && did.length > 0) {
ipid.resolve(did)
.then(r => res.send(r))
.catch(reason => res.status(404).send(reason));
} else {
res.status(400).send("Missing did");
}
});
Зарегистрируйте ответ: {
"publicKey": [
{
"type": "RsaVerificationKey2018",
"publicKeyHex": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp2wSSx0XuixPRjE9bVjj\nBotpLmgQ4j6QTXjkgEO8db8woXTLXKyv7k0Qlg3/o+/BaCFoqq7eCgYPzuLQtsV4\nmKmUWGs8i783wtx9ChdsvNUJtQDYLvY60tdEredCxzr4+IocQEeAp6oqHiuuQ3mX\nAtEh1909vsootLcNinK74ysOiTKhNeUWGYCKIMtMqUSqSIGP617os+IJVcGbZ1fk\nf9ofrVcQMTW+9LAohs1KYuFuNACRUP2EoQTkM890Mv0hp0kTKfexsKd7bjxfazo0\nDebrtYCwnFJyHaA+AB6+n1eskCGIgmM6KECLKZoLq1CPXn+AHDWc5MHJNKNN2kqt\nuQIDAQAB\n-----END PUBLIC KEY-----\n",
"id": "did:ipid:QmWDmXuHmm2RDhFDrVpL7487MB26NpVMWvS8jv59pARMMb#5y3dyogt2to",
"controller": "did:ipid:QmWDmXuHmm2RDhFDrVpL7487MB26NpVMWvS8jv59pARMMb"
}
],
"authentication": [
"did:ipid:QmWDmXuHmm2RDhFDrVpL7487MB26NpVMWvS8jv59pARMMb#5y3dyogt2to"
],
"service": [
{
"id": "did:ipid:QmWDmXuHmm2RDhFDrVpL7487MB26NpVMWvS8jv59pARMMb;hub",
"type": "HubService",
"serviceEndpoint": "https://hub.example.com/"
}
],
"@context": "https://w3id.org/did/v1",
"id": "did:ipid:QmWDmXuHmm2RDhFDrVpL7487MB26NpVMWvS8jv59pARMMb",
"created": "2020-06-17T12:19:38.247Z",
"updated": "2020-06-17T12:19:38.247Z"
}
Ответ на localhost:3000/did/resolve?did=did:ipid:QmWDmXuHmm2RDhFDrVpL7487MB26NpVMWvS8jv59pARMMb
Код 404
{
"originalError": "Cannot read property 'replace' of undefined",
"code": "INVALID_DID",
"name": "InvalidDid"
}
Это замена пути в строке 97 индекса ipid . js
const {
path
} = await _classPrivateFieldGet(this, _ipfs).name.resolve(identifier);
const cidStr = path.replace(/^\/ipfs\//, '');
Таким образом, похоже, что он не может разрешить идентификатор
Ручное разрешение did ipfs.name.resolve
возвращает /ipfs/bafyreihnyf7hwzeo7gzfpxdys5kyz6v3o7pvh7dd3riird3krpfqyxx2lm
, но ipfs.cat
возвращает Error: this dag node has no content.
и шлюз cloudflare unknown node type
Думаю, я делаю что-то не так, но не могу понять. Может ты сможешь помочь.
Спасибо, Лукас