ACN - Agent Communication Network

The libp2p_node is an integral part of the ACN.

ACN - Agent Communication Network

The agent communication network (ACN) provides a system for agents to find each other and communicate, solely based on their wallet addresses. It addresses the message delivery problem.

For more details check out the docs.

Development

To run all tests run:

go test -p 1 -timeout 0 -count 1 -v ./...

To lint:

golines . -w
golangci-lint run
staticcheck ./...

For mocks generation: check https://github.com/golang/mock

Messaging patterns

Interaction protocol


ACN


TCP/UDP/...


Messaging patterns inwards ACN:

Connection (p2p_libp2p_client) > Delegate Client > Relay Peer > Peer (Discouraged!)

Connection (p2p_libp2p_client) > Delegate Client > Peer

Connection (p2p_libp2p) > Relay Peer > Peer

Connection (p2p_libp2p) > Peer

Messaging patterns outwards ACN

Peer > Relay Peer > Delegate Client > Connection (p2p_libp2p_client) (Discouraged!)

Peer > Relay Peer > Connection (p2p_libp2p)

Peer > Delegate Client > Connection (p2p_libp2p_client)

Peer > Connection (p2p_libp2p)

In total 44 = 16 patterns (practically: 33 = 9 patterns)

Guarantees

ACN should guarantee total ordering of messages for all agent pairs, independent of the type of connection and ACN messaging pattern used.

Advanced feature (post v1):

Furthermore, there is the agent mobility. An agent can move between entry-points (Relay Peer/Peer/Delegate Client). The ACN must ensure that all messaging patterns maintain total ordering of messages for agent pairs during the move.

ACN protocols

The ACN has the following protocols:

  • register
  • lookup
  • unregister (dealt with by DHT defaults)
  • DHT default protocols in libp2p
  • message delivery protocol
Owner
Valory
Building crypto's open and autonomous service layer
Valory
Comments
  • docs/update README.md

    docs/update README.md

    updating README:

    • remove referencing usage of open-aea to generate the keys and peer id. This section / version will be ported to open-aea repo.
    • passing necessary configuration via environmental variables instead of copying key file and passing the configuration via CLI arguments
    • example showcasing starting an entry node connecting to the bootstrap node.
  • feat: ACN image

    feat: ACN image

    We

    This introduces the run_acn_node_standalone script and Dockerfile previously developed by 8ball030. The Dockerfile has been modified:

    • to target this repository
    • to use git instead of subversion
    • updated golang to 1.17.7
  • PR template

    PR template

    code was not matching open-aea. Decided to make this explicit in a PR template as it will break tests on open-aea main branch which should not occur

    added a ticket to trello to turn open-acn into a submodule of open-aea to prevent such occurrence in the future

  • Feat/update protobuf

    Feat/update protobuf

    updated protobuf module because the one we were using was deprecated

    go: module github.com/golang/protobuf is deprecated: Use the "google.golang.org/protobuf" module instead.

  • libp2p extra logging on internode communication #2699

    libp2p extra logging on internode communication #2699

    Additional logging ported from https://github.com/fetchai/agents-aea/pull/2699

    Should not be merged before open-aea is updated, because tests that checks for code similarity will otherwise fail

  • stacktrace and imports

    stacktrace and imports

    goal: matching open-aea implementation

    changes:

    • clean up import statements, make crypto imports more explicit
    • add traceback

    checks:

    • verified make test passes locally
    • verified the code matches the code on the open-aea repo locally
    • verified the open-aea code passes all test_p2p_libp2p tests locally
  • test:workflow

    test:workflow

    I minimized the workflow.yml and added some protolint related things to the makefile. It uses go, not sure if it should be here though, but that holds for more. The first commit is simply adding the workflow.yml, the second contains the alterations I made

A library for communication with solar power inverters of the RCT power brand, not endorsed by or affiliated with the eponymous company.

rct A library for communication with solar power inverters of the RCT power brand. Tested with the RCT PS 6.0 solar power inverter, battery and grid p

Dec 21, 2022
Transport to allow go-libp2p applications to natively use i2p for communication

I2P Transport for go-libp2p This library can be used to build go-libp2p applications using the i2p network. Look at transport_test.go for example usag

Sep 15, 2022
Simple & Primitive multi client communication system

What is this Simple & Primitive multi client communication system. e.g. chat system for larning Supported Broadcast message Unicast message Not Suppor

Dec 3, 2021
Episode VII: The DB Awakens (fully stablished JSON communication system)

APITrials0.7 Episode VII: The DB Awakens (fully stablished JSON communication system) Captain's log: Im too deep into the rabbit hole now. This seems

Jan 10, 2022
Furui - A process-based communication control system for containers

furui Communication control of the container runtime environment(now only docker

Mar 26, 2022
Provides communication with USB Human Interface Devices.

This package is discontinued This package does not work with Go1.6+. I won't be updating this package since a better alternative is already available,

Dec 1, 2022
Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and deadline support. MIT Licensed.

socket Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and d

Dec 14, 2022
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Dec 31, 2022
Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface).

windows-ndi-optimizer[WIP] Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface). How it works This is batchfile d

Apr 15, 2022
A simple network analyzer that capture http network traffic
A simple network analyzer that capture http network traffic

httpcap A simple network analyzer that captures http network traffic. support Windows/MacOS/Linux/OpenWrt(x64) https only capture clienthello colorful

Oct 25, 2022
Extended ssh-agent which supports git commit signing over ssh

ssh-agentx ssh-agentx Rationale Requirements Configuration ssh-agentx Configuration ssh-gpg-signer Linux Windows Signing commits after configuration T

Jun 29, 2022
A very simple ssh-agent that signs requests in parallel

ssh-agent A very simple ssh-agent that signs requests in parallel. Usage To install and run the agent simply run: $ go install github.com/Woellchen/ss

Dec 14, 2022
Provides agent and server plugins for SPIRE to allow Tailscale node attestation.

SPIRE Tailscale Plugin ⚠️ this node attestation plugin relies on a Tailscale OIDC id-token feature, which is marked as Work-in-Progress and may not be

May 22, 2022
🚀Gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers.
🚀Gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers.

gev 中文 | English gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily bui

Jan 6, 2023
gNXI Tools - gRPC Network Management/Operations Interface Tools

gNxI Tools gNMI - gRPC Network Management Interface gNOI - gRPC Network Operations Interface A collection of tools for Network Management that use the

Dec 15, 2022
Simulate network link speed

linkio linkio provides an io.Reader and io.Writer that simulate a network connection of a certain speed, e.g. to simulate a mobile connection. Quick s

Sep 27, 2022
NFF-Go -Network Function Framework for GO (former YANFF)

Network Function Framework for Go (former YANFF) Wonderful news : we are now supporting AF_XDP and supporting(almost) getting packets directly from Li

Dec 28, 2022
Send network packets over a TCP or UDP connection.

Packet is the main class representing a single network message. It has a byte code indicating the type of the message and a []byte type payload.

Nov 28, 2022
A cloud native distributed streaming network telemetry.
A cloud native distributed streaming network telemetry.

Panoptes Streaming Panoptes Streaming is a cloud native distributed streaming network telemetry. It can be installed as a single binary or clustered n

Sep 27, 2022