@midnames/sdk 0.2.1 → 1.0.1
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/controller-types.d.ts +104 -0
- package/dist/controller-types.js +16 -0
- package/dist/core.d.ts +13 -9
- package/dist/core.js +158 -67
- package/dist/errors.d.ts +20 -0
- package/dist/errors.js +39 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/managed/index.d.ts +3 -9
- package/dist/managed/index.js +3 -5
- package/dist/managed/index.js.map +1 -1
- package/dist/managed/leaf.compact +97 -65
- package/dist/managed/managed/leaf/contract/index.d.ts +197 -0
- package/dist/managed/managed/leaf/contract/index.js +3094 -0
- package/dist/managed/managed/leaf/contract/index.js.map +8 -0
- package/dist/managed/utils.d.ts +5 -0
- package/dist/managed/utils.js +19 -0
- package/dist/managed/utils.js.map +1 -0
- package/dist/operations.d.ts +49 -0
- package/dist/operations.js +137 -0
- package/dist/provider.d.ts +10 -4
- package/dist/provider.js +32 -8
- package/dist/react/DomainProfileWidget.d.ts +2 -2
- package/dist/react/DomainProfileWidget.js +11 -8
- package/dist/react/HolographicCard.d.ts +2 -2
- package/dist/react/HolographicCard.js +10 -7
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.js +1 -2
- package/dist/results.d.ts +38 -0
- package/dist/results.js +88 -0
- package/dist/types.d.ts +7 -41
- package/dist/types.js +1 -61
- package/dist/utils/address.js +6 -5
- package/dist/utils/domain.d.ts +6 -0
- package/dist/utils/domain.js +19 -1
- package/dist/utils/imageResolver.d.ts +8 -0
- package/dist/utils/imageResolver.js +89 -0
- package/dist/utils/sanitize.d.ts +6 -0
- package/dist/utils/sanitize.js +28 -0
- package/exported.md +1 -1
- package/managed/index.js +3 -5
- package/managed/index.js.map +1 -1
- package/managed/leaf.compact +97 -65
- package/managed/managed/leaf/contract/index.js +3094 -0
- package/managed/managed/leaf/contract/index.js.map +8 -0
- package/managed/utils.js +19 -0
- package/managed/utils.js.map +1 -0
- package/package.json +22 -11
- package/dist/managed/managed/leaf/contract/index.cjs +0 -2789
- package/dist/managed/managed/leaf/contract/index.cjs.map +0 -8
- package/dist/managed/managed/leaf/contract/index.d.cts +0 -146
- package/managed/managed/leaf/contract/index.cjs +0 -2789
- package/managed/managed/leaf/contract/index.cjs.map +0 -8
- package/managed/managed/leaf/contract/index.d.cts +0 -146
- package/tsconfig.tsbuildinfo +0 -1
package/managed/leaf.compact
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
pragma language_version 0.
|
|
1
|
+
pragma language_version >= 0.20;
|
|
2
2
|
/// # Unshielded Nameservice
|
|
3
|
-
///
|
|
3
|
+
///
|
|
4
4
|
/// Example:
|
|
5
5
|
/// The `domain.mid` register would be deployed with
|
|
6
6
|
/// - parent_domain: "mid"
|
|
@@ -20,30 +20,30 @@ pragma language_version 0.17;
|
|
|
20
20
|
/// - target: arbitrary
|
|
21
21
|
/// - domain: "hyper"
|
|
22
22
|
/// - fields for the `hyper.sub.domain.mid` domain.
|
|
23
|
-
///
|
|
24
|
-
///
|
|
23
|
+
///
|
|
24
|
+
///
|
|
25
25
|
import CompactStandardLibrary;
|
|
26
26
|
|
|
27
27
|
// This is sealed. If the domain is sold in the parent contract
|
|
28
28
|
// The new owner should deploy a new resolver.
|
|
29
|
-
export sealed ledger PARENT_DOMAIN: Maybe<
|
|
29
|
+
export sealed ledger PARENT_DOMAIN: Maybe<Bytes<32>>;
|
|
30
30
|
export sealed ledger PARENT_RESOLVER: ContractAddress;
|
|
31
|
-
export sealed ledger DOMAIN: Maybe<
|
|
31
|
+
export sealed ledger DOMAIN: Maybe<Bytes<32>>;
|
|
32
32
|
|
|
33
|
-
export ledger DOMAIN_OWNER: ZswapCoinPublicKey;
|
|
34
|
-
// This domain could target either a wallet or a contract
|
|
33
|
+
export ledger DOMAIN_OWNER: ZswapCoinPublicKey;
|
|
34
|
+
// This domain could target either a wallet or a contract
|
|
35
35
|
export ledger DOMAIN_TARGET: Either<ZswapCoinPublicKey, ContractAddress>;
|
|
36
36
|
|
|
37
37
|
// Map<domain, (owner, resolver)>.
|
|
38
|
-
export ledger domains: Map<
|
|
38
|
+
export ledger domains: Map<Bytes<32>, DomainData>;
|
|
39
39
|
|
|
40
40
|
// Set of domains saved here owned by address.
|
|
41
|
-
export ledger domains_owned: Map<ZswapCoinPublicKey, Set<
|
|
41
|
+
export ledger domains_owned: Map<ZswapCoinPublicKey, Set<Bytes<32>>>;
|
|
42
42
|
|
|
43
43
|
export ledger fields: Map<Opaque<'string'>, Opaque<'string'>>;
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
export { DomainData, Either, Maybe
|
|
46
|
+
export { DomainData, Either, Maybe }
|
|
47
47
|
struct DomainData {
|
|
48
48
|
owner: ZswapCoinPublicKey,
|
|
49
49
|
resolver: ContractAddress
|
|
@@ -51,12 +51,14 @@ struct DomainData {
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
constructor(
|
|
54
|
-
parent_domain: Maybe<
|
|
54
|
+
parent_domain: Maybe<Bytes<32>>,
|
|
55
55
|
parent_resolver: ContractAddress,
|
|
56
56
|
target: Either<ZswapCoinPublicKey, ContractAddress>,
|
|
57
|
-
domain: Maybe<
|
|
57
|
+
domain: Maybe<Bytes<32>>,
|
|
58
58
|
coin_color: Bytes<32>,
|
|
59
|
-
|
|
59
|
+
cost_short: Uint<128>,
|
|
60
|
+
cost_med: Uint<128>,
|
|
61
|
+
cost_long: Uint<128>,
|
|
60
62
|
kvs: Vector<10, Maybe<[Opaque<'string'>, Opaque<'string'>]>>
|
|
61
63
|
) {
|
|
62
64
|
DOMAIN_OWNER = ownPublicKey();
|
|
@@ -65,68 +67,88 @@ constructor(
|
|
|
65
67
|
DOMAIN_TARGET = disclose(target);
|
|
66
68
|
DOMAIN = disclose(domain);
|
|
67
69
|
COIN_COLOR = disclose(coin_color);
|
|
68
|
-
|
|
70
|
+
COST_SHORT = disclose(cost_short);
|
|
71
|
+
COST_MED = disclose(cost_med);
|
|
72
|
+
COST_LONG = disclose(cost_long);
|
|
69
73
|
for (const kv of kvs) {
|
|
70
|
-
if (disclose(kv)
|
|
71
|
-
|
|
74
|
+
if (disclose(kv) != none<[Opaque<'string'>, Opaque<'string'>]>()) {
|
|
75
|
+
fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
|
|
72
76
|
}
|
|
73
|
-
fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
79
|
|
|
77
|
-
// ===========================================
|
|
78
|
-
// Circuits
|
|
79
|
-
// ===========================================
|
|
80
|
+
// ===========================================
|
|
81
|
+
// Circuits
|
|
82
|
+
// ===========================================
|
|
80
83
|
|
|
81
84
|
export ledger COIN_COLOR: Bytes<32>;
|
|
82
|
-
export ledger
|
|
85
|
+
export ledger COST_SHORT: Uint<128>; // ≤3 chars
|
|
86
|
+
export ledger COST_MED: Uint<128>; // 4 chars
|
|
87
|
+
export ledger COST_LONG: Uint<128>; // 5+ chars
|
|
83
88
|
|
|
84
|
-
export circuit update_color(c: Bytes<32>)
|
|
89
|
+
export circuit update_color(c: Bytes<32>): [] {
|
|
85
90
|
assert(DOMAIN_OWNER == ownPublicKey(), "Not the owner");
|
|
86
91
|
COIN_COLOR = disclose(c);
|
|
87
92
|
}
|
|
88
93
|
|
|
89
|
-
export circuit
|
|
94
|
+
export circuit update_costs(cost_short: Uint<128>, cost_med: Uint<128>, cost_long: Uint<128>): [] {
|
|
90
95
|
assert(DOMAIN_OWNER == ownPublicKey(), "Not the owner");
|
|
91
|
-
|
|
96
|
+
COST_SHORT = disclose(cost_short);
|
|
97
|
+
COST_MED = disclose(cost_med);
|
|
98
|
+
COST_LONG = disclose(cost_long);
|
|
92
99
|
}
|
|
93
100
|
|
|
94
101
|
export circuit update_target_and_fields(
|
|
95
|
-
new_target: Either<ZswapCoinPublicKey, ContractAddress>,
|
|
102
|
+
new_target: Either<ZswapCoinPublicKey, ContractAddress>,
|
|
96
103
|
kvs: Vector<10, Maybe<[Opaque<'string'>, Opaque<'string'>]>>
|
|
97
104
|
) : [] {
|
|
98
105
|
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
99
106
|
for (const kv of kvs) {
|
|
100
|
-
if (disclose(kv)
|
|
101
|
-
|
|
107
|
+
if (disclose(kv) != none<[Opaque<'string'>, Opaque<'string'>]>()) {
|
|
108
|
+
fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
|
|
102
109
|
}
|
|
103
|
-
fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
|
|
104
110
|
}
|
|
105
111
|
DOMAIN_TARGET = disclose(new_target);
|
|
106
112
|
|
|
107
113
|
}
|
|
108
114
|
|
|
109
|
-
export circuit buy_domain_for(owner: ZswapCoinPublicKey, domain:
|
|
115
|
+
export circuit buy_domain_for(owner: ZswapCoinPublicKey, domain: Bytes<32>, len: Uint<32>, resolver: ContractAddress): [] {
|
|
116
|
+
assert(len <= 32, "len must be <= 32");
|
|
117
|
+
assert(len >= 1, "domain name cannot be empty");
|
|
118
|
+
|
|
119
|
+
const valid = fold(
|
|
120
|
+
(acc: Boolean, byte: Uint<8>, i: Uint<8>): Boolean =>
|
|
121
|
+
acc && (((i as Uint<32>) < len) || (byte == 255)),
|
|
122
|
+
true, domain,
|
|
123
|
+
[0, 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]
|
|
124
|
+
);
|
|
125
|
+
assert(valid, "Invalid domain key padding");
|
|
126
|
+
|
|
110
127
|
assert(!domains.member(disclose(domain)), "Domain already exists");
|
|
111
128
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
129
|
+
// pricing: shared color, per-tier cost
|
|
130
|
+
const d_len = disclose(len);
|
|
131
|
+
if (d_len <= 3) {
|
|
132
|
+
receiveUnshielded(COIN_COLOR, COST_SHORT);
|
|
133
|
+
sendUnshielded(COIN_COLOR, COST_SHORT, right<ContractAddress, UserAddress>(UserAddress { bytes: DOMAIN_OWNER.bytes }));
|
|
134
|
+
} else if (d_len == 4) {
|
|
135
|
+
receiveUnshielded(COIN_COLOR, COST_MED);
|
|
136
|
+
sendUnshielded(COIN_COLOR, COST_MED, right<ContractAddress, UserAddress>(UserAddress { bytes: DOMAIN_OWNER.bytes }));
|
|
137
|
+
} else {
|
|
138
|
+
receiveUnshielded(COIN_COLOR, COST_LONG);
|
|
139
|
+
sendUnshielded(COIN_COLOR, COST_LONG, right<ContractAddress, UserAddress>(UserAddress { bytes: DOMAIN_OWNER.bytes }));
|
|
140
|
+
}
|
|
119
141
|
|
|
120
|
-
const
|
|
142
|
+
const d_owner = disclose(owner);
|
|
143
|
+
const domain_data = DomainData {
|
|
121
144
|
d_owner,
|
|
122
145
|
disclose(resolver)
|
|
123
146
|
};
|
|
124
|
-
|
|
125
147
|
domains.insert(disclose(domain), disclose(domain_data));
|
|
126
148
|
|
|
127
149
|
// Track domains owned by address
|
|
128
150
|
if (!domains_owned.member(d_owner)) {
|
|
129
|
-
domains_owned.insert(d_owner, default<Set<
|
|
151
|
+
domains_owned.insert(d_owner, default<Set<Bytes<32>>>);
|
|
130
152
|
}
|
|
131
153
|
domains_owned.lookup(d_owner).insert(disclose(domain));
|
|
132
154
|
}
|
|
@@ -134,10 +156,9 @@ export circuit buy_domain_for(owner: ZswapCoinPublicKey, domain: Opaque<'string'
|
|
|
134
156
|
export circuit add_multiple_fields(kvs: Vector<10, Maybe<[Opaque<'string'>, Opaque<'string'>]>>) : [] {
|
|
135
157
|
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
136
158
|
for (const kv of kvs) {
|
|
137
|
-
if (disclose(kv)
|
|
138
|
-
|
|
159
|
+
if (disclose(kv) != none<[Opaque<'string'>, Opaque<'string'>]>()) {
|
|
160
|
+
fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
|
|
139
161
|
}
|
|
140
|
-
fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
|
|
141
162
|
}
|
|
142
163
|
}
|
|
143
164
|
|
|
@@ -151,67 +172,78 @@ export circuit clear_field(k: Opaque<'string'>): [] {
|
|
|
151
172
|
fields.remove(disclose(k));
|
|
152
173
|
}
|
|
153
174
|
|
|
154
|
-
export circuit clear_all_fields(
|
|
175
|
+
export circuit clear_all_fields(): [] {
|
|
155
176
|
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
156
177
|
fields.resetToDefault();
|
|
157
178
|
}
|
|
158
179
|
|
|
159
|
-
export circuit register_domain_for(owner: ZswapCoinPublicKey, domain:
|
|
180
|
+
export circuit register_domain_for(owner: ZswapCoinPublicKey, domain: Bytes<32>, len: Uint<32>, resolver: ContractAddress): [] {
|
|
181
|
+
assert(len <= 32, "len must be <= 32");
|
|
182
|
+
assert(len >= 1, "domain name cannot be empty");
|
|
183
|
+
|
|
184
|
+
const valid = fold(
|
|
185
|
+
(acc: Boolean, byte: Uint<8>, i: Uint<8>): Boolean =>
|
|
186
|
+
acc && (((i as Uint<32>) < len) || (byte == 255)),
|
|
187
|
+
true, domain,
|
|
188
|
+
[0, 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]
|
|
189
|
+
);
|
|
190
|
+
assert(valid, "Invalid domain key padding");
|
|
191
|
+
|
|
160
192
|
assert(!domains.member(disclose(domain)), "Domain already exists");
|
|
161
193
|
assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
|
|
162
194
|
|
|
163
|
-
const d_owner = disclose(owner);
|
|
195
|
+
const d_owner = disclose(owner);
|
|
164
196
|
const domain_data = DomainData {
|
|
165
197
|
d_owner,
|
|
166
198
|
disclose(resolver)
|
|
167
199
|
};
|
|
168
|
-
|
|
200
|
+
|
|
169
201
|
domains.insert(disclose(domain), disclose(domain_data));
|
|
170
|
-
|
|
202
|
+
|
|
171
203
|
// Track domains owned by address
|
|
172
204
|
if (!domains_owned.member(d_owner)) {
|
|
173
|
-
domains_owned.insert(d_owner, default<Set<
|
|
205
|
+
domains_owned.insert(d_owner, default<Set<Bytes<32>>>);
|
|
174
206
|
}
|
|
175
207
|
domains_owned.lookup(d_owner).insert(disclose(domain));
|
|
176
208
|
}
|
|
177
209
|
|
|
178
|
-
export circuit set_resolver(domain:
|
|
210
|
+
export circuit set_resolver(domain: Bytes<32>, resolver: ContractAddress): [] {
|
|
179
211
|
assert(domains.member(disclose(domain)), "Domain does not exist");
|
|
180
|
-
|
|
212
|
+
|
|
181
213
|
const current_data = domains.lookup(disclose(domain));
|
|
182
214
|
assert(current_data.owner == ownPublicKey(), "Not the domain owner");
|
|
183
|
-
|
|
215
|
+
|
|
184
216
|
const new_data = DomainData {
|
|
185
217
|
current_data.owner,
|
|
186
218
|
disclose(resolver)
|
|
187
219
|
};
|
|
188
|
-
|
|
220
|
+
|
|
189
221
|
domains.insert(disclose(domain), disclose(new_data));
|
|
190
222
|
}
|
|
191
223
|
|
|
192
224
|
export circuit update_domain_target(new_target: Either<ZswapCoinPublicKey, ContractAddress>): [] {
|
|
193
225
|
assert(DOMAIN_OWNER == ownPublicKey(), "Not the contract owner");
|
|
194
|
-
|
|
226
|
+
|
|
195
227
|
DOMAIN_TARGET = disclose(new_target);
|
|
196
228
|
}
|
|
197
229
|
|
|
198
|
-
export circuit transfer_domain(domain:
|
|
230
|
+
export circuit transfer_domain(domain: Bytes<32>, new_owner: ZswapCoinPublicKey): [] {
|
|
199
231
|
assert(domains.member(disclose(domain)), "Domain does not exist");
|
|
200
|
-
|
|
232
|
+
|
|
201
233
|
const current_data = domains.lookup(disclose(domain));
|
|
202
234
|
assert(current_data.owner == ownPublicKey(), "Not the domain owner");
|
|
203
|
-
|
|
235
|
+
|
|
204
236
|
const new_data = DomainData {
|
|
205
237
|
disclose(new_owner),
|
|
206
238
|
current_data.resolver
|
|
207
239
|
};
|
|
208
|
-
|
|
240
|
+
|
|
209
241
|
domains.insert(disclose(domain), disclose(new_data));
|
|
210
|
-
|
|
242
|
+
|
|
211
243
|
// Update ownership tracking
|
|
212
244
|
domains_owned.lookup(ownPublicKey()).remove(disclose(domain));
|
|
213
245
|
if (!domains_owned.member(disclose(new_owner))) {
|
|
214
|
-
domains_owned.insert(disclose(new_owner), default<Set<
|
|
246
|
+
domains_owned.insert(disclose(new_owner), default<Set<Bytes<32>>>);
|
|
215
247
|
}
|
|
216
248
|
domains_owned.lookup(disclose(new_owner)).insert(disclose(domain));
|
|
217
249
|
}
|
|
@@ -225,12 +257,12 @@ export circuit change_owner(new_owner: ZswapCoinPublicKey) : [] {
|
|
|
225
257
|
|
|
226
258
|
/*
|
|
227
259
|
Read only, but not pure, so let's not use those
|
|
228
|
-
export circuit resolve(domain:
|
|
260
|
+
export circuit resolve(domain: Bytes<32>): DomainData {
|
|
229
261
|
assert(domains.member(disclose(domain)), "Domain does not exist");
|
|
230
262
|
return domains.lookup(disclose(domain));
|
|
231
263
|
}
|
|
232
264
|
|
|
233
|
-
export circuit get_parent_domain(): Maybe<
|
|
265
|
+
export circuit get_parent_domain(): Maybe<Bytes<32>> {
|
|
234
266
|
return PARENT_DOMAIN;
|
|
235
267
|
}
|
|
236
268
|
|
|
@@ -238,7 +270,7 @@ export circuit get_contract_owner(): ZswapCoinPublicKey {
|
|
|
238
270
|
return DOMAIN_OWNER;
|
|
239
271
|
}
|
|
240
272
|
|
|
241
|
-
export circuit get_domain(): Maybe<
|
|
273
|
+
export circuit get_domain(): Maybe<Bytes<32>> {
|
|
242
274
|
return DOMAIN;
|
|
243
275
|
}
|
|
244
276
|
|
|
@@ -250,9 +282,9 @@ export circuit get_parent_resolver(): ContractAddress {
|
|
|
250
282
|
return PARENT_RESOLVER;
|
|
251
283
|
}
|
|
252
284
|
|
|
253
|
-
export circuit addr_owns_domain(addr: ZswapCoinPublicKey, domain:
|
|
285
|
+
export circuit addr_owns_domain(addr: ZswapCoinPublicKey, domain: Bytes<32>): Boolean {
|
|
254
286
|
assert(domains_owned.member(disclose(addr)), "Address does not own domains in this register");
|
|
255
287
|
return domains_owned.lookup(disclose(addr)).member(disclose(domain));
|
|
256
288
|
}
|
|
257
289
|
|
|
258
|
-
*/
|
|
290
|
+
*/
|