Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create watcher for Azimuth contracts #351

Open
15 of 20 tasks
nikugogoi opened this issue Apr 3, 2023 · 18 comments
Open
15 of 20 tasks

Create watcher for Azimuth contracts #351

nikugogoi opened this issue Apr 3, 2023 · 18 comments
Assignees

Comments

@nikugogoi
Copy link
Collaborator

nikugogoi commented Apr 3, 2023

  • Create watchers using codegen for live azimuth contracts
    • Lazy watcher
      • eth_call mode
        • Implement array return types
        • Implement multiple return types
        • Fix solc compile errors (Ecliptic.sol)
        • Debug eth_call error in DelegatedSending contract
      • storage call mode
    • Active watcher
    • GraphQL schema stitching/facade
  • Changes required in codegen
    • Flatten solidity files with correct order of imports
    • Avoid generating watcher queries for contracts that are not inherited by main contract (solc)
    • eth_call mode
      • Handle array return types
        • Support GQL queries
        • Support DB caching
      • Handle multiple return types
        • Support GQL queries
        • Support DB caching
@nikugogoi nikugogoi self-assigned this Apr 3, 2023
@nikugogoi
Copy link
Collaborator Author

nikugogoi commented Apr 3, 2023

Issues with creating watcher in eth_call mode:

  • Codegen is not able to generate watcher for unhandled types in contracts:
    • Polls.sol
      function getUpgradeProposals() returns (address[] proposals)
      function getDocumentMajorities() returns (bytes32[] majorities)
      function getDocumentProposals() returns (bytes32[] proposals)
    • Azimuth.sol
      // Multiple return params not handled
      function getKeys(uint32 _point) returns (bytes32 crypt, bytes32 auth, uint32 suite, uint32 revision)
      function getSponsoring(uint32 _sponsor) returns (uint32[] sponsees)
      function getSpawned(uint32 _point) returns (uint32[] spawned)
      function getEscapeRequests(uint32 _sponsor) returns (uint32[] requests)
      function getOwnedPoints(address _whose) returns (uint32[] ownedPoints)
      function getManagerFor(address _proxy) returns (uint32[] mfor)
      function getSpawningFor(address _proxy) returns (uint32[] sfor)
      function getVotingFor(address _proxy) returns (uint32[] vfor)
      function getTransferringFor(address _proxy) returns (uint32[] tfor)
    • Censures.sol
      function getCensuring(uint16 _whose) returns (uint32[] cens)
      function getCensuredBy(uint16 _who) returns (uint16[] cens)
    • Claims.sol
      Uses Azimuth.sol
    • ConditionalStarRelease.sol
      function getBatches(address _participant) returns (uint16[] batches)
      function getWithdrawn(address _participant) returns (uint16[] withdrawn)
      function getForfeited(address _participant) returns (bool[] forfeited)
      function getRemainingStars(address _participant) returns (uint16[] stars)
      // Multiple return params not handled
      function getConditionsState()  returns (bytes32[] conds, uint256[] lives, uint256[] deads, uint256[] times)
    • LinearStarRelease.sol
      function getRemainingStars(address _participant) returns (uint16[] stars)
  • Codegen throws solc compile error for the following contracts:
    • Ecliptic.sol
      errors: [
        {
          component: 'general',
          formattedMessage: 'Ecliptic.sol:53:21: TypeError: Definition of base has to precede definition of derived contract\n' +
            'contract Azimuth is Ownable\n' +
            '                    ^-----^\n',
          message: 'Definition of base has to precede definition of derived contract',
          severity: 'error',
          sourceLocation: [Object],
          type: 'TypeError'
        }
      ]
      
    • DelegatedSending.sol
      Same error as Ecliptic.sol

@nikugogoi
Copy link
Collaborator Author

Issue with generating watchers in storage mode:

  • storageLayout artifact is required by watchers to support storage calls
  • Codegen is unable to generate storageLayout artifact when using legacy solc compiler v0.4.24 required by Azimuth contracts
    • storageLayout option for output selection was introduced in solidity release 0.5.13
      settings: {
        outputSelection: {
          '*': {
            '*': ['abi', 'storageLayout']
        }
      }
      

@dafaqdhruv
Copy link
Contributor

Tried using solc v0.5.13 to generate watcher

  • Required to update openzeppelin/solidity to a version compatible with solidity v0.5.13

    • Changed dependencies in azimuth/package.json to:
      "openzeppelin-solidity": "2.5.0"
  • Updated solidity version in Azimuth.sol to ^0.5.0. Errors thrown by solc :

    • project:/contracts/Azimuth.sol:414:16: TypeError: Data location must be "memory" for return parameter in function, but none was given.
      returns (uint32[] spawned)
                 ^--------------^
      
      • Solved by changing return type in function definition to:
        returns (uint32[] memory spawned)
    • project:/contracts/Azimuth.sol:927:17: TypeError: Operator != not compatible with types int_const 0 and address
      return ( (0x0 != _who) &&
      
      • Solved by changing code to:
        return ( (address(0x0) != _who) &&
  • Watcher generated successfully along with storageLayout artifact

@nikugogoi
Copy link
Collaborator Author

In deploy script Azimuth contract is getting deployed first
Azimuth contract is deployed at block 6784880
The first tx in Azimuth contract is at block 6784943

@nikugogoi
Copy link
Collaborator Author

GQL Queries (eth_call) for Azimuth watcher

  • Query:
    query {
      isActive(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      getKeyRevisionNumber(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      hasBeenLinked(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      isLive(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      getContinuityNumber(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      getSpawnCount(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      hasSponsor(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      getSponsor(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      isSponsor(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _sponsor: 0
      ) {
        value
      }
      getSponsoringCount(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _sponsor: 0
      ) {
        value
      }
      isEscaping(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      getEscapeRequest(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      isRequestingEscapeTo(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _sponsor: 0
      ) {
        value
      }
      getEscapeRequestsCount(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _sponsor: 0
      ) {
        value
      }
      getOwner(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      isOwner(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _address: "0x740D6d741711163D3FcacECF1F11b8679A7C7964"
      ) {
        value
      }
      getOwnedPointCount(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _whose: "0x5A4e20122C4b63F14E3d92a952DF64Aa18895912"
      ) {
        value
      }
    
      getManagementProxy(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      isManagementProxy(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      canManage(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _who: "0x5A4e20122C4b63F14E3d92a952DF64Aa18895912"
      ) {
        value
      }
      getManagerForCount(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      getSpawnProxy(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      isSpawnProxy(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      canSpawnAs(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _who: "0x5A4e20122C4b63F14E3d92a952DF64Aa18895912"
      ) {
        value
      }
      getSpawningForCount(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9",
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB",
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      getVotingProxy(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      isVotingProxy(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      canVoteAs(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _who: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      getVotingForCount(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      getTransferProxy(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      isTransferProxy(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      canTransfer(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
        _who: "0x5A4e20122C4b63F14E3d92a952DF64Aa18895912"
      ) {
        value
      }
      getTransferringForCount(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      isOperator(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _owner: "0x740D6d741711163D3FcacECF1F11b8679A7C7964"
        _operator: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
    }
    Response:
    {
      "data": {
        "isActive": {
          "value": true
        },
        "getKeyRevisionNumber": {
          "value": 2
        },
        "hasBeenLinked": {
          "value": true
        },
        "isLive": {
          "value": false
        },
        "getContinuityNumber": {
          "value": 2
        },
        "getSpawnCount": {
          "value": 255
        },
        "hasSponsor": {
          "value": true
        },
        "getSponsor": {
          "value": 1
        },
        "isSponsor": {
          "value": false
        },
        "getSponsoringCount": {
          "value": "7"
        },
        "isEscaping": {
          "value": false
        },
        "getEscapeRequest": {
          "value": 0
        },
        "isRequestingEscapeTo": {
          "value": false
        },
        "getEscapeRequestsCount": {
          "value": "1"
        },
        "getOwner": {
          "value": "0x4b5E239C1bbb98d44ea23BC9f8eC7584F54096E8"
        },
        "isOwner": {
          "value": false
        },
        "getOwnedPointCount": {
          "value": "1"
        },
        "getManagementProxy": {
          "value": "0xB4836f562561fc62CB95d4bbF1959665a9564f0A"
        },
        "isManagementProxy": {
          "value": false
        },
        "canManage": {
          "value": false
        },
        "getManagerForCount": {
          "value": "0"
        },
        "getSpawnProxy": {
          "value": "0x0000000000000000000000000000000000000000"
        },
        "isSpawnProxy": {
          "value": false
        },
        "canSpawnAs": {
          "value": false
        },
        "getVotingProxy": {
          "value": "0x841bef0fd5C71d6d0441DD88dC7248571BDabbbb"
        },
        "isVotingProxy": {
          "value": false
        },
        "canVoteAs": {
          "value": false
        },
        "getVotingForCount": {
          "value": "0"
        },
        "getTransferProxy": {
          "value": "0x0000000000000000000000000000000000000000"
        },
        "isTransferProxy": {
          "value": false
        },
        "canTransfer": {
          "value": false
        },
        "getTransferringForCount": {
          "value": "0"
        },
        "isOperator": {
          "value": false
        }
      }
    }
  • Errors in queries:
    query {
      getOwnedPointAtIndex(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9", 
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB", 
        _whose: "0x5A4e20122C4b63F14E3d92a952DF64Aa18895912", 
        _index: 0)
      {
        value
      }
    }
    Error:
    {
      "errors": [
        {
          "message": "Do not know how to serialize a BigInt",
          "locations": [
            {
              "line": 2,
              "column": 3
            }
          ],
          "path": [
            "getOwnedPointAtIndex"
          ],
          "extensions": {
            "code": "INTERNAL_SERVER_ERROR",
            "exception": {
              "stacktrace": [
                "TypeError: Do not know how to serialize a BigInt",
                "    at JSON.stringify (<anonymous>)",
                "    at SelectQueryBuilder.<anonymous> (/media/dfqm8/DATA/work/work/azimuth-watcher-ts/node_modules/src/query-builder/SelectQueryBuilder.ts:2121:57)",
                "    at step (/media/dfqm8/DATA/work/work/azimuth-watcher-ts/node_modules/tslib/tslib.js:193:27)",
                "    at Object.next (/media/dfqm8/DATA/work/work/azimuth-watcher-ts/node_modules/tslib/tslib.js:174:57)",
                ...

@nikugogoi
Copy link
Collaborator Author

nikugogoi commented Apr 12, 2023

GQL Queries (eth_call) for Censures watcher

Query:

query {
  getCensuredByCount(
    blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
    contractAddress: "0x325f68d32BdEe6Ed86E7235ff2480e2A433D6189"
    _who: 6054
  ) {
    value
  }
  getCensuringCount(
    blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
    contractAddress: "0x325f68d32BdEe6Ed86E7235ff2480e2A433D6189"
    _whose: 7584
  ) {
    value
  }
}

Response:

{
  "data": {
    "getCensuredByCount": {
      "value": "0"
    },
    "getCensuringCount": {
      "value": "1"
    }
  }
}

@nikugogoi
Copy link
Collaborator Author

nikugogoi commented Apr 12, 2023

GQL Queries (eth_call) for Claims watcher

Query:

query {
  findClaim (blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9", contractAddress: "0xe7e7f69b34D7d9Bd8d61Fb22C33b22708947971A", _whose: 1967913144, _protocol: "text", _claim: "Shrek is NOT Drek!")   { 
    value
    proof {
      data
    }
  }
}

Response:

{
  "data": {
    "findClaim": {
      "value": 1,
      "proof": null
    }
  }
}

@nikugogoi
Copy link
Collaborator Author

nikugogoi commented Apr 12, 2023

GQL Queries (eth_call) for LinearStarRelease watcher

Query:

query {
  verifyBalance(
    blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
    contractAddress: "0x86cd9cd0992F04231751E3761De45cEceA5d1801"
    _participant: "0xbD396c580d868FBbE4a115DD667E756079880801"
  ) {
    value
  }
  withdrawLimit(
    blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
    contractAddress: "0x86cd9cd0992F04231751E3761De45cEceA5d1801"
    _participant: "0xbD396c580d868FBbE4a115DD667E756079880801"
  ) {
    value
  }
}

Response:

{
  "data": {
    "verifyBalance": {
      "value": true
    },
    "withdrawLimit": {
      "value": 10
    }
  }
}

@nikugogoi
Copy link
Collaborator Author

nikugogoi commented Apr 12, 2023

GQL Queries (eth_call) for ConditionalStarRelease watcher

Query:

query {
  withdrawLimit(
    blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
    contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
    _participant: "0x7F0584938E649061e80e45cF88E6d8dDDb22f2aB"
    _batch: 2
  ) {
    value
  }

  verifyBalance(
    contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
    blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
    _participant: "0x7F0584938E649061e80e45cF88E6d8dDDb22f2aB"
  ) {
    value
  }

  getBatch(
    contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
    blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
    _participant: "0x8DAc7ae78E64D167FcCE71e7904943c2e71523ed"
    _batch: 2
  ) {
    value
  }

  getWithdrawnFromBatch(
    contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
    blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
    _participant: "0x8DAc7ae78E64D167FcCE71e7904943c2e71523ed"
    _batch: 2
  ) {
    value
  }

  hasForfeitedBatch(
    contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
    blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
    _participant: "0x8DAc7ae78E64D167FcCE71e7904943c2e71523ed"
    _batch: 2
  ) {
    value
  }
}

Response:

{
  "data": {
    "withdrawLimit": {
      "value": 0
    },
    "verifyBalance": {
      "value": true
    },
    "getBatch": {
      "value": 21
    },
    "getWithdrawnFromBatch": {
      "value": 21
    },
    "hasForfeitedBatch": {
      "value": false
    }
  }
}

@nikugogoi
Copy link
Collaborator Author

nikugogoi commented Apr 12, 2023

GQL Queries (eth_call) for Polls watcher

Query:

query {
  getUpgradeProposals(
    blockHash: "0xeaf611fabbe604932d36b97c89955c091e9582e292b741ebf144962b9ff5c271"
    contractAddress: "0x7fEcaB617c868Bb5996d99D95200D2Fa708218e4"
  ) {
    value
    proof {
      data
    }
  }
  getUpgradeProposalCount(
    blockHash: "0xeaf611fabbe604932d36b97c89955c091e9582e292b741ebf144962b9ff5c271"
    contractAddress: "0x7fEcaB617c868Bb5996d99D95200D2Fa708218e4"
  ) {
    value
    proof {
      data
    }
  }
  getDocumentProposals(
    blockHash: "0xeaf611fabbe604932d36b97c89955c091e9582e292b741ebf144962b9ff5c271"
    contractAddress: "0x7fEcaB617c868Bb5996d99D95200D2Fa708218e4"
  ) {
    value
    proof {
      data
    }
  }
  getDocumentProposalCount(
    blockHash: "0xeaf611fabbe604932d36b97c89955c091e9582e292b741ebf144962b9ff5c271"
    contractAddress: "0x7fEcaB617c868Bb5996d99D95200D2Fa708218e4"
  ) {
    value
    proof {
      data
    }
  }
  getDocumentMajorities(
    blockHash: "0xeaf611fabbe604932d36b97c89955c091e9582e292b741ebf144962b9ff5c271"
    contractAddress: "0x7fEcaB617c868Bb5996d99D95200D2Fa708218e4"
  ) {
    value
    proof {
      data
    }
  }
  hasVotedOnDocumentPoll (
    blockHash: "0xeaf611fabbe604932d36b97c89955c091e9582e292b741ebf144962b9ff5c271",     
    contractAddress: "0x7fEcaB617c868Bb5996d99D95200D2Fa708218e4"
    _galaxy: 1
    _proposal: "0x00000000000000000000000000000000000000000000000000000000000000e0"
  ){
    value
  }
  hasVotedOnUpgradePoll(
    blockHash: "0xeaf611fabbe604932d36b97c89955c091e9582e292b741ebf144962b9ff5c271",     
    contractAddress: "0x7fEcaB617c868Bb5996d99D95200D2Fa708218e4"
    _galaxy: 1
    _proposal: "0x460e497744f41e80bcb0d143ee3aca56f25f5e52"
  ){
    value
  }
}

Response:

{
  "data": {
    "getUpgradeProposals": {
      "value": ["0x9ef27de616154FF8B38893C59522b69c7Ba8A81c", "0xa5b6109AD2D35191b3BC32C00e4526bE56Fe321F", "0x33EeCbf908478C10614626A9D304bfe18B78DD73"],
      "proof": null
    },
    "getUpgradeProposalCount": {
      "value": "3",
      "proof": null
    },
    "getDocumentProposals": {
      "value": ["0x1234567890000000000000000000000000000000000000000000002019010900", "0xcb1f81e42b5e75f000f94fc71a3ea70cab4bfc6f236b91e717f1b9516e5596b5", "0x0000000000000000000000000000000000000000000000000000000000000060", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000e0", "0x7e825a1e9ee9d3b11e07b43aaa6d086e43f22c97b4b95a76299e3ead4cabb2a2"],
      "proof": null
    },
    "getDocumentProposalCount": {
      "value": "6",
      "proof": null
    },
    "getDocumentMajorities": {
      "value": ["0xcb1f81e42b5e75f000f94fc71a3ea70cab4bfc6f236b91e717f1b9516e5596b5", "0x0000000000000000000000000000000000000000000000000000000000000060", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000e0", "0x7e825a1e9ee9d3b11e07b43aaa6d086e43f22c97b4b95a76299e3ead4cabb2a2"],
      "proof": null
    },
    "hasVotedOnDocumentPoll": {
      "value": false
    },
    "hasVotedOnUpgradePoll": {
      "value": false
    }
  }
}

@nikugogoi
Copy link
Collaborator Author

GQL Queries (eth_call) for Ecliptic watcher

Query:

query {
  balanceOf(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
    _owner: "0x4b5E239C1bbb98d44ea23BC9f8eC7584F54096E8"
  ) {
    value
  }
  ownerOf(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
    _tokenId: 1
  ) {
    value
  }
  exists(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
    _tokenId: 1
  ) {
    value
  }
  getApproved(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
    _tokenId: 1
  ) {
    value
  }
  isApprovedForAll(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
    _owner: "0x4b5E239C1bbb98d44ea23BC9f8eC7584F54096E8"
    _operator: "0x4b5E239C1bbb98d44ea23BC9f8eC7584F54096E8"
  ) {
    value
  }
  name(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
  ) {
    value
  }
  symbol(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
  ) {
    value
  }
  tokenURI(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
    _tokenId: 1
  ) {
    value
  }
  getSpawnLimit(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
    _point: 1
    _time: 1
  ) {
    value
  }
  canEscapeTo(
    blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
    contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
    _point: 1
    _sponsor: 1
  ) {
    value
  }
}

Response:

{
  "data": {
    "balanceOf": {
      "value": "1"
    },
    "ownerOf": {
      "value": "0x4b5E239C1bbb98d44ea23BC9f8eC7584F54096E8"
    },
    "exists": {
      "value": true
    },
    "getApproved": {
      "value": "0x0000000000000000000000000000000000000000"
    },
    "isApprovedForAll": {
      "value": false
    },
    "name": {
      "value": "Azimuth Points"
    },
    "symbol": {
      "value": "AZP"
    },
    "tokenURI": {
      "value": "https://azimuth.network/erc721/0000000001.json"
    },
    "getSpawnLimit": {
      "value": 255
    },
    "canEscapeTo": {
      "value": false
    }
  }
}

@nikugogoi
Copy link
Collaborator Author

GQL Queries (eth_call) for DelegatedSending watcher

  • Query:
    query {
      canSend(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0xf6b461fE1aD4bd2ce25B23Fe0aff2ac19B3dFA76"
        _as: 1
        _point: 1
      ) {
        value
      }
      canReceive(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0xf6b461fE1aD4bd2ce25B23Fe0aff2ac19B3dFA76"
        _recipient: "0x740D6d741711163D3FcacECF1F11b8679A7C7964"
      ) {
        value
      }
    }
    Response:
    {
      "data": {
        "canSend": {
          "value": false
        },
        "canReceive": {
          "value": true
        }
      }
    }
  • Errors in query:
    query {
      getPool(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0xf6b461fE1aD4bd2ce25B23Fe0aff2ac19B3dFA76"
        _point: 0
      ) {
        value
      }
    }
    Error:
    {
      "errors": [
        {
          "message": "missing revert data in call exception; Transaction reverted without a reason string [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ] (data=\"0x\", transaction={\"to\":\"0xf6b461fE1aD4bd2ce25B23Fe0aff2ac19B3dFA76\",\"data\":\"0x9da46ee30000000000000000000000000000000000000000000000000000000000000000\",\"accessList\":null}, error={\"reason\":\"processing response error\",\"code\":\"SERVER_ERROR\",\"body\":\"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"id\\\":56,\\\"error\\\":{\\\"code\\\":-32000,\\\"message\\\":\\\"execution reverted\\\"}}\\n\",\"error\":{\"code\":-32000},\"requestBody\":\"{\\\"method\\\":\\\"eth_call\\\",\\\"params\\\":[{\\\"to\\\":\\\"0xf6b461fe1ad4bd2ce25b23fe0aff2ac19b3dfa76\\\",\\\"data\\\":\\\"0x9da46ee30000000000000000000000000000000000000000000000000000000000000000\\\"},\\\"0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9\\\"],\\\"id\\\":56,\\\"jsonrpc\\\":\\\"2.0\\\"}\",\"requestMethod\":\"POST\",\"url\":\"http://192.168.15.105:8182\"}, code=CALL_EXCEPTION, version=providers/5.7.2)",
          "locations": [
            {
              "line": 12,
              "column": 3
            }
          ],
          "path": [
            "getPool"
          ],
          "extensions": {
            "code": "INTERNAL_SERVER_ERROR",
            "exception": {
              "reason": "missing revert data in call exception; Transaction reverted without a reason string",
              "code": "CALL_EXCEPTION",
              "data": "0x",
              "transaction": {
                "to": "0xf6b461fE1aD4bd2ce25B23Fe0aff2ac19B3dFA76",
                "data": "0x9da46ee30000000000000000000000000000000000000000000000000000000000000000",
                "accessList": null
              },
              "error": {
                "reason": "processing response error",
                "code": "SERVER_ERROR",
                "body": "{\"jsonrpc\":\"2.0\",\"id\":56,\"error\":{\"code\":-32000,\"message\":\"execution reverted\"}}\n",
                "error": {
                  "code": -32000
                },
                "requestBody": "{\"method\":\"eth_call\",\"params\":[{\"to\":\"0xf6b461fe1ad4bd2ce25b23fe0aff2ac19b3dfa76\",\"data\":\"0x9da46ee30000000000000000000000000000000000000000000000000000000000000000\"},\"0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9\"],\"id\":56,\"jsonrpc\":\"2.0\"}",
                "requestMethod": "POST",
                "url": "http://192.168.15.105:8182"
              },
              "stacktrace": [
                "Error: missing revert data in call exception; Transaction reverted without a reason string [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ] (data=\"0x\", transaction={\"to\":\"0xf6b461fE1aD4bd2ce25B23Fe0aff2ac19B3dFA76\",\"data\":\"0x9da46ee30000000000000000000000000000000000000000000000000000000000000000\",\"accessList\":null}, error={\"reason\":\"processing response error\",\"code\":\"SERVER_ERROR\",\"body\":\"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"id\\\":56,\\\"error\\\":{\\\"code\\\":-32000,\\\"message\\\":\\\"execution reverted\\\"}}\\n\",\"error\":{\"code\":-32000},\"requestBody\":\"{\\\"method\\\":\\\"eth_call\\\",\\\"params\\\":[{\\\"to\\\":\\\"0xf6b461fe1ad4bd2ce25b23fe0aff2ac19b3dfa76\\\",\\\"data\\\":\\\"0x9da46ee30000000000000000000000000000000000000000000000000000000000000000\\\"},\\\"0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9\\\"],\\\"id\\\":56,\\\"jsonrpc\\\":\\\"2.0\\\"}\",\"requestMethod\":\"POST\",\"url\":\"http://192.168.15.105:8182\"}, code=CALL_EXCEPTION, version=providers/5.7.2)",
                "    at Logger.makeError (/media/dfqm8/DATA/work/work/azimuth-watcher-ts/node_modules/@ethersproject/logger/src.ts/index.ts:269:28)"
                ...

@nikugogoi
Copy link
Collaborator Author

GQL Queries of array return types (eth_call) for Azimuth watcher which were previously unhandled

  • Query:
    query {
      getSponsoring(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _sponsor: 0
      ) {
        value
      }
      getSpawned(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value
      }
      getEscapeRequests(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _sponsor: 0
      ) {
        value
      }
      getOwnedPoints(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _whose: "0x5A4e20122C4b63F14E3d92a952DF64Aa18895912"
      ) {
        value
      }
      getManagerFor(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      getSpawningFor(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      getVotingFor(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
      getTransferringFor(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _proxy: "0xe314f46483d7302854Ae5a2873f11C87a6d05953"
      ) {
        value
      }
    }
  • Response:
    {
      "data": {
        "getSponsoring": {
          "value": ["0", "256", "512", "768", "1024", "4608", "1280"]
        },
        "getSpawned": {
           "value": ["257", "513", "769", "1025", "1281", "1537", "1793", "2049", "2305", "2561", "2817", "3073", "3329", "3585", "3841", "4097", "4353", "4609", "4865", "5121", "5377", "5633", "5889", "6145", "6401", "6657", "6913", "7169", "7425", "7681", "7937", "8193", "8449", "8705", "8961", "9217", "9473", "9729", "9985", "10241", "10497", "10753", "11009", "11265", "11521", "11777", "12033", "12289", "12545", "12801", "13057", "13313", "13569", "13825", "14081", "14337", "14593", "14849", "15105", "15361", "15617", "15873", "16129", "16385", "16641", "16897", "17153", "17409", "17665", "17921", "18177", "18433", "18689", "18945", "19201", "19457", "19713", "19969", "20225", "20481", "20737", "20993", "21249", "21505", "21761", "22017", "22273", "22529", "22785", "23041", "23297", "23553", "23809", "24065", "24321", "24577", "24833", "25089", "25345", "25601", "25857", "26113", "26369", "26625", "26881", "27137", "27393", "27649", "27905", "28161", "28417", "28673", "28929", "29185", "29441", "29697", "29953", "30209", "30465", "30721", "30977", "31233", "31489", "31745", "32001", "32257", "32513", "32769", "33025", "33281", "33537", "33793", "34049", "34305", "34561", "34817", "35073", "35329", "35585", "35841", "36097", "36353", "36609", "36865", "37121", "37377", "37633", "37889", "38145", "38401", "38657", "38913", "39169", "39425", "39681", "39937", "40193", "40449", "40705", "40961", "41217", "41473", "41729", "41985", "42241", "42497", "42753", "43009", "43265", "43521", "43777", "44033", "44289", "44545", "44801", "45057", "45313", "45569", "45825", "46081", "46337", "46593", "46849", "47105", "47361", "47617", "47873", "48129", "48385", "48641", "48897", "49153", "49409", "49665", "49921", "50177", "50433", "50689", "50945", "51201", "51457", "51713", "51969", "52225", "52481", "52737", "52993", "53249", "53505", "53761", "54017", "54273", "54529", "54785", "55041", "55297", "55553", "55809", "56065", "56321", "56577", "56833", "57089", "57345", "57601", "57857", "58113", "58369", "58625", "58881", "59137", "59393", "59649", "59905", "60161", "60417", "60673", "60929", "61185", "61441", "61697", "61953", "62209", "62465", "62721", "62977", "63233", "63489", "63745", "64001", "64257", "64513", "64769", "65025", "65281"]
        },
        "getEscapeRequests": {
          "value": ["65432"]
        },
        "getOwnedPoints": {
          "value": ["38405376"]
        },
        "getManagerFor": {
          "value": []
        },
        "getSpawningFor": {
          "value": []
        },
        "getVotingFor": {
          "value": []
        },
        "getTransferringFor": {
          "value": []
        }
      }
    }

@nikugogoi
Copy link
Collaborator Author

nikugogoi commented Apr 20, 2023

GQL Queries of array return types (eth_call) for Censures watcher which were previously unhandled

  • Query:
    query {
      getCensuring(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x325f68d32BdEe6Ed86E7235ff2480e2A433D6189"
        _whose: 7584
      ) {
        value
      }
      getCensuredBy(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x325f68d32BdEe6Ed86E7235ff2480e2A433D6189"
        _who: 6054
      ) {
        value
      }
    }
  • Response:
    {
      "data": {
        "getCensuring": {
          "value": ["2910133664"]
        },
        "getCensuredBy": {
          "value": []
        }
      }
    }

@nikugogoi
Copy link
Collaborator Author

GQL Queries of array return types (eth_call) for ConditionalStarRelease watcher which were previously unhandled

  • Query:
    query {
      getBatches(
        contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        _participant: "0x8DAc7ae78E64D167FcCE71e7904943c2e71523ed"
      ) {
        value
      }
    
      getWithdrawn(
        contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        _participant: "0x8DAc7ae78E64D167FcCE71e7904943c2e71523ed"
      ) {
        value
      }
      getForfeited(
        contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        _participant: "0x8DAc7ae78E64D167FcCE71e7904943c2e71523ed"
      ) {
        value
      }
      getRemainingStars(
        contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        _participant: "0x8DAc7ae78E64D167FcCE71e7904943c2e71523ed"
      ) {
        value
      }
    }
  • Response:
    {
      "data": {
        "getBatches": {
          "value": [22, 21, 21]
        },
        "getWithdrawn": {
          "value": [22, 21, 21]
        },
        "getForfeited": {
          "value": [false, false, false]
        },
        "getRemainingStars": {
          "value": []
        }
      }
    }

@nikugogoi
Copy link
Collaborator Author

GQL Queries of array return types (eth_call) for LinearStarRelease watcher which were previously unhandled

  • Query:
    query {
      getRemainingStars(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x86cd9cd0992F04231751E3761De45cEceA5d1801"
        _participant: "0xbD396c580d868FBbE4a115DD667E756079880801"
      ){
        value
      }
    }
  • Response:
    {
      "data": {
        "getRemainingStars": {
          "value": [42665, 42409, 42153, 41897, 41641, 41385, 41129, 40873, 40617, 40361, 40105, 39849, 39593, 39337]
        }
      }
    }

@nikugogoi
Copy link
Collaborator Author

GQL Query of multiple return type (eth_call) for Azimuth watcher which was previously unhandled

  • Query:
    query {
      getKeys(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
        contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
        _point: 1
      ) {
        value {
          value0
          value1
          value2
          value3
        }
        proof {
          data
        }
      }
    }
  • Response:
    {
      "data": {
        "getKeys": {
          "value": {
            "value0": "0x0000000000000000000000000000000000000000000000000000000000000000",
            "value1": "0x0000000000000000000000000000000000000000000000000000000000000000",
            "value2": "0",
            "value3": "2"
          },
          "proof": null
        }
      }
    }

@nikugogoi
Copy link
Collaborator Author

nikugogoi commented Apr 26, 2023

GQL Query of multiple return type (eth_call) for ConditionalStarRelease watcher which was previously unhandled

  • Query:
    query {
      getConditionsState(
        blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9",
        contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
      ) {
        value {
          value0
          value1
          value2
          value3
        }
        proof {
          data
        }
      }
    }
  • Response:
    {
      "data": {
        "getConditionsState": {
          "value": {
            "value0": ["0x0000000000000000000000000000000000000000000000000000000000000060", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000e0"],
            "value1": ["1516089540", "1547625540", "1579161540"],
            "value2": ["1547625540", "1579161540", "1610783940"],
            "value3": ["1547084192", "1578681599", "1610415376"]
          },
          "proof": null
        }
      }
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants