V2 Release

This commit is contained in:
PedroCailleret 2023-01-26 21:40:17 -03:00
parent 0d612572c6
commit 6fe1e794d0
45 changed files with 3195 additions and 2866 deletions

View File

@ -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}"

View File

@ -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 @@
![Callgraph](docs/callgraph.svg) ![Callgraph](docs/callgraph.svg)
## 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
```

View File

@ -1,4 +1,4 @@
{ {
"_format": "hh-sol-dbg-1", "_format": "hh-sol-dbg-1",
"buildInfo": "../../build-info/f807a312b7619f2547c334c76d81a8da.json" "buildInfo": "../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
} }

View File

@ -1,4 +1,4 @@
{ {
"_format": "hh-sol-dbg-1", "_format": "hh-sol-dbg-1",
"buildInfo": "../../build-info/f807a312b7619f2547c334c76d81a8da.json" "buildInfo": "../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
} }

View File

@ -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",

View File

@ -1,4 +1,4 @@
{ {
"_format": "hh-sol-dbg-1", "_format": "hh-sol-dbg-1",
"buildInfo": "../../build-info/916d546d680bb337e1c490eb628d93df.json" "buildInfo": "../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
} }

View File

@ -99,8 +99,8 @@
"type": "function" "type": "function"
} }
], ],
"bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a35061036b806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100dc57600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102a6565b6100e8565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac3660046102d6565b6101a9565b6000546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610095565b61008b643a3529440081565b6000546001600160a01b031633146101465760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006101cc6101b88380610305565b6101c790643a35294400610324565b6101f4565b6101d983620f4240610305565b6101e3919061033c565b6101ee906001610324565b92915050565b60b58171010000000000000000000000000000000000811061021b5760409190911b9060801c5b690100000000000000000081106102375760209190911b9060401c5b65010000000000811061024f5760109190911b9060201c5b630100000081106102655760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6000602082840312156102b857600080fd5b81356001600160a01b03811681146102cf57600080fd5b9392505050565b6000602082840312156102e857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561031f5761031f6102ef565b500290565b60008219821115610337576103376102ef565b500190565b60008261035957634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000809000a", "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350610416806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100f657600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102f4565b610102565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac366004610331565b6101f7565b6000546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b61008b643a3529440081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600061021a6102068380610379565b61021590643a352944006103b6565b610242565b61022783620f4240610379565b61023191906103ce565b61023c9060016103b6565b92915050565b60b5817101000000000000000000000000000000000081106102695760409190911b9060801c5b690100000000000000000081106102855760209190911b9060401c5b65010000000000811061029d5760109190911b9060201c5b630100000081106102b35760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60006020828403121561030657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a57600080fd5b9392505050565b60006020828403121561034357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156103b1576103b161034a565b500290565b600082198211156103c9576103c961034a565b500190565b600082610404577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000809000a",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100dc57600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102a6565b6100e8565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac3660046102d6565b6101a9565b6000546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610095565b61008b643a3529440081565b6000546001600160a01b031633146101465760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006101cc6101b88380610305565b6101c790643a35294400610324565b6101f4565b6101d983620f4240610305565b6101e3919061033c565b6101ee906001610324565b92915050565b60b58171010000000000000000000000000000000000811061021b5760409190911b9060801c5b690100000000000000000081106102375760209190911b9060401c5b65010000000000811061024f5760109190911b9060201c5b630100000081106102655760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6000602082840312156102b857600080fd5b81356001600160a01b03811681146102cf57600080fd5b9392505050565b6000602082840312156102e857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561031f5761031f6102ef565b500290565b60008219821115610337576103376102ef565b500190565b60008261035957634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000809000a", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100f657600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102f4565b610102565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac366004610331565b6101f7565b6000546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b61008b643a3529440081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600061021a6102068380610379565b61021590643a352944006103b6565b610242565b61022783620f4240610379565b61023191906103ce565b61023c9060016103b6565b92915050565b60b5817101000000000000000000000000000000000081106102695760409190911b9060801c5b690100000000000000000081106102855760209190911b9060401c5b65010000000000811061029d5760109190911b9060201c5b630100000081106102b35760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60006020828403121561030657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a57600080fd5b9392505050565b60006020828403121561034357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156103b1576103b161034a565b500290565b600082198211156103c9576103c961034a565b500190565b600082610404577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000809000a",
"linkReferences": {}, "linkReferences": {},
"deployedLinkReferences": {} "deployedLinkReferences": {}
} }

View File

@ -1,4 +1,4 @@
{ {
"_format": "hh-sol-dbg-1", "_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json" "buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
} }

View File

@ -1,4 +1,4 @@
{ {
"_format": "hh-sol-dbg-1", "_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json" "buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
} }

View File

@ -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

View File

@ -1,4 +1,4 @@
{ {
"_format": "hh-sol-dbg-1", "_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json" "buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
} }

View File

@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json"
}

View File

@ -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": {}
}

View File

@ -1,4 +1,4 @@
{ {
"_format": "hh-sol-dbg-1", "_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json" "buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
} }

View File

@ -1,4 +1,4 @@
{ {
"_format": "hh-sol-dbg-1", "_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json" "buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
} }

View File

@ -1,4 +1,4 @@
{ {
"_format": "hh-sol-dbg-1", "_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/0043b38db58c3ff291cf622f3b61e1a3.json" "buildInfo": "../../../../build-info/6801f23dfb2a9667d9e89d4173ae1ee7.json"
} }

View File

@ -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

View File

@ -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();
} }

View File

@ -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)
}
}
}

View File

@ -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
@ -106,7 +106,7 @@ contract P2PIX is
ERC20 t = ERC20(_token); ERC20 t = ERC20(_token);
uint256 k = _castAddrToKey(msg.sender); uint256 k = _castAddrToKey(msg.sender);
if(_pixTarget == 0) if (_pixTarget == 0)
revert EmptyPixTarget(); revert EmptyPixTarget();
if (!allowedERC20s[t]) if (!allowedERC20s[t])
revert TokenDenied(); revert TokenDenied();
@ -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)
) )
public )
view ) {
returns(uint256 bal) // DecOverflow()
{ mstore(0x00, 0xce3a3d37)
bal = revert(0x1c, 0x04)
sellerBalance[ }
_castAddrToKey(seller)
][token] & BITMASK_SB_ENTRY;
} }
function getValid( // we can directly dec from packed uint entry value
address seller, sellerBalance[_k][_t] -= _amount;
ERC20 token
)
public
view
returns(bool valid)
{
uint256 b =
(sellerBalance[
_castAddrToKey(seller)
][token] >> BITPOS_VALID) & BITMASK_SB_ENTRY;
assembly { valid := b }
} }
function getPixTarget( function getBalance(address seller, ERC20 token)
address seller,
ERC20 token
)
public public
view view
returns(uint160 pixTarget) returns (uint256 bal)
{ {
pixTarget = // bal =
uint160( // sellerBalance[_castAddrToKey(seller)][token] &
sellerBalance[ // BITMASK_SB_ENTRY;
_castAddrToKey(seller) assembly {
][token] >> BITPOS_PIXTARGET 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(address seller, ERC20 token)
public
view
returns (bool valid)
{
// uint256 b = sellerBalance[
// _castAddrToKey(seller)
// ][token];
// ] >> BITPOS_VALID) & 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)
valid := and(
BITMASK_SB_ENTRY,
shr(
BITPOS_VALID,
sload(keccak256(0x00,0x40)
))) break
}}
}
function getPixTarget(address seller, ERC20 token)
public
view
returns (uint160 pixTarget)
{
// pixTarget = uint160(
// sellerBalance[_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
View File

@ -0,0 +1,8 @@
{
"signers": [
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
],
"p2pix": "0x2a54667b566B1Aa3779828720E6696AC18ae3f1b",
"token": "0x4A2886EAEc931e04297ed336Cc55c4eb7C75BA00"
}

View File

@ -3,6 +3,6 @@
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8" "0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
], ],
"p2pix": "0x37c856F4d5bC2597da60f607b1335738468453F3", "p2pix": "0xC86042E9F2977C62Da8c9dDF7F9c40fde4796A29",
"token": "0x294003F602c321627152c6b7DED3EAb5bEa853Ee" "token": "0xD38D6367f452D097ccBfDe4490b7de570B6A72Db"
} }

View File

@ -0,0 +1,8 @@
{
"signers": [
"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
],
"p2pix": "0x7F4680D114B43c4434FB604c7Bc6306125D32f28",
"token": "0xC86042E9F2977C62Da8c9dDF7F9c40fde4796A29"
}

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -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,
}, },
}, },
}, },

View File

@ -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\"",

View File

@ -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()

View File

@ -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()

View File

@ -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;

View File

@ -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",

View File

@ -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

View File

@ -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;
}
}

View File

@ -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

View File

@ -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,

View File

@ -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";

View File

@ -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: {};
}

View File

@ -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";

View File

@ -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>;

File diff suppressed because it is too large Load Diff

View File

@ -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",
} }

View File

@ -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 {