P2PIX
Methods
_castAddrToKey
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
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
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
function defaultLockBlocks() external view returns (uint256)
Default blocks that lock will hold tokens.
Returns
| Name |
Type |
Description |
| _0 |
uint256 |
undefined |
deposit
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
function depositCount() external view returns (uint256 _val)
Returns
| Name |
Type |
Description |
| _val |
uint256 |
undefined |
lock
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
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
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
function owner() external view returns (address)
Returns
| Name |
Type |
Description |
| _0 |
address |
undefined |
release
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
function reputation() external view returns (contract IReputation)
███ Storage ████████████████████████████████████████████████████████████
Returns
| Name |
Type |
Description |
| _0 |
contract IReputation |
undefined |
sellerAllowList
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
function setDefaultLockBlocks(uint256 _blocks) external nonpayable
Parameters
| Name |
Type |
Description |
| _blocks |
uint256 |
undefined |
setOwner
function setOwner(address newOwner) external nonpayable
Parameters
| Name |
Type |
Description |
| newOwner |
address |
undefined |
setReputation
function setReputation(contract IReputation _reputation) external nonpayable
Parameters
| Name |
Type |
Description |
| _reputation |
contract IReputation |
undefined |
setRoot
function setRoot(address addr, bytes32 merkleroot) external nonpayable
Parameters
| Name |
Type |
Description |
| addr |
address |
undefined |
| merkleroot |
bytes32 |
undefined |
setValidSigners
function setValidSigners(address[] _validSigners) external nonpayable
Parameters
| Name |
Type |
Description |
| _validSigners |
address[] |
undefined |
tokenSettings
function tokenSettings(address[] _tokens, bool[] _states) external nonpayable
Parameters
| Name |
Type |
Description |
| _tokens |
address[] |
undefined |
| _states |
bool[] |
undefined |
unlockExpired
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
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
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
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
function withdrawBalance() external nonpayable
Contract's underlying balance withdraw method.Function sighash: 0x5fd8c710.
Events
AllowedERC20Updated
event AllowedERC20Updated(address indexed token, bool indexed state)
Parameters
| Name |
Type |
Description |
token indexed |
address |
undefined |
state indexed |
bool |
undefined |
DepositAdded
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
event DepositClosed(address indexed seller, uint256 depositID)
Parameters
| Name |
Type |
Description |
seller indexed |
address |
undefined |
| depositID |
uint256 |
undefined |
DepositWithdrawn
event DepositWithdrawn(address indexed seller, uint256 depositID, uint256 amount)
Parameters
| Name |
Type |
Description |
seller indexed |
address |
undefined |
| depositID |
uint256 |
undefined |
| amount |
uint256 |
undefined |
FundsWithdrawn
event FundsWithdrawn(address owner, uint256 amount)
Parameters
| Name |
Type |
Description |
| owner |
address |
undefined |
| amount |
uint256 |
undefined |
LockAdded
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
event LockBlocksUpdated(uint256 blocks)
Parameters
| Name |
Type |
Description |
| blocks |
uint256 |
undefined |
LockReleased
event LockReleased(address indexed buyer, bytes32 lockId)
Parameters
| Name |
Type |
Description |
buyer indexed |
address |
undefined |
| lockId |
bytes32 |
undefined |
LockReturned
event LockReturned(address indexed buyer, bytes32 lockId)
Parameters
| Name |
Type |
Description |
buyer indexed |
address |
undefined |
| lockId |
bytes32 |
undefined |
OwnerUpdated
event OwnerUpdated(address indexed user, address indexed newOwner)
Parameters
| Name |
Type |
Description |
user indexed |
address |
undefined |
newOwner indexed |
address |
undefined |
ReputationUpdated
event ReputationUpdated(address reputation)
Parameters
| Name |
Type |
Description |
| reputation |
address |
undefined |
ValidSignersUpdated
event ValidSignersUpdated(address[] signers)
Parameters
| Name |
Type |
Description |
| signers |
address[] |
undefined |
Errors
AddressDenied
error AddressDenied()
Address doesn't exist in a MerkleTree.Address not allowed as relayer.0x3b8474be
AlreadyReleased
error AlreadyReleased()
Lock already released or returned.0x63b4904e
AmountNotAllowed
error AmountNotAllowed()
Wished amount to be locked exceeds the limit allowed.0x1c18f846
DepositAlreadyExists
error DepositAlreadyExists()
Deposit already exist and it is still valid.0xc44bd765
InvalidDeposit
error InvalidDeposit()
Deposit not valid anymore.0xb2e532de
InvalidSigner
error InvalidSigner()
Signer is not a valid signer.0x815e1d64
LengthMismatch
error LengthMismatch()
Arrays' length don't match.0xff633a38
LoopOverflow
error LoopOverflow()
Loop bounds have overflowed.0xdfb035c9
NoTokens
error NoTokens()
No tokens array provided as argument.0xdf957883
NotEnoughTokens
error NotEnoughTokens()
Not enough token remaining on deposit.0x22bbb43c
NotExpired
error NotExpired()
Lock not expired or already released.Another lock with same ID is not expired yet.0xd0404f85
OnlySeller
error OnlySeller()
Only seller could call this function.msg.sender and the seller differ.0x85d1f726
Reentrancy
error Reentrancy()
TokenDenied
error TokenDenied()
Token address not allowed to be deposited.0x1578328e
TxAlreadyUsed
error TxAlreadyUsed()
Transaction already used to unlock payment.0xf490a6ea