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