howo avatar

How to use postgrest with hivemind

howo

Published: 10 Jun 2025 › Updated: 10 Jun 2025How to use postgrest with hivemind

How to use postgrest with hivemind

image.png

If you haven't been following the recent development with hivemind. We are actively moving away from the python-based webserver to an sql only implementation where the webserver is postgresql itself. This leads to massive performance improvements. In order to do this we use an awfully named tool: Postgrest (note the T at the end)

This means that if you are a developer on hivemind and want to test an endpoint, you will need to do things a tad differently.

Step 1: install postgrest

Head on the official repo and download the version that corresponds to your needs:

https://github.com/PostgREST/postgrest/releases/tag/v12.0.2

Right now we use 12.0.2, but that number may change. You can always check this dockerfile to see if it's any different.

Once you get it it's a simple binary, so just shove that in /usr/bin and you're good to go:

sudo tar -xf postgrest-v12.0.2-linux-static-x64.tar.xz -C /usr/bin
# check if it was correctly installed
postgrest --version

Step 2: launching the server

Hivemind provides a handy script for that: https://gitlab.syncad.com/hive/hivemind/-/blob/develop/scripts/start_postgrest.sh?ref_type=heads

just execute:

/home/howo/hivemind/scripts/start_postgrest.sh --postgres-url=postgresql://postgres:@localhost:5432/haf_block_log
03/Jun/2025:14:37:42 +0900: Starting PostgREST 12.0.2...
03/Jun/2025:14:37:42 +0900: Attempting to connect to the database...
03/Jun/2025:14:37:42 +0900: Connection successful
03/Jun/2025:14:37:42 +0900: Admin server listening on port 3001
03/Jun/2025:14:37:42 +0900: Listening on port 8080
03/Jun/2025:14:37:42 +0900: Config reloaded
03/Jun/2025:14:37:42 +0900: Listening for notifications on the pgrst channel
03/Jun/2025:14:37:42 +0900: Schema cache loaded

Step 3: querying hivemind

At this point you're good to go ! But you'll notice that if you try to call an endpoint:

curl 'http://localhost:8080' --compressed -X POST  -H 'Content-Type: application/json' --data-raw '{"id":6,"jsonrpc":"2.0","method":"bridge.account_notifications","params":{"account":"howo","limit":1}}' | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   110    0     2  100   108   1831  98901 --:--:-- --:--:-- --:--:--  107k
{}

You get an empty response, that's because in order to support the hivemind format and route queries to the correct SQL function, there's a router/preprocessor, (you can read about it here: https://gitlab.syncad.com/hive/hivemind/-/blob/develop/hive/db/sql_scripts/postgrest/home.sql

So you should instead call http://localhost:8080/rpc/home :

curl 'http://localhost:8080/rpc/home'  -X POST   -H 'Content-Type: application/json'   --data-raw '{"id":6,"jsonrpc":"2.0","method":"bridge.account_notifications","params":{"account":"gtg","limit":1}}' | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   381    0   280  100   101   2552    920 --:--:-- --:--:-- --:--:--  3495
{
  "id": "6",
  "result": [
    {
      "id": 2111608,
      "msg": "@liondani voted on your post ($0.27)",
      "url": "@gtg/re-chitty-a-balanced-voting-system-is-impossible-with-current-witness-s-payouts-20160915t141551322z",
      "date": "2016-09-15T18:55:30",
      "type": "vote",
      "score": 50
    }
  ],
  "jsonrpc": "2.0"
}

And voilà !

That's it for this little tutorial, hope you found it useful :)

Leave How to use postgrest with hivemind to:

Written by

Software engineer by day, Blockchain developer by night. witness @howo

Read more #tutorial posts


Best Posts From howo

We have not curated any of howo's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From howo