2022-12-03 01:17:48 -03:00

18 KiB

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