In fact, when an user wants to begin a swap, he has to click on the ”Approve” button of the web application. By confirming the transaction, the approve function of the BatchSwap contract is called, the BatchSwap calls the approve function on the smart contract of the digital assets (ERC-20 / ERC-721 / ERC-1155), specifying the parameters needed to get the delegations. At the end of this first step, the BatchSwap contract becomes the address delegated to manage the digital assets (ERC-20 / ERC-721 / ERC-1155). At this point, the initiator of the swap can proceed by calling the ”Pay now” button. By confirming this second transaction, it is called the createSwapIntent function on the BatchSwap contract. This function receives as parameters the addresses of the smart contracts and the digital assets infos (tokenId for ERC-721 or balances for ERC-20 / ERC-1155) that are to be traded, then transfers the NFT of the trade initiator to the BatchSwap smart contract and returns the SwapID, i.e. an identifier of the swap. It is important to notice that the NFT has not been transferred yet to the new owner but to the BatchSwap contract, making possible for the user to reclaim the NFT at any time. When the transaction is confirmed, the initiator of the swap receives a notification with a URL containing its address and the SwapID, the pair of information that are necessaries for the counterpart to conclude the swap. This URL must be shared with the swap counterpart in order to give him all the information that is necessary to conclude the swap. When the counterpart receives the URL containing a swap request, he must in turn click the ”Approve” button to make the BatchSwap address the approved address for the second NFT of the swap. Finally, to conclude the swap, the second user clicks ”Pay now” and confirms the blockchain transaction. At this point the BatchSwap closeSwapIntent function is called by specifying as parameters the address of the creator of the swap and the SwapID. The SwapID permits to the smart contract function to retrieve all the information of the swap and to call all the asset transfer functions (transfer for native tokens like ETH and ERC-20 assets, safeTransferFrom for the ERC-721 assets and safeBatchTransferFrom for ERC-1155 assets), the first time to transfer the NFT of the initiator of the swap to the recipients and the second to transfer the NFT of the swap counterpart to the swap initiator.