Reference client for Bitmessage: a P2P encrypted decentralised communication protocol https://bitmesage.org
This repository has been archived on 2025-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Your Name 533e2dd99b The idea behind this fix is to prioritize the outgoing object inventory by proof of work strength and calculate at least as much proof of work on the messages we originate so they never have much less than average priority. To achieve this goal the following changes were made:
-arithmetic.py-
Defines isqrt function to calculate integer square roots of large integers.
-shared.py-
Defines averageNonceTrialsPerByteActual, countNonceTrialsPerByteActual, and the addInventory function (to calculate these values and add objects to inventory). Code updated to call addInventory when adding objects to inventory.
-helper_startup.py-
Adds 'averagenoncetrialsperbyteactual' and 'countnoncetrialsperbyteactual' to newly generated keys.dat files.
-class_sqlThread.py-
Reads 'averagenoncetrialsperbyteactual' and 'countnoncetrialsperbyteactual' from keys.dat (or adds them if they don't exist) and resets 'countnoncetrialsperbyteactual' to its square root (with arithmetic.isqrt) when vacuuming messages.dat.
-class_singleCleaner.py-
Writes 'averagenoncetrialsperbyteactual' and 'countnoncetrialsperbyteactual' to disk when the sql database is written to disk.
-class_singleWorker.py-
Defines prioritizeTarget function (to calculate POW targets with a minimum of averageNonceTrialsPerByteActual, for large inventories, and averageNonceTrialsPerByteActual/2, for small inventories). Code updated to call shared.addInventory when adding objects to inventory and to call prioritizeTarget as the last step when calculating targets.
-class_receiveDataThread-
Sorts outgoing inventory by decreasing nonceTrialsPerByteActual (ie increasing proof strength).

Warning: "Max acceptable difficulty" settings are not implemented as method for limiting the POW specified by the new parameter. We will not be implementing it, but will instead focus on porting the spam fix to the upcoming V3 protocol.
2014-09-24 21:17:12 +00:00
archpackage Increment version number to 0.4.2 2014-01-20 23:04:41 -05:00
debian Changelog must be in chronological order 2014-03-06 21:12:26 +00:00
desktop Packaging for multiple distros 2013-07-12 10:36:28 +01:00
ebuildpackage -aChanged version to 0.3.5 2013-07-29 22:19:15 +01:00
man Packaging for multiple distros 2013-07-12 10:36:28 +01:00
puppypackage Packaging updated to be architecture independent 2013-08-11 12:07:54 +01:00
rpmpackage Changelog must be in chronological order 2014-03-06 21:12:26 +00:00
slackpackage Packaging for multiple distros 2013-07-12 10:36:28 +01:00
src The idea behind this fix is to prioritize the outgoing object inventory by proof of work strength and calculate at least as much proof of work on the messages we originate so they never have much less than average priority. To achieve this goal the following changes were made: 2014-09-24 21:17:12 +00:00
.gitignore Adding src/.settings/ to .gitignore (for Eclipse developers) 2013-06-23 21:17:34 +01:00
arch.sh Update arch.sh 2014-01-24 08:19:29 -08:00
configure Packaging for multiple distros 2013-07-12 10:36:28 +01:00
COPYING changed 2013 to 2014 in copyright notices 2014-01-21 22:41:48 -05:00
debian.sh Merge pull request #654 from bashrc/master 2014-05-19 16:06:45 -04:00
ebuild.sh Update ebuild.sh 2014-01-24 08:21:01 -08:00
generate.sh Increment version number to 0.4.2 2014-01-20 23:04:41 -05:00
INSTALL.md Updated Install.md 2014-01-24 08:16:28 -08:00
LICENSE changed 2013 to 2014 in copyright notices 2014-01-21 22:41:48 -05:00
Makefile Exclude debian directory from orig.tar.gz #651 2014-03-05 20:36:13 +00:00
osx.sh Force the right version of osx in the build script 2013-09-27 10:28:01 -04:00
puppy.sh Increment version number to 0.4.2 2014-01-20 23:04:41 -05:00
README.md Made references capitalised 2014-08-06 20:08:37 +01:00
rpm.sh Update rpm.sh 2014-01-24 08:22:01 -08:00
slack.sh Increment version number to 0.4.2 2014-01-20 23:04:41 -05:00

PyBitmessage

Bitmessage is a P2P communications protocol used to send encrypted messages to another person or to many subscribers. It is decentralized and trustless, meaning that you need-not inherently trust any entities like root certificate authorities. It uses strong authentication, which means that the sender of a message cannot be spoofed, and it aims to hide "non-content" data, like the sender and receiver of messages, from passive eavesdroppers like those running warrantless wiretapping programs.

Development

Bitmessage is a collaborative project. You are welcome to submit pull requests although if you plan to put a non-trivial amount of work into coding new features, it is recommended that you first solicit feedback on the DevTalk pseudo-mailing list: BM-2D9QKN4teYRvoq2fyzpiftPh9WP9qggtzh

References