Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
55409a960c | ||
|
d5aee72bed |
|
@ -1,6 +1,8 @@
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
pragma solidity 0.8.9;
|
pragma solidity 0.8.9;
|
||||||
|
|
||||||
|
import { ERC20 } from "./lib/tokens/ERC20.sol";
|
||||||
|
|
||||||
library DataTypes {
|
library DataTypes {
|
||||||
struct Lock {
|
struct Lock {
|
||||||
uint256 sellerKey;
|
uint256 sellerKey;
|
||||||
|
@ -19,7 +21,7 @@ library DataTypes {
|
||||||
/// @dev Relayer address (msg.sender) that facilitated this transaction.
|
/// @dev Relayer address (msg.sender) that facilitated this transaction.
|
||||||
/// @dev Reputation points accruer.
|
/// @dev Reputation points accruer.
|
||||||
address relayerAddress;
|
address relayerAddress;
|
||||||
address token;
|
ERC20 token;
|
||||||
}
|
}
|
||||||
|
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
pragma solidity 0.8.9;
|
pragma solidity 0.8.9;
|
||||||
|
|
||||||
|
import { ERC20 } from "./lib/tokens/ERC20.sol";
|
||||||
|
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
interface EventAndErrors {
|
interface EventAndErrors {
|
||||||
/// ███ Events ████████████████████████████████████████████████████████████
|
/// ███ Events ████████████████████████████████████████████████████████████
|
||||||
|
@ -8,17 +10,17 @@ interface EventAndErrors {
|
||||||
event DepositAdded(
|
event DepositAdded(
|
||||||
address indexed seller,
|
address indexed seller,
|
||||||
// uint256 depositID,
|
// uint256 depositID,
|
||||||
address token,
|
ERC20 token,
|
||||||
uint256 amount
|
uint256 amount
|
||||||
);
|
);
|
||||||
event ValidSet(
|
event ValidSet(
|
||||||
address indexed seller,
|
address indexed seller,
|
||||||
address token,
|
ERC20 token,
|
||||||
bool state
|
bool state
|
||||||
);
|
);
|
||||||
event DepositWithdrawn(
|
event DepositWithdrawn(
|
||||||
address indexed seller,
|
address indexed seller,
|
||||||
address token,
|
ERC20 token,
|
||||||
uint256 amount
|
uint256 amount
|
||||||
);
|
);
|
||||||
event LockAdded(
|
event LockAdded(
|
||||||
|
|
|
@ -78,7 +78,7 @@ contract P2PIX is
|
||||||
uint256 defaultBlocks,
|
uint256 defaultBlocks,
|
||||||
address[] memory validSigners,
|
address[] memory validSigners,
|
||||||
IReputation _reputation,
|
IReputation _reputation,
|
||||||
address[] memory tokens,
|
ERC20[] memory tokens,
|
||||||
bool[] memory tokenStates
|
bool[] memory tokenStates
|
||||||
) payable {
|
) payable {
|
||||||
setDefaultLockBlocks(defaultBlocks);
|
setDefaultLockBlocks(defaultBlocks);
|
||||||
|
@ -97,7 +97,7 @@ contract P2PIX is
|
||||||
/// as the deposit identifier.
|
/// as the deposit identifier.
|
||||||
/// @dev Function sighash: 0xbfe07da6.
|
/// @dev Function sighash: 0xbfe07da6.
|
||||||
function deposit(
|
function deposit(
|
||||||
address _token,
|
ERC20 _token,
|
||||||
uint96 _amount,
|
uint96 _amount,
|
||||||
uint160 _pixTarget,
|
uint160 _pixTarget,
|
||||||
bool _valid,
|
bool _valid,
|
||||||
|
@ -166,7 +166,7 @@ contract P2PIX is
|
||||||
|
|
||||||
sellerBalance[key][token] = _sellerBalance;
|
sellerBalance[key][token] = _sellerBalance;
|
||||||
|
|
||||||
emit ValidSet(msg.sender, address(token), state);
|
emit ValidSet(msg.sender, token, state);
|
||||||
} else revert NotInitialized();
|
} else revert NotInitialized();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ contract P2PIX is
|
||||||
/// @dev Function sighash: 0x03aaf306.
|
/// @dev Function sighash: 0x03aaf306.
|
||||||
function lock(
|
function lock(
|
||||||
address _seller,
|
address _seller,
|
||||||
address _token,
|
ERC20 _token,
|
||||||
address _buyerAddress,
|
address _buyerAddress,
|
||||||
address _relayerTarget,
|
address _relayerTarget,
|
||||||
uint256 _relayerPremium,
|
uint256 _relayerPremium,
|
||||||
|
@ -201,7 +201,7 @@ contract P2PIX is
|
||||||
) public nonReentrant returns (uint256) {
|
) public nonReentrant returns (uint256) {
|
||||||
unlockExpired(expiredLocks);
|
unlockExpired(expiredLocks);
|
||||||
|
|
||||||
ERC20 t = ERC20(_token);
|
ERC20 t = _token;
|
||||||
if (!getValid(_seller, t)) revert InvalidDeposit();
|
if (!getValid(_seller, t)) revert InvalidDeposit();
|
||||||
|
|
||||||
uint256 bal = getBalance(_seller, t);
|
uint256 bal = getBalance(_seller, t);
|
||||||
|
@ -215,6 +215,27 @@ contract P2PIX is
|
||||||
mapLocks[cCounter].expirationBlock >= block.number
|
mapLocks[cCounter].expirationBlock >= block.number
|
||||||
) revert NotExpired();
|
) revert NotExpired();
|
||||||
|
|
||||||
|
if (merkleProof.length != 0) {
|
||||||
|
merkleVerify(
|
||||||
|
merkleProof,
|
||||||
|
sellerAllowList[k],
|
||||||
|
msg.sender
|
||||||
|
);
|
||||||
|
} else if (_amount > 1e2 ether) {
|
||||||
|
|
||||||
|
uint256 userCredit = userRecord[
|
||||||
|
_castAddrToKey(msg.sender)
|
||||||
|
];
|
||||||
|
|
||||||
|
uint256 spendLimit;
|
||||||
|
(spendLimit) = _limiter(userCredit / WAD);
|
||||||
|
|
||||||
|
if (
|
||||||
|
_amount > (spendLimit * WAD) ||
|
||||||
|
_amount > 1e6 ether
|
||||||
|
) revert AmountNotAllowed();
|
||||||
|
}
|
||||||
|
|
||||||
DT.Lock memory l = DT.Lock(
|
DT.Lock memory l = DT.Lock(
|
||||||
k,
|
k,
|
||||||
cCounter,
|
cCounter,
|
||||||
|
@ -225,51 +246,15 @@ contract P2PIX is
|
||||||
_buyerAddress,
|
_buyerAddress,
|
||||||
_relayerTarget,
|
_relayerTarget,
|
||||||
msg.sender,
|
msg.sender,
|
||||||
address(t)
|
t
|
||||||
);
|
);
|
||||||
|
|
||||||
if (merkleProof.length != 0) {
|
_addLock(bal, _amount, cCounter, l, t, k);
|
||||||
merkleVerify(
|
|
||||||
merkleProof,
|
|
||||||
sellerAllowList[k],
|
|
||||||
msg.sender
|
|
||||||
);
|
|
||||||
|
|
||||||
_addLock(bal, _amount, cCounter, l, t, k);
|
lockCounter++;
|
||||||
|
|
||||||
lockCounter++;
|
// Halt execution and output `lockID`.
|
||||||
|
return cCounter;
|
||||||
// Halt execution and output `lockID`.
|
|
||||||
return cCounter;
|
|
||||||
} else {
|
|
||||||
if (l.amount <= 1e2 ether) {
|
|
||||||
_addLock(bal, _amount, cCounter, l, t, k);
|
|
||||||
|
|
||||||
lockCounter++;
|
|
||||||
|
|
||||||
// Halt execution and output `lockID`.
|
|
||||||
return cCounter;
|
|
||||||
} else {
|
|
||||||
uint256 userCredit = userRecord[
|
|
||||||
_castAddrToKey(msg.sender)
|
|
||||||
];
|
|
||||||
|
|
||||||
uint256 spendLimit;
|
|
||||||
(spendLimit) = _limiter(userCredit / WAD);
|
|
||||||
|
|
||||||
if (
|
|
||||||
l.amount > (spendLimit * WAD) ||
|
|
||||||
l.amount > 1e6 ether
|
|
||||||
) revert AmountNotAllowed();
|
|
||||||
|
|
||||||
_addLock(bal, _amount, cCounter, l, t, k);
|
|
||||||
|
|
||||||
lockCounter++;
|
|
||||||
|
|
||||||
// Halt execution and output `lockID`.
|
|
||||||
return cCounter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @notice Lock release method that liquidate lock
|
/// @notice Lock release method that liquidate lock
|
||||||
|
@ -394,12 +379,12 @@ contract P2PIX is
|
||||||
|
|
||||||
uint256 _sellerBalance = sellerBalance[
|
uint256 _sellerBalance = sellerBalance[
|
||||||
l.sellerKey
|
l.sellerKey
|
||||||
][ERC20(l.token)] & BITMASK_SB_ENTRY;
|
][l.token] & BITMASK_SB_ENTRY;
|
||||||
|
|
||||||
if ((_sellerBalance + l.amount) > 1e8 ether)
|
if ((_sellerBalance + l.amount) > 1e8 ether)
|
||||||
revert MaxBalExceeded();
|
revert MaxBalExceeded();
|
||||||
|
|
||||||
sellerBalance[l.sellerKey][ERC20(l.token)] += l
|
sellerBalance[l.sellerKey][l.token] += l
|
||||||
.amount;
|
.amount;
|
||||||
|
|
||||||
l.amount = 0;
|
l.amount = 0;
|
||||||
|
@ -463,7 +448,7 @@ contract P2PIX is
|
||||||
|
|
||||||
emit DepositWithdrawn(
|
emit DepositWithdrawn(
|
||||||
msg.sender,
|
msg.sender,
|
||||||
address(token),
|
token,
|
||||||
amount
|
amount
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -528,7 +513,7 @@ contract P2PIX is
|
||||||
}
|
}
|
||||||
|
|
||||||
function tokenSettings(
|
function tokenSettings(
|
||||||
address[] memory _tokens,
|
ERC20[] memory _tokens,
|
||||||
bool[] memory _states
|
bool[] memory _states
|
||||||
) public onlyOwner {
|
) public onlyOwner {
|
||||||
/* Yul Impl */
|
/* Yul Impl */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user