Below is a WIP list of software that checks for DAA in headers (as opposed to trusting a full node) when interacting with the blockchain, and hence need to be updated for new algorithms when DAA is changed.
Please feel free to post other pieces missed (I’ll edit into main list where I can), and post evidence pointing to code where not immediately obvious.
Actually, p2pool is slightly affected. Normally, p2pool just uses the getblocktemplate API results from bitcoind to construct new blocks, which allows p2pool to rely on bitcoind’s DAA implementation. However, when p2pool hears about a new block header from a p2pool peer instead of from bitcoind (e.g. when the header propagates significantly faster than the block), then p2pool will construct its own block header and do “SPV” mining/VFM of an empty block. This feature is rarely used on BCH, due to the small average block size and rapid block propagation speed, but has been used on BTC a few times. I’ve mined at least one BTC block myself with p2pool using this feature.
That said, the current p2pool code does not even support the current BCH DAA. The code currently just assumes that the new difficulty (nBits) is equal to the previous block’s difficulty, which is valid for 2015 out of 2016 blocks in BTC and LTC, but generally invalid on BCH.
Adding support for the existing BCH DAA to p2pool would be difficult, as p2pool does not maintain a record of the last 146 BCH block headers. However, adding support for ASERT would be easy, as it only requires the most recent block’s header, which p2pool definitely has (it’s bb in the code above).
So p2pool is slightly affected, but in a positive way.
I remember back when Aaron Voisine was originally implementing breadwallet, he decided to implement it all himself rather then use bitcoinj at the time.
Zapit wallet uses bitbox (flutter), bitdb and slpdb. Is there something that we should be aware of or we would be considered under the Not Affected category.