@evvm/testnet-contracts 2.1.3 → 2.2.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.
@@ -4,15 +4,15 @@
4
4
  pragma solidity ^0.8.0;
5
5
  /**
6
6
  * @title Erc191TestBuilder
7
- * @author Mate labs
7
+ * @author jistro.eth
8
8
  * @notice this library is used to build ERC191 messages for foundry test scripts
9
9
  * more info in
10
10
  * https://book.getfoundry.sh/cheatcodes/create-wallet
11
11
  * https://book.getfoundry.sh/cheatcodes/sign
12
12
  */
13
13
 
14
- import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";
15
- import {AdvancedStrings} from "./AdvancedStrings.sol";
14
+
15
+ import {AdvancedStrings} from "@evvm/testnet-contracts/library/utils/AdvancedStrings.sol";
16
16
 
17
17
  library Erc191TestBuilder {
18
18
  //-----------------------------------------------------------------------------------
@@ -30,7 +30,7 @@ library Erc191TestBuilder {
30
30
  address _executor
31
31
  ) internal pure returns (bytes32 messageHash) {
32
32
  string memory messageToSign = string.concat(
33
- Strings.toString(evvmID),
33
+ AdvancedStrings.uintToString(evvmID),
34
34
  ",",
35
35
  "pay",
36
36
  ",",
@@ -40,11 +40,11 @@ library Erc191TestBuilder {
40
40
  ",",
41
41
  AdvancedStrings.addressToString(_token),
42
42
  ",",
43
- Strings.toString(_amount),
43
+ AdvancedStrings.uintToString(_amount),
44
44
  ",",
45
- Strings.toString(_priorityFee),
45
+ AdvancedStrings.uintToString(_priorityFee),
46
46
  ",",
47
- Strings.toString(_nonce),
47
+ AdvancedStrings.uintToString(_nonce),
48
48
  ",",
49
49
  _priority_boolean ? "true" : "false",
50
50
  ",",
@@ -66,7 +66,7 @@ library Erc191TestBuilder {
66
66
  return
67
67
  buildHashForSign(
68
68
  string.concat(
69
- Strings.toString(evvmID),
69
+ AdvancedStrings.uintToString(evvmID),
70
70
  ",",
71
71
  "dispersePay",
72
72
  ",",
@@ -74,11 +74,11 @@ library Erc191TestBuilder {
74
74
  ",",
75
75
  AdvancedStrings.addressToString(_token),
76
76
  ",",
77
- Strings.toString(_amount),
77
+ AdvancedStrings.uintToString(_amount),
78
78
  ",",
79
- Strings.toString(_priorityFee),
79
+ AdvancedStrings.uintToString(_priorityFee),
80
80
  ",",
81
- Strings.toString(_nonce),
81
+ AdvancedStrings.uintToString(_nonce),
82
82
  ",",
83
83
  _priority_boolean ? "true" : "false",
84
84
  ",",
@@ -99,13 +99,13 @@ library Erc191TestBuilder {
99
99
  return
100
100
  buildHashForSign(
101
101
  string.concat(
102
- Strings.toString(evvmID),
102
+ AdvancedStrings.uintToString(evvmID),
103
103
  ",",
104
104
  "preRegistrationUsername",
105
105
  ",",
106
106
  AdvancedStrings.bytes32ToString(_hashUsername),
107
107
  ",",
108
- Strings.toString(_nameServiceNonce)
108
+ AdvancedStrings.uintToString(_nameServiceNonce)
109
109
  )
110
110
  );
111
111
  }
@@ -119,15 +119,15 @@ library Erc191TestBuilder {
119
119
  return
120
120
  buildHashForSign(
121
121
  string.concat(
122
- Strings.toString(evvmID),
122
+ AdvancedStrings.uintToString(evvmID),
123
123
  ",",
124
124
  "registrationUsername",
125
125
  ",",
126
126
  _username,
127
127
  ",",
128
- Strings.toString(_clowNumber),
128
+ AdvancedStrings.uintToString(_clowNumber),
129
129
  ",",
130
- Strings.toString(_nameServiceNonce)
130
+ AdvancedStrings.uintToString(_nameServiceNonce)
131
131
  )
132
132
  );
133
133
  }
@@ -142,17 +142,17 @@ library Erc191TestBuilder {
142
142
  return
143
143
  buildHashForSign(
144
144
  string.concat(
145
- Strings.toString(evvmID),
145
+ AdvancedStrings.uintToString(evvmID),
146
146
  ",",
147
147
  "makeOffer",
148
148
  ",",
149
149
  _username,
150
150
  ",",
151
- Strings.toString(_dateExpire),
151
+ AdvancedStrings.uintToString(_dateExpire),
152
152
  ",",
153
- Strings.toString(_amount),
153
+ AdvancedStrings.uintToString(_amount),
154
154
  ",",
155
- Strings.toString(_nameServiceNonce)
155
+ AdvancedStrings.uintToString(_nameServiceNonce)
156
156
  )
157
157
  );
158
158
  }
@@ -166,15 +166,15 @@ library Erc191TestBuilder {
166
166
  return
167
167
  buildHashForSign(
168
168
  string.concat(
169
- Strings.toString(evvmID),
169
+ AdvancedStrings.uintToString(evvmID),
170
170
  ",",
171
171
  "withdrawOffer",
172
172
  ",",
173
173
  _username,
174
174
  ",",
175
- Strings.toString(_offerId),
175
+ AdvancedStrings.uintToString(_offerId),
176
176
  ",",
177
- Strings.toString(_nameServiceNonce)
177
+ AdvancedStrings.uintToString(_nameServiceNonce)
178
178
  )
179
179
  );
180
180
  }
@@ -188,15 +188,15 @@ library Erc191TestBuilder {
188
188
  return
189
189
  buildHashForSign(
190
190
  string.concat(
191
- Strings.toString(evvmID),
191
+ AdvancedStrings.uintToString(evvmID),
192
192
  ",",
193
193
  "acceptOffer",
194
194
  ",",
195
195
  _username,
196
196
  ",",
197
- Strings.toString(_offerId),
197
+ AdvancedStrings.uintToString(_offerId),
198
198
  ",",
199
- Strings.toString(_nameServiceNonce)
199
+ AdvancedStrings.uintToString(_nameServiceNonce)
200
200
  )
201
201
  );
202
202
  }
@@ -209,13 +209,13 @@ library Erc191TestBuilder {
209
209
  return
210
210
  buildHashForSign(
211
211
  string.concat(
212
- Strings.toString(evvmID),
212
+ AdvancedStrings.uintToString(evvmID),
213
213
  ",",
214
214
  "renewUsername",
215
215
  ",",
216
216
  _username,
217
217
  ",",
218
- Strings.toString(_nameServiceNonce)
218
+ AdvancedStrings.uintToString(_nameServiceNonce)
219
219
  )
220
220
  );
221
221
  }
@@ -229,7 +229,7 @@ library Erc191TestBuilder {
229
229
  return
230
230
  buildHashForSign(
231
231
  string.concat(
232
- Strings.toString(evvmID),
232
+ AdvancedStrings.uintToString(evvmID),
233
233
  ",",
234
234
  "addCustomMetadata",
235
235
  ",",
@@ -237,7 +237,7 @@ library Erc191TestBuilder {
237
237
  ",",
238
238
  _value,
239
239
  ",",
240
- Strings.toString(_nameServiceNonce)
240
+ AdvancedStrings.uintToString(_nameServiceNonce)
241
241
  )
242
242
  );
243
243
  }
@@ -251,15 +251,15 @@ library Erc191TestBuilder {
251
251
  return
252
252
  buildHashForSign(
253
253
  string.concat(
254
- Strings.toString(evvmID),
254
+ AdvancedStrings.uintToString(evvmID),
255
255
  ",",
256
256
  "removeCustomMetadata",
257
257
  ",",
258
258
  _username,
259
259
  ",",
260
- Strings.toString(_key),
260
+ AdvancedStrings.uintToString(_key),
261
261
  ",",
262
- Strings.toString(_nonce)
262
+ AdvancedStrings.uintToString(_nonce)
263
263
  )
264
264
  );
265
265
  }
@@ -272,13 +272,13 @@ library Erc191TestBuilder {
272
272
  return
273
273
  buildHashForSign(
274
274
  string.concat(
275
- Strings.toString(evvmID),
275
+ AdvancedStrings.uintToString(evvmID),
276
276
  ",",
277
277
  "flushCustomMetadata",
278
278
  ",",
279
279
  _username,
280
280
  ",",
281
- Strings.toString(_nonce)
281
+ AdvancedStrings.uintToString(_nonce)
282
282
  )
283
283
  );
284
284
  }
@@ -291,13 +291,13 @@ library Erc191TestBuilder {
291
291
  return
292
292
  buildHashForSign(
293
293
  string.concat(
294
- Strings.toString(evvmID),
294
+ AdvancedStrings.uintToString(evvmID),
295
295
  ",",
296
296
  "flushUsername",
297
297
  ",",
298
298
  _username,
299
299
  ",",
300
- Strings.toString(_nonce)
300
+ AdvancedStrings.uintToString(_nonce)
301
301
  )
302
302
  );
303
303
  }
@@ -316,7 +316,7 @@ library Erc191TestBuilder {
316
316
  return
317
317
  buildHashForSign(
318
318
  string.concat(
319
- Strings.toString(evvmID),
319
+ AdvancedStrings.uintToString(evvmID),
320
320
  ",",
321
321
  "publicServiceStaking",
322
322
  ",",
@@ -324,9 +324,9 @@ library Erc191TestBuilder {
324
324
  ",",
325
325
  _isStaking ? "true" : "false",
326
326
  ",",
327
- Strings.toString(_amountOfStaking),
327
+ AdvancedStrings.uintToString(_amountOfStaking),
328
328
  ",",
329
- Strings.toString(_nonce)
329
+ AdvancedStrings.uintToString(_nonce)
330
330
  )
331
331
  );
332
332
  }
@@ -340,15 +340,15 @@ library Erc191TestBuilder {
340
340
  return
341
341
  buildHashForSign(
342
342
  string.concat(
343
- Strings.toString(evvmID),
343
+ AdvancedStrings.uintToString(evvmID),
344
344
  ",",
345
345
  "publicStaking",
346
346
  ",",
347
347
  _isStaking ? "true" : "false",
348
348
  ",",
349
- Strings.toString(_amountOfStaking),
349
+ AdvancedStrings.uintToString(_amountOfStaking),
350
350
  ",",
351
- Strings.toString(_nonce)
351
+ AdvancedStrings.uintToString(_nonce)
352
352
  )
353
353
  );
354
354
  }
@@ -362,15 +362,15 @@ library Erc191TestBuilder {
362
362
  return
363
363
  buildHashForSign(
364
364
  string.concat(
365
- Strings.toString(evvmID),
365
+ AdvancedStrings.uintToString(evvmID),
366
366
  ",",
367
367
  "presaleStaking",
368
368
  ",",
369
369
  _isStaking ? "true" : "false",
370
370
  ",",
371
- Strings.toString(_amountOfStaking),
371
+ AdvancedStrings.uintToString(_amountOfStaking),
372
372
  ",",
373
- Strings.toString(_nonce)
373
+ AdvancedStrings.uintToString(_nonce)
374
374
  )
375
375
  );
376
376
  }
@@ -390,19 +390,19 @@ library Erc191TestBuilder {
390
390
  return
391
391
  buildHashForSign(
392
392
  string.concat(
393
- Strings.toString(evvmID),
393
+ AdvancedStrings.uintToString(evvmID),
394
394
  ",",
395
395
  "makeOrder",
396
396
  ",",
397
- Strings.toString(_nonce),
397
+ AdvancedStrings.uintToString(_nonce),
398
398
  ",",
399
399
  AdvancedStrings.addressToString(_tokenA),
400
400
  ",",
401
401
  AdvancedStrings.addressToString(_tokenB),
402
402
  ",",
403
- Strings.toString(_amountA),
403
+ AdvancedStrings.uintToString(_amountA),
404
404
  ",",
405
- Strings.toString(_amountB)
405
+ AdvancedStrings.uintToString(_amountB)
406
406
  )
407
407
  );
408
408
  }
@@ -417,17 +417,17 @@ library Erc191TestBuilder {
417
417
  return
418
418
  buildHashForSign(
419
419
  string.concat(
420
- Strings.toString(evvmID),
420
+ AdvancedStrings.uintToString(evvmID),
421
421
  ",",
422
422
  "cancelOrder",
423
423
  ",",
424
- Strings.toString(_nonce),
424
+ AdvancedStrings.uintToString(_nonce),
425
425
  ",",
426
426
  AdvancedStrings.addressToString(_tokenA),
427
427
  ",",
428
428
  AdvancedStrings.addressToString(_tokenB),
429
429
  ",",
430
- Strings.toString(_orderId)
430
+ AdvancedStrings.uintToString(_orderId)
431
431
  )
432
432
  );
433
433
  }
@@ -442,17 +442,17 @@ library Erc191TestBuilder {
442
442
  return
443
443
  buildHashForSign(
444
444
  string.concat(
445
- Strings.toString(evvmID),
445
+ AdvancedStrings.uintToString(evvmID),
446
446
  ",",
447
447
  "dispatchOrder",
448
448
  ",",
449
- Strings.toString(_nonce),
449
+ AdvancedStrings.uintToString(_nonce),
450
450
  ",",
451
451
  AdvancedStrings.addressToString(_tokenA),
452
452
  ",",
453
453
  AdvancedStrings.addressToString(_tokenB),
454
454
  ",",
455
- Strings.toString(_orderId)
455
+ AdvancedStrings.uintToString(_orderId)
456
456
  )
457
457
  );
458
458
  }
@@ -468,7 +468,7 @@ library Erc191TestBuilder {
468
468
  keccak256(
469
469
  abi.encodePacked(
470
470
  "\x19Ethereum Signed Message:\n",
471
- Strings.toString(bytes(messageToSign).length),
471
+ AdvancedStrings.uintToString(bytes(messageToSign).length),
472
472
  messageToSign
473
473
  )
474
474
  );
@@ -0,0 +1,104 @@
1
+ // SPDX-License-Identifier: EVVM-NONCOMMERCIAL-1.0
2
+ // Full license terms available at: https://www.evvm.info/docs/EVVMNoncommercialLicense
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import {IEvvm} from "@evvm/testnet-contracts/interfaces/IEvvm.sol";
7
+ import {IStaking} from "@evvm/testnet-contracts/interfaces/IStaking.sol";
8
+ import {SignatureUtil} from "@evvm/testnet-contracts/library/utils/SignatureUtil.sol";
9
+ import {AsyncNonceService} from "@evvm/testnet-contracts/library/utils/service/AsyncNonceService.sol";
10
+
11
+ abstract contract EvvmService is AsyncNonceService {
12
+ error InvalidServiceSignature();
13
+
14
+ IEvvm evvm;
15
+ IStaking staking;
16
+
17
+ constructor(address evvmAddress, address stakingAddress) {
18
+ evvm = IEvvm(evvmAddress);
19
+ staking = IStaking(stakingAddress);
20
+ }
21
+
22
+ function validateServiceSignature(
23
+ string memory functionName,
24
+ string memory inputs,
25
+ bytes memory signature,
26
+ address expectedSigner
27
+ ) internal view virtual {
28
+ if (
29
+ !SignatureUtil.verifySignature(
30
+ evvm.getEvvmID(),
31
+ functionName,
32
+ inputs,
33
+ signature,
34
+ expectedSigner
35
+ )
36
+ ) revert InvalidServiceSignature();
37
+ }
38
+
39
+ function requestPay(
40
+ address from,
41
+ address token,
42
+ uint256 amount,
43
+ uint256 priorityFee,
44
+ uint256 nonce,
45
+ bool priorityFlag,
46
+ bytes memory signature
47
+ ) internal virtual {
48
+ evvm.pay(
49
+ from,
50
+ address(this),
51
+ "",
52
+ token,
53
+ amount,
54
+ priorityFee,
55
+ nonce,
56
+ priorityFlag,
57
+ address(this),
58
+ signature
59
+ );
60
+ }
61
+
62
+ function makeCaPay(
63
+ address to,
64
+ address token,
65
+ uint256 amount
66
+ ) internal virtual {
67
+ evvm.caPay(to, token, amount);
68
+ }
69
+
70
+ function _makeStakeService(uint256 amountToStake) internal {
71
+ staking.prepareServiceStaking(amountToStake);
72
+ evvm.caPay(
73
+ address(staking),
74
+ getPrincipalTokenAddress(),
75
+ staking.priceOfStaking() * amountToStake
76
+ );
77
+ staking.confirmServiceStaking();
78
+ }
79
+
80
+ function _makeUnstakeService(uint256 amountToUnstake) internal {
81
+ staking.serviceUnstaking(amountToUnstake);
82
+ }
83
+
84
+ function _changeEvvmAddress(address newEvvmAddress) internal {
85
+ evvm = IEvvm(newEvvmAddress);
86
+ }
87
+
88
+ function _changeStakingAddress(address newStakingAddress) internal {
89
+ staking = IStaking(newStakingAddress);
90
+ }
91
+
92
+ function getPrincipalTokenAddress()
93
+ internal
94
+ pure
95
+ virtual
96
+ returns (address)
97
+ {
98
+ return address(1);
99
+ }
100
+
101
+ function getEtherAddress() internal pure virtual returns (address) {
102
+ return address(0);
103
+ }
104
+ }