All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- bumped tagstore dependency to v25.01.1; fixing best cluster tag queries.
- Updated to v25.01.0 of the tagstore only works with newer versions than this (Resync of database needed)
- tagstore is now a direct lib dependency, no duplication of query code anymore
- gs-rest now supports keyspace auto discovery (using the latest complete (summary stats has data) ks in cassandra)
- now uses uv to package and dep. mgmt, ruff for linting and formatting
- tests now use testcontainers for more robust/quicker testing setup
- Return concepts with tags
- added parameters
include_nonstandard_io
andinclude_io_index
for endpoints/{currency}/txs/{tx_hash}
and/{currency}/txs/{tx_hash}/{io}
(by default false)
- added parameter
include_actors
for endpoint/{currency}/addresses/{address}/entity
(by default true)
- missing eth/tron address sub-transaction when paging
- missing bulk-endpoints list_token_txs, get_spent_in_txs, get_sending_txs, get_block_by_date, get_tag_summary_by_address
- added endpoiont
/{currency}/addresses/{address}/tag_summary
to fetch a condensed summary of tags on an address - added endpoint
/{currency}/block_by_date/{date}
to get nearest blocks given a timestamp - syntax to load token transactions and traces via the
/{currency}/txs/{tx_hash}
endpoint. - consistent availability of include_actor on all address related endpoints (to improve performance)
- missing links between two addresses on rare occasions (when there was not net outflow for one address).
- unhandled error on bad page token in tags endpoint
- added parameters
min_height
,max_height
andorder
tolist_address_links
andlist_entity_links
to limit retrieved txs.
- Listing txs between addresses (list_address_txs)
- Listing txs between addresses (list_address_txs)
- fixed tron address search
- address search in account model currencies
- added parameter
order
tolist_address_txs
andlist_entity_txs
to control sort order of returned list of transactions
- Incomplete retrieval of address transactions
- support flat block transaction table in eth keyspaces
- patched documentation
- openapi spec fix
- remove generation of graphsense-python
- add volume to ratelimiting-redis
- mount openapi as dir
- added support for the tron currency and its tokens
- config option to configure read consistency level
- ordering issues on fetching transactions on address/entity and neighbor level
- added new endpoints to query tx-graph (dependencies between transactions in utxo currencies /{currency}/txs/{tx_hash}/spent_in and /{currency}/txs/{tx_hash}/spending)
- added support for missing current exchange rates (for sync states before exchange rates where avail.)
- changed minimal search key length to 2 (only searches tags and actors)
- changed keyspaces names for testing to avoid conflicts
- fixed propagating unknown exception to the user (#92)
- fixed linting in github action (94)
- fixed exception on unknown currency (93)
- fix new du v1 address not found in /address/{addr}/entity endpoint
- reenabled returning logos from coingecko
- fix search for tx hashes with 0x prefix (closes #4)
- fix search of all zero tx hashes or addresses
- add compatibilty to new tx_reference field in eth-like keyspaces #8
- concurrency limit for some bulk requests to avoid overloading db
- Support for actors to collect tags under the umbrella of their real world controller
- new endpoints /tags/actors/{actor_id} - get actor by id
- new endpoint /tags/actors/{actor_id}/tags - list of tags belonging to the actor
- support search for any category neighbor #329
- added parameters
min_height
/max_height
to /addresses/{address}/txs and /entities/{entity}/txs endpoints to allow for range queries - added flag
include_actors
to /entities/{entity} and /entities/{entity}/neighbors endpoints - added flag
exclude_best_address_tag
to /entities/{entity} and /entities/{entity}/neighbors endpoints to omit fetching the best address tag
- Token Support for Ethereum stable coin tokens (WETH, USDT, USDC)
- new API Endpoints /{currency}/token_txs/{tx_hash} to receive token transactions per hash
- new Endpoint /{currency}/supported_tokens to list supported tokens and their parameters.
- Entity and Address txs endpoints now return token transactions
- Entities contain token balances, and other token related aggregated statistics
- Ethereum addresses now contain a field is_contract
- Neighbor endpoints return aggregated token statistics
- Rates endpoint returns rates for token currencies
- Fixed handling of contract creation transactions (no to_address)
- Entity tag tests
- Entity neighbor search limited to max. 5 min
- Fixed selection of best address tag
- Improve error message on bad paging state value
- Raise not found error for retrieving entity of non existing eth address
- Performance improvements for entity neighbor search
- Performance improvements for
get_rates
- Improve entity tag resolution.
only_ids
filter forlist_address_neighbors
- address status field (possible status: clean, dirty, new)
- fetch address status from special delta updater tables
direction
tolist_address_txs
andlist_entity_txs
to filter transactions whether they are incoming or outgoing
- fetch last synced block from delta updater tables for currency statistics
- show specific error message of eth address with no external txs
- add port to config template
- fix
best_address_tag
output in bulk - improve bulk error message
- enforce max page size for
list_address_tags_by_entity
- improve tagstore paging (by limit and offset)
- improve
search_neighbors
by entities and addresses - fix fetching best address tag for single address clusters and multiple tags
- fix display of labels in neighbor list
- pass context to plugins
- fix error wrapping multiple tagstores
Also see the changelog of the OpenAPI specification for any changes to the API.
- Option to run tests in docker
- add pool_recycle tagstore parameter
- make type errors run in "internal server error"
- majority vote on entity tag selection , #75
- fix sorting labels in search result by search term similarity
- handle empty arguments in bulk
- hide tagpack uri for private tagpacks
- add logging config and SMTP logging
- plugin architecture to hook into request processing
- integrate external Tagstores on top of PostgreSQL
- config parameter for filtering private tags by HTTP header
- fuzzy label search
- add number of tagged addresses to statistics
- add
is_cluster_definer
tag property - add
root_address
entity property
- improved bulk retrieval error messages
- retrieve just one tag per entity
- fix
list_entity_links
- catch NaNs from Cassandra
- tag retrieval from Cassandra
- Service for requesting data from other endpoints in bulk (CSV and JSON)
- Redesign algorithm for retrieving the transactions between two addresses/entities
- Automatically reconnect to DB
- Listing entity transactions
- Endpoint for getting inputs/outputs of a transaction
- Minor performance improvements
- Bux fixes
- Webserver from Flask to AIOHttp to support asynchronous request handling
- Tag response model
- Consider entity tags only in deep search for entity neighbors
- Tag coherence
- CSV variants of routes in favour of new bulk interface
- Retrieving arbitrary lists of things (list_entities, list_addresses, list_blocks, list_txs)
- Metadata from stats endpoint response
- Ethereum support
- Bulk retrieval endpoints for addresses and entities
- Entity can have tags on the entity and the address level. Latter are the aggregated tags from contained addresses.
- Fetch entity/address with tags optionally
- Calculate tag coherence optionally
Complete rewrite on top of a Connexion server stub generated through OpenAPI Generator given the Graphsense OpenAPI specification.
- CSV variants of entity/addresses, address/txs and address/links
- integration tests of services against cassandra mockup db instance
- check keyspace existence on startup
- database layer abstraction
- changed instance config format to YAML
- changed interface of entity neighbor search endpoint
- changed response of addresses/links endpoint
- authentication (to be handled by a proxy)
- calculate tag coherence of entities
- add targets filter for neighbors endpoint, fix #33
- CSV download is streamed
- Updated Docker base image
- Added gunicorn config file
- Fix swagger UI behind reverse proxy (ProxyFix from werkzeug), fix #24
- New "search neighbors" options
- List of transactions between one address and its neighbor
- More information from
stats
call
- Improved and documented handling of config files
- Harmonized logging in user db (now via app_context logger)
tags
namespace replacedlabels
and taxonomy integration
- Checks on input values
- Major restructuring and refactoring of API
- Use Gunicorn instead of uWSGI
config.json
contains not only currencies, but alsotagpacks
keyspace- Currency statistics are now available at
<api_root>/stats
(previously at<api_root>/
)
- Query label and label search (for suggestions)
- Unit tests
- Swagger documentation
- JWT Authentication
- Number of labels in statistics
start_develop.sh
- CSV export of txs, tags and neighbors
- Egonet calls
- Adjustments for new dashboard implementation
- Removed
srcCategory
/dstCategory
in address/cluster relations - Fixed exchange rates bug (EUR/USD swapped)
- Run Docker container as non-root user
- Added primitive tests
- Reimplementation using Python/Flask
- Summary statistics of available currencies in root path
- Support for multiple currencies (e.g.,
localhost:9000/btc/...
) - Transactions call (random samples)
- Blocks call (random samples)
- Exchange rates call