Atomic Charge is a seeding-only BitTorrent client.
The torrent protocol is designed to negotiate peers for file transfer (via trackers or DHT) dynamically. This guarantees a fair distribution of the pieces among all peers. Atomic Charge sends to a single peer exclusively.
Say you have downloaded a file from a torrent and want a friend of yours to receive it too. Instead of initiating a direct connection to your friend you can augment her torrent download -- and hers only. Thereby she will fetch the file from your uplink and the swarm. All you need for this to work is a common torrent file, its finished files, your friend's IP and her listening port.
Example:
You download
beach_party.torrent
, containingbeachparty.avi
.Your friend expresses interest in the file.
Your friend connects to the torrent, downloading the file with the same speed as you did.
Your friend tells you his torrent client is listening on the default port, 6881, from his IP 10.11.12.13.
You start charging your friend:
./atomic_charge.py beach_party.torrent beachparty.avi 10.11.12.13 6881
Your friend receives the file much faster. Yay!
The unfair game resulting from this behaviour stems directly from a flaw in the torrent protocol: peers announce their download status to other peers in a private connection. The swarm does not necessarily receive full, let alone consistent, data; clients accept pieces (parts of a file) from any interesting peer. The peer to peer nature of the torrent protocol allows you to communicate with a single peer only if you chose so.