ipfs_libp2p 0.5.6
ipfs_libp2p: ^0.5.6 copied to clipboard
A comprehensive Dart implementation of the libp2p networking stack with modular architecture, multiple transports (TCP/UDX), Noise security, and peer-to-peer capabilities.
Use this package as a library
Depend on it
Run this command:
With Dart:
$ dart pub add ipfs_libp2pWith Flutter:
$ flutter pub add ipfs_libp2pThis will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):
dependencies:
ipfs_libp2p: ^0.5.6Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.
Import it
Now in your Dart code, you can use:
import 'package:ipfs_libp2p/config/config.dart';
import 'package:ipfs_libp2p/config/defaults.dart';
import 'package:ipfs_libp2p/config/multistream_config.dart';
import 'package:ipfs_libp2p/config/stream_muxer.dart';
import 'package:ipfs_libp2p/core/alias.dart';
import 'package:ipfs_libp2p/core/certified_addr_book.dart';
import 'package:ipfs_libp2p/core/connmgr/conn_gater.dart';
import 'package:ipfs_libp2p/core/connmgr/conn_manager.dart';
import 'package:ipfs_libp2p/core/connmgr/decay.dart';
import 'package:ipfs_libp2p/core/crypto/ecdsa.dart';
import 'package:ipfs_libp2p/core/crypto/ed25519.dart';
import 'package:ipfs_libp2p/core/crypto/keys.dart';
import 'package:ipfs_libp2p/core/crypto/pb/crypto.pb.dart';
import 'package:ipfs_libp2p/core/crypto/pb/crypto.pbenum.dart';
import 'package:ipfs_libp2p/core/crypto/pb/crypto.pbjson.dart';
import 'package:ipfs_libp2p/core/crypto/rsa.dart';
import 'package:ipfs_libp2p/core/discovery.dart';
import 'package:ipfs_libp2p/core/event/addrs.dart';
import 'package:ipfs_libp2p/core/event/bus.dart';
import 'package:ipfs_libp2p/core/event/dht.dart';
import 'package:ipfs_libp2p/core/event/identify.dart';
import 'package:ipfs_libp2p/core/event/nattype.dart';
import 'package:ipfs_libp2p/core/event/protocol.dart';
import 'package:ipfs_libp2p/core/event/reachability.dart';
import 'package:ipfs_libp2p/core/exceptions.dart';
import 'package:ipfs_libp2p/core/host/helpers.dart';
import 'package:ipfs_libp2p/core/host/host.dart';
import 'package:ipfs_libp2p/core/interfaces.dart';
import 'package:ipfs_libp2p/core/multiaddr.dart';
import 'package:ipfs_libp2p/core/network/common.dart';
import 'package:ipfs_libp2p/core/network/conn.dart';
import 'package:ipfs_libp2p/core/network/connection_context.dart';
import 'package:ipfs_libp2p/core/network/context.dart';
import 'package:ipfs_libp2p/core/network/errors.dart';
import 'package:ipfs_libp2p/core/network/mux.dart';
import 'package:ipfs_libp2p/core/network/nattype.dart';
import 'package:ipfs_libp2p/core/network/network.dart';
import 'package:ipfs_libp2p/core/network/notifiee.dart';
import 'package:ipfs_libp2p/core/network/rcmgr.dart';
import 'package:ipfs_libp2p/core/network/stream.dart';
import 'package:ipfs_libp2p/core/network/transport_conn.dart';
import 'package:ipfs_libp2p/core/peer/addr_info.dart';
import 'package:ipfs_libp2p/core/peer/pb/peer_record.pb.dart';
import 'package:ipfs_libp2p/core/peer/pb/peer_record.pbenum.dart';
import 'package:ipfs_libp2p/core/peer/pb/peer_record.pbjson.dart';
import 'package:ipfs_libp2p/core/peer/peer_id.dart';
import 'package:ipfs_libp2p/core/peer/peer_serde.dart';
import 'package:ipfs_libp2p/core/peer/record.dart';
import 'package:ipfs_libp2p/core/peerstore.dart';
import 'package:ipfs_libp2p/core/protocol/autonatv1/autonatv1.dart';
import 'package:ipfs_libp2p/core/protocol/autonatv2/autonatv2.dart';
import 'package:ipfs_libp2p/core/protocol/protocol.dart';
import 'package:ipfs_libp2p/core/protocol/switch.dart';
import 'package:ipfs_libp2p/core/record/envelope.dart';
import 'package:ipfs_libp2p/core/record/pb/envelope.pb.dart';
import 'package:ipfs_libp2p/core/record/pb/envelope.pbenum.dart';
import 'package:ipfs_libp2p/core/record/pb/envelope.pbjson.dart';
import 'package:ipfs_libp2p/core/record/record_registry.dart';
import 'package:ipfs_libp2p/core/routing/options.dart';
import 'package:ipfs_libp2p/core/routing/query.dart';
import 'package:ipfs_libp2p/core/routing/routing.dart';
import 'package:ipfs_libp2p/core/sec/insecure/pb/plaintext.pb.dart';
import 'package:ipfs_libp2p/core/sec/insecure/pb/plaintext.pbenum.dart';
import 'package:ipfs_libp2p/core/sec/insecure/pb/plaintext.pbjson.dart';
import 'package:ipfs_libp2p/dart_libp2p.dart';
import 'package:ipfs_libp2p/p2p/crypto/key_generator.dart';
import 'package:ipfs_libp2p/p2p/crypto/pb/crypto.pb.dart';
import 'package:ipfs_libp2p/p2p/crypto/pb/crypto.pbenum.dart';
import 'package:ipfs_libp2p/p2p/crypto/pb/crypto.pbjson.dart';
import 'package:ipfs_libp2p/p2p/crypto/pb/pb.dart';
import 'package:ipfs_libp2p/p2p/discovery/backoff/backoff.dart';
import 'package:ipfs_libp2p/p2p/discovery/backoff/backoff_cache.dart';
import 'package:ipfs_libp2p/p2p/discovery/backoff/backoff_connector.dart';
import 'package:ipfs_libp2p/p2p/discovery/backoff/lru_cache.dart';
import 'package:ipfs_libp2p/p2p/discovery/discovery.dart';
import 'package:ipfs_libp2p/p2p/discovery/mdns.dart';
import 'package:ipfs_libp2p/p2p/discovery/mdns/mdns.dart';
import 'package:ipfs_libp2p/p2p/discovery/peer_info.dart';
import 'package:ipfs_libp2p/p2p/discovery/routing/routing.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/ambient_autonat_v2.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/ambient_config.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/autonat.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/client.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/dial_policy.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/metrics.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/options.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/pb/autonat.pb.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/pb/autonat.pbenum.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/pb/autonat.pbjson.dart';
import 'package:ipfs_libp2p/p2p/host/autonat/service.dart';
import 'package:ipfs_libp2p/p2p/host/autorelay/autorelay.dart';
import 'package:ipfs_libp2p/p2p/host/autorelay/autorelay_address_utils.dart';
import 'package:ipfs_libp2p/p2p/host/autorelay/autorelay_config.dart';
import 'package:ipfs_libp2p/p2p/host/autorelay/autorelay_metrics.dart';
import 'package:ipfs_libp2p/p2p/host/autorelay/relay_finder.dart';
import 'package:ipfs_libp2p/p2p/host/basic/basic_host.dart';
import 'package:ipfs_libp2p/p2p/host/basic/index.dart';
import 'package:ipfs_libp2p/p2p/host/basic/internal/backoff/backoff.dart';
import 'package:ipfs_libp2p/p2p/host/basic/natmgr.dart';
import 'package:ipfs_libp2p/p2p/host/eventbus/basic.dart';
import 'package:ipfs_libp2p/p2p/host/eventbus/eventbus.dart';
import 'package:ipfs_libp2p/p2p/host/eventbus/metrics.dart';
import 'package:ipfs_libp2p/p2p/host/eventbus/opts.dart';
import 'package:ipfs_libp2p/p2p/host/host.dart';
import 'package:ipfs_libp2p/p2p/host/peerstore/peerstore.dart';
import 'package:ipfs_libp2p/p2p/host/peerstore/pstoremem.dart';
import 'package:ipfs_libp2p/p2p/host/peerstore/pstoremem/addr_book.dart';
import 'package:ipfs_libp2p/p2p/host/peerstore/pstoremem/key_book.dart';
import 'package:ipfs_libp2p/p2p/host/peerstore/pstoremem/metadata.dart';
import 'package:ipfs_libp2p/p2p/host/peerstore/pstoremem/metrics.dart';
import 'package:ipfs_libp2p/p2p/host/peerstore/pstoremem/peerstore.dart';
import 'package:ipfs_libp2p/p2p/host/peerstore/pstoremem/proto_book.dart';
import 'package:ipfs_libp2p/p2p/host/pstoremanager/pstoremanager.dart';
import 'package:ipfs_libp2p/p2p/host/relaysvc/relay_manager.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/limit.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/limiter.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/resource_manager_impl.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/scope_impl.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/scopes/connection_scope_impl.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/scopes/peer_scope_impl.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/scopes/protocol_scope_impl.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/scopes/service_scope_impl.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/scopes/stream_scope_impl.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/scopes/system_scope_impl.dart';
import 'package:ipfs_libp2p/p2p/host/resource_manager/scopes/transient_scope_impl.dart';
import 'package:ipfs_libp2p/p2p/host/routed/routed_host.dart';
import 'package:ipfs_libp2p/p2p/multiaddr/codec.dart';
import 'package:ipfs_libp2p/p2p/multiaddr/protocol.dart';
import 'package:ipfs_libp2p/p2p/multiaddr/validator.dart';
import 'package:ipfs_libp2p/p2p/nat/nat_behavior.dart';
import 'package:ipfs_libp2p/p2p/nat/nat_behavior_discovery.dart';
import 'package:ipfs_libp2p/p2p/nat/nat_behavior_tracker.dart';
import 'package:ipfs_libp2p/p2p/nat/nat_status_reporter.dart';
import 'package:ipfs_libp2p/p2p/nat/nat_traversal_strategy.dart';
import 'package:ipfs_libp2p/p2p/nat/nat_type.dart';
import 'package:ipfs_libp2p/p2p/nat/network_interface_monitor.dart';
import 'package:ipfs_libp2p/p2p/nat/storage_broker.dart';
import 'package:ipfs_libp2p/p2p/nat/stun/stun_client.dart';
import 'package:ipfs_libp2p/p2p/nat/stun/stun_client_pool.dart';
import 'package:ipfs_libp2p/p2p/nat/stun/stun_message.dart';
import 'package:ipfs_libp2p/p2p/network/conn_gater.dart';
import 'package:ipfs_libp2p/p2p/network/connmgr/connmgr.dart';
import 'package:ipfs_libp2p/p2p/network/connmgr/null_conn_mgr.dart';
import 'package:ipfs_libp2p/p2p/network/swarm/address_filter.dart';
import 'package:ipfs_libp2p/p2p/network/swarm/connection_health.dart';
import 'package:ipfs_libp2p/p2p/network/swarm/swarm.dart';
import 'package:ipfs_libp2p/p2p/network/swarm/swarm_conn.dart';
import 'package:ipfs_libp2p/p2p/network/swarm/swarm_dial.dart';
import 'package:ipfs_libp2p/p2p/network/swarm/swarm_stream.dart';
import 'package:ipfs_libp2p/p2p/peerstore.dart';
import 'package:ipfs_libp2p/p2p/protocol/autonatv2.dart';
import 'package:ipfs_libp2p/p2p/protocol/autonatv2/autonatv2.dart';
import 'package:ipfs_libp2p/p2p/protocol/autonatv2/client.dart';
import 'package:ipfs_libp2p/p2p/protocol/autonatv2/options.dart';
import 'package:ipfs_libp2p/p2p/protocol/autonatv2/pb/autonatv2.pb.dart';
import 'package:ipfs_libp2p/p2p/protocol/autonatv2/pb/autonatv2.pbenum.dart';
import 'package:ipfs_libp2p/p2p/protocol/autonatv2/pb/autonatv2.pbjson.dart';
import 'package:ipfs_libp2p/p2p/protocol/autonatv2/server.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/client/circuit_connection.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/client/client.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/client/conn.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/client/metrics_observer.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/client/reservation.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/pb/circuit.pb.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/pb/circuit.pbenum.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/pb/circuit.pbjson.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/pb/voucher.pb.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/pb/voucher.pbenum.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/pb/voucher.pbjson.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/proto.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/relay/options.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/relay/relay.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/relay/relay_metrics_observer.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/relay/resources.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/util/buffered_reader.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/util/io.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/util/pbconv.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/util/prepended_stream.dart';
import 'package:ipfs_libp2p/p2p/protocol/circuitv2/voucher.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/filter.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/holepunch.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/holepunch_service.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/holepuncher.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/metrics.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/pb/holepunch.pb.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/pb/holepunch.pbenum.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/pb/holepunch.pbjson.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/service.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/tracer.dart';
import 'package:ipfs_libp2p/p2p/protocol/holepunch/util.dart';
import 'package:ipfs_libp2p/p2p/protocol/http/http_protocol.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/id_service.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/identify.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/identify_exceptions.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/metrics.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/nat_emitter.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/observed_addr_manager.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/options.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/pb/identify.pb.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/pb/identify.pbenum.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/pb/identify.pbjson.dart';
import 'package:ipfs_libp2p/p2p/protocol/identify/user_agent.dart';
import 'package:ipfs_libp2p/p2p/protocol/multistream/client.dart';
import 'package:ipfs_libp2p/p2p/protocol/multistream/lazy_client.dart';
import 'package:ipfs_libp2p/p2p/protocol/multistream/multistream.dart';
import 'package:ipfs_libp2p/p2p/protocol/obp/obp_frame.dart';
import 'package:ipfs_libp2p/p2p/protocol/obp/obp_protocol_handler.dart';
import 'package:ipfs_libp2p/p2p/protocol/ping/ping.dart';
import 'package:ipfs_libp2p/p2p/protocol/stomp.dart';
import 'package:ipfs_libp2p/p2p/protocol/stomp/stomp_client.dart';
import 'package:ipfs_libp2p/p2p/protocol/stomp/stomp_constants.dart';
import 'package:ipfs_libp2p/p2p/protocol/stomp/stomp_exceptions.dart';
import 'package:ipfs_libp2p/p2p/protocol/stomp/stomp_frame.dart';
import 'package:ipfs_libp2p/p2p/protocol/stomp/stomp_server.dart';
import 'package:ipfs_libp2p/p2p/protocol/stomp/stomp_service.dart';
import 'package:ipfs_libp2p/p2p/protocol/stomp/stomp_subscription.dart';
import 'package:ipfs_libp2p/p2p/protocol/stomp/stomp_transaction.dart';
import 'package:ipfs_libp2p/p2p/security/noise/handshake_state.dart';
import 'package:ipfs_libp2p/p2p/security/noise/message_framing.dart';
import 'package:ipfs_libp2p/p2p/security/noise/noise_message.dart';
import 'package:ipfs_libp2p/p2p/security/noise/noise_protocol.dart';
import 'package:ipfs_libp2p/p2p/security/noise/noise_state.dart';
import 'package:ipfs_libp2p/p2p/security/noise/xx_pattern.dart';
import 'package:ipfs_libp2p/p2p/security/secured_connection.dart';
import 'package:ipfs_libp2p/p2p/security/security_protocol.dart';
import 'package:ipfs_libp2p/p2p/transport/basic_upgrader.dart';
import 'package:ipfs_libp2p/p2p/transport/connection_manager.dart';
import 'package:ipfs_libp2p/p2p/transport/connection_state.dart';
import 'package:ipfs_libp2p/p2p/transport/listener.dart';
import 'package:ipfs_libp2p/p2p/transport/multiplexing/multiplexer.dart';
import 'package:ipfs_libp2p/p2p/transport/multiplexing/yamux/frame.dart';
import 'package:ipfs_libp2p/p2p/transport/multiplexing/yamux/metrics_observer.dart';
import 'package:ipfs_libp2p/p2p/transport/multiplexing/yamux/session.dart';
import 'package:ipfs_libp2p/p2p/transport/multiplexing/yamux/stream.dart';
import 'package:ipfs_libp2p/p2p/transport/multiplexing/yamux/yamux_exceptions.dart';
import 'package:ipfs_libp2p/p2p/transport/network_service.dart';
import 'package:ipfs_libp2p/p2p/transport/p2p_stream_adapter.dart';
import 'package:ipfs_libp2p/p2p/transport/tcp_connection.dart';
import 'package:ipfs_libp2p/p2p/transport/tcp_listener.dart';
import 'package:ipfs_libp2p/p2p/transport/tcp_transport.dart';
import 'package:ipfs_libp2p/p2p/transport/transport.dart';
import 'package:ipfs_libp2p/p2p/transport/transport_config.dart';
import 'package:ipfs_libp2p/p2p/transport/udx_exceptions.dart';
import 'package:ipfs_libp2p/p2p/transport/udx_stream_adapter.dart';
import 'package:ipfs_libp2p/p2p/transport/udx_transport.dart';
import 'package:ipfs_libp2p/p2p/transport/upgrader.dart';
import 'package:ipfs_libp2p/pb/autonat/v1/autonat.pb.dart';
import 'package:ipfs_libp2p/pb/autonat/v1/autonat.pbenum.dart';
import 'package:ipfs_libp2p/pb/autonat/v1/autonat.pbjson.dart';
import 'package:ipfs_libp2p/pb/noise/payload.pb.dart';
import 'package:ipfs_libp2p/pb/noise/payload.pbenum.dart';
import 'package:ipfs_libp2p/pb/noise/payload.pbjson.dart';
import 'package:ipfs_libp2p/utils/protobuf_utils.dart';
import 'package:ipfs_libp2p/utils/varint.dart';