The zAuction contract environment can be found at https://github.com/zer0-os/zAuction/tree/master/contracts The zAuction contracts are an NFT auction system that reduces the on-chain interaction to a single acceptance transaction. Users make bids by signing messages rather than interacting with the contract, and the signed message is verified on-contract at the time of acceptance. On acceptance, zAuction transacts the bid amount of an ERC-20 token with the ERC-721 NFT. So, zAuction requires approval beforehand by both the token spender and NFT owner. It is most likely best to use setApprovalForAll on the NFT contract, as this will save gas when auctioning subsequent NFT's at the same contract address.