@evvm/testnet-contracts 2.2.3 → 3.0.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.
Files changed (71) hide show
  1. package/LICENSE +145 -118
  2. package/README.md +162 -39
  3. package/contracts/core/Core.sol +1394 -0
  4. package/contracts/core/lib/CoreStorage.sol +171 -0
  5. package/contracts/nameService/NameService.sol +666 -586
  6. package/contracts/nameService/lib/IdentityValidation.sol +18 -3
  7. package/contracts/p2pSwap/P2PSwap.sol +439 -285
  8. package/contracts/staking/Estimator.sol +128 -40
  9. package/contracts/staking/Staking.sol +329 -322
  10. package/contracts/treasury/Treasury.sol +48 -37
  11. package/contracts/treasuryTwoChains/TreasuryExternalChainStation.sol +585 -198
  12. package/contracts/treasuryTwoChains/TreasuryHostChainStation.sol +425 -174
  13. package/contracts/treasuryTwoChains/lib/PayloadUtils.sol +2 -4
  14. package/interfaces/{IEvvm.sol → ICore.sol} +67 -29
  15. package/interfaces/IEstimator.sol +1 -1
  16. package/interfaces/INameService.sol +58 -52
  17. package/interfaces/IP2PSwap.sol +18 -17
  18. package/interfaces/IStaking.sol +22 -17
  19. package/interfaces/ITreasury.sol +2 -1
  20. package/interfaces/ITreasuryExternalChainStation.sol +15 -9
  21. package/interfaces/ITreasuryHostChainStation.sol +14 -11
  22. package/interfaces/IUserValidator.sol +6 -0
  23. package/library/Erc191TestBuilder.sol +350 -297
  24. package/library/EvvmService.sol +38 -27
  25. package/library/errors/CoreError.sol +116 -0
  26. package/library/errors/CrossChainTreasuryError.sol +36 -0
  27. package/library/errors/NameServiceError.sol +79 -0
  28. package/library/errors/StakingError.sol +79 -0
  29. package/library/errors/TreasuryError.sol +33 -0
  30. package/library/primitives/SignatureRecover.sol +33 -0
  31. package/library/structs/CoreStructs.sol +146 -0
  32. package/library/structs/ExternalChainStationStructs.sol +92 -0
  33. package/library/structs/HostChainStationStructs.sol +77 -0
  34. package/library/structs/NameServiceStructs.sol +47 -0
  35. package/library/structs/P2PSwapStructs.sol +127 -0
  36. package/library/structs/StakingStructs.sol +67 -0
  37. package/library/utils/AdvancedStrings.sol +84 -5
  38. package/library/utils/CAUtils.sol +29 -0
  39. package/library/utils/SignatureUtil.sol +34 -0
  40. package/library/utils/governance/Admin.sol +66 -0
  41. package/library/utils/governance/ProposalStructs.sol +49 -0
  42. package/library/utils/service/CoreExecution.sol +177 -0
  43. package/library/utils/service/StakingServiceUtils.sol +30 -3
  44. package/library/utils/signature/CoreHashUtils.sol +73 -0
  45. package/library/utils/signature/NameServiceHashUtils.sol +156 -0
  46. package/library/utils/signature/P2PSwapHashUtils.sol +65 -0
  47. package/library/utils/signature/StakingHashUtils.sol +41 -0
  48. package/library/utils/signature/TreasuryCrossChainHashUtils.sol +40 -0
  49. package/package.json +2 -1
  50. package/contracts/evvm/Evvm.sol +0 -1327
  51. package/contracts/evvm/lib/ErrorsLib.sol +0 -18
  52. package/contracts/evvm/lib/EvvmStorage.sol +0 -62
  53. package/contracts/evvm/lib/EvvmStructs.sol +0 -90
  54. package/contracts/evvm/lib/SignatureUtils.sol +0 -120
  55. package/contracts/nameService/lib/ErrorsLib.sol +0 -21
  56. package/contracts/nameService/lib/NameServiceStructs.sol +0 -69
  57. package/contracts/nameService/lib/SignatureUtils.sol +0 -245
  58. package/contracts/p2pSwap/lib/P2PSwapStructs.sol +0 -59
  59. package/contracts/p2pSwap/lib/SignatureUtils.sol +0 -98
  60. package/contracts/staking/lib/ErrorsLib.sol +0 -22
  61. package/contracts/staking/lib/SignatureUtils.sol +0 -39
  62. package/contracts/staking/lib/StakingStructs.sol +0 -94
  63. package/contracts/treasury/lib/ErrorsLib.sol +0 -11
  64. package/contracts/treasuryTwoChains/lib/ErrorsLib.sol +0 -48
  65. package/contracts/treasuryTwoChains/lib/ExternalChainStationStructs.sol +0 -80
  66. package/contracts/treasuryTwoChains/lib/HostChainStationStructs.sol +0 -87
  67. package/contracts/treasuryTwoChains/lib/SignatureUtils.sol +0 -79
  68. package/library/utils/GovernanceUtils.sol +0 -81
  69. package/library/utils/nonces/AsyncNonce.sol +0 -32
  70. package/library/utils/nonces/SyncNonce.sol +0 -27
  71. package/library/utils/service/EvvmPayments.sol +0 -79
@@ -3,12 +3,6 @@
3
3
  pragma solidity ^0.8.0;
4
4
 
5
5
  library ExternalChainStationStructs {
6
- struct AddressTypeProposal {
7
- address current;
8
- address proposal;
9
- uint256 timeToAccept;
10
- }
11
-
12
6
  struct AxelarConfig {
13
7
  string hostChainStationChainName;
14
8
  string hostChainStationAddress;
@@ -35,6 +29,14 @@ library ExternalChainStationStructs {
35
29
  }
36
30
  }
37
31
 
32
+ library ProposalStructs {
33
+ struct AddressTypeProposal {
34
+ address current;
35
+ address proposal;
36
+ uint256 timeToAccept;
37
+ }
38
+ }
39
+
38
40
  interface ITreasuryExternalChainStation {
39
41
  struct EnforcedOptionParam {
40
42
  uint32 eid;
@@ -50,6 +52,7 @@ interface ITreasuryExternalChainStation {
50
52
 
51
53
  error AddressEmptyCode(address target);
52
54
  error AddressInsufficientBalance(address account);
55
+ error AsyncNonceAlreadyUsed();
53
56
  error ChainIdNotAuthorized();
54
57
  error FailedInnerCall();
55
58
  error InsufficientBalance();
@@ -106,6 +109,7 @@ interface ITreasuryExternalChainStation {
106
109
  address tokenAddress,
107
110
  uint256 priorityFee,
108
111
  uint256 amount,
112
+ uint256 nonce,
109
113
  bytes memory signature
110
114
  ) external;
111
115
  function fisherBridgeSendCoin(
@@ -113,6 +117,7 @@ interface ITreasuryExternalChainStation {
113
117
  address addressToReceive,
114
118
  uint256 priorityFee,
115
119
  uint256 amount,
120
+ uint256 nonce,
116
121
  bytes memory signature
117
122
  ) external payable;
118
123
  function fisherBridgeSendERC20(
@@ -121,15 +126,16 @@ interface ITreasuryExternalChainStation {
121
126
  address tokenAddress,
122
127
  uint256 priorityFee,
123
128
  uint256 amount,
129
+ uint256 nonce,
124
130
  bytes memory signature
125
131
  ) external;
126
132
  function gateway() external view returns (address);
127
- function getAdmin() external view returns (ExternalChainStationStructs.AddressTypeProposal memory);
133
+ function getAdmin() external view returns (ProposalStructs.AddressTypeProposal memory);
128
134
  function getAxelarConfig() external view returns (ExternalChainStationStructs.AxelarConfig memory);
129
- function getFisherExecutor() external view returns (ExternalChainStationStructs.AddressTypeProposal memory);
135
+ function getFisherExecutor() external view returns (ProposalStructs.AddressTypeProposal memory);
130
136
  function getHyperlaneConfig() external view returns (ExternalChainStationStructs.HyperlaneConfig memory);
137
+ function getIfUsedAsyncNonce(address user, uint256 nonce) external view returns (bool);
131
138
  function getLayerZeroConfig() external view returns (ExternalChainStationStructs.LayerZeroConfig memory);
132
- function getNextFisherExecutionNonce(address user) external view returns (uint256);
133
139
  function getOptions() external view returns (bytes memory);
134
140
  function getQuoteHyperlane(address toAddress, address token, uint256 amount) external view returns (uint256);
135
141
  function handle(uint32 _origin, bytes32 _sender, bytes memory _data) external payable;
@@ -3,12 +3,6 @@
3
3
  pragma solidity ^0.8.0;
4
4
 
5
5
  library HostChainStationStructs {
6
- struct AddressTypeProposal {
7
- address current;
8
- address proposal;
9
- uint256 timeToAccept;
10
- }
11
-
12
6
  struct AxelarConfig {
13
7
  string externalChainStationChainName;
14
8
  string externalChainStationAddress;
@@ -35,6 +29,14 @@ library HostChainStationStructs {
35
29
  }
36
30
  }
37
31
 
32
+ library ProposalStructs {
33
+ struct AddressTypeProposal {
34
+ address current;
35
+ address proposal;
36
+ uint256 timeToAccept;
37
+ }
38
+ }
39
+
38
40
  interface ITreasuryHostChainStation {
39
41
  struct EnforcedOptionParam {
40
42
  uint32 eid;
@@ -58,7 +60,6 @@ interface ITreasuryHostChainStation {
58
60
  error InvalidEndpointCall();
59
61
  error InvalidOptionType(uint16 optionType);
60
62
  error InvalidOptions(bytes options);
61
- error InvalidSignature();
62
63
  error LzTokenUnavailable();
63
64
  error MailboxNotAuthorized();
64
65
  error NoPeer(uint32 eid);
@@ -107,6 +108,7 @@ interface ITreasuryHostChainStation {
107
108
  address tokenAddress,
108
109
  uint256 priorityFee,
109
110
  uint256 amount,
111
+ uint256 nonce,
110
112
  bytes memory signature
111
113
  ) external;
112
114
  function fisherBridgeSend(
@@ -115,16 +117,17 @@ interface ITreasuryHostChainStation {
115
117
  address tokenAddress,
116
118
  uint256 priorityFee,
117
119
  uint256 amount,
120
+ uint256 nonce,
118
121
  bytes memory signature
119
122
  ) external;
120
123
  function gateway() external view returns (address);
121
- function getAdmin() external view returns (HostChainStationStructs.AddressTypeProposal memory);
124
+ function getAdmin() external view returns (ProposalStructs.AddressTypeProposal memory);
122
125
  function getAxelarConfig() external view returns (HostChainStationStructs.AxelarConfig memory);
123
- function getEvvmAddress() external view returns (address);
124
- function getFisherExecutor() external view returns (HostChainStationStructs.AddressTypeProposal memory);
126
+ function getCoreAddress() external view returns (address);
127
+ function getFisherExecutor() external view returns (ProposalStructs.AddressTypeProposal memory);
125
128
  function getHyperlaneConfig() external view returns (HostChainStationStructs.HyperlaneConfig memory);
129
+ function getIfUsedAsyncNonce(address user, uint256 nonce) external view returns (bool);
126
130
  function getLayerZeroConfig() external view returns (HostChainStationStructs.LayerZeroConfig memory);
127
- function getNextFisherExecutionNonce(address user) external view returns (uint256);
128
131
  function getOptions() external view returns (bytes memory);
129
132
  function getQuoteHyperlane(address toAddress, address token, uint256 amount) external view returns (uint256);
130
133
  function handle(uint32 _origin, bytes32 _sender, bytes memory _data) external payable;
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: EVVM-NONCOMMERCIAL-1.0
2
+ // Full license terms available at: https://www.evvm.info/docs/EVVMNoncommercialLicense
3
+ pragma solidity ^0.8.0;
4
+ interface IUserValidator {
5
+ function canExecute(address user) external view returns (bool);
6
+ }