✨ V2 Release
This commit is contained in:
parent
0d612572c6
commit
6fe1e794d0
@ -1,8 +1,11 @@
|
|||||||
INFURA_API_KEY="{INSERT_API_KEY}"
|
|
||||||
MNEMONIC="{INSERT_12_WORD_MNEMONIC}"
|
MNEMONIC="{INSERT_12_WORD_MNEMONIC}"
|
||||||
|
|
||||||
|
INFURA_API_KEY="{INSERT_API_KEY}"
|
||||||
|
ALCHEMY_API_KEY="{INSERT_API_KEY}"
|
||||||
|
|
||||||
# Block explorer API keys
|
# Block explorer API keys
|
||||||
ETHERSCAN_API_KEY="{INSERT_API_KEY}"
|
ETHERSCAN_API_KEY="{INSERT_API_KEY}"
|
||||||
|
POLYGONSCAN_API_KEY="{INSERT_API_KEY}"
|
||||||
GASPRICE_API_ENDPOINT="https://api.etherscan.io/api?module=proxy&action=eth_gasPrice"
|
GASPRICE_API_ENDPOINT="https://api.etherscan.io/api?module=proxy&action=eth_gasPrice"
|
||||||
COINMARKETCAP_API_KEY="{INSERT_API_KEY}"
|
COINMARKETCAP_API_KEY="{INSERT_API_KEY}"
|
||||||
|
|
||||||
|
49
README.md
49
README.md
@ -18,7 +18,6 @@
|
|||||||
│ ├── tokens
|
│ ├── tokens
|
||||||
│ │ └── ERC20.sol
|
│ │ └── ERC20.sol
|
||||||
│ └── utils
|
│ └── utils
|
||||||
│ ├── Counters.sol
|
|
||||||
│ ├── MerkleProofLib.sol
|
│ ├── MerkleProofLib.sol
|
||||||
│ ├── ReentrancyGuard.sol
|
│ ├── ReentrancyGuard.sol
|
||||||
│ └── SafeTransferLib.sol
|
│ └── SafeTransferLib.sol
|
||||||
@ -30,6 +29,37 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## Current Deployment addresses
|
||||||
|
|
||||||
|
### V1
|
||||||
|
| Testnet | Token Address | P2pix Address |
|
||||||
|
|--------- |-------------------------------------------- |-------------------------------------------- |
|
||||||
|
| Goerli | 0x294003F602c321627152c6b7DED3EAb5bEa853Ee | 0x5f3EFA9A90532914545CEf527C530658af87e196 |
|
||||||
|
| Mumbai | 0x294003F602c321627152c6b7DED3EAb5bEa853Ee | 0x5f3EFA9A90532914545CEf527C530658af87e196 |
|
||||||
|
|
||||||
|
<!-- All contracts deployed by 0x8dC06F985C131166570825F52447E8c88d64aE20 -->
|
||||||
|
|
||||||
|
<!-- https://goerli.etherscan.io/address/0x294003F602c321627152c6b7DED3EAb5bEa853Ee#code -->
|
||||||
|
|
||||||
|
<!-- https://goerli.etherscan.io/address/0x5f3EFA9A90532914545CEf527C530658af87e196#code -->
|
||||||
|
|
||||||
|
<!-- https://mumbai.polygonscan.com/address/0x294003F602c321627152c6b7DED3EAb5bEa853Ee#code -->
|
||||||
|
|
||||||
|
<!-- https://mumbai.polygonscan.com/address/0x5f3EFA9A90532914545CEf527C530658af87e196#code -->
|
||||||
|
|
||||||
|
### V2
|
||||||
|
| Testnet | Token Address | P2pix Address | Reputation Address |
|
||||||
|
|--------- |-------------------------------------------- |-------------------------------------------- |-------------------------------------------- |
|
||||||
|
| Goerli | 0x4A2886EAEc931e04297ed336Cc55c4eb7C75BA00 | 0x2a54667b566B1Aa3779828720E6696AC18ae3f1b | 0x7c4010CFe2B5446f0c9dcc5e9B596534b2D2eB44 |
|
||||||
|
| Mumbai | 0xC86042E9F2977C62Da8c9dDF7F9c40fde4796A29 | 0x7F4680D114B43c4434FB604c7Bc6306125D32f28 | 0xD38D6367f452D097ccBfDe4490b7de570B6A72Db |
|
||||||
|
|
||||||
|
<!-- All contracts deployed by 0x8dC06F985C131166570825F52447E8c88d64aE20 -->
|
||||||
|
<!-- https://goerli.etherscan.io/address/0x4A2886EAEc931e04297ed336Cc55c4eb7C75BA00#code -->
|
||||||
|
<!-- https://goerli.etherscan.io/address/0x2a54667b566B1Aa3779828720E6696AC18ae3f1b#code -->
|
||||||
|
<!-- https://goerli.etherscan.io/address/0x7c4010CFe2B5446f0c9dcc5e9B596534b2D2eB44#code -->
|
||||||
|
<!-- https://mumbai.polygonscan.com/address/0xC86042E9F2977C62Da8c9dDF7F9c40fde4796A29#code -->
|
||||||
|
<!-- https://mumbai.polygonscan.com/address/0x7F4680D114B43c4434FB604c7Bc6306125D32f28#code -->
|
||||||
|
<!-- https://mumbai.polygonscan.com/address/0xD38D6367f452D097ccBfDe4490b7de570B6A72Db#code -->
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Pre Requisites
|
### Pre Requisites
|
||||||
@ -103,3 +133,20 @@ yarn deploy2:localhost
|
|||||||
|
|
||||||
**_NOTE_:** The second script transfers 2M tokens to the first wallet of the node.
|
**_NOTE_:** The second script transfers 2M tokens to the first wallet of the node.
|
||||||
To use the P2Pix smart contract first transfer some of the tokens to other wallets.
|
To use the P2Pix smart contract first transfer some of the tokens to other wallets.
|
||||||
|
|
||||||
|
|
||||||
|
## Deploying to testnets
|
||||||
|
|
||||||
|
Deploy to Ethereum's Goerli testnet:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn deploy1:goerli
|
||||||
|
yarn deploy2:goerli
|
||||||
|
```
|
||||||
|
|
||||||
|
Deploy to Polygon's Mumbai testnet:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn deploy1:mumbai
|
||||||
|
yarn deploy2:mumbai
|
||||||
|
```
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../build-info/f807a312b7619f2547c334c76d81a8da.json"
|
"buildInfo": "../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../build-info/f807a312b7619f2547c334c76d81a8da.json"
|
"buildInfo": "../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
@ -202,9 +202,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"indexed": true,
|
"indexed": true,
|
||||||
"internalType": "bytes32",
|
"internalType": "uint256",
|
||||||
"name": "lockID",
|
"name": "lockID",
|
||||||
"type": "bytes32"
|
"type": "uint256"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"indexed": false,
|
"indexed": false,
|
||||||
@ -246,9 +246,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"indexed": false,
|
"indexed": false,
|
||||||
"internalType": "bytes32",
|
"internalType": "uint256",
|
||||||
"name": "lockId",
|
"name": "lockId",
|
||||||
"type": "bytes32"
|
"type": "uint256"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"indexed": false,
|
"indexed": false,
|
||||||
@ -271,9 +271,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"indexed": false,
|
"indexed": false,
|
||||||
"internalType": "bytes32",
|
"internalType": "uint256",
|
||||||
"name": "lockId",
|
"name": "lockId",
|
||||||
"type": "bytes32"
|
"type": "uint256"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"name": "LockReturned",
|
"name": "LockReturned",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../build-info/916d546d680bb337e1c490eb628d93df.json"
|
"buildInfo": "../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
@ -99,8 +99,8 @@
|
|||||||
"type": "function"
|
"type": "function"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a35061036b806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100dc57600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102a6565b6100e8565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac3660046102d6565b6101a9565b6000546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610095565b61008b643a3529440081565b6000546001600160a01b031633146101465760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006101cc6101b88380610305565b6101c790643a35294400610324565b6101f4565b6101d983620f4240610305565b6101e3919061033c565b6101ee906001610324565b92915050565b60b58171010000000000000000000000000000000000811061021b5760409190911b9060801c5b690100000000000000000081106102375760209190911b9060401c5b65010000000000811061024f5760109190911b9060201c5b630100000081106102655760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6000602082840312156102b857600080fd5b81356001600160a01b03811681146102cf57600080fd5b9392505050565b6000602082840312156102e857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561031f5761031f6102ef565b500290565b60008219821115610337576103376102ef565b500190565b60008261035957634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000809000a",
|
"bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350610416806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100f657600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102f4565b610102565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac366004610331565b6101f7565b6000546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b61008b643a3529440081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600061021a6102068380610379565b61021590643a352944006103b6565b610242565b61022783620f4240610379565b61023191906103ce565b61023c9060016103b6565b92915050565b60b5817101000000000000000000000000000000000081106102695760409190911b9060801c5b690100000000000000000081106102855760209190911b9060401c5b65010000000000811061029d5760109190911b9060201c5b630100000081106102b35760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60006020828403121561030657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a57600080fd5b9392505050565b60006020828403121561034357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156103b1576103b161034a565b500290565b600082198211156103c9576103c961034a565b500190565b600082610404577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000809000a",
|
||||||
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100dc57600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102a6565b6100e8565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac3660046102d6565b6101a9565b6000546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610095565b61008b643a3529440081565b6000546001600160a01b031633146101465760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006101cc6101b88380610305565b6101c790643a35294400610324565b6101f4565b6101d983620f4240610305565b6101e3919061033c565b6101ee906001610324565b92915050565b60b58171010000000000000000000000000000000000811061021b5760409190911b9060801c5b690100000000000000000081106102375760209190911b9060401c5b65010000000000811061024f5760109190911b9060201c5b630100000081106102655760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6000602082840312156102b857600080fd5b81356001600160a01b03811681146102cf57600080fd5b9392505050565b6000602082840312156102e857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561031f5761031f6102ef565b500290565b60008219821115610337576103376102ef565b500190565b60008261035957634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000809000a",
|
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100f657600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102f4565b610102565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac366004610331565b6101f7565b6000546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b61008b643a3529440081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600061021a6102068380610379565b61021590643a352944006103b6565b610242565b61022783620f4240610379565b61023191906103ce565b61023c9060016103b6565b92915050565b60b5817101000000000000000000000000000000000081106102695760409190911b9060801c5b690100000000000000000081106102855760209190911b9060401c5b65010000000000811061029d5760109190911b9060201c5b630100000081106102b35760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60006020828403121561030657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a57600080fd5b9392505050565b60006020828403121561034357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156103b1576103b161034a565b500290565b600082198211156103c9576103c961034a565b500190565b600082610404577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000809000a",
|
||||||
"linkReferences": {},
|
"linkReferences": {},
|
||||||
"deployedLinkReferences": {}
|
"deployedLinkReferences": {}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json"
|
"buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json"
|
"buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json"
|
"buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json"
|
"buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"_format": "hh-sol-dbg-1",
|
|
||||||
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json"
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"_format": "hh-sol-artifact-1",
|
|
||||||
"contractName": "Counters",
|
|
||||||
"sourceName": "contracts/lib/utils/Counters.sol",
|
|
||||||
"abi": [
|
|
||||||
{
|
|
||||||
"inputs": [],
|
|
||||||
"name": "DecOverflow",
|
|
||||||
"type": "error"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a",
|
|
||||||
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a",
|
|
||||||
"linkReferences": {},
|
|
||||||
"deployedLinkReferences": {}
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json"
|
"buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json"
|
"buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json"
|
"buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../build-info/a89635dd94b1e537327e1582c6d97eb3.json"
|
"buildInfo": "../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
@ -23,18 +23,18 @@ interface EventAndErrors {
|
|||||||
);
|
);
|
||||||
event LockAdded(
|
event LockAdded(
|
||||||
address indexed buyer,
|
address indexed buyer,
|
||||||
bytes32 indexed lockID,
|
uint256 indexed lockID,
|
||||||
uint256 seller,
|
uint256 seller,
|
||||||
uint256 amount
|
uint256 amount
|
||||||
);
|
);
|
||||||
event LockReleased(
|
event LockReleased(
|
||||||
address indexed buyer,
|
address indexed buyer,
|
||||||
bytes32 lockId,
|
uint256 lockId,
|
||||||
uint256 amount
|
uint256 amount
|
||||||
);
|
);
|
||||||
event LockReturned(
|
event LockReturned(
|
||||||
address indexed buyer,
|
address indexed buyer,
|
||||||
bytes32 lockId
|
uint256 lockId
|
||||||
);
|
);
|
||||||
event FundsWithdrawn(
|
event FundsWithdrawn(
|
||||||
address owner,
|
address owner,
|
||||||
@ -108,8 +108,10 @@ interface EventAndErrors {
|
|||||||
|
|
||||||
/// @dev 0xce3a3d37
|
/// @dev 0xce3a3d37
|
||||||
error DecOverflow();
|
error DecOverflow();
|
||||||
/// @dev 0x
|
/// @dev 0xf3fb0eb9
|
||||||
error MaxBalExceeded();
|
error MaxBalExceeded();
|
||||||
|
/// @dev 0x6a3bc53e
|
||||||
error EmptyPixTarget();
|
error EmptyPixTarget();
|
||||||
|
/// @dev 0x87138d5c
|
||||||
error NotInitialized();
|
error NotInitialized();
|
||||||
}
|
}
|
||||||
|
@ -1,52 +0,0 @@
|
|||||||
// SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
pragma solidity >=0.8.4;
|
|
||||||
|
|
||||||
/// @title Counters
|
|
||||||
/// @author buf0t9
|
|
||||||
/// @author Modified from OpenZeppelin Contracts
|
|
||||||
/// (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Counters.sol)
|
|
||||||
/// @notice Provides counters that can only be incremented, decrementedor reset.
|
|
||||||
/// @dev Include with `using Counters for Counters.Counter;`
|
|
||||||
library Counters {
|
|
||||||
// solhint-disable no-inline-assembly
|
|
||||||
struct Counter {
|
|
||||||
/// @dev Interactions must be restricted to the library's function.
|
|
||||||
uint256 _val; // := 0
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev 0xce3a3d37
|
|
||||||
error DecOverflow();
|
|
||||||
|
|
||||||
function current(
|
|
||||||
Counter storage counter
|
|
||||||
) internal view returns (uint256 _val) {
|
|
||||||
assembly {
|
|
||||||
_val := sload(counter.slot)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function increment(Counter storage counter) internal {
|
|
||||||
assembly {
|
|
||||||
let _val := sload(counter.slot)
|
|
||||||
sstore(counter.slot, add(_val, 0x01))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function decrement(Counter storage counter) internal {
|
|
||||||
assembly {
|
|
||||||
let _val := sload(counter.slot)
|
|
||||||
if or(iszero(_val), lt(_val, 0x00)) {
|
|
||||||
mstore(0x00, 0xce3a3d37)
|
|
||||||
revert(0x1c, 0x04)
|
|
||||||
}
|
|
||||||
sstore(counter.slot, sub(_val, 0x01))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function reset(Counter storage counter) internal {
|
|
||||||
assembly {
|
|
||||||
sstore(counter.slot, 0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -9,7 +9,6 @@ pragma solidity 0.8.9;
|
|||||||
///
|
///
|
||||||
|
|
||||||
import { Owned } from "./lib/auth/Owned.sol";
|
import { Owned } from "./lib/auth/Owned.sol";
|
||||||
// import { Counters } from "./lib/utils/Counters.sol";
|
|
||||||
import { ERC20, SafeTransferLib } from "./lib/utils/SafeTransferLib.sol";
|
import { ERC20, SafeTransferLib } from "./lib/utils/SafeTransferLib.sol";
|
||||||
import { IReputation } from "./lib/interfaces/IReputation.sol";
|
import { IReputation } from "./lib/interfaces/IReputation.sol";
|
||||||
import { MerkleProofLib as Merkle } from "./lib/utils/MerkleProofLib.sol";
|
import { MerkleProofLib as Merkle } from "./lib/utils/MerkleProofLib.sol";
|
||||||
@ -24,22 +23,22 @@ contract P2PIX is
|
|||||||
{
|
{
|
||||||
// solhint-disable use-forbidden-name
|
// solhint-disable use-forbidden-name
|
||||||
// solhint-disable no-inline-assembly
|
// solhint-disable no-inline-assembly
|
||||||
|
// solhint-disable no-empty-blocks
|
||||||
|
|
||||||
// using Counters for Counters.Counter;
|
|
||||||
using DT for DT.Lock;
|
using DT for DT.Lock;
|
||||||
|
|
||||||
/// ███ Constants ██████████████████████████████████████████████████████████
|
/// ███ Constants ██████████████████████████████████████████████████████████
|
||||||
|
|
||||||
/// @dev The bitmask of `sellerBalance` entry.
|
/// @dev The bitmask of `sellerBalance` entry.
|
||||||
uint256 constant private BITMASK_SB_ENTRY = (1 << 94) - 1;
|
uint256 private constant BITMASK_SB_ENTRY = (1 << 94) - 1;
|
||||||
/// @dev The bit position of `pixTarget` in `sellerBalance`.
|
/// @dev The bit position of `pixTarget` in `sellerBalance`.
|
||||||
uint256 constant private BITPOS_PIXTARGET = 95;
|
uint256 private constant BITPOS_PIXTARGET = 95;
|
||||||
/// @dev The bit position of `valid` in `sellerBalance`.
|
/// @dev The bit position of `valid` in `sellerBalance`.
|
||||||
uint256 constant private BITPOS_VALID = 255;
|
uint256 private constant BITPOS_VALID = 255;
|
||||||
/// @dev The bitmask of all 256 bits of `sellerBalance` except for the last one.
|
/// @dev The bitmask of all 256 bits of `sellerBalance` except for the last one.
|
||||||
uint256 constant private BITMASK_VALID = (1 << 255) - 1;
|
uint256 private constant BITMASK_VALID = (1 << 255) - 1;
|
||||||
/// @dev The scalar of BRZ token.
|
/// @dev The scalar of BRZ token.
|
||||||
uint256 constant public WAD = 1e18;
|
uint256 public constant WAD = 1e18;
|
||||||
|
|
||||||
/// ███ Storage ████████████████████████████████████████████████████████████
|
/// ███ Storage ████████████████████████████████████████████████████████████
|
||||||
|
|
||||||
@ -51,7 +50,7 @@ contract P2PIX is
|
|||||||
uint256 public lockCounter;
|
uint256 public lockCounter;
|
||||||
|
|
||||||
/// @dev List of Locks.
|
/// @dev List of Locks.
|
||||||
mapping(bytes32 => DT.Lock) public mapLocks;
|
mapping(uint256 => DT.Lock) public mapLocks;
|
||||||
/// @dev Seller casted to key => Seller's allowlist merkleroot.
|
/// @dev Seller casted to key => Seller's allowlist merkleroot.
|
||||||
mapping(uint256 => bytes32) public sellerAllowList;
|
mapping(uint256 => bytes32) public sellerAllowList;
|
||||||
/// @dev Stores an relayer's last computed credit.
|
/// @dev Stores an relayer's last computed credit.
|
||||||
@ -70,7 +69,8 @@ contract P2PIX is
|
|||||||
|
|
||||||
/// @dev `balance` max. value = 10**26.
|
/// @dev `balance` max. value = 10**26.
|
||||||
/// @dev `pixTarget` keys are restricted to 160 bits.
|
/// @dev `pixTarget` keys are restricted to 160 bits.
|
||||||
mapping(uint256 => mapping(ERC20 => uint256)) public sellerBalance;
|
mapping(uint256 => mapping(ERC20 => uint256))
|
||||||
|
public sellerBalance;
|
||||||
|
|
||||||
/// ███ Constructor ████████████████████████████████████████████████████████
|
/// ███ Constructor ████████████████████████████████████████████████████████
|
||||||
|
|
||||||
@ -127,8 +127,16 @@ contract P2PIX is
|
|||||||
uint256 amountCasted;
|
uint256 amountCasted;
|
||||||
uint256 pixTargetCasted;
|
uint256 pixTargetCasted;
|
||||||
uint256 validCasted;
|
uint256 validCasted;
|
||||||
(amountCasted, pixTargetCasted, validCasted) =
|
(
|
||||||
_castToUint(_amount, _pixTarget, _valid);
|
amountCasted,
|
||||||
|
pixTargetCasted,
|
||||||
|
validCasted
|
||||||
|
) = _castToUint(
|
||||||
|
_amount,
|
||||||
|
_pixTarget,
|
||||||
|
_valid
|
||||||
|
);
|
||||||
|
|
||||||
sellerBalance[k][t] =
|
sellerBalance[k][t] =
|
||||||
(currBal + amountCasted) |
|
(currBal + amountCasted) |
|
||||||
(pixTargetCasted << BITPOS_PIXTARGET) |
|
(pixTargetCasted << BITPOS_PIXTARGET) |
|
||||||
@ -155,17 +163,21 @@ contract P2PIX is
|
|||||||
/// @dev This function does not affect any ongoing active locks.
|
/// @dev This function does not affect any ongoing active locks.
|
||||||
/// @dev Function sighash: 0x72fada5c.
|
/// @dev Function sighash: 0x72fada5c.
|
||||||
function setValidState(ERC20 token, bool state) public {
|
function setValidState(ERC20 token, bool state) public {
|
||||||
uint256 key = _castAddrToKey(msg.sender);
|
uint256 key =
|
||||||
|
_castAddrToKey(msg.sender);
|
||||||
uint256 _sellerBalance =
|
uint256 _sellerBalance =
|
||||||
sellerBalance[key][token];
|
sellerBalance[key][token];
|
||||||
|
|
||||||
if (_sellerBalance != 0) {
|
if (_sellerBalance != 0) {
|
||||||
uint256 _valid;
|
uint256 _valid;
|
||||||
assembly {
|
assembly { _valid := state }
|
||||||
_valid := state
|
|
||||||
}
|
_sellerBalance =
|
||||||
_sellerBalance = (_sellerBalance & BITMASK_VALID) |
|
(_sellerBalance & BITMASK_VALID) |
|
||||||
(_valid << BITPOS_VALID);
|
(_valid << BITPOS_VALID);
|
||||||
sellerBalance[key][token] = _sellerBalance;
|
|
||||||
|
sellerBalance[key][token] =
|
||||||
|
_sellerBalance;
|
||||||
|
|
||||||
emit ValidSet(
|
emit ValidSet(
|
||||||
msg.sender,
|
msg.sender,
|
||||||
@ -203,39 +215,38 @@ contract P2PIX is
|
|||||||
uint256 _relayerPremium,
|
uint256 _relayerPremium,
|
||||||
uint256 _amount,
|
uint256 _amount,
|
||||||
bytes32[] calldata merkleProof,
|
bytes32[] calldata merkleProof,
|
||||||
bytes32[] calldata expiredLocks
|
uint256[] calldata expiredLocks
|
||||||
) public nonReentrant returns (bytes32 lockID) {
|
) public nonReentrant returns (uint256) {
|
||||||
unlockExpired(expiredLocks);
|
unlockExpired(expiredLocks);
|
||||||
|
|
||||||
ERC20 t = ERC20(_token);
|
ERC20 t = ERC20(_token);
|
||||||
if (!getValid(_seller, t))
|
if (!getValid(_seller, t))
|
||||||
revert InvalidDeposit();
|
revert InvalidDeposit();
|
||||||
uint256 bal = getBalance(_seller, t);
|
|
||||||
|
uint256 bal =
|
||||||
|
getBalance(_seller, t);
|
||||||
if (bal < _amount)
|
if (bal < _amount)
|
||||||
revert NotEnoughTokens();
|
revert NotEnoughTokens();
|
||||||
|
|
||||||
uint256 k =
|
uint256 k =
|
||||||
_castAddrToKey(_seller);
|
_castAddrToKey(_seller);
|
||||||
|
|
||||||
uint256 cachedCounter =
|
uint256 cCounter =
|
||||||
lockCounter + 1;
|
lockCounter + 1;
|
||||||
|
|
||||||
lockID = keccak256(
|
if (mapLocks[cCounter].expirationBlock
|
||||||
abi.encodePacked(
|
>= block.number)
|
||||||
lockCounter,
|
|
||||||
_amount,
|
|
||||||
_buyerAddress
|
|
||||||
)
|
|
||||||
);
|
|
||||||
if (mapLocks[lockID].expirationBlock >= block.number)
|
|
||||||
revert NotExpired();
|
revert NotExpired();
|
||||||
|
|
||||||
DT.Lock memory l = DT.Lock(
|
DT.Lock memory l = DT.Lock(
|
||||||
k,
|
k,
|
||||||
cachedCounter,
|
cCounter,
|
||||||
_relayerPremium,
|
_relayerPremium,
|
||||||
_amount,
|
_amount,
|
||||||
(block.number + defaultLockBlocks),
|
(block.number +
|
||||||
uint160(sellerBalance[k][t] >> BITPOS_PIXTARGET),
|
defaultLockBlocks),
|
||||||
|
uint160(sellerBalance[k][t]
|
||||||
|
>> BITPOS_PIXTARGET),
|
||||||
_buyerAddress,
|
_buyerAddress,
|
||||||
_relayerTarget,
|
_relayerTarget,
|
||||||
msg.sender,
|
msg.sender,
|
||||||
@ -252,54 +263,60 @@ contract P2PIX is
|
|||||||
_addLock(
|
_addLock(
|
||||||
bal,
|
bal,
|
||||||
_amount,
|
_amount,
|
||||||
lockID,
|
cCounter,
|
||||||
l,
|
l,
|
||||||
t,
|
t,
|
||||||
k);
|
k
|
||||||
|
);
|
||||||
|
|
||||||
lockCounter++;
|
lockCounter++;
|
||||||
|
|
||||||
// Halt execution and output `lockID`.
|
// Halt execution and output `lockID`.
|
||||||
return lockID;
|
return cCounter;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (l.amount <= 1e2 ether) {
|
if (l.amount <= 1e2 ether) {
|
||||||
_addLock(
|
_addLock(
|
||||||
bal,
|
bal,
|
||||||
_amount,
|
_amount,
|
||||||
lockID,
|
cCounter,
|
||||||
l,
|
l,
|
||||||
t,
|
t,
|
||||||
k);
|
k
|
||||||
|
);
|
||||||
|
|
||||||
lockCounter++;
|
lockCounter++;
|
||||||
|
|
||||||
// Halt execution and output `lockID`.
|
// Halt execution and output `lockID`.
|
||||||
return lockID;
|
return cCounter;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
uint256 userCredit = userRecord[
|
uint256 userCredit = userRecord[
|
||||||
_castAddrToKey(msg.sender)
|
_castAddrToKey(msg.sender)
|
||||||
];
|
];
|
||||||
uint256 spendLimit;
|
|
||||||
(spendLimit) = _limiter(userCredit / WAD);
|
|
||||||
|
|
||||||
if (l.amount > (spendLimit * WAD) ||
|
uint256 spendLimit;
|
||||||
l.amount > 1e6 ether)
|
(spendLimit) =
|
||||||
revert AmountNotAllowed();
|
_limiter(userCredit / WAD);
|
||||||
|
|
||||||
|
if (
|
||||||
|
l.amount > (spendLimit * WAD) ||
|
||||||
|
l.amount > 1e6 ether
|
||||||
|
) revert AmountNotAllowed();
|
||||||
|
|
||||||
_addLock(
|
_addLock(
|
||||||
bal,
|
bal,
|
||||||
_amount,
|
_amount,
|
||||||
lockID,
|
cCounter,
|
||||||
l,
|
l,
|
||||||
t,
|
t,
|
||||||
k);
|
k
|
||||||
|
);
|
||||||
|
|
||||||
lockCounter++;
|
lockCounter++;
|
||||||
|
|
||||||
// Halt execution and output `lockID`.
|
// Halt execution and output `lockID`.
|
||||||
return lockID;
|
return cCounter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -318,7 +335,7 @@ contract P2PIX is
|
|||||||
/// @param _relayerTarget Target address entitled to the `relayerPremim`.
|
/// @param _relayerTarget Target address entitled to the `relayerPremim`.
|
||||||
/// @dev Function sighash: 0x4e1389ed.
|
/// @dev Function sighash: 0x4e1389ed.
|
||||||
function release(
|
function release(
|
||||||
bytes32 lockID,
|
uint256 lockID,
|
||||||
address _relayerTarget,
|
address _relayerTarget,
|
||||||
bytes32 pixTimestamp,
|
bytes32 pixTimestamp,
|
||||||
bytes32 r,
|
bytes32 r,
|
||||||
@ -358,22 +375,25 @@ contract P2PIX is
|
|||||||
ERC20 t = ERC20(l.token);
|
ERC20 t = ERC20(l.token);
|
||||||
|
|
||||||
// We cache values before zeroing them out.
|
// We cache values before zeroing them out.
|
||||||
uint256 lockAmount = l.amount;
|
uint256 lockAmount =
|
||||||
uint256 totalAmount = (lockAmount - l.relayerPremium);
|
l.amount;
|
||||||
|
uint256 totalAmount =
|
||||||
|
(lockAmount - l.relayerPremium);
|
||||||
|
|
||||||
l.amount = 0;
|
l.amount = 0;
|
||||||
l.expirationBlock = 0;
|
l.expirationBlock = 0;
|
||||||
usedTransactions[message] = true;
|
usedTransactions[message] = true;
|
||||||
|
|
||||||
if (msg.sender != l.relayerAddress) {
|
if (msg.sender != l.relayerAddress) {
|
||||||
userRecord[_castAddrToKey(msg.sender)] += l
|
userRecord[
|
||||||
.relayerPremium;
|
_castAddrToKey(msg.sender)
|
||||||
|
] += l.relayerPremium;
|
||||||
userRecord[
|
userRecord[
|
||||||
_castAddrToKey(l.relayerAddress)
|
_castAddrToKey(l.relayerAddress)
|
||||||
] += lockAmount;
|
] += lockAmount;
|
||||||
} else {
|
} else {
|
||||||
userRecord[_castAddrToKey(msg.sender)] += (l
|
userRecord[_castAddrToKey(msg.sender)]
|
||||||
.relayerPremium + lockAmount);
|
+= (l.relayerPremium + lockAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
SafeTransferLib.safeTransfer(
|
SafeTransferLib.safeTransfer(
|
||||||
@ -404,7 +424,11 @@ contract P2PIX is
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
emit LockReleased(l.buyerAddress, lockID, lockAmount);
|
emit LockReleased(
|
||||||
|
l.buyerAddress,
|
||||||
|
lockID,
|
||||||
|
lockAmount
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @notice Unlocks expired locks.
|
/// @notice Unlocks expired locks.
|
||||||
@ -413,38 +437,49 @@ contract P2PIX is
|
|||||||
/// @dev For each successfull unexpired lock recovered,
|
/// @dev For each successfull unexpired lock recovered,
|
||||||
/// `userRecord[_castAddrToKey(l.relayerAddress)]` is decreased by half of its value.
|
/// `userRecord[_castAddrToKey(l.relayerAddress)]` is decreased by half of its value.
|
||||||
/// @dev Function sighash: 0x8e2749d6.
|
/// @dev Function sighash: 0x8e2749d6.
|
||||||
function unlockExpired(
|
function unlockExpired(uint256[] calldata lockIDs)
|
||||||
bytes32[] calldata lockIDs
|
public
|
||||||
) public {
|
{
|
||||||
uint256 i;
|
uint256 i;
|
||||||
uint256 locksSize = lockIDs.length;
|
uint256 locksSize = lockIDs.length;
|
||||||
|
|
||||||
for (i; i < locksSize; ) {
|
for (i; i < locksSize; ) {
|
||||||
DT.Lock storage l = mapLocks[lockIDs[i]];
|
DT.Lock storage l =
|
||||||
|
mapLocks[lockIDs[i]];
|
||||||
|
|
||||||
_notExpired(l);
|
_notExpired(l);
|
||||||
|
|
||||||
uint256 _sellerBalance =
|
uint256 _sellerBalance =
|
||||||
sellerBalance[l.sellerKey][ERC20(l.token)] & BITMASK_SB_ENTRY;
|
sellerBalance[
|
||||||
if((_sellerBalance + l.amount) > 1e8 ether)
|
l.sellerKey][ERC20(l.token)
|
||||||
|
] & BITMASK_SB_ENTRY;
|
||||||
|
|
||||||
|
if (
|
||||||
|
(_sellerBalance + l.amount)
|
||||||
|
> 1e8 ether
|
||||||
|
)
|
||||||
revert MaxBalExceeded();
|
revert MaxBalExceeded();
|
||||||
|
|
||||||
sellerBalance[l.sellerKey][ERC20(l.token)] += l.amount;
|
sellerBalance[
|
||||||
|
l.sellerKey][ERC20(l.token)
|
||||||
|
] += l.amount;
|
||||||
|
|
||||||
l.amount = 0;
|
l.amount = 0;
|
||||||
|
|
||||||
uint256 userKey = _castAddrToKey(
|
uint256 userKey =
|
||||||
l.relayerAddress
|
_castAddrToKey(l.relayerAddress);
|
||||||
);
|
uint256 _newUserRecord =
|
||||||
uint256 _newUserRecord = (userRecord[userKey] >>
|
(userRecord[userKey] >> 1);
|
||||||
1);
|
|
||||||
|
|
||||||
if (_newUserRecord <= 1e2 ether) {
|
if (_newUserRecord <= 1e2 ether) {
|
||||||
userRecord[userKey] = 1e2 ether;
|
userRecord[userKey] = 1e2 ether;
|
||||||
} else {
|
} else {
|
||||||
userRecord[userKey] = _newUserRecord;
|
userRecord[userKey] = _newUserRecord;
|
||||||
}
|
}
|
||||||
emit LockReturned(l.buyerAddress, lockIDs[i]);
|
emit LockReturned(
|
||||||
|
l.buyerAddress,
|
||||||
|
lockIDs[i]
|
||||||
|
);
|
||||||
|
|
||||||
unchecked {
|
unchecked {
|
||||||
++i;
|
++i;
|
||||||
@ -466,11 +501,11 @@ contract P2PIX is
|
|||||||
/// @dev Function sighash: 0x36317972.
|
/// @dev Function sighash: 0x36317972.
|
||||||
function withdraw(
|
function withdraw(
|
||||||
ERC20 token,
|
ERC20 token,
|
||||||
bytes32[] calldata expiredLocks
|
uint256 amount,
|
||||||
|
uint256[] calldata expiredLocks
|
||||||
)
|
)
|
||||||
public
|
public
|
||||||
nonReentrant
|
nonReentrant
|
||||||
returns(uint256 _sellerBalance)
|
|
||||||
{
|
{
|
||||||
unlockExpired(expiredLocks);
|
unlockExpired(expiredLocks);
|
||||||
|
|
||||||
@ -482,33 +517,31 @@ contract P2PIX is
|
|||||||
|
|
||||||
uint256 key =
|
uint256 key =
|
||||||
_castAddrToKey(msg.sender);
|
_castAddrToKey(msg.sender);
|
||||||
|
_decBal(
|
||||||
sellerBalance[key][token] -=
|
(sellerBalance[key][token]
|
||||||
(_sellerBalance =
|
& BITMASK_SB_ENTRY),
|
||||||
sellerBalance[key][token]
|
amount,
|
||||||
& BITMASK_SB_ENTRY);
|
token,
|
||||||
|
key
|
||||||
if(_sellerBalance == 0)
|
);
|
||||||
revert InvalidDeposit();
|
|
||||||
|
|
||||||
// safeTransfer tokens to seller
|
// safeTransfer tokens to seller
|
||||||
SafeTransferLib.safeTransfer(
|
SafeTransferLib.safeTransfer(
|
||||||
token,
|
token,
|
||||||
msg.sender,
|
msg.sender,
|
||||||
_sellerBalance
|
amount
|
||||||
);
|
);
|
||||||
|
|
||||||
emit DepositWithdrawn(
|
emit DepositWithdrawn(
|
||||||
msg.sender,
|
msg.sender,
|
||||||
address(token),
|
address(token),
|
||||||
_sellerBalance
|
amount
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setRoot(
|
function setRoot(address addr, bytes32 merkleroot)
|
||||||
address addr,
|
public
|
||||||
bytes32 merkleroot
|
{
|
||||||
) public {
|
|
||||||
if (addr == msg.sender) {
|
if (addr == msg.sender) {
|
||||||
sellerAllowList[
|
sellerAllowList[
|
||||||
_castAddrToKey(addr)
|
_castAddrToKey(addr)
|
||||||
@ -527,27 +560,30 @@ contract P2PIX is
|
|||||||
emit FundsWithdrawn(msg.sender, balance);
|
emit FundsWithdrawn(msg.sender, balance);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setReputation(
|
function setReputation(IReputation _reputation)
|
||||||
IReputation _reputation
|
public
|
||||||
) public onlyOwner {
|
onlyOwner
|
||||||
|
{
|
||||||
assembly {
|
assembly {
|
||||||
sstore(reputation.slot, _reputation)
|
sstore(reputation.slot, _reputation)
|
||||||
}
|
}
|
||||||
emit ReputationUpdated(address(_reputation));
|
emit ReputationUpdated(address(_reputation));
|
||||||
}
|
}
|
||||||
|
|
||||||
function setDefaultLockBlocks(
|
function setDefaultLockBlocks(uint256 _blocks)
|
||||||
uint256 _blocks
|
public
|
||||||
) public onlyOwner {
|
onlyOwner
|
||||||
|
{
|
||||||
assembly {
|
assembly {
|
||||||
sstore(defaultLockBlocks.slot, _blocks)
|
sstore(defaultLockBlocks.slot, _blocks)
|
||||||
}
|
}
|
||||||
emit LockBlocksUpdated(_blocks);
|
emit LockBlocksUpdated(_blocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setValidSigners(
|
function setValidSigners(address[] memory _validSigners)
|
||||||
address[] memory _validSigners
|
public
|
||||||
) public onlyOwner {
|
onlyOwner
|
||||||
|
{
|
||||||
unchecked {
|
unchecked {
|
||||||
uint256 i;
|
uint256 i;
|
||||||
uint256 len = _validSigners.length;
|
uint256 len = _validSigners.length;
|
||||||
@ -623,33 +659,14 @@ contract P2PIX is
|
|||||||
function _addLock(
|
function _addLock(
|
||||||
uint256 _bal,
|
uint256 _bal,
|
||||||
uint256 _amount,
|
uint256 _amount,
|
||||||
bytes32 _lockID,
|
uint256 _lockID,
|
||||||
DT.Lock memory _l,
|
DT.Lock memory _l,
|
||||||
ERC20 _t,
|
ERC20 _t,
|
||||||
uint256 _k
|
uint256 _k
|
||||||
) internal {
|
) internal {
|
||||||
|
|
||||||
mapLocks[_lockID] = _l;
|
mapLocks[_lockID] = _l;
|
||||||
|
|
||||||
assembly {
|
_decBal(_bal, _amount, _t, _k);
|
||||||
if iszero(
|
|
||||||
iszero(
|
|
||||||
or(
|
|
||||||
iszero(_bal),
|
|
||||||
lt(
|
|
||||||
sub(
|
|
||||||
_bal,
|
|
||||||
_amount),
|
|
||||||
0x0
|
|
||||||
)))) {
|
|
||||||
// DecOverflow()
|
|
||||||
mstore(0x00, 0xce3a3d37)
|
|
||||||
revert(0x1c, 0x04)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// we can directly dec from packed uint entry value
|
|
||||||
sellerBalance[_k][_t] -= _amount;
|
|
||||||
|
|
||||||
emit LockAdded(
|
emit LockAdded(
|
||||||
_l.buyerAddress,
|
_l.buyerAddress,
|
||||||
@ -657,61 +674,8 @@ contract P2PIX is
|
|||||||
_l.sellerKey,
|
_l.sellerKey,
|
||||||
_l.amount
|
_l.amount
|
||||||
);
|
);
|
||||||
|
|
||||||
/// @todo
|
|
||||||
// assembly {
|
|
||||||
// // sstore(mp.slot, _l)
|
|
||||||
// mstore(0x00, _k)
|
|
||||||
// mstore(0x20, sellerBalance.slot)
|
|
||||||
// let sbkslot := keccak256(0x00, 0x40)
|
|
||||||
// mstore(0x00, _t)
|
|
||||||
// mstore(0x20, sbkslot)
|
|
||||||
// let sbslot := keccak256(0x00,0x40)
|
|
||||||
// let oldsb := sload(sbslot)
|
|
||||||
// sstore(
|
|
||||||
// sbslot,
|
|
||||||
// or(
|
|
||||||
// or(
|
|
||||||
// _newBal,
|
|
||||||
// shr(
|
|
||||||
// oldsb,
|
|
||||||
// BITPOS_PIXTARGET
|
|
||||||
// )),
|
|
||||||
// and(
|
|
||||||
// shr(
|
|
||||||
// oldsb,
|
|
||||||
// BITPOS_VALID
|
|
||||||
// ),
|
|
||||||
// BITMASK_SB_ENTRY
|
|
||||||
// )
|
|
||||||
// )
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @notice Private view auxiliar logic that encodes/returns
|
|
||||||
/// the `bytes32` identifier of an lock.
|
|
||||||
/// @dev reverts on a not expired lock with the same ID passed
|
|
||||||
/// as argument of the function.
|
|
||||||
/// @dev Called exclusively by the `lock` method.
|
|
||||||
/// @dev Function sighash: 0x3fc5fb52.
|
|
||||||
// function _encodeLockID(
|
|
||||||
// uint256 _lockCounter,
|
|
||||||
// uint256 _amount,
|
|
||||||
// address _buyerAddress
|
|
||||||
// ) private view returns (bytes32 _lockID) {
|
|
||||||
// _lockID = keccak256(
|
|
||||||
// abi.encodePacked(
|
|
||||||
// _lockCounter,
|
|
||||||
// _amount,
|
|
||||||
// _buyerAddress
|
|
||||||
// )
|
|
||||||
// );
|
|
||||||
// if (mapLocks[_lockID].expirationBlock >= block.number)
|
|
||||||
// revert NotExpired();
|
|
||||||
// }
|
|
||||||
|
|
||||||
function merkleVerify(
|
function merkleVerify(
|
||||||
bytes32[] calldata _merkleProof,
|
bytes32[] calldata _merkleProof,
|
||||||
bytes32 root,
|
bytes32 root,
|
||||||
@ -726,9 +690,11 @@ contract P2PIX is
|
|||||||
) revert AddressDenied();
|
) revert AddressDenied();
|
||||||
}
|
}
|
||||||
|
|
||||||
function _limiter(
|
function _limiter(uint256 _userCredit)
|
||||||
uint256 _userCredit
|
internal
|
||||||
) internal view returns (uint256 _spendLimit) {
|
view
|
||||||
|
returns (uint256 _spendLimit)
|
||||||
|
{
|
||||||
// enconde the fx sighash and args
|
// enconde the fx sighash and args
|
||||||
bytes memory encodedParams = abi.encodeWithSelector(
|
bytes memory encodedParams = abi.encodeWithSelector(
|
||||||
IReputation.limiter.selector,
|
IReputation.limiter.selector,
|
||||||
@ -768,14 +734,16 @@ contract P2PIX is
|
|||||||
function _castToUint(
|
function _castToUint(
|
||||||
uint96 _amount,
|
uint96 _amount,
|
||||||
uint160 _pixTarget,
|
uint160 _pixTarget,
|
||||||
bool _valid)
|
bool _valid
|
||||||
|
)
|
||||||
private
|
private
|
||||||
pure
|
pure
|
||||||
returns (
|
returns (
|
||||||
uint256 _amountCasted,
|
uint256 _amountCasted,
|
||||||
uint256 _pixTargetCasted,
|
uint256 _pixTargetCasted,
|
||||||
uint256 _validCasted
|
uint256 _validCasted
|
||||||
) {
|
)
|
||||||
|
{
|
||||||
assembly {
|
assembly {
|
||||||
_amountCasted := _amount
|
_amountCasted := _amount
|
||||||
_pixTargetCasted := _pixTarget
|
_pixTargetCasted := _pixTarget
|
||||||
@ -783,63 +751,145 @@ contract P2PIX is
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBalance(
|
function _decBal(
|
||||||
address seller,
|
uint256 _bal,
|
||||||
ERC20 token
|
uint256 _amount,
|
||||||
|
ERC20 _t,
|
||||||
|
uint256 _k
|
||||||
|
) private {
|
||||||
|
assembly {
|
||||||
|
if iszero(
|
||||||
|
iszero(
|
||||||
|
or(
|
||||||
|
iszero(_bal),
|
||||||
|
lt(sub(_bal, _amount), 0x0)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
// DecOverflow()
|
||||||
|
mstore(0x00, 0xce3a3d37)
|
||||||
|
revert(0x1c, 0x04)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// we can directly dec from packed uint entry value
|
||||||
|
sellerBalance[_k][_t] -= _amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBalance(address seller, ERC20 token)
|
||||||
public
|
public
|
||||||
view
|
view
|
||||||
returns (uint256 bal)
|
returns (uint256 bal)
|
||||||
{
|
{
|
||||||
bal =
|
// bal =
|
||||||
sellerBalance[
|
// sellerBalance[_castAddrToKey(seller)][token] &
|
||||||
_castAddrToKey(seller)
|
// BITMASK_SB_ENTRY;
|
||||||
][token] & BITMASK_SB_ENTRY;
|
assembly {
|
||||||
|
for {/* */} iszero(0x0) {/* */} {
|
||||||
|
mstore(0x00, shl(0xC,seller))
|
||||||
|
mstore(0x20, sellerBalance.slot)
|
||||||
|
let sbkslot := keccak256(0x00, 0x40)
|
||||||
|
mstore(0x00, token)
|
||||||
|
mstore(0x20, sbkslot)
|
||||||
|
bal := and(
|
||||||
|
BITMASK_SB_ENTRY,
|
||||||
|
sload(keccak256(0x00,0x40)
|
||||||
|
)) break
|
||||||
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getValid(
|
function getValid(address seller, ERC20 token)
|
||||||
address seller,
|
|
||||||
ERC20 token
|
|
||||||
)
|
|
||||||
public
|
public
|
||||||
view
|
view
|
||||||
returns (bool valid)
|
returns (bool valid)
|
||||||
{
|
{
|
||||||
uint256 b =
|
// uint256 b = sellerBalance[
|
||||||
(sellerBalance[
|
// _castAddrToKey(seller)
|
||||||
_castAddrToKey(seller)
|
// ][token];
|
||||||
][token] >> BITPOS_VALID) & BITMASK_SB_ENTRY;
|
// ] >> BITPOS_VALID) & BITMASK_SB_ENTRY;
|
||||||
assembly { valid := b }
|
assembly {
|
||||||
|
for {/* */} iszero(0x0) {/* */} {
|
||||||
|
mstore(0x00, shl(0xC,seller))
|
||||||
|
mstore(0x20, sellerBalance.slot)
|
||||||
|
let sbkslot := keccak256(0x00, 0x40)
|
||||||
|
mstore(0x00, token)
|
||||||
|
mstore(0x20, sbkslot)
|
||||||
|
valid := and(
|
||||||
|
BITMASK_SB_ENTRY,
|
||||||
|
shr(
|
||||||
|
BITPOS_VALID,
|
||||||
|
sload(keccak256(0x00,0x40)
|
||||||
|
))) break
|
||||||
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPixTarget(
|
function getPixTarget(address seller, ERC20 token)
|
||||||
address seller,
|
|
||||||
ERC20 token
|
|
||||||
)
|
|
||||||
public
|
public
|
||||||
view
|
view
|
||||||
returns (uint160 pixTarget)
|
returns (uint160 pixTarget)
|
||||||
{
|
{
|
||||||
pixTarget =
|
// pixTarget = uint160(
|
||||||
uint160(
|
// sellerBalance[_castAddrToKey(seller)][token] >>
|
||||||
sellerBalance[
|
// BITPOS_PIXTARGET
|
||||||
_castAddrToKey(seller)
|
// );
|
||||||
][token] >> BITPOS_PIXTARGET
|
assembly {
|
||||||
);
|
for {/* */} iszero(0) {/* */} {
|
||||||
|
mstore(0,shl(12,seller))
|
||||||
|
mstore(32,sellerBalance.slot)
|
||||||
|
let sbkslot := keccak256(0,64)
|
||||||
|
mstore(0,token)
|
||||||
|
mstore(32,sbkslot)
|
||||||
|
pixTarget := shr(
|
||||||
|
BITPOS_PIXTARGET,
|
||||||
|
sload(keccak256(0,64)
|
||||||
|
)) break
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBalances(
|
||||||
|
address[] memory sellers,
|
||||||
|
ERC20 token
|
||||||
|
)
|
||||||
|
external
|
||||||
|
view
|
||||||
|
returns(uint256[] memory balances)
|
||||||
|
{
|
||||||
|
if(address(token) == address(0x0))
|
||||||
|
revert NoTokens();
|
||||||
|
if(sellers.length == 0)
|
||||||
|
revert LengthMismatch();
|
||||||
|
|
||||||
|
uint256 j;
|
||||||
|
uint256 len = sellers.length;
|
||||||
|
while (j < len) { balances[j] =
|
||||||
|
getBalance(sellers[j], token);
|
||||||
|
}
|
||||||
|
|
||||||
|
return balances;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @notice Public method that handles `address`
|
/// @notice Public method that handles `address`
|
||||||
/// to `uint256` safe type casting.
|
/// to `uint256` safe type casting.
|
||||||
/// @dev Function sighash: 0x4b2ae980.
|
/// @dev Function sighash: 0x4b2ae980.
|
||||||
function _castAddrToKey(
|
function _castAddrToKey(address _addr)
|
||||||
address _addr
|
public
|
||||||
) public pure returns (uint256 _key) {
|
pure
|
||||||
_key = uint256(uint160(address(_addr))) << 12;
|
returns (uint256 _key)
|
||||||
|
{
|
||||||
|
// _key = uint256(uint160(address(_addr))) << 12;
|
||||||
|
assembly {
|
||||||
|
_key := shl(12,_addr)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function _castKeyToAddr(
|
function _castKeyToAddr(uint256 _key)
|
||||||
uint256 _key
|
public
|
||||||
) public pure returns (address _addr) {
|
pure
|
||||||
_addr = address(uint160(uint256(_key >> 12)));
|
returns (address _addr)
|
||||||
|
{
|
||||||
|
// _addr = address(uint160(uint256(_key >> 12)));
|
||||||
|
assembly {
|
||||||
|
_addr := shr(12,_key)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
8
deploys/goerli.json
Normal file
8
deploys/goerli.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"signers": [
|
||||||
|
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
|
||||||
|
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
|
||||||
|
],
|
||||||
|
"p2pix": "0x2a54667b566B1Aa3779828720E6696AC18ae3f1b",
|
||||||
|
"token": "0x4A2886EAEc931e04297ed336Cc55c4eb7C75BA00"
|
||||||
|
}
|
@ -3,6 +3,6 @@
|
|||||||
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
|
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
|
||||||
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
|
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
|
||||||
],
|
],
|
||||||
"p2pix": "0x37c856F4d5bC2597da60f607b1335738468453F3",
|
"p2pix": "0xC86042E9F2977C62Da8c9dDF7F9c40fde4796A29",
|
||||||
"token": "0x294003F602c321627152c6b7DED3EAb5bEa853Ee"
|
"token": "0xD38D6367f452D097ccBfDe4490b7de570B6A72Db"
|
||||||
}
|
}
|
8
deploys/polygon-mumbai.json
Normal file
8
deploys/polygon-mumbai.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"signers": [
|
||||||
|
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
|
||||||
|
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
|
||||||
|
],
|
||||||
|
"p2pix": "0x7F4680D114B43c4434FB604c7Bc6306125D32f28",
|
||||||
|
"token": "0xC86042E9F2977C62Da8c9dDF7F9c40fde4796A29"
|
||||||
|
}
|
1021
docs/callgraph.svg
1021
docs/callgraph.svg
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 66 KiB |
@ -21,11 +21,21 @@ if (!infuraApiKey) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const alchemyApiKey: string | undefined =
|
||||||
|
process.env.ALCHEMY_API_KEY;
|
||||||
|
if (!alchemyApiKey) {
|
||||||
|
throw new Error(
|
||||||
|
"Please set your ALCHEMY_API_KEY in a .env file",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const chainIds = {
|
const chainIds = {
|
||||||
// "{INSERT_NAME}": {INSERT_ID},
|
// "{INSERT_NAME}": {INSERT_ID},
|
||||||
hardhat: 31337,
|
hardhat: 31337,
|
||||||
mainnet: 1,
|
mainnet: 1,
|
||||||
sepolia: 11155111,
|
sepolia: 11155111,
|
||||||
|
goerli : 5,
|
||||||
|
"polygon-mumbai": 80001,
|
||||||
};
|
};
|
||||||
|
|
||||||
function getChainConfig(
|
function getChainConfig(
|
||||||
@ -33,9 +43,9 @@ function getChainConfig(
|
|||||||
): NetworkUserConfig {
|
): NetworkUserConfig {
|
||||||
let jsonRpcUrl: string;
|
let jsonRpcUrl: string;
|
||||||
switch (chain) {
|
switch (chain) {
|
||||||
// case "{INSERT_NAME}":
|
case "polygon-mumbai":
|
||||||
// jsonRpcUrl = "{INSERT_URL}";
|
jsonRpcUrl = "https://polygon-mumbai.g.alchemy.com/v2/" + alchemyApiKey;
|
||||||
// break;
|
break;
|
||||||
default:
|
default:
|
||||||
jsonRpcUrl =
|
jsonRpcUrl =
|
||||||
"https://" + chain + ".infura.io/v3/" + infuraApiKey;
|
"https://" + chain + ".infura.io/v3/" + infuraApiKey;
|
||||||
@ -47,6 +57,7 @@ function getChainConfig(
|
|||||||
mnemonic,
|
mnemonic,
|
||||||
path: "m/44'/60'/0'/0",
|
path: "m/44'/60'/0'/0",
|
||||||
},
|
},
|
||||||
|
// gasPrice: 8000000000,
|
||||||
chainId: chainIds[chain],
|
chainId: chainIds[chain],
|
||||||
url: jsonRpcUrl,
|
url: jsonRpcUrl,
|
||||||
};
|
};
|
||||||
@ -58,6 +69,8 @@ const config: HardhatUserConfig = {
|
|||||||
apiKey: {
|
apiKey: {
|
||||||
mainnet: process.env.ETHERSCAN_API_KEY || "",
|
mainnet: process.env.ETHERSCAN_API_KEY || "",
|
||||||
rinkeby: process.env.ETHERSCAN_API_KEY || "",
|
rinkeby: process.env.ETHERSCAN_API_KEY || "",
|
||||||
|
goerli: process.env.ETHERSCAN_API_KEY || "",
|
||||||
|
polygonMumbai: process.env.POLYGONSCAN_API_KEY || "",
|
||||||
},
|
},
|
||||||
// customChains: [
|
// customChains: [
|
||||||
// {
|
// {
|
||||||
@ -78,7 +91,7 @@ const config: HardhatUserConfig = {
|
|||||||
),
|
),
|
||||||
showTimeSpent: true,
|
showTimeSpent: true,
|
||||||
showMethodSig: true,
|
showMethodSig: true,
|
||||||
token: "ONE",
|
token: "ETH",
|
||||||
currency: "USD",
|
currency: "USD",
|
||||||
// gasPriceApi: process.env.GASPRICE_API_ENDPOINT,
|
// gasPriceApi: process.env.GASPRICE_API_ENDPOINT,
|
||||||
coinmarketcap: process.env.COINMARKETCAP_API_KEY,
|
coinmarketcap: process.env.COINMARKETCAP_API_KEY,
|
||||||
@ -95,7 +108,9 @@ const config: HardhatUserConfig = {
|
|||||||
},
|
},
|
||||||
// network: getChainConfig("{INSERT_NAME}"),
|
// network: getChainConfig("{INSERT_NAME}"),
|
||||||
mainnet: getChainConfig("mainnet"),
|
mainnet: getChainConfig("mainnet"),
|
||||||
|
goerli: getChainConfig("goerli"),
|
||||||
sepolia: getChainConfig("sepolia"),
|
sepolia: getChainConfig("sepolia"),
|
||||||
|
"polygon-mumbai": getChainConfig("polygon-mumbai"),
|
||||||
},
|
},
|
||||||
paths: {
|
paths: {
|
||||||
artifacts: "./artifacts",
|
artifacts: "./artifacts",
|
||||||
@ -106,12 +121,14 @@ const config: HardhatUserConfig = {
|
|||||||
solidity: {
|
solidity: {
|
||||||
version: "0.8.9",
|
version: "0.8.9",
|
||||||
settings: {
|
settings: {
|
||||||
|
// viaIR: true,
|
||||||
metadata: {
|
metadata: {
|
||||||
bytecodeHash: "none",
|
bytecodeHash: "none",
|
||||||
},
|
},
|
||||||
optimizer: {
|
optimizer: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
runs: 800,
|
// max val = 4_294_967_295
|
||||||
|
runs: 20_000,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "p2pix-smart-contracts",
|
"name": "p2pix-smart-contracts",
|
||||||
"version": "1.0.0",
|
"version": "2.0.0",
|
||||||
"description": "Repository for P2Pix EVM contracts to be imported by the project.",
|
"description": "Repository for P2Pix EVM contracts to be imported by the project.",
|
||||||
"homepage": "https://github.com/doiim/p2pix-smart-contracts#readme",
|
"homepage": "https://github.com/doiim/p2pix-smart-contracts#readme",
|
||||||
"author": "Filipe Soccol (doiim)",
|
"author": "Filipe Soccol (doiim)",
|
||||||
@ -16,6 +16,10 @@
|
|||||||
"test": "hardhat test",
|
"test": "hardhat test",
|
||||||
"deploy1:localhost": "hardhat run scripts/1-deploy-mockToken.ts --network localhost",
|
"deploy1:localhost": "hardhat run scripts/1-deploy-mockToken.ts --network localhost",
|
||||||
"deploy2:localhost": "hardhat run scripts/2-deploy-p2pix.ts --network localhost",
|
"deploy2:localhost": "hardhat run scripts/2-deploy-p2pix.ts --network localhost",
|
||||||
|
"deploy1:goerli": "hardhat run scripts/1-deploy-mockToken.ts --network goerli",
|
||||||
|
"deploy2:goerli": "hardhat run scripts/2-deploy-p2pix.ts --network goerli",
|
||||||
|
"deploy1:mumbai": "hardhat run scripts/1-deploy-mockToken.ts --network polygon-mumbai",
|
||||||
|
"deploy2:mumbai": "hardhat run scripts/2-deploy-p2pix.ts --network polygon-mumbai",
|
||||||
"coverage": "hardhat coverage --solcoverjs ./.solcover.js --temp artifacts --testfiles \"test/**/*.ts\" && yarn typechain",
|
"coverage": "hardhat coverage --solcoverjs ./.solcover.js --temp artifacts --testfiles \"test/**/*.ts\" && yarn typechain",
|
||||||
"lint": "yarn lint:sol && yarn lint:ts && yarn prettier:check",
|
"lint": "yarn lint:sol && yarn lint:ts && yarn prettier:check",
|
||||||
"lint:sol": "solhint --config ./.solhint.json --max-warnings 0 \"contracts/**/*.sol\"",
|
"lint:sol": "solhint --config ./.solhint.json --max-warnings 0 \"contracts/**/*.sol\"",
|
||||||
|
@ -6,7 +6,7 @@ import { ethers, network } from "hardhat";
|
|||||||
|
|
||||||
import { Deploys } from "../test/utils/fixtures";
|
import { Deploys } from "../test/utils/fixtures";
|
||||||
|
|
||||||
// import hre from "hardhat";
|
import hre from "hardhat";
|
||||||
|
|
||||||
let deploysJson: Deploys;
|
let deploysJson: Deploys;
|
||||||
const supply: BigNumber = ethers.utils.parseEther("20000000");
|
const supply: BigNumber = ethers.utils.parseEther("20000000");
|
||||||
@ -34,18 +34,19 @@ const main = async () => {
|
|||||||
|
|
||||||
deploysJson.token = erc20.address;
|
deploysJson.token = erc20.address;
|
||||||
console.log("🚀 Mock Token Deployed:", erc20.address);
|
console.log("🚀 Mock Token Deployed:", erc20.address);
|
||||||
|
await erc20.deployTransaction.wait(6);
|
||||||
|
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
`./deploys/${network.name}.json`,
|
`./deploys/${network.name}.json`,
|
||||||
JSON.stringify(deploysJson, undefined, 2),
|
JSON.stringify(deploysJson, undefined, 2),
|
||||||
);
|
);
|
||||||
|
|
||||||
/* UNCOMMENT WHEN DEPLOYING TO MAINNET */
|
/* UNCOMMENT WHEN DEPLOYING TO MAINNET/PUBLIC TESTNETS */
|
||||||
// verify
|
// verify
|
||||||
// await hre.run("verify:verify", {
|
await hre.run("verify:verify", {
|
||||||
// address: erc20.address,
|
address: erc20.address,
|
||||||
// constructorArguments: supply,
|
constructorArguments: [supply],
|
||||||
// });
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
@ -5,6 +5,8 @@ import { ethers, network } from "hardhat";
|
|||||||
|
|
||||||
import { Deploys } from "../test/utils/fixtures";
|
import { Deploys } from "../test/utils/fixtures";
|
||||||
|
|
||||||
|
import hre from "hardhat";
|
||||||
|
|
||||||
let deploysJson: Deploys;
|
let deploysJson: Deploys;
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@ -40,18 +42,30 @@ const main = async () => {
|
|||||||
|
|
||||||
deploysJson.p2pix = p2pix.address;
|
deploysJson.p2pix = p2pix.address;
|
||||||
console.log("🚀 P2PIX Deployed:", p2pix.address);
|
console.log("🚀 P2PIX Deployed:", p2pix.address);
|
||||||
|
await p2pix.deployTransaction.wait(6);
|
||||||
|
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
`./deploys/${network.name}.json`,
|
`./deploys/${network.name}.json`,
|
||||||
JSON.stringify(deploysJson, undefined, 2),
|
JSON.stringify(deploysJson, undefined, 2),
|
||||||
);
|
);
|
||||||
|
|
||||||
/* UNCOMMENT WHEN DEPLOYING TO MAINNET */
|
/* UNCOMMENT WHEN DEPLOYING TO MAINNET/PUBLIC TESTNETS */
|
||||||
//verify
|
//verify
|
||||||
// await hre.run("verify:verify", {
|
await hre.run("verify:verify", {
|
||||||
// address: p2pix.address,
|
address: p2pix.address,
|
||||||
// constructorArguments: [2, deploysJson.signers],
|
constructorArguments:
|
||||||
// });
|
[
|
||||||
|
10,
|
||||||
|
deploysJson.signers,
|
||||||
|
reputation.address,
|
||||||
|
[deploysJson.token],
|
||||||
|
[true],
|
||||||
|
],
|
||||||
|
});
|
||||||
|
await hre.run("verify:verify", {
|
||||||
|
address: reputation.address,
|
||||||
|
constructorArguments: [],
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
/* Autogenerated file. Do not edit manually. */
|
/* Autogenerated file. Do not edit manually. */
|
||||||
/* tslint:disable */
|
/* tslint:disable */
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
import type { BaseContract, BigNumber, BytesLike, Signer, utils } from "ethers";
|
import type {
|
||||||
|
BaseContract,
|
||||||
|
BigNumber,
|
||||||
|
BigNumberish,
|
||||||
|
Signer,
|
||||||
|
utils,
|
||||||
|
} from "ethers";
|
||||||
import type { EventFragment } from "@ethersproject/abi";
|
import type { EventFragment } from "@ethersproject/abi";
|
||||||
import type { Listener, Provider } from "@ethersproject/providers";
|
import type { Listener, Provider } from "@ethersproject/providers";
|
||||||
import type {
|
import type {
|
||||||
@ -20,10 +26,10 @@ export interface EventAndErrorsInterface extends utils.Interface {
|
|||||||
"DepositAdded(address,address,uint256)": EventFragment;
|
"DepositAdded(address,address,uint256)": EventFragment;
|
||||||
"DepositWithdrawn(address,address,uint256)": EventFragment;
|
"DepositWithdrawn(address,address,uint256)": EventFragment;
|
||||||
"FundsWithdrawn(address,uint256)": EventFragment;
|
"FundsWithdrawn(address,uint256)": EventFragment;
|
||||||
"LockAdded(address,bytes32,uint256,uint256)": EventFragment;
|
"LockAdded(address,uint256,uint256,uint256)": EventFragment;
|
||||||
"LockBlocksUpdated(uint256)": EventFragment;
|
"LockBlocksUpdated(uint256)": EventFragment;
|
||||||
"LockReleased(address,bytes32,uint256)": EventFragment;
|
"LockReleased(address,uint256,uint256)": EventFragment;
|
||||||
"LockReturned(address,bytes32)": EventFragment;
|
"LockReturned(address,uint256)": EventFragment;
|
||||||
"ReputationUpdated(address)": EventFragment;
|
"ReputationUpdated(address)": EventFragment;
|
||||||
"RootUpdated(address,bytes32)": EventFragment;
|
"RootUpdated(address,bytes32)": EventFragment;
|
||||||
"ValidSet(address,address,bool)": EventFragment;
|
"ValidSet(address,address,bool)": EventFragment;
|
||||||
@ -94,12 +100,12 @@ export type FundsWithdrawnEventFilter = TypedEventFilter<FundsWithdrawnEvent>;
|
|||||||
|
|
||||||
export interface LockAddedEventObject {
|
export interface LockAddedEventObject {
|
||||||
buyer: string;
|
buyer: string;
|
||||||
lockID: string;
|
lockID: BigNumber;
|
||||||
seller: BigNumber;
|
seller: BigNumber;
|
||||||
amount: BigNumber;
|
amount: BigNumber;
|
||||||
}
|
}
|
||||||
export type LockAddedEvent = TypedEvent<
|
export type LockAddedEvent = TypedEvent<
|
||||||
[string, string, BigNumber, BigNumber],
|
[string, BigNumber, BigNumber, BigNumber],
|
||||||
LockAddedEventObject
|
LockAddedEventObject
|
||||||
>;
|
>;
|
||||||
|
|
||||||
@ -118,11 +124,11 @@ export type LockBlocksUpdatedEventFilter =
|
|||||||
|
|
||||||
export interface LockReleasedEventObject {
|
export interface LockReleasedEventObject {
|
||||||
buyer: string;
|
buyer: string;
|
||||||
lockId: string;
|
lockId: BigNumber;
|
||||||
amount: BigNumber;
|
amount: BigNumber;
|
||||||
}
|
}
|
||||||
export type LockReleasedEvent = TypedEvent<
|
export type LockReleasedEvent = TypedEvent<
|
||||||
[string, string, BigNumber],
|
[string, BigNumber, BigNumber],
|
||||||
LockReleasedEventObject
|
LockReleasedEventObject
|
||||||
>;
|
>;
|
||||||
|
|
||||||
@ -130,10 +136,10 @@ export type LockReleasedEventFilter = TypedEventFilter<LockReleasedEvent>;
|
|||||||
|
|
||||||
export interface LockReturnedEventObject {
|
export interface LockReturnedEventObject {
|
||||||
buyer: string;
|
buyer: string;
|
||||||
lockId: string;
|
lockId: BigNumber;
|
||||||
}
|
}
|
||||||
export type LockReturnedEvent = TypedEvent<
|
export type LockReturnedEvent = TypedEvent<
|
||||||
[string, string],
|
[string, BigNumber],
|
||||||
LockReturnedEventObject
|
LockReturnedEventObject
|
||||||
>;
|
>;
|
||||||
|
|
||||||
@ -252,15 +258,15 @@ export interface EventAndErrors extends BaseContract {
|
|||||||
): FundsWithdrawnEventFilter;
|
): FundsWithdrawnEventFilter;
|
||||||
FundsWithdrawn(owner?: null, amount?: null): FundsWithdrawnEventFilter;
|
FundsWithdrawn(owner?: null, amount?: null): FundsWithdrawnEventFilter;
|
||||||
|
|
||||||
"LockAdded(address,bytes32,uint256,uint256)"(
|
"LockAdded(address,uint256,uint256,uint256)"(
|
||||||
buyer?: PromiseOrValue<string> | null,
|
buyer?: PromiseOrValue<string> | null,
|
||||||
lockID?: PromiseOrValue<BytesLike> | null,
|
lockID?: PromiseOrValue<BigNumberish> | null,
|
||||||
seller?: null,
|
seller?: null,
|
||||||
amount?: null
|
amount?: null
|
||||||
): LockAddedEventFilter;
|
): LockAddedEventFilter;
|
||||||
LockAdded(
|
LockAdded(
|
||||||
buyer?: PromiseOrValue<string> | null,
|
buyer?: PromiseOrValue<string> | null,
|
||||||
lockID?: PromiseOrValue<BytesLike> | null,
|
lockID?: PromiseOrValue<BigNumberish> | null,
|
||||||
seller?: null,
|
seller?: null,
|
||||||
amount?: null
|
amount?: null
|
||||||
): LockAddedEventFilter;
|
): LockAddedEventFilter;
|
||||||
@ -268,7 +274,7 @@ export interface EventAndErrors extends BaseContract {
|
|||||||
"LockBlocksUpdated(uint256)"(blocks?: null): LockBlocksUpdatedEventFilter;
|
"LockBlocksUpdated(uint256)"(blocks?: null): LockBlocksUpdatedEventFilter;
|
||||||
LockBlocksUpdated(blocks?: null): LockBlocksUpdatedEventFilter;
|
LockBlocksUpdated(blocks?: null): LockBlocksUpdatedEventFilter;
|
||||||
|
|
||||||
"LockReleased(address,bytes32,uint256)"(
|
"LockReleased(address,uint256,uint256)"(
|
||||||
buyer?: PromiseOrValue<string> | null,
|
buyer?: PromiseOrValue<string> | null,
|
||||||
lockId?: null,
|
lockId?: null,
|
||||||
amount?: null
|
amount?: null
|
||||||
@ -279,7 +285,7 @@ export interface EventAndErrors extends BaseContract {
|
|||||||
amount?: null
|
amount?: null
|
||||||
): LockReleasedEventFilter;
|
): LockReleasedEventFilter;
|
||||||
|
|
||||||
"LockReturned(address,bytes32)"(
|
"LockReturned(address,uint256)"(
|
||||||
buyer?: PromiseOrValue<string> | null,
|
buyer?: PromiseOrValue<string> | null,
|
||||||
lockId?: null
|
lockId?: null
|
||||||
): LockReturnedEventFilter;
|
): LockReturnedEventFilter;
|
||||||
|
@ -209,9 +209,9 @@ const _abi = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
indexed: true,
|
indexed: true,
|
||||||
internalType: "bytes32",
|
internalType: "uint256",
|
||||||
name: "lockID",
|
name: "lockID",
|
||||||
type: "bytes32",
|
type: "uint256",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
indexed: false,
|
indexed: false,
|
||||||
@ -253,9 +253,9 @@ const _abi = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
indexed: false,
|
indexed: false,
|
||||||
internalType: "bytes32",
|
internalType: "uint256",
|
||||||
name: "lockId",
|
name: "lockId",
|
||||||
type: "bytes32",
|
type: "uint256",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
indexed: false,
|
indexed: false,
|
||||||
@ -278,9 +278,9 @@ const _abi = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
indexed: false,
|
indexed: false,
|
||||||
internalType: "bytes32",
|
internalType: "uint256",
|
||||||
name: "lockId",
|
name: "lockId",
|
||||||
type: "bytes32",
|
type: "uint256",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
name: "LockReturned",
|
name: "LockReturned",
|
||||||
|
@ -105,7 +105,7 @@ const _abi = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const _bytecode =
|
const _bytecode =
|
||||||
"0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a35061036b806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100dc57600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102a6565b6100e8565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac3660046102d6565b6101a9565b6000546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610095565b61008b643a3529440081565b6000546001600160a01b031633146101465760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006101cc6101b88380610305565b6101c790643a35294400610324565b6101f4565b6101d983620f4240610305565b6101e3919061033c565b6101ee906001610324565b92915050565b60b58171010000000000000000000000000000000000811061021b5760409190911b9060801c5b690100000000000000000081106102375760209190911b9060401c5b65010000000000811061024f5760109190911b9060201c5b630100000081106102655760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6000602082840312156102b857600080fd5b81356001600160a01b03811681146102cf57600080fd5b9392505050565b6000602082840312156102e857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561031f5761031f6102ef565b500290565b60008219821115610337576103376102ef565b500190565b60008261035957634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000809000a";
|
"0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350610416806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100f657600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102f4565b610102565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac366004610331565b6101f7565b6000546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b61008b643a3529440081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600061021a6102068380610379565b61021590643a352944006103b6565b610242565b61022783620f4240610379565b61023191906103ce565b61023c9060016103b6565b92915050565b60b5817101000000000000000000000000000000000081106102695760409190911b9060801c5b690100000000000000000081106102855760209190911b9060401c5b65010000000000811061029d5760109190911b9060201c5b630100000081106102b35760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60006020828403121561030657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a57600080fd5b9392505050565b60006020828403121561034357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156103b1576103b161034a565b500290565b600082198211156103c9576103c961034a565b500190565b600082610404577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000809000a";
|
||||||
|
|
||||||
type ReputationConstructorParams =
|
type ReputationConstructorParams =
|
||||||
| [signer?: Signer]
|
| [signer?: Signer]
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,65 +0,0 @@
|
|||||||
/* Autogenerated file. Do not edit manually. */
|
|
||||||
/* tslint:disable */
|
|
||||||
/* eslint-disable */
|
|
||||||
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
|
|
||||||
import type { Provider, TransactionRequest } from "@ethersproject/providers";
|
|
||||||
import type { PromiseOrValue } from "../../../common";
|
|
||||||
import type { Counters, CountersInterface } from "../../../lib/utils/Counters";
|
|
||||||
|
|
||||||
const _abi = [
|
|
||||||
{
|
|
||||||
inputs: [],
|
|
||||||
name: "DecOverflow",
|
|
||||||
type: "error",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const _bytecode =
|
|
||||||
"0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000809000a";
|
|
||||||
|
|
||||||
type CountersConstructorParams =
|
|
||||||
| [signer?: Signer]
|
|
||||||
| ConstructorParameters<typeof ContractFactory>;
|
|
||||||
|
|
||||||
const isSuperArgs = (
|
|
||||||
xs: CountersConstructorParams
|
|
||||||
): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
|
|
||||||
|
|
||||||
export class Counters__factory extends ContractFactory {
|
|
||||||
constructor(...args: CountersConstructorParams) {
|
|
||||||
if (isSuperArgs(args)) {
|
|
||||||
super(...args);
|
|
||||||
} else {
|
|
||||||
super(_abi, _bytecode, args[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override deploy(
|
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
|
||||||
): Promise<Counters> {
|
|
||||||
return super.deploy(overrides || {}) as Promise<Counters>;
|
|
||||||
}
|
|
||||||
override getDeployTransaction(
|
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
|
||||||
): TransactionRequest {
|
|
||||||
return super.getDeployTransaction(overrides || {});
|
|
||||||
}
|
|
||||||
override attach(address: string): Counters {
|
|
||||||
return super.attach(address) as Counters;
|
|
||||||
}
|
|
||||||
override connect(signer: Signer): Counters__factory {
|
|
||||||
return super.connect(signer) as Counters__factory;
|
|
||||||
}
|
|
||||||
|
|
||||||
static readonly bytecode = _bytecode;
|
|
||||||
static readonly abi = _abi;
|
|
||||||
static createInterface(): CountersInterface {
|
|
||||||
return new utils.Interface(_abi) as CountersInterface;
|
|
||||||
}
|
|
||||||
static connect(
|
|
||||||
address: string,
|
|
||||||
signerOrProvider: Signer | Provider
|
|
||||||
): Counters {
|
|
||||||
return new Contract(address, _abi, signerOrProvider) as Counters;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +1,4 @@
|
|||||||
/* Autogenerated file. Do not edit manually. */
|
/* Autogenerated file. Do not edit manually. */
|
||||||
/* tslint:disable */
|
/* tslint:disable */
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
export { Counters__factory } from "./Counters__factory";
|
|
||||||
export { ReentrancyGuard__factory } from "./ReentrancyGuard__factory";
|
export { ReentrancyGuard__factory } from "./ReentrancyGuard__factory";
|
||||||
|
File diff suppressed because one or more lines are too long
9
src/types/hardhat.d.ts
vendored
9
src/types/hardhat.d.ts
vendored
@ -32,10 +32,6 @@ declare module "hardhat/types/runtime" {
|
|||||||
name: "ERC20",
|
name: "ERC20",
|
||||||
signerOrOptions?: ethers.Signer | FactoryOptions
|
signerOrOptions?: ethers.Signer | FactoryOptions
|
||||||
): Promise<Contracts.ERC20__factory>;
|
): Promise<Contracts.ERC20__factory>;
|
||||||
getContractFactory(
|
|
||||||
name: "Counters",
|
|
||||||
signerOrOptions?: ethers.Signer | FactoryOptions
|
|
||||||
): Promise<Contracts.Counters__factory>;
|
|
||||||
getContractFactory(
|
getContractFactory(
|
||||||
name: "ReentrancyGuard",
|
name: "ReentrancyGuard",
|
||||||
signerOrOptions?: ethers.Signer | FactoryOptions
|
signerOrOptions?: ethers.Signer | FactoryOptions
|
||||||
@ -74,11 +70,6 @@ declare module "hardhat/types/runtime" {
|
|||||||
address: string,
|
address: string,
|
||||||
signer?: ethers.Signer
|
signer?: ethers.Signer
|
||||||
): Promise<Contracts.ERC20>;
|
): Promise<Contracts.ERC20>;
|
||||||
getContractAt(
|
|
||||||
name: "Counters",
|
|
||||||
address: string,
|
|
||||||
signer?: ethers.Signer
|
|
||||||
): Promise<Contracts.Counters>;
|
|
||||||
getContractAt(
|
getContractAt(
|
||||||
name: "ReentrancyGuard",
|
name: "ReentrancyGuard",
|
||||||
address: string,
|
address: string,
|
||||||
|
@ -17,8 +17,6 @@ export type { MockToken } from "./lib/mock/mockToken.sol/MockToken";
|
|||||||
export { MockToken__factory } from "./factories/lib/mock/mockToken.sol/MockToken__factory";
|
export { MockToken__factory } from "./factories/lib/mock/mockToken.sol/MockToken__factory";
|
||||||
export type { ERC20 } from "./lib/tokens/ERC20";
|
export type { ERC20 } from "./lib/tokens/ERC20";
|
||||||
export { ERC20__factory } from "./factories/lib/tokens/ERC20__factory";
|
export { ERC20__factory } from "./factories/lib/tokens/ERC20__factory";
|
||||||
export type { Counters } from "./lib/utils/Counters";
|
|
||||||
export { Counters__factory } from "./factories/lib/utils/Counters__factory";
|
|
||||||
export type { ReentrancyGuard } from "./lib/utils/ReentrancyGuard";
|
export type { ReentrancyGuard } from "./lib/utils/ReentrancyGuard";
|
||||||
export { ReentrancyGuard__factory } from "./factories/lib/utils/ReentrancyGuard__factory";
|
export { ReentrancyGuard__factory } from "./factories/lib/utils/ReentrancyGuard__factory";
|
||||||
export type { P2PIX } from "./p2pix.sol/P2PIX";
|
export type { P2PIX } from "./p2pix.sol/P2PIX";
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
/* Autogenerated file. Do not edit manually. */
|
|
||||||
/* tslint:disable */
|
|
||||||
/* eslint-disable */
|
|
||||||
import type { BaseContract, Signer, utils } from "ethers";
|
|
||||||
|
|
||||||
import type { Listener, Provider } from "@ethersproject/providers";
|
|
||||||
import type {
|
|
||||||
TypedEventFilter,
|
|
||||||
TypedEvent,
|
|
||||||
TypedListener,
|
|
||||||
OnEvent,
|
|
||||||
PromiseOrValue,
|
|
||||||
} from "../../common";
|
|
||||||
|
|
||||||
export interface CountersInterface extends utils.Interface {
|
|
||||||
functions: {};
|
|
||||||
|
|
||||||
events: {};
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Counters extends BaseContract {
|
|
||||||
connect(signerOrProvider: Signer | Provider | string): this;
|
|
||||||
attach(addressOrName: string): this;
|
|
||||||
deployed(): Promise<this>;
|
|
||||||
|
|
||||||
interface: CountersInterface;
|
|
||||||
|
|
||||||
queryFilter<TEvent extends TypedEvent>(
|
|
||||||
event: TypedEventFilter<TEvent>,
|
|
||||||
fromBlockOrBlockhash?: string | number | undefined,
|
|
||||||
toBlock?: string | number | undefined
|
|
||||||
): Promise<Array<TEvent>>;
|
|
||||||
|
|
||||||
listeners<TEvent extends TypedEvent>(
|
|
||||||
eventFilter?: TypedEventFilter<TEvent>
|
|
||||||
): Array<TypedListener<TEvent>>;
|
|
||||||
listeners(eventName?: string): Array<Listener>;
|
|
||||||
removeAllListeners<TEvent extends TypedEvent>(
|
|
||||||
eventFilter: TypedEventFilter<TEvent>
|
|
||||||
): this;
|
|
||||||
removeAllListeners(eventName?: string): this;
|
|
||||||
off: OnEvent<this>;
|
|
||||||
on: OnEvent<this>;
|
|
||||||
once: OnEvent<this>;
|
|
||||||
removeListener: OnEvent<this>;
|
|
||||||
|
|
||||||
functions: {};
|
|
||||||
|
|
||||||
callStatic: {};
|
|
||||||
|
|
||||||
filters: {};
|
|
||||||
|
|
||||||
estimateGas: {};
|
|
||||||
|
|
||||||
populateTransaction: {};
|
|
||||||
}
|
|
@ -1,5 +1,4 @@
|
|||||||
/* Autogenerated file. Do not edit manually. */
|
/* Autogenerated file. Do not edit manually. */
|
||||||
/* tslint:disable */
|
/* tslint:disable */
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
export type { Counters } from "./Counters";
|
|
||||||
export type { ReentrancyGuard } from "./ReentrancyGuard";
|
export type { ReentrancyGuard } from "./ReentrancyGuard";
|
||||||
|
@ -36,13 +36,14 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
"defaultLockBlocks()": FunctionFragment;
|
"defaultLockBlocks()": FunctionFragment;
|
||||||
"deposit(address,uint96,uint160,bool,bytes32)": FunctionFragment;
|
"deposit(address,uint96,uint160,bool,bytes32)": FunctionFragment;
|
||||||
"getBalance(address,address)": FunctionFragment;
|
"getBalance(address,address)": FunctionFragment;
|
||||||
|
"getBalances(address[],address)": FunctionFragment;
|
||||||
"getPixTarget(address,address)": FunctionFragment;
|
"getPixTarget(address,address)": FunctionFragment;
|
||||||
"getValid(address,address)": FunctionFragment;
|
"getValid(address,address)": FunctionFragment;
|
||||||
"lock(address,address,address,address,uint256,uint256,bytes32[],bytes32[])": FunctionFragment;
|
"lock(address,address,address,address,uint256,uint256,bytes32[],uint256[])": FunctionFragment;
|
||||||
"lockCounter()": FunctionFragment;
|
"lockCounter()": FunctionFragment;
|
||||||
"mapLocks(bytes32)": FunctionFragment;
|
"mapLocks(uint256)": FunctionFragment;
|
||||||
"owner()": FunctionFragment;
|
"owner()": FunctionFragment;
|
||||||
"release(bytes32,address,bytes32,bytes32,bytes32,uint8)": FunctionFragment;
|
"release(uint256,address,bytes32,bytes32,bytes32,uint8)": FunctionFragment;
|
||||||
"reputation()": FunctionFragment;
|
"reputation()": FunctionFragment;
|
||||||
"sellerAllowList(uint256)": FunctionFragment;
|
"sellerAllowList(uint256)": FunctionFragment;
|
||||||
"sellerBalance(uint256,address)": FunctionFragment;
|
"sellerBalance(uint256,address)": FunctionFragment;
|
||||||
@ -53,11 +54,11 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
"setValidSigners(address[])": FunctionFragment;
|
"setValidSigners(address[])": FunctionFragment;
|
||||||
"setValidState(address,bool)": FunctionFragment;
|
"setValidState(address,bool)": FunctionFragment;
|
||||||
"tokenSettings(address[],bool[])": FunctionFragment;
|
"tokenSettings(address[],bool[])": FunctionFragment;
|
||||||
"unlockExpired(bytes32[])": FunctionFragment;
|
"unlockExpired(uint256[])": FunctionFragment;
|
||||||
"usedTransactions(bytes32)": FunctionFragment;
|
"usedTransactions(bytes32)": FunctionFragment;
|
||||||
"userRecord(uint256)": FunctionFragment;
|
"userRecord(uint256)": FunctionFragment;
|
||||||
"validBacenSigners(uint256)": FunctionFragment;
|
"validBacenSigners(uint256)": FunctionFragment;
|
||||||
"withdraw(address,bytes32[])": FunctionFragment;
|
"withdraw(address,uint256,uint256[])": FunctionFragment;
|
||||||
"withdrawBalance()": FunctionFragment;
|
"withdrawBalance()": FunctionFragment;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -70,6 +71,7 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
| "defaultLockBlocks"
|
| "defaultLockBlocks"
|
||||||
| "deposit"
|
| "deposit"
|
||||||
| "getBalance"
|
| "getBalance"
|
||||||
|
| "getBalances"
|
||||||
| "getPixTarget"
|
| "getPixTarget"
|
||||||
| "getValid"
|
| "getValid"
|
||||||
| "lock"
|
| "lock"
|
||||||
@ -126,6 +128,10 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
functionFragment: "getBalance",
|
functionFragment: "getBalance",
|
||||||
values: [PromiseOrValue<string>, PromiseOrValue<string>]
|
values: [PromiseOrValue<string>, PromiseOrValue<string>]
|
||||||
): string;
|
): string;
|
||||||
|
encodeFunctionData(
|
||||||
|
functionFragment: "getBalances",
|
||||||
|
values: [PromiseOrValue<string>[], PromiseOrValue<string>]
|
||||||
|
): string;
|
||||||
encodeFunctionData(
|
encodeFunctionData(
|
||||||
functionFragment: "getPixTarget",
|
functionFragment: "getPixTarget",
|
||||||
values: [PromiseOrValue<string>, PromiseOrValue<string>]
|
values: [PromiseOrValue<string>, PromiseOrValue<string>]
|
||||||
@ -144,7 +150,7 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
PromiseOrValue<BigNumberish>,
|
PromiseOrValue<BigNumberish>,
|
||||||
PromiseOrValue<BigNumberish>,
|
PromiseOrValue<BigNumberish>,
|
||||||
PromiseOrValue<BytesLike>[],
|
PromiseOrValue<BytesLike>[],
|
||||||
PromiseOrValue<BytesLike>[]
|
PromiseOrValue<BigNumberish>[]
|
||||||
]
|
]
|
||||||
): string;
|
): string;
|
||||||
encodeFunctionData(
|
encodeFunctionData(
|
||||||
@ -153,13 +159,13 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
): string;
|
): string;
|
||||||
encodeFunctionData(
|
encodeFunctionData(
|
||||||
functionFragment: "mapLocks",
|
functionFragment: "mapLocks",
|
||||||
values: [PromiseOrValue<BytesLike>]
|
values: [PromiseOrValue<BigNumberish>]
|
||||||
): string;
|
): string;
|
||||||
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
|
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
|
||||||
encodeFunctionData(
|
encodeFunctionData(
|
||||||
functionFragment: "release",
|
functionFragment: "release",
|
||||||
values: [
|
values: [
|
||||||
PromiseOrValue<BytesLike>,
|
PromiseOrValue<BigNumberish>,
|
||||||
PromiseOrValue<string>,
|
PromiseOrValue<string>,
|
||||||
PromiseOrValue<BytesLike>,
|
PromiseOrValue<BytesLike>,
|
||||||
PromiseOrValue<BytesLike>,
|
PromiseOrValue<BytesLike>,
|
||||||
@ -209,7 +215,7 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
): string;
|
): string;
|
||||||
encodeFunctionData(
|
encodeFunctionData(
|
||||||
functionFragment: "unlockExpired",
|
functionFragment: "unlockExpired",
|
||||||
values: [PromiseOrValue<BytesLike>[]]
|
values: [PromiseOrValue<BigNumberish>[]]
|
||||||
): string;
|
): string;
|
||||||
encodeFunctionData(
|
encodeFunctionData(
|
||||||
functionFragment: "usedTransactions",
|
functionFragment: "usedTransactions",
|
||||||
@ -225,7 +231,11 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
): string;
|
): string;
|
||||||
encodeFunctionData(
|
encodeFunctionData(
|
||||||
functionFragment: "withdraw",
|
functionFragment: "withdraw",
|
||||||
values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>[]]
|
values: [
|
||||||
|
PromiseOrValue<string>,
|
||||||
|
PromiseOrValue<BigNumberish>,
|
||||||
|
PromiseOrValue<BigNumberish>[]
|
||||||
|
]
|
||||||
): string;
|
): string;
|
||||||
encodeFunctionData(
|
encodeFunctionData(
|
||||||
functionFragment: "withdrawBalance",
|
functionFragment: "withdrawBalance",
|
||||||
@ -251,6 +261,10 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
): Result;
|
): Result;
|
||||||
decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
|
decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
|
||||||
decodeFunctionResult(functionFragment: "getBalance", data: BytesLike): Result;
|
decodeFunctionResult(functionFragment: "getBalance", data: BytesLike): Result;
|
||||||
|
decodeFunctionResult(
|
||||||
|
functionFragment: "getBalances",
|
||||||
|
data: BytesLike
|
||||||
|
): Result;
|
||||||
decodeFunctionResult(
|
decodeFunctionResult(
|
||||||
functionFragment: "getPixTarget",
|
functionFragment: "getPixTarget",
|
||||||
data: BytesLike
|
data: BytesLike
|
||||||
@ -319,10 +333,10 @@ export interface P2PIXInterface extends utils.Interface {
|
|||||||
"DepositAdded(address,address,uint256)": EventFragment;
|
"DepositAdded(address,address,uint256)": EventFragment;
|
||||||
"DepositWithdrawn(address,address,uint256)": EventFragment;
|
"DepositWithdrawn(address,address,uint256)": EventFragment;
|
||||||
"FundsWithdrawn(address,uint256)": EventFragment;
|
"FundsWithdrawn(address,uint256)": EventFragment;
|
||||||
"LockAdded(address,bytes32,uint256,uint256)": EventFragment;
|
"LockAdded(address,uint256,uint256,uint256)": EventFragment;
|
||||||
"LockBlocksUpdated(uint256)": EventFragment;
|
"LockBlocksUpdated(uint256)": EventFragment;
|
||||||
"LockReleased(address,bytes32,uint256)": EventFragment;
|
"LockReleased(address,uint256,uint256)": EventFragment;
|
||||||
"LockReturned(address,bytes32)": EventFragment;
|
"LockReturned(address,uint256)": EventFragment;
|
||||||
"OwnerUpdated(address,address)": EventFragment;
|
"OwnerUpdated(address,address)": EventFragment;
|
||||||
"ReputationUpdated(address)": EventFragment;
|
"ReputationUpdated(address)": EventFragment;
|
||||||
"RootUpdated(address,bytes32)": EventFragment;
|
"RootUpdated(address,bytes32)": EventFragment;
|
||||||
@ -395,12 +409,12 @@ export type FundsWithdrawnEventFilter = TypedEventFilter<FundsWithdrawnEvent>;
|
|||||||
|
|
||||||
export interface LockAddedEventObject {
|
export interface LockAddedEventObject {
|
||||||
buyer: string;
|
buyer: string;
|
||||||
lockID: string;
|
lockID: BigNumber;
|
||||||
seller: BigNumber;
|
seller: BigNumber;
|
||||||
amount: BigNumber;
|
amount: BigNumber;
|
||||||
}
|
}
|
||||||
export type LockAddedEvent = TypedEvent<
|
export type LockAddedEvent = TypedEvent<
|
||||||
[string, string, BigNumber, BigNumber],
|
[string, BigNumber, BigNumber, BigNumber],
|
||||||
LockAddedEventObject
|
LockAddedEventObject
|
||||||
>;
|
>;
|
||||||
|
|
||||||
@ -419,11 +433,11 @@ export type LockBlocksUpdatedEventFilter =
|
|||||||
|
|
||||||
export interface LockReleasedEventObject {
|
export interface LockReleasedEventObject {
|
||||||
buyer: string;
|
buyer: string;
|
||||||
lockId: string;
|
lockId: BigNumber;
|
||||||
amount: BigNumber;
|
amount: BigNumber;
|
||||||
}
|
}
|
||||||
export type LockReleasedEvent = TypedEvent<
|
export type LockReleasedEvent = TypedEvent<
|
||||||
[string, string, BigNumber],
|
[string, BigNumber, BigNumber],
|
||||||
LockReleasedEventObject
|
LockReleasedEventObject
|
||||||
>;
|
>;
|
||||||
|
|
||||||
@ -431,10 +445,10 @@ export type LockReleasedEventFilter = TypedEventFilter<LockReleasedEvent>;
|
|||||||
|
|
||||||
export interface LockReturnedEventObject {
|
export interface LockReturnedEventObject {
|
||||||
buyer: string;
|
buyer: string;
|
||||||
lockId: string;
|
lockId: BigNumber;
|
||||||
}
|
}
|
||||||
export type LockReturnedEvent = TypedEvent<
|
export type LockReturnedEvent = TypedEvent<
|
||||||
[string, string],
|
[string, BigNumber],
|
||||||
LockReturnedEventObject
|
LockReturnedEventObject
|
||||||
>;
|
>;
|
||||||
|
|
||||||
@ -557,6 +571,12 @@ export interface P2PIX extends BaseContract {
|
|||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<[BigNumber] & { bal: BigNumber }>;
|
): Promise<[BigNumber] & { bal: BigNumber }>;
|
||||||
|
|
||||||
|
getBalances(
|
||||||
|
sellers: PromiseOrValue<string>[],
|
||||||
|
token: PromiseOrValue<string>,
|
||||||
|
overrides?: CallOverrides
|
||||||
|
): Promise<[BigNumber[]] & { balances: BigNumber[] }>;
|
||||||
|
|
||||||
getPixTarget(
|
getPixTarget(
|
||||||
seller: PromiseOrValue<string>,
|
seller: PromiseOrValue<string>,
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
@ -577,14 +597,14 @@ export interface P2PIX extends BaseContract {
|
|||||||
_relayerPremium: PromiseOrValue<BigNumberish>,
|
_relayerPremium: PromiseOrValue<BigNumberish>,
|
||||||
_amount: PromiseOrValue<BigNumberish>,
|
_amount: PromiseOrValue<BigNumberish>,
|
||||||
merkleProof: PromiseOrValue<BytesLike>[],
|
merkleProof: PromiseOrValue<BytesLike>[],
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<ContractTransaction>;
|
): Promise<ContractTransaction>;
|
||||||
|
|
||||||
lockCounter(overrides?: CallOverrides): Promise<[BigNumber]>;
|
lockCounter(overrides?: CallOverrides): Promise<[BigNumber]>;
|
||||||
|
|
||||||
mapLocks(
|
mapLocks(
|
||||||
arg0: PromiseOrValue<BytesLike>,
|
arg0: PromiseOrValue<BigNumberish>,
|
||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<
|
): Promise<
|
||||||
[
|
[
|
||||||
@ -615,7 +635,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
owner(overrides?: CallOverrides): Promise<[string]>;
|
owner(overrides?: CallOverrides): Promise<[string]>;
|
||||||
|
|
||||||
release(
|
release(
|
||||||
lockID: PromiseOrValue<BytesLike>,
|
lockID: PromiseOrValue<BigNumberish>,
|
||||||
_relayerTarget: PromiseOrValue<string>,
|
_relayerTarget: PromiseOrValue<string>,
|
||||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||||
r: PromiseOrValue<BytesLike>,
|
r: PromiseOrValue<BytesLike>,
|
||||||
@ -676,7 +696,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
): Promise<ContractTransaction>;
|
): Promise<ContractTransaction>;
|
||||||
|
|
||||||
unlockExpired(
|
unlockExpired(
|
||||||
lockIDs: PromiseOrValue<BytesLike>[],
|
lockIDs: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<ContractTransaction>;
|
): Promise<ContractTransaction>;
|
||||||
|
|
||||||
@ -697,7 +717,8 @@ export interface P2PIX extends BaseContract {
|
|||||||
|
|
||||||
withdraw(
|
withdraw(
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
amount: PromiseOrValue<BigNumberish>,
|
||||||
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<ContractTransaction>;
|
): Promise<ContractTransaction>;
|
||||||
|
|
||||||
@ -740,6 +761,12 @@ export interface P2PIX extends BaseContract {
|
|||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<BigNumber>;
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
|
getBalances(
|
||||||
|
sellers: PromiseOrValue<string>[],
|
||||||
|
token: PromiseOrValue<string>,
|
||||||
|
overrides?: CallOverrides
|
||||||
|
): Promise<BigNumber[]>;
|
||||||
|
|
||||||
getPixTarget(
|
getPixTarget(
|
||||||
seller: PromiseOrValue<string>,
|
seller: PromiseOrValue<string>,
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
@ -760,14 +787,14 @@ export interface P2PIX extends BaseContract {
|
|||||||
_relayerPremium: PromiseOrValue<BigNumberish>,
|
_relayerPremium: PromiseOrValue<BigNumberish>,
|
||||||
_amount: PromiseOrValue<BigNumberish>,
|
_amount: PromiseOrValue<BigNumberish>,
|
||||||
merkleProof: PromiseOrValue<BytesLike>[],
|
merkleProof: PromiseOrValue<BytesLike>[],
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<ContractTransaction>;
|
): Promise<ContractTransaction>;
|
||||||
|
|
||||||
lockCounter(overrides?: CallOverrides): Promise<BigNumber>;
|
lockCounter(overrides?: CallOverrides): Promise<BigNumber>;
|
||||||
|
|
||||||
mapLocks(
|
mapLocks(
|
||||||
arg0: PromiseOrValue<BytesLike>,
|
arg0: PromiseOrValue<BigNumberish>,
|
||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<
|
): Promise<
|
||||||
[
|
[
|
||||||
@ -798,7 +825,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
owner(overrides?: CallOverrides): Promise<string>;
|
owner(overrides?: CallOverrides): Promise<string>;
|
||||||
|
|
||||||
release(
|
release(
|
||||||
lockID: PromiseOrValue<BytesLike>,
|
lockID: PromiseOrValue<BigNumberish>,
|
||||||
_relayerTarget: PromiseOrValue<string>,
|
_relayerTarget: PromiseOrValue<string>,
|
||||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||||
r: PromiseOrValue<BytesLike>,
|
r: PromiseOrValue<BytesLike>,
|
||||||
@ -859,7 +886,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
): Promise<ContractTransaction>;
|
): Promise<ContractTransaction>;
|
||||||
|
|
||||||
unlockExpired(
|
unlockExpired(
|
||||||
lockIDs: PromiseOrValue<BytesLike>[],
|
lockIDs: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<ContractTransaction>;
|
): Promise<ContractTransaction>;
|
||||||
|
|
||||||
@ -880,7 +907,8 @@ export interface P2PIX extends BaseContract {
|
|||||||
|
|
||||||
withdraw(
|
withdraw(
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
amount: PromiseOrValue<BigNumberish>,
|
||||||
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<ContractTransaction>;
|
): Promise<ContractTransaction>;
|
||||||
|
|
||||||
@ -923,6 +951,12 @@ export interface P2PIX extends BaseContract {
|
|||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<BigNumber>;
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
|
getBalances(
|
||||||
|
sellers: PromiseOrValue<string>[],
|
||||||
|
token: PromiseOrValue<string>,
|
||||||
|
overrides?: CallOverrides
|
||||||
|
): Promise<BigNumber[]>;
|
||||||
|
|
||||||
getPixTarget(
|
getPixTarget(
|
||||||
seller: PromiseOrValue<string>,
|
seller: PromiseOrValue<string>,
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
@ -943,14 +977,14 @@ export interface P2PIX extends BaseContract {
|
|||||||
_relayerPremium: PromiseOrValue<BigNumberish>,
|
_relayerPremium: PromiseOrValue<BigNumberish>,
|
||||||
_amount: PromiseOrValue<BigNumberish>,
|
_amount: PromiseOrValue<BigNumberish>,
|
||||||
merkleProof: PromiseOrValue<BytesLike>[],
|
merkleProof: PromiseOrValue<BytesLike>[],
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<string>;
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
lockCounter(overrides?: CallOverrides): Promise<BigNumber>;
|
lockCounter(overrides?: CallOverrides): Promise<BigNumber>;
|
||||||
|
|
||||||
mapLocks(
|
mapLocks(
|
||||||
arg0: PromiseOrValue<BytesLike>,
|
arg0: PromiseOrValue<BigNumberish>,
|
||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<
|
): Promise<
|
||||||
[
|
[
|
||||||
@ -981,7 +1015,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
owner(overrides?: CallOverrides): Promise<string>;
|
owner(overrides?: CallOverrides): Promise<string>;
|
||||||
|
|
||||||
release(
|
release(
|
||||||
lockID: PromiseOrValue<BytesLike>,
|
lockID: PromiseOrValue<BigNumberish>,
|
||||||
_relayerTarget: PromiseOrValue<string>,
|
_relayerTarget: PromiseOrValue<string>,
|
||||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||||
r: PromiseOrValue<BytesLike>,
|
r: PromiseOrValue<BytesLike>,
|
||||||
@ -1042,7 +1076,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
): Promise<void>;
|
): Promise<void>;
|
||||||
|
|
||||||
unlockExpired(
|
unlockExpired(
|
||||||
lockIDs: PromiseOrValue<BytesLike>[],
|
lockIDs: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<void>;
|
): Promise<void>;
|
||||||
|
|
||||||
@ -1063,9 +1097,10 @@ export interface P2PIX extends BaseContract {
|
|||||||
|
|
||||||
withdraw(
|
withdraw(
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
amount: PromiseOrValue<BigNumberish>,
|
||||||
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<BigNumber>;
|
): Promise<void>;
|
||||||
|
|
||||||
withdrawBalance(overrides?: CallOverrides): Promise<void>;
|
withdrawBalance(overrides?: CallOverrides): Promise<void>;
|
||||||
};
|
};
|
||||||
@ -1108,15 +1143,15 @@ export interface P2PIX extends BaseContract {
|
|||||||
): FundsWithdrawnEventFilter;
|
): FundsWithdrawnEventFilter;
|
||||||
FundsWithdrawn(owner?: null, amount?: null): FundsWithdrawnEventFilter;
|
FundsWithdrawn(owner?: null, amount?: null): FundsWithdrawnEventFilter;
|
||||||
|
|
||||||
"LockAdded(address,bytes32,uint256,uint256)"(
|
"LockAdded(address,uint256,uint256,uint256)"(
|
||||||
buyer?: PromiseOrValue<string> | null,
|
buyer?: PromiseOrValue<string> | null,
|
||||||
lockID?: PromiseOrValue<BytesLike> | null,
|
lockID?: PromiseOrValue<BigNumberish> | null,
|
||||||
seller?: null,
|
seller?: null,
|
||||||
amount?: null
|
amount?: null
|
||||||
): LockAddedEventFilter;
|
): LockAddedEventFilter;
|
||||||
LockAdded(
|
LockAdded(
|
||||||
buyer?: PromiseOrValue<string> | null,
|
buyer?: PromiseOrValue<string> | null,
|
||||||
lockID?: PromiseOrValue<BytesLike> | null,
|
lockID?: PromiseOrValue<BigNumberish> | null,
|
||||||
seller?: null,
|
seller?: null,
|
||||||
amount?: null
|
amount?: null
|
||||||
): LockAddedEventFilter;
|
): LockAddedEventFilter;
|
||||||
@ -1124,7 +1159,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
"LockBlocksUpdated(uint256)"(blocks?: null): LockBlocksUpdatedEventFilter;
|
"LockBlocksUpdated(uint256)"(blocks?: null): LockBlocksUpdatedEventFilter;
|
||||||
LockBlocksUpdated(blocks?: null): LockBlocksUpdatedEventFilter;
|
LockBlocksUpdated(blocks?: null): LockBlocksUpdatedEventFilter;
|
||||||
|
|
||||||
"LockReleased(address,bytes32,uint256)"(
|
"LockReleased(address,uint256,uint256)"(
|
||||||
buyer?: PromiseOrValue<string> | null,
|
buyer?: PromiseOrValue<string> | null,
|
||||||
lockId?: null,
|
lockId?: null,
|
||||||
amount?: null
|
amount?: null
|
||||||
@ -1135,7 +1170,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
amount?: null
|
amount?: null
|
||||||
): LockReleasedEventFilter;
|
): LockReleasedEventFilter;
|
||||||
|
|
||||||
"LockReturned(address,bytes32)"(
|
"LockReturned(address,uint256)"(
|
||||||
buyer?: PromiseOrValue<string> | null,
|
buyer?: PromiseOrValue<string> | null,
|
||||||
lockId?: null
|
lockId?: null
|
||||||
): LockReturnedEventFilter;
|
): LockReturnedEventFilter;
|
||||||
@ -1216,6 +1251,12 @@ export interface P2PIX extends BaseContract {
|
|||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<BigNumber>;
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
|
getBalances(
|
||||||
|
sellers: PromiseOrValue<string>[],
|
||||||
|
token: PromiseOrValue<string>,
|
||||||
|
overrides?: CallOverrides
|
||||||
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
getPixTarget(
|
getPixTarget(
|
||||||
seller: PromiseOrValue<string>,
|
seller: PromiseOrValue<string>,
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
@ -1236,21 +1277,21 @@ export interface P2PIX extends BaseContract {
|
|||||||
_relayerPremium: PromiseOrValue<BigNumberish>,
|
_relayerPremium: PromiseOrValue<BigNumberish>,
|
||||||
_amount: PromiseOrValue<BigNumberish>,
|
_amount: PromiseOrValue<BigNumberish>,
|
||||||
merkleProof: PromiseOrValue<BytesLike>[],
|
merkleProof: PromiseOrValue<BytesLike>[],
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<BigNumber>;
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
lockCounter(overrides?: CallOverrides): Promise<BigNumber>;
|
lockCounter(overrides?: CallOverrides): Promise<BigNumber>;
|
||||||
|
|
||||||
mapLocks(
|
mapLocks(
|
||||||
arg0: PromiseOrValue<BytesLike>,
|
arg0: PromiseOrValue<BigNumberish>,
|
||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<BigNumber>;
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
owner(overrides?: CallOverrides): Promise<BigNumber>;
|
owner(overrides?: CallOverrides): Promise<BigNumber>;
|
||||||
|
|
||||||
release(
|
release(
|
||||||
lockID: PromiseOrValue<BytesLike>,
|
lockID: PromiseOrValue<BigNumberish>,
|
||||||
_relayerTarget: PromiseOrValue<string>,
|
_relayerTarget: PromiseOrValue<string>,
|
||||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||||
r: PromiseOrValue<BytesLike>,
|
r: PromiseOrValue<BytesLike>,
|
||||||
@ -1311,7 +1352,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
): Promise<BigNumber>;
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
unlockExpired(
|
unlockExpired(
|
||||||
lockIDs: PromiseOrValue<BytesLike>[],
|
lockIDs: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<BigNumber>;
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
@ -1332,7 +1373,8 @@ export interface P2PIX extends BaseContract {
|
|||||||
|
|
||||||
withdraw(
|
withdraw(
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
amount: PromiseOrValue<BigNumberish>,
|
||||||
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<BigNumber>;
|
): Promise<BigNumber>;
|
||||||
|
|
||||||
@ -1376,6 +1418,12 @@ export interface P2PIX extends BaseContract {
|
|||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<PopulatedTransaction>;
|
): Promise<PopulatedTransaction>;
|
||||||
|
|
||||||
|
getBalances(
|
||||||
|
sellers: PromiseOrValue<string>[],
|
||||||
|
token: PromiseOrValue<string>,
|
||||||
|
overrides?: CallOverrides
|
||||||
|
): Promise<PopulatedTransaction>;
|
||||||
|
|
||||||
getPixTarget(
|
getPixTarget(
|
||||||
seller: PromiseOrValue<string>,
|
seller: PromiseOrValue<string>,
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
@ -1396,21 +1444,21 @@ export interface P2PIX extends BaseContract {
|
|||||||
_relayerPremium: PromiseOrValue<BigNumberish>,
|
_relayerPremium: PromiseOrValue<BigNumberish>,
|
||||||
_amount: PromiseOrValue<BigNumberish>,
|
_amount: PromiseOrValue<BigNumberish>,
|
||||||
merkleProof: PromiseOrValue<BytesLike>[],
|
merkleProof: PromiseOrValue<BytesLike>[],
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<PopulatedTransaction>;
|
): Promise<PopulatedTransaction>;
|
||||||
|
|
||||||
lockCounter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
lockCounter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||||
|
|
||||||
mapLocks(
|
mapLocks(
|
||||||
arg0: PromiseOrValue<BytesLike>,
|
arg0: PromiseOrValue<BigNumberish>,
|
||||||
overrides?: CallOverrides
|
overrides?: CallOverrides
|
||||||
): Promise<PopulatedTransaction>;
|
): Promise<PopulatedTransaction>;
|
||||||
|
|
||||||
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||||
|
|
||||||
release(
|
release(
|
||||||
lockID: PromiseOrValue<BytesLike>,
|
lockID: PromiseOrValue<BigNumberish>,
|
||||||
_relayerTarget: PromiseOrValue<string>,
|
_relayerTarget: PromiseOrValue<string>,
|
||||||
pixTimestamp: PromiseOrValue<BytesLike>,
|
pixTimestamp: PromiseOrValue<BytesLike>,
|
||||||
r: PromiseOrValue<BytesLike>,
|
r: PromiseOrValue<BytesLike>,
|
||||||
@ -1471,7 +1519,7 @@ export interface P2PIX extends BaseContract {
|
|||||||
): Promise<PopulatedTransaction>;
|
): Promise<PopulatedTransaction>;
|
||||||
|
|
||||||
unlockExpired(
|
unlockExpired(
|
||||||
lockIDs: PromiseOrValue<BytesLike>[],
|
lockIDs: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<PopulatedTransaction>;
|
): Promise<PopulatedTransaction>;
|
||||||
|
|
||||||
@ -1492,7 +1540,8 @@ export interface P2PIX extends BaseContract {
|
|||||||
|
|
||||||
withdraw(
|
withdraw(
|
||||||
token: PromiseOrValue<string>,
|
token: PromiseOrValue<string>,
|
||||||
expiredLocks: PromiseOrValue<BytesLike>[],
|
amount: PromiseOrValue<BigNumberish>,
|
||||||
|
expiredLocks: PromiseOrValue<BigNumberish>[],
|
||||||
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
||||||
): Promise<PopulatedTransaction>;
|
): Promise<PopulatedTransaction>;
|
||||||
|
|
||||||
|
3502
test/p2pix.test.ts
3502
test/p2pix.test.ts
File diff suppressed because it is too large
Load Diff
@ -15,4 +15,8 @@ export enum P2PixErrors {
|
|||||||
AddressDenied = "AddressDenied",
|
AddressDenied = "AddressDenied",
|
||||||
AmountNotAllowed = "AmountNotAllowed",
|
AmountNotAllowed = "AmountNotAllowed",
|
||||||
LockExpired = "LockExpired",
|
LockExpired = "LockExpired",
|
||||||
|
EmptyPixTarget = "EmptyPixTarget",
|
||||||
|
MaxBalExceeded = "MaxBalExceeded",
|
||||||
|
NotInitialized = "NotInitialized",
|
||||||
|
DecOverflow = "DecOverflow",
|
||||||
}
|
}
|
||||||
|
@ -17,22 +17,25 @@ export interface Deploys {
|
|||||||
token: string;
|
token: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Deposit {
|
// export interface Deposit {
|
||||||
remaining: BigNumber;
|
// remaining: BigNumber;
|
||||||
pixTarget: string;
|
// pixTarget: string;
|
||||||
seller: string;
|
// seller: string;
|
||||||
token: string;
|
// token: string;
|
||||||
valid: boolean;
|
// valid: boolean;
|
||||||
}
|
// }
|
||||||
|
|
||||||
export interface Lock {
|
export interface Lock {
|
||||||
depositID: BigNumber;
|
sellerKey: BigNumber;
|
||||||
|
counter: BigNumber;
|
||||||
relayerPremium: BigNumber;
|
relayerPremium: BigNumber;
|
||||||
amount: BigNumber;
|
amount: BigNumber;
|
||||||
expirationBlock: BigNumber;
|
expirationBlock: BigNumber;
|
||||||
|
pixTarget: BigNumber;
|
||||||
buyerAddress: string;
|
buyerAddress: string;
|
||||||
relayerTarget: string;
|
relayerTarget: string;
|
||||||
relayerAddress: string;
|
relayerAddress: string;
|
||||||
|
token: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface P2pixFixture {
|
export interface P2pixFixture {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user