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

User stories #6

Open
pfletcherhill opened this issue Mar 22, 2018 · 19 comments
Open

User stories #6

pfletcherhill opened this issue Mar 22, 2018 · 19 comments

Comments

@pfletcherhill
Copy link
Member

pfletcherhill commented Mar 22, 2018

The goal of this issue is to list out all use-cases for parr, so that we build only useful things. This is meant to serve as a living document of interesting use-cases.

  1. Make a dashboard of personal ethmoji earnings, both over time and cumulative.
  2. See a list of all ethmojis my ethmoji items contributed to.
  3. See a list of all accounts with more than 1000 ETH
@mertcelebi
Copy link
Member

mertcelebi commented Mar 22, 2018

  1. As an extension of first point, having a broad view of the activity for a given account number (probably more useful for smart contracts). For ethmoji, this could be to see amount the contract makes.

@pfletcherhill
Copy link
Member Author

  1. Stream new ethmoji or cryptokitty mintings (or any generic 721).
  2. See a list of all accounts who have transferred tokens to me.
  3. Identify users to airdrop tokens or collectibles to (basically spam 😬)

@mertcelebi
Copy link
Member

mertcelebi commented Mar 22, 2018

  1. Build the social graph of a given account to identify who they interact with (or even who they are)

@pfletcherhill
Copy link
Member Author

  1. Show a graph of new ERC 721 contracts by week (i.e. X axis is time, Y axis is number of newly deployed ERC 721 contracts)

@pfletcherhill
Copy link
Member Author

pfletcherhill commented Apr 10, 2018

{
  "query": {
    "bool": {
      "must": {
        "has_child": {
          "type": "to_transaction",
          "score_mode": "sum",
          "query": {
            "match_all": {}
          }
        }
      },
      "filter": [
        {"term": {"type": "address"}},
        {"term": {"implements.erc20": true}}
      ]
    }
  }
}

@pfletcherhill
Copy link
Member Author

  • Show a list of every ICO that raised more than $1M. This would require adding ETH price to each block and adding a Crowdsale ABI to check addresses on and decode crowdsale-related logs.

@pfletcherhill
Copy link
Member Author

  • Show a list of airdrops and analyze how airdrops differ from ICOs by looking at transaction volume (or another proxy).

@pfletcherhill
Copy link
Member Author

  • Show a list of token staking events and the total amount of staked tokens (by summing the value of all staking events) for a given token.

@pfletcherhill
Copy link
Member Author

  • Show a list of burn events (i.e. transfers to 0x000...) and filter tokens by percentage of the total supply that has been burned.

@pfletcherhill
Copy link
Member Author

@pfletcherhill
Copy link
Member Author

pfletcherhill commented Apr 13, 2018

  • Compare usage of original ERC721, ERC821, and current ERC721 implementations, using transaction volume by time as a proxy for usage. Allow for minimum volume filtering (i.e. show only contracts that have at least 50 transactions).

This buckets by those implementing a given contract, showing the number of transactions for each. @pfletcherhill Is there something more complex to the transaction volume? Like a moving average of daily/weekly transactions? This would require dates attached to transactions

{
  "size": 1,
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "to.implements.erc20": true
          }
        },
        {
          "term": {
            "to.implements.erc721": true
          }
        },
        {
          "term": {
            "to.implements.erc721_original": true
          }
        }
      ],
      "filter": [
        {
          "term": {
            "type": "transaction"
          }
        },
        {
          "term": {
            "to.is_contract": "true"
          }
        }
      ]
    }
  },
  "aggs": {
    "erc20": {
      "filter": {
        "term": {
          "to.implements.erc20": true
        }
      }
    },
    "erc721": {
      "filter": {
        "term": {
          "to.implements.erc721": true
        }
      }
    },
    "erc721_original": {
      "filter": {
        "term": {
          "to.implements.erc721_original": true
        }
      }
    }
  }
}

Link: https://parr.io/editor/c062a01488c2cd95bac76d6714c7aeea4aed1254

@pfletcherhill
Copy link
Member Author

pfletcherhill commented Apr 13, 2018

  • Show a list of NFTs by market cap or at least by the sum of the values of the transactions sent to the contract. Also look into NFTs to see if there are generic auction or trading method signatures we can track for seeing how much each NFT is worth.
{
  "size": 1,
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "type": "transaction"
          }
        },
        {
          "term": {
            "to.is_contract": "true"
          }
        },
        {
          "range": {
            "value": {
              "gt": 0
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "group_by_contract_address": {
      "terms": {
        "field": "to.address.keyword",
        "order": {
          "total_volume": "desc"
        }
      },
      "aggs": {
        "total_volume": {
          "sum": {
            "field": "value"
          }
        }
      }
    }
  }
}

@pfletcherhill
Copy link
Member Author

  • Show a list of all addresses that have held or traded an NFT (or token) to track potential wash trading (i.e. where people trade among themselves to artificially increase transaction volume).

@pfletcherhill
Copy link
Member Author

pfletcherhill commented Apr 13, 2018

  • Filter NFTs by transaction count volume over time.

Option 1 (Aggregation):

{
  "size": 1,
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "type": "transaction"
          }
        },
        {
          "term": {
            "to.is_contract": "true"
          }
        },
        {
          "has_parent": {
            "parent_type": "block",
            "query": {
              "bool": {
                "filter": {
                  "range": {
                    "timestamp": {
                      "gte": "now-1d/d"
                    }
                  }
                }
              }
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "group_by_contract_address": {
      "terms": {
        "field": "to.address.keyword"
      }
    }
  }
}

Options 2 (Using _score):
https://parr.io/editor/fe52950070bae656241329307501ecbabcadf429

@pfletcherhill
Copy link
Member Author

Alerts

  • Alerts will be important for making Parr very useful.
  • Alert a user when specific criteria is met for a given contract
  • Alert a user when criteria is met by a new contract you are not tracking (i.e. a new NFT hits X transaction volume).

@pfletcherhill
Copy link
Member Author

pfletcherhill commented Apr 13, 2018

Show a list of standard Crowdsale compliant contracts: https://parr.io/editor/61208362c2691eefb870f154f01f9e39d2581d01

@tyre
Copy link
Collaborator

tyre commented Apr 13, 2018

@paul should we add that crowdsale contract to defaults? That seems like a pretty common/important one to search against

@pfletcherhill
Copy link
Member Author

@tyre Yeah, doing it right now

@pfletcherhill
Copy link
Member Author

pfletcherhill commented Apr 19, 2018

Show a list of every address that spent more than 100 ETH in the EOS crowdsale (0xd0a6e6c54dbc68db5db3a091b171a77407ff7ccf)
https://parr.io/editor/45f26496b65f3949d4e978153c0c350e79bdbf83

{
  "query": {
    "has_child": {
      "type": "from_transaction",
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "to.address": "0xd0a6e6c54dbc68db5db3a091b171a77407ff7ccf"
              }
            },
            {
              "range": {
                "value.eth": {
                  "gte": 100
                }
              }
            }
          ]
        }
      }
    }
  }
}

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

3 participants