Table of Contents
Pygossip is a pull model gossip protocol. This protocol periodically selects
a random live member from its knowledge, and try to set up a TCP/IP connection to the selected
node to attempt a gossip.
Pygossip key features:
- Maintained the connected member table
- Maintained blacklist blocking failure nodes
- Supported adversarial gossiping feature
- Gossip to a random selected member every 3 seconds
├── README.md
├── communication
│ ├── __init__.py
│ ├── connection.py
│ ├── sender.py
│ └── server.py
├── controller
│ ├── __init__.py
│ ├── adversarial_controller.py
│ └── server_controller.py
├── gossip_main.py
└── util
├── __init__.py
├── constants.py
└── gossip_msg.py- Clone the repo
git clone https://github.com/Zhaoyu-W/Pygossip
- Run the main script
python3 gossip_main.py {ip_address} {tcp_port} {initial_state} - Command input
!: list all the connections in csv format e.g: 128.84.213.13:5678,1630281124,1 128.84.213.43:9876,1630282312,7 ?: list all the connections in identifier --> state format e.g: 128.84.213.13:5678 --> 1 128.84.213.43:9876 --> 7 +{ip_address}:{tcp_port}: connect to new node [0-9]: change the server state Y: turn on adversarial gossip N: turn off adversarial gossip
Zhaoyu Wang - @Zhaoyu_W - zhaoyu.wang1999@gmail.com Project Link: https://github.com/Zhaoyu-W/Pygossip