Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

26 Commits

Folders and files

Repository files navigation

creationindex

You run creationindex to answer how accounts come into existence on an Antelope chain: who created each one, and what RAM arrived with it. It follows a Roborovski action stream from the first global sequence, records every eosio::newaccount together with the RAM contributions in its transaction, and serves the results over HTTP under /v1/creationindex/. A configured gift program account adds program views: gifts per program creator, quota use, and returns. The terms are defined in GLOSSARY.md.

Building

Building needs Go 1.25 or later.

make build     # binary at ./creationindex
make install   # go install into GOPATH/bin
make test
make vet

Configuration

Configuration is INI and command-line flags; flags override the file. Copy config.ini.example to config.ini and set:

Key Meaning Default
db-path Pebble database directory ./creationindex.db
http-listen HTTP API TCP address, or none :9480
http-socket HTTP API Unix socket path ending in .sock, or none none
actionstream-source Roborovski actionstream URL (stream://host:port or stream:///path.sock) stream://localhost:9081
program-account Gift program account (gift.vaulta on Vaulta, gift.gm on Jungle 4): its giftrams count as program gifts, the gift stream indexes its actions, and the msig stream indexes eosio.msig proposals with an action it authorizes; when unset, no gift counts as a program gift and both streams stay off none
chain-url Chain API URL that get_endowment reads the program account from with get_account none
log-filter Comma-separated log categories startup,sync,status,http
log-file Also write logs to this file none
debug Log every category false

When a new build changes the storage schema, creationindex refuses to start and logs the database path. Delete that directory and start creationindex again; it replays from seq 1.

API

You query creationindex with GET query parameters, or with a POST JSON body that uses the same names:

curl 'localhost:9480/v1/creationindex/get_creation?account=willsunshine'

The network routes are get_creation, get_creations (by creator or program_creator, oldest first paged with after and limit, or newest first with order=desc paged with before), get_daily (UTC days from and to, at most 366), get_day_creators (one day, ranked, paged with offset and limit), get_creators (creators ranked by creations summed over UTC days from to to, at most 366, paged with offset and limit) and health.

The program routes answer for the configured program-account. get_program_daily gives program gifts per UTC day per program creator, with a histogram of gifted byte sizes. get_quota takes a program_creator and lists each registration from addcreator to rmcreator with its quota changes, suspensions and quota windows, rebuilt with the gift contract's arithmetic. get_program_events lists program events oldest first, or newest first with order=desc, filtered by type (admin, program_gift, return, ram_movement) and program_creator. get_program_proposals lists program proposals oldest first, or newest first with order=desc, filtered by status (open by default, expired, executed, cancelled or all). get_endowment reads the program account's RAM from chain-url and caches it for 10 seconds.

Every field is always present: names are "" when empty, figures the chain does not state are null, and lists are []. Errors return {"error": "..."} with status 400 for a bad parameter and 404 for an unknown account. get_endowment returns 503 when chain-url is unset and 502 when the chain API fails.

Test fixtures

Fixtures in internal/attribution/testdata/ are real stream actions, captured with cmd/capture from a host that serves the actionstream. Start the capture at the transaction's first global sequence and name each transaction to keep:

go run ./cmd/capture -source stream:///ramdisk/vaulta/actionstream.sock -start 368360304285 -out internal/attribution/testdata willsunshine=3efce2e5432e2e1ce595615e19fa245118e6766414022bc935a7a8eebfa79258

It subscribes with the service's eosio filter and writes each named transaction's actions to <name>.jsonl, one stream Action per line. For the gift stream, add -stream gift -program-account gift.gm. For the msig stream, add -stream msig; it subscribes without decoding, as the service does, so its fixtures in internal/program/testdata/ hold raw action data.

Licence

BSD-3-Clause; see LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages