Skip to content

blockchainsllc/in3-server

Repository files navigation

Incubed Server

Forks Stars License: AGPL v3

The Incubed client is a

  • Crypto-Economic
  • Non-syncronizing and stateless, but fully verifying
  • Minimal resource consuming

blockchain client (Crypto-Economic Client, Minimal Verification Client, Ultra Light Client).

This version of the in3 node (server) is written in typescript. The in3-node provides the data and proof used by the client for verification.

The in3-node mainly provides data from the Ethereum clients to the in3-clients. The in3-node can act as a regular RPC-provider, but in3-nodes also have the ability to provide merkle-proofs with signed blockhashes in their responses. The merkle-proofs can be used by the clients to make sure that the response was correct. The signed blockHeader in the response acts as a extra layer of security, in case the in3-node was found to have provided a blockHeader that is not part of the chain, their deposit can be taken away. Using this technique an in3-client has an insurance that it will receive a valid response, allowing it to query nodes that it might not be affiliated with.

in3_image

A more detailed explanation of in3 can be found here.

For information on the in3 typescript client, please go here.

For information on the in3 C client, please go here.

Installation and Usage

Please only run an in3-node if you have some experience with networking and private key management. It is not expected for regular users to run their own in3-node, you may always use public in3-nodes. A list of public nodes for use by anyone can be found here.

package manager Link Use case
in3-node (ts) Docker Hub DockerHub To run the in3-node, which the in3-client can use to connect to the in3 network

Docker Hub

  1. Pull the image from docker using docker pull slockit/in3-node
  2. In order to run your own in3-node, you must first register the node. The information for registering a node can be found here
  3. Run the in3-node image using a direct docker command, a docker-compose file(the parameters for which are explained here) or use our online helper tool to generate a docker-compose file with all needed parameters. In case you want to run the server helper tool yourself, here is the docker image.

Example

POST Request

Once the in3-node has been registered in the in3 network, and the in3-node port has been exposed, you can test the in3-node with the following POST request to the IP/URL configured to your in3-node:

{
"id": 1, 
"jsonrpc": "2.0",
"method": "eth_getBlockByNumber", 
"params": ["latest",true], 
  "in3": {
  	"chainid": "0x5",
  	"verification": "proof"
  }	
}

This JSON rpc request should return the the latest block of the chain specified in "chainid". The POST request mentioned above is configured for the Görli test chain.

Features

in3-node Pruned Node Full Node
Failsafe connection ✔️ ❌️
Multi-chain support ✔️ ❌️
Full verification of JSON-RPC methods ✔️ ✔️
Caching support ✔️
Proof-Levels ✔️
POA Support ✔️ ✔️ ✔️
Database setup size-minutes 0-instant️ ~Hours ~Days️

Resources

Contributors welcome!

We at Slock.it believe in the power of the open source community. Feel free to open any issues you may come across, fork the repository and integrate in your own projects. You can reach us on various social media platforms for any questions and suggestions.

Twitter Blog Youtube LinkedIn Gitter

Got any questions?

Send us an email at team-in3@slock.it

About

Incubed Node/Server repository

Topics

Resources

License

Unknown, AGPL-3.0 licenses found

Licenses found

Unknown
LICENSE
AGPL-3.0
LICENSE.AGPL

Stars

Watchers

Forks

Packages

No packages published