@beclab/olaresid 0.1.1 ā 0.1.2
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/CLI.md +1300 -0
- package/README.md +37 -31
- package/TAG.md +589 -0
- package/dist/abi/RootResolver2ABI.d.ts +54 -0
- package/dist/abi/RootResolver2ABI.d.ts.map +1 -0
- package/dist/abi/RootResolver2ABI.js +240 -0
- package/dist/abi/RootResolver2ABI.js.map +1 -0
- package/dist/business/index.d.ts +302 -0
- package/dist/business/index.d.ts.map +1 -0
- package/dist/business/index.js +1209 -0
- package/dist/business/index.js.map +1 -0
- package/dist/business/tag-context.d.ts +219 -0
- package/dist/business/tag-context.d.ts.map +1 -0
- package/dist/business/tag-context.js +537 -0
- package/dist/business/tag-context.js.map +1 -0
- package/dist/cli.js +2085 -39
- package/dist/cli.js.map +1 -1
- package/dist/debug.d.ts.map +1 -1
- package/dist/debug.js +14 -2
- package/dist/debug.js.map +1 -1
- package/dist/index.d.ts +50 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +229 -9
- package/dist/index.js.map +1 -1
- package/dist/utils/crypto-utils.d.ts +130 -0
- package/dist/utils/crypto-utils.d.ts.map +1 -0
- package/dist/utils/crypto-utils.js +402 -0
- package/dist/utils/crypto-utils.js.map +1 -0
- package/dist/utils/error-parser.d.ts +35 -0
- package/dist/utils/error-parser.d.ts.map +1 -0
- package/dist/utils/error-parser.js +202 -0
- package/dist/utils/error-parser.js.map +1 -0
- package/dist/utils/tag-abi-codec.d.ts +69 -0
- package/dist/utils/tag-abi-codec.d.ts.map +1 -0
- package/dist/utils/tag-abi-codec.js +144 -0
- package/dist/utils/tag-abi-codec.js.map +1 -0
- package/dist/utils/tag-type-builder.d.ts +158 -0
- package/dist/utils/tag-type-builder.d.ts.map +1 -0
- package/dist/utils/tag-type-builder.js +410 -0
- package/dist/utils/tag-type-builder.js.map +1 -0
- package/examples/crypto-utilities.ts +140 -0
- package/examples/domain-context.ts +80 -0
- package/examples/generate-mnemonic.ts +149 -0
- package/examples/index.ts +1 -1
- package/examples/ip.ts +171 -0
- package/examples/legacy.ts +10 -10
- package/examples/list-wallets.ts +81 -0
- package/examples/quasar-demo/.eslintrc.js +23 -0
- package/examples/quasar-demo/.quasar/app.js +43 -0
- package/examples/quasar-demo/.quasar/client-entry.js +38 -0
- package/examples/quasar-demo/.quasar/client-prefetch.js +130 -0
- package/examples/quasar-demo/.quasar/quasar-user-options.js +16 -0
- package/examples/quasar-demo/README.md +49 -0
- package/examples/quasar-demo/index.html +11 -0
- package/examples/quasar-demo/package-lock.json +6407 -0
- package/examples/quasar-demo/package.json +36 -0
- package/examples/quasar-demo/quasar.config.js +73 -0
- package/examples/quasar-demo/src/App.vue +13 -0
- package/examples/quasar-demo/src/css/app.scss +1 -0
- package/examples/quasar-demo/src/layouts/MainLayout.vue +21 -0
- package/examples/quasar-demo/src/pages/IndexPage.vue +905 -0
- package/examples/quasar-demo/src/router/index.ts +25 -0
- package/examples/quasar-demo/src/router/routes.ts +11 -0
- package/examples/quasar-demo/tsconfig.json +28 -0
- package/examples/register-subdomain.ts +152 -0
- package/examples/rsa-keypair.ts +148 -0
- package/examples/tag-builder.ts +235 -0
- package/examples/tag-management.ts +534 -0
- package/examples/tag-nested-tuple.ts +190 -0
- package/examples/tag-simple.ts +149 -0
- package/examples/tag-tagger.ts +217 -0
- package/examples/test-nested-tuple-conversion.ts +143 -0
- package/examples/test-type-bytes-parser.ts +70 -0
- package/examples/transfer-domain.ts +197 -0
- package/examples/wallet-management.ts +196 -0
- package/package.json +24 -15
- package/src/abi/RootResolver2ABI.ts +237 -0
- package/src/business/index.ts +1490 -0
- package/src/business/tag-context.ts +713 -0
- package/src/cli.ts +2755 -39
- package/src/debug.ts +17 -2
- package/src/index.ts +300 -14
- package/src/utils/crypto-utils.ts +459 -0
- package/src/utils/error-parser.ts +225 -0
- package/src/utils/tag-abi-codec.ts +158 -0
- package/src/utils/tag-type-builder.ts +469 -0
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TupleTypeBuilder = exports.TagTypeBuilder = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Tag Type Builder
|
|
6
|
+
* Calculate ABI type bytes offline without contract calls
|
|
7
|
+
* Does NOT handle encoding/decoding - use TagAbiCodec for that
|
|
8
|
+
*
|
|
9
|
+
* Encoding Rules:
|
|
10
|
+
* - uint: 0x01 + size (size = bits/8)
|
|
11
|
+
* - int: 0x00 + size
|
|
12
|
+
* - bool: 0x02
|
|
13
|
+
* - string: 0x03
|
|
14
|
+
* - array: 0x04 + elementType
|
|
15
|
+
* - fixedArray: 0x05 + length (2 bytes) + elementType
|
|
16
|
+
* - tuple: 0x06 + fieldCount (2 bytes) + fieldTypes...
|
|
17
|
+
* - address: 0x07
|
|
18
|
+
* - fixedBytes: 0x08 + size
|
|
19
|
+
* - bytes: 0x09
|
|
20
|
+
*/
|
|
21
|
+
class TagTypeBuilder {
|
|
22
|
+
constructor(typeBytes, abiTypeString = '') {
|
|
23
|
+
this.typeBytes = '';
|
|
24
|
+
this.abiTypeString = '';
|
|
25
|
+
this.typeBytes = typeBytes;
|
|
26
|
+
this.abiTypeString = abiTypeString;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get ABI type bytes (without 0x prefix)
|
|
30
|
+
*/
|
|
31
|
+
getTypeBytes() {
|
|
32
|
+
return this.typeBytes;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get ABI type string (e.g., "string", "uint256", "tuple(string,uint8)")
|
|
36
|
+
*/
|
|
37
|
+
getAbiTypeString() {
|
|
38
|
+
return this.abiTypeString;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parse type bytes to ABI type string
|
|
42
|
+
* This is the reverse operation of building type bytes
|
|
43
|
+
* @param typeBytes Hex string of type bytes (with or without 0x prefix)
|
|
44
|
+
* @returns ABI type string
|
|
45
|
+
*/
|
|
46
|
+
static parseTypeBytesToAbiString(typeBytes) {
|
|
47
|
+
// Remove 0x prefix if present
|
|
48
|
+
const bytes = typeBytes.startsWith('0x')
|
|
49
|
+
? typeBytes.slice(2)
|
|
50
|
+
: typeBytes;
|
|
51
|
+
if (bytes.length === 0) {
|
|
52
|
+
throw new Error('Empty type bytes');
|
|
53
|
+
}
|
|
54
|
+
const typeFlag = parseInt(bytes.slice(0, 2), 16);
|
|
55
|
+
switch (typeFlag) {
|
|
56
|
+
case 0x00: {
|
|
57
|
+
// int
|
|
58
|
+
const size = parseInt(bytes.slice(2, 4), 16);
|
|
59
|
+
return `int${size * 8}`;
|
|
60
|
+
}
|
|
61
|
+
case 0x01: {
|
|
62
|
+
// uint
|
|
63
|
+
const size = parseInt(bytes.slice(2, 4), 16);
|
|
64
|
+
return `uint${size * 8}`;
|
|
65
|
+
}
|
|
66
|
+
case 0x02: {
|
|
67
|
+
// bool
|
|
68
|
+
return 'bool';
|
|
69
|
+
}
|
|
70
|
+
case 0x03: {
|
|
71
|
+
// string
|
|
72
|
+
return 'string';
|
|
73
|
+
}
|
|
74
|
+
case 0x04: {
|
|
75
|
+
// array
|
|
76
|
+
const elementTypeBytes = '0x' + bytes.slice(2);
|
|
77
|
+
const elementType = this.parseTypeBytesToAbiString(elementTypeBytes);
|
|
78
|
+
return `${elementType}[]`;
|
|
79
|
+
}
|
|
80
|
+
case 0x05: {
|
|
81
|
+
// fixedArray
|
|
82
|
+
const length = parseInt(bytes.slice(2, 6), 16);
|
|
83
|
+
const elementTypeBytes = '0x' + bytes.slice(6);
|
|
84
|
+
const elementType = this.parseTypeBytesToAbiString(elementTypeBytes);
|
|
85
|
+
return `${elementType}[${length}]`;
|
|
86
|
+
}
|
|
87
|
+
case 0x06: {
|
|
88
|
+
// tuple
|
|
89
|
+
const fieldCount = parseInt(bytes.slice(2, 6), 16);
|
|
90
|
+
let offset = 6;
|
|
91
|
+
const fieldTypes = [];
|
|
92
|
+
for (let i = 0; i < fieldCount; i++) {
|
|
93
|
+
// Parse each field's type recursively
|
|
94
|
+
const fieldTypeBytes = '0x' + bytes.slice(offset);
|
|
95
|
+
const fieldType = this.parseTypeBytesToAbiString(fieldTypeBytes);
|
|
96
|
+
fieldTypes.push(fieldType);
|
|
97
|
+
// Calculate the length of this field's type bytes
|
|
98
|
+
const fieldTypeBytesLength = this.getTypeBytesLength(fieldTypeBytes);
|
|
99
|
+
offset += fieldTypeBytesLength;
|
|
100
|
+
}
|
|
101
|
+
return `tuple(${fieldTypes.join(',')})`;
|
|
102
|
+
}
|
|
103
|
+
case 0x07: {
|
|
104
|
+
// address
|
|
105
|
+
return 'address';
|
|
106
|
+
}
|
|
107
|
+
case 0x08: {
|
|
108
|
+
// fixedBytes
|
|
109
|
+
const size = parseInt(bytes.slice(2, 4), 16);
|
|
110
|
+
return `bytes${size}`;
|
|
111
|
+
}
|
|
112
|
+
case 0x09: {
|
|
113
|
+
// bytes
|
|
114
|
+
return 'bytes';
|
|
115
|
+
}
|
|
116
|
+
default:
|
|
117
|
+
throw new Error(`Unknown type flag: 0x${typeFlag.toString(16)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Calculate the byte length of a type bytes string (without 0x prefix)
|
|
122
|
+
* @private
|
|
123
|
+
*/
|
|
124
|
+
static getTypeBytesLength(typeBytes) {
|
|
125
|
+
const bytes = typeBytes.startsWith('0x')
|
|
126
|
+
? typeBytes.slice(2)
|
|
127
|
+
: typeBytes;
|
|
128
|
+
const typeFlag = parseInt(bytes.slice(0, 2), 16);
|
|
129
|
+
switch (typeFlag) {
|
|
130
|
+
case 0x00: // int
|
|
131
|
+
case 0x01: // uint
|
|
132
|
+
case 0x08: // fixedBytes
|
|
133
|
+
return 4; // 1 byte flag + 1 byte size
|
|
134
|
+
case 0x02: // bool
|
|
135
|
+
case 0x03: // string
|
|
136
|
+
case 0x07: // address
|
|
137
|
+
case 0x09: // bytes
|
|
138
|
+
return 2; // 1 byte flag only
|
|
139
|
+
case 0x04: {
|
|
140
|
+
// array
|
|
141
|
+
const elementTypeBytes = '0x' + bytes.slice(2);
|
|
142
|
+
return 2 + this.getTypeBytesLength(elementTypeBytes);
|
|
143
|
+
}
|
|
144
|
+
case 0x05: {
|
|
145
|
+
// fixedArray
|
|
146
|
+
const elementTypeBytes = '0x' + bytes.slice(6);
|
|
147
|
+
return 6 + this.getTypeBytesLength(elementTypeBytes); // flag + length (2 bytes) + element type
|
|
148
|
+
}
|
|
149
|
+
case 0x06: {
|
|
150
|
+
// tuple
|
|
151
|
+
const fieldCount = parseInt(bytes.slice(2, 6), 16);
|
|
152
|
+
let length = 6; // flag + field count (2 bytes)
|
|
153
|
+
let offset = 6;
|
|
154
|
+
for (let i = 0; i < fieldCount; i++) {
|
|
155
|
+
const fieldTypeBytes = '0x' + bytes.slice(offset);
|
|
156
|
+
const fieldLength = this.getTypeBytesLength(fieldTypeBytes);
|
|
157
|
+
length += fieldLength;
|
|
158
|
+
offset += fieldLength;
|
|
159
|
+
}
|
|
160
|
+
return length;
|
|
161
|
+
}
|
|
162
|
+
default:
|
|
163
|
+
throw new Error(`Unknown type flag: 0x${typeFlag.toString(16)}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get field names (for Tuple types)
|
|
168
|
+
* Returns format: string[][], each element is a tuple's field name array
|
|
169
|
+
*/
|
|
170
|
+
getFieldNames() {
|
|
171
|
+
// Default returns empty array, Tuple type will override this method
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
// ========================================
|
|
175
|
+
// Basic Types
|
|
176
|
+
// ========================================
|
|
177
|
+
/**
|
|
178
|
+
* uint type
|
|
179
|
+
* @param bits Bit count: 8, 16, 24, ..., 256 (must be divisible by 8)
|
|
180
|
+
* @example
|
|
181
|
+
* TagTypeBuilder.uint(8) ā "0101"
|
|
182
|
+
* TagTypeBuilder.uint(256) ā "0120"
|
|
183
|
+
*/
|
|
184
|
+
static uint(bits = 256) {
|
|
185
|
+
if (bits < 8 || bits > 256 || bits % 8 !== 0) {
|
|
186
|
+
throw new Error('uint bits must be 8-256 and divisible by 8');
|
|
187
|
+
}
|
|
188
|
+
const size = bits / 8;
|
|
189
|
+
const sizeHex = size.toString(16).padStart(2, '0');
|
|
190
|
+
return new TagTypeBuilder(`01${sizeHex}`, `uint${bits}`);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* int type
|
|
194
|
+
* @param bits Bit count: 8, 16, 24, ..., 256 (must be divisible by 8)
|
|
195
|
+
* @example
|
|
196
|
+
* TagTypeBuilder.int(8) ā "0001"
|
|
197
|
+
* TagTypeBuilder.int(256) ā "0020"
|
|
198
|
+
*/
|
|
199
|
+
static int(bits = 256) {
|
|
200
|
+
if (bits < 8 || bits > 256 || bits % 8 !== 0) {
|
|
201
|
+
throw new Error('int bits must be 8-256 and divisible by 8');
|
|
202
|
+
}
|
|
203
|
+
const size = bits / 8;
|
|
204
|
+
const sizeHex = size.toString(16).padStart(2, '0');
|
|
205
|
+
return new TagTypeBuilder(`00${sizeHex}`, `int${bits}`);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* bool type
|
|
209
|
+
* @example
|
|
210
|
+
* TagTypeBuilder.bool() ā "02"
|
|
211
|
+
*/
|
|
212
|
+
static bool() {
|
|
213
|
+
return new TagTypeBuilder('02', 'bool');
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* string type
|
|
217
|
+
* @example
|
|
218
|
+
* TagTypeBuilder.string() ā "03"
|
|
219
|
+
*/
|
|
220
|
+
static string() {
|
|
221
|
+
return new TagTypeBuilder('03', 'string');
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* address type
|
|
225
|
+
* @example
|
|
226
|
+
* TagTypeBuilder.address() ā "07"
|
|
227
|
+
*/
|
|
228
|
+
static address() {
|
|
229
|
+
return new TagTypeBuilder('07', 'address');
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* bytes type (dynamic length)
|
|
233
|
+
* @example
|
|
234
|
+
* TagTypeBuilder.bytes() ā "09"
|
|
235
|
+
*/
|
|
236
|
+
static bytes() {
|
|
237
|
+
return new TagTypeBuilder('09', 'bytes');
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* bytesN type (fixed length)
|
|
241
|
+
* @param size Byte count: 1-32
|
|
242
|
+
* @example
|
|
243
|
+
* TagTypeBuilder.fixedBytes(32) ā "0820"
|
|
244
|
+
*/
|
|
245
|
+
static fixedBytes(size) {
|
|
246
|
+
if (size < 1 || size > 32) {
|
|
247
|
+
throw new Error('Fixed bytes size must be between 1 and 32');
|
|
248
|
+
}
|
|
249
|
+
const sizeHex = size.toString(16).padStart(2, '0');
|
|
250
|
+
return new TagTypeBuilder(`08${sizeHex}`, `bytes${size}`);
|
|
251
|
+
}
|
|
252
|
+
// ========================================
|
|
253
|
+
// Array Types
|
|
254
|
+
// ========================================
|
|
255
|
+
/**
|
|
256
|
+
* Dynamic array
|
|
257
|
+
* @param elementType Element type
|
|
258
|
+
* @example
|
|
259
|
+
* TagTypeBuilder.array(TagTypeBuilder.address()) ā "0407"
|
|
260
|
+
*/
|
|
261
|
+
static array(elementType) {
|
|
262
|
+
const typeBytes = `04${elementType.getTypeBytes()}`;
|
|
263
|
+
const abiTypeString = `${elementType.getAbiTypeString()}[]`;
|
|
264
|
+
const fieldNames = elementType.getFieldNames();
|
|
265
|
+
// If element type has field names (e.g., tuple), propagate them
|
|
266
|
+
if (fieldNames.length > 0) {
|
|
267
|
+
return new TupleTypeBuilder(typeBytes, fieldNames, abiTypeString);
|
|
268
|
+
}
|
|
269
|
+
return new TagTypeBuilder(typeBytes, abiTypeString);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Fixed-length array
|
|
273
|
+
* @param elementType Element type
|
|
274
|
+
* @param length Array length (1-65535)
|
|
275
|
+
* @example
|
|
276
|
+
* TagTypeBuilder.fixedArray(TagTypeBuilder.address(), 5) ā "05000507"
|
|
277
|
+
*/
|
|
278
|
+
static fixedArray(elementType, length) {
|
|
279
|
+
if (length < 1 || length > 65535) {
|
|
280
|
+
throw new Error('Fixed array length must be between 1 and 65535');
|
|
281
|
+
}
|
|
282
|
+
const lengthHex = length.toString(16).padStart(4, '0');
|
|
283
|
+
const typeBytes = `05${lengthHex}${elementType.getTypeBytes()}`;
|
|
284
|
+
const abiTypeString = `${elementType.getAbiTypeString()}[${length}]`;
|
|
285
|
+
const fieldNames = elementType.getFieldNames();
|
|
286
|
+
// If element type has field names (e.g., tuple), propagate them
|
|
287
|
+
if (fieldNames.length > 0) {
|
|
288
|
+
return new TupleTypeBuilder(typeBytes, fieldNames, abiTypeString);
|
|
289
|
+
}
|
|
290
|
+
return new TagTypeBuilder(typeBytes, abiTypeString);
|
|
291
|
+
}
|
|
292
|
+
// ========================================
|
|
293
|
+
// Tuple (Struct)
|
|
294
|
+
// ========================================
|
|
295
|
+
/**
|
|
296
|
+
* tuple type
|
|
297
|
+
* @param fields Field definitions, format: { fieldName: fieldType }
|
|
298
|
+
* @example
|
|
299
|
+
* TagTypeBuilder.tuple({
|
|
300
|
+
* name: TagTypeBuilder.string(),
|
|
301
|
+
* age: TagTypeBuilder.uint8()
|
|
302
|
+
* }) ā "060002" + "03" + "0101"
|
|
303
|
+
*
|
|
304
|
+
* Field names are collected in pre-order traversal (DFS pre-order) for nested tuples.
|
|
305
|
+
* Pre-order: Visit root first, then recursively visit children left-to-right.
|
|
306
|
+
*
|
|
307
|
+
* Example tree structure: A{B{D{E, F}}, C}
|
|
308
|
+
* fieldNames = [
|
|
309
|
+
* ["i", "j"], // A's fields (root)
|
|
310
|
+
* ["i"], // B's fields (A's 1st child)
|
|
311
|
+
* ["i", "j"], // D's fields (B's child)
|
|
312
|
+
* ["i", "j"], // E's fields (D's 1st child)
|
|
313
|
+
* ["i", "j"], // F's fields (D's 2nd child)
|
|
314
|
+
* ["i"] // C's fields (A's 2nd child)
|
|
315
|
+
* ]
|
|
316
|
+
*/
|
|
317
|
+
static tuple(fields) {
|
|
318
|
+
const fieldNames = [];
|
|
319
|
+
const fieldTypes = [];
|
|
320
|
+
const fieldAbiTypes = [];
|
|
321
|
+
const allFieldNames = [];
|
|
322
|
+
// First, add current tuple's field names
|
|
323
|
+
for (const name of Object.keys(fields)) {
|
|
324
|
+
fieldNames.push(name);
|
|
325
|
+
}
|
|
326
|
+
allFieldNames.push(fieldNames);
|
|
327
|
+
// Then, recursively collect nested tuple field names in depth-first order
|
|
328
|
+
for (const [_name, type] of Object.entries(fields)) {
|
|
329
|
+
fieldTypes.push(type.getTypeBytes());
|
|
330
|
+
fieldAbiTypes.push(type.getAbiTypeString());
|
|
331
|
+
// Recursively collect nested tuple field names
|
|
332
|
+
const nested = type.getFieldNames();
|
|
333
|
+
if (nested.length > 0) {
|
|
334
|
+
allFieldNames.push(...nested);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
const fieldCount = fieldTypes.length;
|
|
338
|
+
const fieldCountHex = fieldCount.toString(16).padStart(4, '0');
|
|
339
|
+
const typeBytes = `06${fieldCountHex}${fieldTypes.join('')}`;
|
|
340
|
+
const abiTypeString = `tuple(${fieldAbiTypes.join(',')})`;
|
|
341
|
+
return new TupleTypeBuilder(typeBytes, allFieldNames, abiTypeString, fields);
|
|
342
|
+
}
|
|
343
|
+
// ========================================
|
|
344
|
+
// Common Type Shortcuts
|
|
345
|
+
// ========================================
|
|
346
|
+
static uint8() {
|
|
347
|
+
return this.uint(8);
|
|
348
|
+
}
|
|
349
|
+
static uint16() {
|
|
350
|
+
return this.uint(16);
|
|
351
|
+
}
|
|
352
|
+
static uint32() {
|
|
353
|
+
return this.uint(32);
|
|
354
|
+
}
|
|
355
|
+
static uint64() {
|
|
356
|
+
return this.uint(64);
|
|
357
|
+
}
|
|
358
|
+
static uint128() {
|
|
359
|
+
return this.uint(128);
|
|
360
|
+
}
|
|
361
|
+
static uint256() {
|
|
362
|
+
return this.uint(256);
|
|
363
|
+
}
|
|
364
|
+
static int8() {
|
|
365
|
+
return this.int(8);
|
|
366
|
+
}
|
|
367
|
+
static int16() {
|
|
368
|
+
return this.int(16);
|
|
369
|
+
}
|
|
370
|
+
static int32() {
|
|
371
|
+
return this.int(32);
|
|
372
|
+
}
|
|
373
|
+
static int64() {
|
|
374
|
+
return this.int(64);
|
|
375
|
+
}
|
|
376
|
+
static int128() {
|
|
377
|
+
return this.int(128);
|
|
378
|
+
}
|
|
379
|
+
static int256() {
|
|
380
|
+
return this.int(256);
|
|
381
|
+
}
|
|
382
|
+
static bytes32() {
|
|
383
|
+
return this.fixedBytes(32);
|
|
384
|
+
}
|
|
385
|
+
static addressArray() {
|
|
386
|
+
return this.array(this.address());
|
|
387
|
+
}
|
|
388
|
+
static stringArray() {
|
|
389
|
+
return this.array(this.string());
|
|
390
|
+
}
|
|
391
|
+
static uint256Array() {
|
|
392
|
+
return this.array(this.uint256());
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
exports.TagTypeBuilder = TagTypeBuilder;
|
|
396
|
+
/**
|
|
397
|
+
* Tuple Type Builder (supports field names and object encoding)
|
|
398
|
+
*/
|
|
399
|
+
class TupleTypeBuilder extends TagTypeBuilder {
|
|
400
|
+
constructor(typeBytes, fieldNames, abiTypeString = '', fieldTypes) {
|
|
401
|
+
super(typeBytes, abiTypeString);
|
|
402
|
+
this.fieldNames = fieldNames;
|
|
403
|
+
this.fieldTypes = fieldTypes;
|
|
404
|
+
}
|
|
405
|
+
getFieldNames() {
|
|
406
|
+
return this.fieldNames;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
exports.TupleTypeBuilder = TupleTypeBuilder;
|
|
410
|
+
//# sourceMappingURL=tag-type-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag-type-builder.js","sourceRoot":"","sources":["../../src/utils/tag-type-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example: Crypto Utilities
|
|
3
|
+
*
|
|
4
|
+
* This example demonstrates all crypto utility functions:
|
|
5
|
+
* - Generate mnemonic phrases
|
|
6
|
+
* - Derive Ethereum addresses from mnemonics
|
|
7
|
+
* - Derive DIDs from mnemonics
|
|
8
|
+
* - Derive EVM private keys from mnemonics
|
|
9
|
+
* - Complete key derivation (all at once)
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import {
|
|
13
|
+
generateMnemonic,
|
|
14
|
+
getEthereumAddressFromMnemonic,
|
|
15
|
+
getDIDFromMnemonic,
|
|
16
|
+
getEVMPrivateKeyFromMnemonic,
|
|
17
|
+
deriveDIDFromMnemonic,
|
|
18
|
+
generateDIDKeyData
|
|
19
|
+
} from '../src/utils/crypto-utils';
|
|
20
|
+
|
|
21
|
+
async function main() {
|
|
22
|
+
console.log('='.repeat(60));
|
|
23
|
+
console.log('Crypto Utilities Examples');
|
|
24
|
+
console.log('='.repeat(60));
|
|
25
|
+
|
|
26
|
+
// =========================================================================
|
|
27
|
+
// 1. Generate Mnemonic
|
|
28
|
+
// =========================================================================
|
|
29
|
+
console.log('\nš Example 1: Generate Mnemonic Phrases');
|
|
30
|
+
console.log('-'.repeat(60));
|
|
31
|
+
|
|
32
|
+
const mnemonic12 = generateMnemonic(12);
|
|
33
|
+
console.log('12-word mnemonic:', mnemonic12);
|
|
34
|
+
|
|
35
|
+
const mnemonic24 = generateMnemonic(24);
|
|
36
|
+
console.log('24-word mnemonic:', mnemonic24);
|
|
37
|
+
|
|
38
|
+
// =========================================================================
|
|
39
|
+
// 2. Derive Ethereum Address
|
|
40
|
+
// =========================================================================
|
|
41
|
+
console.log('\nš Example 2: Get Ethereum Address from Mnemonic');
|
|
42
|
+
console.log('-'.repeat(60));
|
|
43
|
+
|
|
44
|
+
const testMnemonic =
|
|
45
|
+
'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
|
|
46
|
+
const address = await getEthereumAddressFromMnemonic(testMnemonic);
|
|
47
|
+
console.log('Mnemonic:', testMnemonic);
|
|
48
|
+
console.log('Address:', address);
|
|
49
|
+
|
|
50
|
+
// =========================================================================
|
|
51
|
+
// 3. Derive DID
|
|
52
|
+
// =========================================================================
|
|
53
|
+
console.log('\nš Example 3: Get DID from Mnemonic');
|
|
54
|
+
console.log('-'.repeat(60));
|
|
55
|
+
|
|
56
|
+
const did = await getDIDFromMnemonic(testMnemonic);
|
|
57
|
+
console.log('Mnemonic:', testMnemonic);
|
|
58
|
+
console.log('DID:', did);
|
|
59
|
+
|
|
60
|
+
// =========================================================================
|
|
61
|
+
// 4. Derive EVM Private Key
|
|
62
|
+
// =========================================================================
|
|
63
|
+
console.log('\nš Example 4: Get EVM Private Key from Mnemonic');
|
|
64
|
+
console.log('-'.repeat(60));
|
|
65
|
+
|
|
66
|
+
const privateKey = await getEVMPrivateKeyFromMnemonic(testMnemonic);
|
|
67
|
+
console.log('Mnemonic:', testMnemonic);
|
|
68
|
+
console.log('Private Key:', privateKey);
|
|
69
|
+
console.log('\nā ļø Never share your private key!');
|
|
70
|
+
|
|
71
|
+
// =========================================================================
|
|
72
|
+
// 5. Derive Owner and DID Together
|
|
73
|
+
// =========================================================================
|
|
74
|
+
console.log('\nš Example 5: Derive Owner and DID from Mnemonic');
|
|
75
|
+
console.log('-'.repeat(60));
|
|
76
|
+
|
|
77
|
+
const { owner, did: derivedDid } = await deriveDIDFromMnemonic(
|
|
78
|
+
testMnemonic
|
|
79
|
+
);
|
|
80
|
+
console.log('Mnemonic:', testMnemonic);
|
|
81
|
+
console.log('Owner (Address):', owner);
|
|
82
|
+
console.log('DID:', derivedDid);
|
|
83
|
+
|
|
84
|
+
// =========================================================================
|
|
85
|
+
// 6. Generate Complete Key Data (All at Once)
|
|
86
|
+
// =========================================================================
|
|
87
|
+
console.log('\nš² Example 6: Generate Complete Key Data');
|
|
88
|
+
console.log('-'.repeat(60));
|
|
89
|
+
|
|
90
|
+
const keyData12 = await generateDIDKeyData(12);
|
|
91
|
+
console.log('Generated 12-word key set:');
|
|
92
|
+
console.log(' Mnemonic:', keyData12.mnemonic);
|
|
93
|
+
console.log(' Owner:', keyData12.owner);
|
|
94
|
+
console.log(' DID:', keyData12.did);
|
|
95
|
+
|
|
96
|
+
const keyData24 = await generateDIDKeyData(24);
|
|
97
|
+
console.log('\nGenerated 24-word key set:');
|
|
98
|
+
console.log(' Mnemonic:', keyData24.mnemonic);
|
|
99
|
+
console.log(' Owner:', keyData24.owner);
|
|
100
|
+
console.log(' DID:', keyData24.did);
|
|
101
|
+
|
|
102
|
+
// =========================================================================
|
|
103
|
+
// 7. Verify Consistency
|
|
104
|
+
// =========================================================================
|
|
105
|
+
console.log('\nā
Example 7: Verify Consistency');
|
|
106
|
+
console.log('-'.repeat(60));
|
|
107
|
+
|
|
108
|
+
const verifyMnemonic = generateMnemonic(12);
|
|
109
|
+
console.log('Testing mnemonic:', verifyMnemonic);
|
|
110
|
+
|
|
111
|
+
const addr1 = await getEthereumAddressFromMnemonic(verifyMnemonic);
|
|
112
|
+
const { owner: addr2 } = await deriveDIDFromMnemonic(verifyMnemonic);
|
|
113
|
+
const { owner: addr3 } = await generateDIDKeyData(12); // Different mnemonic
|
|
114
|
+
|
|
115
|
+
console.log('\nAddresses derived from same mnemonic:');
|
|
116
|
+
console.log(' Method 1 (getEthereumAddressFromMnemonic):', addr1);
|
|
117
|
+
console.log(' Method 2 (deriveDIDFromMnemonic):', addr2);
|
|
118
|
+
console.log(' Consistent?', addr1 === addr2 ? 'ā
Yes' : 'ā No');
|
|
119
|
+
|
|
120
|
+
console.log('\nAddresses from different mnemonics:');
|
|
121
|
+
console.log(' Address 1:', addr1);
|
|
122
|
+
console.log(' Address 2:', addr3);
|
|
123
|
+
console.log(' Different?', addr1 !== addr3 ? 'ā
Yes' : 'ā No');
|
|
124
|
+
|
|
125
|
+
// =========================================================================
|
|
126
|
+
// Summary
|
|
127
|
+
// =========================================================================
|
|
128
|
+
console.log('\n' + '='.repeat(60));
|
|
129
|
+
console.log('Summary of Crypto Utilities:');
|
|
130
|
+
console.log('='.repeat(60));
|
|
131
|
+
console.log('1. generateMnemonic(words) - Generate new mnemonic');
|
|
132
|
+
console.log('2. getEthereumAddressFromMnemonic - Get Ethereum address');
|
|
133
|
+
console.log('3. getDIDFromMnemonic - Get DID');
|
|
134
|
+
console.log('4. getEVMPrivateKeyFromMnemonic - Get private key');
|
|
135
|
+
console.log('5. deriveDIDFromMnemonic - Get owner + DID');
|
|
136
|
+
console.log('6. generateDIDKeyData - Generate all at once');
|
|
137
|
+
console.log('='.repeat(60));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
main().catch(console.error);
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import OlaresID from '../src/index';
|
|
2
|
+
|
|
3
|
+
async function main() {
|
|
4
|
+
console.log('='.repeat(60));
|
|
5
|
+
console.log('Testing DomainContext Methods');
|
|
6
|
+
console.log('='.repeat(60));
|
|
7
|
+
|
|
8
|
+
const didConsole = OlaresID.createTestnet();
|
|
9
|
+
|
|
10
|
+
const testDomain = '1.com';
|
|
11
|
+
const domain = didConsole.domain(testDomain);
|
|
12
|
+
|
|
13
|
+
// Test 1: getMetaInfo
|
|
14
|
+
console.log('\nš Test 1: getMetaInfo()');
|
|
15
|
+
console.log('-'.repeat(60));
|
|
16
|
+
try {
|
|
17
|
+
const metaInfo = await domain.getMetaInfo();
|
|
18
|
+
console.log('ā
Success:');
|
|
19
|
+
console.log(' ID:', metaInfo.id);
|
|
20
|
+
console.log(' Name:', metaInfo.name);
|
|
21
|
+
console.log(' DID:', metaInfo.did);
|
|
22
|
+
console.log(' Note:', metaInfo.note);
|
|
23
|
+
console.log(' Allow Subdomain:', metaInfo.allowSubdomain);
|
|
24
|
+
} catch (error) {
|
|
25
|
+
console.error('ā Failed:', error);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Test 2: getOwner
|
|
29
|
+
console.log('\nš¤ Test 2: getOwner()');
|
|
30
|
+
console.log('-'.repeat(60));
|
|
31
|
+
try {
|
|
32
|
+
const owner = await domain.getOwner();
|
|
33
|
+
console.log('ā
Owner:', owner);
|
|
34
|
+
} catch (error) {
|
|
35
|
+
console.error('ā Failed:', error);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Test 3: isOwner (without signer, should throw)
|
|
39
|
+
console.log('\nš Test 3: isOwner() - without signer');
|
|
40
|
+
console.log('-'.repeat(60));
|
|
41
|
+
try {
|
|
42
|
+
const isOwner = await domain.isOwner();
|
|
43
|
+
console.log('ā
Is Owner:', isOwner);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.log('ā
Expected error:', error);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Test 4: isOwner (with signer)
|
|
49
|
+
if (process.env.PRIVATE_KEY_OR_MNEMONIC) {
|
|
50
|
+
console.log('\nš Test 4: isOwner() - with signer');
|
|
51
|
+
console.log('-'.repeat(60));
|
|
52
|
+
try {
|
|
53
|
+
await didConsole.setSigner(process.env.PRIVATE_KEY_OR_MNEMONIC);
|
|
54
|
+
const isOwner = await domain.isOwner();
|
|
55
|
+
console.log('ā
Is Owner:', isOwner);
|
|
56
|
+
didConsole.clearSigner();
|
|
57
|
+
} catch (error) {
|
|
58
|
+
console.error('ā Failed:', error);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Test 5: Test with non-existent domain
|
|
63
|
+
console.log('\nā Test 5: Non-existent domain');
|
|
64
|
+
console.log('-'.repeat(60));
|
|
65
|
+
const nonExistentDomain = didConsole.domain(
|
|
66
|
+
'this-domain-does-not-exist.olares.com'
|
|
67
|
+
);
|
|
68
|
+
try {
|
|
69
|
+
await nonExistentDomain.getMetaInfo();
|
|
70
|
+
console.error('ā Should have thrown an error');
|
|
71
|
+
} catch (error) {
|
|
72
|
+
console.log('ā
Expected error:', error);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
console.log('\n' + '='.repeat(60));
|
|
76
|
+
console.log('ā
All tests completed!');
|
|
77
|
+
console.log('='.repeat(60));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
main().catch(console.error);
|