Skip to main content

IPublicLockV5

The PublicLock Interface

Methods​

BASIS_POINTS_DEN​

function BASIS_POINTS_DEN() external view returns (uint256)

Returns​

NameTypeDescription
_0uint256undefined

approve​

function approve(address to, uint256 tokenId) external nonpayable

Parameters​

NameTypeDescription
toaddressundefined
tokenIduint256undefined

balanceOf​

function balanceOf(address owner) external view returns (uint256 balance)

Returns the number of NFTs in owner's account.

Parameters​

NameTypeDescription
owneraddressundefined

Returns​

NameTypeDescription
balanceuint256undefined

beneficiary​

function beneficiary() external view returns (address)

=================================================================== Auto-generated getter functions from public state variables

Returns​

NameTypeDescription
_0addressundefined

cancelAndRefund​

function cancelAndRefund() external nonpayable

Destroys the msg.sender's key and sends a refund based on the amount of time remaining.

cancelAndRefundFor​

function cancelAndRefundFor(address _keyOwner, bytes _signature) external nonpayable

Cancels a key owned by a different user and sends the funds to the msg.sender.

Parameters​

NameTypeDescription
_keyOwneraddressthis user's key will be canceled
_signaturebytesgetCancelAndRefundApprovalHash signed by the _keyOwner

destroyLock​

function destroyLock() external nonpayable

Used to clean up old lock contracts from the blockchain. TODO: add a check to ensure all keys are INVALID!

Throws if called by other than owner.Throws if lock has not yet been disabled.

disableLock​

function disableLock() external nonpayable

Used to disable lock before migrating keys and/or destroying contract.

Throws if called by other than the owner.Throws if lock contract has already been disabled.

erc1820​

function erc1820() external view returns (address)

Returns​

NameTypeDescription
_0addressundefined

expirationDuration​

function expirationDuration() external view returns (uint256)

Returns​

NameTypeDescription
_0uint256undefined

expireKeyFor​

function expireKeyFor(address _owner) external nonpayable

A function which lets the owner of the lock expire a users' key.

Throws if called by other than lock ownerThrows if key owner does not have a valid key

Parameters​

NameTypeDescription
_owneraddressThe address of the key owner

freeTrialLength​

function freeTrialLength() external view returns (uint256)

Returns​

NameTypeDescription
_0uint256undefined

fullRefund​

function fullRefund(address _keyOwner, uint256 amount) external nonpayable

Invoked by the lock owner to destroy the user's key and perform a refund and cancellation of the keyThrows if called by other than ownerThrows if _keyOwner does not have a valid key

Parameters​

NameTypeDescription
_keyOwneraddressThe key owner to whom we wish to send a refund to
amountuint256The amount to refund the key-owner

getApproved​

function getApproved(uint256 tokenId) external view returns (address operator)

Parameters​

NameTypeDescription
tokenIduint256undefined

Returns​

NameTypeDescription
operatoraddressundefined

getBalance​

function getBalance(address _tokenAddress, address _account) external view returns (uint256)

Gets the current balance of the account provided.

Parameters​

NameTypeDescription
_tokenAddressaddressThe token type to retrieve the balance of.
_accountaddressThe account to get the balance of.

Returns​

NameTypeDescription
_0uint256undefined

getCancelAndRefundApprovalHash​

function getCancelAndRefundApprovalHash(address _keyOwner, address _txSender) external view returns (bytes32 approvalHash)

returns the hash to sign in order to allow another user to cancel on your behalf.

Parameters​

NameTypeDescription
_keyOwneraddressThe key owner's address
_txSenderaddressThe address cancelling the key on behalf of the key-owner

Returns​

NameTypeDescription
approvalHashbytes32undefined

getCancelAndRefundValueFor​

function getCancelAndRefundValueFor(address _owner) external view returns (uint256 refund)

Determines how much of a refund a key owner would receive if they issued

Parameters​

NameTypeDescription
_owneraddressThe key owner to get the refund value for. a cancelAndRefund block.timestamp. Note that due to the time required to mine a tx, the actual refund amount will be lower than what the user reads from this call.

Returns​

NameTypeDescription
refunduint256undefined

getHasValidKey​

function getHasValidKey(address _owner) external view returns (bool)

Checks if the user has a non-expired key.

Parameters​

NameTypeDescription
_owneraddressThe address of the key owner

Returns​

NameTypeDescription
_0boolundefined

getOwnersByPage​

function getOwnersByPage(uint256 _page, uint256 _pageSize) external view returns (address[])

A function which returns a subset of the keys for this Lock as an array

Throws if there are no key owners yet

Parameters​

NameTypeDescription
_pageuint256the page of key owners requested when faceted by page size
_pageSizeuint256the number of Key Owners requested per page

Returns​

NameTypeDescription
_0address[]undefined

getTokenIdFor​

function getTokenIdFor(address _account) external view returns (uint256)

Find the tokenId for a given user

Throws if key owner does not have a valid key

Parameters​

NameTypeDescription
_accountaddressThe address of the key owner

Returns​

NameTypeDescription
_0uint256undefined

getTransferFee​

function getTransferFee(address _owner, uint256 _time) external view returns (uint256)

Determines how much of a fee a key owner would need to pay in order to transfer the key to another account. This is pro-rated so the fee goes down overtime.

Throws if _owner does not have a valid key

Parameters​

NameTypeDescription
_owneraddressThe owner of the key check the transfer fee for.
_timeuint256The amount of time to calculate the fee for.

Returns​

NameTypeDescription
_0uint256undefined

grantKeys​

function grantKeys(address[] _recipients, uint256[] _expirationTimestamps) external nonpayable

Allows the Lock owner to give a collection of users a key with no charge. Each key may be assigned a different expiration date.

Throws if called by other than the lock-owner

Parameters​

NameTypeDescription
_recipientsaddress[]An array of receiving addresses
_expirationTimestampsuint256[]An array of expiration Timestamps for the keys being granted

initialize​

function initialize(address _owner, uint256 _expirationDuration, address _tokenAddress, uint256 _keyPrice, uint256 _maxNumberOfKeys, string _lockName) external nonpayable

=================================================================== Functions

Parameters​

NameTypeDescription
_owneraddressundefined
_expirationDurationuint256undefined
_tokenAddressaddressundefined
_keyPriceuint256undefined
_maxNumberOfKeysuint256undefined
_lockNamestringundefined

invalidateOffchainApproval​

function invalidateOffchainApproval(uint256 _nextAvailableNonce) external nonpayable

Sets the minimum nonce for a valid off-chain approval message from the senders account.

This can be used to invalidate a previously signed message.

Parameters​

NameTypeDescription
_nextAvailableNonceuint256undefined

isAlive​

function isAlive() external view returns (bool)

Returns​

NameTypeDescription
_0boolundefined

isApprovedForAll​

function isApprovedForAll(address owner, address operator) external view returns (bool)

Parameters​

NameTypeDescription
owneraddressundefined
operatoraddressundefined

Returns​

NameTypeDescription
_0boolundefined

isKeyOwner​

function isKeyOwner(uint256 _tokenId, address _owner) external view returns (bool)

Checks if the given address owns the given tokenId.

Parameters​

NameTypeDescription
_tokenIduint256The tokenId of the key to check
_owneraddressThe potential key owners address

Returns​

NameTypeDescription
_0boolundefined

isOwner​

function isOwner() external view returns (bool)

Returns​

NameTypeDescription
_0boolundefined

keyCancelInterfaceId​

function keyCancelInterfaceId() external view returns (bytes32)

Returns​

NameTypeDescription
_0bytes32undefined

keyExpirationTimestampFor​

function keyExpirationTimestampFor(address _owner) external view returns (uint256 timestamp)

Returns the key's ExpirationTimestamp field for a given owner.Throws if owner has never owned a key for this lock

Parameters​

NameTypeDescription
_owneraddressaddress of the user for whom we search the key

Returns​

NameTypeDescription
timestampuint256undefined

keyOwnerToNonce​

function keyOwnerToNonce(address) external view returns (uint256)

Parameters​

NameTypeDescription
_0addressundefined

Returns​

NameTypeDescription
_0uint256undefined

keyPrice​

function keyPrice() external view returns (uint256)

Returns​

NameTypeDescription
_0uint256undefined

keySoldInterfaceId​

function keySoldInterfaceId() external view returns (bytes32)

Returns​

NameTypeDescription
_0bytes32undefined

maxNumberOfKeys​

function maxNumberOfKeys() external view returns (uint256)

Returns​

NameTypeDescription
_0uint256undefined

name​

function name() external view returns (string _name)

A descriptive name for a collection of NFTs in this contract

Returns​

NameTypeDescription
_namestringundefined

numberOfOwners​

function numberOfOwners() external view returns (uint256)

Public function which returns the total number of unique owners (both expired and valid). This may be larger than totalSupply.

Returns​

NameTypeDescription
_0uint256undefined

owner​

function owner() external view returns (address)

=================================================================== From Openzeppelin's Ownable.sol

Returns​

NameTypeDescription
_0addressundefined

ownerOf​

function ownerOf(uint256 tokenId) external view returns (address owner)

Returns the owner of the NFT specified by tokenId.

Parameters​

NameTypeDescription
tokenIduint256undefined

Returns​

NameTypeDescription
owneraddressundefined

owners​

function owners(uint256) external view returns (address)

Parameters​

NameTypeDescription
_0uint256undefined

Returns​

NameTypeDescription
_0addressundefined

publicLockVersion​

function publicLockVersion() external pure returns (uint256)

The version number of the current implementation on this network.

Returns​

NameTypeDescription
_0uint256undefined

purchase​

function purchase(uint256 _value, address _recipient, address _referrer, bytes _data) external payable

Purchase functionThrows if lock is disabled. Throws if lock is sold-out. Throws if _recipient == address(0).Setting _value to keyPrice exactly doubles as a security feature. That way if the lock owner increases the price while my transaction is pending I can't be charged more than I expected (only applicable to ERC-20 when more than keyPrice is approved for spending).

Parameters​

NameTypeDescription
_valueuint256the number of tokens to pay for this purchase >= the current keyPrice - any applicable discount (_value is ignored when using ETH)
_recipientaddressaddress of the recipient of the purchased key
_referreraddressaddress of the user making the referral
_databytesarbitrary data populated by the front-end which initiated the sale

refundPenaltyBasisPoints​

function refundPenaltyBasisPoints() external view returns (uint256)

Returns​

NameTypeDescription
_0uint256undefined

renounceOwnership​

function renounceOwnership() external nonpayable

safeTransferFrom​

function safeTransferFrom(address from, address to, uint256 tokenId) external nonpayable

Transfers a specific NFT (tokenId) from one account (from) to another (to). Requirements: - from, to cannot be zero. - tokenId must be owned by from. - If the caller is not from, it must be have been allowed to move this NFT by either {approve} or {setApprovalForAll}.

Parameters​

NameTypeDescription
fromaddressundefined
toaddressundefined
tokenIduint256undefined

safeTransferFrom​

function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) external nonpayable

Parameters​

NameTypeDescription
fromaddressundefined
toaddressundefined
tokenIduint256undefined
databytesundefined

setApprovalForAll​

function setApprovalForAll(address operator, bool _approved) external nonpayable

Parameters​

NameTypeDescription
operatoraddressundefined
_approvedboolundefined

setBaseTokenURI​

function setBaseTokenURI(string _baseTokenURI) external nonpayable

Allows the Lock owner to update the baseTokenURI for this Lock.

Throws if called by other than the lock owner

Parameters​

NameTypeDescription
_baseTokenURIstringString representing the base of the URI for this lock.

shareKey​

function shareKey(address _to, uint256 _tokenId, uint256 _timeShared) external nonpayable

Allows the key owner to safely share their key (parent key) by transferring a portion of the remaining time to a new key (child key).

Throws if key is not valid.Throws if _to is the zero addressEmit Transfer event

Parameters​

NameTypeDescription
_toaddressThe recipient of the shared key
_tokenIduint256the key to share
_timeShareduint256The amount of time shared checks if _to is a smart contract (code size > 0). If so, it calls onERC721Received on _to and throws if the return value is not bytes4(keccak256('onERC721Received(address,address,uint,bytes)')).

supportsInterface​

function supportsInterface(bytes4 interfaceId) external view returns (bool)

=================================================================== From ERC165.sol

Parameters​

NameTypeDescription
interfaceIdbytes4undefined

Returns​

NameTypeDescription
_0boolundefined

symbol​

function symbol() external view returns (string)

Gets the token symbol

Returns​

NameTypeDescription
_0stringundefined

tokenAddress​

function tokenAddress() external view returns (address)

Returns​

NameTypeDescription
_0addressundefined

tokenByIndex​

function tokenByIndex(uint256 index) external view returns (uint256)

Parameters​

NameTypeDescription
indexuint256undefined

Returns​

NameTypeDescription
_0uint256undefined

tokenOfOwnerByIndex​

function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId)

Parameters​

NameTypeDescription
owneraddressundefined
indexuint256undefined

Returns​

NameTypeDescription
tokenIduint256undefined

tokenURI​

function tokenURI(uint256 _tokenId) external view returns (string)

A distinct Uniform Resource Identifier (URI) for a given asset.

Throws if _tokenId is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the "ERC721 Metadata JSON Schema". https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md

Parameters​

NameTypeDescription
_tokenIduint256The tokenID we're inquiring about

Returns​

NameTypeDescription
_0stringundefined

totalSupply​

function totalSupply() external view returns (uint256)

Returns​

NameTypeDescription
_0uint256undefined

transferFeeBasisPoints​

function transferFeeBasisPoints() external view returns (uint256)

Returns​

NameTypeDescription
_0uint256undefined

transferFrom​

function transferFrom(address from, address to, uint256 tokenId) external nonpayable

Transfers a specific NFT (tokenId) from one account (from) to another (to). Requirements: - If the caller is not from, it must be approved to move this NFT by either {approve} or {setApprovalForAll}.*

Parameters​

NameTypeDescription
fromaddressundefined
toaddressundefined
tokenIduint256undefined

transferOwnership​

function transferOwnership(address newOwner) external nonpayable

Parameters​

NameTypeDescription
newOwneraddressundefined

unlockProtocol​

function unlockProtocol() external view returns (address)

Returns​

NameTypeDescription
_0addressundefined

updateBeneficiary​

function updateBeneficiary(address _beneficiary) external nonpayable

A function which lets the owner of the lock update the beneficiary account, which receives funds on withdrawal.

Throws if called by other than owner of beneficiaryThrows if _beneficiary is address(0)

Parameters​

NameTypeDescription
_beneficiaryaddressThe new address to set as the beneficiary

updateKeyPrice​

function updateKeyPrice(uint256 _keyPrice) external nonpayable

A function which lets the owner of the lock to change the price for future purchases.

Throws if called by other than ownerThrows if lock has been disabled

Parameters​

NameTypeDescription
_keyPriceuint256The new price to set for keys

updateLockName​

function updateLockName(string _lockName) external nonpayable

Allows the Lock owner to assign a descriptive name for this Lock.

Throws if called by other than the lock owner

Parameters​

NameTypeDescription
_lockNamestringThe new name for the lock

updateLockSymbol​

function updateLockSymbol(string _lockSymbol) external nonpayable

Allows the Lock owner to assign a Symbol for this Lock.

Throws if called by other than the lock owner

Parameters​

NameTypeDescription
_lockSymbolstringThe new Symbol for the lock

updateRefundPenalty​

function updateRefundPenalty(uint256 _freeTrialLength, uint256 _refundPenaltyBasisPoints) external nonpayable

Allow the owner to change the refund penalty.

Throws if called by other than owner

Parameters​

NameTypeDescription
_freeTrialLengthuint256The new duration of free trials for this lock
_refundPenaltyBasisPointsuint256The new refund penaly in basis-points(bps)

updateTransferFee​

function updateTransferFee(uint256 _transferFeeBasisPoints) external nonpayable

Allow the Lock owner to change the transfer fee.

Throws if called by other than lock-owner

Parameters​

NameTypeDescription
_transferFeeBasisPointsuint256The new transfer fee in basis-points(bps). Ex: 200 bps = 2%

withdraw​

function withdraw(address _tokenAddress, uint256 _amount) external nonpayable

Called by owner to withdraw all funds from the lock and send them to the beneficiary.Throws if called by other than the owner or beneficiary

Parameters​

NameTypeDescription
_tokenAddressaddressspecifies the token address to withdraw or 0 for ETH. This is usually the same as tokenAddress in MixinFunds.
_amountuint256specifies the max amount to withdraw, which may be reduced when considering the available balance. Set to 0 or MAX_UINT to withdraw everything. -- however be wary of draining funds as it breaks the cancelAndRefund and fullRefund use cases.

Events​

Approval​

event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)

Parameters​

NameTypeDescription
owner indexedaddressundefined
approved indexedaddressundefined
tokenId indexeduint256undefined

ApprovalForAll​

event ApprovalForAll(address indexed owner, address indexed operator, bool approved)

Parameters​

NameTypeDescription
owner indexedaddressundefined
operator indexedaddressundefined
approvedboolundefined

CancelKey​

event CancelKey(uint256 indexed tokenId, address indexed owner, address indexed sendTo, uint256 refund)

Parameters​

NameTypeDescription
tokenId indexeduint256undefined
owner indexedaddressundefined
sendTo indexedaddressundefined
refunduint256undefined

Destroy​

event Destroy(uint256 balance, address indexed owner)

Parameters​

NameTypeDescription
balanceuint256undefined
owner indexedaddressundefined

Disable​

event Disable()

ExpireKey​

event ExpireKey(uint256 indexed tokenId)

Parameters​

NameTypeDescription
tokenId indexeduint256undefined

NewLockSymbol​

event NewLockSymbol(string symbol)

Parameters​

NameTypeDescription
symbolstringundefined

NonceChanged​

event NonceChanged(address indexed keyOwner, uint256 nextAvailableNonce)

Parameters​

NameTypeDescription
keyOwner indexedaddressundefined
nextAvailableNonceuint256undefined

PriceChanged​

event PriceChanged(uint256 oldKeyPrice, uint256 keyPrice)

Parameters​

NameTypeDescription
oldKeyPriceuint256undefined
keyPriceuint256undefined

RefundPenaltyChanged​

event RefundPenaltyChanged(uint256 freeTrialLength, uint256 refundPenaltyBasisPoints)

Parameters​

NameTypeDescription
freeTrialLengthuint256undefined
refundPenaltyBasisPointsuint256undefined

Transfer​

event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)

Parameters​

NameTypeDescription
from indexedaddressundefined
to indexedaddressundefined
tokenId indexeduint256undefined

TransferFeeChanged​

event TransferFeeChanged(uint256 transferFeeBasisPoints)

Parameters​

NameTypeDescription
transferFeeBasisPointsuint256undefined

Withdrawal​

event Withdrawal(address indexed sender, address indexed tokenAddress, address indexed beneficiary, uint256 amount)

Parameters​

NameTypeDescription
sender indexedaddressundefined
tokenAddress indexedaddressundefined
beneficiary indexedaddressundefined
amountuint256undefined