Moved stack allocation from memory to calldata
This commit is contained in:
1 parent
4281526d77
commit
26a495246e
43 files changed
+933
-826
No files matched your search
+12
-1
@@ -1,7 +1,18 @@
|
||||
module.exports = {
|
||||
configureYulOptimizer: true,
|
||||
solcOptimizerDetails: {
|
||||
deduplicate: true,
|
||||
cse: true,
|
||||
constantOptimizer: true,
|
||||
peephole: true,
|
||||
jumpdestRemover: true,
|
||||
yul: true,
|
||||
// inliner: false,
|
||||
// orderLiterals: true,
|
||||
},
|
||||
istanbulReporter: ["html", "lcov"],
|
||||
providerOptions: {
|
||||
mnemonic: process.env.MNEMONIC,
|
||||
},
|
||||
skipFiles: ["test"],
|
||||
skipFiles: ["test", 'core/BaseUtils.sol', 'core/OwnerSettings.sol'],
|
||||
};
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/f220dbc6fa6f1dbf5c2cb562d65f0725.json"
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -213,9 +213,9 @@
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"internalType": "address",
|
||||
"name": "seller",
|
||||
"type": "uint256"
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
@@ -529,9 +529,9 @@
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"internalType": "address",
|
||||
"name": "sellerKey",
|
||||
"type": "uint256"
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "sellerAllowList",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -3,8 +3,8 @@
|
||||
"contractName": "DataTypes",
|
||||
"sourceName": "contracts/core/DataTypes.sol",
|
||||
"abi": [],
|
||||
"bytecode": "0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220a40e6f94f4c0b9a9cdd9ac64f98613aece8f5a3f084ee1eca35eba466df9810964736f6c63430008130033",
|
||||
"deployedBytecode": "0x600080fdfea2646970667358221220a40e6f94f4c0b9a9cdd9ac64f98613aece8f5a3f084ee1eca35eba466df9810964736f6c63430008130033",
|
||||
"bytecode": "0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212201904685203adfcebeda9a1444d5381c24a37e2895e8a7dff26bd8d5af2fafcbc64736f6c63430008130033",
|
||||
"deployedBytecode": "0x600080fdfea26469706673582212201904685203adfcebeda9a1444d5381c24a37e2895e8a7dff26bd8d5af2fafcbc64736f6c63430008130033",
|
||||
"linkReferences": {},
|
||||
"deployedLinkReferences": {}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -203,9 +203,9 @@
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"internalType": "address",
|
||||
"name": "seller",
|
||||
"type": "uint256"
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -208,9 +208,9 @@
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"internalType": "address",
|
||||
"name": "seller",
|
||||
"type": "uint256"
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
@@ -467,9 +467,9 @@
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"internalType": "address",
|
||||
"name": "sellerKey",
|
||||
"type": "uint256"
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "sellerAllowList",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/cd64a64b3749ac90866585a6471cc921.json"
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../build-info/f220dbc6fa6f1dbf5c2cb562d65f0725.json"
|
||||
"buildInfo": "../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
}
|
||||
@@ -244,9 +244,9 @@
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"internalType": "address",
|
||||
"name": "seller",
|
||||
"type": "uint256"
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
@@ -496,29 +496,36 @@
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "_token",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint96",
|
||||
"name": "_amount",
|
||||
"type": "uint96"
|
||||
},
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "_pixTarget",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "_valid",
|
||||
"type": "bool"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "allowlistRoot",
|
||||
"type": "bytes32"
|
||||
"components": [
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "pixTarget",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "allowlistRoot",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "contract ERC20",
|
||||
"name": "token",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint96",
|
||||
"name": "amount",
|
||||
"type": "uint96"
|
||||
},
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "valid",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"internalType": "struct DataTypes.DepositArgs",
|
||||
"name": "args",
|
||||
"type": "tuple"
|
||||
}
|
||||
],
|
||||
"name": "deposit",
|
||||
@@ -711,29 +718,36 @@
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "_seller",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "_token",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint80",
|
||||
"name": "_amount",
|
||||
"type": "uint80"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32[]",
|
||||
"name": "merkleProof",
|
||||
"type": "bytes32[]"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256[]",
|
||||
"name": "expiredLocks",
|
||||
"type": "uint256[]"
|
||||
"components": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "seller",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "contract ERC20",
|
||||
"name": "token",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint80",
|
||||
"name": "amount",
|
||||
"type": "uint80"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32[]",
|
||||
"name": "merkleProof",
|
||||
"type": "bytes32[]"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256[]",
|
||||
"name": "expiredLocks",
|
||||
"type": "uint256[]"
|
||||
}
|
||||
],
|
||||
"internalType": "struct DataTypes.LockArgs",
|
||||
"name": "args",
|
||||
"type": "tuple"
|
||||
}
|
||||
],
|
||||
"name": "lock",
|
||||
@@ -770,11 +784,6 @@
|
||||
],
|
||||
"name": "mapLocks",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "sellerKey",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "counter",
|
||||
@@ -804,6 +813,11 @@
|
||||
"internalType": "address",
|
||||
"name": "buyerAddress",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "seller",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
@@ -871,9 +885,9 @@
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"internalType": "address",
|
||||
"name": "sellerKey",
|
||||
"type": "uint256"
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "sellerAllowList",
|
||||
@@ -1116,8 +1130,8 @@
|
||||
"type": "receive"
|
||||
}
|
||||
],
|
||||
"bytecode": "0x608060405262002c0a80380380620000178162000126565b928339810160a0828203126200010b5781516020808401519093916001600160401b03918281116200010b5784620000519185016200017f565b9062000060604085016200016a565b9260608501518181116200010b57866200007c9187016200017f565b9460808101519182116200010b57019480601f870112156200010b578551620000af620000a98262000152565b62000126565b96888089848152019260051b8201019283116200010b578801905b828210620000f157505050620000e19550620001e6565b6040516127c89081620004428239f35b815180151581036200010b578152908801908801620000ca565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176200014c57604052565b62000110565b6001600160401b0381116200014c5760051b60200190565b51906001600160a01b03821682036200010b57565b9080601f830112156200010b578151906200019e620000a98362000152565b9182938184526020808095019260051b8201019283116200010b578301905b828210620001cc575050505090565b838091620001da846200016a565b815201910190620001bd565b600080546001600160a01b031916339081178255929695949392817f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768180a3816003556040519182527f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851160208093a18651878301979060051b810183013d1515895b811562000306575b5050506040519280840191818552518092526040840198925b828110620002e85750505050907f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d782620002d593620002db97980390a16001600160a01b031662000337565b62000390565b620002e66001600455565b565b83516001600160a01b03168a52988101989281019260010162000289565b9085826001829697989451600c1b550190838210156200032c5791509493929462000268565b509493929462000270565b6000546001600160a01b0390811633036200037f57816020917fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9360025560405191168152a1565b6040516282b42960e81b8152600490fd5b60008054919290916001600160a01b031633036200037f5782519182156200043457815183036200042757602092919284818080970195019360051b0101925b838103620003df575050505050565b84809181600c63cbc9d1c48152825186528651918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a8680a301920191620003d0565b63ff633a3890526004601cfd5b63df95788390526004601cfdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c578063367821f014610227578063461f3120146101d757806349ef8448146102225780634b2ae9801461021d578063572b6c0514610218578063574983c8146102135780635fd8c7101461020e57806369cc6af4146102095780636d82d9e01461020457806377cd38a4146101ff5780637f94f65d146101fa57806380e1d302146101f557806384ab1d28146101f05780638da5cb5b146101eb5780638db564c2146101e6578063918dff57146101e15780639872dbfe146101dc57806398a26871146101d75780639b6d694d146101d2578063ad8f2eed146101cd578063b0983d39146101c8578063c52164c6146101c3578063c593dfd8146101be578063d1c07028146101b9578063d1ced2b0146101b4578063d4fac45d146101af578063d6e8b973146101aa578063dc43221c146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e57611532565b6114c2565b611487565b6113ec565b61133a565b611321565b611272565b61112c565b610dfb565b610dc7565b610d8d565b610d49565b610cd9565b6105eb565b610c46565b610bbb565b610b7a565b610b46565b610b10565b610af7565b610aa6565b610a6e565b610917565b6108ca565b610847565b6107e3565b610793565b610769565b6106ce565b610559565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b3461026257602060031936011261026257600435600052600660205260e060Line truncated
|
||||
"deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c578063367821f014610227578063461f3120146101d757806349ef8448146102225780634b2ae9801461021d578063572b6c0514610218578063574983c8146102135780635fd8c7101461020e57806369cc6af4146102095780636d82d9e01461020457806377cd38a4146101ff5780637f94f65d146101fa57806380e1d302146101f557806384ab1d28146101f05780638da5cb5b146101eb5780638db564c2146101e6578063918dff57146101e15780639872dbfe146101dc57806398a26871146101d75780639b6d694d146101d2578063ad8f2eed146101cd578063b0983d39146101c8578063c52164c6146101c3578063c593dfd8146101be578063d1c07028146101b9578063d1ced2b0146101b4578063d4fac45d146101af578063d6e8b973146101aa578063dc43221c146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e57611532565b6114c2565b611487565b6113ec565b61133a565b611321565b611272565b61112c565b610dfb565b610dc7565b610d8d565b610d49565b610cd9565b6105eb565b610c46565b610bbb565b610b7a565b610b46565b610b10565b610af7565b610aa6565b610a6e565b610917565b6108ca565b610847565b6107e3565b610793565b610769565b6106ce565b610559565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b3461026257602060031936011261026257600435600052600660205260e060406000208054906005600182015491600281015460038201549060048301549273ffffffffffffffffffffffffffffffffffffffff9485910154169460405196875260208701526040860152606085015269ffffffffffffffffffff8116608085015260501c1660a083015260c0820152f35b34610262576020600319360112610262576020600435546040519015158152f35b90815180825260208080930193019160005b82811061062c575050505090565b83518552938101939281019260010161061e565b906106539060408352604083019061060c565b81810360209283015282518082529082019282019160009190825b82811061067d57505050505090565b909192939485516004808210156106a25750815282019482019392919060010161066e565b8660216024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b34610262576020806003193601126102625760043567ffffffffffffffff811161026257366023820112156102625780600401359061070c826102fc565b9161071a6040519384610296565b80835260248484019160051b8301019136831161026257602401905b82821061075a576107468461262e565b9061075660405192839283610640565b0390f35b81358152908401908401610736565b3461026257602060031936011261026257602060043561078881610314565b60405190600c1b8152f35b346102625760206003193601126102625773ffffffffffffffffffffffffffffffffffffffff6004356107c581610314565b166000526001602052602060ff604060002054166040519015158152f35b346102625760206003193601126102625760043573ffffffffffffffffffffffffffffffffffffffff60005416330361049d576020817f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851192600355604051908152a1005b34610262576000806003193601126108c75773ffffffffffffffffffffffffffffffffffffffff815416330361049d57478180808084335af1156108ba576040805133815260208101929092527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d91a180f35b63b12d13eb82526004601cfd5b80fd5b346102625760206003193601126102625760206109006004356108ec81610314565b63cbc9d1c4600c526000526020600c205490565b6040519015158152f35b3590811515820361026257565b346102625760406003193601126102625760043561093481610314565b602435801515810361026257602082905263739094b1600c9081527e0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff331660005260349020600101548015610a44577fca585721b6b442dc9183932f7c84dc2880efb67c4da52cc06873e78971105d4991610a3f918460205263739094b1600c527e0fLine truncated
|
||||
"bytecode": "0x608060405262002d4680380380620000178162000126565b928339810160a0828203126200010b5781516020808401519093916001600160401b03918281116200010b5784620000519185016200017f565b9062000060604085016200016a565b9260608501518181116200010b57866200007c9187016200017f565b9460808101519182116200010b57019480601f870112156200010b578551620000af620000a98262000152565b62000126565b96888089848152019260051b8201019283116200010b578801905b828210620000f157505050620000e19550620001e6565b6040516129049081620004428239f35b815180151581036200010b578152908801908801620000ca565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176200014c57604052565b62000110565b6001600160401b0381116200014c5760051b60200190565b51906001600160a01b03821682036200010b57565b9080601f830112156200010b578151906200019e620000a98362000152565b9182938184526020808095019260051b8201019283116200010b578301905b828210620001cc575050505090565b838091620001da846200016a565b815201910190620001bd565b600080546001600160a01b031916339081178255929695949392817f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768180a3816003556040519182527f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851160208093a18651878301979060051b810183013d1515895b811562000306575b5050506040519280840191818552518092526040840198925b828110620002e85750505050907f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d782620002d593620002db97980390a16001600160a01b031662000337565b62000390565b620002e66001600455565b565b83516001600160a01b03168a52988101989281019260010162000289565b9085826001829697989451600c1b550190838210156200032c5791509493929462000268565b509493929462000270565b6000546001600160a01b0390811633036200037f57816020917fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9360025560405191168152a1565b6040516282b42960e81b8152600490fd5b60008054919290916001600160a01b031633036200037f5782519182156200043457815183036200042757602092919284818080970195019360051b0101925b838103620003df575050505050565b84809181600c63cbc9d1c48152825186528651918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a8680a301920191620003d0565b63ff633a3890526004601cfd5b63df95788390526004601cfdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c5780631e3c017a146102275780631e9bb57314610222578063367821f01461021d5780633c16f0c414610218578063461f3120146101cd57806349ef8448146102135780634b2ae9801461020e578063572b6c0514610209578063574983c8146102045780635fd8c710146101ff57806369cc6af4146101fa5780636d82d9e0146101f55780637f94f65d146101f057806380e1d302146101eb57806384ab1d28146101e65780638da5cb5b146101e15780638db564c2146101dc578063918dff57146101d75780639872dbfe146101d257806398a26871146101cd578063ad8f2eed146101c8578063b0983d39146101c3578063c52164c6146101be578063c593dfd8146101b9578063d1c07028146101b4578063d1ced2b0146101af578063d4fac45d146101aa578063d6e8b973146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e576119d1565b611961565b61191a565b611803565b6117f0565b611741565b6115f9565b6112e1565b6112ad565b611279565b611235565b610c81565b611217565b611192565b611151565b61111d565b6110e7565b6110d4565b611083565b610f92565b610f5c565b610ed9565b610e75565b610e25565b610dfb565b610d64565b610c57565b610bb9565b61080b565b61058b565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b60031990602082820112610262576004359167ffffffffffffffff83116102Line truncated
|
||||
"deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c5780631e3c017a146102275780631e9bb57314610222578063367821f01461021d5780633c16f0c414610218578063461f3120146101cd57806349ef8448146102135780634b2ae9801461020e578063572b6c0514610209578063574983c8146102045780635fd8c710146101ff57806369cc6af4146101fa5780636d82d9e0146101f55780637f94f65d146101f057806380e1d302146101eb57806384ab1d28146101e65780638da5cb5b146101e15780638db564c2146101dc578063918dff57146101d75780639872dbfe146101d257806398a26871146101cd578063ad8f2eed146101c8578063b0983d39146101c3578063c52164c6146101be578063c593dfd8146101b9578063d1c07028146101b4578063d1ced2b0146101af578063d4fac45d146101aa578063d6e8b973146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e576119d1565b611961565b61191a565b611803565b6117f0565b611741565b6115f9565b6112e1565b6112ad565b611279565b611235565b610c81565b611217565b611192565b611151565b61111d565b6110e7565b6110d4565b611083565b610f92565b610f5c565b610ed9565b610e75565b610e25565b610dfb565b610d64565b610c57565b610bb9565b61080b565b61058b565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b60031990602082820112610262576004359167ffffffffffffffff8311610262578260a0920301126102625760040190565b346102625761059936610559565b6105a38180611b19565b9050156107e157604081016105d56105d16105bd83611b6a565b63cbc9d1c4600c526000526020600c205490565b1590565b6107b7576b3fffffffffffffffffffffff61060e6105f283611b6a565b339060205263739094b1600c5260005260016034600c20015490565b169161063b606082019361063561062486611b74565b6bffffffffffffffffffffffff1690565b90611bcf565b916a52b7d2dcc80cd2e4000000831161078d5761073561071c61073b926106eb610778957f63d8d7d5e63e9840ec91a12a160d27b7cfab294f6ba070b7359692acfe6b03bf97610689611be6565b60208201358061077d575b506106bd60806106b66106b16106aa8680611b19565b36916118b5565b611ae3565b9301611bdc565b906106c785611b6a565b91605f1b1790339060205263739094b1600c526000526034600c2090600182015555565b61070d6106f782611b6a565b6107036106248a611b74565b9030903390611c21565b6107176001600455565b611b6a565b73ffffffffffffffffffffffffffffffffffffffff1690565b93611b74565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526bffffffffffffffffffffffff90911660208501523393918291820190565b0390a2005b6107879033612275565b38610694565b60046040517ff3fb0eb9000000000000000000000000000000000000000000000000000000008152fd5b60046040517f1578328e000000000000000000000000000000000000000000000000000000008152fd5b60046040517f6a3bc53e000000000000000000000000000000000000000000000000000000008152fd5b346102625761081936610559565b610821611be6565b6108376108316080830183611d13565b90612092565b61084081611b6a565b9061085b6105d1602083019361085585611b6a565b90612651565b610b8f5761087a61086b82611b6a565b61087484611b6a565b90612617565b6040918281019061089c61088d83611d67565b69ffffffffffffffffffff1690565b8310610b66576108ad600554611bbc565b9460016108c4876000526006602052604060002090565b0154431115610b3d576109aa906108d9611ea2565b9290946109716108fa6108eb87611b6a565b6108f486611b6a565b9061268e565b61091b61071c61091561090f60035443611bcf565b95611d67565b96611b6a565b9061092588611b6a565b9361092e6102dc565b9c8d5260208d01528a8c015261095460608c0195869069ffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff1660808b0152565b73ffffffffffffffffffffffffffffffffffffffff861660a08a015273ffffffffffffffffffffffffffffffffffffffff1660c0890152565b60608301916109b98385611dLine truncated
|
||||
"linkReferences": {},
|
||||
"deployedLinkReferences": {}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity 0.8.19;
|
||||
|
||||
import { ERC20, OwnerSettings } from "./OwnerSettings.sol";
|
||||
import { ERC20, OwnerSettings } from "contracts/core/OwnerSettings.sol";
|
||||
|
||||
import { ECDSA } from "../lib/utils/ECDSA.sol";
|
||||
import { MerkleProofLib as Merkle } from "../lib/utils/MerkleProofLib.sol";
|
||||
import { ReentrancyGuard } from "../lib/utils/ReentrancyGuard.sol";
|
||||
import { ECDSA } from "contracts/lib/utils/ECDSA.sol";
|
||||
import { MerkleProofLib as Merkle } from "contracts/lib/utils/MerkleProofLib.sol";
|
||||
import { ReentrancyGuard } from "contracts/lib/utils/ReentrancyGuard.sol";
|
||||
|
||||
abstract contract BaseUtils is
|
||||
OwnerSettings,
|
||||
@@ -93,7 +93,7 @@ abstract contract BaseUtils is
|
||||
}
|
||||
|
||||
function _setSellerBalance(
|
||||
uint256 _sellerKey,
|
||||
address _sellerKey,
|
||||
ERC20 _erc20,
|
||||
uint256 _packed,
|
||||
bytes32 _pixTarget
|
||||
@@ -101,7 +101,7 @@ abstract contract BaseUtils is
|
||||
assembly {
|
||||
mstore(0x20, _erc20)
|
||||
mstore(0x0c, _SELLER_BALANCE_SLOT_SEED)
|
||||
mstore(0x00, shr(0xc, _sellerKey))
|
||||
mstore(0x00, _sellerKey)
|
||||
let _loc := keccak256(0x0c, 0x34)
|
||||
sstore(add(_loc, 0x01), _packed)
|
||||
sstore(_loc, _pixTarget)
|
||||
@@ -109,55 +109,55 @@ abstract contract BaseUtils is
|
||||
}
|
||||
|
||||
function _setValidState(
|
||||
uint256 _sellerKey,
|
||||
address _sellerKey,
|
||||
ERC20 _erc20,
|
||||
uint256 _packed
|
||||
) internal {
|
||||
assembly {
|
||||
mstore(0x20, _erc20)
|
||||
mstore(0x0c, _SELLER_BALANCE_SLOT_SEED)
|
||||
mstore(0x00, shr(0xc, _sellerKey))
|
||||
mstore(0x00, _sellerKey)
|
||||
let _loc := keccak256(0x0c, 0x34)
|
||||
sstore(add(_loc, 0x01), _packed)
|
||||
}
|
||||
}
|
||||
|
||||
function _addSellerBalance(
|
||||
uint256 _sellerKey,
|
||||
address _sellerKey,
|
||||
ERC20 _erc20,
|
||||
uint256 _amount
|
||||
) internal {
|
||||
assembly {
|
||||
mstore(0x20, _erc20)
|
||||
mstore(0x0c, _SELLER_BALANCE_SLOT_SEED)
|
||||
mstore(0x00, shr(0xc, _sellerKey))
|
||||
mstore(0x00, _sellerKey)
|
||||
let _loc := add(keccak256(0x0c, 0x34), 0x01)
|
||||
sstore(_loc, add(sload(_loc), _amount))
|
||||
}
|
||||
}
|
||||
|
||||
function _decSellerBalance(
|
||||
uint256 _sellerKey,
|
||||
address _sellerKey,
|
||||
ERC20 _erc20,
|
||||
uint256 _amount
|
||||
) internal {
|
||||
assembly {
|
||||
mstore(0x20, _erc20)
|
||||
mstore(0x0c, _SELLER_BALANCE_SLOT_SEED)
|
||||
mstore(0x00, shr(0xc, _sellerKey))
|
||||
mstore(0x00, _sellerKey)
|
||||
let _loc := add(keccak256(0x0c, 0x34), 0x01)
|
||||
sstore(_loc, sub(sload(_loc), _amount))
|
||||
}
|
||||
}
|
||||
|
||||
function __sellerBalance(
|
||||
uint256 _sellerKey,
|
||||
address _sellerKey,
|
||||
ERC20 _erc20
|
||||
) internal view returns (uint256 _packed) {
|
||||
assembly {
|
||||
mstore(0x20, _erc20)
|
||||
mstore(0x0c, _SELLER_BALANCE_SLOT_SEED)
|
||||
mstore(0x00, shr(0xc, _sellerKey))
|
||||
mstore(0x00, _sellerKey)
|
||||
_packed := sload(add(keccak256(0x0c, 0x34), 0x01))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,33 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity 0.8.19;
|
||||
|
||||
import { ERC20 } from "contracts/lib/tokens/ERC20.sol";
|
||||
|
||||
library DataTypes {
|
||||
struct DepositArgs {
|
||||
string pixTarget;
|
||||
bytes32 allowlistRoot;
|
||||
ERC20 token;
|
||||
uint96 amount;
|
||||
bool valid;
|
||||
}
|
||||
|
||||
struct LockArgs {
|
||||
address seller;
|
||||
ERC20 token;
|
||||
uint80 amount;
|
||||
bytes32[] merkleProof;
|
||||
uint256[] expiredLocks;
|
||||
}
|
||||
|
||||
struct Lock {
|
||||
uint256 sellerKey;
|
||||
uint256 counter;
|
||||
uint256 expirationBlock;
|
||||
bytes32 pixTarget;
|
||||
uint80 amount;
|
||||
address token;
|
||||
address buyerAddress;
|
||||
address seller;
|
||||
}
|
||||
|
||||
// prettier-ignore
|
||||
|
||||
@@ -28,7 +28,7 @@ interface EventAndErrors {
|
||||
event LockAdded(
|
||||
address indexed buyer,
|
||||
uint256 indexed lockID,
|
||||
uint256 seller,
|
||||
address seller,
|
||||
uint256 amount
|
||||
);
|
||||
/// @dev 0x364537f14276f2a0ce9905588413f96454cbb8fb2e4f5308389307c1098bede8
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity 0.8.19;
|
||||
|
||||
import { ERC2771Context as ERC2771 } from "../lib/metatx/ERC2771Context.sol";
|
||||
import { ERC20, SafeTransferLib } from "../lib/utils/SafeTransferLib.sol";
|
||||
import { IReputation } from "../lib/interfaces/IReputation.sol";
|
||||
import { EventAndErrors } from "./EventAndErrors.sol";
|
||||
import { Constants } from "./Constants.sol";
|
||||
import { Owned } from "../lib/auth/Owned.sol";
|
||||
import { ERC2771Context as ERC2771 } from "contracts/lib/metatx/ERC2771Context.sol";
|
||||
import { ERC20, SafeTransferLib } from "contracts/lib/utils/SafeTransferLib.sol";
|
||||
import { IReputation } from "contracts/lib/interfaces/IReputation.sol";
|
||||
import { EventAndErrors } from "contracts/core/EventAndErrors.sol";
|
||||
import { Constants } from "contracts/core/Constants.sol";
|
||||
import { Owned } from "contracts/lib/auth/Owned.sol";
|
||||
|
||||
abstract contract OwnerSettings is
|
||||
Constants,
|
||||
@@ -121,7 +121,7 @@ abstract contract OwnerSettings is
|
||||
} iszero(returndatasize()) {
|
||||
/* */
|
||||
} {
|
||||
sstore(shl(12, mload(i)), true)
|
||||
sstore(shl(0xc, mload(i)), true)
|
||||
i := add(i, 0x20)
|
||||
|
||||
if iszero(lt(i, end)) {
|
||||
@@ -187,11 +187,11 @@ abstract contract OwnerSettings is
|
||||
}
|
||||
|
||||
function sellerAllowList(
|
||||
uint256 sellerKey
|
||||
address sellerKey
|
||||
) public view returns (bytes32 root) {
|
||||
assembly {
|
||||
mstore(0x0c, _SELLER_ALLOWLIST_SLOT_SEED)
|
||||
mstore(0x00, shr(12, sellerKey))
|
||||
mstore(0x00, sellerKey)
|
||||
root := sload(keccak256(0x00, 0x20))
|
||||
}
|
||||
}
|
||||
|
||||
+68
-83
@@ -8,9 +8,9 @@ pragma solidity 0.8.19;
|
||||
/// |__| |__|
|
||||
///
|
||||
|
||||
import { OwnerSettings, ERC20, SafeTransferLib } from "./core/OwnerSettings.sol";
|
||||
import { BaseUtils } from "./core/BaseUtils.sol";
|
||||
import { DataTypes as DT } from "./core/DataTypes.sol";
|
||||
import { OwnerSettings, ERC20, SafeTransferLib } from "contracts/core/OwnerSettings.sol";
|
||||
import { BaseUtils } from "contracts/core/BaseUtils.sol";
|
||||
import { DataTypes as DT } from "contracts/core/DataTypes.sol";
|
||||
|
||||
|
||||
contract P2PIX is BaseUtils {
|
||||
@@ -18,6 +18,8 @@ contract P2PIX is BaseUtils {
|
||||
// solhint-disable no-inline-assembly
|
||||
// solhint-disable no-empty-blocks
|
||||
|
||||
using DT for DT.DepositArgs;
|
||||
using DT for DT.LockArgs;
|
||||
using DT for DT.Lock;
|
||||
using DT for DT.LockStatus;
|
||||
|
||||
@@ -53,55 +55,49 @@ contract P2PIX is BaseUtils {
|
||||
/// @notice Creates a deposit order based on a seller's
|
||||
/// offer of an amount of ERC20 tokens.
|
||||
/// @dev Seller needs to send his tokens to the P2PIX smart contract.
|
||||
/// @param _pixTarget Pix key destination provided by the offer's seller.
|
||||
/// @param allowlistRoot Optional allow list merkleRoot update `bytes32` value.
|
||||
/// as the deposit identifier.
|
||||
/* /// @param _pixTarget Pix key destination provided by the offer's seller. */
|
||||
/* /// @param allowlistRoot Optional allow list merkleRoot update `bytes32` value. */
|
||||
/* /// as the deposit identifier. */
|
||||
/// @dev Function sighash: 0xbfe07da6.
|
||||
function deposit(
|
||||
address _token,
|
||||
uint96 _amount,
|
||||
string memory _pixTarget,
|
||||
bool _valid,
|
||||
bytes32 allowlistRoot
|
||||
DT.DepositArgs calldata args
|
||||
) public {
|
||||
ERC20 t = ERC20(_token);
|
||||
uint256 k = _castAddrToKey(msg.sender);
|
||||
|
||||
if (bytes(_pixTarget).length == 0) revert EmptyPixTarget();
|
||||
if (!allowedERC20s(t)) revert TokenDenied();
|
||||
uint256 _sellerBalance = __sellerBalance(k,t);
|
||||
if (bytes(args.pixTarget).length == 0) revert EmptyPixTarget();
|
||||
if (!allowedERC20s(args.token)) revert TokenDenied();
|
||||
uint256 _sellerBalance = __sellerBalance(msg.sender, args.token);
|
||||
|
||||
uint256 currBal = _sellerBalance & BITMASK_SB_ENTRY;
|
||||
uint256 _newBal = uint256(currBal + _amount);
|
||||
uint256 _newBal = uint256(currBal + args.amount);
|
||||
if (_newBal > MAXBALANCE_UPPERBOUND)
|
||||
revert MaxBalExceeded();
|
||||
|
||||
setReentrancyGuard();
|
||||
|
||||
if (allowlistRoot != 0) {
|
||||
setRoot(msg.sender, allowlistRoot);
|
||||
if (args.allowlistRoot != 0) {
|
||||
setRoot(msg.sender, args.allowlistRoot);
|
||||
}
|
||||
|
||||
bytes32 pixTargetCasted = getStr(_pixTarget);
|
||||
uint256 validCasted = _castBool(_valid);
|
||||
bytes32 pixTargetCasted = getStr(args.pixTarget);
|
||||
uint256 validCasted = _castBool(args.valid);
|
||||
|
||||
_setSellerBalance(
|
||||
k,
|
||||
t,
|
||||
msg.sender,
|
||||
args.token,
|
||||
(_newBal | (validCasted << BITPOS_VALID)),
|
||||
pixTargetCasted
|
||||
);
|
||||
|
||||
SafeTransferLib.safeTransferFrom(
|
||||
t,
|
||||
args.token,
|
||||
msg.sender,
|
||||
address(this),
|
||||
_amount
|
||||
args.amount
|
||||
);
|
||||
|
||||
clearReentrancyGuard();
|
||||
|
||||
emit DepositAdded(msg.sender, _token, _amount);
|
||||
emit DepositAdded(msg.sender, address(args.token), args.amount);
|
||||
}
|
||||
|
||||
/// @notice Enables seller to invalidate future
|
||||
@@ -109,8 +105,7 @@ contract P2PIX is BaseUtils {
|
||||
/// @dev This function does not affect any ongoing active locks.
|
||||
/// @dev Function sighash: 0x72fada5c.
|
||||
function setValidState(ERC20 token, bool state) public {
|
||||
uint256 key = _castAddrToKey(msg.sender);
|
||||
uint256 _sellerBalance = __sellerBalance(key, token);
|
||||
uint256 _sellerBalance = __sellerBalance(msg.sender, token);
|
||||
|
||||
if (_sellerBalance != 0) {
|
||||
uint256 _valid = _castBool(state);
|
||||
@@ -119,7 +114,7 @@ contract P2PIX is BaseUtils {
|
||||
(_sellerBalance & BITMASK_SB_ENTRY) |
|
||||
(_valid << BITPOS_VALID);
|
||||
|
||||
_setValidState(key, token, _sellerBalance);
|
||||
_setValidState(msg.sender, token, _sellerBalance);
|
||||
|
||||
emit ValidSet(msg.sender, address(token), state);
|
||||
} else revert NotInitialized();
|
||||
@@ -127,78 +122,73 @@ contract P2PIX is BaseUtils {
|
||||
|
||||
/// @notice Public method designed to lock an remaining amount of
|
||||
/// the deposit order of a seller.
|
||||
/// @dev Transaction forwarding must leave `merkleProof` empty;
|
||||
/// otherwise, the trustedForwarder must be previously added
|
||||
/// to a seller whitelist.
|
||||
/// @dev This method can be performed either by:
|
||||
/// - An user allowed via the seller's allowlist;
|
||||
/// - An user with enough userRecord to lock the wished amount;
|
||||
/// @dev There can only exist a lock per each `_amount` partitioned
|
||||
/// from the total `remaining` value.
|
||||
/// @dev Locks can only be performed in valid orders.
|
||||
/// @param _amount The deposit's remaining amount wished to be locked.
|
||||
/// @param merkleProof This value should be:
|
||||
/// - Provided as a pass if the `msg.sender` is in the seller's allowlist;
|
||||
/// - Left empty otherwise;
|
||||
/// @param expiredLocks An array of `bytes32` identifiers to be
|
||||
/// provided so to unexpire locks using this transaction gas push.
|
||||
/* /// @param _amount The deposit's remaining amount wished to be locked. */
|
||||
/* /// @param merkleProof This value should be: */
|
||||
/* /// - Provided as a pass if the `msg.sender` is in the seller's allowlist; */
|
||||
/* /// - Left empty otherwise; */
|
||||
/* /// @param expiredLocks An array of `bytes32` identifiers to be */
|
||||
/* /// provided so to unexpire locks using this transaction gas push. */
|
||||
/// @return lockID The `bytes32` value returned as the lock identifier.
|
||||
/// @dev Function sighash: 0x03aaf306.
|
||||
function lock(
|
||||
address _seller,
|
||||
address _token,
|
||||
uint80 _amount,
|
||||
bytes32[] calldata merkleProof,
|
||||
uint256[] calldata expiredLocks
|
||||
DT.LockArgs calldata args
|
||||
) public nonReentrant returns (uint256 lockID) {
|
||||
unlockExpired(expiredLocks);
|
||||
unlockExpired(args.expiredLocks);
|
||||
|
||||
ERC20 t = ERC20(_token);
|
||||
if (!getValid(_seller, t)) revert InvalidDeposit();
|
||||
if (!getValid(args.seller, args.token)) revert InvalidDeposit();
|
||||
|
||||
uint256 bal = getBalance(_seller, t);
|
||||
if (bal < _amount) revert NotEnoughTokens();
|
||||
uint256 bal = getBalance(args.seller, args.token);
|
||||
if (bal < args.amount) revert NotEnoughTokens();
|
||||
|
||||
uint256 k = _castAddrToKey(_seller);
|
||||
|
||||
uint256 cCounter = lockCounter + 1;
|
||||
uint256 c = lockCounter + 1;
|
||||
|
||||
if (
|
||||
mapLocks[cCounter].expirationBlock >= block.number
|
||||
mapLocks[c].expirationBlock >= block.number
|
||||
) revert NotExpired();
|
||||
|
||||
address sender; uint256 forwarder;
|
||||
(sender, forwarder) = _isTrustedForwarder();
|
||||
bytes32 _pixTarget = getPixTarget(args.seller, args.token);
|
||||
|
||||
DT.Lock memory l = DT.Lock(
|
||||
k,
|
||||
cCounter,
|
||||
c,
|
||||
(block.number + defaultLockBlocks),
|
||||
getPixTarget(_seller, t),
|
||||
_amount,
|
||||
address(t),
|
||||
sender
|
||||
_pixTarget,
|
||||
args.amount,
|
||||
address(args.token),
|
||||
sender,
|
||||
args.seller
|
||||
);
|
||||
|
||||
// transaction forwarding must leave `merkleProof` empty;
|
||||
// otherwise, the trustedForwarder must be previously added
|
||||
// to a seller whitelist.
|
||||
if (merkleProof.length != 0) {
|
||||
_merkleVerify(merkleProof, sellerAllowList(k), sender);
|
||||
lockID = _addLock(bal, _amount, cCounter, l, t, k);
|
||||
if (args.merkleProof.length != 0) {
|
||||
_merkleVerify(args.merkleProof, sellerAllowList(args.seller), sender);
|
||||
lockID = _addLock(bal, l);
|
||||
|
||||
} else {
|
||||
if (l.amount <= REPUTATION_LOWERBOUND) {
|
||||
lockID = _addLock(bal, _amount, cCounter, l, t, k);
|
||||
lockID = _addLock(bal, l);
|
||||
|
||||
} else {
|
||||
if (forwarder != 0) {
|
||||
lockID = _addLock(bal, _amount, cCounter, l, t, k);
|
||||
lockID = _addLock(bal, l);
|
||||
} else {
|
||||
uint256 userCredit = userRecord[_castAddrToKey(msg.sender)];
|
||||
uint256 spendLimit; (spendLimit) = _limiter(userCredit / WAD);
|
||||
uint256 spendLimit; uint256 userCredit =
|
||||
userRecord[_castAddrToKey(msg.sender)];
|
||||
(spendLimit) = _limiter(userCredit / WAD);
|
||||
if (
|
||||
l.amount > (spendLimit * WAD) ||
|
||||
l.amount > LOCKAMOUNT_UPPERBOUND
|
||||
) revert AmountNotAllowed();
|
||||
lockID = _addLock(bal, _amount, cCounter, l, t, k);
|
||||
lockID = _addLock(bal, l);
|
||||
|
||||
/* */}/* */}/* */}
|
||||
}
|
||||
@@ -285,12 +275,12 @@ contract P2PIX is BaseUtils {
|
||||
_notExpired(l);
|
||||
|
||||
uint256 _sellerBalance =
|
||||
__sellerBalance(l.sellerKey, ERC20(l.token)) & BITMASK_SB_ENTRY;
|
||||
__sellerBalance(l.seller, ERC20(l.token)) & BITMASK_SB_ENTRY;
|
||||
|
||||
if ((_sellerBalance + l.amount) > MAXBALANCE_UPPERBOUND)
|
||||
revert MaxBalExceeded();
|
||||
|
||||
_addSellerBalance(l.sellerKey, ERC20(l.token), l.amount);
|
||||
_addSellerBalance(l.seller, ERC20(l.token), l.amount);
|
||||
|
||||
l.amount = 0;
|
||||
|
||||
@@ -335,12 +325,11 @@ contract P2PIX is BaseUtils {
|
||||
if (getValid(msg.sender, token))
|
||||
setValidState(token, false);
|
||||
|
||||
uint256 key = _castAddrToKey(msg.sender);
|
||||
_decBal(
|
||||
(__sellerBalance(key, token) & BITMASK_SB_ENTRY),
|
||||
(__sellerBalance(msg.sender, token) & BITMASK_SB_ENTRY),
|
||||
amount,
|
||||
token,
|
||||
key
|
||||
msg.sender
|
||||
);
|
||||
|
||||
// safeTransfer tokens to seller
|
||||
@@ -400,22 +389,18 @@ contract P2PIX is BaseUtils {
|
||||
|
||||
function _addLock(
|
||||
uint256 _bal,
|
||||
uint256 _amount,
|
||||
uint256 _lockID,
|
||||
DT.Lock memory _l,
|
||||
ERC20 _t,
|
||||
uint256 _k
|
||||
DT.Lock memory _l
|
||||
) internal returns(uint256 counter){
|
||||
mapLocks[_lockID] = _l;
|
||||
mapLocks[_l.counter] = _l;
|
||||
|
||||
_decBal(_bal, _amount, _t, _k);
|
||||
_decBal(_bal, _l.amount, ERC20(_l.token), _l.seller);
|
||||
++lockCounter;
|
||||
counter = _lockID;
|
||||
counter = _l.counter;
|
||||
|
||||
emit LockAdded(
|
||||
_l.buyerAddress,
|
||||
_lockID,
|
||||
_l.sellerKey,
|
||||
_l.counter,
|
||||
_l.seller,
|
||||
_l.amount
|
||||
);
|
||||
}
|
||||
@@ -424,7 +409,7 @@ contract P2PIX is BaseUtils {
|
||||
uint256 _bal,
|
||||
uint256 _amount,
|
||||
ERC20 _t,
|
||||
uint256 _k
|
||||
address _k
|
||||
) private {
|
||||
assembly {
|
||||
if iszero(
|
||||
@@ -561,7 +546,7 @@ contract P2PIX is BaseUtils {
|
||||
);
|
||||
unchecked {
|
||||
for (c; c < len; ) {
|
||||
if (mapLocks[ids[c]].sellerKey == 0x0) {
|
||||
if (mapLocks[ids[c]].seller == address(0)) {
|
||||
sortedIDs[c] = ids[c];
|
||||
status[c] = type(DT.LockStatus).min;
|
||||
++c;
|
||||
|
||||
@@ -5,7 +5,7 @@ import * as fs from "fs";
|
||||
import { ethers, network } from "hardhat";
|
||||
import hre from "hardhat";
|
||||
|
||||
import { Deploys } from "../test/utils/fixtures";
|
||||
import { Deploys } from "../test/utils/interfaces";
|
||||
|
||||
let deploysJson: Deploys;
|
||||
const supply: BigNumber = ethers.utils.parseEther("20000000");
|
||||
|
||||
@@ -4,7 +4,7 @@ import * as fs from "fs";
|
||||
import { ethers, network } from "hardhat";
|
||||
import hre from "hardhat";
|
||||
|
||||
import { Deploys } from "../test/utils/fixtures";
|
||||
import { Deploys } from "../test/utils/interfaces";
|
||||
|
||||
let deploysJson: Deploys;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import "@nomiclabs/hardhat-ethers";
|
||||
import "@nomiclabs/hardhat-etherscan";
|
||||
import * as fs from "fs";
|
||||
import { ethers, network } from "hardhat";
|
||||
import { Deploys } from "../test/utils/fixtures";
|
||||
import { Deploys } from "../test/utils/interfaces";
|
||||
import { P2PIX__factory } from "../src/types";
|
||||
|
||||
let deploysJson: Deploys;
|
||||
|
||||
+11
-11
@@ -37,7 +37,7 @@ export interface BaseUtilsInterface extends utils.Interface {
|
||||
"isTrustedForwarder(address)": FunctionFragment;
|
||||
"owner()": FunctionFragment;
|
||||
"reputation()": FunctionFragment;
|
||||
"sellerAllowList(uint256)": FunctionFragment;
|
||||
"sellerAllowList(address)": FunctionFragment;
|
||||
"setDefaultLockBlocks(uint256)": FunctionFragment;
|
||||
"setOwner(address)": FunctionFragment;
|
||||
"setReputation(address)": FunctionFragment;
|
||||
@@ -102,7 +102,7 @@ export interface BaseUtilsInterface extends utils.Interface {
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "sellerAllowList",
|
||||
values: [PromiseOrValue<BigNumberish>]
|
||||
values: [PromiseOrValue<string>]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setDefaultLockBlocks",
|
||||
@@ -207,7 +207,7 @@ export interface BaseUtilsInterface extends utils.Interface {
|
||||
"DepositAdded(address,address,uint256)": EventFragment;
|
||||
"DepositWithdrawn(address,address,uint256)": EventFragment;
|
||||
"FundsWithdrawn(address,uint256)": EventFragment;
|
||||
"LockAdded(address,uint256,uint256,uint256)": EventFragment;
|
||||
"LockAdded(address,uint256,address,uint256)": EventFragment;
|
||||
"LockBlocksUpdated(uint256)": EventFragment;
|
||||
"LockReleased(address,uint256,uint256)": EventFragment;
|
||||
"LockReturned(address,uint256)": EventFragment;
|
||||
@@ -286,11 +286,11 @@ export type FundsWithdrawnEventFilter = TypedEventFilter<FundsWithdrawnEvent>;
|
||||
export interface LockAddedEventObject {
|
||||
buyer: string;
|
||||
lockID: BigNumber;
|
||||
seller: BigNumber;
|
||||
seller: string;
|
||||
amount: BigNumber;
|
||||
}
|
||||
export type LockAddedEvent = TypedEvent<
|
||||
[string, BigNumber, BigNumber, BigNumber],
|
||||
[string, BigNumber, string, BigNumber],
|
||||
LockAddedEventObject
|
||||
>;
|
||||
|
||||
@@ -457,7 +457,7 @@ export interface BaseUtils extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<[string] & { root: string }>;
|
||||
|
||||
@@ -540,7 +540,7 @@ export interface BaseUtils extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<string>;
|
||||
|
||||
@@ -623,7 +623,7 @@ export interface BaseUtils extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<string>;
|
||||
|
||||
@@ -710,7 +710,7 @@ export interface BaseUtils extends BaseContract {
|
||||
): FundsWithdrawnEventFilter;
|
||||
FundsWithdrawn(owner?: null, amount?: null): FundsWithdrawnEventFilter;
|
||||
|
||||
"LockAdded(address,uint256,uint256,uint256)"(
|
||||
"LockAdded(address,uint256,address,uint256)"(
|
||||
buyer?: PromiseOrValue<string> | null,
|
||||
lockID?: PromiseOrValue<BigNumberish> | null,
|
||||
seller?: null,
|
||||
@@ -828,7 +828,7 @@ export interface BaseUtils extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
@@ -912,7 +912,7 @@ export interface BaseUtils extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ export interface EventAndErrorsInterface extends utils.Interface {
|
||||
"DepositAdded(address,address,uint256)": EventFragment;
|
||||
"DepositWithdrawn(address,address,uint256)": EventFragment;
|
||||
"FundsWithdrawn(address,uint256)": EventFragment;
|
||||
"LockAdded(address,uint256,uint256,uint256)": EventFragment;
|
||||
"LockAdded(address,uint256,address,uint256)": EventFragment;
|
||||
"LockBlocksUpdated(uint256)": EventFragment;
|
||||
"LockReleased(address,uint256,uint256)": EventFragment;
|
||||
"LockReturned(address,uint256)": EventFragment;
|
||||
@@ -104,11 +104,11 @@ export type FundsWithdrawnEventFilter = TypedEventFilter<FundsWithdrawnEvent>;
|
||||
export interface LockAddedEventObject {
|
||||
buyer: string;
|
||||
lockID: BigNumber;
|
||||
seller: BigNumber;
|
||||
seller: string;
|
||||
amount: BigNumber;
|
||||
}
|
||||
export type LockAddedEvent = TypedEvent<
|
||||
[string, BigNumber, BigNumber, BigNumber],
|
||||
[string, BigNumber, string, BigNumber],
|
||||
LockAddedEventObject
|
||||
>;
|
||||
|
||||
@@ -273,7 +273,7 @@ export interface EventAndErrors extends BaseContract {
|
||||
): FundsWithdrawnEventFilter;
|
||||
FundsWithdrawn(owner?: null, amount?: null): FundsWithdrawnEventFilter;
|
||||
|
||||
"LockAdded(address,uint256,uint256,uint256)"(
|
||||
"LockAdded(address,uint256,address,uint256)"(
|
||||
buyer?: PromiseOrValue<string> | null,
|
||||
lockID?: PromiseOrValue<BigNumberish> | null,
|
||||
seller?: null,
|
||||
|
||||
@@ -34,7 +34,7 @@ export interface OwnerSettingsInterface extends utils.Interface {
|
||||
"isTrustedForwarder(address)": FunctionFragment;
|
||||
"owner()": FunctionFragment;
|
||||
"reputation()": FunctionFragment;
|
||||
"sellerAllowList(uint256)": FunctionFragment;
|
||||
"sellerAllowList(address)": FunctionFragment;
|
||||
"setDefaultLockBlocks(uint256)": FunctionFragment;
|
||||
"setOwner(address)": FunctionFragment;
|
||||
"setReputation(address)": FunctionFragment;
|
||||
@@ -82,7 +82,7 @@ export interface OwnerSettingsInterface extends utils.Interface {
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "sellerAllowList",
|
||||
values: [PromiseOrValue<BigNumberish>]
|
||||
values: [PromiseOrValue<string>]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setDefaultLockBlocks",
|
||||
@@ -170,7 +170,7 @@ export interface OwnerSettingsInterface extends utils.Interface {
|
||||
"DepositAdded(address,address,uint256)": EventFragment;
|
||||
"DepositWithdrawn(address,address,uint256)": EventFragment;
|
||||
"FundsWithdrawn(address,uint256)": EventFragment;
|
||||
"LockAdded(address,uint256,uint256,uint256)": EventFragment;
|
||||
"LockAdded(address,uint256,address,uint256)": EventFragment;
|
||||
"LockBlocksUpdated(uint256)": EventFragment;
|
||||
"LockReleased(address,uint256,uint256)": EventFragment;
|
||||
"LockReturned(address,uint256)": EventFragment;
|
||||
@@ -249,11 +249,11 @@ export type FundsWithdrawnEventFilter = TypedEventFilter<FundsWithdrawnEvent>;
|
||||
export interface LockAddedEventObject {
|
||||
buyer: string;
|
||||
lockID: BigNumber;
|
||||
seller: BigNumber;
|
||||
seller: string;
|
||||
amount: BigNumber;
|
||||
}
|
||||
export type LockAddedEvent = TypedEvent<
|
||||
[string, BigNumber, BigNumber, BigNumber],
|
||||
[string, BigNumber, string, BigNumber],
|
||||
LockAddedEventObject
|
||||
>;
|
||||
|
||||
@@ -405,7 +405,7 @@ export interface OwnerSettings extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<[string] & { root: string }>;
|
||||
|
||||
@@ -468,7 +468,7 @@ export interface OwnerSettings extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<string>;
|
||||
|
||||
@@ -531,7 +531,7 @@ export interface OwnerSettings extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<string>;
|
||||
|
||||
@@ -613,7 +613,7 @@ export interface OwnerSettings extends BaseContract {
|
||||
): FundsWithdrawnEventFilter;
|
||||
FundsWithdrawn(owner?: null, amount?: null): FundsWithdrawnEventFilter;
|
||||
|
||||
"LockAdded(address,uint256,uint256,uint256)"(
|
||||
"LockAdded(address,uint256,address,uint256)"(
|
||||
buyer?: PromiseOrValue<string> | null,
|
||||
lockID?: PromiseOrValue<BigNumberish> | null,
|
||||
seller?: null,
|
||||
@@ -716,7 +716,7 @@ export interface OwnerSettings extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
@@ -780,7 +780,7 @@ export interface OwnerSettings extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
|
||||
@@ -217,9 +217,9 @@ const _abi = [
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
internalType: "address",
|
||||
name: "seller",
|
||||
type: "uint256",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
@@ -533,9 +533,9 @@ const _abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
internalType: "address",
|
||||
name: "sellerKey",
|
||||
type: "uint256",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "sellerAllowList",
|
||||
|
||||
@@ -210,9 +210,9 @@ const _abi = [
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
internalType: "address",
|
||||
name: "seller",
|
||||
type: "uint256",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
|
||||
@@ -215,9 +215,9 @@ const _abi = [
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
internalType: "address",
|
||||
name: "seller",
|
||||
type: "uint256",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
@@ -474,9 +474,9 @@ const _abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
internalType: "address",
|
||||
name: "sellerKey",
|
||||
type: "uint256",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "sellerAllowList",
|
||||
|
||||
@@ -255,9 +255,9 @@ const _abi = [
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
internalType: "address",
|
||||
name: "seller",
|
||||
type: "uint256",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
@@ -507,29 +507,36 @@ const _abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "_token",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint96",
|
||||
name: "_amount",
|
||||
type: "uint96",
|
||||
},
|
||||
{
|
||||
internalType: "string",
|
||||
name: "_pixTarget",
|
||||
type: "string",
|
||||
},
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "_valid",
|
||||
type: "bool",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "allowlistRoot",
|
||||
type: "bytes32",
|
||||
components: [
|
||||
{
|
||||
internalType: "string",
|
||||
name: "pixTarget",
|
||||
type: "string",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "allowlistRoot",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "contract ERC20",
|
||||
name: "token",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint96",
|
||||
name: "amount",
|
||||
type: "uint96",
|
||||
},
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "valid",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
internalType: "struct DataTypes.DepositArgs",
|
||||
name: "args",
|
||||
type: "tuple",
|
||||
},
|
||||
],
|
||||
name: "deposit",
|
||||
@@ -722,29 +729,36 @@ const _abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "_seller",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "_token",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint80",
|
||||
name: "_amount",
|
||||
type: "uint80",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32[]",
|
||||
name: "merkleProof",
|
||||
type: "bytes32[]",
|
||||
},
|
||||
{
|
||||
internalType: "uint256[]",
|
||||
name: "expiredLocks",
|
||||
type: "uint256[]",
|
||||
components: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "seller",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "contract ERC20",
|
||||
name: "token",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint80",
|
||||
name: "amount",
|
||||
type: "uint80",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32[]",
|
||||
name: "merkleProof",
|
||||
type: "bytes32[]",
|
||||
},
|
||||
{
|
||||
internalType: "uint256[]",
|
||||
name: "expiredLocks",
|
||||
type: "uint256[]",
|
||||
},
|
||||
],
|
||||
internalType: "struct DataTypes.LockArgs",
|
||||
name: "args",
|
||||
type: "tuple",
|
||||
},
|
||||
],
|
||||
name: "lock",
|
||||
@@ -781,11 +795,6 @@ const _abi = [
|
||||
],
|
||||
name: "mapLocks",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "sellerKey",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "counter",
|
||||
@@ -816,6 +825,11 @@ const _abi = [
|
||||
name: "buyerAddress",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "seller",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
@@ -882,9 +896,9 @@ const _abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
internalType: "address",
|
||||
name: "sellerKey",
|
||||
type: "uint256",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "sellerAllowList",
|
||||
@@ -1129,7 +1143,7 @@ const _abi = [
|
||||
];
|
||||
|
||||
const _bytecode =
|
||||
"0x608060405262002c0a80380380620000178162000126565b928339810160a0828203126200010b5781516020808401519093916001600160401b03918281116200010b5784620000519185016200017f565b9062000060604085016200016a565b9260608501518181116200010b57866200007c9187016200017f565b9460808101519182116200010b57019480601f870112156200010b578551620000af620000a98262000152565b62000126565b96888089848152019260051b8201019283116200010b578801905b828210620000f157505050620000e19550620001e6565b6040516127c89081620004428239f35b815180151581036200010b578152908801908801620000ca565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176200014c57604052565b62000110565b6001600160401b0381116200014c5760051b60200190565b51906001600160a01b03821682036200010b57565b9080601f830112156200010b578151906200019e620000a98362000152565b9182938184526020808095019260051b8201019283116200010b578301905b828210620001cc575050505090565b838091620001da846200016a565b815201910190620001bd565b600080546001600160a01b031916339081178255929695949392817f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768180a3816003556040519182527f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851160208093a18651878301979060051b810183013d1515895b811562000306575b5050506040519280840191818552518092526040840198925b828110620002e85750505050907f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d782620002d593620002db97980390a16001600160a01b031662000337565b62000390565b620002e66001600455565b565b83516001600160a01b03168a52988101989281019260010162000289565b9085826001829697989451600c1b550190838210156200032c5791509493929462000268565b509493929462000270565b6000546001600160a01b0390811633036200037f57816020917fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9360025560405191168152a1565b6040516282b42960e81b8152600490fd5b60008054919290916001600160a01b031633036200037f5782519182156200043457815183036200042757602092919284818080970195019360051b0101925b838103620003df575050505050565b84809181600c63cbc9d1c48152825186528651918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a8680a301920191620003d0565b63ff633a3890526004601cfd5b63df95788390526004601cfdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c578063367821f014610227578063461f3120146101d757806349ef8448146102225780634b2ae9801461021d578063572b6c0514610218578063574983c8146102135780635fd8c7101461020e57806369cc6af4146102095780636d82d9e01461020457806377cd38a4146101ff5780637f94f65d146101fa57806380e1d302146101f557806384ab1d28146101f05780638da5cb5b146101eb5780638db564c2146101e6578063918dff57146101e15780639872dbfe146101dc57806398a26871146101d75780639b6d694d146101d2578063ad8f2eed146101cd578063b0983d39146101c8578063c52164c6146101c3578063c593dfd8146101be578063d1c07028146101b9578063d1ced2b0146101b4578063d4fac45d146101af578063d6e8b973146101aa578063dc43221c146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e57611532565b6114c2565b611487565b6113ec565b61133a565b611321565b611272565b61112c565b610dfb565b610dc7565b610d8d565b610d49565b610cd9565b6105eb565b610c46565b610bbb565b610b7a565b610b46565b610b10565b610af7565b610aa6565b610a6e565b610917565b6108ca565b610847565b6107e3565b610793565b610769565b6106ce565b610559565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b3461026257602060031936011261026257600435600052600660205260e060406000208054Line truncated
|
||||
"0x608060405262002d4680380380620000178162000126565b928339810160a0828203126200010b5781516020808401519093916001600160401b03918281116200010b5784620000519185016200017f565b9062000060604085016200016a565b9260608501518181116200010b57866200007c9187016200017f565b9460808101519182116200010b57019480601f870112156200010b578551620000af620000a98262000152565b62000126565b96888089848152019260051b8201019283116200010b578801905b828210620000f157505050620000e19550620001e6565b6040516129049081620004428239f35b815180151581036200010b578152908801908801620000ca565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176200014c57604052565b62000110565b6001600160401b0381116200014c5760051b60200190565b51906001600160a01b03821682036200010b57565b9080601f830112156200010b578151906200019e620000a98362000152565b9182938184526020808095019260051b8201019283116200010b578301905b828210620001cc575050505090565b838091620001da846200016a565b815201910190620001bd565b600080546001600160a01b031916339081178255929695949392817f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768180a3816003556040519182527f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851160208093a18651878301979060051b810183013d1515895b811562000306575b5050506040519280840191818552518092526040840198925b828110620002e85750505050907f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d782620002d593620002db97980390a16001600160a01b031662000337565b62000390565b620002e66001600455565b565b83516001600160a01b03168a52988101989281019260010162000289565b9085826001829697989451600c1b550190838210156200032c5791509493929462000268565b509493929462000270565b6000546001600160a01b0390811633036200037f57816020917fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9360025560405191168152a1565b6040516282b42960e81b8152600490fd5b60008054919290916001600160a01b031633036200037f5782519182156200043457815183036200042757602092919284818080970195019360051b0101925b838103620003df575050505050565b84809181600c63cbc9d1c48152825186528651918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a8680a301920191620003d0565b63ff633a3890526004601cfd5b63df95788390526004601cfdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c5780631e3c017a146102275780631e9bb57314610222578063367821f01461021d5780633c16f0c414610218578063461f3120146101cd57806349ef8448146102135780634b2ae9801461020e578063572b6c0514610209578063574983c8146102045780635fd8c710146101ff57806369cc6af4146101fa5780636d82d9e0146101f55780637f94f65d146101f057806380e1d302146101eb57806384ab1d28146101e65780638da5cb5b146101e15780638db564c2146101dc578063918dff57146101d75780639872dbfe146101d257806398a26871146101cd578063ad8f2eed146101c8578063b0983d39146101c3578063c52164c6146101be578063c593dfd8146101b9578063d1c07028146101b4578063d1ced2b0146101af578063d4fac45d146101aa578063d6e8b973146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e576119d1565b611961565b61191a565b611803565b6117f0565b611741565b6115f9565b6112e1565b6112ad565b611279565b611235565b610c81565b611217565b611192565b611151565b61111d565b6110e7565b6110d4565b611083565b610f92565b610f5c565b610ed9565b610e75565b610e25565b610dfb565b610d64565b610c57565b610bb9565b61080b565b61058b565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b60031990602082820112610262576004359167ffffffffffffffff8311610262578260a092Line truncated
|
||||
|
||||
type P2PIXConstructorParams =
|
||||
| [signer?: Signer]
|
||||
|
||||
@@ -27,13 +27,59 @@ import type {
|
||||
PromiseOrValue,
|
||||
} from "../common";
|
||||
|
||||
export declare namespace DataTypes {
|
||||
export type DepositArgsStruct = {
|
||||
pixTarget: PromiseOrValue<string>;
|
||||
allowlistRoot: PromiseOrValue<BytesLike>;
|
||||
token: PromiseOrValue<string>;
|
||||
amount: PromiseOrValue<BigNumberish>;
|
||||
valid: PromiseOrValue<boolean>;
|
||||
};
|
||||
|
||||
export type DepositArgsStructOutput = [
|
||||
string,
|
||||
string,
|
||||
string,
|
||||
BigNumber,
|
||||
boolean
|
||||
] & {
|
||||
pixTarget: string;
|
||||
allowlistRoot: string;
|
||||
token: string;
|
||||
amount: BigNumber;
|
||||
valid: boolean;
|
||||
};
|
||||
|
||||
export type LockArgsStruct = {
|
||||
seller: PromiseOrValue<string>;
|
||||
token: PromiseOrValue<string>;
|
||||
amount: PromiseOrValue<BigNumberish>;
|
||||
merkleProof: PromiseOrValue<BytesLike>[];
|
||||
expiredLocks: PromiseOrValue<BigNumberish>[];
|
||||
};
|
||||
|
||||
export type LockArgsStructOutput = [
|
||||
string,
|
||||
string,
|
||||
BigNumber,
|
||||
string[],
|
||||
BigNumber[]
|
||||
] & {
|
||||
seller: string;
|
||||
token: string;
|
||||
amount: BigNumber;
|
||||
merkleProof: string[];
|
||||
expiredLocks: BigNumber[];
|
||||
};
|
||||
}
|
||||
|
||||
export interface P2PIXInterface extends utils.Interface {
|
||||
functions: {
|
||||
"_castAddrToKey(address)": FunctionFragment;
|
||||
"_castKeyToAddr(uint256)": FunctionFragment;
|
||||
"allowedERC20s(address)": FunctionFragment;
|
||||
"defaultLockBlocks()": FunctionFragment;
|
||||
"deposit(address,uint96,string,bool,bytes32)": FunctionFragment;
|
||||
"deposit((string,bytes32,address,uint96,bool))": FunctionFragment;
|
||||
"getBalance(address,address)": FunctionFragment;
|
||||
"getBalances(address[],address)": FunctionFragment;
|
||||
"getLocksStatus(uint256[])": FunctionFragment;
|
||||
@@ -42,13 +88,13 @@ export interface P2PIXInterface extends utils.Interface {
|
||||
"getStr(string)": FunctionFragment;
|
||||
"getValid(address,address)": FunctionFragment;
|
||||
"isTrustedForwarder(address)": FunctionFragment;
|
||||
"lock(address,address,uint80,bytes32[],uint256[])": FunctionFragment;
|
||||
"lock((address,address,uint80,bytes32[],uint256[]))": FunctionFragment;
|
||||
"lockCounter()": FunctionFragment;
|
||||
"mapLocks(uint256)": FunctionFragment;
|
||||
"owner()": FunctionFragment;
|
||||
"release(uint256,bytes32,bytes32,bytes32,uint8)": FunctionFragment;
|
||||
"reputation()": FunctionFragment;
|
||||
"sellerAllowList(uint256)": FunctionFragment;
|
||||
"sellerAllowList(address)": FunctionFragment;
|
||||
"setDefaultLockBlocks(uint256)": FunctionFragment;
|
||||
"setOwner(address)": FunctionFragment;
|
||||
"setReputation(address)": FunctionFragment;
|
||||
@@ -121,13 +167,7 @@ export interface P2PIXInterface extends utils.Interface {
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "deposit",
|
||||
values: [
|
||||
PromiseOrValue<string>,
|
||||
PromiseOrValue<BigNumberish>,
|
||||
PromiseOrValue<string>,
|
||||
PromiseOrValue<boolean>,
|
||||
PromiseOrValue<BytesLike>
|
||||
]
|
||||
values: [DataTypes.DepositArgsStruct]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "getBalance",
|
||||
@@ -163,13 +203,7 @@ export interface P2PIXInterface extends utils.Interface {
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "lock",
|
||||
values: [
|
||||
PromiseOrValue<string>,
|
||||
PromiseOrValue<string>,
|
||||
PromiseOrValue<BigNumberish>,
|
||||
PromiseOrValue<BytesLike>[],
|
||||
PromiseOrValue<BigNumberish>[]
|
||||
]
|
||||
values: [DataTypes.LockArgsStruct]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "lockCounter",
|
||||
@@ -196,7 +230,7 @@ export interface P2PIXInterface extends utils.Interface {
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "sellerAllowList",
|
||||
values: [PromiseOrValue<BigNumberish>]
|
||||
values: [PromiseOrValue<string>]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setDefaultLockBlocks",
|
||||
@@ -362,7 +396,7 @@ export interface P2PIXInterface extends utils.Interface {
|
||||
"DepositAdded(address,address,uint256)": EventFragment;
|
||||
"DepositWithdrawn(address,address,uint256)": EventFragment;
|
||||
"FundsWithdrawn(address,uint256)": EventFragment;
|
||||
"LockAdded(address,uint256,uint256,uint256)": EventFragment;
|
||||
"LockAdded(address,uint256,address,uint256)": EventFragment;
|
||||
"LockBlocksUpdated(uint256)": EventFragment;
|
||||
"LockReleased(address,uint256,uint256)": EventFragment;
|
||||
"LockReturned(address,uint256)": EventFragment;
|
||||
@@ -441,11 +475,11 @@ export type FundsWithdrawnEventFilter = TypedEventFilter<FundsWithdrawnEvent>;
|
||||
export interface LockAddedEventObject {
|
||||
buyer: string;
|
||||
lockID: BigNumber;
|
||||
seller: BigNumber;
|
||||
seller: string;
|
||||
amount: BigNumber;
|
||||
}
|
||||
export type LockAddedEvent = TypedEvent<
|
||||
[string, BigNumber, BigNumber, BigNumber],
|
||||
[string, BigNumber, string, BigNumber],
|
||||
LockAddedEventObject
|
||||
>;
|
||||
|
||||
@@ -598,11 +632,7 @@ export interface P2PIX extends BaseContract {
|
||||
defaultLockBlocks(overrides?: CallOverrides): Promise<[BigNumber]>;
|
||||
|
||||
deposit(
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
_pixTarget: PromiseOrValue<string>,
|
||||
_valid: PromiseOrValue<boolean>,
|
||||
allowlistRoot: PromiseOrValue<BytesLike>,
|
||||
args: DataTypes.DepositArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
@@ -652,11 +682,7 @@ export interface P2PIX extends BaseContract {
|
||||
): Promise<[boolean]>;
|
||||
|
||||
lock(
|
||||
_seller: PromiseOrValue<string>,
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
merkleProof: PromiseOrValue<BytesLike>[],
|
||||
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||
args: DataTypes.LockArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
@@ -666,14 +692,14 @@ export interface P2PIX extends BaseContract {
|
||||
arg0: PromiseOrValue<BigNumberish>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<
|
||||
[BigNumber, BigNumber, BigNumber, string, BigNumber, string, string] & {
|
||||
sellerKey: BigNumber;
|
||||
[BigNumber, BigNumber, string, BigNumber, string, string, string] & {
|
||||
counter: BigNumber;
|
||||
expirationBlock: BigNumber;
|
||||
pixTarget: string;
|
||||
amount: BigNumber;
|
||||
token: string;
|
||||
buyerAddress: string;
|
||||
seller: string;
|
||||
}
|
||||
>;
|
||||
|
||||
@@ -691,7 +717,7 @@ export interface P2PIX extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<[string] & { root: string }>;
|
||||
|
||||
@@ -789,11 +815,7 @@ export interface P2PIX extends BaseContract {
|
||||
defaultLockBlocks(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
deposit(
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
_pixTarget: PromiseOrValue<string>,
|
||||
_valid: PromiseOrValue<boolean>,
|
||||
allowlistRoot: PromiseOrValue<BytesLike>,
|
||||
args: DataTypes.DepositArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
@@ -843,11 +865,7 @@ export interface P2PIX extends BaseContract {
|
||||
): Promise<boolean>;
|
||||
|
||||
lock(
|
||||
_seller: PromiseOrValue<string>,
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
merkleProof: PromiseOrValue<BytesLike>[],
|
||||
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||
args: DataTypes.LockArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
@@ -857,14 +875,14 @@ export interface P2PIX extends BaseContract {
|
||||
arg0: PromiseOrValue<BigNumberish>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<
|
||||
[BigNumber, BigNumber, BigNumber, string, BigNumber, string, string] & {
|
||||
sellerKey: BigNumber;
|
||||
[BigNumber, BigNumber, string, BigNumber, string, string, string] & {
|
||||
counter: BigNumber;
|
||||
expirationBlock: BigNumber;
|
||||
pixTarget: string;
|
||||
amount: BigNumber;
|
||||
token: string;
|
||||
buyerAddress: string;
|
||||
seller: string;
|
||||
}
|
||||
>;
|
||||
|
||||
@@ -882,7 +900,7 @@ export interface P2PIX extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<string>;
|
||||
|
||||
@@ -980,11 +998,7 @@ export interface P2PIX extends BaseContract {
|
||||
defaultLockBlocks(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
deposit(
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
_pixTarget: PromiseOrValue<string>,
|
||||
_valid: PromiseOrValue<boolean>,
|
||||
allowlistRoot: PromiseOrValue<BytesLike>,
|
||||
args: DataTypes.DepositArgsStruct,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
@@ -1034,11 +1048,7 @@ export interface P2PIX extends BaseContract {
|
||||
): Promise<boolean>;
|
||||
|
||||
lock(
|
||||
_seller: PromiseOrValue<string>,
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
merkleProof: PromiseOrValue<BytesLike>[],
|
||||
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||
args: DataTypes.LockArgsStruct,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
@@ -1048,14 +1058,14 @@ export interface P2PIX extends BaseContract {
|
||||
arg0: PromiseOrValue<BigNumberish>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<
|
||||
[BigNumber, BigNumber, BigNumber, string, BigNumber, string, string] & {
|
||||
sellerKey: BigNumber;
|
||||
[BigNumber, BigNumber, string, BigNumber, string, string, string] & {
|
||||
counter: BigNumber;
|
||||
expirationBlock: BigNumber;
|
||||
pixTarget: string;
|
||||
amount: BigNumber;
|
||||
token: string;
|
||||
buyerAddress: string;
|
||||
seller: string;
|
||||
}
|
||||
>;
|
||||
|
||||
@@ -1073,7 +1083,7 @@ export interface P2PIX extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<string>;
|
||||
|
||||
@@ -1189,7 +1199,7 @@ export interface P2PIX extends BaseContract {
|
||||
): FundsWithdrawnEventFilter;
|
||||
FundsWithdrawn(owner?: null, amount?: null): FundsWithdrawnEventFilter;
|
||||
|
||||
"LockAdded(address,uint256,uint256,uint256)"(
|
||||
"LockAdded(address,uint256,address,uint256)"(
|
||||
buyer?: PromiseOrValue<string> | null,
|
||||
lockID?: PromiseOrValue<BigNumberish> | null,
|
||||
seller?: null,
|
||||
@@ -1293,11 +1303,7 @@ export interface P2PIX extends BaseContract {
|
||||
defaultLockBlocks(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
deposit(
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
_pixTarget: PromiseOrValue<string>,
|
||||
_valid: PromiseOrValue<boolean>,
|
||||
allowlistRoot: PromiseOrValue<BytesLike>,
|
||||
args: DataTypes.DepositArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
@@ -1347,11 +1353,7 @@ export interface P2PIX extends BaseContract {
|
||||
): Promise<BigNumber>;
|
||||
|
||||
lock(
|
||||
_seller: PromiseOrValue<string>,
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
merkleProof: PromiseOrValue<BytesLike>[],
|
||||
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||
args: DataTypes.LockArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
@@ -1376,7 +1378,7 @@ export interface P2PIX extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
@@ -1475,11 +1477,7 @@ export interface P2PIX extends BaseContract {
|
||||
defaultLockBlocks(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
deposit(
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
_pixTarget: PromiseOrValue<string>,
|
||||
_valid: PromiseOrValue<boolean>,
|
||||
allowlistRoot: PromiseOrValue<BytesLike>,
|
||||
args: DataTypes.DepositArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
@@ -1529,11 +1527,7 @@ export interface P2PIX extends BaseContract {
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
lock(
|
||||
_seller: PromiseOrValue<string>,
|
||||
_token: PromiseOrValue<string>,
|
||||
_amount: PromiseOrValue<BigNumberish>,
|
||||
merkleProof: PromiseOrValue<BytesLike>[],
|
||||
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||
args: DataTypes.LockArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
@@ -1558,7 +1552,7 @@ export interface P2PIX extends BaseContract {
|
||||
reputation(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
sellerAllowList(
|
||||
sellerKey: PromiseOrValue<BigNumberish>,
|
||||
sellerKey: PromiseOrValue<string>,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
|
||||
+435
-408
File diff suppressed because it is too large.
Load diff
+17
-44
@@ -12,53 +12,26 @@ import {
|
||||
Reputation,
|
||||
} from "../../src/types";
|
||||
|
||||
// exported interfaces
|
||||
export interface Deploys {
|
||||
signers: string[];
|
||||
p2pix: string;
|
||||
token: string;
|
||||
}
|
||||
import { Call, RepFixture, P2PixAndReputation, DepositArgs, LockArgs } from "./interfaces";
|
||||
|
||||
export interface Lock {
|
||||
sellerKey: BigNumber;
|
||||
counter: BigNumber;
|
||||
expirationBlock: BigNumber;
|
||||
pixTarget: string;
|
||||
token: string;
|
||||
buyerAddress: string;
|
||||
amount: BigNumber;
|
||||
}
|
||||
|
||||
export interface Call {
|
||||
target: string;
|
||||
callData: string;
|
||||
}
|
||||
|
||||
export interface Result {
|
||||
success: boolean;
|
||||
returnData: string;
|
||||
}
|
||||
|
||||
export interface P2pixFixture {
|
||||
p2pix: P2PIX;
|
||||
erc20: MockToken;
|
||||
proof: string[];
|
||||
merkleRoot: string;
|
||||
}
|
||||
|
||||
export interface RepFixture {
|
||||
reputation: Reputation;
|
||||
}
|
||||
|
||||
export interface MtcFixture {
|
||||
multicall: Multicall;
|
||||
}
|
||||
|
||||
type P2PixAndReputation = P2pixFixture &
|
||||
RepFixture &
|
||||
MtcFixture;
|
||||
|
||||
// exported constants
|
||||
export const createDepositArgs = (pixTarget: string, allowlistRoot: string, token: string, amount: BigNumber, valid:boolean): DepositArgs => ({
|
||||
pixTarget,
|
||||
allowlistRoot,
|
||||
token,
|
||||
amount,
|
||||
valid,
|
||||
});
|
||||
|
||||
export const createLockArgs = (seller: string, token: string, amount: BigNumber, merkleProof: string[], expiredLocks: BigNumber[]): LockArgs => ({
|
||||
seller,
|
||||
token,
|
||||
amount,
|
||||
merkleProof,
|
||||
expiredLocks,
|
||||
});
|
||||
|
||||
export const getSignerAddrs = (
|
||||
amount: number,
|
||||
addrs: SignerWithAddress[],
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
import { BigNumber } from "ethers";
|
||||
|
||||
import {
|
||||
MockToken,
|
||||
Multicall,
|
||||
P2PIX,
|
||||
Reputation,
|
||||
} from "../../src/types";
|
||||
|
||||
|
||||
// exported interfaces
|
||||
export interface Deploys {
|
||||
signers: string[];
|
||||
p2pix: string;
|
||||
token: string;
|
||||
}
|
||||
|
||||
export interface DepositArgs {
|
||||
pixTarget: string;
|
||||
allowlistRoot: string;
|
||||
token: string;
|
||||
amount: BigNumber;
|
||||
valid: boolean;
|
||||
}
|
||||
|
||||
export interface LockArgs {
|
||||
seller: string;
|
||||
token: string;
|
||||
amount: BigNumber;
|
||||
merkleProof: string[];
|
||||
expiredLocks: BigNumber[];
|
||||
}
|
||||
|
||||
export interface Lock {
|
||||
counter: BigNumber;
|
||||
expirationBlock: BigNumber;
|
||||
pixTarget: string;
|
||||
amount: BigNumber;
|
||||
token: string;
|
||||
buyerAddress: string;
|
||||
seller: string;
|
||||
}
|
||||
|
||||
export interface Call {
|
||||
target: string;
|
||||
callData: string;
|
||||
}
|
||||
|
||||
export interface Result {
|
||||
success: boolean;
|
||||
returnData: string;
|
||||
}
|
||||
|
||||
export interface P2pixFixture {
|
||||
p2pix: P2PIX;
|
||||
erc20: MockToken;
|
||||
proof: string[];
|
||||
merkleRoot: string;
|
||||
}
|
||||
|
||||
export interface RepFixture {
|
||||
reputation: Reputation;
|
||||
}
|
||||
|
||||
export interface MtcFixture {
|
||||
multicall: Multicall;
|
||||
}
|
||||
|
||||
export type P2PixAndReputation = P2pixFixture &
|
||||
RepFixture &
|
||||
MtcFixture;
|
||||
Reference in new issue
Block a user