[SOLVED] Automatic Sync is not working at all

I am setting up my server to listen for changes when a event is fired from the contract. All the steps are done exatcly from this video from Moralis. But it does not listen to events at all. There is no change in database. Tried with multiple contracts, does not work. Tried restarting server, no change at all. Does it not work in free account? I have to upgrade server to use sync feature?

Contract Address: 0x022382cbf823B903Fe01870725eA689B4868a143

Server URL: https://byif8e5ridzt.usemoralis.com:2053/server

how does the abi looks like?

[{“inputs”:[{“internalType”:“string”,“name”:"_name",“type”:“string”},{“internalType”:“string”,“name”:"_symbol",“type”:“string”},{“internalType”:“string”,“name”:"_initBaseURI",“type”:“string”}],“stateMutability”:“nonpayable”,“type”:“constructor”},{“anonymous”:false,“inputs”:[{“indexed”:true,“internalType”:“address”,“name”:“owner”,“type”:“address”},{“indexed”:true,“internalType”:“address”,“name”:“approved”,“type”:“address”},{“indexed”:true,“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“Approval”,“type”:“event”},{“anonymous”:false,“inputs”:[{“indexed”:true,“internalType”:“address”,“name”:“owner”,“type”:“address”},{“indexed”:true,“internalType”:“address”,“name”:“operator”,“type”:“address”},{“indexed”:false,“internalType”:“bool”,“name”:“approved”,“type”:“bool”}],“name”:“ApprovalForAll”,“type”:“event”},{“anonymous”:false,“inputs”:[{“indexed”:false,“internalType”:“uint256”,“name”:“amount”,“type”:“uint256”},{“indexed”:false,“internalType”:“uint256”,“name”:“lastBalance”,“type”:“uint256”}],“name”:“BalanceWithdrawn”,“type”:“event”},{“anonymous”:false,“inputs”:[{“indexed”:false,“internalType”:“string”,“name”:“newURI”,“type”:“string”},{“indexed”:false,“internalType”:“string”,“name”:“oldURI”,“type”:“string”}],“name”:“BaseURIChanged”,“type”:“event”},{“anonymous”:false,“inputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“address”,“name”:“creator”,“type”:“address”},{“internalType”:“address”,“name”:“owner”,“type”:“address”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”}],“indexed”:false,“internalType”:“struct NFTMarketplace.NFTItem”,“name”:“item”,“type”:“tuple”},{“indexed”:false,“internalType”:“address”,“name”:“sender”,“type”:“address”}],“name”:“NFTBought”,“type”:“event”},{“anonymous”:false,“inputs”:[{“indexed”:true,“internalType”:“address”,“name”:“previousOwner”,“type”:“address”},{“indexed”:true,“internalType”:“address”,“name”:“newOwner”,“type”:“address”}],“name”:“OwnershipTransferred”,“type”:“event”},{“anonymous”:false,“inputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“address”,“name”:“creator”,“type”:“address”},{“internalType”:“address”,“name”:“owner”,“type”:“address”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”}],“indexed”:false,“internalType”:“struct NFTMarketplace.NFTItem”,“name”:“item”,“type”:“tuple”},{“indexed”:false,“internalType”:“bool”,“name”:“newStatus”,“type”:“bool”},{“indexed”:false,“internalType”:“uint256”,“name”:“newPrice”,“type”:“uint256”}],“name”:“SaleStatusChanged”,“type”:“event”},{“anonymous”:false,“inputs”:[{“indexed”:false,“internalType”:“uint256”,“name”:“newCharge”,“type”:“uint256”},{“indexed”:false,“internalType”:“uint256”,“name”:“oldCharge”,“type”:“uint256”}],“name”:“ServiceChargeChanged”,“type”:“event”},{“anonymous”:false,“inputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“address”,“name”:“creator”,“type”:“address”},{“internalType”:“address”,“name”:“owner”,“type”:“address”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”}],“indexed”:false,“internalType”:“struct NFTMarketplace.NFTItem”,“name”:“item”,“type”:“tuple”},{“indexed”:false,“internalType”:“address”,“name”:“sender”,“type”:“address”}],“name”:“TokenBurned”,“type”:“event”},{“anonymous”:false,“inputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”},{“internalType”:“bytes”,“name”:“signature”,“type”:“bytes”},{“internalType”:“bool”,“name”:“isAuction”,“type”:“bool”},{“internalType”:“address”,“name”:“target”,“type”:“address”},{“internalType”:“bool”,“name”:“isRedeem”,“type”:“bool”},{“internalType”:“uint256”,“name”:“startDate”,“type”:“uint256”},{“internalType”:“uint256”,“name”:“endDate”,“type”:“uint256”}],“indexed”:false,“internalType”:“struct NFTMarketplace.NFTVoucher”,“name”:“voucher”,“type”:“tuple”}],“name”:“TokenMinted”,“type”:“event”},{“anonymous”:false,“inputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”},{“internalType”:“bytes”,“name”:“signature”,“type”:“bytes”},{“internalType”:“bool”,“name”:“isAuction”,“type”:“bool”},{“internalType”:“address”,“name”:“target”,“type”:“address”},{“internalType”:“bool”,“name”:“isRedeem”,“type”:“bool”},{“internalType”:“uint256”,“name”:“startDate”,“type”:“uint256”},{“internalType”:“uint256”,“name”:“endDate”,“type”:“uint256”}],“indexed”:false,“internalType”:“struct NFTMarketplace.NFTVoucher”,“name”:“voucher”,“type”:“tuple”},{“indexed”:false,“internalType”:“address”,“name”:“sender”,“type”:“address”}],“name”:“TokenRedeemed”,“type”:“event”},{“anonymous”:false,“inputs”:[{“indexed”:true,“internalType”:“address”,“name”:“from”,“type”:“address”},{“indexed”:true,“internalType”:“address”,“name”:“to”,“type”:“address”},{“indexed”:true,“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“Transfer”,“type”:“event”},{“inputs”:[{“internalType”:“address”,“name”:“to”,“type”:“address”},{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“approve”,“outputs”:[],“stateMutability”:“nonpayable”,“type”:“function”},{“inputs”:[{“internalType”:“address”,“name”:“owner”,“type”:“address”}],“name”:“balanceOf”,“outputs”:[{“internalType”:“uint256”,“name”:"",“type”:“uint256”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[],“name”:“baseURI”,“outputs”:[{“internalType”:“string”,“name”:"",“type”:“string”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“burnToken”,“outputs”:[],“stateMutability”:“payable”,“type”:“function”},{“inputs”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“buyNFT”,“outputs”:[],“stateMutability”:“payable”,“type”:“function”},{“inputs”:[{“internalType”:“string”,“name”:“uri”,“type”:“string”}],“name”:“changeBaseURI”,“outputs”:[],“stateMutability”:“nonpayable”,“type”:“function”},{“inputs”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“uint256”,“name”:“newPrice”,“type”:“uint256”},{“internalType”:“bool”,“name”:“changeToIsForSale”,“type”:“bool”}],“name”:“changeNFTSaleStatus”,“outputs”:[],“stateMutability”:“payable”,“type”:“function”},{“inputs”:[{“internalType”:“uint256”,“name”:“newSc”,“type”:“uint256”}],“name”:“changeServiceCharge”,“outputs”:[],“stateMutability”:“nonpayable”,“type”:“function”},{“inputs”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“getApproved”,“outputs”:[{“internalType”:“address”,“name”:"",“type”:“address”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[],“name”:“getChainID”,“outputs”:[{“internalType”:“uint256”,“name”:"",“type”:“uint256”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“address”,“name”:“user”,“type”:“address”},{“internalType”:“uint256”,“name”:“kind”,“type”:“uint256”}],“name”:“getItemsByUser”,“outputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“address”,“name”:“creator”,“type”:“address”},{“internalType”:“address”,“name”:“owner”,“type”:“address”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”}],“internalType”:“struct NFTMarketplace.NFTItem[]”,“name”:"",“type”:“tuple[]”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[],“name”:“getItemsForSale”,“outputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“address”,“name”:“creator”,“type”:“address”},{“internalType”:“address”,“name”:“owner”,“type”:“address”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”}],“internalType”:“struct NFTMarketplace.NFTItem[]”,“name”:"",“type”:“tuple[]”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“getNFTItem”,“outputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“address”,“name”:“creator”,“type”:“address”},{“internalType”:“address”,“name”:“owner”,“type”:“address”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”}],“internalType”:“struct NFTMarketplace.NFTItem”,“name”:"",“type”:“tuple”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“address”,“name”:“userAddress”,“type”:“address”}],“name”:“getNFTItemCountUtilityByUser”,“outputs”:[{“internalType”:“uint256[4]”,“name”:"",“type”:“uint256[4]”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“address”,“name”:“owner”,“type”:“address”},{“internalType”:“address”,“name”:“operator”,“type”:“address”}],“name”:“isApprovedForAll”,“outputs”:[{“internalType”:“bool”,“name”:"",“type”:“bool”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”},{“internalType”:“bytes”,“name”:“signature”,“type”:“bytes”},{“internalType”:“bool”,“name”:“isAuction”,“type”:“bool”},{“internalType”:“address”,“name”:“target”,“type”:“address”},{“internalType”:“bool”,“name”:“isRedeem”,“type”:“bool”},{“internalType”:“uint256”,“name”:“startDate”,“type”:“uint256”},{“internalType”:“uint256”,“name”:“endDate”,“type”:“uint256”}],“internalType”:“struct NFTMarketplace.NFTVoucher”,“name”:“voucher”,“type”:“tuple”}],“name”:“mintToken”,“outputs”:[],“stateMutability”:“payable”,“type”:“function”},{“inputs”:[],“name”:“name”,“outputs”:[{“internalType”:“string”,“name”:"",“type”:“string”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[],“name”:“owner”,“outputs”:[{“internalType”:“address”,“name”:"",“type”:“address”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“ownerOf”,“outputs”:[{“internalType”:“address”,“name”:"",“type”:“address”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”},{“internalType”:“bytes”,“name”:“signature”,“type”:“bytes”},{“internalType”:“bool”,“name”:“isAuction”,“type”:“bool”},{“internalType”:“address”,“name”:“target”,“type”:“address”},{“internalType”:“bool”,“name”:“isRedeem”,“type”:“bool”},{“internalType”:“uint256”,“name”:“startDate”,“type”:“uint256”},{“internalType”:“uint256”,“name”:“endDate”,“type”:“uint256”}],“internalType”:“struct NFTMarketplace.NFTVoucher”,“name”:“voucher”,“type”:“tuple”}],“name”:“redeemToken”,“outputs”:[],“stateMutability”:“payable”,“type”:“function”},{“inputs”:[],“name”:“renounceOwnership”,“outputs”:[],“stateMutability”:“nonpayable”,“type”:“function”},{“inputs”:[{“internalType”:“address”,“name”:“from”,“type”:“address”},{“internalType”:“address”,“name”:“to”,“type”:“address”},{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“safeTransferFrom”,“outputs”:[],“stateMutability”:“nonpayable”,“type”:“function”},{“inputs”:[{“internalType”:“address”,“name”:“from”,“type”:“address”},{“internalType”:“address”,“name”:“to”,“type”:“address”},{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“bytes”,“name”:“data”,“type”:“bytes”}],“name”:“safeTransferFrom”,“outputs”:[],“stateMutability”:“nonpayable”,“type”:“function”},{“inputs”:[],“name”:“serviceCharge”,“outputs”:[{“internalType”:“uint256”,“name”:"",“type”:“uint256”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“address”,“name”:“operator”,“type”:“address”},{“internalType”:“bool”,“name”:“approved”,“type”:“bool”}],“name”:“setApprovalForAll”,“outputs”:[],“stateMutability”:“nonpayable”,“type”:“function”},{“inputs”:[{“internalType”:“bytes4”,“name”:“interfaceId”,“type”:“bytes4”}],“name”:“supportsInterface”,“outputs”:[{“internalType”:“bool”,“name”:"",“type”:“bool”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[],“name”:“symbol”,“outputs”:[{“internalType”:“string”,“name”:"",“type”:“string”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“tokenURI”,“outputs”:[{“internalType”:“string”,“name”:"",“type”:“string”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“address”,“name”:“from”,“type”:“address”},{“internalType”:“address”,“name”:“to”,“type”:“address”},{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”}],“name”:“transferFrom”,“outputs”:[],“stateMutability”:“nonpayable”,“type”:“function”},{“inputs”:[{“internalType”:“address”,“name”:“newOwner”,“type”:“address”}],“name”:“transferOwnership”,“outputs”:[],“stateMutability”:“nonpayable”,“type”:“function”},{“inputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”},{“internalType”:“bytes”,“name”:“signature”,“type”:“bytes”},{“internalType”:“bool”,“name”:“isAuction”,“type”:“bool”},{“internalType”:“address”,“name”:“target”,“type”:“address”},{“internalType”:“bool”,“name”:“isRedeem”,“type”:“bool”},{“internalType”:“uint256”,“name”:“startDate”,“type”:“uint256”},{“internalType”:“uint256”,“name”:“endDate”,“type”:“uint256”}],“internalType”:“struct NFTMarketplace.NFTVoucher”,“name”:“voucher”,“type”:“tuple”}],“name”:“verifyVoucher”,“outputs”:[{“internalType”:“address”,“name”:"",“type”:“address”}],“stateMutability”:“view”,“type”:“function”},{“inputs”:[{“internalType”:“uint256”,“name”:“amount”,“type”:“uint256”}],“name”:“withdrawBalance”,“outputs”:[],“stateMutability”:“payable”,“type”:“function”},{“stateMutability”:“payable”,“type”:“receive”}]

https://rinkeby.etherscan.io/address/0x022382cbf823b903fe01870725ea689b4868a143#code

can you paste only the event info (ABI) for a particular event that you are trying to sync?

{“anonymous”:false,“inputs”:[{“components”:[{“internalType”:“uint256”,“name”:“tokenId”,“type”:“uint256”},{“internalType”:“string”,“name”:“tokenURI”,“type”:“string”},{“internalType”:“uint256”,“name”:“price”,“type”:“uint256”},{“internalType”:“address”,“name”:“creator”,“type”:“address”},{“internalType”:“address”,“name”:“owner”,“type”:“address”},{“internalType”:“bool”,“name”:“isForSale”,“type”:“bool”}],“indexed”:false,“internalType”:“struct NFTMarketplace.NFTItem”,“name”:“item”,“type”:“tuple”},{“indexed”:false,“internalType”:“address”,“name”:“sender”,“type”:“address”}],“name”:“NFTBought”,“type”:“event”}

I looked now on the server, one issue is with the topic, you have complex events there with tuples and the topic that is automatically generated is not the right one, you should use the legacy interface: legacy.moralis.io or to add the event from sync, and as a topic you should add the hash form as topic0 for what you see in a block explorer for that event

1 Like

There are others two as well:

TokenMinted:

{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"isForSale","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bool","name":"isAuction","type":"bool"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"isRedeem","type":"bool"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"}],"indexed":false,"internalType":"struct NFTMarketplace.NFTVoucher","name":"voucher","type":"tuple"}],"name":"TokenMinted","type":"event"}

TokenRedeemed:

{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"isForSale","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bool","name":"isAuction","type":"bool"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"isRedeem","type":"bool"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"}],"indexed":false,"internalType":"struct NFTMarketplace.NFTVoucher","name":"voucher","type":"tuple"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"TokenRedeemed","type":"event"}

None of them works.

yes, read the above reply with the topic part

So how do I know the topic hash before hand? Do these topic name will be same in tesnet and mainnet?

you look in a block explorer at that event (a a transaction that emits that event) and copy it from there, it will be same topic for the same event, it doesn’t matter if it is on mainnet or testnet

Just tried using the topic hash as well, does not seem to work.

Table is still empty:

what is a link in a block explorer to a transaction from where you got that topic hash?

https://rinkeby.etherscan.io/tx/0xd62ee633c389846848d84ef8ecedad2fe8155f2a0302082a93edf51e07bc229d#eventlog

This one:

that seems correct, you have 3 events synced now in a table

Okay found out I need to recreate the sync configuration again, I cannot just update the topic in database. I added one from legacy UI and its working for that sync.

Thank you so much🙌

1 Like

Legacy Admin panel has been shut down. How am I supposed to now add the topic hash from new UI. Why is the legacy UI shut down without having an option to add a custom topic hash in the new UI. This has to be a joke. Can you help?