All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Added the REST API with some basic routes that will come in handy. Small bug fixes and changes.
- Rest API with 5 basic routes that will come in handy. 90bef0e,f2a39d6,d875be2
- Some basic documentation for the API and modified the existing docs. b2c20d2
- Database queries for the API ( althoguh they can be used for any other app or service if needed ) d875be2, f2a39d6
- Some table fixes, the msg_types would insert the empty string because when the make slice function was called by the accident it added the empty string instead of just allocating the size of the slice. d875be2
- The validator signing has the column name addresses for the signed validators. While this is not a bug it wasn't intended. 90bef0e
Mostly some fixes. The live should work now there was a bug with the RPC client when making a request to the last block height recorded. The retry worker could sometimes send the data to the closed channel. Now the query operator calls the wg.Done functions directly. It should work now but there might be some other bugs.
- There was a bug with the RPC client when making a request to the last block height recorded. f44b3f3
- The live process was not working because the RPC client was not sending the height parameter when making a request to the last block height recorded. f44b3f3
- Moved the database to the pkgs directory f44b3f3
This is officially first working version of the indexer. The historic version was successfuly tested on the real data. It took about 2m30s on 2vCPU for 10K blocks and about 1m30s on 4vCPU for 10K blocks. The live version was not tested on the real data yet mostly because there is active pullic Gnoland testnet. The live will be tested properly on the testnet 9 when it is released. So the index will probably work but expect some bugs. Some features are still missing and this is still a work in progress.
- Added a GitHub Actions workflow to build the indexer and release it as a binary and docker image 5f20967
- Added docker file and docker compose 18129be, 5f20967
- Docs are now available 18129be, 5f20967
- The cmd setup can now add tables to already existing database 5f20967
- There were some bugs related to poinetrs if the value was nil for block responsers related to validator signing c7f229a
The indexer had some bug fixes and some small improvments. The integration test was technically successful but there seems there is some kind of bug with the indexer. The indexer is not fully tested yet only the historic process has been tested. But not any runs were made on the real data. You can try to run this version on the real data but be advised it is not fully tested and might not work as expected.
- Makefile has been added. If you feel advanterous you can try to build the indexer with greentea garbage collection. 9fdad03
- Apperently the previous versions didn't had the method to insert the data for the table address_tx. Now every transaction that was executed can be tied to each address that was involved in the transaction. 9fdad03, 6dd764
- The CLI for the database setup now has a new command to create a new user for the database and appoint privileges to the user. It can be a reader(for APIs and some other programs that need SELECT privileges) or a writer(example indexer for historical data). c39c1f7
- Added a retry mechanism for the query operator. 900ee4f
- Updated the go version to 1.25.1 b3e02b0
The indexer had some bug fixes and some small improvments. The integration test was technically successful but there seems there is some kind of bug with the indexer. The indexer is not ready for production use.
- When the indexer decodes the data using Amino decoder it unloads the data into a map[string]any, then from there it would make 2 conversions, one for the general data struct and the second for the sql data types. The idea was to have seperated logic for the general data struct and sql types. However at this point the indexer already needs to call the copy from method where the data is again being unloaded into some sort of tuple. So the first conversion was removed. 50ca1f2
- Updated all of the dependencies to the latest version 5370a5c
- Fixed the sql related bugs, added some missing types, switched to pgtype.Numeric for the amount type 8aea191, 2b7ed52,ddfdcc1
- In some instances the pgx data need to be in the pgtype.Array for instance Txs for the block need to be stored into the pgtype.Array. The indexer now uses a generics function to convert the data into the pgtype.Array 2b7ed52
- The chunk end height was incremented by 1 when the indexer started the historic process. This caused the chunks to overlap and the indexer to throw an error about the duplication. The indexer now correctly sets the chunk end height to the max height ddfdcc1
- Fixed a bug where the data processor would ask the address from the regular address cache instead from the validator address cache ddfdcc1
This is a second alpha release although the indexer is not yet ready.
- Updated all of the dependencies to the latest version 5fb6b8d
- Added the generator functions for the integration test d61cfa6, 34a46fa
- Added the synthetic integration test 76e42f6
- Moved some of the code logic to it's own package 9cc12e9, 76e42f6, 9ca2214
This is the first alpha release of the Spectra Gnoland indexer. Technically most of the indexer components are done but it is not tested fully so this version is not recommended for production use.
- CLI for the Indexer
- Config and env loaders
- RPC client with rate limiting
- PGX pool Postgres Client
- Address cache for regular and validator addresses
- Signal hook for graceful shutdown and emergency shutdown
- Amino decoder for the data from the Gnoland Chain
- Major operator/worker pattern for the indexer have been implemented
- Basic database setup
- The indexer is not tested and it is not recommended for production use.
- The setup program only sets the database and ties it to the admin user. This could be bad for security.
- The proto encoding for the events is not tested yet and might not even end in the final release.
- Zstandard compression has been added but it has only been used in some minor test nothing more. For this to work properly a synthetic dataset would need to be created and used to train the dictionary. Alternatively it can be trained on the real data but given that the chain is still in the development stage there is no gurantee it will have enough data to train a good dictionary.