@cef-ebsi/cli 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abi/pilot/Ptr.js +666 -0
- package/dist/abi/pilot/Ptr.js.map +1 -0
- package/dist/abi/pilot/Tcr.js +715 -0
- package/dist/abi/pilot/Tcr.js.map +1 -0
- package/dist/abi/test/Ptr.js +666 -0
- package/dist/abi/test/Ptr.js.map +1 -0
- package/dist/abi/test/SchemaSCRegistry.js +38 -2
- package/dist/abi/test/SchemaSCRegistry.js.map +1 -1
- package/dist/abi/test/Tcr.js +715 -0
- package/dist/abi/test/Tcr.js.map +1 -0
- package/dist/app.js +4 -1
- package/dist/app.js.map +1 -1
- package/dist/buildParam/didr.js +28 -0
- package/dist/buildParam/didr.js.map +1 -1
- package/dist/buildParam/index.js +10 -0
- package/dist/buildParam/index.js.map +1 -1
- package/dist/buildParam/ptr.js +80 -0
- package/dist/buildParam/ptr.js.map +1 -0
- package/dist/buildParam/tcr.js +36 -0
- package/dist/buildParam/tcr.js.map +1 -0
- package/dist/buildParam/timestamp.js +42 -0
- package/dist/buildParam/timestamp.js.map +1 -1
- package/dist/buildParam/tir.js +10 -0
- package/dist/buildParam/tir.js.map +1 -1
- package/dist/buildParam/tnt.js +28 -0
- package/dist/buildParam/tnt.js.map +1 -1
- package/dist/buildParam/tpr.js +11 -1
- package/dist/buildParam/tpr.js.map +1 -1
- package/dist/buildParam/tsr.js +9 -5
- package/dist/buildParam/tsr.js.map +1 -1
- package/dist/commands/authorisation.js +17 -1
- package/dist/commands/authorisation.js.map +1 -1
- package/dist/commands/compute.js +41 -1
- package/dist/commands/compute.js.map +1 -1
- package/dist/commands/ledger.js +68 -5
- package/dist/commands/ledger.js.map +1 -1
- package/dist/commands/ptr.js +56 -0
- package/dist/commands/ptr.js.map +1 -0
- package/dist/commands/tcr.js +51 -0
- package/dist/commands/tcr.js.map +1 -0
- package/dist/config.js +32 -1
- package/dist/config.js.map +1 -1
- package/dist/programs/migrateTsr.js +98 -54
- package/dist/programs/migrateTsr.js.map +1 -1
- package/dist/scripts/assets/VerifiableAuthorisationToInvoke.json +24 -0
- package/dist/scripts/bootstrap/1-populateTPR +18 -15
- package/dist/scripts/issueVcInvoke +10 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/utils.js +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,48 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TSR Schema Migration Tool
|
|
3
|
+
*
|
|
4
|
+
* This script migrates schemas from an old TSR (Trusted Schemas Registry) smart contract
|
|
5
|
+
* to a new TSR smart contract address. The migration process is performed in two phases:
|
|
6
|
+
* saving schema data from the old contract and inserting it into the new contract.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
*
|
|
10
|
+
* Phase 1: Save schemas from the old contract
|
|
11
|
+
* ------------------------------------------
|
|
12
|
+
* 1. Set the TSR_SC_ADDRESS environment variable to the old contract address
|
|
13
|
+
* 2. Run: yarn program:migrateTsr save [progressFile]
|
|
14
|
+
* - Creates a progress file: migrationTsr-{epochtime}.log (if not specified)
|
|
15
|
+
* - Fetches all schema IDs from the old contract
|
|
16
|
+
* - Retrieves and saves complete schema data to schemasData.log
|
|
17
|
+
*
|
|
18
|
+
* Phase 2: Migrate schemas to the new contract
|
|
19
|
+
* --------------------------------------------
|
|
20
|
+
* 3. Set the TSR_SC_ADDRESS environment variable to the new contract address
|
|
21
|
+
* 4. Choose migration method based on your access:
|
|
22
|
+
*
|
|
23
|
+
* Option A - Direct Besu connection (using proxyledger):
|
|
24
|
+
* yarn program:migrateTsr migrateWithProxy <progressFile>
|
|
25
|
+
*
|
|
26
|
+
* Option B - API connection (requires API configured with new address):
|
|
27
|
+
* yarn program:migrateTsr migrate <progressFile>
|
|
28
|
+
*
|
|
29
|
+
* The script tracks migration progress and can be safely restarted if interrupted.
|
|
30
|
+
* Already migrated schemas are skipped automatically.
|
|
31
|
+
*/
|
|
32
|
+
import { base58btc } from "multiformats/bases/base58";
|
|
1
33
|
import fs from "node:fs";
|
|
2
34
|
import { execCommand } from "../app.js";
|
|
3
35
|
import { loadConfig } from "../config.js";
|
|
4
36
|
const part = process.argv[2];
|
|
5
|
-
let
|
|
6
|
-
if (!["migrate", "save"].includes(part)) {
|
|
7
|
-
throw new Error(`Invalid command. Use 'migrateTsr save <
|
|
37
|
+
let progressFile = process.argv[3];
|
|
38
|
+
if (!["migrate", "migrateWithProxy", "save"].includes(part)) {
|
|
39
|
+
throw new Error(`Invalid command. Use 'migrateTsr save <progressFile>' to save schemas or 'migrateTsr migrate <progressFile>' to migrate schemas or 'migrateTsr migrateWithProxy <progressFile>' to migrate schemas with proxy`);
|
|
8
40
|
}
|
|
9
41
|
const fileNameSchemas = "schemasData.log";
|
|
10
42
|
const config = loadConfig();
|
|
11
43
|
const { admin } = config.programs;
|
|
12
|
-
async function
|
|
13
|
-
|
|
14
|
-
// insert schema
|
|
15
|
-
await safeExecCommand(`tsr insertSchema ${JSON.stringify(schema)}`);
|
|
16
|
-
return { success: true };
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
console.log(error);
|
|
20
|
-
return { error: error.message, success: false };
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
async function safeExecCommand(command) {
|
|
24
|
-
try {
|
|
25
|
-
await execCommand(command);
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
const { message } = error;
|
|
29
|
-
if (message.includes("nonce has already been used") ||
|
|
30
|
-
message.includes("replacement fee too low")) {
|
|
31
|
-
// try again after some seconds
|
|
32
|
-
await execCommand("wait 5");
|
|
33
|
-
await safeExecCommand(command);
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
if (message.includes("Revert reason: schemaId already exists") ||
|
|
37
|
-
message.includes("Revert reason: Schema already registered")) {
|
|
38
|
-
// everything is ok, continue
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
throw error;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
async function saveListSchemas() {
|
|
45
|
-
let fileData = fs.readFileSync(fileName, "utf8");
|
|
44
|
+
async function createProgressFile() {
|
|
45
|
+
let fileData = fs.readFileSync(progressFile, "utf8");
|
|
46
46
|
if (!fileData)
|
|
47
47
|
fileData = JSON.stringify({
|
|
48
48
|
listCompleted: false,
|
|
@@ -72,7 +72,7 @@ async function saveListSchemas() {
|
|
|
72
72
|
}
|
|
73
73
|
pageAfter += 1;
|
|
74
74
|
url = `/schemas?page[after]=${pageAfter}&page[size]=${pageSize}`;
|
|
75
|
-
fs.writeFileSync(
|
|
75
|
+
fs.writeFileSync(progressFile, JSON.stringify(data, null, 2));
|
|
76
76
|
}
|
|
77
77
|
catch {
|
|
78
78
|
await new Promise((resolve) => {
|
|
@@ -81,8 +81,52 @@ async function saveListSchemas() {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
+
async function migrateSchema(schemaData) {
|
|
85
|
+
try {
|
|
86
|
+
// insert schema
|
|
87
|
+
const { schema, schemaId } = schemaData;
|
|
88
|
+
const schemaIdHex = `0x${Buffer.from(base58btc.decode(schemaId)).toString("hex")}`;
|
|
89
|
+
let command = `tsr insertSchema ${schemaIdHex} ${JSON.stringify(schema)}`;
|
|
90
|
+
if (part === "migrateWithProxy")
|
|
91
|
+
command = `proxyledger ${command}`;
|
|
92
|
+
await safeExecCommand(command);
|
|
93
|
+
return { success: true };
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.log(error);
|
|
97
|
+
return { error: error.message, success: false };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function safeExecCommand(command) {
|
|
101
|
+
try {
|
|
102
|
+
await execCommand(command);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
const { message } = error;
|
|
106
|
+
if (message.includes("nonce has already been used") ||
|
|
107
|
+
message.includes("replacement fee too low")) {
|
|
108
|
+
// try again after some seconds
|
|
109
|
+
await execCommand("wait 5");
|
|
110
|
+
await safeExecCommand(command);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (message.includes("Revert reason: schemaId already exists") ||
|
|
114
|
+
message.includes("Revert reason: Schema already registered")) {
|
|
115
|
+
// everything is ok, continue
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
84
121
|
async function saveSchema(schemaId) {
|
|
85
|
-
|
|
122
|
+
let fileData;
|
|
123
|
+
if (fs.existsSync(fileNameSchemas)) {
|
|
124
|
+
fileData = fs.readFileSync(fileNameSchemas, "utf8");
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
fileData = "[]";
|
|
128
|
+
fs.writeFileSync(fileNameSchemas, fileData, "utf8");
|
|
129
|
+
}
|
|
86
130
|
const data = JSON.parse(fileData);
|
|
87
131
|
if (data.some((s) => s.schemaId === schemaId)) {
|
|
88
132
|
console.log(`Schema ${schemaId} already saved.`);
|
|
@@ -97,12 +141,12 @@ async function saveSchema(schemaId) {
|
|
|
97
141
|
// await execCommand("domain https://aio68-0-ebsi-pilot-rou.ebsi.eu");
|
|
98
142
|
// load admin
|
|
99
143
|
await execCommand(`using user ES256K did1 ${admin.ES256K.privateKey} ${admin.did}`);
|
|
100
|
-
if (!
|
|
101
|
-
|
|
102
|
-
fs.writeFileSync(
|
|
144
|
+
if (!progressFile) {
|
|
145
|
+
progressFile = `migrationTsr-${Date.now()}.log`;
|
|
146
|
+
fs.writeFileSync(progressFile, "", "utf8");
|
|
103
147
|
}
|
|
104
|
-
await
|
|
105
|
-
const fileData = fs.readFileSync(
|
|
148
|
+
await createProgressFile();
|
|
149
|
+
const fileData = fs.readFileSync(progressFile, "utf8");
|
|
106
150
|
const data = JSON.parse(fileData);
|
|
107
151
|
const { schemas } = data;
|
|
108
152
|
if (part === "save") {
|
|
@@ -115,20 +159,20 @@ async function saveSchema(schemaId) {
|
|
|
115
159
|
// part migrate
|
|
116
160
|
const fileDataSchemas = fs.readFileSync(fileNameSchemas, "utf8");
|
|
117
161
|
const schemasData = JSON.parse(fileDataSchemas);
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
162
|
+
if (part === "migrate") {
|
|
163
|
+
// migrate througt the TSR API
|
|
164
|
+
// the API must have the new contract address configured
|
|
165
|
+
await execCommand(`using user ES256 did1 ${admin.ES256.privateKey} ${admin.did}`);
|
|
166
|
+
await execCommand(`t: authorisation auth tsr_write_presentation`);
|
|
167
|
+
await execCommand(`using token t.access_token`);
|
|
168
|
+
}
|
|
121
169
|
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
122
170
|
for (let i = 0; i < schemas.length; i += 1) {
|
|
123
171
|
const schema = schemas[i];
|
|
124
|
-
if (!schema.migrated
|
|
125
|
-
schema.errors.some((error) => error.includes("nonce has already been used") ||
|
|
126
|
-
error.includes("replacement fee too low") ||
|
|
127
|
-
error.includes("Bad Gateway") ||
|
|
128
|
-
error.includes("Revert reason"))) {
|
|
172
|
+
if (!schema.migrated) {
|
|
129
173
|
const schemaData = schemasData.find((s) => s.schemaId === schema.schemaId);
|
|
130
174
|
if (schemaData) {
|
|
131
|
-
const result = await migrateSchema(schemaData
|
|
175
|
+
const result = await migrateSchema(schemaData);
|
|
132
176
|
if (result.success) {
|
|
133
177
|
schema.migrated = true;
|
|
134
178
|
}
|
|
@@ -139,7 +183,7 @@ async function saveSchema(schemaId) {
|
|
|
139
183
|
else {
|
|
140
184
|
schema.errors.push("Schema not found in schemasData.log");
|
|
141
185
|
}
|
|
142
|
-
fs.writeFileSync(
|
|
186
|
+
fs.writeFileSync(progressFile, JSON.stringify({ ...data, schemas }, null, 2), "utf8");
|
|
143
187
|
}
|
|
144
188
|
}
|
|
145
189
|
})()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrateTsr.js","sourceRoot":"","sources":["../../src/programs/migrateTsr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAoB1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,
|
|
1
|
+
{"version":3,"file":"migrateTsr.js","sourceRoot":"","sources":["../../src/programs/migrateTsr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": [
|
|
3
|
+
"https://www.w3.org/2018/credentials/v1"
|
|
4
|
+
],
|
|
5
|
+
"type": [
|
|
6
|
+
"VerifiableCredential",
|
|
7
|
+
"VerifiableAttestation",
|
|
8
|
+
"VerifiableAuthorisationToInvoke"
|
|
9
|
+
],
|
|
10
|
+
"issuer": "",
|
|
11
|
+
"credentialSubject": {
|
|
12
|
+
"id": "",
|
|
13
|
+
"contractAddress": ""
|
|
14
|
+
},
|
|
15
|
+
"termsOfUse": {
|
|
16
|
+
"id": "",
|
|
17
|
+
"type": "IssuanceCertificate"
|
|
18
|
+
|
|
19
|
+
},
|
|
20
|
+
"credentialSchema": {
|
|
21
|
+
"id": "ebsi:pilot:trusted-schemas-registry:/schemas/zH74MKkYTbQ6ZfTxufi6A3Aw8giS4piGm8dpgxFmkJjmu",
|
|
22
|
+
"type": "FullJsonSchemaValidator2021"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -3,27 +3,29 @@ run bootstrap/0a-loadTPROperator
|
|
|
3
3
|
# New Policies
|
|
4
4
|
|
|
5
5
|
#DID
|
|
6
|
-
proxyledger tpr insertPolicy DID:updateBaseDocument
|
|
7
|
-
proxyledger tpr insertPolicy DID:addController
|
|
8
|
-
proxyledger tpr insertPolicy DID:revokeController
|
|
9
|
-
proxyledger tpr insertPolicy DID:addVerificationMethod
|
|
10
|
-
proxyledger tpr insertPolicy DID:addVerificationRelationship
|
|
11
|
-
proxyledger tpr insertPolicy DID:revokeVerificationMethod
|
|
12
|
-
proxyledger tpr insertPolicy DID:expireVerificationMethod
|
|
13
|
-
proxyledger tpr insertPolicy DID:rollVerificationMethod
|
|
6
|
+
proxyledger tpr insertPolicy DID:updateBaseDocument ["updateBaseDocument in DID Registry"]
|
|
7
|
+
proxyledger tpr insertPolicy DID:addController ["addController in DID Registry"]
|
|
8
|
+
proxyledger tpr insertPolicy DID:revokeController ["revokeController in DID Registry"]
|
|
9
|
+
proxyledger tpr insertPolicy DID:addVerificationMethod ["addVerificationMethod in DID Registry"]
|
|
10
|
+
proxyledger tpr insertPolicy DID:addVerificationRelationship ["addVerificationRelationship in DID Registry"]
|
|
11
|
+
proxyledger tpr insertPolicy DID:revokeVerificationMethod ["revokeVerificationMethod in DID Registry"]
|
|
12
|
+
proxyledger tpr insertPolicy DID:expireVerificationMethod ["expireVerificationMethod in DID Registry"]
|
|
13
|
+
proxyledger tpr insertPolicy DID:rollVerificationMethod ["rollVerificationMethod in DID Registry"]
|
|
14
|
+
proxyledger tpr insertPolicy TCR:deployProxy ["deployProxy in Trusted Contracts Registry"]
|
|
15
|
+
proxyledger tpr insertPolicy TCR:manageTemplates ["manage templates in the Proxy Template Regsitry"]
|
|
14
16
|
|
|
15
17
|
#TIR
|
|
16
|
-
proxyledger tpr insertPolicy TIR:updateIssuer
|
|
17
|
-
proxyledger tpr insertPolicy TIR:setAttributeMetadata
|
|
18
|
+
proxyledger tpr insertPolicy TIR:updateIssuer ["updateIssuer in Trusted Issuers Registry"]
|
|
19
|
+
proxyledger tpr insertPolicy TIR:setAttributeMetadata ["setAttributeMetadata in Trusted Issuers Registry"]
|
|
18
20
|
|
|
19
21
|
#Timestamp
|
|
20
|
-
proxyledger tpr insertPolicy TS:insertHashAlgorithm
|
|
21
|
-
proxyledger tpr insertPolicy TS:updateHashAlgorithm
|
|
22
|
+
proxyledger tpr insertPolicy TS:insertHashAlgorithm ["insertHashAlgorithm in Timestamp"]
|
|
23
|
+
proxyledger tpr insertPolicy TS:updateHashAlgorithm ["updateHashAlgorithm in Timestamp"]
|
|
22
24
|
|
|
23
25
|
#TSR
|
|
24
|
-
proxyledger tpr insertPolicy TSR:insertSchema
|
|
25
|
-
proxyledger tpr insertPolicy TSR:updateSchema
|
|
26
|
-
proxyledger tpr insertPolicy TSR:updateMetadata
|
|
26
|
+
proxyledger tpr insertPolicy TSR:insertSchema ["insertSchema in Trusted Schemas Registry"]
|
|
27
|
+
proxyledger tpr insertPolicy TSR:updateSchema ["updateSchema in Trusted Schemas Registry"]
|
|
28
|
+
proxyledger tpr insertPolicy TSR:updateMetadata ["updateMetadata in Trusted Schemas Registry"]
|
|
27
29
|
|
|
28
30
|
# User Attributes
|
|
29
31
|
# List taken from https://ec.europa.eu/digital-building-blocks/wikis/display/BLOCKCHAININT/RFC+-+Procedure+for+multisig+wallet+maintenance
|
|
@@ -87,3 +89,4 @@ proxyledger tpr insertUserAttributes 0xA4B6C8710f6bF233b8b480498916DEC224A5a891
|
|
|
87
89
|
proxyledger tpr insertUserAttributes 0xA4B6C8710f6bF233b8b480498916DEC224A5a891 ["TIR:insertIssuer", "TIR:updateIssuer", "TIR:setAttributeMetadata"]
|
|
88
90
|
proxyledger tpr insertUserAttributes 0xA4B6C8710f6bF233b8b480498916DEC224A5a891 ["TS:insertHashAlgorithm", "TS:updateHashAlgorithm"]
|
|
89
91
|
proxyledger tpr insertUserAttributes 0xA4B6C8710f6bF233b8b480498916DEC224A5a891 ["TSR:insertSchema", "TSR:updateSchema", "TSR:updateMetadata"]
|
|
92
|
+
proxyledger tpr insertUserAttributes 0xA4B6C8710f6bF233b8b480498916DEC224A5a891 ["TCR:deployProxy", "TCR:manageTemplates"]
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# way of use:
|
|
2
|
+
# ==> run issueVcInvoke <didSubject> <address>
|
|
3
|
+
|
|
4
|
+
payloadVcInvoke: load assets/VerifiableAuthorisationToInvoke.json
|
|
5
|
+
set payloadVcInvoke.issuer user.did
|
|
6
|
+
set payloadVcInvoke.credentialSubject.id $1
|
|
7
|
+
set payloadVcInvoke.credentialSubject.contractAddress $2
|
|
8
|
+
set payloadVcInvoke.termsOfUse.id user.accreditationUrl
|
|
9
|
+
set payloadVcInvoke.credentialSchema.id tsrUrl /schemas/zH74MKkYTbQ6ZfTxufi6A3Aw8giS4piGm8dpgxFmkJjmu
|
|
10
|
+
compute createVcJwt payloadVcInvoke {} ES256
|