The Incubed client is a
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.
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.
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 | To run the in3-node, which the in3-client can use to connect to the in3 network |
docker pull slockit/in3-node
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.
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.
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️ |
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.
Send us an email at team-in3@slock.it