695 lines
18 KiB
Markdown
695 lines
18 KiB
Markdown
# P2PIX
|
|
|
|
## Methods
|
|
|
|
### \_castAddrToKey
|
|
|
|
```solidity
|
|
function _castAddrToKey(address _addr) external pure returns (uint256 _key)
|
|
```
|
|
|
|
Public method that handles `address` to `uint256` safe type casting.
|
|
|
|
_Function sighash: 0x4b2ae980._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ------ | ------- | ----------- |
|
|
| \_addr | address | undefined |
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ----- | ------- | ----------- |
|
|
| \_key | uint256 | undefined |
|
|
|
|
### allowedERC20s
|
|
|
|
```solidity
|
|
function allowedERC20s(contract ERC20) external view returns (bool)
|
|
```
|
|
|
|
_Tokens allowed to serve as the underlying amount of a deposit._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---- | -------------- | ----------- |
|
|
| \_0 | contract ERC20 | undefined |
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ---- | ----------- |
|
|
| \_0 | bool | undefined |
|
|
|
|
### cancelDeposit
|
|
|
|
```solidity
|
|
function cancelDeposit(uint256 depositID) external nonpayable
|
|
```
|
|
|
|
Enables seller to invalidate future locks made to his/her token offering order.
|
|
|
|
_This function does not affect any ongoing active locks.Function sighash: 0x72fada5c._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| --------- | ------- | ----------- |
|
|
| depositID | uint256 | undefined |
|
|
|
|
### defaultLockBlocks
|
|
|
|
```solidity
|
|
function defaultLockBlocks() external view returns (uint256)
|
|
```
|
|
|
|
_Default blocks that lock will hold tokens._
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ------- | ----------- |
|
|
| \_0 | uint256 | undefined |
|
|
|
|
### deposit
|
|
|
|
```solidity
|
|
function deposit(address _token, uint256 _amount, string _pixTarget, bytes32 allowlistRoot) external nonpayable returns (uint256 depositID)
|
|
```
|
|
|
|
Creates a deposit order based on a seller's offer of an amount of ERC20 tokens.
|
|
|
|
_Seller needs to send his tokens to the P2PIX smart contract.Function sighash: 0xbfe07da6._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ------------- | ------- | ------------------------------------------------------- |
|
|
| \_token | address | undefined |
|
|
| \_amount | uint256 | undefined |
|
|
| \_pixTarget | string | Pix key destination provided by the offer's seller. |
|
|
| allowlistRoot | bytes32 | Optional allow list merkleRoot update `bytes32` value. |
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| --------- | ------- | -------------------------------------------------------------- |
|
|
| depositID | uint256 | The `uint256` return value provided as the deposit identifier. |
|
|
|
|
### depositCount
|
|
|
|
```solidity
|
|
function depositCount() external view returns (uint256 _val)
|
|
```
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ----- | ------- | ----------- |
|
|
| \_val | uint256 | undefined |
|
|
|
|
### lock
|
|
|
|
```solidity
|
|
function lock(uint256 _depositID, address _buyerAddress, address _relayerTarget, uint256 _relayerPremium, uint256 _amount, bytes32[] merkleProof, bytes32[] expiredLocks) external nonpayable returns (bytes32 lockID)
|
|
```
|
|
|
|
Public method designed to lock an remaining amount of the deposit order of a seller.
|
|
|
|
_This method can be performed either by: - An user allowed via the seller's allowlist; - An user with enough userRecord to lock the wished amount; There can only exist a lock per each `_amount` partitioned from the total `remaining` value.Locks can only be performed in valid orders.Function sighash: 0x03aaf306._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---------------- | --------- | ------------------------------------------------------------------------------------------------------------------------ |
|
|
| \_depositID | uint256 | undefined |
|
|
| \_buyerAddress | address | The address of the buyer of a `_depositID`. |
|
|
| \_relayerTarget | address | Target address entitled to the `relayerPremim`. |
|
|
| \_relayerPremium | uint256 | The refund/premium owed to a relayer. |
|
|
| \_amount | uint256 | The deposit's remaining amount wished to be locked. |
|
|
| merkleProof | bytes32[] | This value should be: - Provided as a pass if the `msg.sender` is in the seller's allowlist; - Left empty otherwise; |
|
|
| expiredLocks | bytes32[] | An array of `bytes32` identifiers to be provided so to unexpire locks using this transaction gas push. |
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ------ | ------- | ---------------------------------------------------- |
|
|
| lockID | bytes32 | The `bytes32` value returned as the lock identifier. |
|
|
|
|
### mapDeposits
|
|
|
|
```solidity
|
|
function mapDeposits(uint256) external view returns (uint256 remaining, string pixTarget, address seller, address token, bool valid)
|
|
```
|
|
|
|
_Seller list of deposits_
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ------- | ----------- |
|
|
| \_0 | uint256 | undefined |
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| --------- | ------- | ----------- |
|
|
| remaining | uint256 | undefined |
|
|
| pixTarget | string | undefined |
|
|
| seller | address | undefined |
|
|
| token | address | undefined |
|
|
| valid | bool | undefined |
|
|
|
|
### mapLocks
|
|
|
|
```solidity
|
|
function mapLocks(bytes32) external view returns (uint256 depositID, uint256 relayerPremium, uint256 amount, uint256 expirationBlock, address buyerAddress, address relayerTarget, address relayerAddress)
|
|
```
|
|
|
|
_List of Locks._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ------- | ----------- |
|
|
| \_0 | bytes32 | undefined |
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| --------------- | ------- | ----------- |
|
|
| depositID | uint256 | undefined |
|
|
| relayerPremium | uint256 | undefined |
|
|
| amount | uint256 | undefined |
|
|
| expirationBlock | uint256 | undefined |
|
|
| buyerAddress | address | undefined |
|
|
| relayerTarget | address | undefined |
|
|
| relayerAddress | address | undefined |
|
|
|
|
### owner
|
|
|
|
```solidity
|
|
function owner() external view returns (address)
|
|
```
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ------- | ----------- |
|
|
| \_0 | address | undefined |
|
|
|
|
### release
|
|
|
|
```solidity
|
|
function release(bytes32 lockID, address _relayerTarget, uint256 pixTimestamp, bytes32 r, bytes32 s, uint8 v) external nonpayable
|
|
```
|
|
|
|
Lock release method that liquidate lock orders and distributes relayer fees.
|
|
|
|
_This method can be called by any public actor as long the signature provided is valid.`relayerPremium` gets splitted equaly if `relayerTarget` addresses differ.If the `msg.sender` of this method and `l.relayerAddress` are the same, `msg.sender` accrues both l.amount and l.relayerPremium as userRecord credit. In case of they differing: - `lock` caller gets accrued with `l.amount` as userRecord credit; - `release` caller gets accrued with `l.relayerPremium` as userRecord credit; Function sighash: 0x4e1389ed._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| --------------- | ------- | ----------------------------------------------- |
|
|
| lockID | bytes32 | undefined |
|
|
| \_relayerTarget | address | Target address entitled to the `relayerPremim`. |
|
|
| pixTimestamp | uint256 | undefined |
|
|
| r | bytes32 | undefined |
|
|
| s | bytes32 | undefined |
|
|
| v | uint8 | undefined |
|
|
|
|
### reputation
|
|
|
|
```solidity
|
|
function reputation() external view returns (contract IReputation)
|
|
```
|
|
|
|
███ Storage ████████████████████████████████████████████████████████████
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ---- | -------------------- | ----------- |
|
|
| \_0 | contract IReputation | undefined |
|
|
|
|
### sellerAllowList
|
|
|
|
```solidity
|
|
function sellerAllowList(uint256) external view returns (bytes32)
|
|
```
|
|
|
|
_Seller casted to key => Seller's allowlist merkleroot._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ------- | ----------- |
|
|
| \_0 | uint256 | undefined |
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ------- | ----------- |
|
|
| \_0 | bytes32 | undefined |
|
|
|
|
### setDefaultLockBlocks
|
|
|
|
```solidity
|
|
function setDefaultLockBlocks(uint256 _blocks) external nonpayable
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| -------- | ------- | ----------- |
|
|
| \_blocks | uint256 | undefined |
|
|
|
|
### setOwner
|
|
|
|
```solidity
|
|
function setOwner(address newOwner) external nonpayable
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| -------- | ------- | ----------- |
|
|
| newOwner | address | undefined |
|
|
|
|
### setReputation
|
|
|
|
```solidity
|
|
function setReputation(contract IReputation _reputation) external nonpayable
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ------------ | -------------------- | ----------- |
|
|
| \_reputation | contract IReputation | undefined |
|
|
|
|
### setRoot
|
|
|
|
```solidity
|
|
function setRoot(address addr, bytes32 merkleroot) external nonpayable
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---------- | ------- | ----------- |
|
|
| addr | address | undefined |
|
|
| merkleroot | bytes32 | undefined |
|
|
|
|
### setValidSigners
|
|
|
|
```solidity
|
|
function setValidSigners(address[] _validSigners) external nonpayable
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| -------------- | --------- | ----------- |
|
|
| \_validSigners | address[] | undefined |
|
|
|
|
### tokenSettings
|
|
|
|
```solidity
|
|
function tokenSettings(address[] _tokens, bool[] _states) external nonpayable
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| -------- | --------- | ----------- |
|
|
| \_tokens | address[] | undefined |
|
|
| \_states | bool[] | undefined |
|
|
|
|
### unlockExpired
|
|
|
|
```solidity
|
|
function unlockExpired(bytes32[] lockIDs) external nonpayable
|
|
```
|
|
|
|
Unlocks expired locks.
|
|
|
|
_Triggered in the callgraph by both `lock` and `withdraw` functions.This method can also have any public actor as its `tx.origin`.For each successfull unexpired lock recovered, `userRecord[_castAddrToKey(l.relayerAddress)]` is decreased by half of its value.Function sighash: 0x8e2749d6._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ------- | --------- | ----------- |
|
|
| lockIDs | bytes32[] | undefined |
|
|
|
|
### userRecord
|
|
|
|
```solidity
|
|
function userRecord(uint256) external view returns (uint256)
|
|
```
|
|
|
|
_Stores an relayer's last computed credit._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ------- | ----------- |
|
|
| \_0 | uint256 | undefined |
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ------- | ----------- |
|
|
| \_0 | uint256 | undefined |
|
|
|
|
### validBacenSigners
|
|
|
|
```solidity
|
|
function validBacenSigners(uint256) external view returns (bool)
|
|
```
|
|
|
|
_List of valid Bacen signature addresses_
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ------- | ----------- |
|
|
| \_0 | uint256 | undefined |
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ---- | ----------- |
|
|
| \_0 | bool | undefined |
|
|
|
|
### withdraw
|
|
|
|
```solidity
|
|
function withdraw(uint256 depositID, bytes32[] expiredLocks) external nonpayable
|
|
```
|
|
|
|
Seller's expired deposit fund sweeper.
|
|
|
|
_A seller may use this method to recover tokens from expired deposits.Function sighash: 0x36317972._
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ------------ | --------- | ----------- |
|
|
| depositID | uint256 | undefined |
|
|
| expiredLocks | bytes32[] | undefined |
|
|
|
|
### withdrawBalance
|
|
|
|
```solidity
|
|
function withdrawBalance() external nonpayable
|
|
```
|
|
|
|
_Contract's underlying balance withdraw method.Function sighash: 0x5fd8c710._
|
|
|
|
## Events
|
|
|
|
### AllowedERC20Updated
|
|
|
|
```solidity
|
|
event AllowedERC20Updated(address indexed token, bool indexed state)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| --------------- | ------- | ----------- |
|
|
| token `indexed` | address | undefined |
|
|
| state `indexed` | bool | undefined |
|
|
|
|
### DepositAdded
|
|
|
|
```solidity
|
|
event DepositAdded(address indexed seller, uint256 depositID, address token, uint256 amount)
|
|
```
|
|
|
|
███ Events ████████████████████████████████████████████████████████████
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---------------- | ------- | ----------- |
|
|
| seller `indexed` | address | undefined |
|
|
| depositID | uint256 | undefined |
|
|
| token | address | undefined |
|
|
| amount | uint256 | undefined |
|
|
|
|
### DepositClosed
|
|
|
|
```solidity
|
|
event DepositClosed(address indexed seller, uint256 depositID)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---------------- | ------- | ----------- |
|
|
| seller `indexed` | address | undefined |
|
|
| depositID | uint256 | undefined |
|
|
|
|
### DepositWithdrawn
|
|
|
|
```solidity
|
|
event DepositWithdrawn(address indexed seller, uint256 depositID, uint256 amount)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---------------- | ------- | ----------- |
|
|
| seller `indexed` | address | undefined |
|
|
| depositID | uint256 | undefined |
|
|
| amount | uint256 | undefined |
|
|
|
|
### FundsWithdrawn
|
|
|
|
```solidity
|
|
event FundsWithdrawn(address owner, uint256 amount)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ------ | ------- | ----------- |
|
|
| owner | address | undefined |
|
|
| amount | uint256 | undefined |
|
|
|
|
### LockAdded
|
|
|
|
```solidity
|
|
event LockAdded(address indexed buyer, bytes32 indexed lockID, uint256 depositID, uint256 amount)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---------------- | ------- | ----------- |
|
|
| buyer `indexed` | address | undefined |
|
|
| lockID `indexed` | bytes32 | undefined |
|
|
| depositID | uint256 | undefined |
|
|
| amount | uint256 | undefined |
|
|
|
|
### LockBlocksUpdated
|
|
|
|
```solidity
|
|
event LockBlocksUpdated(uint256 blocks)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ------ | ------- | ----------- |
|
|
| blocks | uint256 | undefined |
|
|
|
|
### LockReleased
|
|
|
|
```solidity
|
|
event LockReleased(address indexed buyer, bytes32 lockId)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| --------------- | ------- | ----------- |
|
|
| buyer `indexed` | address | undefined |
|
|
| lockId | bytes32 | undefined |
|
|
|
|
### LockReturned
|
|
|
|
```solidity
|
|
event LockReturned(address indexed buyer, bytes32 lockId)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| --------------- | ------- | ----------- |
|
|
| buyer `indexed` | address | undefined |
|
|
| lockId | bytes32 | undefined |
|
|
|
|
### OwnerUpdated
|
|
|
|
```solidity
|
|
event OwnerUpdated(address indexed user, address indexed newOwner)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ------------------ | ------- | ----------- |
|
|
| user `indexed` | address | undefined |
|
|
| newOwner `indexed` | address | undefined |
|
|
|
|
### ReputationUpdated
|
|
|
|
```solidity
|
|
event ReputationUpdated(address reputation)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ---------- | ------- | ----------- |
|
|
| reputation | address | undefined |
|
|
|
|
### ValidSignersUpdated
|
|
|
|
```solidity
|
|
event ValidSignersUpdated(address[] signers)
|
|
```
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| ------- | --------- | ----------- |
|
|
| signers | address[] | undefined |
|
|
|
|
## Errors
|
|
|
|
### AddressDenied
|
|
|
|
```solidity
|
|
error AddressDenied()
|
|
```
|
|
|
|
_Address doesn't exist in a MerkleTree.Address not allowed as relayer.0x3b8474be_
|
|
|
|
### AlreadyReleased
|
|
|
|
```solidity
|
|
error AlreadyReleased()
|
|
```
|
|
|
|
_Lock already released or returned.0x63b4904e_
|
|
|
|
### AmountNotAllowed
|
|
|
|
```solidity
|
|
error AmountNotAllowed()
|
|
```
|
|
|
|
_Wished amount to be locked exceeds the limit allowed.0x1c18f846_
|
|
|
|
### DepositAlreadyExists
|
|
|
|
```solidity
|
|
error DepositAlreadyExists()
|
|
```
|
|
|
|
_Deposit already exist and it is still valid.0xc44bd765_
|
|
|
|
### InvalidDeposit
|
|
|
|
```solidity
|
|
error InvalidDeposit()
|
|
```
|
|
|
|
_Deposit not valid anymore.0xb2e532de_
|
|
|
|
### InvalidSigner
|
|
|
|
```solidity
|
|
error InvalidSigner()
|
|
```
|
|
|
|
_Signer is not a valid signer.0x815e1d64_
|
|
|
|
### LengthMismatch
|
|
|
|
```solidity
|
|
error LengthMismatch()
|
|
```
|
|
|
|
_Arrays' length don't match.0xff633a38_
|
|
|
|
### LoopOverflow
|
|
|
|
```solidity
|
|
error LoopOverflow()
|
|
```
|
|
|
|
_Loop bounds have overflowed.0xdfb035c9_
|
|
|
|
### NoTokens
|
|
|
|
```solidity
|
|
error NoTokens()
|
|
```
|
|
|
|
_No tokens array provided as argument.0xdf957883_
|
|
|
|
### NotEnoughTokens
|
|
|
|
```solidity
|
|
error NotEnoughTokens()
|
|
```
|
|
|
|
_Not enough token remaining on deposit.0x22bbb43c_
|
|
|
|
### NotExpired
|
|
|
|
```solidity
|
|
error NotExpired()
|
|
```
|
|
|
|
_Lock not expired or already released.Another lock with same ID is not expired yet.0xd0404f85_
|
|
|
|
### OnlySeller
|
|
|
|
```solidity
|
|
error OnlySeller()
|
|
```
|
|
|
|
_Only seller could call this function.`msg.sender` and the seller differ.0x85d1f726_
|
|
|
|
### Reentrancy
|
|
|
|
```solidity
|
|
error Reentrancy()
|
|
```
|
|
|
|
### TokenDenied
|
|
|
|
```solidity
|
|
error TokenDenied()
|
|
```
|
|
|
|
_Token address not allowed to be deposited.0x1578328e_
|
|
|
|
### TxAlreadyUsed
|
|
|
|
```solidity
|
|
error TxAlreadyUsed()
|
|
```
|
|
|
|
_Transaction already used to unlock payment.0xf490a6ea_
|