{"id":13743466,"url":"https://github.com/blockchainsllc/in3","last_synced_at":"2025-04-07T16:19:42.347Z","repository":{"id":43257535,"uuid":"209025286","full_name":"blockchainsllc/in3","owner":"blockchainsllc","description":"The IN3 client (written in C).","archived":false,"fork":false,"pushed_at":"2023-03-27T11:33:16.000Z","size":44772,"stargazers_count":75,"open_issues_count":24,"forks_count":23,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-31T12:09:02.373Z","etag":null,"topics":["blockchain","crypto-economic","ethereum","ipfs","verify"],"latest_commit_sha":null,"homepage":"https://in3.readthedocs.io/en/develop/index.html","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blockchainsllc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-09-17T10:30:27.000Z","updated_at":"2024-06-24T03:44:44.000Z","dependencies_parsed_at":"2024-01-15T00:07:21.602Z","dependency_job_id":"6d47f523-f7db-4e32-8f78-67a04cbe77b7","html_url":"https://github.com/blockchainsllc/in3","commit_stats":{"total_commits":6059,"total_committers":28,"mean_commits":"216.39285714285714","dds":0.5292952632447598,"last_synced_commit":"7b21d1855967ef39e64aa6f5bb6e74ab8d298f57"},"previous_names":["slockit/in3-c","blockchainsllc/in3-c"],"tags_count":92,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockchainsllc%2Fin3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockchainsllc%2Fin3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockchainsllc%2Fin3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockchainsllc%2Fin3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blockchainsllc","download_url":"https://codeload.github.com/blockchainsllc/in3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247685634,"owners_count":20979085,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","crypto-economic","ethereum","ipfs","verify"],"created_at":"2024-08-03T05:00:47.802Z","updated_at":"2025-04-07T16:19:42.328Z","avatar_url":"https://github.com/blockchainsllc.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# Incubed Client in C\n\n[![Forks](https://img.shields.io/github/forks/slockit/in3)](https://github.com/blockchainsllc/in3/network/members)\n[![Stars](https://img.shields.io/github/stars/slockit/in3)](https://github.com/blockchainsllc/in3/watchers)\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://github.com/blockchainsllc/in3/blob/master/LICENSE.AGPL)\n\nThe **Incubed** client is a\n\n- Crypto-Economic\n- Non-syncronizing and stateless, but fully verifying\n- Minimal resource consuming\n\nblockchain client (Crypto-Economic Client, Minimal Verification Client, Ultra Light Client). This version is written in C.\n\nMost blockchains, such as Ethereum, require a client to connect to their blockchain network. Often, these clients\nrequire a lot of storage, a very high bandwidth or constant computation. While this is possible to perform on laptops or desktop systems,\nmobile devices, mobile app, and even web applications struggle to meet these requirements. Currently the solution of choice is to use a\nlight client or remote client on mobile devices. While this may work for mobile phones, most IoT devices are unable to run light clients.\nConnecting an IoT device to a remote node enables even low-performance IoT devices to be connected to blockchain. However, by using distinct\nremote nodes, the advantages of a decentralized network are undermined introducing a single point of failure. Also, it is unsecure because\nthe client is not able to verify the results by itself. The same applies for mobile apps or web pages.\nThe Trustless Incentivized Remote Node Network, in short **Incubed**, makes it possible to establish a\ndecentralized and secure network of remote nodes and clients which are able to verify and validate the results, enabling trustworthy and\nfast access to blockchain for a large number of low-performance IoT, mobile devices, and web applications.\n\n![in3](c/docs/in3_image.png)\n\nA more detailed explanation of in3 can be found [here](https://in3.readthedocs.io/en/latest/intro.html).\n\nFor information on the in3-node, please go [here](https://github.com/blockchainsllc/in3-server).\n\nFor information on the in3 typescript client, please go [here](https://github.com/blockchainsllc/in3-legacy).\n\n## Installation and Usage\n\n| package manager / Bindings |                                                                                                                        Link | Use case                                                                                                                                                                                                                                                                                                               |\n| :------------------------- | --------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Ubuntu Launchpad           | [![ubuntu](https://img.shields.io/badge/ubuntu-launchpad-blue)](https://launchpad.net/~devops-slock-it/+archive/ubuntu/in3) | Installs libs and binaries on IoT devices or Linux-Systems \u003cbr\u003e\u003cbr\u003e_Add the slock.it ppa to your system_\u003cbr\u003e`sudo add-apt-repository ppa:devops-slock-it/in3`\u003cbr\u003e\u003cbr\u003e_install the commandline tool in3_\u003cbr\u003e`apt-get install in3`\u003cbr\u003e\u003cbr\u003e_install shared and static libs and header files_\u003cbr\u003e`apt-get install in3-dev` |\n| Docker Hub                 |                       [![DockerHub](https://img.shields.io/badge/DockerHub-in3-blue)](https://hub.docker.com/r/slockit/in3) | Quick and easy way to get in3 client running as docker container\u003cbr\u003e`docker run -d -p 8545:8545 slockit/in3:latest --chainId=goerli -port 8545`\u003cbr\u003e More parameters and their descriptions can be found [here](https://in3.readthedocs.io/en/latest/getting_started.html#as-docker-container).                         |\n| Brew                       |               [![Homebrew](https://img.shields.io/badge/Homebrew-tap-blue)](https://github.com/blockchainsllc/homebrew-in3) | Easy to install on MacOS\u003cbr\u003e\u003cbr\u003e_Add a brew tap_ \u003cbr\u003e`brew tap slockit/in3`\u003cbr\u003e\u003cbr\u003e_install all binaries and libraries_\u003cbr\u003e`brew install in3`                                                                                                                                                                          |\n| Release page               |               [![Github](https://img.shields.io/badge/Github-release-blue)](https://github.com/blockchainsllc/in3/releases) | Releases including precompiled libraries for major platforms. To build or compile against the incubed, see [readthedocs](https://in3.readthedocs.io/en/latest/api-c.html).                                                                                                                                             |\n| WASM                       |                             [![npm](https://img.shields.io/badge/npm-package-blue)](https://www.npmjs.com/package/in3-wasm) | a WASM-Based npm module running in browsers or nodjs.\u003cbr\u003e`npm install --save in3-wasm`\u003cbr\u003eSee [examples](https://github.com/blockchainsllc/in3/blob/latest/examples/js/get_block_rpc.js) on how to use it.                                                                                                             |\n| Java                       |               [![Github](https://img.shields.io/badge/Github-release-blue)](https://github.com/blockchainsllc/in3/releases) | For integrating with java applications. Take the jar-file from the release. \u003cbr\u003e`javac -cp $IN3_JAR_LOCATION/in3.jar *.java`\u003cbr\u003e For infromation on how to use maven, examples and documentation see [readthedocs](https://in3.readthedocs.io/en/latest/api-java.html)                                                 |\n\n## Example\n\nPlease have a look at the examples folder in the repo for more detailed [examples](https://github.com/blockchainsllc/in3/tree/master/examples).\n\n### CLI\n\nin3 can be used on the command line in this manner:\n\n`in3 [options] method [arguments]`\n\nFor example,\n\nTo get block number, run:\n\n```\n\u003e in3 eth_blockNumber\n8610795\n```\n\nA more detailed list with information on arguments can be found [here](https://in3.readthedocs.io/en/latest/api-cmd.html).\n\n### C Code\n\nExample C code can be found [here](https://github.com/blockchainsllc/in3/tree/master/examples/c)\n\n```c\n#include \u003cin3/client.h\u003e    // the core client\n#include \u003cin3/eth_basic.h\u003e // use the basic module\n#include \u003cin3/in3_curl.h\u003e  // transport implementation\n#include \u003cinttypes.h\u003e\n#include \u003cstdio.h\u003e\n\nint main(int argc, char* argv[]) {\n // register a chain-verifier for basic Ethereum-Support, which is enough to verify blocks\n in3_register_eth_basic();\n\n in3_register_curl(); // use curl as the default for sending out requests\n\n in3_t* in3 = in3_for_chain(CHAIN_ID_MAINNET); // create new incubed client\n\n char *result, *error;  // prepare 2 pointers for the result.\n\n in3_ret_t res = in3_client_rpc(   // send raw rpc-request, which is then verified\n     in3,                    //  the configured client\n     \"eth_getBlockByNumber\", // the rpc-method you want to call.\n     \"[\\\"latest\\\",true]\",    // the arguments as json-string\n     \u0026result,                // the reference to a pointer whill hold the result\n     \u0026error);                // the pointer which may hold a error message\n\n if (res == IN3_OK) {\n   printf(\"Latest block : \\n%s\\n\", result);\n   free(result);\n } else {\n   printf(\"Error verifing the Latest block : \\n%s\\n\", error);\n   free(error);\n }\n in3_free(in3);   // cleanup client after usage\n\n}\n```\n\nA more detailed example with information on how to call functions can be found [here](https://in3.readthedocs.io/en/latest/api-c.html#examples).\n\n## Features\n\n|                                       |             in3             |  Remote Client   |  Light Client  |\n| ------------------------------------- | :-------------------------: | :--------------: | :------------: |\n| Failsafe connection                   |             ✔️              |        ❌        |       ✔️       |\n| Automatic Nodelist updates            |             ✔️              |        ❌        |       ✔️       |\n| Partial nodelist                      |             ✔️              |        ❌        |       ✔️       |\n| Multi-chain support                   |             ✔️              |        ✔️        |       ❌       |\n| Full verification of JSON-RPC methods |             ✔️              |        ❌        |       ❌       |\n| IPFS support                          |             ✔️              |        ✔️        |       ❌       |\n| Caching support                       |             ✔️              |        ❌        |       ❌       |\n| Proof-Levels                          |             ✔️              |        ❌        |       ❌       |\n| POA Support                           |             ✔️              |        ✔️        |       ✔️       |\n| Database setup size-minutes           |         0-instant️          |    0-instant     | ~50Mb-minutes️ |\n| Uses                                  | IoT devices,Mobile,browser️ | Mobile,browser️️ |   PC,Laptop️   |\n\n## Resources\n\n- [C API reference](https://in3.readthedocs.io/en/latest/api-c.html)\n- [C examples](https://in3.readthedocs.io/en/latest/api-c.html#examples)\n- [in3-node](https://github.com/blockchainsllc/in3-server)\n- [in3 typescript client](https://github.com/blockchainsllc/in3-legacy)\n- [Website](https://slock.it/incubed/)\n- [ReadTheDocs](https://in3.readthedocs.io/en/latest/)\n- [Blog](https://blog.slock.it/)\n- [Incubed concept video by Christoph Jentzsch](https://www.youtube.com/watch?v=_vodQubed2A)\n- [Ethereum verification explained by Simon Jentzsch](https://www.youtube.com/watch?v=wlUlypmt6Oo)\n\n## Contributors welcome!\n\nWe at Blockchains believe in the power of the open source community. Feel free to open any issues you may come across, fork\nthe repository and integrate in your own projects. You can reach us on various social media platforms for any questions\nand suggestions.\n\n[![Twitter](https://img.shields.io/badge/Twitter-Page-blue)](https://twitter.com/slockitproject?s=17)\n[![Blog](https://img.shields.io/badge/Blog-Medium-blue)](https://blog.slock.it/)\n[![Youtube](https://img.shields.io/badge/Youtube-channel-blue)](https://www.youtube.com/channel/UCPOrzp3CZmdb5HJWxSjv4Ig)\n[![LinkedIn](https://img.shields.io/badge/Linkedin-page-blue)](https://www.linkedin.com/company/10327305)\n[![Gitter](https://img.shields.io/badge/Gitter-chat-blue)](https://gitter.im/slockit-in3/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\n## Got any questions?\n\nContact us on [![Gitter](https://img.shields.io/badge/Gitter-chat-blue)](https://gitter.im/slockit-in3/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge) or\nsend us an email at \u003ca href=\"mailto:team-in3@slock.it\"\u003eteam-in3@slock.it\u003c/a\u003e\n\n## LICENSE\n\n### COMMERCIAL LICENSE\n\nLicensees holding a valid commercial license may use this software in accordance\nwith the commercial license agreement provided with the Software or, alternatively,\nin accordance with the terms contained in a written agreement between you and\nslock.it GmbH/Blockchains LLC. For licensing terms and conditions or further\ninformation please contact slock.it at in3@slock.it.\nAlternatively, this software may be used under the AGPL license as follows:\n\n### AGPL LICENSE\n\nThis program is free software: you can redistribute it and/or modify it under the\nterms of the GNU Affero General Public License as published by the Free Software\nFoundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE. See the GNU Affero General Public License for more details.\n[Permissions of this strong copyleft license are conditioned on making available\ncomplete source code of licensed works and modifications, which include larger\nworks using a licensed work, under the same license. Copyright and license notices\nmust be preserved. Contributors provide an express grant of patent rights.]\nYou should have received a copy of the GNU Affero General Public License along\nwith this program. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblockchainsllc%2Fin3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblockchainsllc%2Fin3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblockchainsllc%2Fin3/lists"}