-
Notifications
You must be signed in to change notification settings - Fork 160
Reimplement ETHOrders logic #384
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 38 commits
Commits
Show all changes
73 commits
Select commit
Hold shift + click to select a range
4fb00ce
Reimplement ETHOrders logic
k06a d7a7932
Fix some bugs and improve docs
k06a c100474
Add support for Fusion and Fusion+
k06a 09b075e
Refactor ETHOrders
k06a 7f0c7f7
Introduce ETHOrderClonable
k06a e30f6e7
restrict transfer for ETHOrders erc20 tokens
SevenSwen cd98d34
fix
SevenSwen 8e7dd5c
Extract Auction data out of ETHOrders
k06a 643604f
Intro ChainablePostInteraction.sol
k06a 2c39c6e
Fixes
k06a 1e4c3aa
Merge branch 'feature/new-eth-orders' into fix/trasfer_restricted
k06a fcbdba7
Merge pull request #386 from 1inch/fix/trasfer_restricted
k06a 8fdf860
Fix ETHOrdersClonable
k06a a87d8c0
Reimplement
k06a efdc36d
Remove fake ERC20 wrapper events
k06a b40033e
Remove unused immutables, imports, usings
k06a f6c79d3
Emit orderHash instead of makerOrderHash
k06a 7188a8d
Make factory to deploy initial impl to store in in immutable
k06a c93beda
Let resolver to limit own reward for cancelling expired order
k06a 83030e6
Make IMPLEMENTATION public
k06a c0c04de
Emit real orderHash instead of makerOrderHash at native order cancell…
k06a 5f70d7f
Avoid block.basefee access in case of rewardLimit equal zero to suppo…
k06a 8c43289
Introduce immutable cancellation delay for non zero resolver reward
k06a 8f9f3b0
Separate events for user and resolver driven cancellation
k06a 94e7192
Remove unused IERC20Metadata methods
k06a d7dd12c
Remove unused modifier
k06a 6c6a5cc
Fix receiver validation in NativeOrderFactory
k06a 8ce1665
Fix bug and EIP-712 name and version
k06a 1cb74c8
fix onlyMaker modifier & predictDeterministicAddress
SevenSwen 9dd2c40
Removed factory dependency from implementation
k06a e0c7637
fix native order tests
SevenSwen 7795d6f
Merge pull request #387 from 1inch/test/new-eth-orders
SevenSwen 5f064cd
revert ChainablePostInteraction
SevenSwen 4dd4feb
deploy staging
SevenSwen 2310de3
add impementation address log
SevenSwen fa5b663
skip NativeOrderFactory deploy and temporary skip verify
SevenSwen 8714b6d
fix script
SevenSwen eff5fc2
Merge pull request #388 from 1inch/deploy/new-eth-orders
SevenSwen 7e914b1
using makerTraits.isExpired
SevenSwen 0c08cbd
change transfer to calls
SevenSwen 30ef3d1
fix _CANCEL_GAS_LOWER_BOUND
SevenSwen 2b33134
rescueFunds() onlyResolver => withdraw() onlyMaker
k06a 24e3eb4
[L-01] change transfer to call
SevenSwen ca79bbd
remove duplicate import
SevenSwen 69691dc
remove unused errors
SevenSwen f761112
move EIP712Alien from mocks to utils folder
SevenSwen 503bbbb
fix test
SevenSwen dc00e4d
add missing tests for NativeOrder withdraw
SevenSwen d4a67ab
fix after review
SevenSwen 9ac5bcb
fix typo
SevenSwen d37e0ad
Merge pull request #390 from 1inch/fix/new-eth-orders
SevenSwen 393e601
fix typo
SevenSwen eeda080
remove unused library
SevenSwen a24e74d
remove redundant console.log from deploy script
SevenSwen b46cb03
Merge commit '4fcd53cfb11ebf5ac0c33f3ed083ce6213731bc2' into feature/…
SevenSwen 7572b63
fix after merge
SevenSwen e9c8f39
Bump solidity-utils to support etherscan api v2 verification
zZoMROT 3de3e16
Patch deploy script
zZoMROT 891c905
Deploy NativeOrder extension on arbitrum
zZoMROT cf9aace
Deploy NativeOrder extension on avax
zZoMROT 99f8f31
Deploy NativeOrder extension on base
zZoMROT 07d41ae
Deploy NativeOrder extension on bsc
zZoMROT e725a64
Deploy NativeOrder extension on linea
zZoMROT 2986cac
Deploy NativeOrder extension on mainnet
zZoMROT 746069e
Deploy NativeOrder extension on matic
zZoMROT a12a1af
Deploy NativeOrder extension on optimistic
zZoMROT e208a70
Deploy NativeOrder extension on sonic
zZoMROT 118286b
Deploy NativeOrder extension on unichain
zZoMROT ab319d7
Deploy NativeOrder extension on xdai
zZoMROT e4c14e1
Bump solc and zksync-verify versions
zZoMROT 36c7c4a
Remove zksolc deps and bump hardhat-deploy dep
zZoMROT 493cee1
Deploy NativeOrder extension on zksync
zZoMROT 8e2835e
Merge pull request #395 from 1inch/deploy/native-order
galekseev File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| // SPDX-License-Identifier: MIT | ||
|
|
||
| pragma solidity 0.8.23; | ||
|
|
||
| import { Clones } from "@openzeppelin/contracts/proxy/Clones.sol"; | ||
| import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; | ||
| import { Address, AddressLib } from "@1inch/solidity-utils/contracts/libraries/AddressLib.sol"; | ||
| import { SafeERC20, IERC20, IWETH } from "@1inch/solidity-utils/contracts/libraries/SafeERC20.sol"; | ||
|
|
||
| import { IOrderMixin } from "../interfaces/IOrderMixin.sol"; | ||
| import { MakerTraits, MakerTraitsLib } from "../libraries/MakerTraitsLib.sol"; | ||
| import { EIP712Alien } from "../mocks/EIP712Alien.sol"; | ||
| import { OrderLib, IOrderMixin } from "../OrderLib.sol"; | ||
| import { NativeOrderImpl } from "./NativeOrderImpl.sol"; | ||
|
|
||
| contract NativeOrderFactory is Ownable, EIP712Alien { | ||
| using Clones for address; | ||
| using AddressLib for Address; | ||
| using SafeERC20 for IERC20; | ||
| using OrderLib for IOrderMixin.Order; | ||
| using MakerTraitsLib for MakerTraits; | ||
SevenSwen marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| event NativeOrderCreated(address maker, bytes32 orderHash, address clone, uint256 value); | ||
|
|
||
| error OrderReceiverShouldBeSetCorrectly(address receiver); | ||
| error OrderMakerShouldBeMsgSender(address expected, address actual); | ||
| error OrderMakingAmountShouldBeEqualToMsgValue(uint256 expected, uint256 actual); | ||
|
|
||
| address public immutable IMPLEMENTATION; | ||
|
|
||
| constructor( | ||
| IWETH weth, | ||
| address limitOrderProtocol, | ||
| IERC20 accessToken, | ||
| uint256 cancellationDelay, // Recommended 60 seconds delay after order expiration for rewardable cancellation | ||
| string memory name, | ||
| string memory version | ||
| ) | ||
| Ownable(msg.sender) | ||
| EIP712Alien(limitOrderProtocol, name, version) | ||
| { | ||
| IMPLEMENTATION = address(new NativeOrderImpl( | ||
| weth, | ||
| address(this), | ||
| limitOrderProtocol, | ||
| accessToken, | ||
| cancellationDelay, | ||
| name, | ||
| version | ||
| )); | ||
| } | ||
|
|
||
| function create(IOrderMixin.Order calldata makerOrder) external payable returns (address clone) { | ||
| // Validate main order parameters | ||
| if (makerOrder.maker.get() != msg.sender) revert OrderMakerShouldBeMsgSender(msg.sender, makerOrder.maker.get()); | ||
| address receiver = makerOrder.receiver.get(); | ||
| if (receiver == address(0) || receiver == address(this)) revert OrderReceiverShouldBeSetCorrectly(receiver); | ||
| if (msg.value != makerOrder.makingAmount) revert OrderMakingAmountShouldBeEqualToMsgValue(makerOrder.makingAmount, msg.value); | ||
|
|
||
| bytes32 makerOrderHash = makerOrder.hash(_domainSeparatorV4()); | ||
| clone = IMPLEMENTATION.cloneDeterministic(makerOrderHash); | ||
| NativeOrderImpl(payable(clone)).depositAndApprove{ value: msg.value }(); | ||
|
|
||
| IOrderMixin.Order memory order = makerOrder; | ||
| order.maker = Address.wrap(uint160(clone)); | ||
| bytes32 orderHash = order.hashMemory(_domainSeparatorV4()); | ||
| emit NativeOrderCreated(msg.sender, orderHash, clone, msg.value); | ||
| } | ||
|
|
||
| function rescueFunds(address token, address to, uint256 amount) external onlyOwner { | ||
| if (token == address(0)) { | ||
| payable(to).transfer(amount); | ||
| } else { | ||
| IERC20(token).safeTransfer(to, amount); | ||
| } | ||
| } | ||
| } | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.