def test_wrapper_transfer_1(accounts, erc721mock, wrapper, niftsy20, dai, weth, trmodel): #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) wrapper.setFee(protokolFee, chargeFeeAfter, niftsy20, {"from": accounts[0]}) #wrap difficult nft niftsy20.transfer(accounts[1], protokolFee, {"from": accounts[0]}) unwrapAfter = chain.time() + 10 erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from':accounts[1]}) niftsy20.approve(wrapper, TRANSFER_FEE, {'from':accounts[1]}) makeWrapNFT(wrapper, erc721mock, ['originalTokenId', 'transferFee', 'royaltyBeneficiary', 'royaltyPercent', 'unwraptFeeThreshold'], [ORIGINAL_NFT_IDs[0], 0, zero_address, 0, 0], accounts[1], niftsy20) tokenId = wrapper.lastWrappedNFTId() assert niftsy20.balanceOf(accounts[1]) == 0 assert niftsy20.balanceOf(wrapper.address) == protokolFee assert wrapper.lastWrappedNFTId() == 1 checkWrappedNFT(wrapper, tokenId, erc721mock.address, ORIGINAL_NFT_IDs[0], START_NATIVE_COLLATERAL, 0, unwrapAfter, 0, zero_address, 0, 0) #non exists token with reverts("ERC721: operator query for nonexistent token"): wrapper.transferFrom(accounts[1].address, accounts[2].address, 100, {"from": accounts[3]}) #not owner tries to transfer token with reverts("ERC721: transfer caller is not owner nor approved"): wrapper.transferFrom(accounts[1].address, accounts[2].address, tokenId, {"from": accounts[3]}) wrapper.approve(accounts[3].address, tokenId, {"from": accounts[1]}) niftsy20.approve(wrapper, TRANSFER_FEE, {'from':accounts[1]}) wrapper.transferFrom(accounts[1].address, accounts[2].address, tokenId, {"from": accounts[3]}) assert wrapper.ownerOf(tokenId) == accounts[2].address #return tokenId - owner transfer wrapper.transferFrom(accounts[2].address, accounts[1].address, tokenId, {"from": accounts[2]}) assert wrapper.ownerOf(tokenId) == accounts[1].address nft = wrapper.getWrappedToken(tokenId) assert nft[3] == 0 #check backedTokens
def test_wrapper_addNativeCollateral(accounts, erc721mock, wrapper, niftsy20, trmodel): #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) wrapper.setFee(protokolFee, chargeFeeAfter, niftsy20, {"from": accounts[0]}) #wrap difficult nft niftsy20.transfer(accounts[1], protokolFee, {"from": accounts[0]}) unwrapAfter = chain.time() + 10 niftsy20.approve(wrapper, TRANSFER_FEE, {'from': accounts[1]}) erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from': accounts[1]}) makeWrapNFT(wrapper, erc721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[0]], accounts[1], niftsy20) assert niftsy20.balanceOf(accounts[1]) == 0 assert niftsy20.balanceOf(wrapper.address) == protokolFee assert wrapper.lastWrappedNFTId() == 1 checkWrappedNFT(wrapper, wrapper.lastWrappedNFTId(), erc721mock.address, ORIGINAL_NFT_IDs[0], START_NATIVE_COLLATERAL, 0, unwrapAfter, TRANSFER_FEE, royaltyBeneficiary, ROAYLTY_PERCENT, UNWRAP_FEE_THRESHOLD) nft = wrapper.getWrappedToken(wrapper.lastWrappedNFTId()) #owner calls addNativeCollateral wrapper.addNativeCollateral(wrapper.lastWrappedNFTId(), { "from": accounts[1], "value": ADD_NATIVE_COLLATERAL }) wrapper.addNativeCollateral(wrapper.lastWrappedNFTId(), { "from": accounts[1], "value": 0 }) assert wrapper.getWrappedToken( wrapper.lastWrappedNFTId())[2] == nft[2] + ADD_NATIVE_COLLATERAL #nonexist tokenId with reverts("ERC721: owner query for nonexistent token"): wrapper.addNativeCollateral(100, { "from": accounts[2], "value": ADD_NATIVE_COLLATERAL }) #not owner calls addNativeCollateral wrapper.addNativeCollateral(wrapper.lastWrappedNFTId(), { "from": accounts[2], "value": ADD_NATIVE_COLLATERAL })
def test_wrapper_transfer_1(accounts, erc721mock, wrapper, niftsy20, dai, weth, trmodel): #make test data for case wrapper.editPartnersItem(niftsy20.address, True, zero_address, False, {'from': accounts[0]}) #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) wrapper.setFee(protokolFee, chargeFeeAfter, niftsy20, {"from": accounts[0]}) #wrap difficult nft niftsy20.transfer(accounts[1], protokolFee, {"from": accounts[0]}) unwrapAfter = chain.time() + 10 erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from': accounts[1]}) niftsy20.approve(wrapper, TRANSFER_FEE, {'from': accounts[1]}) makeWrapNFT(wrapper, erc721mock, [ 'originalTokenId', 'royaltyBeneficiary', 'royaltyPercent', 'unwraptFeeThreshold' ], [ORIGINAL_NFT_IDs[0], zero_address, 0, 0], accounts[1], niftsy20) tokenId = wrapper.lastWrappedNFTId() assert niftsy20.balanceOf(accounts[1]) == 0 assert niftsy20.balanceOf(wrapper.address) == protokolFee assert wrapper.lastWrappedNFTId() == 1 checkWrappedNFT(wrapper, tokenId, erc721mock.address, ORIGINAL_NFT_IDs[0], START_NATIVE_COLLATERAL, 0, unwrapAfter, TRANSFER_FEE, zero_address, 0, 0) wrapper.approve(accounts[3].address, tokenId, {"from": accounts[1]}) niftsy20.approve(wrapper, TRANSFER_FEE, {'from': accounts[1]}) niftsy20.transfer(accounts[1], TRANSFER_FEE, {'from': accounts[0]}) wrapper.transferFrom(accounts[1].address, accounts[2].address, tokenId, {"from": accounts[3]}) assert wrapper.ownerOf(tokenId) == accounts[2].address nft = wrapper.getWrappedToken(tokenId) assert nft[3] == TRANSFER_FEE #check backedTokens
def test_wrap_for_blocked_original_nft_contract(accounts, erc721mock, wrapper, niftsy20, trmodel, pft, fakeERC721mock): #add contract in blackList with reverts("Ownable: caller is not the owner"): wrapper.editPartnersItem(fakeERC721mock.address, False, zero_address, False, {"from": accounts[1]}) wrapper.editPartnersItem(fakeERC721mock.address, False, zero_address, True, {"from": accounts[0]}) #protocol fee is being taken wrapper.setFee(protokolFee, chargeFeeAfter, pft.address, {"from": accounts[0]}) #make test data makeNFTForTest(accounts, fakeERC721mock, ORIGINAL_NFT_IDs) #wrap nft pft.transfer(accounts[1], protokolFee, {"from": accounts[0]}) fakeERC721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from': accounts[1]}) pft.approve(wrapper, protokolFee, {'from': accounts[1]}) with reverts("This NFT is blacklisted for wrap"): makeWrapNFT(wrapper, fakeERC721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[0]], accounts[1], niftsy20) assert pft.balanceOf(wrapper.address) == 0 #move original nft contract from blackList wrapper.editPartnersItem(fakeERC721mock.address, False, zero_address, False, {"from": accounts[0]}) makeWrapNFT(wrapper, fakeERC721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[0]], accounts[1], niftsy20) assert pft.balanceOf(wrapper.address) == protokolFee assert wrapper.lastWrappedNFTId() == 1
def test_wrapper_unWrap721(accounts, erc721mock, wrapper, niftsy20, dai, weth, trmodel): #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) wrapper.setFee(protokolFee, chargeFeeAfter, niftsy20, {"from": accounts[0]}) #wrap difficult nft niftsy20.transfer(accounts[1], protokolFee, {"from": accounts[0]}) unwrapAfter = chain.time() + 10 erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from':accounts[1]}) niftsy20.approve(wrapper, TRANSFER_FEE, {'from':accounts[1]}) makeWrapNFT(wrapper, erc721mock, ['originalTokenId', 'transferFee', 'royaltyBeneficiary', 'royaltyPercent', 'unwraptFeeThreshold'], [ORIGINAL_NFT_IDs[0], 0, zero_address, 0, 0], accounts[1], niftsy20) tokenId = wrapper.lastWrappedNFTId() assert niftsy20.balanceOf(accounts[1]) == 0 assert niftsy20.balanceOf(wrapper.address) == protokolFee #unwrap #move date chain.sleep(100) chain.mine() logging.info('wrapper.totalSupply() = {}'.format(wrapper.totalSupply())) logging.info('balance acc1 = {}'.format(wrapper.balanceOf(accounts[1]))) logging.info('accounts[1].balance() = {}'.format(accounts[1].balance())) balance_eth = accounts[1].balance() nft = wrapper.getWrappedToken(tokenId) wrapper.unWrap721(tokenId, {"from": accounts[1]}) logging.info('********************AFTER UNWRAP*************') assert wrapper.totalSupply() == 0 assert wrapper.balanceOf(accounts[1].address) == 0 assert niftsy20.balanceOf(accounts[1].address) == 0 assert niftsy20.balanceOf(wrapper.address) == protokolFee assert erc721mock.ownerOf(ORIGINAL_NFT_IDs[0]) == accounts[1].address assert accounts[1].balance() == balance_eth + nft[2] logging.info('accounts[1].balance() = {}'.format(accounts[1].balance())) with reverts("ERC721: owner query for nonexistent token"): wrapper.ownerOf(tokenId)
def test_wrap_with_protokolFee(accounts, erc721mock, wrapper, niftsy20, trmodel, pft): #protocol fee is being taken wrapper.setFee(protokolFee, chargeFeeAfter, pft.address, {"from": accounts[0]}) #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) #wrap nft pft.transfer(accounts[1], protokolFee, {"from": accounts[0]}) erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from': accounts[1]}) pft.approve(wrapper, protokolFee, {'from': accounts[1]}) makeWrapNFT(wrapper, erc721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[0]], accounts[1], niftsy20) assert pft.balanceOf(wrapper.address) == protokolFee #protocol fee is not being taken wrapper.setFee(protokolFee, 1e10, pft.address, {"from": accounts[0]}) #wrap nft pft.transfer(accounts[1], protokolFee, {"from": accounts[0]}) erc721mock.transferFrom(accounts[0], accounts[1], ORIGINAL_NFT_IDs[1], {'from': accounts[0]}) erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[1], {'from': accounts[1]}) pft.approve(wrapper, protokolFee, {'from': accounts[1]}) makeWrapNFT(wrapper, erc721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[1]], accounts[1], niftsy20) assert pft.balanceOf(wrapper.address) == protokolFee
def test_wrap_with_techERC20(accounts, erc721mock, wrapper, techERC20, trmodel, pft): #protocol fee is being taken wrapper.setFee(protokolFee, chargeFeeAfter, pft.address, {"from": accounts[0]}) #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) #wrap nft pft.transfer(accounts[1], protokolFee, {"from": accounts[0]}) erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from': accounts[1]}) pft.approve(wrapper, protokolFee, {'from': accounts[1]}) #add techERC20 contract in blackList - nothing happens wrapper.editPartnersItem(techERC20.address, False, trmodel, False, {"from": accounts[0]}) erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from': accounts[1]}) wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], chain.time() + 100, #unwrapAfter TRANSFER_FEE, royaltyBeneficiary, #_royaltyBeneficiary ROAYLTY_PERCENT, #_royaltyPercent 0, zero_address, #DEFAULT FEE TOKEN !!!!!!!!!!!!!!!!!!!!!!!1 {'from': accounts[1]}) #move techERC20 contract from blackList wrapper.editPartnersItem(techERC20.address, True, trmodel, False, {"from": accounts[0]}) assert pft.balanceOf(wrapper.address) == protokolFee tokenId = wrapper.lastWrappedNFTId() before_balance = techERC20.balanceOf(wrapper.address) wrapper.approve(accounts[3].address, tokenId, {"from": accounts[1]}) nft = wrapper.getWrappedToken(tokenId) wrapper.transferFrom(accounts[1].address, accounts[2].address, tokenId, {"from": accounts[3]}) assert techERC20.balanceOf(accounts[1]) == 0 assert techERC20.balanceOf( wrapper.address ) == before_balance + TRANSFER_FEE - nft[5] * nft[7] / 100 assert techERC20.balanceOf(royaltyBeneficiary) == nft[5] * nft[7] / 100 #add transferFeeContract contract in blackList again wrapper.editPartnersItem(techERC20.address, False, trmodel, False, {"from": accounts[0]}) before_balance = techERC20.balanceOf(wrapper.address) before_balance_royaltyBeneficiary = techERC20.balanceOf(royaltyBeneficiary) wrapper.approve(accounts[3].address, tokenId, {"from": accounts[2]}) nft = wrapper.getWrappedToken(tokenId) wrapper.transferFrom(accounts[2].address, accounts[3].address, tokenId, {"from": accounts[3]}) assert techERC20.balanceOf(accounts[2]) == 0 assert techERC20.balanceOf( wrapper.address ) == before_balance + TRANSFER_FEE - nft[5] * nft[7] / 100 assert techERC20.balanceOf( royaltyBeneficiary ) == before_balance_royaltyBeneficiary + nft[5] * nft[7] / 100 #unwrap #move date chain.sleep(100) chain.mine() logging.info('wrapper.totalSupply() = {}'.format(wrapper.totalSupply())) logging.info('wrapper.balanceOf(accounts[3]) = {}'.format( wrapper.balanceOf(accounts[3]))) logging.info('techERC20.balanceOf(accounts[3]) = {}'.format( techERC20.balanceOf(accounts[3]))) logging.info('techERC20.balanceOf(wrapper.address) = {}'.format( techERC20.balanceOf(wrapper.address))) logging.info('********************AFTER UNWRAP*************') #unwrap nft = wrapper.getWrappedToken(tokenId) wrapper.unWrap721(tokenId, {"from": accounts[3]}) assert wrapper.totalSupply() == 0 assert wrapper.balanceOf(accounts[3].address) == 0 assert techERC20.balanceOf(accounts[3].address) == nft[3] assert erc721mock.ownerOf(ORIGINAL_NFT_IDs[0]) == accounts[3].address assert techERC20.balanceOf(wrapper.address) == 0 assert techERC20.balanceOf( royaltyBeneficiary ) == before_balance_royaltyBeneficiary + nft[5] * nft[7] / 100 logging.info('wrapper.balanceOf(accounts[3]) = {}'.format( wrapper.balanceOf(accounts[3]))) logging.info('techERC20.balanceOf(accounts[3]) = {}'.format( techERC20.balanceOf(accounts[3]))) logging.info('techERC20.balanceOf(wrapper.address) = {}'.format( techERC20.balanceOf(wrapper.address))) logging.info('techERC20.balanceOf(royaltyBeneficiary) = {}'.format( techERC20.balanceOf(royaltyBeneficiary)))
def test_wrapper_unWrap721_batch(accounts, erc721mock, wrapper, niftsy20, dai, weth, TokenMock, trmodel): #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) wrapper.setFee(protokolFee, chargeFeeAfter, niftsy20,{"from": accounts[0]}) erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from':accounts[1]}) logging.info('balanceOf(wrapper.address) = {}'.format(niftsy20.balanceOf(wrapper.address))) logging.info('balanceOf(royaltyBeneficiary) = {}'.format(niftsy20.balanceOf(royaltyBeneficiary))) #wrap difficult nft niftsy20.transfer(accounts[1], protokolFee, {"from": accounts[0]}) niftsy20.approve(wrapper, protokolFee+TRANSFER_FEE, {'from':accounts[1]}) unwrapAfter = chain.time() + 10 before_balance = niftsy20.balanceOf(wrapper.address) makeWrapNFT(wrapper, erc721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[0]], accounts[1], niftsy20) assert niftsy20.balanceOf(accounts[1]) == 0 assert niftsy20.balanceOf(wrapper.address) == before_balance + protokolFee assert wrapper.lastWrappedNFTId() == 1 tokenId = wrapper.lastWrappedNFTId() nft = wrapper.getWrappedToken(tokenId) c = round(UNWRAP_FEE_THRESHOLD/(TRANSFER_FEE*(100-ROAYLTY_PERCENT)/100)) + 1 backedTokens = 0 royalty_tokens = 0 i = 0 for i in range(c): wrapper.approve(accounts[i+2].address, tokenId, {"from": accounts[i+1]}) niftsy20.approve(trmodel.address, TRANSFER_FEE, {'from': accounts[i+1]}) logging.info('niftsy20.allowance(accounts[i+1], trmodel.address) = {}'.format(niftsy20.allowance(accounts[i+1], trmodel.address))) niftsy20.transfer(accounts[i + 1].address, TRANSFER_FEE, {"from": accounts[0]}) #add niftsy tokens to pay transfer fee wrapper.transferFrom(accounts[i+1].address, accounts[i+2].address, tokenId, {"from": accounts[i+2]}) #make transfers royalty_tokens += TRANSFER_FEE*nft[7]/100 backedTokens += TRANSFER_FEE - TRANSFER_FEE*nft[7]/100 #check backedTokens after transfers nft = wrapper.getWrappedToken(tokenId) logging.info('nft2 = {}'.format(nft)) assert nft[3] == backedTokens wrapper.setMaxERC20CollateralCount(270, {"from": accounts[0]}) dai1= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai2= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai3= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai4= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai5= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai6= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai7= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai8= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai9= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai10= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai11= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai12= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai13= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai14= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai15= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai16= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai17= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai18= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai19= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai20= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai21= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai22= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai23= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai24= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai25= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai26= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai27= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai28= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai29= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai30= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai31= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai32= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai33= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai34= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai35= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai36= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai37= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai38= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai39= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai40= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai41= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai42= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai43= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai44= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai45= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai46= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai47= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai48= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai49= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai50= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai51= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai52= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai53= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai54= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai55= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai56= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai57= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai58= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai59= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai60= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai61= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai62= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai63= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai64= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai65= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai66= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai67= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai68= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai69= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai70= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai71= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai72= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai73= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai74= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai75= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai76= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai77= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai78= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai79= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai80= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai81= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai82= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai83= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai84= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai85= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai86= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai87= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai88= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai89= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai90= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai91= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai92= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai93= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai94= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai95= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai96= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai97= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai98= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai99= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai100= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai101= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai102= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai103= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai104= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai105= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai106= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai107= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai108= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai109= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai110= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai111= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai112= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai113= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai114= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai115= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai116= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai117= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai118= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai119= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai120= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai121= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai122= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai123= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai124= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai125= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai126= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai127= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai128= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai129= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai130= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai131= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai132= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai133= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai134= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai135= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai136= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai137= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai138= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai139= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai140= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai141= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai142= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai143= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai144= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai145= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai146= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai147= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai148= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai149= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai150= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai151= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai152= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai153= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai154= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai155= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai156= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai157= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai158= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai159= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai160= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai161= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai162= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai163= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai164= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai165= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai166= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai167= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai168= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai169= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai170= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai171= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai172= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai173= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai174= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai175= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai176= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai177= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai178= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai179= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai180= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai181= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai182= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai183= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai184= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai185= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai186= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai187= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai188= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai189= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai190= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai191= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai192= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai193= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai194= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai195= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai196= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai197= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai198= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai199= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai200= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai201= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai202= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai203= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai204= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai205= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai206= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai207= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai208= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai209= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai210= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai211= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai212= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai213= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai214= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai215= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai216= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai217= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai218= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai219= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai220= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai221= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai222= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai223= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai224= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai225= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai226= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai227= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai228= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai229= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai230= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai231= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai232= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai233= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai234= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai235= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai236= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai237= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai238= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai239= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai240= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai241= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai242= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai243= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai244= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai245= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai246= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai247= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai248= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai249= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai250= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai251= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai252= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai253= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai254= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai255= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai256= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai257= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai258= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai259= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai260= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai261= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai262= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai263= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai264= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai265= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai266= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai267= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai268= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai269= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) dai270= _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock) assert len(wrapper.getERC20Collateral(tokenId)) == 270 logging.info('wrapper.getERC20Collateral(tokenId) = {}'.format(wrapper.getERC20Collateral(tokenId))) logging.info('---------------------------***********CHECK BALANCE BEFORE') logging.info('dai241 wr = {}'.format(dai241.balanceOf(wrapper.address))) logging.info('dai242 wr = {}'.format(dai242.balanceOf(wrapper.address))) logging.info('dai243 wr = {}'.format(dai243.balanceOf(wrapper.address))) logging.info('dai244 wr = {}'.format(dai244.balanceOf(wrapper.address))) logging.info('dai245 wr = {}'.format(dai245.balanceOf(wrapper.address))) logging.info('dai246 wr = {}'.format(dai246.balanceOf(wrapper.address))) logging.info('dai247 wr = {}'.format(dai247.balanceOf(wrapper.address))) logging.info('dai248 wr = {}'.format(dai248.balanceOf(wrapper.address))) logging.info('dai249 wr = {}'.format(dai249.balanceOf(wrapper.address))) logging.info('dai250 wr = {}'.format(dai250.balanceOf(wrapper.address))) logging.info('dai251 wr = {}'.format(dai251.balanceOf(wrapper.address))) logging.info('dai252 wr = {}'.format(dai252.balanceOf(wrapper.address))) logging.info('dai253 wr = {}'.format(dai253.balanceOf(wrapper.address))) logging.info('dai254 wr = {}'.format(dai254.balanceOf(wrapper.address))) logging.info('dai255 wr = {}'.format(dai255.balanceOf(wrapper.address))) logging.info('dai256 wr = {}'.format(dai256.balanceOf(wrapper.address))) logging.info('dai257 wr = {}'.format(dai257.balanceOf(wrapper.address))) logging.info('dai258 wr = {}'.format(dai258.balanceOf(wrapper.address))) logging.info('dai259 wr = {}'.format(dai259.balanceOf(wrapper.address))) logging.info('dai260 wr = {}'.format(dai260.balanceOf(wrapper.address))) logging.info('dai261 wr = {}'.format(dai261.balanceOf(wrapper.address))) logging.info('dai262 wr = {}'.format(dai262.balanceOf(wrapper.address))) logging.info('dai263 wr = {}'.format(dai263.balanceOf(wrapper.address))) logging.info('dai264 wr = {}'.format(dai264.balanceOf(wrapper.address))) logging.info('dai265 wr = {}'.format(dai265.balanceOf(wrapper.address))) logging.info('dai266 wr = {}'.format(dai266.balanceOf(wrapper.address))) logging.info('dai267 wr = {}'.format(dai267.balanceOf(wrapper.address))) logging.info('dai268 wr = {}'.format(dai268.balanceOf(wrapper.address))) logging.info('dai269 wr = {}'.format(dai269.balanceOf(wrapper.address))) logging.info('dai270 wr = {}'.format(dai270.balanceOf(wrapper.address))) logging.info('---------------------------***********END CHECK BALANCE BEFORE') #move date chain.sleep(100) chain.mine() logging.info('wrapper.totalSupply() = {}'.format(wrapper.totalSupply())) logging.info('accounts[i+2].balance() = {}'.format(accounts[i+2].balance())) logging.info('wrapper.balanceOf(accounts[i+2]) = {}'.format(wrapper.balanceOf(accounts[i+2]))) logging.info('niftsy20.balanceOf(accounts[i+2]) = {}'.format(niftsy20.balanceOf(accounts[i+2]))) logging.info('wrapper.balance() = {}'.format(wrapper.balance())) logging.info('niftsy20.balanceOf(wrapper.address) = {}'.format(niftsy20.balanceOf(wrapper.address))) balance_eth = accounts[i+2].balance() balance_erc20 = niftsy20.balanceOf(wrapper.address) balance_erc20_owner = niftsy20.balanceOf(accounts[i+2].address) logging.info('********************AFTER UNWRAP*************') #unwrap tx = wrapper.unWrap721(tokenId, {"from": accounts[i+2]}) logging.info('len(wrapper.getERC20Collateral(tokenId)) = {}'.format(len(wrapper.getERC20Collateral(tokenId)))) logging.info('wrapper.getERC20Collateral(tokenId) = {}'.format(wrapper.getERC20Collateral(tokenId))) logging.info('event = {}'.format(tx.events['PartialUnWrapp'])) logging.info('dai239 = {}'.format(dai239.balanceOf(accounts[i+2]))) logging.info('dai240 = {}'.format(dai240.balanceOf(accounts[i+2]))) #unwrap again logging.info('accounts[i+2].balance() = {}'.format(accounts[i+2].balance())) tx = wrapper.unWrap721(tokenId, {"from": accounts[i+2]}) logging.info('********************owner balance*************') logging.info('dai241 = {}'.format(dai241.balanceOf(accounts[i+2]))) logging.info('dai242 = {}'.format(dai242.balanceOf(accounts[i+2]))) logging.info('dai243 = {}'.format(dai243.balanceOf(accounts[i+2]))) logging.info('dai244 = {}'.format(dai244.balanceOf(accounts[i+2]))) logging.info('dai245 = {}'.format(dai245.balanceOf(accounts[i+2]))) logging.info('dai246 = {}'.format(dai246.balanceOf(accounts[i+2]))) logging.info('dai247 = {}'.format(dai247.balanceOf(accounts[i+2]))) logging.info('dai248 = {}'.format(dai248.balanceOf(accounts[i+2]))) logging.info('dai249 = {}'.format(dai249.balanceOf(accounts[i+2]))) logging.info('dai250 = {}'.format(dai250.balanceOf(accounts[i+2]))) logging.info('dai251 = {}'.format(dai251.balanceOf(accounts[i+2]))) logging.info('dai252 = {}'.format(dai252.balanceOf(accounts[i+2]))) logging.info('dai253 = {}'.format(dai253.balanceOf(accounts[i+2]))) logging.info('dai254 = {}'.format(dai254.balanceOf(accounts[i+2]))) logging.info('dai255 = {}'.format(dai255.balanceOf(accounts[i+2]))) logging.info('dai256 = {}'.format(dai256.balanceOf(accounts[i+2]))) logging.info('dai257 = {}'.format(dai257.balanceOf(accounts[i+2]))) logging.info('dai258 = {}'.format(dai258.balanceOf(accounts[i+2]))) logging.info('dai259 = {}'.format(dai259.balanceOf(accounts[i+2]))) logging.info('dai260 = {}'.format(dai260.balanceOf(accounts[i+2]))) logging.info('dai261 = {}'.format(dai261.balanceOf(accounts[i+2]))) logging.info('dai262 = {}'.format(dai262.balanceOf(accounts[i+2]))) logging.info('dai263 = {}'.format(dai263.balanceOf(accounts[i+2]))) logging.info('dai264 = {}'.format(dai264.balanceOf(accounts[i+2]))) logging.info('dai265 = {}'.format(dai265.balanceOf(accounts[i+2]))) logging.info('dai266 = {}'.format(dai266.balanceOf(accounts[i+2]))) logging.info('dai267 = {}'.format(dai267.balanceOf(accounts[i+2]))) logging.info('dai268 = {}'.format(dai268.balanceOf(accounts[i+2]))) logging.info('dai269 = {}'.format(dai269.balanceOf(accounts[i+2]))) logging.info('dai270 = {}'.format(dai270.balanceOf(accounts[i+2]))) logging.info('********************wrapper.address erc20 token balance*************') logging.info('dai241 wr = {}'.format(dai241.balanceOf(wrapper.address))) logging.info('dai242 wr = {}'.format(dai242.balanceOf(wrapper.address))) logging.info('dai243 wr = {}'.format(dai243.balanceOf(wrapper.address))) logging.info('dai244 wr = {}'.format(dai244.balanceOf(wrapper.address))) logging.info('dai245 wr = {}'.format(dai245.balanceOf(wrapper.address))) logging.info('dai246 wr = {}'.format(dai246.balanceOf(wrapper.address))) logging.info('dai247 wr = {}'.format(dai247.balanceOf(wrapper.address))) logging.info('dai248 wr = {}'.format(dai248.balanceOf(wrapper.address))) logging.info('dai249 wr = {}'.format(dai249.balanceOf(wrapper.address))) logging.info('dai250 wr = {}'.format(dai250.balanceOf(wrapper.address))) logging.info('dai251 wr = {}'.format(dai251.balanceOf(wrapper.address))) logging.info('dai252 wr = {}'.format(dai252.balanceOf(wrapper.address))) logging.info('dai253 wr = {}'.format(dai253.balanceOf(wrapper.address))) logging.info('dai254 wr = {}'.format(dai254.balanceOf(wrapper.address))) logging.info('dai255 wr = {}'.format(dai255.balanceOf(wrapper.address))) logging.info('dai256 wr = {}'.format(dai256.balanceOf(wrapper.address))) logging.info('dai257 wr = {}'.format(dai257.balanceOf(wrapper.address))) logging.info('dai258 wr = {}'.format(dai258.balanceOf(wrapper.address))) logging.info('dai259 wr = {}'.format(dai259.balanceOf(wrapper.address))) logging.info('dai260 wr = {}'.format(dai260.balanceOf(wrapper.address))) logging.info('dai261 wr = {}'.format(dai261.balanceOf(wrapper.address))) logging.info('dai262 wr = {}'.format(dai262.balanceOf(wrapper.address))) logging.info('dai263 wr = {}'.format(dai263.balanceOf(wrapper.address))) logging.info('dai264 wr = {}'.format(dai264.balanceOf(wrapper.address))) logging.info('dai265 wr = {}'.format(dai265.balanceOf(wrapper.address))) logging.info('dai266 wr = {}'.format(dai266.balanceOf(wrapper.address))) logging.info('dai267 wr = {}'.format(dai267.balanceOf(wrapper.address))) logging.info('dai268 wr = {}'.format(dai268.balanceOf(wrapper.address))) logging.info('dai269 wr = {}'.format(dai269.balanceOf(wrapper.address))) logging.info('dai270 wr = {}'.format(dai270.balanceOf(wrapper.address))) #assert len(wrapper.getERC20Collateral(tokenId)) == 0 assert wrapper.totalSupply() == 0 assert wrapper.balanceOf(accounts[i+2].address) == 0 assert niftsy20.balanceOf(accounts[i+2].address) == balance_erc20_owner + backedTokens assert erc721mock.ownerOf(ORIGINAL_NFT_IDs[0]) == accounts[i+2].address assert accounts[i+2].balance() == balance_eth + nft[2] assert niftsy20.balanceOf(wrapper.address) == balance_erc20 - backedTokens assert niftsy20.balanceOf(royaltyBeneficiary) == royalty_tokens logging.info('wrapper.getERC20Collateral(tokenId) = {}'.format(wrapper.getERC20Collateral(tokenId))) assert dai1.balanceOf(accounts[i+2]) == ERC20_COLLATERAL_AMOUNT assert dai270.balanceOf(accounts[i+2]) == ERC20_COLLATERAL_AMOUNT assert dai1.balanceOf(wrapper.address) == 0 assert dai270.balanceOf(wrapper.address) == 0 logging.info('accounts[i+2].balance() = {}'.format(accounts[i+2].balance())) logging.info('wrapper.balanceOf(accounts[i+2]) = {}'.format(wrapper.balanceOf(accounts[i+2]))) logging.info('niftsy20.balanceOf(accounts[i+2]) = {}'.format(niftsy20.balanceOf(accounts[i+2]))) logging.info('wrapper.balance() = {}'.format(wrapper.balance())) logging.info('niftsy20.balanceOf(wrapper.address) = {}'.format(niftsy20.balanceOf(wrapper.address))) with reverts("ERC721: owner query for nonexistent token"): wrapper.ownerOf(tokenId) logging.info('wrapper.getERC20Collateral(tokenId) = {}'.format(wrapper.getERC20Collateral(tokenId)))
def test_wrap_with_transferFeeContract_in_blackList(accounts, erc721mock, wrapper, trmodel, pft, dai): #protocol fee is being taken wrapper.setFee(protokolFee, chargeFeeAfter, pft.address, {"from": accounts[0]}) #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) #wrap nft pft.transfer(accounts[1], protokolFee, {"from": accounts[0]}) erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from':accounts[1]}) pft.approve(wrapper, protokolFee, {'from':accounts[1]}) #add transferFeeContract contract in blackList wrapper.editPartnersItem(dai.address, False, trmodel, False, {"from": accounts[0]}) dai.approve(wrapper.address, ERC20_COLLATERAL_AMOUNT + 100, {"from": accounts[1]}) with reverts("This transferFee token is not enabled"): makeWrapNFT(wrapper, erc721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[0]], accounts[1], dai) #move transferFeeToken from blackList wrapper.editPartnersItem(dai.address, True, trmodel, False, {"from": accounts[0]}) makeWrapNFT(wrapper, erc721mock, ['originalTokenId', 'unwrap_fee_threshold'], [ORIGINAL_NFT_IDs[0], 0], accounts[1], dai) assert pft.balanceOf(wrapper.address) == protokolFee tokenId = wrapper.lastWrappedNFTId() before_balance = dai.balanceOf(wrapper.address) wrapper.approve(accounts[3].address, tokenId, {"from": accounts[1]}) dai.approve(trmodel, TRANSFER_FEE, {'from':accounts[1]}) nft = wrapper.getWrappedToken(tokenId) dai.transfer(accounts[1].address, TRANSFER_FEE, {"from": accounts[0]}) #add tokens to pay transfer fee wrapper.transferFrom(accounts[1].address, accounts[2].address, tokenId, {"from": accounts[3]}) assert dai.balanceOf(accounts[1]) == 0 assert dai.balanceOf(wrapper.address) == before_balance + TRANSFER_FEE - nft[5]*nft[7]/100 assert dai.balanceOf(royaltyBeneficiary) == nft[5]*nft[7]/100 #add transferFeeContract contract in blackList again wrapper.editPartnersItem(dai.address, False, trmodel, False, {"from": accounts[0]}) before_balance = dai.balanceOf(wrapper.address) before_balance_royaltyBeneficiary = dai.balanceOf(royaltyBeneficiary) wrapper.approve(accounts[3].address, tokenId, {"from": accounts[2]}) nft = wrapper.getWrappedToken(tokenId) dai.transfer(accounts[2].address, TRANSFER_FEE, {"from": accounts[0]}) #add tokens to pay transfer fee dai.approve(trmodel, TRANSFER_FEE, {'from':accounts[2]}) wrapper.transferFrom(accounts[2].address, accounts[3].address, tokenId, {"from": accounts[3]}) assert dai.balanceOf(accounts[2]) == 0 assert dai.balanceOf(wrapper.address) == before_balance + TRANSFER_FEE - nft[5]*nft[7]/100 assert dai.balanceOf(royaltyBeneficiary) == before_balance_royaltyBeneficiary + nft[5]*nft[7]/100 #unwrap #move date chain.sleep(100) chain.mine() logging.info('wrapper.totalSupply() = {}'.format(wrapper.totalSupply())) logging.info('wrapper.balanceOf(accounts[3]) = {}'.format(wrapper.balanceOf(accounts[3]))) logging.info('dai.balanceOf(accounts[3]) = {}'.format(dai.balanceOf(accounts[3]))) logging.info('dai.balanceOf(wrapper.address) = {}'.format(dai.balanceOf(wrapper.address))) logging.info('********************AFTER UNWRAP*************') #unwrap nft = wrapper.getWrappedToken(tokenId) wrapper.unWrap721(tokenId, {"from": accounts[3]}) assert wrapper.totalSupply() == 0 assert wrapper.balanceOf(accounts[3].address) == 0 assert dai.balanceOf(accounts[3].address) == nft[3] assert erc721mock.ownerOf(ORIGINAL_NFT_IDs[0]) == accounts[3].address assert dai.balanceOf(wrapper.address) == 0 assert dai.balanceOf(royaltyBeneficiary) == before_balance_royaltyBeneficiary + nft[5]*nft[7]/100 logging.info('wrapper.balanceOf(accounts[3]) = {}'.format(wrapper.balanceOf(accounts[3]))) logging.info('dai.balanceOf(accounts[3]) = {}'.format(dai.balanceOf(accounts[3]))) logging.info('dai.balanceOf(wrapper.address) = {}'.format(dai.balanceOf(wrapper.address))) logging.info('dai.balanceOfroyaltyBeneficiary) = {}'.format(dai.balanceOf(royaltyBeneficiary)))
def test_wrapper_unWrap721_mockHacker(accounts, erc721mock, wrapper, niftsy20, dai, weth, TokenMock, mockHacker, trmodel): #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) wrapper.setFee(protokolFee, chargeFeeAfter, niftsy20, {"from": accounts[0]}) erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from': accounts[1]}) logging.info('balanceOf(wrapper.address) = {}'.format( niftsy20.balanceOf(wrapper.address))) logging.info('balanceOf(royaltyBeneficiary) = {}'.format( niftsy20.balanceOf(royaltyBeneficiary))) #wrap difficult nft niftsy20.transfer(accounts[1], protokolFee, {"from": accounts[0]}) unwrapAfter = chain.time() + 10 before_balance = niftsy20.balanceOf(wrapper.address) niftsy20.approve(wrapper, TRANSFER_FEE, {'from': accounts[1]}) makeWrapNFT(wrapper, erc721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[0]], accounts[1], niftsy20) assert niftsy20.balanceOf(accounts[1]) == 0 assert niftsy20.balanceOf(wrapper.address) == before_balance + protokolFee assert wrapper.lastWrappedNFTId() == 1 tokenId = wrapper.lastWrappedNFTId() nft = wrapper.getWrappedToken(tokenId) c = round(UNWRAP_FEE_THRESHOLD / TRANSFER_FEE) + 1 backedTokens = 0 royalty_tokens = 0 i = 0 for i in range(c): wrapper.approve(accounts[i + 2].address, tokenId, {"from": accounts[i + 1]}) niftsy20.transfer( accounts[i + 1].address, TRANSFER_FEE, {"from": accounts[0]}) #add niftsy tokens to pay transfer fee niftsy20.approve(trmodel, TRANSFER_FEE, {'from': accounts[i + 1]}) wrapper.transferFrom(accounts[i + 1].address, accounts[i + 2].address, tokenId, {"from": accounts[i + 2]}) #make transfers royalty_tokens += TRANSFER_FEE * nft[7] / 100 backedTokens += TRANSFER_FEE - TRANSFER_FEE * nft[7] / 100 #check backedTokens after transfers nft = wrapper.getWrappedToken(tokenId) logging.info('nft2 = {}'.format(nft)) assert nft[3] == backedTokens #add hacker's token mockHacker.approve(wrapper.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) mockHacker.transfer(accounts[1], ERC20_COLLATERAL_AMOUNT, {"from": accounts[0]}) wrapper.setCollateralStatus(mockHacker.address, True, {"from": accounts[0]}) wrapper.addERC20Collateral(tokenId, mockHacker.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) mockHacker.setFailSender(wrapper.address) #move date chain.sleep(100) chain.mine() logging.info('********************BEFORE UNWRAP*************') logging.info('wrapper.totalSupply() = {}'.format(wrapper.totalSupply())) logging.info('accounts[i+2].balance() = {}'.format(accounts[i + 2].balance())) logging.info('wrapper.balanceOf(accounts[i+2]) = {}'.format( wrapper.balanceOf(accounts[i + 2]))) logging.info('niftsy20.balanceOf(accounts[i+2]) = {}'.format( niftsy20.balanceOf(accounts[i + 2]))) logging.info('wrapper.balance() = {}'.format(wrapper.balance())) logging.info('niftsy20.balanceOf(wrapper.address) = {}'.format( niftsy20.balanceOf(wrapper.address))) balance_eth = accounts[i + 2].balance() balance_erc20 = niftsy20.balanceOf(wrapper.address) balance_erc20_owner = niftsy20.balanceOf(accounts[i + 2].address) logging.info('********************AFTER UNWRAP*************') #unwrap tx = wrapper.unWrap721(tokenId, {"from": accounts[i + 2]}) logging.info(tx.events['SuspiciousFail']) logging.info('len(wrapper.getERC20Collateral(tokenId)) = {}'.format( len(wrapper.getERC20Collateral(tokenId)))) #comented due new approach 20211009 #assert len(wrapper.getERC20Collateral(tokenId)) == 0 assert wrapper.totalSupply() == 0 assert wrapper.balanceOf(accounts[i + 2].address) == 0 assert niftsy20.balanceOf( accounts[i + 2].address) == balance_erc20_owner + backedTokens assert erc721mock.ownerOf(ORIGINAL_NFT_IDs[0]) == accounts[i + 2].address assert accounts[i + 2].balance() == balance_eth + nft[2] assert niftsy20.balanceOf(wrapper.address) == balance_erc20 - backedTokens assert niftsy20.balanceOf(royaltyBeneficiary) == royalty_tokens logging.info('wrapper.getERC20Collateral(tokenId) = {}'.format( wrapper.getERC20Collateral(tokenId))) logging.info('accounts[i+2].balance() = {}'.format(accounts[i + 2].balance())) logging.info('wrapper.balanceOf(accounts[i+2]) = {}'.format( wrapper.balanceOf(accounts[i + 2]))) logging.info('niftsy20.balanceOf(accounts[i+2]) = {}'.format( niftsy20.balanceOf(accounts[i + 2]))) logging.info('wrapper.balance() = {}'.format(wrapper.balance())) logging.info('niftsy20.balanceOf(wrapper.address) = {}'.format( niftsy20.balanceOf(wrapper.address))) logging.info('!!!!!mockHacker.balanceOf(wrapper.address) = {}'.format( mockHacker.balanceOf(wrapper.address))) with reverts("ERC721: owner query for nonexistent token"): wrapper.ownerOf(tokenId)
def test_test_wrapper_addERC20Collateral_blackList(accounts, erc721mock, wrapper, niftsy20, trmodel, pft, dai): #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) wrapper.setFee(protokolFee, chargeFeeAfter, pft.address, {"from": accounts[0]}) dai.transfer(accounts[1], ERC20_COLLATERAL_AMOUNT, {"from": accounts[0]}) #wrap difficult nft pft.transfer(accounts[1], protokolFee, {"from": accounts[0]}) unwrapAfter = chain.time() + 10 erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from': accounts[1]}) pft.approve(wrapper, TRANSFER_FEE, {'from': accounts[1]}) makeWrapNFT(wrapper, erc721mock, [ 'originalTokenId', 'transferFee', 'royaltyBeneficiary', 'royaltyPercent', 'unwraptFeeThreshold' ], [ORIGINAL_NFT_IDs[0], 0, zero_address, 0, 0], accounts[1], niftsy20) assert pft.balanceOf(accounts[1]) == 0 assert pft.balanceOf(wrapper.address) == protokolFee assert wrapper.lastWrappedNFTId() == 1 tokenId = wrapper.lastWrappedNFTId() nft = wrapper.getWrappedToken(tokenId) #try to add erc20 collaterals which is in blockList #add collateral contract in blackList wrapper.editPartnersItem(dai.address, False, zero_address, False, {"from": accounts[0]}) dai.approve(wrapper.address, ERC20_COLLATERAL_AMOUNT + 100, {"from": accounts[1]}) with reverts("This ERC20 is not enabled for collateral"): wrapper.addERC20Collateral(tokenId, dai.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) #move collateral contract from blackList wrapper.editPartnersItem(dai.address, True, zero_address, False, {"from": accounts[0]}) wrapper.addERC20Collateral(tokenId, dai.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) assert dai.balanceOf(wrapper.address) == ERC20_COLLATERAL_AMOUNT assert dai.balanceOf(accounts[1].address) == 0 logging.info('coll = {}'.format(wrapper.getERC20Collateral(tokenId))) assert wrapper.getERC20Collateral(tokenId)[0][0] == dai.address assert wrapper.getERC20Collateral(tokenId)[0][1] == ERC20_COLLATERAL_AMOUNT #add collateral contract in blackList again wrapper.editPartnersItem(dai.address, False, zero_address, False, {"from": accounts[0]}) #try to unwrap nft #move date chain.sleep(100) chain.mine() wrapper.unWrap721(tokenId, {"from": accounts[1]}) assert dai.balanceOf(wrapper.address) == 0 assert dai.balanceOf(accounts[1].address) == ERC20_COLLATERAL_AMOUNT
def test_wrapper_addERC20Collateral(accounts, erc721mock, wrapper, niftsy20, dai, weth, trmodel, TokenMock): #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) wrapper.setFee(protokolFee, chargeFeeAfter, niftsy20, {"from": accounts[0]}) dai.transfer(accounts[1], ERC20_COLLATERAL_AMOUNT, {"from": accounts[0]}) #wrap difficult nft niftsy20.transfer(accounts[1], protokolFee, {"from": accounts[0]}) unwrapAfter = chain.time() + 10 erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from': accounts[1]}) niftsy20.approve(wrapper, TRANSFER_FEE, {'from': accounts[1]}) makeWrapNFT(wrapper, erc721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[0]], accounts[1], niftsy20) assert niftsy20.balanceOf(accounts[1]) == 0 assert niftsy20.balanceOf(wrapper.address) == protokolFee assert wrapper.lastWrappedNFTId() == 1 checkWrappedNFT(wrapper, wrapper.lastWrappedNFTId(), erc721mock.address, ORIGINAL_NFT_IDs[0], START_NATIVE_COLLATERAL, 0, unwrapAfter, TRANSFER_FEE, royaltyBeneficiary, ROAYLTY_PERCENT, UNWRAP_FEE_THRESHOLD) tokenId = wrapper.lastWrappedNFTId() nft = wrapper.getWrappedToken(tokenId) #try to add erc20 collaterals #there is not allowance with reverts("Please approve first"): wrapper.addERC20Collateral(tokenId, dai.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) dai.approve(wrapper.address, ERC20_COLLATERAL_AMOUNT + 100, {"from": accounts[1]}) with reverts("Low balance for add collateral"): wrapper.addERC20Collateral( tokenId, dai.address, ERC20_COLLATERAL_AMOUNT + ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) wrapper.addERC20Collateral(tokenId, dai.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) assert dai.balanceOf(wrapper.address) == ERC20_COLLATERAL_AMOUNT assert dai.balanceOf(accounts[1].address) == 0 logging.info('coll = {}'.format(wrapper.getERC20Collateral(tokenId))) assert wrapper.getERC20Collateral(tokenId)[0][0] == dai.address assert wrapper.getERC20Collateral(tokenId)[0][1] == ERC20_COLLATERAL_AMOUNT #second call dai.transfer(accounts[1], ERC20_COLLATERAL_AMOUNT, {"from": accounts[0]}) dai.approve(wrapper.address, ERC20_COLLATERAL_AMOUNT + 100, {"from": accounts[1]}) wrapper.addERC20Collateral(tokenId, dai.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) assert wrapper.getERC20Collateral( tokenId)[0][1] == 2 * ERC20_COLLATERAL_AMOUNT assert len(wrapper.getERC20Collateral(tokenId)) == 1 logging.info('coll = {}'.format(wrapper.getERC20Collateral(tokenId))) #nonexist tokenId dai.transfer(accounts[1], ERC20_COLLATERAL_AMOUNT, {"from": accounts[0]}) dai.approve(wrapper.address, ERC20_COLLATERAL_AMOUNT + 100, {"from": accounts[1]}) with reverts("ERC721: owner query for nonexistent token"): wrapper.addERC20Collateral(100, dai.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) #not owner calls addNativeCollateral dai.transfer(accounts[2], ERC20_COLLATERAL_AMOUNT, {"from": accounts[0]}) dai.approve(wrapper.address, ERC20_COLLATERAL_AMOUNT + 100, {"from": accounts[2]}) wrapper.addERC20Collateral(tokenId, dai.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[2]}) assert wrapper.getERC20Collateral( tokenId)[0][1] == 3 * ERC20_COLLATERAL_AMOUNT assert len(wrapper.getERC20Collateral(tokenId)) == 1 #add second token weth.transfer(accounts[1], ERC20_COLLATERAL_AMOUNT, {"from": accounts[0]}) weth.approve(wrapper.address, ERC20_COLLATERAL_AMOUNT + 100, {"from": accounts[1]}) wrapper.addERC20Collateral(wrapper.lastWrappedNFTId(), weth.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) logging.info('coll = {}'.format(wrapper.getERC20Collateral(tokenId))) assert len(wrapper.getERC20Collateral(tokenId)) == 2 assert wrapper.getERC20Collateral(tokenId)[1][0] == weth.address assert wrapper.getERC20Collateral(tokenId)[1][1] == ERC20_COLLATERAL_AMOUNT #add third token############################# #add erc20 in allowed address with reverts("Ownable: caller is not the owner"): wrapper.setCollateralStatus(niftsy20.address, True, {"from": accounts[1]}) wrapper.setCollateralStatus(niftsy20.address, True, {"from": accounts[0]}) #change MAX_ERC20_COUNT with reverts("Ownable: caller is not the owner"): wrapper.setMaxERC20CollateralCount(2, {"from": accounts[1]}) wrapper.setMaxERC20CollateralCount(2, {"from": accounts[0]}) niftsy20.transfer(accounts[1], ERC20_COLLATERAL_AMOUNT, {"from": accounts[0]}) niftsy20.approve(wrapper.address, ERC20_COLLATERAL_AMOUNT + 100, {"from": accounts[1]}) logging.info('before niftsy20.balanceOf(accounts[1]) = {}'.format( niftsy20.balanceOf(accounts[1]))) logging.info('before niftsy20.balanceOf(wrapper.address) = {}'.format( niftsy20.balanceOf(wrapper.address))) with reverts("To much ERC20 tokens in collatteral"): wrapper.addERC20Collateral(tokenId, niftsy20.address, ERC20_COLLATERAL_AMOUNT, {"from": accounts[1]}) assert len(wrapper.getERC20Collateral(tokenId)) == 2 assert niftsy20.balanceOf(accounts[1]) == ERC20_COLLATERAL_AMOUNT logging.info('after niftsy20.balanceOf(accounts[1]) = {}'.format( niftsy20.balanceOf(accounts[1]))) logging.info('after niftsy20.balanceOf(wrapper.address) = {}'.format( niftsy20.balanceOf(wrapper.address))) #try to add erc20 collateral for non allowanced erc20 with reverts("To much ERC20 tokens in collatteral"): dai1 = _addErc20Collateral(accounts[0], accounts[1], wrapper, ERC20_COLLATERAL_AMOUNT, tokenId, TokenMock)
def test_simple_wrap(accounts, erc721mock, wrapper, niftsy20, trmodel): #make test data makeNFTForTest(accounts, erc721mock, ORIGINAL_NFT_IDs) #bad _underlineContract with reverts(""): wrapper.wrap721( zero_address, ORIGINAL_NFT_IDs[0], 0, 1e18, zero_address, 0, 0, niftsy20, {'from':accounts[1]}) #nonexist nft with reverts("ERC721: operator query for nonexistent token"): wrapper.wrap721( erc721mock.address, 1, 0, 1e18, zero_address, 0, 0, niftsy20, {'from':accounts[1]}) #there is not allowance for wrapper.address with reverts("ERC721: transfer caller is not owner nor approved"): wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 1e18, zero_address, 0, 0, niftsy20, {'from':accounts[1]}) #check ROYALTY_PERCENT erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from':accounts[1]}) with reverts("Royalty percent too big"): wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 1e18, zero_address, wrapper.MAX_ROYALTY_PERCENT() + 1, 0, niftsy20, {'from':accounts[1]}) #check _unwraptFeeThreshold erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[0], {'from':accounts[1]}) with reverts("Cant set Threshold without transferFee"): wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 0, zero_address, 0, 1, niftsy20, {'from':accounts[1]}) #check ROYALTY_PERCENT again with reverts("Royalty source is transferFee"): wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 0, zero_address, wrapper.MAX_ROYALTY_PERCENT(), 0, niftsy20, {'from':accounts[1]}) #check ROYALTY_address with reverts("No Royalty without transferFee"): wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 0, royaltyBeneficiary, 0, 0, niftsy20, {'from':accounts[1]}) #check _unwrapAfter with reverts("Too long Wrap"): wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], chain.time() + wrapper.MAX_TIME_TO_UNWRAP() + 10, 0, zero_address, 0, 0, niftsy20, {'from':accounts[1]}) #check _unwraptFeeThreshold with reverts("Too much threshold"): wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 1, zero_address, 0, niftsy20.totalSupply() * wrapper.MAX_FEE_THRESHOLD_PERCENT() / 100 + 1, niftsy20, {'from':accounts[1]}) #check ROYALTY_address again with reverts("Royalty to zero address"): wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 1, zero_address, 1, niftsy20.totalSupply() * wrapper.MAX_FEE_THRESHOLD_PERCENT() / 100 + 1, niftsy20, {'from':accounts[1]}) with reverts("Ownable: caller is not the owner"): wrapper.setFee(protokolFee, chargeFeeAfter, niftsy20,{"from": accounts[1]}) wrapper.setFee(protokolFee, chargeFeeAfter, niftsy20, {"from": accounts[0]}) #does not have niftsy token for protokol fee with reverts("insufficient protocol fee token balance for fee"): wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 0, zero_address, 0, 0, niftsy20, {'from':accounts[1]}) #wrap simple nft niftsy20.transfer(accounts[1], protokolFee, {"from": accounts[0]}) niftsy20.approve(wrapper, TRANSFER_FEE, {'from':accounts[1]}) wrapper.wrap721( erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 0, zero_address, 0, 0, niftsy20, {'from':accounts[1]}) assert niftsy20.balanceOf(accounts[1]) == 0 assert niftsy20.balanceOf(wrapper.address) == protokolFee assert wrapper.lastWrappedNFTId() == 1 assert erc721mock.ownerOf(ORIGINAL_NFT_IDs[0]) == wrapper.address assert wrapper.ownerOf(wrapper.lastWrappedNFTId()) == accounts[1] checkWrappedNFT(wrapper, wrapper.lastWrappedNFTId(), erc721mock.address, ORIGINAL_NFT_IDs[0], 0, 0, 0, 0, zero_address, 0, 0) #wrap difficult nft erc721mock.transferFrom(accounts[0], accounts[1], ORIGINAL_NFT_IDs[1], {'from':accounts[0]}) niftsy20.transfer(accounts[1], protokolFee, {"from": accounts[0]}) unwrapAfter = chain.time() + 10 erc721mock.approve(wrapper.address, ORIGINAL_NFT_IDs[1], {'from':accounts[1]}) makeWrapNFT(wrapper, erc721mock, ['originalTokenId'], [ORIGINAL_NFT_IDs[1]], accounts[1], niftsy20) assert niftsy20.balanceOf(accounts[1]) == 0 assert niftsy20.balanceOf(wrapper.address) == 2 * protokolFee assert wrapper.lastWrappedNFTId() == 2 checkWrappedNFT(wrapper, wrapper.lastWrappedNFTId(), erc721mock.address, ORIGINAL_NFT_IDs[1], START_NATIVE_COLLATERAL, 0, unwrapAfter, TRANSFER_FEE, royaltyBeneficiary, ROAYLTY_PERCENT, UNWRAP_FEE_THRESHOLD) logging.info('wrapper.tokenURI(wrapper.lastWrappedNFTId()) = {}'.format(wrapper.tokenURI(wrapper.lastWrappedNFTId()))) logging.info('wrapper.getWrappedToken(wrapper.lastWrappedNFTId()) = {}'.format(wrapper.getWrappedToken(wrapper.lastWrappedNFTId())))