@iexec-nox/nox-protocol-contracts 0.1.0-beta.8 → 0.1.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/LICENSE +157 -201
- package/README.md +110 -33
- package/contracts/interfaces/INoxCompute.sol +9 -7
- package/contracts/interfaces/LICENSE +22 -0
- package/contracts/sdk/LICENSE +22 -0
- package/contracts/sdk/Nox.sol +412 -217
- package/contracts/shared/HandleUtils.sol +35 -0
- package/contracts/shared/LICENSE +22 -0
- package/contracts/shared/TypeUtils.sol +16 -18
- package/package.json +18 -14
package/LICENSE
CHANGED
|
@@ -1,201 +1,157 @@
|
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
incidental, or consequential damages of any character arising as a
|
|
159
|
-
result of this License or out of the use or inability to use the
|
|
160
|
-
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
-
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
-
other commercial damages or losses), even if such Contributor
|
|
163
|
-
has been advised of the possibility of such damages.
|
|
164
|
-
|
|
165
|
-
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
-
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
-
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
-
or other liability obligations and/or rights consistent with this
|
|
169
|
-
License. However, in accepting such obligations, You may act only
|
|
170
|
-
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
-
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
-
defend, and hold each Contributor harmless for any liability
|
|
173
|
-
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
-
of your accepting any such warranty or additional liability.
|
|
175
|
-
|
|
176
|
-
END OF TERMS AND CONDITIONS
|
|
177
|
-
|
|
178
|
-
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
-
|
|
180
|
-
To apply the Apache License to your work, attach the following
|
|
181
|
-
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
-
replaced with your own identifying information. (Don't include
|
|
183
|
-
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
-
comment syntax for the file format. We also recommend that a
|
|
185
|
-
file or class name and description of purpose be included on the
|
|
186
|
-
same "printed page" as the copyright notice for easier
|
|
187
|
-
identification within third-party archives.
|
|
188
|
-
|
|
189
|
-
Copyright [yyyy] [name of copyright owner]
|
|
190
|
-
|
|
191
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
-
you may not use this file except in compliance with the License.
|
|
193
|
-
You may obtain a copy of the License at
|
|
194
|
-
|
|
195
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
-
|
|
197
|
-
Unless required by applicable law or agreed to in writing, software
|
|
198
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
-
See the License for the specific language governing permissions and
|
|
201
|
-
limitations under the License.
|
|
1
|
+
Business Source License 1.1
|
|
2
|
+
|
|
3
|
+
Parameters
|
|
4
|
+
|
|
5
|
+
Licensor:
|
|
6
|
+
iExec.
|
|
7
|
+
|
|
8
|
+
Licensed Work:
|
|
9
|
+
Nox smart contracts and off-chain components as made publicly available
|
|
10
|
+
by the Licensor in the relevant repository.
|
|
11
|
+
The Licensed Work is (c) 2026 iExec.
|
|
12
|
+
|
|
13
|
+
Additional Use Grant
|
|
14
|
+
--------------------
|
|
15
|
+
|
|
16
|
+
None.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
Additional Disclaimer
|
|
20
|
+
---------------------
|
|
21
|
+
|
|
22
|
+
Use of the Licensed Work is also subject to the disclaimer of warranties,
|
|
23
|
+
regulatory compliance and smart contract risks described in the
|
|
24
|
+
DISCLAIMER file distributed with the Licensed Work.
|
|
25
|
+
|
|
26
|
+
Such disclaimer shall apply independently of the applicable software license
|
|
27
|
+
and shall survive the Change Date, to the extent that its provisions are
|
|
28
|
+
compatible with and do not restrict the rights granted under the MIT License.
|
|
29
|
+
|
|
30
|
+
Change Date
|
|
31
|
+
-----------
|
|
32
|
+
|
|
33
|
+
The Change Date shall be determined separately for each Release
|
|
34
|
+
of the Licensed Work.
|
|
35
|
+
|
|
36
|
+
For the purposes of this License, a “Release” means any version
|
|
37
|
+
of the Licensed Work that is:
|
|
38
|
+
|
|
39
|
+
(i) assigned a version number or identifier;
|
|
40
|
+
(ii) tagged or otherwise identified in the Licensor’s official
|
|
41
|
+
source code repository; and
|
|
42
|
+
(iii) made publicly available by the Licensor.
|
|
43
|
+
|
|
44
|
+
Each Release of the Licensed Work shall automatically be
|
|
45
|
+
licensed under the Change License four (4) years after the date
|
|
46
|
+
of its first public availability.
|
|
47
|
+
|
|
48
|
+
The Change License shall apply only to the specific Release
|
|
49
|
+
for which the Change Date has occurred and shall not apply to:
|
|
50
|
+
|
|
51
|
+
- subsequent versions of the Licensed Work;
|
|
52
|
+
- updates, patches, or modifications released after such Release;
|
|
53
|
+
- any other versions not yet reaching their respective Change Date.
|
|
54
|
+
|
|
55
|
+
This License applies separately to each Release of the Licensed Work.
|
|
56
|
+
Each Release shall have its own Change Date, which shall be determined
|
|
57
|
+
independently based on its date of first public availability.
|
|
58
|
+
|
|
59
|
+
For the avoidance of doubt, the conversion of a given Release
|
|
60
|
+
to the Change License shall not result in the conversion of
|
|
61
|
+
the entire Licensed Work or of all versions of the Licensed Work.
|
|
62
|
+
|
|
63
|
+
Change License
|
|
64
|
+
--------------
|
|
65
|
+
|
|
66
|
+
MIT License
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
Alternative Licensing
|
|
70
|
+
---------------------
|
|
71
|
+
|
|
72
|
+
For information about alternative licensing arrangements for the Software,
|
|
73
|
+
please visit:
|
|
74
|
+
|
|
75
|
+
https://www.iex.ec/
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
Notice
|
|
79
|
+
------
|
|
80
|
+
|
|
81
|
+
The Business Source License (this document, or the "License") is not an
|
|
82
|
+
Open Source license. However, the Licensed Work will eventually be made
|
|
83
|
+
available under an Open Source License, as stated in this License.
|
|
84
|
+
|
|
85
|
+
License text copyright (c) 2017 MariaDB Corporation Ab. All rights reserved.
|
|
86
|
+
"Business Source License" is a trademark of MariaDB Corporation Ab.
|
|
87
|
+
|
|
88
|
+
-----------------------------------------------------------------------------
|
|
89
|
+
|
|
90
|
+
Business Source License 1.1
|
|
91
|
+
|
|
92
|
+
Terms
|
|
93
|
+
|
|
94
|
+
The Licensor hereby grants you the right to copy, modify, create derivative
|
|
95
|
+
works, redistribute, and make non-production use of the Licensed Work. The
|
|
96
|
+
Licensor may make an Additional Use Grant, above, permitting limited
|
|
97
|
+
production use.
|
|
98
|
+
|
|
99
|
+
Effective on the Change Date, or the fourth anniversary of the first publicly
|
|
100
|
+
available distribution of a specific version of the Licensed Work under this
|
|
101
|
+
License, whichever comes first, the Licensor hereby grants you rights under
|
|
102
|
+
the terms of the Change License, and the rights granted in the paragraph
|
|
103
|
+
above terminate.
|
|
104
|
+
|
|
105
|
+
If your use of the Licensed Work does not comply with the requirements
|
|
106
|
+
currently in effect as described in this License, you must purchase a
|
|
107
|
+
commercial license from the Licensor, its affiliated entities, or authorized
|
|
108
|
+
resellers, or you must refrain from using the Licensed Work.
|
|
109
|
+
|
|
110
|
+
All copies of the original and modified Licensed Work, and derivative works
|
|
111
|
+
of the Licensed Work, are subject to this License. This License applies
|
|
112
|
+
separately for each version of the Licensed Work and the Change Date may vary
|
|
113
|
+
for each version of the Licensed Work released by Licensor.
|
|
114
|
+
|
|
115
|
+
You must conspicuously display this License on each original or modified copy
|
|
116
|
+
of the Licensed Work. If you receive the Licensed Work in original or
|
|
117
|
+
modified form from a third party, the terms and conditions set forth in this
|
|
118
|
+
License apply to your use of that work.
|
|
119
|
+
|
|
120
|
+
Any use of the Licensed Work in violation of this License will automatically
|
|
121
|
+
terminate your rights under this License for the current and all other
|
|
122
|
+
versions of the Licensed Work.
|
|
123
|
+
|
|
124
|
+
This License does not grant you any right in any trademark or logo of
|
|
125
|
+
Licensor or its affiliates (provided that you may use a trademark or logo of
|
|
126
|
+
Licensor as expressly required by this License).
|
|
127
|
+
|
|
128
|
+
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
|
|
129
|
+
AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
|
|
130
|
+
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
|
|
131
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
|
|
132
|
+
TITLE.
|
|
133
|
+
|
|
134
|
+
MariaDB hereby grants you permission to use this License’s text to license
|
|
135
|
+
your works, and to refer to it using the trademark “Business Source License”,
|
|
136
|
+
as long as you comply with the Covenants of Licensor below.
|
|
137
|
+
|
|
138
|
+
Covenants of Licensor
|
|
139
|
+
|
|
140
|
+
In consideration of the right to use this License’s text and the “Business
|
|
141
|
+
Source License” name and trademark, Licensor covenants to MariaDB, and to all
|
|
142
|
+
other recipients of the licensed work to be provided by Licensor:
|
|
143
|
+
|
|
144
|
+
1. To specify as the Change License the GPL Version 2.0 or any later version,
|
|
145
|
+
or a license that is compatible with GPL Version 2.0 or a later version,
|
|
146
|
+
where “compatible” means that software provided under the Change License can
|
|
147
|
+
be included in a program with software provided under GPL Version 2.0 or a
|
|
148
|
+
later version. Licensor may specify additional Change Licenses without
|
|
149
|
+
limitation.
|
|
150
|
+
|
|
151
|
+
2. To either: (a) specify an additional grant of rights to use that does not
|
|
152
|
+
impose any additional restriction on the right granted in this License, as
|
|
153
|
+
the Additional Use Grant; or (b) insert the text “None”.
|
|
154
|
+
|
|
155
|
+
3. To specify a Change Date.
|
|
156
|
+
|
|
157
|
+
4. Not to modify this License in any other way.
|
package/README.md
CHANGED
|
@@ -1,63 +1,100 @@
|
|
|
1
|
-
# Nox
|
|
1
|
+
# Nox · nox-protocol-contracts
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](./LICENSE)
|
|
4
|
+
[](https://docs.iex.ec)
|
|
5
|
+
[](https://discord.com/invite/5TewNUnJHN)
|
|
6
|
+
[](https://github.com/iExec-Nox/nox-protocol-contracts/releases)
|
|
7
|
+
[](https://www.npmjs.com/package/@iexec-nox/nox-protocol-contracts)
|
|
8
|
+
[](https://codecov.io/gh/iExec-Nox/nox-protocol-contracts)
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
> Solidity contracts for the Nox protocol: manage encrypted handles, validate proofs, and trigger confidential computations.
|
|
6
11
|
|
|
7
|
-
|
|
8
|
-
- `Nox` SDK library: convenience wrapper for app contracts that call `NoxCompute`.
|
|
12
|
+
## Table of Contents
|
|
9
13
|
|
|
10
|
-
|
|
14
|
+
- [Nox · nox-protocol-contracts](#nox--nox-protocol-contracts)
|
|
15
|
+
- [Table of Contents](#table-of-contents)
|
|
16
|
+
- [Overview](#overview)
|
|
17
|
+
- [Prerequisites](#prerequisites)
|
|
18
|
+
- [Getting Started](#getting-started)
|
|
19
|
+
- [Environment Variables](#environment-variables)
|
|
20
|
+
- [Testing](#testing)
|
|
21
|
+
- [Deployment](#deployment)
|
|
22
|
+
- [Verification](#verification)
|
|
23
|
+
- [Configuration notes](#configuration-notes)
|
|
24
|
+
- [Related Repositories](#related-repositories)
|
|
25
|
+
- [Contributing](#contributing)
|
|
26
|
+
- [Code style](#code-style)
|
|
27
|
+
- [License](#license)
|
|
11
28
|
|
|
12
|
-
|
|
13
|
-
- `pnpm` (see `packageManager` in `package.json`)
|
|
29
|
+
## Overview
|
|
14
30
|
|
|
15
|
-
|
|
31
|
+
**nox-protocol-contracts** is the Solidity layer of the Nox protocol. It provides:
|
|
32
|
+
|
|
33
|
+
- **NoxCompute**: the main UUPS-upgradeable contract that manages the Access Control List (ACL) for encrypted handles, validates handle proofs issued by a trusted gateway, facilitates plaintext-to-encrypted conversions, and triggers off-chain TEE computations through event emissions.
|
|
34
|
+
- **INoxCompute**: the public interface consumed by application contracts and off-chain services.
|
|
35
|
+
- **Nox SDK library** (`contracts/sdk/Nox.sol`): a convenience wrapper that resolves the NoxCompute proxy address per chain and exposes typed helper functions for application contracts.
|
|
36
|
+
|
|
37
|
+
## Prerequisites
|
|
38
|
+
|
|
39
|
+
- Node.js >= 24 (see `.nvmrc`)
|
|
40
|
+
- pnpm >= 10 (see `packageManager` in `package.json`)
|
|
41
|
+
- Hardhat >= 3
|
|
42
|
+
|
|
43
|
+
## Getting Started
|
|
16
44
|
|
|
17
45
|
```bash
|
|
46
|
+
git clone https://github.com/iExec-Nox/nox-protocol-contracts.git
|
|
47
|
+
cd nox-protocol-contracts
|
|
48
|
+
|
|
49
|
+
# Use the correct Node version
|
|
18
50
|
nvm install && nvm use
|
|
19
|
-
pnpm install
|
|
20
|
-
```
|
|
21
51
|
|
|
22
|
-
|
|
52
|
+
# Install dependencies
|
|
53
|
+
pnpm install
|
|
23
54
|
|
|
24
|
-
|
|
55
|
+
# Build contracts
|
|
25
56
|
pnpm run build
|
|
26
57
|
```
|
|
27
58
|
|
|
28
|
-
##
|
|
59
|
+
## Environment Variables
|
|
29
60
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
61
|
+
| Variable | Description | Required | Default |
|
|
62
|
+
| ------------------- | ---------------------------------------------- | ----------------- | ------- |
|
|
63
|
+
| `RPC_URL` | JSON-RPC endpoint for the target network | For remote deploy | - |
|
|
64
|
+
| `PRIVATE_KEY` | Deployer private key | For remote deploy | - |
|
|
65
|
+
| `ETHERSCAN_API_KEY` | API key for contract verification on Etherscan | For verification | - |
|
|
33
66
|
|
|
34
|
-
##
|
|
67
|
+
## Testing
|
|
35
68
|
|
|
36
69
|
```bash
|
|
37
|
-
|
|
38
|
-
|
|
70
|
+
# Run all tests (unit + integration)
|
|
71
|
+
pnpm run test
|
|
39
72
|
|
|
40
|
-
|
|
73
|
+
# Run tests with gas stats
|
|
74
|
+
pnpm run test:gas
|
|
41
75
|
|
|
42
|
-
|
|
43
|
-
pnpm run
|
|
44
|
-
pnpm run format:check
|
|
76
|
+
# Run coverage
|
|
77
|
+
pnpm run coverage
|
|
45
78
|
```
|
|
46
79
|
|
|
47
80
|
## Deployment
|
|
48
81
|
|
|
49
|
-
The default network is a local EDR simulation. For external networks,
|
|
50
|
-
|
|
51
|
-
- `RPC_URL`
|
|
52
|
-
- `PRIVATE_KEY`
|
|
82
|
+
The default network is a local EDR simulation. For external networks, set `RPC_URL` and `PRIVATE_KEY`:
|
|
53
83
|
|
|
54
84
|
```bash
|
|
85
|
+
# Local deploy
|
|
55
86
|
pnpm run deploy
|
|
87
|
+
|
|
88
|
+
# Production deploy (optimizer + viaIR)
|
|
89
|
+
pnpm run deploy:production
|
|
90
|
+
|
|
91
|
+
# Upgrade an existing proxy
|
|
92
|
+
pnpm run upgrade
|
|
56
93
|
```
|
|
57
94
|
|
|
58
|
-
##
|
|
95
|
+
## Verification
|
|
59
96
|
|
|
60
|
-
Verify deployed contracts on Etherscan. Requires `ETHERSCAN_API_KEY
|
|
97
|
+
Verify deployed contracts on Etherscan. Requires `ETHERSCAN_API_KEY`:
|
|
61
98
|
|
|
62
99
|
```bash
|
|
63
100
|
pnpm run verify arbitrumSepolia --network arbitrumSepolia
|
|
@@ -65,6 +102,46 @@ pnpm run verify arbitrumSepolia --network arbitrumSepolia
|
|
|
65
102
|
|
|
66
103
|
## Configuration notes
|
|
67
104
|
|
|
68
|
-
-
|
|
69
|
-
- Default owner addresses and KMS public keys per network are also defined in [config/config.ts](config/config.ts).
|
|
70
|
-
- The SDK constants in [contracts/sdk/Nox.sol](contracts/sdk/Nox.sol) must match the deployed proxy addresses.
|
|
105
|
+
- CREATE2 salt is defined in [`config/config.ts`](config/config.ts).
|
|
106
|
+
- Default owner addresses and KMS public keys per network are also defined in [`config/config.ts`](config/config.ts).
|
|
107
|
+
- The SDK constants in [`contracts/sdk/Nox.sol`](contracts/sdk/Nox.sol) must match the deployed proxy addresses.
|
|
108
|
+
- OpenZeppelin manifest files in `.openzeppelin/` track proxy deployments.
|
|
109
|
+
|
|
110
|
+
## Related Repositories
|
|
111
|
+
|
|
112
|
+
| Repository | Description |
|
|
113
|
+
| ------------------------------------------------------------------------------- | --------------------------------------------------- |
|
|
114
|
+
| [nox-handle-sdk](https://github.com/iExec-Nox/nox-handle-sdk) | TypeScript SDK for handle encryption/decryption |
|
|
115
|
+
| [nox-offchain-deployment](https://github.com/iExec-Nox/nox-offchain-deployment) | Off-chain services (gateway, KMS, runner, ingestor) |
|
|
116
|
+
|
|
117
|
+
## Contributing
|
|
118
|
+
|
|
119
|
+
Contributions are welcome. Please open an issue first to discuss your proposed changes.
|
|
120
|
+
|
|
121
|
+
1. Fork the repository
|
|
122
|
+
2. Create your feature branch (`git checkout -b feature/my-feature`)
|
|
123
|
+
3. Commit your changes
|
|
124
|
+
4. Push to the branch (`git push origin feature/my-feature`)
|
|
125
|
+
5. Open a Pull Request
|
|
126
|
+
|
|
127
|
+
### Code style
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Format all files
|
|
131
|
+
pnpm run format
|
|
132
|
+
|
|
133
|
+
# Check formatting
|
|
134
|
+
pnpm run format:check
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## License
|
|
138
|
+
|
|
139
|
+
The Nox Protocol source code is released under the [Business Source License 1.1 (BUSL-1.1)](./LICENSE).
|
|
140
|
+
|
|
141
|
+
The license will automatically convert to the MIT License under the conditions described in the LICENSE file.
|
|
142
|
+
|
|
143
|
+
The full text of the MIT License is provided in the [LICENSE-MIT](./LICENSE-MIT) file.
|
|
144
|
+
|
|
145
|
+
Some files are dual-licensed under MIT:
|
|
146
|
+
|
|
147
|
+
- All files in `contracts/interfaces/`, `contracts/shared/`, `contracts/sdk/` may also be licensed under MIT (as indicated in their SPDX headers).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// SPDX-License-Identifier:
|
|
2
|
-
pragma solidity ^0.8.
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.27;
|
|
3
3
|
|
|
4
4
|
import {TEEType} from "../shared/TypeUtils.sol";
|
|
5
5
|
|
|
@@ -22,6 +22,8 @@ interface INoxCompute {
|
|
|
22
22
|
error NotPubliclyDecryptable(bytes32 handle);
|
|
23
23
|
/// Error thrown when attempting an ACL mutation on a public handle
|
|
24
24
|
error PublicHandleACLForbidden();
|
|
25
|
+
/// Error thrown when an operand is bytes32(0), indicating an undefined handle
|
|
26
|
+
error UndefinedHandle();
|
|
25
27
|
|
|
26
28
|
/// Emitted when admin role is granted
|
|
27
29
|
event Allowed(address indexed sender, address indexed account, bytes32 indexed handle);
|
|
@@ -307,14 +309,14 @@ interface INoxCompute {
|
|
|
307
309
|
* Validates the decryption proof issued by the gateway for a given handle.
|
|
308
310
|
* The proof must be signed by the configured gateway.
|
|
309
311
|
*
|
|
310
|
-
* The proof uses a compact serialization: `signature (65 bytes) || decryptedResult (N
|
|
312
|
+
* The proof uses a compact serialization: `signature (65 bytes) || decryptedResult (N bytes)`.
|
|
311
313
|
* The signature is placed first (fixed size) so that `decryptedResult` can be variable-length,
|
|
312
|
-
* supporting all current
|
|
313
|
-
* 32 bytes (e.g. encrypted strings).
|
|
314
|
+
* supporting all current and future types that may exceed 32 bytes (e.g. encrypted strings).
|
|
314
315
|
*
|
|
315
316
|
* @param handle Handle to decrypt
|
|
316
|
-
* @param decryptionProof Compact proof: `signature (65 bytes) || decryptedResult (N
|
|
317
|
-
* @return decryptedResult The decrypted value
|
|
317
|
+
* @param decryptionProof Compact proof: `signature (65 bytes) || decryptedResult (N bytes)`
|
|
318
|
+
* @return decryptedResult The decrypted value extracted from the proof if the proof is valid,
|
|
319
|
+
* or reverts otherwise
|
|
318
320
|
*/
|
|
319
321
|
function validateDecryptionProof(
|
|
320
322
|
bytes32 handle,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
-----------
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 iExec
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in
|
|
14
|
+
all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
22
|
+
IN THE SOFTWARE.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
-----------
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 iExec
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in
|
|
14
|
+
all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
22
|
+
IN THE SOFTWARE.
|