Проблема при добавлении / разрешении документов DID с помощью js -did-ipid - PullRequest
0 голосов
/ 17 июня 2020

Я создаю децентрализованный сервис с децентрализованными идентификаторами, используя 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

Думаю, я делаю что-то не так, но не могу понять. Может ты сможешь помочь.

Спасибо, Лукас

...