Added support for flatsigs
This commit is contained in:
1 parent
3f9dff5b56
commit
7fe6415eed
32 files changed
+214
-205
No files matched your search
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -3,8 +3,8 @@
|
||||
"contractName": "DataTypes",
|
||||
"sourceName": "contracts/core/DataTypes.sol",
|
||||
"abi": [],
|
||||
"bytecode": "0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212201904685203adfcebeda9a1444d5381c24a37e2895e8a7dff26bd8d5af2fafcbc64736f6c63430008130033",
|
||||
"deployedBytecode": "0x600080fdfea26469706673582212201904685203adfcebeda9a1444d5381c24a37e2895e8a7dff26bd8d5af2fafcbc64736f6c63430008130033",
|
||||
"bytecode": "0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220cd1f7ebb936fcf31afe01a797870de94db3214655afaa1cb621785aa86bd86e964736f6c63430008130033",
|
||||
"deployedBytecode": "0x600080fdfea2646970667358221220cd1f7ebb936fcf31afe01a797870de94db3214655afaa1cb621785aa86bd86e964736f6c63430008130033",
|
||||
"linkReferences": {},
|
||||
"deployedLinkReferences": {}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -9,8 +9,8 @@
|
||||
"type": "error"
|
||||
}
|
||||
],
|
||||
"bytecode": "0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212201f6fe8a460e1235bb7e19365d8e3cc56b718d44f5db82f5fa3c90d3c7da59ebf64736f6c63430008130033",
|
||||
"deployedBytecode": "0x600080fdfea26469706673582212201f6fe8a460e1235bb7e19365d8e3cc56b718d44f5db82f5fa3c90d3c7da59ebf64736f6c63430008130033",
|
||||
"bytecode": "0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212209602e77b0002730843efd4bf0aab444a6a8daeade7f7f10052351ae288f5aa5264736f6c63430008130033",
|
||||
"deployedBytecode": "0x600080fdfea26469706673582212209602e77b0002730843efd4bf0aab444a6a8daeade7f7f10052351ae288f5aa5264736f6c63430008130033",
|
||||
"linkReferences": {},
|
||||
"deployedLinkReferences": {}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"_format": "hh-sol-dbg-1",
|
||||
"buildInfo": "../../build-info/3d12978eb8a70621f317c36179381ad8.json"
|
||||
"buildInfo": "../../build-info/811e76435f5423608b4f8fda7811bf8e.json"
|
||||
}
|
||||
@@ -839,29 +839,26 @@
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "lockID",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "pixTimestamp",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "r",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "s",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "uint8",
|
||||
"name": "v",
|
||||
"type": "uint8"
|
||||
"components": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "lockID",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "pixTimestamp",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes",
|
||||
"name": "signature",
|
||||
"type": "bytes"
|
||||
}
|
||||
],
|
||||
"internalType": "struct DataTypes.ReleaseArgs",
|
||||
"name": "args",
|
||||
"type": "tuple"
|
||||
}
|
||||
],
|
||||
"name": "release",
|
||||
@@ -1130,8 +1127,8 @@
|
||||
"type": "receive"
|
||||
}
|
||||
],
|
||||
"bytecode": "0x608060405262002d4680380380620000178162000126565b928339810160a0828203126200010b5781516020808401519093916001600160401b03918281116200010b5784620000519185016200017f565b9062000060604085016200016a565b9260608501518181116200010b57866200007c9187016200017f565b9460808101519182116200010b57019480601f870112156200010b578551620000af620000a98262000152565b62000126565b96888089848152019260051b8201019283116200010b578801905b828210620000f157505050620000e19550620001e6565b6040516129049081620004428239f35b815180151581036200010b578152908801908801620000ca565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176200014c57604052565b62000110565b6001600160401b0381116200014c5760051b60200190565b51906001600160a01b03821682036200010b57565b9080601f830112156200010b578151906200019e620000a98362000152565b9182938184526020808095019260051b8201019283116200010b578301905b828210620001cc575050505090565b838091620001da846200016a565b815201910190620001bd565b600080546001600160a01b031916339081178255929695949392817f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768180a3816003556040519182527f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851160208093a18651878301979060051b810183013d1515895b811562000306575b5050506040519280840191818552518092526040840198925b828110620002e85750505050907f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d782620002d593620002db97980390a16001600160a01b031662000337565b62000390565b620002e66001600455565b565b83516001600160a01b03168a52988101989281019260010162000289565b9085826001829697989451600c1b550190838210156200032c5791509493929462000268565b509493929462000270565b6000546001600160a01b0390811633036200037f57816020917fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9360025560405191168152a1565b6040516282b42960e81b8152600490fd5b60008054919290916001600160a01b031633036200037f5782519182156200043457815183036200042757602092919284818080970195019360051b0101925b838103620003df575050505050565b84809181600c63cbc9d1c48152825186528651918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a8680a301920191620003d0565b63ff633a3890526004601cfd5b63df95788390526004601cfdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c5780631e3c017a146102275780631e9bb57314610222578063367821f01461021d5780633c16f0c414610218578063461f3120146101cd57806349ef8448146102135780634b2ae9801461020e578063572b6c0514610209578063574983c8146102045780635fd8c710146101ff57806369cc6af4146101fa5780636d82d9e0146101f55780637f94f65d146101f057806380e1d302146101eb57806384ab1d28146101e65780638da5cb5b146101e15780638db564c2146101dc578063918dff57146101d75780639872dbfe146101d257806398a26871146101cd578063ad8f2eed146101c8578063b0983d39146101c3578063c52164c6146101be578063c593dfd8146101b9578063d1c07028146101b4578063d1ced2b0146101af578063d4fac45d146101aa578063d6e8b973146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e576119d1565b611961565b61191a565b611803565b6117f0565b611741565b6115f9565b6112e1565b6112ad565b611279565b611235565b610c81565b611217565b611192565b611151565b61111d565b6110e7565b6110d4565b611083565b610f92565b610f5c565b610ed9565b610e75565b610e25565b610dfb565b610d64565b610c57565b610bb9565b61080b565b61058b565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b60031990602082820112610262576004359167ffffffffffffffff83116102Line truncated
|
||||
"deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c5780631e3c017a146102275780631e9bb57314610222578063367821f01461021d5780633c16f0c414610218578063461f3120146101cd57806349ef8448146102135780634b2ae9801461020e578063572b6c0514610209578063574983c8146102045780635fd8c710146101ff57806369cc6af4146101fa5780636d82d9e0146101f55780637f94f65d146101f057806380e1d302146101eb57806384ab1d28146101e65780638da5cb5b146101e15780638db564c2146101dc578063918dff57146101d75780639872dbfe146101d257806398a26871146101cd578063ad8f2eed146101c8578063b0983d39146101c3578063c52164c6146101be578063c593dfd8146101b9578063d1c07028146101b4578063d1ced2b0146101af578063d4fac45d146101aa578063d6e8b973146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e576119d1565b611961565b61191a565b611803565b6117f0565b611741565b6115f9565b6112e1565b6112ad565b611279565b611235565b610c81565b611217565b611192565b611151565b61111d565b6110e7565b6110d4565b611083565b610f92565b610f5c565b610ed9565b610e75565b610e25565b610dfb565b610d64565b610c57565b610bb9565b61080b565b61058b565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b60031990602082820112610262576004359167ffffffffffffffff8311610262578260a0920301126102625760040190565b346102625761059936610559565b6105a38180611b19565b9050156107e157604081016105d56105d16105bd83611b6a565b63cbc9d1c4600c526000526020600c205490565b1590565b6107b7576b3fffffffffffffffffffffff61060e6105f283611b6a565b339060205263739094b1600c5260005260016034600c20015490565b169161063b606082019361063561062486611b74565b6bffffffffffffffffffffffff1690565b90611bcf565b916a52b7d2dcc80cd2e4000000831161078d5761073561071c61073b926106eb610778957f63d8d7d5e63e9840ec91a12a160d27b7cfab294f6ba070b7359692acfe6b03bf97610689611be6565b60208201358061077d575b506106bd60806106b66106b16106aa8680611b19565b36916118b5565b611ae3565b9301611bdc565b906106c785611b6a565b91605f1b1790339060205263739094b1600c526000526034600c2090600182015555565b61070d6106f782611b6a565b6107036106248a611b74565b9030903390611c21565b6107176001600455565b611b6a565b73ffffffffffffffffffffffffffffffffffffffff1690565b93611b74565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526bffffffffffffffffffffffff90911660208501523393918291820190565b0390a2005b6107879033612275565b38610694565b60046040517ff3fb0eb9000000000000000000000000000000000000000000000000000000008152fd5b60046040517f1578328e000000000000000000000000000000000000000000000000000000008152fd5b60046040517f6a3bc53e000000000000000000000000000000000000000000000000000000008152fd5b346102625761081936610559565b610821611be6565b6108376108316080830183611d13565b90612092565b61084081611b6a565b9061085b6105d1602083019361085585611b6a565b90612651565b610b8f5761087a61086b82611b6a565b61087484611b6a565b90612617565b6040918281019061089c61088d83611d67565b69ffffffffffffffffffff1690565b8310610b66576108ad600554611bbc565b9460016108c4876000526006602052604060002090565b0154431115610b3d576109aa906108d9611ea2565b9290946109716108fa6108eb87611b6a565b6108f486611b6a565b9061268e565b61091b61071c61091561090f60035443611bcf565b95611d67565b96611b6a565b9061092588611b6a565b9361092e6102dc565b9c8d5260208d01528a8c015261095460608c0195869069ffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff1660808b0152565b73ffffffffffffffffffffffffffffffffffffffff861660a08a015273ffffffffffffffffffffffffffffffffffffffff1660c0890152565b60608301916109b98385611dLine truncated
|
||||
"bytecode": "0x608060405262002d9680380380620000178162000126565b928339810160a0828203126200010b5781516020808401519093916001600160401b03918281116200010b5784620000519185016200017f565b9062000060604085016200016a565b9260608501518181116200010b57866200007c9187016200017f565b9460808101519182116200010b57019480601f870112156200010b578551620000af620000a98262000152565b62000126565b96888089848152019260051b8201019283116200010b578801905b828210620000f157505050620000e19550620001e6565b6040516129549081620004428239f35b815180151581036200010b578152908801908801620000ca565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176200014c57604052565b62000110565b6001600160401b0381116200014c5760051b60200190565b51906001600160a01b03821682036200010b57565b9080601f830112156200010b578151906200019e620000a98362000152565b9182938184526020808095019260051b8201019283116200010b578301905b828210620001cc575050505090565b838091620001da846200016a565b815201910190620001bd565b600080546001600160a01b031916339081178255929695949392817f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768180a3816003556040519182527f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851160208093a18651878301979060051b810183013d1515895b811562000306575b5050506040519280840191818552518092526040840198925b828110620002e85750505050907f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d782620002d593620002db97980390a16001600160a01b031662000337565b62000390565b620002e66001600455565b565b83516001600160a01b03168a52988101989281019260010162000289565b9085826001829697989451600c1b550190838210156200032c5791509493929462000268565b509493929462000270565b6000546001600160a01b0390811633036200037f57816020917fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9360025560405191168152a1565b6040516282b42960e81b8152600490fd5b60008054919290916001600160a01b031633036200037f5782519182156200043457815183036200042757602092919284818080970195019360051b0101925b838103620003df575050505050565b84809181600c63cbc9d1c48152825186528651918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a8680a301920191620003d0565b63ff633a3890526004601cfd5b63df95788390526004601cfdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c5780631e3c017a146102275780631e9bb57314610222578063367821f01461021d57806337c49d9c146102185780633c16f0c414610213578063461f3120146101c857806349ef84481461020e5780634b2ae98014610209578063572b6c0514610204578063574983c8146101ff5780635fd8c710146101fa57806369cc6af4146101f55780636d82d9e0146101f05780637f94f65d146101eb57806380e1d302146101e657806384ab1d28146101e15780638da5cb5b146101dc5780638db564c2146101d7578063918dff57146101d25780639872dbfe146101cd57806398a26871146101c8578063ad8f2eed146101c3578063b0983d39146101be578063c52164c6146101b9578063d1c07028146101b4578063d1ced2b0146101af578063d4fac45d146101aa578063d6e8b973146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e576119f1565b611981565b61193a565b611823565b611810565b611761565b611619565b6115d4565b6115a0565b61155c565b610fa8565b61153e565b6114b9565b611478565b611444565b61140e565b6113fb565b6113aa565b6112b9565b611283565b611200565b61119c565b61114c565b611122565b61108b565b610f7e565b610c57565b610bb9565b61080b565b61058b565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b60031990602082820112610262576004359167ffffffffffffffff83116102Line truncated
|
||||
"deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c5780631e3c017a146102275780631e9bb57314610222578063367821f01461021d57806337c49d9c146102185780633c16f0c414610213578063461f3120146101c857806349ef84481461020e5780634b2ae98014610209578063572b6c0514610204578063574983c8146101ff5780635fd8c710146101fa57806369cc6af4146101f55780636d82d9e0146101f05780637f94f65d146101eb57806380e1d302146101e657806384ab1d28146101e15780638da5cb5b146101dc5780638db564c2146101d7578063918dff57146101d25780639872dbfe146101cd57806398a26871146101c8578063ad8f2eed146101c3578063b0983d39146101be578063c52164c6146101b9578063d1c07028146101b4578063d1ced2b0146101af578063d4fac45d146101aa578063d6e8b973146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e576119f1565b611981565b61193a565b611823565b611810565b611761565b611619565b6115d4565b6115a0565b61155c565b610fa8565b61153e565b6114b9565b611478565b611444565b61140e565b6113fb565b6113aa565b6112b9565b611283565b611200565b61119c565b61114c565b611122565b61108b565b610f7e565b610c57565b610bb9565b61080b565b61058b565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b60031990602082820112610262576004359167ffffffffffffffff8311610262578260a0920301126102625760040190565b346102625761059936610559565b6105a38180611b39565b9050156107e157604081016105d56105d16105bd83611b8a565b63cbc9d1c4600c526000526020600c205490565b1590565b6107b7576b3fffffffffffffffffffffff61060e6105f283611b8a565b339060205263739094b1600c5260005260016034600c20015490565b169161063b606082019361063561062486611b94565b6bffffffffffffffffffffffff1690565b90611bef565b916a52b7d2dcc80cd2e4000000831161078d5761073561071c61073b926106eb610778957f63d8d7d5e63e9840ec91a12a160d27b7cfab294f6ba070b7359692acfe6b03bf97610689611c06565b60208201358061077d575b506106bd60806106b66106b16106aa8680611b39565b36916118d5565b611b03565b9301611bfc565b906106c785611b8a565b91605f1b1790339060205263739094b1600c526000526034600c2090600182015555565b61070d6106f782611b8a565b6107036106248a611b94565b9030903390611c41565b6107176001600455565b611b8a565b73ffffffffffffffffffffffffffffffffffffffff1690565b93611b94565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526bffffffffffffffffffffffff90911660208501523393918291820190565b0390a2005b610787903361229b565b38610694565b60046040517ff3fb0eb9000000000000000000000000000000000000000000000000000000008152fd5b60046040517f1578328e000000000000000000000000000000000000000000000000000000008152fd5b60046040517f6a3bc53e000000000000000000000000000000000000000000000000000000008152fd5b346102625761081936610559565b610821611c06565b6108376108316080830183611d33565b906120b8565b61084081611b8a565b9061085b6105d1602083019361085585611b8a565b906126a1565b610b8f5761087a61086b82611b8a565b61087484611b8a565b90612667565b6040918281019061089c61088d83611d87565b69ffffffffffffffffffff1690565b8310610b66576108ad600554611bdc565b9460016108c4876000526006602052604060002090565b0154431115610b3d576109aa906108d9611ec0565b9290946109716108fa6108eb87611b8a565b6108f486611b8a565b906126de565b61091b61071c61091561090f60035443611bef565b95611d87565b96611b8a565b9061092588611b8a565b9361092e6102dc565b9c8d5260208d01528a8c015261095460608c0195869069ffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff1660808b0152565b73ffffffffffffffffffffffffffffffffffffffff861660a08a015273ffffffffffffffffffffffffffffffffffffffff1660c0890152565b60608301916109b98385611dLine truncated
|
||||
"linkReferences": {},
|
||||
"deployedLinkReferences": {}
|
||||
}
|
||||
@@ -35,9 +35,7 @@ abstract contract BaseUtils is
|
||||
|
||||
function _signerCheck(
|
||||
bytes32 _message,
|
||||
bytes32 _r,
|
||||
bytes32 _s,
|
||||
uint8 _v
|
||||
bytes calldata _signature
|
||||
) internal view {
|
||||
if (usedTransactions(_message))
|
||||
revert TxAlreadyUsed();
|
||||
@@ -45,13 +43,11 @@ abstract contract BaseUtils is
|
||||
if (
|
||||
!validBacenSigners(
|
||||
_castAddrToKey(
|
||||
ECDSA.recover(
|
||||
ECDSA.recoverCalldata(
|
||||
ECDSA.toEthSignedMessageHash(
|
||||
_message
|
||||
),
|
||||
_v,
|
||||
_r,
|
||||
_s
|
||||
_signature
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -20,6 +20,12 @@ library DataTypes {
|
||||
uint256[] expiredLocks;
|
||||
}
|
||||
|
||||
struct ReleaseArgs {
|
||||
uint256 lockID;
|
||||
bytes32 pixTimestamp;
|
||||
bytes signature;
|
||||
}
|
||||
|
||||
struct Lock {
|
||||
uint256 counter;
|
||||
uint256 expirationBlock;
|
||||
|
||||
@@ -218,7 +218,7 @@ abstract contract OwnerSettings is
|
||||
assembly {
|
||||
success := staticcall(
|
||||
// gas
|
||||
0x7530,
|
||||
gas(),
|
||||
// address
|
||||
sload(reputation.slot),
|
||||
// argsOffset
|
||||
|
||||
@@ -15,26 +15,43 @@ library ECDSA {
|
||||
0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0;
|
||||
|
||||
/// @dev Recovers the signer's address from a message digest `hash`,
|
||||
/// and the signature defined by `v`, `r`, `s`.
|
||||
function recover(
|
||||
/// and the `signature`.
|
||||
///
|
||||
/// This function does NOT accept EIP-2098 short form signatures.
|
||||
/// Use `recover(bytes32 hash, bytes32 r, bytes32 vs)` for EIP-2098
|
||||
/// short form signatures instead.
|
||||
function recoverCalldata(
|
||||
bytes32 hash,
|
||||
uint8 v,
|
||||
bytes32 r,
|
||||
bytes32 s
|
||||
bytes calldata signature
|
||||
) internal view returns (address result) {
|
||||
/// @solidity memory-safe-assembly
|
||||
assembly {
|
||||
// Copy the free memory pointer so that we can restore it later.
|
||||
let m := mload(0x40)
|
||||
// Directly copy `r` and `s` from the calldata.
|
||||
calldatacopy(0x40, signature.offset, 0x40)
|
||||
// Store the `hash` in the scratch space.
|
||||
mstore(0x00, hash)
|
||||
mstore(0x20, and(v, 0xff))
|
||||
mstore(0x40, r)
|
||||
mstore(0x60, s)
|
||||
// Compute `v` and store it in the scratch space.
|
||||
mstore(
|
||||
0x20,
|
||||
byte(
|
||||
0,
|
||||
calldataload(add(signature.offset, 0x40))
|
||||
)
|
||||
)
|
||||
pop(
|
||||
staticcall(
|
||||
gas(), // Amount of gas left for the transaction.
|
||||
// If `s` in lower half order, such that the signature is not malleable.
|
||||
lt(s, add(_MALLEABILITY_THRESHOLD, 1)), // Address of `ecrecover`.
|
||||
and(
|
||||
// If the signature is exactly 65 bytes in length.
|
||||
eq(signature.length, 65),
|
||||
// If `s` in lower half order, such that the signature is not malleable.
|
||||
lt(
|
||||
mload(0x60),
|
||||
add(_MALLEABILITY_THRESHOLD, 1)
|
||||
)
|
||||
), // Address of `ecrecover`.
|
||||
0x00, // Start of input.
|
||||
0x80, // Size of input.
|
||||
0x00, // Start of output.
|
||||
|
||||
+6
-9
@@ -20,6 +20,7 @@ contract P2PIX is BaseUtils {
|
||||
|
||||
using DT for DT.DepositArgs;
|
||||
using DT for DT.LockArgs;
|
||||
using DT for DT.ReleaseArgs;
|
||||
using DT for DT.Lock;
|
||||
using DT for DT.LockStatus;
|
||||
|
||||
@@ -206,13 +207,9 @@ contract P2PIX is BaseUtils {
|
||||
/// - `release` caller gets accrued with `l.relayerPremium` as userRecord credit;
|
||||
/// @dev Function sighash: 0x4e1389ed.
|
||||
function release(
|
||||
uint256 lockID,
|
||||
bytes32 pixTimestamp,
|
||||
bytes32 r,
|
||||
bytes32 s,
|
||||
uint8 v
|
||||
DT.ReleaseArgs calldata args
|
||||
) public nonReentrant {
|
||||
DT.Lock storage l = mapLocks[lockID];
|
||||
DT.Lock storage l = mapLocks[args.lockID];
|
||||
|
||||
if (l.amount == 0) revert AlreadyReleased();
|
||||
if (l.expirationBlock < block.number)
|
||||
@@ -222,11 +219,11 @@ contract P2PIX is BaseUtils {
|
||||
abi.encodePacked(
|
||||
l.pixTarget,
|
||||
l.amount,
|
||||
pixTimestamp
|
||||
args.pixTimestamp
|
||||
)
|
||||
);
|
||||
|
||||
_signerCheck(message, r, s, v);
|
||||
_signerCheck(message, args.signature);
|
||||
|
||||
ERC20 t = ERC20(l.token);
|
||||
|
||||
@@ -254,7 +251,7 @@ contract P2PIX is BaseUtils {
|
||||
lockAmount
|
||||
);
|
||||
|
||||
emit LockReleased(l.buyerAddress, lockID, lockAmount);
|
||||
emit LockReleased(l.buyerAddress, args.lockID, lockAmount);
|
||||
}
|
||||
|
||||
/// @notice Unlocks expired locks.
|
||||
|
||||
@@ -15,7 +15,7 @@ const _abi = [
|
||||
];
|
||||
|
||||
const _bytecode =
|
||||
"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212201f6fe8a460e1235bb7e19365d8e3cc56b718d44f5db82f5fa3c90d3c7da59ebf64736f6c63430008130033";
|
||||
"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212209602e77b0002730843efd4bf0aab444a6a8daeade7f7f10052351ae288f5aa5264736f6c63430008130033";
|
||||
|
||||
type ECDSAConstructorParams =
|
||||
| [signer?: Signer]
|
||||
|
||||
@@ -850,29 +850,26 @@ const _abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "lockID",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "pixTimestamp",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "r",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "s",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "uint8",
|
||||
name: "v",
|
||||
type: "uint8",
|
||||
components: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "lockID",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "pixTimestamp",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "bytes",
|
||||
name: "signature",
|
||||
type: "bytes",
|
||||
},
|
||||
],
|
||||
internalType: "struct DataTypes.ReleaseArgs",
|
||||
name: "args",
|
||||
type: "tuple",
|
||||
},
|
||||
],
|
||||
name: "release",
|
||||
@@ -1143,7 +1140,7 @@ const _abi = [
|
||||
];
|
||||
|
||||
const _bytecode =
|
||||
"0x608060405262002d4680380380620000178162000126565b928339810160a0828203126200010b5781516020808401519093916001600160401b03918281116200010b5784620000519185016200017f565b9062000060604085016200016a565b9260608501518181116200010b57866200007c9187016200017f565b9460808101519182116200010b57019480601f870112156200010b578551620000af620000a98262000152565b62000126565b96888089848152019260051b8201019283116200010b578801905b828210620000f157505050620000e19550620001e6565b6040516129049081620004428239f35b815180151581036200010b578152908801908801620000ca565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176200014c57604052565b62000110565b6001600160401b0381116200014c5760051b60200190565b51906001600160a01b03821682036200010b57565b9080601f830112156200010b578151906200019e620000a98362000152565b9182938184526020808095019260051b8201019283116200010b578301905b828210620001cc575050505090565b838091620001da846200016a565b815201910190620001bd565b600080546001600160a01b031916339081178255929695949392817f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768180a3816003556040519182527f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851160208093a18651878301979060051b810183013d1515895b811562000306575b5050506040519280840191818552518092526040840198925b828110620002e85750505050907f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d782620002d593620002db97980390a16001600160a01b031662000337565b62000390565b620002e66001600455565b565b83516001600160a01b03168a52988101989281019260010162000289565b9085826001829697989451600c1b550190838210156200032c5791509493929462000268565b509493929462000270565b6000546001600160a01b0390811633036200037f57816020917fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9360025560405191168152a1565b6040516282b42960e81b8152600490fd5b60008054919290916001600160a01b031633036200037f5782519182156200043457815183036200042757602092919284818080970195019360051b0101925b838103620003df575050505050565b84809181600c63cbc9d1c48152825186528651918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a8680a301920191620003d0565b63ff633a3890526004601cfd5b63df95788390526004601cfdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c5780631e3c017a146102275780631e9bb57314610222578063367821f01461021d5780633c16f0c414610218578063461f3120146101cd57806349ef8448146102135780634b2ae9801461020e578063572b6c0514610209578063574983c8146102045780635fd8c710146101ff57806369cc6af4146101fa5780636d82d9e0146101f55780637f94f65d146101f057806380e1d302146101eb57806384ab1d28146101e65780638da5cb5b146101e15780638db564c2146101dc578063918dff57146101d75780639872dbfe146101d257806398a26871146101cd578063ad8f2eed146101c8578063b0983d39146101c3578063c52164c6146101be578063c593dfd8146101b9578063d1c07028146101b4578063d1ced2b0146101af578063d4fac45d146101aa578063d6e8b973146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e576119d1565b611961565b61191a565b611803565b6117f0565b611741565b6115f9565b6112e1565b6112ad565b611279565b611235565b610c81565b611217565b611192565b611151565b61111d565b6110e7565b6110d4565b611083565b610f92565b610f5c565b610ed9565b610e75565b610e25565b610dfb565b610d64565b610c57565b610bb9565b61080b565b61058b565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b60031990602082820112610262576004359167ffffffffffffffff8311610262578260a092Line truncated
|
||||
"0x608060405262002d9680380380620000178162000126565b928339810160a0828203126200010b5781516020808401519093916001600160401b03918281116200010b5784620000519185016200017f565b9062000060604085016200016a565b9260608501518181116200010b57866200007c9187016200017f565b9460808101519182116200010b57019480601f870112156200010b578551620000af620000a98262000152565b62000126565b96888089848152019260051b8201019283116200010b578801905b828210620000f157505050620000e19550620001e6565b6040516129549081620004428239f35b815180151581036200010b578152908801908801620000ca565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176200014c57604052565b62000110565b6001600160401b0381116200014c5760051b60200190565b51906001600160a01b03821682036200010b57565b9080601f830112156200010b578151906200019e620000a98362000152565b9182938184526020808095019260051b8201019283116200010b578301905b828210620001cc575050505090565b838091620001da846200016a565b815201910190620001bd565b600080546001600160a01b031916339081178255929695949392817f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768180a3816003556040519182527f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851160208093a18651878301979060051b810183013d1515895b811562000306575b5050506040519280840191818552518092526040840198925b828110620002e85750505050907f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d782620002d593620002db97980390a16001600160a01b031662000337565b62000390565b620002e66001600455565b565b83516001600160a01b03168a52988101989281019260010162000289565b9085826001829697989451600c1b550190838210156200032c5791509493929462000268565b509493929462000270565b6000546001600160a01b0390811633036200037f57816020917fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9360025560405191168152a1565b6040516282b42960e81b8152600490fd5b60008054919290916001600160a01b031633036200037f5782519182156200043457815183036200042757602092919284818080970195019360051b0101925b838103620003df575050505050565b84809181600c63cbc9d1c48152825186528651918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a8680a301920191620003d0565b63ff633a3890526004601cfd5b63df95788390526004601cfdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304937320146102365780630d2a2d441461023157806313af40351461022c5780631e3c017a146102275780631e9bb57314610222578063367821f01461021d57806337c49d9c146102185780633c16f0c414610213578063461f3120146101c857806349ef84481461020e5780634b2ae98014610209578063572b6c0514610204578063574983c8146101ff5780635fd8c710146101fa57806369cc6af4146101f55780636d82d9e0146101f05780637f94f65d146101eb57806380e1d302146101e657806384ab1d28146101e15780638da5cb5b146101dc5780638db564c2146101d7578063918dff57146101d25780639872dbfe146101cd57806398a26871146101c8578063ad8f2eed146101c3578063b0983d39146101be578063c52164c6146101b9578063d1c07028146101b4578063d1ced2b0146101af578063d4fac45d146101aa578063d6e8b973146101a5578063e449c52a146101a0578063f7d0e04b1461019b5763fb8c5ef00361000e576119f1565b611981565b61193a565b611823565b611810565b611761565b611619565b6115d4565b6115a0565b61155c565b610fa8565b61153e565b6114b9565b611478565b611444565b61140e565b6113fb565b6113aa565b6112b9565b611283565b611200565b61119c565b61114c565b611122565b61108b565b610f7e565b610c57565b610bb9565b61080b565b61058b565b6104c7565b61039a565b346102625760206003193601126102625760043560005260076020526020604060002054604051908152f35b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102d757604052565b610267565b6040519060e0820182811067ffffffffffffffff8211176102d757604052565b67ffffffffffffffff81116102d75760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81160361026257565b81601f8201121561026257803591610349836102fc565b926103576040519485610296565b808452602092838086019260051b820101928311610262578301905b828210610381575050505090565b838091833561038f81610314565b815201910190610373565b34610262576020806003193601126102625760043567ffffffffffffffff8111610262576103cc903690600401610332565b9073ffffffffffffffffffffffffffffffffffffffff918260005416330361049d57805181830192849160051b830181013d1515855b8115610469575b50505060405192818401908285525180915260408401949160005b828110610453577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101610424565b90838260018298969499979951600c1b55019083821015610491579150959395949294610402565b50959395949294610409565b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b34610262576020600319360112610262576004356104e481610314565b600090815473ffffffffffffffffffffffffffffffffffffffff808216330361049d577fffffffffffffffffffffffff0000000000000000000000000000000000000000921691829116178255337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768380a380f35b60031990602082820112610262576004359167ffffffffffffffff8311610262578260a092Line truncated
|
||||
|
||||
type P2PIXConstructorParams =
|
||||
| [signer?: Signer]
|
||||
|
||||
@@ -71,6 +71,18 @@ export declare namespace DataTypes {
|
||||
merkleProof: string[];
|
||||
expiredLocks: BigNumber[];
|
||||
};
|
||||
|
||||
export type ReleaseArgsStruct = {
|
||||
lockID: PromiseOrValue<BigNumberish>;
|
||||
pixTimestamp: PromiseOrValue<BytesLike>;
|
||||
signature: PromiseOrValue<BytesLike>;
|
||||
};
|
||||
|
||||
export type ReleaseArgsStructOutput = [BigNumber, string, string] & {
|
||||
lockID: BigNumber;
|
||||
pixTimestamp: string;
|
||||
signature: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface P2PIXInterface extends utils.Interface {
|
||||
@@ -92,7 +104,7 @@ export interface P2PIXInterface extends utils.Interface {
|
||||
"lockCounter()": FunctionFragment;
|
||||
"mapLocks(uint256)": FunctionFragment;
|
||||
"owner()": FunctionFragment;
|
||||
"release(uint256,bytes32,bytes32,bytes32,uint8)": FunctionFragment;
|
||||
"release((uint256,bytes32,bytes))": FunctionFragment;
|
||||
"reputation()": FunctionFragment;
|
||||
"sellerAllowList(address)": FunctionFragment;
|
||||
"setDefaultLockBlocks(uint256)": FunctionFragment;
|
||||
@@ -216,13 +228,7 @@ export interface P2PIXInterface extends utils.Interface {
|
||||
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "release",
|
||||
values: [
|
||||
PromiseOrValue<BigNumberish>,
|
||||
PromiseOrValue<BytesLike>,
|
||||
PromiseOrValue<BytesLike>,
|
||||
PromiseOrValue<BytesLike>,
|
||||
PromiseOrValue<BigNumberish>
|
||||
]
|
||||
values: [DataTypes.ReleaseArgsStruct]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "reputation",
|
||||
@@ -706,11 +712,7 @@ export interface P2PIX extends BaseContract {
|
||||
owner(overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
release(
|
||||
lockID: PromiseOrValue<BigNumberish>,
|
||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||
r: PromiseOrValue<BytesLike>,
|
||||
s: PromiseOrValue<BytesLike>,
|
||||
v: PromiseOrValue<BigNumberish>,
|
||||
args: DataTypes.ReleaseArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
@@ -889,11 +891,7 @@ export interface P2PIX extends BaseContract {
|
||||
owner(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
release(
|
||||
lockID: PromiseOrValue<BigNumberish>,
|
||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||
r: PromiseOrValue<BytesLike>,
|
||||
s: PromiseOrValue<BytesLike>,
|
||||
v: PromiseOrValue<BigNumberish>,
|
||||
args: DataTypes.ReleaseArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
@@ -1072,11 +1070,7 @@ export interface P2PIX extends BaseContract {
|
||||
owner(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
release(
|
||||
lockID: PromiseOrValue<BigNumberish>,
|
||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||
r: PromiseOrValue<BytesLike>,
|
||||
s: PromiseOrValue<BytesLike>,
|
||||
v: PromiseOrValue<BigNumberish>,
|
||||
args: DataTypes.ReleaseArgsStruct,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
@@ -1367,11 +1361,7 @@ export interface P2PIX extends BaseContract {
|
||||
owner(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
release(
|
||||
lockID: PromiseOrValue<BigNumberish>,
|
||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||
r: PromiseOrValue<BytesLike>,
|
||||
s: PromiseOrValue<BytesLike>,
|
||||
v: PromiseOrValue<BigNumberish>,
|
||||
args: DataTypes.ReleaseArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
@@ -1541,11 +1531,7 @@ export interface P2PIX extends BaseContract {
|
||||
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
release(
|
||||
lockID: PromiseOrValue<BigNumberish>,
|
||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||
r: PromiseOrValue<BytesLike>,
|
||||
s: PromiseOrValue<BytesLike>,
|
||||
v: PromiseOrValue<BigNumberish>,
|
||||
args: DataTypes.ReleaseArgsStruct,
|
||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
|
||||
+73
-72
@@ -39,6 +39,7 @@ import {
|
||||
randomSigners,
|
||||
createDepositArgs,
|
||||
createLockArgs,
|
||||
createReleaseArgs
|
||||
} from "./utils/fixtures";
|
||||
|
||||
describe("P2PIX", () => {
|
||||
@@ -869,7 +870,7 @@ describe("P2PIX", () => {
|
||||
const flatSig = await acc01.signMessage(
|
||||
messageHashBytes,
|
||||
);
|
||||
const sig = ethers.utils.splitSignature(flatSig);
|
||||
// const sig = ethers.utils.splitSignature(flatSig);
|
||||
await erc20.approve(p2pix.address, newPrice);
|
||||
await p2pix.deposit(
|
||||
createDepositArgs(
|
||||
@@ -894,11 +895,11 @@ describe("P2PIX", () => {
|
||||
await p2pix
|
||||
.connect(acc01)
|
||||
.release(
|
||||
1,
|
||||
createReleaseArgs(
|
||||
ethers.constants.One,
|
||||
endtoendID,
|
||||
sig.r,
|
||||
sig.s,
|
||||
sig.v,
|
||||
flatSig
|
||||
),
|
||||
);
|
||||
const tx = await p2pix
|
||||
.connect(acc01)
|
||||
@@ -1267,7 +1268,7 @@ describe("P2PIX", () => {
|
||||
const flatSig = await acc01.signMessage(
|
||||
ethers.utils.arrayify(messageToSign),
|
||||
);
|
||||
const sig = ethers.utils.splitSignature(flatSig);
|
||||
// const sig = ethers.utils.splitSignature(flatSig);
|
||||
await erc20.approve(p2pix.address, price);
|
||||
await p2pix.deposit(
|
||||
createDepositArgs(
|
||||
@@ -1292,12 +1293,12 @@ describe("P2PIX", () => {
|
||||
const lockID = ethers.constants.One;
|
||||
await mine(13);
|
||||
const fail = p2pix.release(
|
||||
lockID,
|
||||
ethers.constants.HashZero,
|
||||
sig.r,
|
||||
sig.s,
|
||||
sig.v,
|
||||
);
|
||||
createReleaseArgs(
|
||||
lockID,
|
||||
ethers.constants.HashZero,
|
||||
flatSig,
|
||||
),
|
||||
);
|
||||
|
||||
await expect(fail).to.be.revertedWithCustomError(
|
||||
p2pix,
|
||||
@@ -1314,7 +1315,7 @@ describe("P2PIX", () => {
|
||||
const flatSig = await acc01.signMessage(
|
||||
ethers.utils.arrayify(messageToSign),
|
||||
);
|
||||
const sig = ethers.utils.splitSignature(flatSig);
|
||||
// const sig = ethers.utils.splitSignature(flatSig);
|
||||
await erc20.approve(p2pix.address, price);
|
||||
await p2pix.deposit(
|
||||
createDepositArgs(
|
||||
@@ -1338,18 +1339,18 @@ describe("P2PIX", () => {
|
||||
);
|
||||
const lockID = ethers.constants.One;
|
||||
await p2pix.release(
|
||||
lockID,
|
||||
ethers.constants.HashZero,
|
||||
sig.r,
|
||||
sig.s,
|
||||
sig.v,
|
||||
);
|
||||
createReleaseArgs(
|
||||
lockID,
|
||||
ethers.constants.HashZero,
|
||||
flatSig
|
||||
),
|
||||
);
|
||||
const fail = p2pix.release(
|
||||
lockID,
|
||||
ethers.constants.HashZero,
|
||||
sig.r,
|
||||
sig.s,
|
||||
sig.v,
|
||||
createReleaseArgs(
|
||||
lockID,
|
||||
ethers.constants.HashZero,
|
||||
flatSig,
|
||||
),
|
||||
);
|
||||
|
||||
await expect(fail).to.be.revertedWithCustomError(
|
||||
@@ -1366,7 +1367,7 @@ describe("P2PIX", () => {
|
||||
const flatSig = await owner.signMessage(
|
||||
ethers.utils.arrayify(messageToSign),
|
||||
);
|
||||
const sig = ethers.utils.splitSignature(flatSig);
|
||||
// const sig = ethers.utils.splitSignature(flatSig);
|
||||
await erc20.approve(p2pix.address, price);
|
||||
await p2pix.deposit(
|
||||
createDepositArgs(
|
||||
@@ -1392,12 +1393,12 @@ describe("P2PIX", () => {
|
||||
await p2pix
|
||||
.connect(acc01)
|
||||
.release(
|
||||
1,
|
||||
ethers.constants.HashZero,
|
||||
sig.r,
|
||||
sig.s,
|
||||
sig.v,
|
||||
);
|
||||
createReleaseArgs(
|
||||
ethers.constants.One,
|
||||
ethers.constants.HashZero,
|
||||
flatSig,
|
||||
),
|
||||
);
|
||||
await p2pix
|
||||
.connect(acc03)
|
||||
.lock(
|
||||
@@ -1412,11 +1413,11 @@ describe("P2PIX", () => {
|
||||
const fail = p2pix
|
||||
.connect(acc01)
|
||||
.release(
|
||||
2,
|
||||
ethers.constants.HashZero,
|
||||
sig.r,
|
||||
sig.s,
|
||||
sig.v,
|
||||
createReleaseArgs(
|
||||
ethers.constants.Two,
|
||||
ethers.constants.HashZero,
|
||||
flatSig,
|
||||
),
|
||||
);
|
||||
|
||||
await expect(fail).to.be.revertedWithCustomError(
|
||||
@@ -1433,7 +1434,7 @@ describe("P2PIX", () => {
|
||||
const flatSig = await acc03.signMessage(
|
||||
ethers.utils.arrayify(messageToSign),
|
||||
);
|
||||
const sig = ethers.utils.splitSignature(flatSig);
|
||||
// const sig = ethers.utils.splitSignature(flatSig);
|
||||
|
||||
await erc20.approve(p2pix.address, price);
|
||||
await p2pix.deposit(
|
||||
@@ -1459,11 +1460,11 @@ describe("P2PIX", () => {
|
||||
const fail = p2pix
|
||||
.connect(acc01)
|
||||
.release(
|
||||
1,
|
||||
ethers.constants.HashZero,
|
||||
sig.r,
|
||||
sig.s,
|
||||
sig.v,
|
||||
createReleaseArgs(
|
||||
ethers.constants.One,
|
||||
ethers.constants.HashZero,
|
||||
flatSig,
|
||||
),
|
||||
);
|
||||
|
||||
await expect(fail).to.be.revertedWithCustomError(
|
||||
@@ -1494,7 +1495,7 @@ describe("P2PIX", () => {
|
||||
const flatSig = await acc01.signMessage(
|
||||
messageHashBytes,
|
||||
);
|
||||
const sig = ethers.utils.splitSignature(flatSig);
|
||||
// const sig = ethers.utils.splitSignature(flatSig);
|
||||
const root = ethers.constants.HashZero;
|
||||
|
||||
await erc20.approve(p2pix.address, price);
|
||||
@@ -1536,12 +1537,12 @@ describe("P2PIX", () => {
|
||||
const tx = await p2pix
|
||||
.connect(acc01)
|
||||
.release(
|
||||
1,
|
||||
endtoendID,
|
||||
sig.r,
|
||||
sig.s,
|
||||
sig.v,
|
||||
);
|
||||
createReleaseArgs(
|
||||
ethers.constants.One,
|
||||
endtoendID,
|
||||
flatSig,
|
||||
),
|
||||
);
|
||||
|
||||
const lockStatus1 =
|
||||
await p2pix.callStatic.getLocksStatus([1]);
|
||||
@@ -1650,7 +1651,7 @@ describe("P2PIX", () => {
|
||||
const flatSig1 = await owner.signMessage(
|
||||
ethers.utils.arrayify(messageToSign1),
|
||||
);
|
||||
const sig1 = ethers.utils.splitSignature(flatSig1);
|
||||
// const sig1 = ethers.utils.splitSignature(flatSig1);
|
||||
const messageToSign2 = ethers.utils.solidityKeccak256(
|
||||
["bytes32", "uint80", "bytes32"],
|
||||
[await p2pix.callStatic.getStr(pixTarget), 50, endtoendID],
|
||||
@@ -1658,7 +1659,7 @@ describe("P2PIX", () => {
|
||||
const flatSig2 = await owner.signMessage(
|
||||
ethers.utils.arrayify(messageToSign2),
|
||||
);
|
||||
const sig2 = ethers.utils.splitSignature(flatSig2);
|
||||
// const sig2 = ethers.utils.splitSignature(flatSig2);
|
||||
const messageToSign3 = ethers.utils.solidityKeccak256(
|
||||
["bytes32", "uint80", "bytes32"],
|
||||
[await p2pix.callStatic.getStr(pixTarget), 25, endtoendID],
|
||||
@@ -1666,7 +1667,7 @@ describe("P2PIX", () => {
|
||||
const flatSig3 = await owner.signMessage(
|
||||
ethers.utils.arrayify(messageToSign3),
|
||||
);
|
||||
const sig3 = ethers.utils.splitSignature(flatSig3);
|
||||
// const sig3 = ethers.utils.splitSignature(flatSig3);
|
||||
await erc20.approve(p2pix.address, price);
|
||||
await p2pix.deposit(
|
||||
createDepositArgs(
|
||||
@@ -1739,33 +1740,33 @@ describe("P2PIX", () => {
|
||||
const tx = await p2pix
|
||||
.connect(acc01)
|
||||
.release(
|
||||
lockID,
|
||||
endtoendID,
|
||||
sig1.r,
|
||||
sig1.s,
|
||||
sig1.v,
|
||||
createReleaseArgs(
|
||||
lockID,
|
||||
endtoendID,
|
||||
flatSig1,
|
||||
),
|
||||
);
|
||||
// relayerPremium != 0 &&
|
||||
// lock's msg.sender != release's msg.sender
|
||||
const tx1 = await p2pix
|
||||
.connect(acc01)
|
||||
.release(
|
||||
lockID2,
|
||||
endtoendID,
|
||||
sig2.r,
|
||||
sig2.s,
|
||||
sig2.v,
|
||||
createReleaseArgs(
|
||||
lockID2,
|
||||
endtoendID,
|
||||
flatSig2,
|
||||
),
|
||||
);
|
||||
// relayerPremium != 0 &&
|
||||
// lock's msg.sender == release's msg.sender
|
||||
const tx2 = await p2pix
|
||||
.connect(acc03)
|
||||
.release(
|
||||
createReleaseArgs(
|
||||
lockID3,
|
||||
endtoendID,
|
||||
sig3.r,
|
||||
sig3.s,
|
||||
sig3.v,
|
||||
flatSig3,
|
||||
),
|
||||
);
|
||||
const used1 = await p2pix.callStatic.usedTransactions(
|
||||
ethers.utils.arrayify(messageToSign1),
|
||||
@@ -1909,7 +1910,7 @@ describe("P2PIX", () => {
|
||||
const flatSig = await acc01.signMessage(
|
||||
messageHashBytes,
|
||||
);
|
||||
const sig = ethers.utils.splitSignature(flatSig);
|
||||
// const sig = ethers.utils.splitSignature(flatSig);
|
||||
await erc20.approve(p2pix.address, price);
|
||||
await p2pix.deposit(
|
||||
createDepositArgs(
|
||||
@@ -1934,12 +1935,12 @@ describe("P2PIX", () => {
|
||||
const lockID = ethers.constants.One;
|
||||
// await mine(10);
|
||||
await p2pix.release(
|
||||
lockID,
|
||||
endtoendID,
|
||||
sig.r,
|
||||
sig.s,
|
||||
sig.v,
|
||||
);
|
||||
createReleaseArgs(
|
||||
lockID,
|
||||
endtoendID,
|
||||
flatSig,
|
||||
),
|
||||
);
|
||||
const fail = p2pix.unlockExpired([lockID]);
|
||||
|
||||
await expect(fail).to.be.revertedWithCustomError(
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
Reputation,
|
||||
} from "../../src/types";
|
||||
|
||||
import { Call, RepFixture, P2PixAndReputation, DepositArgs, LockArgs } from "./interfaces";
|
||||
import { Call, RepFixture, P2PixAndReputation, DepositArgs, LockArgs, ReleaseArgs } from "./interfaces";
|
||||
|
||||
|
||||
// exported constants
|
||||
@@ -32,6 +32,12 @@ export const createLockArgs = (seller: string, token: string, amount: BigNumber,
|
||||
expiredLocks,
|
||||
});
|
||||
|
||||
export const createReleaseArgs = (lockID: BigNumber, pixTimestamp: string, signature: string): ReleaseArgs => ({
|
||||
lockID,
|
||||
pixTimestamp,
|
||||
signature,
|
||||
});
|
||||
|
||||
export const getSignerAddrs = (
|
||||
amount: number,
|
||||
addrs: SignerWithAddress[],
|
||||
|
||||
@@ -31,6 +31,12 @@ export interface LockArgs {
|
||||
expiredLocks: BigNumber[];
|
||||
}
|
||||
|
||||
export interface ReleaseArgs {
|
||||
lockID: BigNumber;
|
||||
pixTimestamp: string;
|
||||
signature: string;
|
||||
}
|
||||
|
||||
export interface Lock {
|
||||
counter: BigNumber;
|
||||
expirationBlock: BigNumber;
|
||||
|
||||
Reference in new issue
Block a user