@hyperlane-xyz/core 5.12.0-ccip.2 → 5.12.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/contracts/PackageVersioned.sol +1 -1
- package/contracts/test/ERC20Test.sol +147 -0
- package/dist/buildArtifact.js +1 -1
- package/dist/buildArtifact.json +1 -1
- package/dist/contracts/test/ERC20Test.sol/XERC20VSTest.d.ts +894 -0
- package/dist/contracts/test/ERC20Test.sol/XERC20VSTest.d.ts.map +1 -0
- package/dist/contracts/test/ERC20Test.sol/XERC20VSTest.js +2 -0
- package/dist/contracts/test/ERC20Test.sol/XERC20VSTest.js.map +1 -0
- package/dist/contracts/test/ERC20Test.sol/index.d.ts +1 -0
- package/dist/contracts/test/ERC20Test.sol/index.d.ts.map +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.js +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.js +1 -1
- package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/Mailbox__factory.js +1 -1
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +1 -1
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +1 -1
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +1 -1
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +1 -1
- package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/CCIPHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/CCIPHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/DefaultHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/DefaultHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/PausableHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/PausableHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
- package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.js +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/AmountRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/AmountRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +1 -1
- package/dist/factories/contracts/isms/NoopIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/NoopIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/PausableIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/PausableIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/CCIPIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/CCIPIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/warp-route/AmountRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/warp-route/AmountRoutingIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.d.ts +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.d.ts +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20LockboxTest__factory.d.ts +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20LockboxTest__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20VSTest__factory.d.ts +595 -0
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20VSTest__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20VSTest__factory.js +788 -0
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20VSTest__factory.js.map +1 -0
- package/dist/factories/contracts/test/ERC20Test.sol/index.d.ts +1 -0
- package/dist/factories/contracts/test/ERC20Test.sol/index.d.ts.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/index.js +1 -0
- package/dist/factories/contracts/test/ERC20Test.sol/index.js.map +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
- package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js +1 -1
- package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestPostDispatchHook__factory.js +1 -1
- package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
- package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRemoteChallenger__factory.js +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
- package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts +1 -1
- package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
- package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypNative__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,9 +3,11 @@ pragma solidity >=0.8.0;
|
|
|
3
3
|
|
|
4
4
|
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
|
5
5
|
import "@openzeppelin/contracts/access/Ownable.sol";
|
|
6
|
+
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
|
6
7
|
|
|
7
8
|
import "../token/interfaces/IXERC20Lockbox.sol";
|
|
8
9
|
import "../token/interfaces/IXERC20.sol";
|
|
10
|
+
import "../token/interfaces/IXERC20VS.sol";
|
|
9
11
|
import "../token/interfaces/IFiatToken.sol";
|
|
10
12
|
|
|
11
13
|
contract ERC20Test is ERC20 {
|
|
@@ -109,6 +111,151 @@ contract XERC20Test is ERC20Test, Ownable, IXERC20 {
|
|
|
109
111
|
}
|
|
110
112
|
}
|
|
111
113
|
|
|
114
|
+
contract XERC20VSTest is ERC20Test, Ownable, IXERC20VS {
|
|
115
|
+
event ConfigurationChanged(
|
|
116
|
+
address indexed bridge,
|
|
117
|
+
uint112 bufferCap,
|
|
118
|
+
uint128 rateLimitPerSecond
|
|
119
|
+
);
|
|
120
|
+
|
|
121
|
+
mapping(address bridge => RateLimitMidPoint bridgeRateLimit)
|
|
122
|
+
internal _rateLimits;
|
|
123
|
+
|
|
124
|
+
constructor(
|
|
125
|
+
string memory name,
|
|
126
|
+
string memory symbol,
|
|
127
|
+
uint256 totalSupply,
|
|
128
|
+
uint8 __decimals
|
|
129
|
+
) ERC20Test(name, symbol, totalSupply, __decimals) Ownable() {
|
|
130
|
+
_transferOwnership(msg.sender);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function initialize() external {
|
|
134
|
+
_transferOwnership(msg.sender);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function owner() public view override(Ownable) returns (address) {
|
|
138
|
+
return Ownable.owner();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function lockbox() external view override returns (address) {
|
|
142
|
+
return address(0);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function rateLimits(
|
|
146
|
+
address _bridge
|
|
147
|
+
) external view override returns (RateLimitMidPoint memory _rateLimit) {
|
|
148
|
+
return _rateLimits[_bridge];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function mintingMaxLimitOf(
|
|
152
|
+
address _bridge
|
|
153
|
+
) external view returns (uint256) {
|
|
154
|
+
return _rateLimits[_bridge].bufferCap;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function burningMaxLimitOf(
|
|
158
|
+
address _bridge
|
|
159
|
+
) external view returns (uint256) {
|
|
160
|
+
return _rateLimits[_bridge].bufferCap;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function burningCurrentLimitOf(
|
|
164
|
+
address _bridge
|
|
165
|
+
) external view returns (uint256) {
|
|
166
|
+
return _rateLimits[_bridge].bufferCap - _buffer(_rateLimits[_bridge]);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function mintingCurrentLimitOf(
|
|
170
|
+
address _bridge
|
|
171
|
+
) external view returns (uint256) {
|
|
172
|
+
return _buffer(_rateLimits[_bridge]);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function mint(address account, uint256 amount) public override {
|
|
176
|
+
_mint(account, amount);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function burn(address account, uint256 amount) public override {
|
|
180
|
+
_burn(account, amount);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function setBufferCap(
|
|
184
|
+
address _bridge,
|
|
185
|
+
uint256 _newBufferCap
|
|
186
|
+
) external override {}
|
|
187
|
+
|
|
188
|
+
function setRateLimitPerSecond(
|
|
189
|
+
address _bridge,
|
|
190
|
+
uint128 _newRateLimitPerSecond
|
|
191
|
+
) external override {}
|
|
192
|
+
|
|
193
|
+
function addBridge(
|
|
194
|
+
RateLimitMidPointInfo memory rateLimit
|
|
195
|
+
) external onlyOwner {
|
|
196
|
+
_rateLimits[rateLimit.bridge] = RateLimitMidPoint({
|
|
197
|
+
bufferCap: rateLimit.bufferCap,
|
|
198
|
+
lastBufferUsedTime: uint32(block.timestamp),
|
|
199
|
+
bufferStored: uint112(rateLimit.bufferCap / 2),
|
|
200
|
+
midPoint: uint112(rateLimit.bufferCap / 2),
|
|
201
|
+
rateLimitPerSecond: rateLimit.rateLimitPerSecond
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
emit ConfigurationChanged(
|
|
205
|
+
rateLimit.bridge,
|
|
206
|
+
rateLimit.bufferCap,
|
|
207
|
+
rateLimit.rateLimitPerSecond
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function removeBridge(address _bridge) external override {
|
|
212
|
+
delete _rateLimits[_bridge];
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function _buffer(
|
|
216
|
+
RateLimitMidPoint storage limit
|
|
217
|
+
) internal view returns (uint256) {
|
|
218
|
+
uint256 elapsed;
|
|
219
|
+
unchecked {
|
|
220
|
+
elapsed = uint32(block.timestamp) - limit.lastBufferUsedTime;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
uint256 accrued = uint256(limit.rateLimitPerSecond) * elapsed;
|
|
224
|
+
if (limit.bufferStored < limit.midPoint) {
|
|
225
|
+
return
|
|
226
|
+
Math.min(
|
|
227
|
+
uint256(limit.bufferStored) + accrued,
|
|
228
|
+
uint256(limit.midPoint)
|
|
229
|
+
);
|
|
230
|
+
} else if (limit.bufferStored > limit.midPoint) {
|
|
231
|
+
/// past midpoint so subtract accrued off bufferStored back down to midpoint
|
|
232
|
+
|
|
233
|
+
/// second part of if statement will not be evaluated if first part is true
|
|
234
|
+
if (
|
|
235
|
+
accrued > limit.bufferStored ||
|
|
236
|
+
limit.bufferStored - accrued < limit.midPoint
|
|
237
|
+
) {
|
|
238
|
+
/// if accrued is more than buffer stored, subtracting will underflow,
|
|
239
|
+
/// and we are at the midpoint, so return that
|
|
240
|
+
return limit.midPoint;
|
|
241
|
+
} else {
|
|
242
|
+
return limit.bufferStored - accrued;
|
|
243
|
+
}
|
|
244
|
+
} else {
|
|
245
|
+
/// no change
|
|
246
|
+
return limit.bufferStored;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
function rateLimitPerSecond(address from) public view returns (uint256) {
|
|
251
|
+
return _rateLimits[from].rateLimitPerSecond;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function bufferCap(address from) public view returns (uint256) {
|
|
255
|
+
return _rateLimits[from].bufferCap;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
112
259
|
contract XERC20LockboxTest is IXERC20Lockbox {
|
|
113
260
|
IXERC20 public immutable XERC20;
|
|
114
261
|
IERC20 public immutable ERC20;
|