seems simple enough, but just so that i'm clear, would that mean that bfs would go forward (oldest -> recent)?
No, choice of traversal order is orthogonal to choice of traversal direction.
In context of coloring, the difference between DFS and BFS is in how fast they detect uncolored outputs. There is no performance difference for colored outputs, they need to go through all transactions in history anyway.
DFS can detect uncolored outputs faster, basically it just goes to nearest coinbase transaction, which is by definition uncolored.
this may come from being a bitcoin n00b, but i'm 100% in favor of spv over full node. i just can't see how having the full blockchain is practical for "most" users and given the amount of complaining about latent SD "dust spam", i don't think it should be. my belief is that "most" users should find node(s) that they TRUST
When implemented properly SPV requires no trust. If it requires trust, it isn't SPV. See here:
https://en.bitcoin.it/wiki/Thin_Client_Security (like they would a traditional bank) and simply run a thin-client. given the strength of cloud-computing, SAAS and the like, heavy "client-side" processing (especially in the browser -- which is where i like to live)
We can use servers, but we don't need to trust them.
that's the problem i would have. i'm looking to distribute shares in batches (maybe 20+ over time). "genesis" would force everyone to update their definitions after each batch. "issuing address" would mean that i can even have private offerings and everyone would still be able to easily track the outstanding distribution.
You can issue maximum authorized number of shares via single genesis, but park them on issuer's address and distribute as needed.
This way accounting is same as with "issuing address": number of outstanding shares = number of issued shares - number of shares held on issuer's address.
However, it is just easier to track shares back to one genesis transaction output... Also it limits maximal number of shares.
I think "issuing address" makes sense only if you absolutely cannot issue shares in one batch. For example, if shares have large "metal value" so issuing them costs money.
what do you mean by exotic transactions? unfortunately, my creative thinking seems stalled.
The usual Bitcoin output script (
https://en.bitcoin.it/wiki/Script) pays to a single address.
But there are many other possibilities. Say, m-of-n multi-signature scripts. (They are standard now.)
Also, contracts:
https://en.bitcoin.it/wiki/ContractsWhen you have something other than simplest transaction you cannot associate a single address with it.
could you please elaborate on HOW you could provide that proof? (i'm guessing it has something to do with merkle trees???)
Yes, Merkle trees... Basically you send a bunch of hashes to prove that transaction is linked to a block. But the whole scheme is rather contrived.
this way, the burden then rests squarely on the server's implementation and capabilities. i have this idea in my head that it would be ideal to have at least enough ram to hold the FULL blockchain. bitcoinjs is currently around 13GB (with my mods almost 20GB). so does a 32GB nodejs/event-driven server seem practical? too much? possibly not enough? (obviously load-balancing could also be used)
Yes, it is definitely doable, but blockchain will grow in future, so it isn't clear how it can work in future.