# goals
### immediate
- Provide an open source query engine on top of blockchain data shared thru IPFS.
- By making it open source and extensible, incentivize stakeholders in specific
blockchains to contribute code and pre-populate raw data in IPFS by increasing
reach/usage of their chain
### longer term
- use subgraphs to automatically infer views for protocols/projects. esssentially
providing a bridge between The Graph's graphql style queries (not as good for
analytics) and Dune style SQL analytics (good for analytics but some semantic data
is lost since they simply generate decoded projects using the contract addresses
and ABIs.)
- Given raw chain data, provide extensible ways for protocols to define
custom transform/indexing on it. Each protocol will be able to define an adapter
that maps raw contract addresses into queryable data. Basically like the Graph
but for analytical queries.
# Chain data
Each chain can define a way to bootstrap its data when the program is booted up.
# Config
- Chain-specific config
- RPC url, batch size, etc. etc.
- Shared config
- Partition discovery config
## Partition discovery conf
- `partition_mapping_location` (nullable)
- Where to get the mapping from
### Partition
- data location
- file path, s3 key, ipfs CID
- file format--only parquet for now
- lower/upper
# U256
Since there is no uint256 arrow type, we store them as strings. This way,
all info is preserved in cases where every digit is needed (for example when they
are used as identifiers). In cases where they are treated as numbers,
they can be cast at runtime into decimals.
### Todos
Support Decimal256 for quantities (such as gas limit) from ethereum RPC instead of Float64 which
loses some precision.