zksyncid.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import {countTransactionPeriods} from "@/utils/getZksyncData/procotols/countTransactionPeriods.js";
  2. const zkSyncIdAddresses = ['0xa531ece441138d8ce52642ad497059f2a79fd96f'];
  3. export const ZkSyncId = {
  4. getProtocolsState: (transactions, address) => {
  5. const protocolState = {
  6. name: 'zkSync ID',
  7. id: 'zksyncid',
  8. lastActivity: '',
  9. volume: 0,
  10. interactions: 0,
  11. activeDays: 0,
  12. approves: 0,
  13. url: 'https://www.zksyncid.xyz/',
  14. };
  15. transactions.forEach((transaction) => {
  16. if (
  17. zkSyncIdAddresses.includes(transaction.to.toLowerCase()) ||
  18. zkSyncIdAddresses.includes(transaction.to.toLowerCase())
  19. ) {
  20. if (protocolState.lastActivity === '') protocolState.lastActivity = transaction.receivedAt;
  21. if (new Date(protocolState.lastActivity) < new Date(transaction.receivedAt))
  22. protocolState.lastActivity = transaction.receivedAt;
  23. protocolState.interactions += 1;
  24. const transfers = transaction.transfers.sort(
  25. (a, b) =>
  26. parseInt(b.amount) * 10 ** -b.token.decimals * b.token.price -
  27. parseInt(a.amount) * 10 ** -a.token.decimals * a.token.price,
  28. );
  29. if (transfers.length === 0) return;
  30. protocolState.volume +=
  31. parseInt(transfers[0].amount) * 10 ** -transfers[0].token.decimals * transfers[0].token.price;
  32. }
  33. });
  34. protocolState.activeDays = countTransactionPeriods(address, transactions, protocolState.id, zkSyncIdAddresses).days;
  35. return protocolState;
  36. },
  37. };