Convert Figma logo to code with AI

i2p logoi2p.i2p

I2P is an anonymizing network, offering a simple layer that identity-sensitive applications can use to securely communicate. All data is wrapped with several layers of encryption, and the network is both distributed and dynamic, with no trusted parties.

1,965
308
1,965
24

Top Related Projects

8,857

Monero: the secure, private, untraceable cryptocurrency

4,400

unofficial git repo -- report bugs/issues/pull requests on https://gitlab.torproject.org/ --

1,007

Freenet REference Daemon

Go implementation of the Ethereum protocol

4,931

Zcash - Internet Money

Quick Overview

I2P (Invisible Internet Project) is an anonymous network layer that allows for secure and private communication over the internet. It provides a platform for various applications to operate with enhanced privacy and security, offering features like end-to-end encryption, decentralized routing, and protection against network surveillance.

Pros

  • Strong focus on privacy and anonymity
  • Decentralized network architecture for improved resilience
  • Supports various applications, including web browsing, file sharing, and messaging
  • Active development and community support

Cons

  • Slower speeds compared to regular internet connections due to multiple layers of encryption
  • Steeper learning curve for new users
  • Limited adoption compared to other privacy-focused networks
  • Potential for misuse by malicious actors

Getting Started

To get started with I2P:

  1. Download the I2P software from the official website: https://geti2p.net/
  2. Install the software on your system
  3. Launch the I2P router and wait for it to connect to the network
  4. Configure your browser or other applications to use I2P as a proxy
  5. Start using I2P-enabled services or create your own hidden services

For developers interested in integrating I2P into their applications, refer to the official documentation and API guides available in the repository.

Competitor Comparisons

8,857

Monero: the secure, private, untraceable cryptocurrency

Pros of Monero

  • Focuses on privacy-centric cryptocurrency transactions
  • More active development with frequent updates
  • Larger community and wider adoption in the cryptocurrency space

Cons of Monero

  • More complex codebase due to cryptographic algorithms
  • Higher resource requirements for running a full node
  • Narrower scope compared to I2P's general-purpose anonymity network

Code Comparison

Monero (C++):

crypto::public_key tx_pub_key = get_tx_pub_key_from_extra(tx);
crypto::key_derivation derivation;
if (!generate_key_derivation(tx_pub_key, prv_view_key, derivation))
  return false;

I2P (Java):

public void processDeliveryStatus(DeliveryStatusMessage msg) {
    long messageId = msg.getMessageId();
    long nonce = msg.getNonce();
    int status = msg.getStatus();
}

Monero focuses on cryptographic operations for transaction privacy, while I2P deals with network messaging and routing for general anonymity. Monero's codebase is more specialized for financial transactions, whereas I2P provides a broader anonymity network infrastructure.

4,400

unofficial git repo -- report bugs/issues/pull requests on https://gitlab.torproject.org/ --

Pros of Tor

  • More widely adopted and recognized, with a larger user base
  • Better suited for accessing clearnet websites anonymously
  • Generally faster for web browsing due to its circuit-based routing

Cons of Tor

  • Centralized directory servers, potentially vulnerable to attacks
  • Exit nodes can potentially monitor traffic
  • Less resistant to correlation attacks compared to I2P

Code Comparison

Tor (C):

static void circuit_build_failed(origin_circuit_t *circ, int reason) {
  control_event_circuit_status(circ, CIRC_EVENT_FAILED, reason);
  circuit_mark_for_close(TO_CIRCUIT(circ), reason);
}

I2P (Java):

public void failed(String reason) {
    if (_state == BuildState.FAILED) return;
    _state = BuildState.FAILED;
    _failedReason = reason;
    _log.info("Tunnel build failed: " + reason);
    _manager.tunnelBuildFailed(this);
}

Both projects implement error handling for failed connections, but use different programming languages and approaches. Tor's implementation is in C and focuses on circuit building, while I2P's Java code handles tunnel building failures.

1,007

Freenet REference Daemon

Pros of fred

  • More active development with frequent updates and commits
  • Larger community of contributors and users
  • Better documentation and user guides

Cons of fred

  • Higher resource consumption and system requirements
  • Steeper learning curve for new users
  • Less focus on anonymity compared to I2P

Code Comparison

fred (Java):

public class Node {
    private final NodeCrypto crypto;
    private final NodeIPDetector ipDetector;
    private final NodeConnectionManager connectionManager;
    // ...
}

I2P (Java):

public class Router {
    private final RouterContext _context;
    private final CommSystemFacade _commSystem;
    private final NetDbFacade _netDb;
    // ...
}

Both projects use Java and have similar core structures, but fred's codebase appears more modular and focused on specific components, while I2P's codebase is more tightly integrated with its router context.

fred tends to have more descriptive class and method names, potentially improving code readability. I2P's codebase, on the other hand, uses more compact naming conventions and relies heavily on its router context for various operations.

Overall, both projects aim to provide decentralized, anonymous communication networks but take different approaches in their implementation and focus areas.

Go implementation of the Ethereum protocol

Pros of go-ethereum

  • Larger community and more active development
  • Comprehensive documentation and extensive ecosystem
  • Better performance and scalability for blockchain operations

Cons of go-ethereum

  • Higher complexity and steeper learning curve
  • More resource-intensive to run a full node
  • Less focused on privacy compared to I2P

Code Comparison

i2p.i2p (Java):

public class RouterContext extends I2PAppContext {
    private final RouterService _routerService;
    private volatile boolean _initialized;
    private volatile boolean _started;
}

go-ethereum (Go):

type Ethereum struct {
    config *Config
    chainConfig *params.ChainConfig
    shutdownChan chan bool
    stop chan struct{}
    scope event.SubscriptionScope
}

Summary

I2P focuses on anonymous communication and network privacy, while go-ethereum is designed for blockchain and smart contract operations. I2P is written in Java and emphasizes user privacy, whereas go-ethereum is implemented in Go and prioritizes blockchain functionality. Go-ethereum has a larger community and more extensive documentation, but it's also more complex and resource-intensive. I2P offers better privacy features but may have limited blockchain capabilities compared to go-ethereum.

4,931

Zcash - Internet Money

Pros of Zcash

  • Focuses on privacy-centric cryptocurrency with advanced cryptographic features
  • More active development and frequent updates
  • Larger community and wider adoption in the cryptocurrency space

Cons of Zcash

  • Narrower scope, primarily focused on financial transactions
  • Requires more computational resources for privacy features
  • Higher complexity in implementation and usage

Code Comparison

I2P (Java):

public void startRouter() {
    _context = new RouterContext();
    _context.initAll();
    _context.router().setKillJob(new RouterKillJob());
    _context.router().runRouter();
}

Zcash (C++):

void StartNode(boost::thread_group& threadGroup, CScheduler& scheduler, const CChainParams& chainparams)
{
    uiInterface.InitMessage(_("Loading block index..."));
    threadGroup.create_thread(boost::bind(&ThreadImport, boost::cref(chainparams)));
}

Both projects use different programming languages and have distinct architectures. I2P focuses on network routing and anonymity, while Zcash emphasizes secure financial transactions. The code snippets demonstrate their respective initialization processes, with I2P setting up a router context and Zcash starting the blockchain node.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

I2P

This is the source code for the reference Java implementation of I2P.

Latest release: https://geti2p.net/download

Installing

See INSTALL.txt or https://geti2p.net/download for installation instructions.

Documentation

https://geti2p.net/how

FAQ: https://geti2p.net/faq

API: http://docs.i2p-projekt.de/javadoc/ or run 'ant javadoc' then start at build/javadoc/index.html

How to contribute / Hack on I2P

Please check out HACKING.md and other documents in the docs directory.

Building packages from source

To get development branch from source control: https://geti2p.net/newdevelopers

Prerequisites

  • Java SDK (preferably Oracle or OpenJDK) 8 or higher
    • Non-linux operating systems and JVMs: See https://trac.i2p2.de/wiki/java
    • Certain subsystems for embedded (core, router, mstreaming, streaming, i2ptunnel) require only Java 6
  • Apache Ant 1.9.8 or higher
  • The xgettext, msgfmt, and msgmerge tools installed from the GNU gettext package http://www.gnu.org/software/gettext/
  • Build environment must use a UTF-8 locale.

Ant build process

On x86 systems do:

ant pkg

On non-x86, use one of the following instead:

ant installer-linux
ant installer-freebsd
ant installer-osx

Run 'ant' with no arguments to see other build options.

Gradle build process

Full builds of installers or updates are not yet possible, but the code can be compiled with:

./gradlew assemble

This will download dependencies over the clearnet by default, including Gradle itself. To download through a SOCKS proxy (e.g. Tor), add the following lines to your ~/.gradle/gradle.properties:

systemProp.socksProxyHost=localhost
systemProp.socksProxyPort=9150

Development builds

Automatic CI builds are available at the continuous integration page.

Docker

For more information how to run I2P in Docker, see Docker.md

Contact info

Need help? See the IRC channel #i2p on irc.freenode.net

Bug reports: https://i2pgit.org/i2p-hackers/i2p.i2p/-/issues http://git.idk.i2p/i2p-hackers/i2p.i2p/-/issues

Contact information, security issues, press inquiries: https://geti2p.net/en/contact

Twitter: @i2p, @geti2p

Licenses

See LICENSE.txt