I WAS going to have fun with making 'username password v2' today, but i noticed/realized a snag in DNN, where sometimes the input UTXO might be older than the bitcoin block DNN's genesis block is anchored to, and a DNN node wouldn't have that data, and realizing transactions could come from bitcoin block 0/genesis, i was contemplating and figuring out a possible solution:
-almost no node indexes transactions for querying, so that's a bust
-i didn't want dnn to rely on electrum servers, small decentralization element + trust factor, so that's a bust (last resort)
-i could grab a minimum of block data, and while that's a lot smaller than downloading the full node, it's still kind of big and getting bigger with time, so that's also a bust
-i did figured out a super-nice trick, but because of market dynamics, this would put a weird limit and create ux confusion
So, after all that thinking and testing, what's the end solution? No headaches, hard limit:
Self-transfers with an input utxo found before the bitcoin block that dnn's genesis block is anchored to will not be accepted.
For most (99% and growing to 99.9%) won't be an issue, and if it does become an issue, the cost is just another self-transfer and they'd be all good.
Either way, after this, i'll see if i can have a detection mechanism for users to be aware of if they're doing a self-transfer for the purposes of acquiring an ID in DNN, to just have that nice UX warning so they don't hit that small road bump.