No
Using the + indicator doesn't alter the way p2pool software runs, it doesn't tell it anything. + supplies information to the miner software (cgminer/bfg), that runs on the miner or whatever separate device you have controlling the ASIC boards. It tells the miner: do not send shares of difficulty lower than +n to the pool node. So: no extra shares are sent to the pool, it's the opposite.
Because + setting affects the mining software, it should be tuned for the hashrate of the individual mining device. So, for a standard Ant S3, somewhere between +256 and +512 will likely give the best results (rule of thumb is to use +1 for every 1 GH/s). + indicator must be set to get best performance for a given hashrate, otherwise the pool software becomes saturated with difficulty 1-2 shares that are not accepted on any pool these days (p2pool least of all...)
Are you stating that if you do not set the pseudo-share difficulty by using ADDRESS+n, then your miner will flood the p2pool node on which you're hashing with difficulty 1 shares? If that's the case, then why does the p2pool software even care about the "+"? In other words why would code exist in p2pool to handle you setting the pseudo-share difficulty at all if, as you state, it has no effect on the way the software runs?
From work.py:
self.pseudoshare_received = variable.Event()
desired_pseudoshare_target = None
desired_share_target = None
for symbol, parameter in zip(contents2[::2], contents2[1::2]):
if symbol == '+':
try:
desired_pseudoshare_target = bitcoin_data.difficulty_to_target(float(parameter))
except:
if p2pool.DEBUG:
log.err()
elif symbol == '/':
try:
desired_share_target = bitcoin_data.difficulty_to_target(float(parameter))
except:
if p2pool.DEBUG:
log.err()
if desired_pseudoshare_target is None:
target = 2**256-1
local_hash_rate = self._estimate_local_hash_rate()
if local_hash_rate is not None:
target = min(target,
bitcoin_data.average_attempts_to_target(local_hash_rate * 1)) # limit to 1 share response every second by modulating pseudoshare difficulty
else:
target = desired_pseudoshare_target
target = max(target, share_info['bits'].target)
for aux_work, index, hashes in mm_later:
target = max(target, aux_work['target'])
target = math.clip(target, self.node.net.PARENT.SANE_TARGET_RANGE)
Up to this point, I have been under the impression that p2pool dynamically tells the mining software to use the difficulty it assigns, or if the miner sets its own static pseudo-share difficulty, to use that one instead. I can see this happening in the logs, as well as in the UIs of my miners.
Let me give another example. If I set the pseudo-share difficulty to ADDRESS+1, I can see my graphs become very smooth. If I set the pseudo-share difficulty to ADDRESS+1000, the graphs become very spiked. If I do not set it at all, the graphs are somewhere in the middle. If your assertion that setting of the value has no bearing on p2pool were true, then not setting it, and setting it to ADDRESS+1 should have the same effect: a very smooth looking graph.
So, to conclude, if you do not set the pseudo-share difficulty, one is assigned to you based upon the hashing power on the node by the p2pool software. If you do set it, then your miners submit shares at or above the value you set. If you set this value to something extremely low, then you are indeed flooding the p2pool node with shares that are completely worthless, but your graphs will look nice. Hence, you are using more bandwidth, and the node is processing a bunch of useless work.