@midnames/sdk 1.0.1 → 1.0.4

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.
Files changed (119) hide show
  1. package/README.md +1 -1
  2. package/dist/controller-types.d.ts +5 -1
  3. package/dist/controller-types.js +1 -0
  4. package/dist/controller-types.js.map +1 -0
  5. package/dist/core.d.ts +1 -1
  6. package/dist/core.js +2 -1
  7. package/dist/core.js.map +1 -0
  8. package/dist/errors.js +3 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/index.js +1 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/operations.js +3 -2
  13. package/dist/operations.js.map +1 -0
  14. package/dist/provider.js +5 -5
  15. package/dist/provider.js.map +1 -0
  16. package/dist/react/DomainProfileWidget/index.js +1 -0
  17. package/dist/react/DomainProfileWidget/index.js.map +1 -0
  18. package/dist/react/DomainProfileWidget.js +12 -14
  19. package/dist/react/DomainProfileWidget.js.map +1 -0
  20. package/dist/react/HolographicCard/index.js +1 -0
  21. package/dist/react/HolographicCard/index.js.map +1 -0
  22. package/dist/react/HolographicCard.js +5 -5
  23. package/dist/react/HolographicCard.js.map +1 -0
  24. package/dist/react/index.js +1 -0
  25. package/dist/react/index.js.map +1 -0
  26. package/dist/results.js +2 -0
  27. package/dist/results.js.map +1 -0
  28. package/dist/types.d.ts +1 -1
  29. package/dist/types.js +1 -0
  30. package/dist/types.js.map +1 -0
  31. package/dist/utils/address.js +1 -0
  32. package/dist/utils/address.js.map +1 -0
  33. package/dist/utils/domain.js +1 -0
  34. package/dist/utils/domain.js.map +1 -0
  35. package/dist/utils/imageResolver.js +1 -0
  36. package/dist/utils/imageResolver.js.map +1 -0
  37. package/dist/utils/index.js +1 -0
  38. package/dist/utils/index.js.map +1 -0
  39. package/dist/utils/sanitize.js +1 -0
  40. package/dist/utils/sanitize.js.map +1 -0
  41. package/{dist/managed → node_modules/@midnames/ns/dist}/index.d.ts +2 -0
  42. package/{dist/managed → node_modules/@midnames/ns/dist}/index.js +2 -0
  43. package/node_modules/@midnames/ns/dist/index.js.map +1 -0
  44. package/node_modules/@midnames/ns/dist/managed/leaf/compiler/contract-info.json +534 -0
  45. package/node_modules/@midnames/ns/dist/managed/leaf/keys/add_multiple_fields.prover +0 -0
  46. package/node_modules/@midnames/ns/dist/managed/leaf/keys/add_multiple_fields.verifier +0 -0
  47. package/node_modules/@midnames/ns/dist/managed/leaf/keys/buy_domain_for.prover +0 -0
  48. package/node_modules/@midnames/ns/dist/managed/leaf/keys/buy_domain_for.verifier +0 -0
  49. package/node_modules/@midnames/ns/dist/managed/leaf/keys/change_owner.prover +0 -0
  50. package/node_modules/@midnames/ns/dist/managed/leaf/keys/change_owner.verifier +0 -0
  51. package/node_modules/@midnames/ns/dist/managed/leaf/keys/clear_all_fields.prover +0 -0
  52. package/node_modules/@midnames/ns/dist/managed/leaf/keys/clear_all_fields.verifier +0 -0
  53. package/node_modules/@midnames/ns/dist/managed/leaf/keys/clear_field.prover +0 -0
  54. package/node_modules/@midnames/ns/dist/managed/leaf/keys/clear_field.verifier +0 -0
  55. package/node_modules/@midnames/ns/dist/managed/leaf/keys/insert_field.prover +0 -0
  56. package/node_modules/@midnames/ns/dist/managed/leaf/keys/insert_field.verifier +0 -0
  57. package/node_modules/@midnames/ns/dist/managed/leaf/keys/register_domain_for.prover +0 -0
  58. package/node_modules/@midnames/ns/dist/managed/leaf/keys/register_domain_for.verifier +0 -0
  59. package/node_modules/@midnames/ns/dist/managed/leaf/keys/set_resolver.prover +0 -0
  60. package/node_modules/@midnames/ns/dist/managed/leaf/keys/set_resolver.verifier +0 -0
  61. package/node_modules/@midnames/ns/dist/managed/leaf/keys/transfer_domain.prover +0 -0
  62. package/node_modules/@midnames/ns/dist/managed/leaf/keys/transfer_domain.verifier +0 -0
  63. package/node_modules/@midnames/ns/dist/managed/leaf/keys/update_color.prover +0 -0
  64. package/node_modules/@midnames/ns/dist/managed/leaf/keys/update_color.verifier +0 -0
  65. package/node_modules/@midnames/ns/dist/managed/leaf/keys/update_costs.prover +0 -0
  66. package/node_modules/@midnames/ns/dist/managed/leaf/keys/update_costs.verifier +0 -0
  67. package/node_modules/@midnames/ns/dist/managed/leaf/keys/update_domain_target.prover +0 -0
  68. package/node_modules/@midnames/ns/dist/managed/leaf/keys/update_domain_target.verifier +0 -0
  69. package/node_modules/@midnames/ns/dist/managed/leaf/keys/update_target_and_fields.prover +0 -0
  70. package/node_modules/@midnames/ns/dist/managed/leaf/keys/update_target_and_fields.verifier +0 -0
  71. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/add_multiple_fields.bzkir +0 -0
  72. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/add_multiple_fields.zkir +424 -0
  73. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/buy_domain_for.bzkir +0 -0
  74. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/buy_domain_for.zkir +1456 -0
  75. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/change_owner.bzkir +0 -0
  76. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/change_owner.zkir +57 -0
  77. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/clear_all_fields.bzkir +0 -0
  78. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/clear_all_fields.zkir +53 -0
  79. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/clear_field.bzkir +0 -0
  80. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/clear_field.zkir +58 -0
  81. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/insert_field.bzkir +0 -0
  82. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/insert_field.zkir +65 -0
  83. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/register_domain_for.bzkir +0 -0
  84. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/register_domain_for.zkir +401 -0
  85. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/set_resolver.bzkir +0 -0
  86. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/set_resolver.zkir +109 -0
  87. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/transfer_domain.bzkir +0 -0
  88. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/transfer_domain.zkir +212 -0
  89. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/update_color.bzkir +0 -0
  90. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/update_color.zkir +58 -0
  91. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/update_costs.bzkir +0 -0
  92. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/update_costs.zkir +88 -0
  93. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/update_domain_target.bzkir +0 -0
  94. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/update_domain_target.zkir +66 -0
  95. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/update_target_and_fields.bzkir +0 -0
  96. package/node_modules/@midnames/ns/dist/managed/leaf/zkir/update_target_and_fields.zkir +450 -0
  97. package/node_modules/@midnames/ns/package.json +55 -0
  98. package/package.json +42 -9
  99. package/dist/managed/index.js.map +0 -1
  100. package/exported.md +0 -111
  101. package/managed/index.js +0 -4
  102. package/managed/index.js.map +0 -1
  103. package/managed/leaf.compact +0 -290
  104. package/managed/managed/leaf/contract/index.js +0 -3094
  105. package/managed/managed/leaf/contract/index.js.map +0 -8
  106. package/managed/utils.js +0 -19
  107. package/managed/utils.js.map +0 -1
  108. package/managed/witnesses.js +0 -3
  109. package/managed/witnesses.js.map +0 -1
  110. /package/{dist/managed → node_modules/@midnames/ns/dist}/leaf.compact +0 -0
  111. /package/{dist/managed → node_modules/@midnames/ns/dist}/managed/leaf/contract/index.d.ts +0 -0
  112. /package/{dist/managed → node_modules/@midnames/ns/dist}/managed/leaf/contract/index.js +0 -0
  113. /package/{dist/managed → node_modules/@midnames/ns/dist}/managed/leaf/contract/index.js.map +0 -0
  114. /package/{dist/managed → node_modules/@midnames/ns/dist}/utils.d.ts +0 -0
  115. /package/{dist/managed → node_modules/@midnames/ns/dist}/utils.js +0 -0
  116. /package/{dist/managed → node_modules/@midnames/ns/dist}/utils.js.map +0 -0
  117. /package/{dist/managed → node_modules/@midnames/ns/dist}/witnesses.d.ts +0 -0
  118. /package/{dist/managed → node_modules/@midnames/ns/dist}/witnesses.js +0 -0
  119. /package/{dist/managed → node_modules/@midnames/ns/dist}/witnesses.js.map +0 -0
package/exported.md DELETED
@@ -1,111 +0,0 @@
1
- # MidNames SDK - Exported Signatures
2
-
3
- This document contains all exported functions, types, interfaces, classes, and components from the MidNames SDK.
4
-
5
- ## Functions
6
-
7
- ### Core
8
-
9
- ```typescript
10
- export function resolveDomain(domain: string, options?: { provider?: PublicDataProvider; tldAddress?: string }): Promise<Result<string>>
11
- ```
12
- Resolves a domain name to its target address.
13
-
14
- ```typescript
15
- export function getDomainInfoInContract(contractAddress: string, domainName: string, options?: { provider?: PublicDataProvider }): Promise<Result<DomainInfo>>
16
- ```
17
- Gets information about a domain from a specific contract.
18
-
19
- ```typescript
20
- export function getDomainInfo(fullDomain: string, options?: { provider?: PublicDataProvider }): Promise<Result<DomainInfo>>
21
- ```
22
- Gets domain information by resolving the full domain path.
23
-
24
- ```typescript
25
- export function getDomainFields(contractAddress: string, options?: { provider?: PublicDataProvider }): Promise<Result<Array<[string, string]>>>
26
- ```
27
- Gets all fields stored in a domain contract.
28
-
29
- ```typescript
30
- export function getDomainSettings(contractAddress: string, options?: { provider?: PublicDataProvider }): Promise<Result<DomainSettings>>
31
- ```
32
- Gets the settings (coin color, domain cost) for a domain contract.
33
-
34
- ```typescript
35
- export function getDomainProfile(fullDomain: string, options?: { provider?: PublicDataProvider }): Promise<Result<DomainProfileData>>
36
- ```
37
- Gets the complete profile data for a domain.
38
-
39
- ### Domain Utility Functions
40
-
41
- ```typescript
42
- export function normalizeDomain(input: string, assumeTld: boolean): string
43
- ```
44
- Normalizes a domain string by cleaning and formatting it.
45
-
46
- ```typescript
47
- export function parseFullDomain(fullDomain: string, tld: string): ParsedDomain
48
- ```
49
- Parses a full domain string into its component parts.
50
-
51
- ```typescript
52
- export function buildTraversalPath(fullDomain: string, tld: string): string[]
53
- ```
54
- Builds the traversal path for resolving a domain.
55
-
56
- ```typescript
57
- export function isValidDomainName(domainName: string): boolean
58
- ```
59
- Validates if a domain name follows the correct format.
60
-
61
- ```typescript
62
- export function getParentDomain(fullDomain: string): null | string
63
- ```
64
- Gets the parent domain of a given domain.
65
-
66
- ```typescript
67
- export function getSubdomain(fullDomain: string): string
68
- ```
69
- Extracts the subdomain portion from a full domain.
70
-
71
- ```typescript
72
- export function isTLD(domain: string, tld: string): boolean
73
- ```
74
- Checks if a domain is a top-level domain.
75
-
76
- ```typescript
77
- export function buildFullDomain(subdomain: string, parent: string): string
78
- ```
79
- Builds a full domain from subdomain and parent parts.
80
-
81
- ### Address Utility Functions
82
-
83
- ```typescript
84
- export function bytesToHex(bytes: Uint8Array): string
85
- ```
86
- Converts a byte array to a hexadecimal string.
87
-
88
- ```typescript
89
- export function formatContractAddress(bytes: Uint8Array): string
90
- ```
91
- Formats a contract address from bytes with proper prefix.
92
-
93
- ```typescript
94
- export function deriveShieldedAddress(coinPublicKeyAddress: string, encryptionPublicKey: string): null | string
95
- ```
96
- Derives a shielded address from coin public key and encryption key.
97
-
98
- ## React Components
99
-
100
- ```typescript
101
- export type DomainProfileWidgetProps = {
102
- fullDomain: string;
103
- publicDataProvider: PublicDataProvider;
104
- className?: string;
105
- showStatus?: boolean;
106
- onError?: (error: MidnamesError) => void;
107
- }
108
-
109
- export function DomainProfileWidget(props: DomainProfileWidgetProps): JSX.Element
110
- ```
111
- React component for displaying domain profile information.
package/managed/index.js DELETED
@@ -1,4 +0,0 @@
1
- export * as Leaf from "./managed/leaf/contract/index.js";
2
- export { ledger, Contract } from "./managed/leaf/contract/index.js";
3
- export { domainToKey, keyToDomain } from "./utils.js";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAML,MAAM,EACN,QAAQ,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -1,290 +0,0 @@
1
- pragma language_version >= 0.20;
2
- /// # Unshielded Nameservice
3
- ///
4
- /// Example:
5
- /// The `domain.mid` register would be deployed with
6
- /// - parent_domain: "mid"
7
- /// - parent_resolver: "mid" resolver
8
- /// - target: arbitrary
9
- /// - domain: "domain"
10
- /// - fields for the `domain.mid` domain.
11
- /// The `sub.domain.mid` register would be deployed with
12
- /// - parent_domain: "domain"
13
- /// - parent_resolver: "domain" resolver
14
- /// - target: arbitrary
15
- /// - domain: "sub"
16
- /// - fields for the `sub.domain.mid` domain.
17
- /// The `hyper.sub.domain.mid` register would be deployed with
18
- /// - parent_domain: "sub"
19
- /// - parent_resolver: "sub" resolver
20
- /// - target: arbitrary
21
- /// - domain: "hyper"
22
- /// - fields for the `hyper.sub.domain.mid` domain.
23
- ///
24
- ///
25
- import CompactStandardLibrary;
26
-
27
- // This is sealed. If the domain is sold in the parent contract
28
- // The new owner should deploy a new resolver.
29
- export sealed ledger PARENT_DOMAIN: Maybe<Bytes<32>>;
30
- export sealed ledger PARENT_RESOLVER: ContractAddress;
31
- export sealed ledger DOMAIN: Maybe<Bytes<32>>;
32
-
33
- export ledger DOMAIN_OWNER: ZswapCoinPublicKey;
34
- // This domain could target either a wallet or a contract
35
- export ledger DOMAIN_TARGET: Either<ZswapCoinPublicKey, ContractAddress>;
36
-
37
- // Map<domain, (owner, resolver)>.
38
- export ledger domains: Map<Bytes<32>, DomainData>;
39
-
40
- // Set of domains saved here owned by address.
41
- export ledger domains_owned: Map<ZswapCoinPublicKey, Set<Bytes<32>>>;
42
-
43
- export ledger fields: Map<Opaque<'string'>, Opaque<'string'>>;
44
-
45
-
46
- export { DomainData, Either, Maybe }
47
- struct DomainData {
48
- owner: ZswapCoinPublicKey,
49
- resolver: ContractAddress
50
- }
51
-
52
-
53
- constructor(
54
- parent_domain: Maybe<Bytes<32>>,
55
- parent_resolver: ContractAddress,
56
- target: Either<ZswapCoinPublicKey, ContractAddress>,
57
- domain: Maybe<Bytes<32>>,
58
- coin_color: Bytes<32>,
59
- cost_short: Uint<128>,
60
- cost_med: Uint<128>,
61
- cost_long: Uint<128>,
62
- kvs: Vector<10, Maybe<[Opaque<'string'>, Opaque<'string'>]>>
63
- ) {
64
- DOMAIN_OWNER = ownPublicKey();
65
- PARENT_DOMAIN = disclose(parent_domain);
66
- PARENT_RESOLVER = disclose(parent_resolver);
67
- DOMAIN_TARGET = disclose(target);
68
- DOMAIN = disclose(domain);
69
- COIN_COLOR = disclose(coin_color);
70
- COST_SHORT = disclose(cost_short);
71
- COST_MED = disclose(cost_med);
72
- COST_LONG = disclose(cost_long);
73
- for (const kv of kvs) {
74
- if (disclose(kv) != none<[Opaque<'string'>, Opaque<'string'>]>()) {
75
- fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
76
- }
77
- }
78
- }
79
-
80
- // ===========================================
81
- // Circuits
82
- // ===========================================
83
-
84
- export ledger COIN_COLOR: Bytes<32>;
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
88
-
89
- export circuit update_color(c: Bytes<32>): [] {
90
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the owner");
91
- COIN_COLOR = disclose(c);
92
- }
93
-
94
- export circuit update_costs(cost_short: Uint<128>, cost_med: Uint<128>, cost_long: Uint<128>): [] {
95
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the owner");
96
- COST_SHORT = disclose(cost_short);
97
- COST_MED = disclose(cost_med);
98
- COST_LONG = disclose(cost_long);
99
- }
100
-
101
- export circuit update_target_and_fields(
102
- new_target: Either<ZswapCoinPublicKey, ContractAddress>,
103
- kvs: Vector<10, Maybe<[Opaque<'string'>, Opaque<'string'>]>>
104
- ) : [] {
105
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
106
- for (const kv of kvs) {
107
- if (disclose(kv) != none<[Opaque<'string'>, Opaque<'string'>]>()) {
108
- fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
109
- }
110
- }
111
- DOMAIN_TARGET = disclose(new_target);
112
-
113
- }
114
-
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
-
127
- assert(!domains.member(disclose(domain)), "Domain already exists");
128
-
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
- }
141
-
142
- const d_owner = disclose(owner);
143
- const domain_data = DomainData {
144
- d_owner,
145
- disclose(resolver)
146
- };
147
- domains.insert(disclose(domain), disclose(domain_data));
148
-
149
- // Track domains owned by address
150
- if (!domains_owned.member(d_owner)) {
151
- domains_owned.insert(d_owner, default<Set<Bytes<32>>>);
152
- }
153
- domains_owned.lookup(d_owner).insert(disclose(domain));
154
- }
155
-
156
- export circuit add_multiple_fields(kvs: Vector<10, Maybe<[Opaque<'string'>, Opaque<'string'>]>>) : [] {
157
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
158
- for (const kv of kvs) {
159
- if (disclose(kv) != none<[Opaque<'string'>, Opaque<'string'>]>()) {
160
- fields.insert(disclose(kv.value[0]),disclose(kv.value[1]));
161
- }
162
- }
163
- }
164
-
165
- export circuit insert_field(k: Opaque<'string'>, v: Opaque<'string'>) : [] {
166
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
167
- fields.insert(disclose(k),disclose(v));
168
- }
169
-
170
- export circuit clear_field(k: Opaque<'string'>): [] {
171
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
172
- fields.remove(disclose(k));
173
- }
174
-
175
- export circuit clear_all_fields(): [] {
176
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
177
- fields.resetToDefault();
178
- }
179
-
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
-
192
- assert(!domains.member(disclose(domain)), "Domain already exists");
193
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the domain owner");
194
-
195
- const d_owner = disclose(owner);
196
- const domain_data = DomainData {
197
- d_owner,
198
- disclose(resolver)
199
- };
200
-
201
- domains.insert(disclose(domain), disclose(domain_data));
202
-
203
- // Track domains owned by address
204
- if (!domains_owned.member(d_owner)) {
205
- domains_owned.insert(d_owner, default<Set<Bytes<32>>>);
206
- }
207
- domains_owned.lookup(d_owner).insert(disclose(domain));
208
- }
209
-
210
- export circuit set_resolver(domain: Bytes<32>, resolver: ContractAddress): [] {
211
- assert(domains.member(disclose(domain)), "Domain does not exist");
212
-
213
- const current_data = domains.lookup(disclose(domain));
214
- assert(current_data.owner == ownPublicKey(), "Not the domain owner");
215
-
216
- const new_data = DomainData {
217
- current_data.owner,
218
- disclose(resolver)
219
- };
220
-
221
- domains.insert(disclose(domain), disclose(new_data));
222
- }
223
-
224
- export circuit update_domain_target(new_target: Either<ZswapCoinPublicKey, ContractAddress>): [] {
225
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the contract owner");
226
-
227
- DOMAIN_TARGET = disclose(new_target);
228
- }
229
-
230
- export circuit transfer_domain(domain: Bytes<32>, new_owner: ZswapCoinPublicKey): [] {
231
- assert(domains.member(disclose(domain)), "Domain does not exist");
232
-
233
- const current_data = domains.lookup(disclose(domain));
234
- assert(current_data.owner == ownPublicKey(), "Not the domain owner");
235
-
236
- const new_data = DomainData {
237
- disclose(new_owner),
238
- current_data.resolver
239
- };
240
-
241
- domains.insert(disclose(domain), disclose(new_data));
242
-
243
- // Update ownership tracking
244
- domains_owned.lookup(ownPublicKey()).remove(disclose(domain));
245
- if (!domains_owned.member(disclose(new_owner))) {
246
- domains_owned.insert(disclose(new_owner), default<Set<Bytes<32>>>);
247
- }
248
- domains_owned.lookup(disclose(new_owner)).insert(disclose(domain));
249
- }
250
-
251
-
252
- export circuit change_owner(new_owner: ZswapCoinPublicKey) : [] {
253
- assert(DOMAIN_OWNER == ownPublicKey(), "Not the contract owner");
254
- DOMAIN_OWNER = disclose(new_owner);
255
- }
256
-
257
-
258
- /*
259
- Read only, but not pure, so let's not use those
260
- export circuit resolve(domain: Bytes<32>): DomainData {
261
- assert(domains.member(disclose(domain)), "Domain does not exist");
262
- return domains.lookup(disclose(domain));
263
- }
264
-
265
- export circuit get_parent_domain(): Maybe<Bytes<32>> {
266
- return PARENT_DOMAIN;
267
- }
268
-
269
- export circuit get_contract_owner(): ZswapCoinPublicKey {
270
- return DOMAIN_OWNER;
271
- }
272
-
273
- export circuit get_domain(): Maybe<Bytes<32>> {
274
- return DOMAIN;
275
- }
276
-
277
- export circuit get_domain_target(): Either<ZswapCoinPublicKey, ContractAddress> {
278
- return DOMAIN_TARGET;
279
- }
280
-
281
- export circuit get_parent_resolver(): ContractAddress {
282
- return PARENT_RESOLVER;
283
- }
284
-
285
- export circuit addr_owns_domain(addr: ZswapCoinPublicKey, domain: Bytes<32>): Boolean {
286
- assert(domains_owned.member(disclose(addr)), "Address does not own domains in this register");
287
- return domains_owned.lookup(disclose(addr)).member(disclose(domain));
288
- }
289
-
290
- */