@cofhe/mock-contracts 0.2.0 → 0.3.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/CHANGELOG.md +26 -0
- package/README.md +63 -9
- package/contracts/MockACL.sol +4 -0
- package/contracts/MockTaskManager.sol +86 -1
- package/contracts/{MockQueryDecrypter.sol → MockThresholdNetwork.sol} +67 -1
- package/contracts/TestBed.sol +34 -2
- package/contracts/foundry/CoFheTest.sol +47 -27
- package/dist/index.d.mts +14 -11
- package/dist/index.d.ts +14 -11
- package/dist/index.js +397 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +397 -26
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/src/MockACL.ts +65 -6
- package/src/MockTaskManager.ts +187 -5
- package/src/MockThresholdNetwork.ts +457 -0
- package/src/MockZkVerifier.ts +5 -6
- package/src/TestBed.ts +35 -13
- package/src/index.ts +1 -1
- package/src/types.ts +12 -5
- package/test/TestBed.t.sol +18 -7
- package/src/MockQueryDecrypter.ts +0 -353
package/src/TestBed.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// This file is auto-generated by build-artifacts.ts
|
|
2
|
-
import { type
|
|
2
|
+
import { type MockArtifact } from './types';
|
|
3
3
|
|
|
4
4
|
export const TestBedArtifact = {
|
|
5
5
|
contractName: 'TestBed',
|
|
6
|
-
|
|
6
|
+
isFixed: true,
|
|
7
|
+
fixedAddress: '0x0000000000000000000000000000000000005003',
|
|
7
8
|
abi: [
|
|
8
9
|
{
|
|
9
10
|
type: 'function',
|
|
@@ -54,7 +55,7 @@ export const TestBedArtifact = {
|
|
|
54
55
|
outputs: [
|
|
55
56
|
{
|
|
56
57
|
name: '',
|
|
57
|
-
type: '
|
|
58
|
+
type: 'bytes32',
|
|
58
59
|
internalType: 'euint32',
|
|
59
60
|
},
|
|
60
61
|
],
|
|
@@ -79,7 +80,7 @@ export const TestBedArtifact = {
|
|
|
79
80
|
inputs: [
|
|
80
81
|
{
|
|
81
82
|
name: 'input1',
|
|
82
|
-
type: '
|
|
83
|
+
type: 'bytes32',
|
|
83
84
|
internalType: 'euint32',
|
|
84
85
|
},
|
|
85
86
|
],
|
|
@@ -98,7 +99,7 @@ export const TestBedArtifact = {
|
|
|
98
99
|
inputs: [
|
|
99
100
|
{
|
|
100
101
|
name: 'input1',
|
|
101
|
-
type: '
|
|
102
|
+
type: 'bytes32',
|
|
102
103
|
internalType: 'euint32',
|
|
103
104
|
},
|
|
104
105
|
],
|
|
@@ -165,12 +166,35 @@ export const TestBedArtifact = {
|
|
|
165
166
|
outputs: [
|
|
166
167
|
{
|
|
167
168
|
name: '',
|
|
168
|
-
type: '
|
|
169
|
-
internalType: '
|
|
169
|
+
type: 'bytes32',
|
|
170
|
+
internalType: 'bytes32',
|
|
170
171
|
},
|
|
171
172
|
],
|
|
172
173
|
stateMutability: 'view',
|
|
173
174
|
},
|
|
175
|
+
{
|
|
176
|
+
type: 'function',
|
|
177
|
+
name: 'publishDecryptResult',
|
|
178
|
+
inputs: [
|
|
179
|
+
{
|
|
180
|
+
name: 'input',
|
|
181
|
+
type: 'bytes32',
|
|
182
|
+
internalType: 'euint32',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
name: 'result',
|
|
186
|
+
type: 'uint32',
|
|
187
|
+
internalType: 'uint32',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: 'signature',
|
|
191
|
+
type: 'bytes',
|
|
192
|
+
internalType: 'bytes',
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
outputs: [],
|
|
196
|
+
stateMutability: 'nonpayable',
|
|
197
|
+
},
|
|
174
198
|
{
|
|
175
199
|
type: 'function',
|
|
176
200
|
name: 'setNumber',
|
|
@@ -212,8 +236,8 @@ export const TestBedArtifact = {
|
|
|
212
236
|
inputs: [
|
|
213
237
|
{
|
|
214
238
|
name: 'inNumber',
|
|
215
|
-
type: '
|
|
216
|
-
internalType: '
|
|
239
|
+
type: 'uint32',
|
|
240
|
+
internalType: 'uint32',
|
|
217
241
|
},
|
|
218
242
|
],
|
|
219
243
|
outputs: [],
|
|
@@ -283,7 +307,5 @@ export const TestBedArtifact = {
|
|
|
283
307
|
},
|
|
284
308
|
],
|
|
285
309
|
deployedBytecode:
|
|
286
|
-
'0x608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c806384f091db1161006f57806384f091db1461016757806384ff25c614610183578063b5872e8c1461019f578063d09de08a146101bb578063d7a0faa2146101c5578063f6bc7f3f146101e1576100b2565b806319d8a05b146100b6578063267c4ae4146100d45780633983d430146100f2578063458693c9146100fc578063647096091461012d57806367c6517414610149575b5f5ffd5b6100be610211565b6040516100cb9190610eef565b60405180910390f35b6100dc610216565b6040516100e99190610f22565b60405180910390f35b6100fa61021e565b005b61011660048036038101906101119190610f76565b61022a565b604051610124929190610fbf565b60405180910390f35b6101476004803603810190610142919061121b565b61023e565b005b610151610293565b60405161015e9190611271565b60405180910390f35b610181600480360381019061017c919061121b565b610299565b005b61019d6004803603810190610198919061121b565b6102c8565b005b6101b960048036038101906101b4919061121b565b6102f7565b005b6101c3610324565b005b6101df60048036038101906101da919061128a565b610353565b005b6101fb60048036038101906101f69190610f76565b610380565b60405161020891906112b5565b60405180910390f35b5f5481565b5f6001905090565b6102285f54610391565b565b5f5f610235836103b7565b91509150915091565b5f610248826103d5565b90505f610268610259835f54610448565b836102635f610491565b6104a3565b90506102755f5482610505565b5f819055506102845f5461054e565b61028e5f546105cd565b505050565b60015481565b6102ac5f546102a7836103d5565b61064c565b5f819055506102bb5f5461054e565b6102c55f546105cd565b50565b6102db5f546102d6836103d5565b610695565b5f819055506102ea5f5461054e565b6102f45f546105cd565b50565b610300816103d5565b5f819055505f546001819055506103175f5461054e565b6103215f546105cd565b50565b6103385f546103336001610491565b610695565b5f819055506103475f5461054e565b6103515f546105cd565b565b61035c81610491565b5f819055505f546001819055506103735f5461054e565b61037d5f546105cd565b50565b5f61038a826106de565b9050919050565b61039a816106ef565b6103aa576103a75f610491565b90505b6103b381610700565b5050565b5f5f5f5f6103c485610785565b915091508181935093505050915091565b5f5f600490508060ff16836040015160ff161461042f578260400151816040517f67cf30710000000000000000000000000000000000000000000000000000000081526004016104269291906112dd565b60405180910390fd5b61044061043b8461081b565b61085d565b915050919050565b5f610452836106ef565b6104625761045f5f610491565b92505b61046b826106ef565b61047b576104785f610491565b91505b6104896004848460136108f4565b905092915050565b5f61049c825f6109e3565b9050919050565b5f6104ad846109fd565b6104bd576104ba5f610a0e565b93505b6104c6836106ef565b6104d6576104d35f610491565b92505b6104df826106ef565b6104ef576104ec5f610491565b91505b6104fc6004858585610a20565b90509392505050565b5f61050f836106ef565b61051f5761051c5f610491565b92505b610528826106ef565b610538576105355f610491565b91505b6105466004848460076108f4565b905092915050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c82306040518363ffffffff1660e01b815260040161059d929190611343565b5f604051808303815f87803b1580156105b4575f5ffd5b505af11580156105c6573d5f5f3e3d5ffd5b5050505050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c82336040518363ffffffff1660e01b815260040161061c929190611343565b5f604051808303815f87803b158015610633575f5ffd5b505af1158015610645573d5f5f3e3d5ffd5b5050505050565b5f610656836106ef565b610666576106635f610491565b92505b61066f826106ef565b61067f5761067c5f610491565b91505b61068d60048484600f6108f4565b905092915050565b5f61069f836106ef565b6106af576106ac5f610491565b92505b6106b8826106ef565b6106c8576106c55f610491565b91505b6106d66004848460086108f4565b905092915050565b5f6106e882610b11565b9050919050565b5f6106f982610ba5565b9050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16630828982783336040518363ffffffff1660e01b8152600401610750929190611343565b5f604051808303815f87803b158015610767575f5ffd5b505af1158015610779573d5f5f3e3d5ffd5b50505050819050919050565b5f5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff1663458693c9846040518263ffffffff1660e01b81526004016107d49190611271565b6040805180830381865afa1580156107ee573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081291906113a8565b91509150915091565b610823610e82565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b81526004016108ad9291906114c4565b6020604051808303815f875af11580156108c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ed91906114f2565b9050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16631888debd86846109318888610bb1565b5f67ffffffffffffffff81111561094b5761094a610ffa565b5b6040519080825280602002602001820160405280156109795781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016109999493929190611638565b6020604051808303815f875af11580156109b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d991906114f2565b9050949350505050565b5f5f6109f184600485610c4b565b90508091505092915050565b5f610a0782610ba5565b9050919050565b5f610a19825f610d46565b9050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16631888debd866004610a5f888888610d6f565b5f67ffffffffffffffff811115610a7957610a78610ffa565b5b604051908082528060200260200182016040528015610aa75781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401610ac79493929190611638565b6020604051808303815f875af1158015610ae3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0791906114f2565b9050949350505050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff1663f6bc7f3f836040518263ffffffff1660e01b8152600401610b5f9190611271565b602060405180830381865afa158015610b7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9e91906114f2565b9050919050565b5f5f8214159050919050565b60605f600267ffffffffffffffff811115610bcf57610bce610ffa565b5b604051908082528060200260200182016040528015610bfd5781602001602082028036833780820191505090505b50905083815f81518110610c1457610c13611689565b5b6020026020010181815250508281600181518110610c3557610c34611689565b5b6020026020010181815250508091505092915050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff811115610c9957610c98610ffa565b5b604051908082528060200260200182016040528015610cc75781602001602082028036833780820191505090505b50610cde898960ff16610cd98a610e2b565b610d6f565b6040518563ffffffff1660e01b8152600401610cfd9493929190611638565b6020604051808303815f875af1158015610d19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d91906114f2565b90509392505050565b5f5f5f90508315610d5657600190505b5f610d62825f86610c4b565b9050809250505092915050565b60605f600367ffffffffffffffff811115610d8d57610d8c610ffa565b5b604051908082528060200260200182016040528015610dbb5781602001602082028036833780820191505090505b50905084815f81518110610dd257610dd1611689565b5b6020026020010181815250508381600181518110610df357610df2611689565b5b6020026020010181815250508281600281518110610e1457610e13611689565b5b602002602001018181525050809150509392505050565b5f5f8260030b1215610e7457816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401610e6b91906116d1565b60405180910390fd5b8163ffffffff169050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f819050919050565b5f819050919050565b5f610ed9610ed4610ecf84610ead565b610eb6565b610ead565b9050919050565b610ee981610ebf565b82525050565b5f602082019050610f025f830184610ee0565b92915050565b5f8115159050919050565b610f1c81610f08565b82525050565b5f602082019050610f355f830184610f13565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b610f5581610ead565b8114610f5f575f5ffd5b50565b5f81359050610f7081610f4c565b92915050565b5f60208284031215610f8b57610f8a610f44565b5b5f610f9884828501610f62565b91505092915050565b5f63ffffffff82169050919050565b610fb981610fa1565b82525050565b5f604082019050610fd25f830185610fb0565b610fdf6020830184610f13565b9392505050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61103082610fea565b810181811067ffffffffffffffff8211171561104f5761104e610ffa565b5b80604052505050565b5f611061610f3b565b905061106d8282611027565b919050565b5f5ffd5b61107f81610ead565b8114611089575f5ffd5b50565b5f8135905061109a81611076565b92915050565b5f60ff82169050919050565b6110b5816110a0565b81146110bf575f5ffd5b50565b5f813590506110d0816110ac565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156110f8576110f7610ffa565b5b61110182610fea565b9050602081019050919050565b828183375f83830152505050565b5f61112e611129846110de565b611058565b90508281526020810184848401111561114a576111496110da565b5b61115584828561110e565b509392505050565b5f82601f830112611171576111706110d6565b5b813561118184826020860161111c565b91505092915050565b5f6080828403121561119f5761119e610fe6565b5b6111a96080611058565b90505f6111b88482850161108c565b5f8301525060206111cb848285016110c2565b60208301525060406111df848285016110c2565b604083015250606082013567ffffffffffffffff81111561120357611202611072565b5b61120f8482850161115d565b60608301525092915050565b5f602082840312156112305761122f610f44565b5b5f82013567ffffffffffffffff81111561124d5761124c610f48565b5b6112598482850161118a565b91505092915050565b61126b81610ead565b82525050565b5f6020820190506112845f830184611262565b92915050565b5f6020828403121561129f5761129e610f44565b5b5f6112ac8482850161108c565b91505092915050565b5f6020820190506112c85f830184610fb0565b92915050565b6112d7816110a0565b82525050565b5f6040820190506112f05f8301856112ce565b6112fd60208301846112ce565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61132d82611304565b9050919050565b61133d81611323565b82525050565b5f6040820190506113565f830185611262565b6113636020830184611334565b9392505050565b5f8151905061137881611076565b92915050565b61138781610f08565b8114611391575f5ffd5b50565b5f815190506113a28161137e565b92915050565b5f5f604083850312156113be576113bd610f44565b5b5f6113cb8582860161136a565b92505060206113dc85828601611394565b9150509250929050565b6113ef81610ead565b82525050565b6113fe816110a0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61143682611404565b611440818561140e565b935061145081856020860161141e565b61145981610fea565b840191505092915050565b5f608083015f8301516114795f8601826113e6565b50602083015161148c60208601826113f5565b50604083015161149f60408601826113f5565b50606083015184820360608601526114b7828261142c565b9150508091505092915050565b5f6040820190508181035f8301526114dc8185611464565b90506114eb6020830184611334565b9392505050565b5f6020828403121561150757611506610f44565b5b5f6115148482850161136a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020811061155b5761155a61151d565b5b50565b5f81905061156b8261154a565b919050565b5f61157a8261155e565b9050919050565b61158a81611570565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6115c483836113e6565b60208301905092915050565b5f602082019050919050565b5f6115e682611590565b6115f0818561159a565b93506115fb836115aa565b805f5b8381101561162b57815161161288826115b9565b975061161d836115d0565b9250506001810190506115fe565b5085935050505092915050565b5f60808201905061164b5f8301876112ce565b6116586020830186611581565b818103604083015261166a81856115dc565b9050818103606083015261167e81846115dc565b905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b6116cb816116b6565b82525050565b5f6020820190506116e45f8301846116c2565b9291505056fea2646970667358221220758d6ba5fabe26207a9eeb269ab2354286adbb7560142c08897a08e8c702793f64736f6c63430008210033',
|
|
287
|
-
|
|
288
|
-
'0x6080604052348015600e575f5ffd5b506117208061001c5f395ff3fe608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c806384f091db1161006f57806384f091db1461016757806384ff25c614610183578063b5872e8c1461019f578063d09de08a146101bb578063d7a0faa2146101c5578063f6bc7f3f146101e1576100b2565b806319d8a05b146100b6578063267c4ae4146100d45780633983d430146100f2578063458693c9146100fc578063647096091461012d57806367c6517414610149575b5f5ffd5b6100be610211565b6040516100cb9190610eef565b60405180910390f35b6100dc610216565b6040516100e99190610f22565b60405180910390f35b6100fa61021e565b005b61011660048036038101906101119190610f76565b61022a565b604051610124929190610fbf565b60405180910390f35b6101476004803603810190610142919061121b565b61023e565b005b610151610293565b60405161015e9190611271565b60405180910390f35b610181600480360381019061017c919061121b565b610299565b005b61019d6004803603810190610198919061121b565b6102c8565b005b6101b960048036038101906101b4919061121b565b6102f7565b005b6101c3610324565b005b6101df60048036038101906101da919061128a565b610353565b005b6101fb60048036038101906101f69190610f76565b610380565b60405161020891906112b5565b60405180910390f35b5f5481565b5f6001905090565b6102285f54610391565b565b5f5f610235836103b7565b91509150915091565b5f610248826103d5565b90505f610268610259835f54610448565b836102635f610491565b6104a3565b90506102755f5482610505565b5f819055506102845f5461054e565b61028e5f546105cd565b505050565b60015481565b6102ac5f546102a7836103d5565b61064c565b5f819055506102bb5f5461054e565b6102c55f546105cd565b50565b6102db5f546102d6836103d5565b610695565b5f819055506102ea5f5461054e565b6102f45f546105cd565b50565b610300816103d5565b5f819055505f546001819055506103175f5461054e565b6103215f546105cd565b50565b6103385f546103336001610491565b610695565b5f819055506103475f5461054e565b6103515f546105cd565b565b61035c81610491565b5f819055505f546001819055506103735f5461054e565b61037d5f546105cd565b50565b5f61038a826106de565b9050919050565b61039a816106ef565b6103aa576103a75f610491565b90505b6103b381610700565b5050565b5f5f5f5f6103c485610785565b915091508181935093505050915091565b5f5f600490508060ff16836040015160ff161461042f578260400151816040517f67cf30710000000000000000000000000000000000000000000000000000000081526004016104269291906112dd565b60405180910390fd5b61044061043b8461081b565b61085d565b915050919050565b5f610452836106ef565b6104625761045f5f610491565b92505b61046b826106ef565b61047b576104785f610491565b91505b6104896004848460136108f4565b905092915050565b5f61049c825f6109e3565b9050919050565b5f6104ad846109fd565b6104bd576104ba5f610a0e565b93505b6104c6836106ef565b6104d6576104d35f610491565b92505b6104df826106ef565b6104ef576104ec5f610491565b91505b6104fc6004858585610a20565b90509392505050565b5f61050f836106ef565b61051f5761051c5f610491565b92505b610528826106ef565b610538576105355f610491565b91505b6105466004848460076108f4565b905092915050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c82306040518363ffffffff1660e01b815260040161059d929190611343565b5f604051808303815f87803b1580156105b4575f5ffd5b505af11580156105c6573d5f5f3e3d5ffd5b5050505050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c82336040518363ffffffff1660e01b815260040161061c929190611343565b5f604051808303815f87803b158015610633575f5ffd5b505af1158015610645573d5f5f3e3d5ffd5b5050505050565b5f610656836106ef565b610666576106635f610491565b92505b61066f826106ef565b61067f5761067c5f610491565b91505b61068d60048484600f6108f4565b905092915050565b5f61069f836106ef565b6106af576106ac5f610491565b92505b6106b8826106ef565b6106c8576106c55f610491565b91505b6106d66004848460086108f4565b905092915050565b5f6106e882610b11565b9050919050565b5f6106f982610ba5565b9050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16630828982783336040518363ffffffff1660e01b8152600401610750929190611343565b5f604051808303815f87803b158015610767575f5ffd5b505af1158015610779573d5f5f3e3d5ffd5b50505050819050919050565b5f5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff1663458693c9846040518263ffffffff1660e01b81526004016107d49190611271565b6040805180830381865afa1580156107ee573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081291906113a8565b91509150915091565b610823610e82565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b81526004016108ad9291906114c4565b6020604051808303815f875af11580156108c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ed91906114f2565b9050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16631888debd86846109318888610bb1565b5f67ffffffffffffffff81111561094b5761094a610ffa565b5b6040519080825280602002602001820160405280156109795781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016109999493929190611638565b6020604051808303815f875af11580156109b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d991906114f2565b9050949350505050565b5f5f6109f184600485610c4b565b90508091505092915050565b5f610a0782610ba5565b9050919050565b5f610a19825f610d46565b9050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16631888debd866004610a5f888888610d6f565b5f67ffffffffffffffff811115610a7957610a78610ffa565b5b604051908082528060200260200182016040528015610aa75781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401610ac79493929190611638565b6020604051808303815f875af1158015610ae3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0791906114f2565b9050949350505050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff1663f6bc7f3f836040518263ffffffff1660e01b8152600401610b5f9190611271565b602060405180830381865afa158015610b7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9e91906114f2565b9050919050565b5f5f8214159050919050565b60605f600267ffffffffffffffff811115610bcf57610bce610ffa565b5b604051908082528060200260200182016040528015610bfd5781602001602082028036833780820191505090505b50905083815f81518110610c1457610c13611689565b5b6020026020010181815250508281600181518110610c3557610c34611689565b5b6020026020010181815250508091505092915050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff811115610c9957610c98610ffa565b5b604051908082528060200260200182016040528015610cc75781602001602082028036833780820191505090505b50610cde898960ff16610cd98a610e2b565b610d6f565b6040518563ffffffff1660e01b8152600401610cfd9493929190611638565b6020604051808303815f875af1158015610d19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d91906114f2565b90509392505050565b5f5f5f90508315610d5657600190505b5f610d62825f86610c4b565b9050809250505092915050565b60605f600367ffffffffffffffff811115610d8d57610d8c610ffa565b5b604051908082528060200260200182016040528015610dbb5781602001602082028036833780820191505090505b50905084815f81518110610dd257610dd1611689565b5b6020026020010181815250508381600181518110610df357610df2611689565b5b6020026020010181815250508281600281518110610e1457610e13611689565b5b602002602001018181525050809150509392505050565b5f5f8260030b1215610e7457816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401610e6b91906116d1565b60405180910390fd5b8163ffffffff169050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f819050919050565b5f819050919050565b5f610ed9610ed4610ecf84610ead565b610eb6565b610ead565b9050919050565b610ee981610ebf565b82525050565b5f602082019050610f025f830184610ee0565b92915050565b5f8115159050919050565b610f1c81610f08565b82525050565b5f602082019050610f355f830184610f13565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b610f5581610ead565b8114610f5f575f5ffd5b50565b5f81359050610f7081610f4c565b92915050565b5f60208284031215610f8b57610f8a610f44565b5b5f610f9884828501610f62565b91505092915050565b5f63ffffffff82169050919050565b610fb981610fa1565b82525050565b5f604082019050610fd25f830185610fb0565b610fdf6020830184610f13565b9392505050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61103082610fea565b810181811067ffffffffffffffff8211171561104f5761104e610ffa565b5b80604052505050565b5f611061610f3b565b905061106d8282611027565b919050565b5f5ffd5b61107f81610ead565b8114611089575f5ffd5b50565b5f8135905061109a81611076565b92915050565b5f60ff82169050919050565b6110b5816110a0565b81146110bf575f5ffd5b50565b5f813590506110d0816110ac565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156110f8576110f7610ffa565b5b61110182610fea565b9050602081019050919050565b828183375f83830152505050565b5f61112e611129846110de565b611058565b90508281526020810184848401111561114a576111496110da565b5b61115584828561110e565b509392505050565b5f82601f830112611171576111706110d6565b5b813561118184826020860161111c565b91505092915050565b5f6080828403121561119f5761119e610fe6565b5b6111a96080611058565b90505f6111b88482850161108c565b5f8301525060206111cb848285016110c2565b60208301525060406111df848285016110c2565b604083015250606082013567ffffffffffffffff81111561120357611202611072565b5b61120f8482850161115d565b60608301525092915050565b5f602082840312156112305761122f610f44565b5b5f82013567ffffffffffffffff81111561124d5761124c610f48565b5b6112598482850161118a565b91505092915050565b61126b81610ead565b82525050565b5f6020820190506112845f830184611262565b92915050565b5f6020828403121561129f5761129e610f44565b5b5f6112ac8482850161108c565b91505092915050565b5f6020820190506112c85f830184610fb0565b92915050565b6112d7816110a0565b82525050565b5f6040820190506112f05f8301856112ce565b6112fd60208301846112ce565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61132d82611304565b9050919050565b61133d81611323565b82525050565b5f6040820190506113565f830185611262565b6113636020830184611334565b9392505050565b5f8151905061137881611076565b92915050565b61138781610f08565b8114611391575f5ffd5b50565b5f815190506113a28161137e565b92915050565b5f5f604083850312156113be576113bd610f44565b5b5f6113cb8582860161136a565b92505060206113dc85828601611394565b9150509250929050565b6113ef81610ead565b82525050565b6113fe816110a0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61143682611404565b611440818561140e565b935061145081856020860161141e565b61145981610fea565b840191505092915050565b5f608083015f8301516114795f8601826113e6565b50602083015161148c60208601826113f5565b50604083015161149f60408601826113f5565b50606083015184820360608601526114b7828261142c565b9150508091505092915050565b5f6040820190508181035f8301526114dc8185611464565b90506114eb6020830184611334565b9392505050565b5f6020828403121561150757611506610f44565b5b5f6115148482850161136a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020811061155b5761155a61151d565b5b50565b5f81905061156b8261154a565b919050565b5f61157a8261155e565b9050919050565b61158a81611570565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6115c483836113e6565b60208301905092915050565b5f602082019050919050565b5f6115e682611590565b6115f0818561159a565b93506115fb836115aa565b805f5b8381101561162b57815161161288826115b9565b975061161d836115d0565b9250506001810190506115fe565b5085935050505092915050565b5f60808201905061164b5f8301876112ce565b6116586020830186611581565b818103604083015261166a81856115dc565b9050818103606083015261167e81846115dc565b905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b6116cb816116b6565b82525050565b5f6020820190506116e45f8301846116c2565b9291505056fea2646970667358221220758d6ba5fabe26207a9eeb269ab2354286adbb7560142c08897a08e8c702793f64736f6c63430008210033',
|
|
289
|
-
} satisfies MocksArtifact;
|
|
310
|
+
'0x608060405234801561000f575f5ffd5b50600436106100cd575f3560e01c806367c651741161008a5780638562354e116100645780638562354e146101ea57806388762d8114610206578063b5872e8c14610222578063d09de08a1461023e576100cd565b806367c651741461019457806384f091db146101b257806384ff25c6146101ce576100cd565b80631292f65a146100d157806319d8a05b14610101578063260ec8891461011f578063267c4ae4146101505780633983d4301461016e5780636470960914610178575b5f5ffd5b6100eb60048036038101906100e691906110b8565b610248565b6040516100f89190611101565b60405180910390f35b610109610259565b604051610116919061113a565b60405180910390f35b610139600480360381019061013491906110b8565b61025e565b60405161014792919061116d565b60405180910390f35b610158610272565b6040516101659190611194565b60405180910390f35b61017661027a565b005b610192600480360381019061018d91906113eb565b610286565b005b61019c6102db565b6040516101a99190611441565b60405180910390f35b6101cc60048036038101906101c791906113eb565b6102e1565b005b6101e860048036038101906101e391906113eb565b610310565b005b61020460048036038101906101ff9190611484565b61033f565b005b610220600480360381019061021b91906114af565b610372565b005b61023c600480360381019061023791906113eb565b610382565b005b6102466103af565b005b5f610252826103de565b9050919050565b5f5481565b5f5f610269836103ef565b91509150915091565b5f6001905090565b6102845f5461040d565b565b5f61029082610433565b90505f6102b06102a1835f5461045b565b836102ab5f6104a4565b6104b6565b90506102bd5f5482610518565b5f819055506102cc5f54610561565b6102d65f546105e2565b505050565b60015481565b6102f45f546102ef83610433565b610663565b5f819055506103035f54610561565b61030d5f546105e2565b50565b6103235f5461031e83610433565b6106ac565b5f819055506103325f54610561565b61033c5f546105e2565b50565b61034e8163ffffffff166104a4565b5f819055505f546001819055506103655f54610561565b61036f5f546105e2565b50565b61037d8383836106f5565b505050565b61038b81610433565b5f819055505f546001819055506103a25f54610561565b6103ac5f546105e2565b50565b6103c35f546103be60016104a4565b6106ac565b5f819055506103d25f54610561565b6103dc5f546105e2565b565b5f6103e88261070b565b9050919050565b5f5f5f5f6103fc856107a1565b915091508181935093505050915091565b61041681610839565b610426576104235f6104a4565b90505b61042f8161084a565b5050565b5f610443826040015160046108d1565b61045461044f83610921565b610963565b9050919050565b5f61046583610839565b610475576104725f6104a4565b92505b61047e82610839565b61048e5761048b5f6104a4565b91505b61049c6004848460136109fc565b905092915050565b5f6104af825f610aed565b9050919050565b5f6104c084610b07565b6104d0576104cd5f610b18565b93505b6104d983610839565b6104e9576104e65f6104a4565b92505b6104f282610839565b610502576104ff5f6104a4565b91505b61050f6004858585610b2a565b90509392505050565b5f61052283610839565b6105325761052f5f6104a4565b92505b61053b82610839565b61054b576105485f6104a4565b91505b6105596004848460076109fc565b905092915050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c825f1c306040518363ffffffff1660e01b81526004016105b2929190611569565b5f604051808303815f87803b1580156105c9575f5ffd5b505af11580156105db573d5f5f3e3d5ffd5b5050505050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c825f1c336040518363ffffffff1660e01b8152600401610633929190611569565b5f604051808303815f87803b15801561064a575f5ffd5b505af115801561065c573d5f5f3e3d5ffd5b5050505050565b5f61066d83610839565b61067d5761067a5f6104a4565b92505b61068682610839565b610696576106935f6104a4565b91505b6106a460048484600f6109fc565b905092915050565b5f6106b683610839565b6106c6576106c35f6104a4565b92505b6106cf82610839565b6106df576106dc5f6104a4565b91505b6106ed6004848460086109fc565b905092915050565b610706838363ffffffff1683610c1d565b505050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff1663f6bc7f3f835f1c6040518263ffffffff1660e01b815260040161075b9190611590565b602060405180830381865afa158015610776573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079a91906115bd565b9050919050565b5f5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff1663458693c9845f1c6040518263ffffffff1660e01b81526004016107f29190611590565b6040805180830381865afa15801561080c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108309190611612565b91509150915091565b5f61084382610ca2565b9050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166308289827835f1c336040518363ffffffff1660e01b815260040161089c929190611569565b5f604051808303815f87803b1580156108b3575f5ffd5b505af11580156108c5573d5f5f3e3d5ffd5b50505050819050919050565b8060ff168260ff161461091d5781816040517f67cf307100000000000000000000000000000000000000000000000000000000815260040161091492919061165f565b60405180910390fd5b5050565b610929611049565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b81526004016109b3929190611764565b6020604051808303815f875af11580156109cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f391906115bd565b5f1b9050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16631888debd8684610a398888610cb0565b5f67ffffffffffffffff811115610a5357610a526111c1565b5b604051908082528060200260200182016040528015610a815781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401610aa194939291906118ad565b6020604051808303815f875af1158015610abd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae191906115bd565b5f1b9050949350505050565b5f5f610afb84600485610d4e565b90508091505092915050565b5f610b1182610ca2565b9050919050565b5f610b23825f610e4b565b9050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16631888debd866004610b69888888610e74565b5f67ffffffffffffffff811115610b8357610b826111c1565b5b604051908082528060200260200182016040528015610bb15781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401610bd194939291906118ad565b6020604051808303815f875af1158015610bed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1191906115bd565b5f1b9050949350505050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166318683701845f1c84846040518463ffffffff1660e01b8152600401610c7093929190611946565b5f604051808303815f87803b158015610c87575f5ffd5b505af1158015610c99573d5f5f3e3d5ffd5b50505050505050565b5f5f5f1b8214159050919050565b60605f600267ffffffffffffffff811115610cce57610ccd6111c1565b5b604051908082528060200260200182016040528015610cfc5781602001602082028036833780820191505090505b509050835f1c815f81518110610d1557610d14611982565b5b602002602001018181525050825f1c81600181518110610d3857610d37611982565b5b6020026020010181815250508091505092915050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff811115610d9c57610d9b6111c1565b5b604051908082528060200260200182016040528015610dca5781602001602082028036833780820191505090505b50610de1898960ff16610ddc8a610f36565b610f8d565b6040518563ffffffff1660e01b8152600401610e0094939291906118ad565b6020604051808303815f875af1158015610e1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4091906115bd565b5f1b90509392505050565b5f5f5f90508315610e5b57600190505b5f610e67825f86610d4e565b9050809250505092915050565b60605f600367ffffffffffffffff811115610e9257610e916111c1565b5b604051908082528060200260200182016040528015610ec05781602001602082028036833780820191505090505b509050845f1c815f81518110610ed957610ed8611982565b5b602002602001018181525050835f1c81600181518110610efc57610efb611982565b5b602002602001018181525050825f1c81600281518110610f1f57610f1e611982565b5b602002602001018181525050809150509392505050565b5f5f8260030b1215610f7f57816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401610f7691906119ca565b60405180910390fd5b8163ffffffff169050919050565b60605f600367ffffffffffffffff811115610fab57610faa6111c1565b5b604051908082528060200260200182016040528015610fd95781602001602082028036833780820191505090505b50905084815f81518110610ff057610fef611982565b5b602002602001018181525050838160018151811061101157611010611982565b5b602002602001018181525050828160028151811061103257611031611982565b5b602002602001018181525050809150509392505050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b61109781611085565b81146110a1575f5ffd5b50565b5f813590506110b28161108e565b92915050565b5f602082840312156110cd576110cc61107d565b5b5f6110da848285016110a4565b91505092915050565b5f63ffffffff82169050919050565b6110fb816110e3565b82525050565b5f6020820190506111145f8301846110f2565b92915050565b5f61112482611085565b9050919050565b6111348161111a565b82525050565b5f60208201905061114d5f83018461112b565b92915050565b5f8115159050919050565b61116781611153565b82525050565b5f6040820190506111805f8301856110f2565b61118d602083018461115e565b9392505050565b5f6020820190506111a75f83018461115e565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6111f7826111b1565b810181811067ffffffffffffffff82111715611216576112156111c1565b5b80604052505050565b5f611228611074565b905061123482826111ee565b919050565b5f5ffd5b5f819050919050565b61124f8161123d565b8114611259575f5ffd5b50565b5f8135905061126a81611246565b92915050565b5f60ff82169050919050565b61128581611270565b811461128f575f5ffd5b50565b5f813590506112a08161127c565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156112c8576112c76111c1565b5b6112d1826111b1565b9050602081019050919050565b828183375f83830152505050565b5f6112fe6112f9846112ae565b61121f565b90508281526020810184848401111561131a576113196112aa565b5b6113258482856112de565b509392505050565b5f82601f830112611341576113406112a6565b5b81356113518482602086016112ec565b91505092915050565b5f6080828403121561136f5761136e6111ad565b5b611379608061121f565b90505f6113888482850161125c565b5f83015250602061139b84828501611292565b60208301525060406113af84828501611292565b604083015250606082013567ffffffffffffffff8111156113d3576113d2611239565b5b6113df8482850161132d565b60608301525092915050565b5f60208284031215611400576113ff61107d565b5b5f82013567ffffffffffffffff81111561141d5761141c611081565b5b6114298482850161135a565b91505092915050565b61143b81611085565b82525050565b5f6020820190506114545f830184611432565b92915050565b611463816110e3565b811461146d575f5ffd5b50565b5f8135905061147e8161145a565b92915050565b5f602082840312156114995761149861107d565b5b5f6114a684828501611470565b91505092915050565b5f5f5f606084860312156114c6576114c561107d565b5b5f6114d3868287016110a4565b93505060206114e486828701611470565b925050604084013567ffffffffffffffff81111561150557611504611081565b5b6115118682870161132d565b9150509250925092565b6115248161123d565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115538261152a565b9050919050565b61156381611549565b82525050565b5f60408201905061157c5f83018561151b565b611589602083018461155a565b9392505050565b5f6020820190506115a35f83018461151b565b92915050565b5f815190506115b781611246565b92915050565b5f602082840312156115d2576115d161107d565b5b5f6115df848285016115a9565b91505092915050565b6115f181611153565b81146115fb575f5ffd5b50565b5f8151905061160c816115e8565b92915050565b5f5f604083850312156116285761162761107d565b5b5f611635858286016115a9565b9250506020611646858286016115fe565b9150509250929050565b61165981611270565b82525050565b5f6040820190506116725f830185611650565b61167f6020830184611650565b9392505050565b61168f8161123d565b82525050565b61169e81611270565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6116d6826116a4565b6116e081856116ae565b93506116f08185602086016116be565b6116f9816111b1565b840191505092915050565b5f608083015f8301516117195f860182611686565b50602083015161172c6020860182611695565b50604083015161173f6040860182611695565b506060830151848203606086015261175782826116cc565b9150508091505092915050565b5f6040820190508181035f83015261177c8185611704565b905061178b602083018461155a565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081106117d0576117cf611792565b5b50565b5f8190506117e0826117bf565b919050565b5f6117ef826117d3565b9050919050565b6117ff816117e5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6118398383611686565b60208301905092915050565b5f602082019050919050565b5f61185b82611805565b611865818561180f565b93506118708361181f565b805f5b838110156118a0578151611887888261182e565b975061189283611845565b925050600181019050611873565b5085935050505092915050565b5f6080820190506118c05f830187611650565b6118cd60208301866117f6565b81810360408301526118df8185611851565b905081810360608301526118f38184611851565b905095945050505050565b5f82825260208201905092915050565b5f611918826116a4565b61192281856118fe565b93506119328185602086016116be565b61193b816111b1565b840191505092915050565b5f6060820190506119595f83018661151b565b611966602083018561151b565b8181036040830152611978818461190e565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b6119c4816119af565b82525050565b5f6020820190506119dd5f8301846119bb565b9291505056fea2646970667358221220675beae239b364d7819668f820ab0ee5e5e31d4f00b27a9c8fa858af782f789764736f6c63430008210033',
|
|
311
|
+
} satisfies MockArtifact;
|
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
export type
|
|
1
|
+
export type MockArtifact = {
|
|
2
2
|
contractName: string;
|
|
3
|
-
fixedAddress: string;
|
|
4
3
|
abi: any;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
} & (
|
|
5
|
+
| {
|
|
6
|
+
isFixed: true;
|
|
7
|
+
fixedAddress: string;
|
|
8
|
+
deployedBytecode: string;
|
|
9
|
+
}
|
|
10
|
+
| {
|
|
11
|
+
isFixed: false;
|
|
12
|
+
bytecode: string;
|
|
13
|
+
}
|
|
14
|
+
);
|
package/test/TestBed.t.sol
CHANGED
|
@@ -4,13 +4,20 @@ pragma solidity ^0.8.13;
|
|
|
4
4
|
import { Test } from 'forge-std/Test.sol';
|
|
5
5
|
import { TestBed } from '../contracts/TestBed.sol';
|
|
6
6
|
import { CoFheTest } from '../contracts/foundry/CoFheTest.sol';
|
|
7
|
-
import { FHE, InEuint32, euint8,
|
|
7
|
+
import { FHE, InEuint32, euint8, euint128 } from '@fhenixprotocol/cofhe-contracts/FHE.sol';
|
|
8
8
|
|
|
9
|
+
/// @title TestBed Foundry Tests
|
|
10
|
+
/// @notice Foundry-native smoke tests for the CoFHE mock environment and FHE Solidity surface.
|
|
11
|
+
/// @dev This repo deploys `TestBed` inside Foundry tests as a known-good reference contract.
|
|
12
|
+
/// Downstream Foundry users are not required to use `TestBed`; they can deploy/test their own
|
|
13
|
+
/// contracts while inheriting from `CoFheTest` to get helper methods like `createInEuint32(...)`
|
|
14
|
+
/// and `assertHashValue(...)`.
|
|
9
15
|
contract TestBedTest is Test, CoFheTest {
|
|
10
16
|
TestBed private testbed;
|
|
11
17
|
|
|
12
18
|
address private user = makeAddr('user');
|
|
13
19
|
|
|
20
|
+
/// @notice Deploys a fresh TestBed instance for each test.
|
|
14
21
|
function setUp() public {
|
|
15
22
|
// optional ... enable verbose logging from fhe mocks
|
|
16
23
|
// setLog(true);
|
|
@@ -18,6 +25,7 @@ contract TestBedTest is Test, CoFheTest {
|
|
|
18
25
|
testbed = new TestBed();
|
|
19
26
|
}
|
|
20
27
|
|
|
28
|
+
/// @notice Fuzz test: create an encrypted input and set it as state.
|
|
21
29
|
function testSetNumberFuzz(uint32 n) public {
|
|
22
30
|
InEuint32 memory number = createInEuint32(n, user);
|
|
23
31
|
|
|
@@ -29,6 +37,7 @@ contract TestBedTest is Test, CoFheTest {
|
|
|
29
37
|
assertHashValue(testbed.eNumber(), n);
|
|
30
38
|
}
|
|
31
39
|
|
|
40
|
+
/// @notice Validates that mock arithmetic matches EVM uint8 wraparound behavior.
|
|
32
41
|
function testOverflow() public {
|
|
33
42
|
euint8 a = FHE.asEuint8(240);
|
|
34
43
|
euint8 b = FHE.asEuint8(240);
|
|
@@ -37,6 +46,7 @@ contract TestBedTest is Test, CoFheTest {
|
|
|
37
46
|
assertHashValue(euint8.unwrap(c), (240 + 240) % 256);
|
|
38
47
|
}
|
|
39
48
|
|
|
49
|
+
/// @notice Validates division by zero behavior in the mock implementation.
|
|
40
50
|
function testDivideByZero() public {
|
|
41
51
|
euint8 a = FHE.asEuint8(240);
|
|
42
52
|
euint8 b = FHE.asEuint8(0);
|
|
@@ -45,16 +55,17 @@ contract TestBedTest is Test, CoFheTest {
|
|
|
45
55
|
assertHashValue(euint8.unwrap(c), type(uint8).max);
|
|
46
56
|
}
|
|
47
57
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
/// @notice Validates 128-bit addition semantics used by the mock implementation.
|
|
59
|
+
function test128BitsNoOverflow() public {
|
|
60
|
+
euint128 a = FHE.asEuint128(type(uint128).max);
|
|
61
|
+
euint128 b = FHE.asEuint128(type(uint128).max);
|
|
62
|
+
euint128 c = FHE.add(a, b);
|
|
52
63
|
|
|
53
64
|
uint256 expected;
|
|
54
65
|
unchecked {
|
|
55
|
-
expected = type(
|
|
66
|
+
expected = type(uint128).max + type(uint128).max;
|
|
56
67
|
}
|
|
57
68
|
|
|
58
|
-
assertHashValue(
|
|
69
|
+
assertHashValue(euint128.unwrap(c), expected);
|
|
59
70
|
}
|
|
60
71
|
}
|