The PublicLock Interface
Methods​ address2Str​ function address2Str(address _addr) external pure returns (string)
Copy A utility function for erc721 metadata
Parameters​ Name Type Description _addr address An address to convert
Returns​ Name Type Description _0 string undefined
approve​ function approve(address _approved, uint256 _tokenId) external payable
Copy Set or reaffirm the approved address for an NFT
The zero address indicates there is no approved address.Throws unless msg.sender
is the current NFT owner, or an authorized operator of the current owner.
Parameters​ Name Type Description _approved address The new approved NFT controller _tokenId uint256 The NFT to approve
balanceOf​ function balanceOf(address _owner) external view returns (uint256)
Copy In the specific case of a Lock, each owner can own only at most 1 key.
Throws if _owner = address(0)
Parameters​ Name Type Description _owner address The address of the key owner
Returns​ Name Type Description _0 uint256 undefined
beneficiary​ function beneficiary() external view returns (address)
Copy =================================================================== Auto-generated getter functions from public state variables
Returns​ Name Type Description _0 address undefined
cancelAndRefund​ function cancelAndRefund() external nonpayable
Copy 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
Copy Cancels a key owned by a different user and sends the funds to the msg.sender.
Parameters​ Name Type Description _keyOwner address this user's key will be canceled _signature bytes getCancelAndRefundApprovalHash signed by the _keyOwner
destroyLock​ function destroyLock() external nonpayable
Copy 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
Copy 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.
expirationDuration​ function expirationDuration() external view returns (uint256)
Copy Returns​ Name Type Description _0 uint256 undefined
expireKeyFor​ function expireKeyFor(address _owner) external nonpayable
Copy 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​ Name Type Description _owner address The address of the key owner
getApproved​ function getApproved(uint256 _tokenId) external view returns (address)
Copy Will return the approved recipient for a key, if any.
Parameters​ Name Type Description _tokenId uint256 The ID of the token we're inquiring about.
Returns​ Name Type Description _0 address undefined
getCancelAndRefundApprovalHash​ function getCancelAndRefundApprovalHash(address _keyOwner, address _txSender) external view returns (bytes32 approvalHash)
Copy returns the hash to sign in order to allow another user to cancel on your behalf.
Parameters​ Name Type Description _keyOwner address The key owner's address _txSender address The address cancelling the key on behalf of the key-owner
Returns​ Name Type Description approvalHash bytes32 undefined
getCancelAndRefundValueFor​ function getCancelAndRefundValueFor(address _owner) external view returns (uint256 refund)
Copy Determines how much of a refund a key owner would receive if they issued
Parameters​ Name Type Description _owner address The 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​ Name Type Description refund uint256 undefined
getHasValidKey​ function getHasValidKey(address _owner) external view returns (bool)
Copy Checks if the user has a non-expired key.
Parameters​ Name Type Description _owner address The address of the key owner
Returns​ Name Type Description _0 bool undefined
getOwnersByPage​ function getOwnersByPage(uint256 _page, uint256 _pageSize) external view returns (address[])
Copy A function which returns a subset of the keys for this Lock as an array
Throws if there are no key owners yet
Parameters​ Name Type Description _page uint256 the page of key owners requested when faceted by page size _pageSize uint256 the number of Key Owners requested per page
Returns​ Name Type Description _0 address[] undefined
getTokenIdFor​ function getTokenIdFor(address _account) external view returns (uint256)
Copy Find the tokenId for a given user
Throws if key owner does not have a valid key
Parameters​ Name Type Description _account address The address of the key owner
Returns​ Name Type Description _0 uint256 undefined
getTransferFee​ function getTransferFee(address _owner) external view returns (uint256)
Copy 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​ Name Type Description _owner address The owner of the key check the transfer fee for.
Returns​ Name Type Description _0 uint256 undefined
grantKeys​ function grantKeys(address[] _recipients, uint256[] _expirationTimestamps) external nonpayable
Copy 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​ Name Type Description _recipients address[] An array of receiving addresses _expirationTimestamps uint256[] An array of expiration Timestamps for the keys being granted
isAlive​ function isAlive() external view returns (bool)
Copy Returns​ Name Type Description _0 bool undefined
isApprovedForAll​ function isApprovedForAll(address _owner, address _operator) external view returns (bool)
Copy Tells whether an operator is approved by a given owner
Parameters​ Name Type Description _owner address owner address which you want to query the approval of _operator address operator address which you want to query the approval of
Returns​ Name Type Description _0 bool undefined
isKeyOwner​ function isKeyOwner(uint256 _tokenId, address _owner) external view returns (bool)
Copy Checks if the given address owns the given tokenId.
Parameters​ Name Type Description _tokenId uint256 The tokenId of the key to check _owner address The potential key owners address
Returns​ Name Type Description _0 bool undefined
isOwner​ function isOwner() external view returns (bool)
Copy Returns​ Name Type Description _0 bool undefined
keyExpirationTimestampFor​ function keyExpirationTimestampFor(address _owner) external view returns (uint256 timestamp)
Copy Returns the key's ExpirationTimestamp field for a given owner.Throws if owner has never owned a key for this lock
Parameters​ Name Type Description _owner address address of the user for whom we search the key
Returns​ Name Type Description timestamp uint256 undefined
keyOwnerToNonce​ function keyOwnerToNonce(address) external view returns (uint256)
Copy Parameters​ Name Type Description _0 address undefined
Returns​ Name Type Description _0 uint256 undefined
keyPrice​ function keyPrice() external view returns (uint256)
Copy Returns​ Name Type Description _0 uint256 undefined
maxNumberOfKeys​ function maxNumberOfKeys() external view returns (uint256)
Copy Returns​ Name Type Description _0 uint256 undefined
function name() external view returns (string _name)
Copy A descriptive name for a collection of NFTs in this contract
Returns​ Name Type Description _name string undefined
numberOfOwners​ function numberOfOwners() external view returns (uint256)
Copy Public function which returns the total number of unique owners (both expired and valid). This may be larger than totalSupply.
Returns​ Name Type Description _0 uint256 undefined
function owner() external view returns (address)
Copy =================================================================== From Openzeppelin's Ownable.sol
Returns​ Name Type Description _0 address undefined
ownerOf​ function ownerOf(uint256 _tokenId) external view returns (address)
Copy Find the owner of an NFT
NFTs assigned to zero address are considered invalid, and queries about them do throw.
Parameters​ Name Type Description _tokenId uint256 The identifier for an NFT
Returns​ Name Type Description _0 address undefined
function owners(uint256) external view returns (address)
Copy Parameters​ Name Type Description _0 uint256 undefined
Returns​ Name Type Description _0 address undefined
publicLockVersion​ function publicLockVersion() external pure returns (uint16)
Copy The version number of the current implementation on this network.
Returns​ Name Type Description _0 uint16 undefined
purchaseFor​ function purchaseFor(address _recipient) external payable
Copy Key Purchase functionThrows if lock is disabled.
Parameters​ Name Type Description _recipient address address of the recipient of the purchased key
purchaseForFrom​ function purchaseForFrom(address _recipient, address _referrer) external payable
Copy Purchase function, public version, with referrer.Throws if lock is disabled, or if referrer doesn't have a valid key.
Parameters​ Name Type Description _recipient address address of the recipient of the purchased key _referrer address address of the user making the referral
renounceOwnership​ function renounceOwnership() external nonpayable
Copy safeTransferFrom​ function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable
Copy Transfers the ownership of an NFT from one address to another address
This works identically to the other function with an extra data parameter, except this function just sets data to ''
Parameters​ Name Type Description _from address The current owner of the NFT _to address The new owner _tokenId uint256 The NFT to transfer
safeTransferFrom​ function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable
Copy Transfers the ownership of an NFT from one address to another address
Throws unless msg.sender
is the current owner, an authorized operator, or the approved address for this NFT. Throws if _from
is not the current owner. Throws if _to
is the zero address. Throws if _tokenId
is not a valid NFT. When transfer is complete, this function 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)'))
.
Parameters​ Name Type Description _from address The current owner of the NFT _to address The new owner _tokenId uint256 The NFT to transfer data bytes Additional data with no specified format, sent in call to _to
setApprovalForAll​ function setApprovalForAll(address _to, bool _approved) external nonpayable
Copy Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalfThrows if lock is disabled, or if _to == msg.sender.
Parameters​ Name Type Description _to address operator address to set the approval _approved bool representing the status of the approval to be set
setBaseTokenURI​ function setBaseTokenURI(string _baseTokenURI) external nonpayable
Copy Allows the Lock owner to update the baseTokenURI for this Lock.
Throws if called by other than the lock owner
Parameters​ Name Type Description _baseTokenURI string String representing the base of the URI for this lock.
strConcat​ function strConcat(string _a, string _b, string _c, string _d) external pure returns (string _concatenatedString)
Copy notice A utility function for erc721 metadata
Parameters​ Name Type Description _a string String 1 _b string String 2 _c string String 3 _d string String 4
Returns​ Name Type Description _concatenatedString string undefined
supportsInterface​ function supportsInterface(bytes4 interfaceId) external view returns (bool)
Copy =================================================================== From ERC165.sol
Parameters​ Name Type Description interfaceId bytes4 undefined
Returns​ Name Type Description _0 bool undefined
function symbol() external view returns (string)
Copy Gets the token symbol
Returns​ Name Type Description _0 string undefined
tokenURI​ function tokenURI(uint256 _tokenId) external view returns (string)
Copy 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​ Name Type Description _tokenId uint256 The tokenID we're inquiring about
Returns​ Name Type Description _0 string undefined
totalSupply​ function totalSupply() external view returns (uint256)
Copy =================================================================== From IERC721Enumerable
Returns​ Name Type Description _0 uint256 undefined
transferFrom​ function transferFrom(address _from, address _to, uint256 _tokenId) external payable
Copy =================================================================== From Openzeppelin's IERC721.solTransfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT _to
IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST
Throws unless msg.sender
is the current owner, an authorized operator, or the approved address for this NFT. Throws if _from
is not the current owner. Throws if _to
is the zero address. Throws if _tokenId
is not a valid NFT.
Parameters​ Name Type Description _from address The current owner of the NFT _to address The new owner _tokenId uint256 The NFT to transfer
transferOwnership​ function transferOwnership(address newOwner) external nonpayable
Copy Parameters​ Name Type Description newOwner address undefined
uint2Str​ function uint2Str(uint256 _i) external pure returns (string _uintAsString)
Copy A utility function for erc721 metadata
Parameters​ Name Type Description _i uint256 A uint to convert
Returns​ Name Type Description _uintAsString string undefined
unlockProtocol​ function unlockProtocol() external view returns (address)
Copy Returns​ Name Type Description _0 address undefined
updateBeneficiary​ function updateBeneficiary(address _beneficiary) external nonpayable
Copy 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​ Name Type Description _beneficiary address The new address to set as the beneficiary
updateKeyPrice​ function updateKeyPrice(uint256 _keyPrice) external nonpayable
Copy 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​ Name Type Description _keyPrice uint256 The new price to set for keys
updateLockName​ function updateLockName(string _lockName) external nonpayable
Copy Allows the Lock owner to assign a descriptive name for this Lock.
Throws if called by other than the lock owner
Parameters​ Name Type Description _lockName string The new name for the lock
updateLockSymbol​ function updateLockSymbol(string _lockSymbol) external nonpayable
Copy Allows the Lock owner to assign a Symbol for this Lock.
Throws if called by other than the lock owner
Parameters​ Name Type Description _lockSymbol string The new Symbol for the lock
updateRefundPenalty​ function updateRefundPenalty(uint256 _refundPenaltyNumerator, uint256 _refundPenaltyDenominator) external nonpayable
Copy Allow the owner to change the refund penalty.
Throws if called by other than owner
Parameters​ Name Type Description _refundPenaltyNumerator uint256 undefined _refundPenaltyDenominator uint256 undefined
updateTransferFee​ function updateTransferFee(uint256 _transferFeeNumerator, uint256 _transferFeeDenominator) external nonpayable
Copy Allow the Lock owner to change the transfer fee.
Throws if called by other than lock-owner Ex: 200 bps = 2%
Parameters​ Name Type Description _transferFeeNumerator uint256 undefined _transferFeeDenominator uint256 undefined
withdraw​ function withdraw(uint256 _amount) external nonpayable
Copy 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​ Name Type Description _amount uint256 specifies 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
use case.
Approval​ event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)
Copy Parameters​ Name Type Description _owner indexed
address undefined _approved indexed
address undefined _tokenId indexed
uint256 undefined
ApprovalForAll​ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)
Copy Parameters​ Name Type Description _owner indexed
address undefined _operator indexed
address undefined _approved bool undefined
CancelKey​ event CancelKey(uint256 indexed tokenId, address indexed owner, address indexed sendTo, uint256 refund)
Copy Parameters​ Name Type Description tokenId indexed
uint256 undefined owner indexed
address undefined sendTo indexed
address undefined refund uint256 undefined
Destroy​ event Destroy(uint256 balance, address indexed owner)
Copy Parameters​ Name Type Description balance uint256 undefined owner indexed
address undefined
Disable​ ExpireKey​ event ExpireKey(uint256 indexed tokenId)
Copy Parameters​ Name Type Description tokenId indexed
uint256 undefined
NewLockSymbol​ event NewLockSymbol(string symbol)
Copy Parameters​ Name Type Description symbol string undefined
PriceChanged​ event PriceChanged(uint256 oldKeyPrice, uint256 keyPrice)
Copy Parameters​ Name Type Description oldKeyPrice uint256 undefined keyPrice uint256 undefined
RefundPenaltyChanged​ event RefundPenaltyChanged(uint256 _refundPenaltyNumerator, uint256 _refundPenaltyDenominator)
Copy Parameters​ Name Type Description _refundPenaltyNumerator uint256 undefined _refundPenaltyDenominator uint256 undefined
Transfer​ event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)
Copy Parameters​ Name Type Description _from indexed
address undefined _to indexed
address undefined _tokenId indexed
uint256 undefined
TransferFeeChanged​ event TransferFeeChanged(uint256 _transferFeeNumerator, uint256 _transferFeeDenominator)
Copy Parameters​ Name Type Description _transferFeeNumerator uint256 undefined _transferFeeDenominator uint256 undefined
Withdrawal​ event Withdrawal(address indexed sender, address indexed beneficiary, uint256 amount)
Copy Parameters​ Name Type Description sender indexed
address undefined beneficiary indexed
address undefined amount uint256 undefined