-
Notifications
You must be signed in to change notification settings - Fork 2
/
2.2.updateMetadata.js
59 lines (47 loc) · 1.57 KB
/
2.2.updateMetadata.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
const {
Nft,
ProviderInstance,
getHash,
Aquarius
} = require('@oceanprotocol/lib');
const { SHA256 } = require('crypto-js');
const Web3 = require('web3');
const { web3Provider, oceanConfig } = require('./config');
const web3 = new Web3(web3Provider);
const aquarius = new Aquarius(oceanConfig.metadataCacheUri);
const nft = new Nft(web3);
const providerUrl = oceanConfig.providerUri;
const did = "did:op:a419f07306d71f3357f8df74807d5d12bddd6bcd738eb0b461470c64859d6f0f";
const setMetadata = async (did) => {
const accounts = await web3.eth.getAccounts();
const publisherAccount = accounts[0];
const ddo = await aquarius.resolve(did);
// update the ddo here
ddo.metadata.name = "Sample dataset v2";
ddo.metadata.description = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam";
ddo.metadata.tags = ["new tag1", "new tag2"];
providerResponse = await ProviderInstance.encrypt(ddo, providerUrl);
const encryptedResponse = await providerResponse;
const metadataHash = getHash(JSON.stringify(ddo));
await nft.setMetadata(
ddo.nftAddress,
publisherAccount,
0,
providerUrl,
'',
'0x2',
encryptedResponse,
`0x${metadataHash}`
);
await aquarius.waitForAqua(ddo.id);
console.log(`Resolved asset did [${ddo.id}]from aquarius.`);
console.log(`Updated name: [${ddo.metadata.name}].`);
console.log(`Updated description: [${ddo.metadata.description}].`);
console.log(`Updated tags: [${ddo.metadata.tags}].`);
};
setMetadata(did).then(() => {
process.exit();
}).catch((err) => {
console.error(err);
process.exit(1);
});