https://Grinnode.live Public GRIN API and sync service

A high-available public GRIN API cluster for the Grin community.

Disclaimer:
Please consider the API as “beta” as of now, I am also working on the implementation of API v2 for the upcoming hard fork in January 2020.

Use cases:

  1. Wallets which need a full node
    I have tested it with some of the available GRIN wallets:

grin-wallet 2.1.0 - can be used, no known problems
grin-wallet 3.0.0-beta.1 - can be used, no known problems
grin++ - not tested
Wallet 713 - not tested
Wimble - not tested

  1. Add grinnode.live to your Grin node for a fast sync

To Connect your GRIN Node use:
_$ cat grin-server.toml […] peers_preferred = [“213.239.215.236:3414”]

or use FQDN
_$ cat grin-server.toml […] peers_preferred = [“grinnode.live:3414”]

  1. GRIN Blockexplorer
    When hosting a Blockexplorer you can query the grinnode.live cluster using the documented GRIN API. (some commands are restricted to allowed users only, not allowed due to high load on the cluster or rate limited)

  2. Public API querys
    An HTTP(s) possibility to query the GRIN API

query first GRIN Block

https://grinnode.live/v1/blocks/1

{
“header”: {
“hash”: “000000bf7e67a6c9323f26e1eb26fa73f73640349710ea5a9f589c12a812a4b5”,
“version”: 1,
“height”: 1,
“previous”: “40adad0aec27797b48840aa9e00472015c21baea118ce7a2ff1a82c0f8f5bf82”,
“prev_root”: “5671fb28c1509e422d9b8f60ce90e9ac9041e3b9febd34a79c03048844ed2733”,
“timestamp”: “2019-01-15T17:38:05+00:00”,
“output_root”: “a53cc645b695596f5437c15af883336f12d72a5adcd9dcbc83a0cca17f7ce820”,
“range_proof_root”: “28e593563af806a46f969308c08163018783f3385bd4c89fe39ed8d345a311a0”,
“kernel_root”: “b27433269e3e898c281e3673c5c44b47c6f398b396b340a8680f6efe4d7c48e6”,
“nonce”: 8433034053148818684,
“edge_bits”: 29,
“cuckoo_solution”: [

  • We try to keep all nodes which are part of the cluster as archive-nodes.

  • Other query methods like “curl” or Python can also be used.

  • CORS is disabled as of December 2019 so you can also start using it for your Frontend or some other GRIN applications.

Rate Limits
Public: One request per 10 seconds (no hard rate limit set yet)
If you need more requests per second of a white listing please contact me directly.

How is the High-Availability archived at grinnode.live?
We are using multiple Grin nodes across different data centers which are always synced to the Grin mainnet. All nodes are connected to a central configuration management to keep all servers updated and make the administration of such a cluster easy. We also added a private Meshnet between the nodes in order to access and transfer data in a secure way. Furthermore we are running an HAProxy in front of the HA-IP “213.239.215.236” address and grinnode.live domain in order to load balance all traffic accordingly to our reverse-proxies which then send the requests to a free Grinnode Server.

Please try to use the FQDN “grinnode.live” instead of the Ha-IP address if possible. This makes it easy for us to switch to new infrastructure if needed.

Problems:
As of now we are not providing any GRIN floonet nodes or APIs.
Please report problems or features you want using the Github page or here.

More information

4 Likes

Looks awesome. Do you feel that your uptime is sufficient to recommend that new users point their wallets to your cluster for their first-time experience?

Looks awesome. Do you feel that your uptime is sufficient to recommend that new users point their wallets to your cluster for their first-time experience?

Yes.
As of now we can handle a lot of connections.

I would not recommend hard code the IP address at this time into some program if you have to hard code please use the FQDN.

Update: Some Grin nodes are ready for API v2.
Beginning of Jan 2010 we will perform more tests prior to the Grin hardfork

2 Likes

High Available (HA) Grin-Node Sync statistics
(update 13.12.2019)
Over the last few days more and more Nodes are connected through the HA-IP address.

Selection_001

How to connect your node to our Grin-Node Servers see:

1 Like

Update: We enabled the API v2 on grinnode.live.

example

curl -d ‘{“id”:“json”,“method”:“get_status”,“params”:{} }’ -o - https://grinnode.live/v2/owner

answer

{
  "id": "json",
  "result": {
    "Ok": {
      "connections": 121,
      "protocol_version": 2,
      "sync_status": "no_sync",
      "tip": {
        "height": 527467,
        "last_block_pushed": "000001a81c92da17102079862b927134e7f8210ad56af892f494a072f5b77b92",
        "prev_block_to_last": "000024005775cf7e2155d8156e514b6b1f51d98483a7bdc220a22334d2b30749",
        "total_difficulty": 1456919673376722
      },
      "user_agent": "MW/Grin 3.1.0-beta.1"
    }
  }
}
1 Like

Update on now closed Issue #2 :

We opened up API-Call v1/peers/connected for the public

https://grinnode.live/v1/peers/connected

/ban and /unban are still not accessible for the public.

2 Likes

Update on now closed Issue #3:

IPv6 is enabled as of now !!!

You can still use the FQDN grinnode.live or the corresponding IPv4 or IPv6 addresses.
DNS settings have been updated as well.

tbd: inter-node ipv6 VPN like connections

More details as always: GITHUB

2 Likes

Update:

More details as always on: GITHUB

2 Likes

Hello @mcm-mike!

The server doesn’t seem to working now. Any updates? I am trying to retrieve blocks from grin blockchain since genesis. I have tried syncing the blockchain using the instructions from Grin repository on GitHub, but there only the recent 2000 block data can be recovered. Old blocks’ data is removed. Can you help me to retrieve the entire set of blocks using grinnode.live ?

Thank you for asking this question, its a very good question related to Grin-Nodes.
Your question started a FAQ section where we will add these kinds of questions and answers.

In short, its not possible when connecting to Grinnode.live or any other node.

If enough users request this, we could upload a snapshot of one of our high-available nodes and upload it to Github every 3 month. You could then download it and run your node based on the data we provided including the genesis block.

Thanks for the prompt response.

1 Like