This discussion is feeling much more productive now. You were correct. I didn't want to you to respond to lots of that. I just wanted to provide a frame of reverence and define some terms. That way, when I ask questions about a how you propose to do X when you removed bitcoins X mechanism, we'll both be on the same terms.
I'm going to reply to your long post in sections. Otherwise I don't think I'll be able to keep up with so many threads when you respond again. Nothing in this post attempts to be critical of any of your ideas. I'm still trying to confirm I understand the logic behind them. (Which bitcoin issues were you attempting to fix)
I always meant anonymity in IP->wallet terms.
OK, so you are not opposed to anonymity. And I think I understand what you are saying. Please correct me If I'm wrong.
Defining EnCoin "client" as a human who wants to transact in ENC but does not run a continuous node. As such this client cannot (and does not want to) maintain a running tally of every EnCoin account balance in the system.
You are saying if a client wants to transact in ENC he must submit his transactions to some "Peer" who will have the ability to associate his IP address with the accounts listed in his submitted transaction. Fair enough.
This does not compromise any of the anonymity I care about. I (as a client) *have to* trust the processing peer to tell me the truth about my transaction and other transactions I cannot verify. If I trust the peer this much, trusting him with my IP address seems of little consequence. As long as that peer does not include my IP address with my transaction *and* broadcast that information to everyone. You don't seem to be claiming that is necessary, so that makes me happy!
In Bitcoin, it is very difficult to tell if a transaction originated from the peer that just sent it to you or somewhere else, because all peers spread all data.
I like this feature for anonymity reasons.
A huge waste of network resources and terribly unscalable.
I suggested as such in one of my first posts to this site. We are in agreement.
I understand your attempt to minimize the span of broadcasts as:
1) Defining the role of "client". Computers operating in this role, do not need to be part of any broadcast. They can either poll for information, or register call-backs for events they care about.
2) You expect there to be orders of magnitude more clients than the number of participating peers. Hence, the peer-to-peer broadcasts span becomes drastically narrower.
3) You are batching transactions into blocks by FreeNet. This narrows the network wide broadcast span to FN-to-FN. It does likely require defining a second kind broadcast. An intra-FreeNet broadcast restricted to only peers of a given FreeNet.
I accept these concepts. I suspect that you could leave out the (3) optimization and still create a system that scales well enough. I do recognize you are using these intra-FN broadcasts for other purposes as well. As such, I'm not lobbying against (3) just making a mental note for reasons that come later in this post.
Additional topology choices such as small-world vs spanning-tree or other optimization seem inappropriate at this time. Saying broadcast is good enough for me. I don't care how it is implemented at the moment.
Since, in the design proposal for EnCoin, peers (as opposed to freenet peers) do not need all data, peers only need to send transactions or request data that matter to themselves. It later occurred to me that "the cloud" in concept (sec. 9-2) could be used so that it is much less trivial to associate a wallet with an IP address without putting an additional, unnecessary load on freenet peers. Still working on whether or not that association is impossible or is at least at the same level as bitcoin's.
I'm not disagreeing with this section but I am confused about the terminology. I'm going to attempt to define some terms and summarize my understanding using them. Tell me if I'm understanding incorrectly.
Client: as defined above.
Peer: a continuously running node who attempts to maintain running account balances for every account in the EnCoin system. I think this means he at minimum, gets every transaction, gets the consensus agreed primary blocks, validates all transactions between the previous PB and the subsequent PB. After that, he may or may not keep the actual transactions and previous PBs. By my definition, a peer is *not required* to mine or participate in proof-of-work calculations in any way.
FNPeer: a peer in the above sense. But one who also chooses to belong to a FreeNet and to participate in mining along with the benefits of mining.
My intention for defining "peer" this way, was in relation to merchants or exchanges who have a business unrelated to mining. They have a vested interest in making sure the network is secure (free from theft, forgery, fraud, and history modification). If a merchant in this sense, identifies say "fraud". He knows with %100 certainty fraud has occurred. Even if a 51% plurality of the FreeNet trust vote denies any such fraud.
--- specific questions on your statement
Since, in the design proposal for EnCoin, peers (as opposed to freenet peers) do not need all data, peers only need to send transactions or request data that matter to themselves.
In the terms I used above, it seems your use of "peer" would be my use of "client". Is this correct?
Your use of "freenet peers" is equal to my use of "FNPeer". Is this correct?
If both are correct, I understand your statement.
Do you have the role I called "Peer" defined? What do you call it?
I would identify a "Peer" in this role as someone who provides "security" and "continuity" to the EnCoin system as a whole. I assert this is true even if such a node decided to never participate in reputation building or mining activities.
Do you agree?
It later occurred to me that "the cloud" in concept (sec. 9-2) could be used so that it is much less trivial to associate a wallet with an IP address without putting an additional, unnecessary load on freenet peers. Still working on whether or not that association is impossible or is at least at the same level as bitcoin's.
I understand what you are saying about the cloud. However, I'm not particularly concerned about the use-case. My thinking is, if some human demands anonymity, he should run his own peer. If we attempt to implement anonymity it should be defended at the peer-to-peer level.
If the human insists on only running a client, he must trust someone. He had better pick someone he trusts with his anonymity as well. If no one exists in this category, he must run his own peer.
I recognize you are saying, that each transaction gets put in a signed FN transaction block at the first FN hop it enters the network. That means any other peer can trace a particular transaction back to its FN of origin. If that FreeNet happens to be untrustworthy then it has your IP address. This is true for full peers as well as clients.
That is why I made my mental note above. If it turns out you can scale the inter-FN broadcasts without batching and signing, then you can avoid the intra-FN broadcast and reduce the number of nodes that can confirm the origin of a given transaction. I suspect that would put us back to closer to BitCoin's level of transaction origin anonymity. (3) above may be the case of "premature optimization".
However, as I pointed out above. I know there are other reasons for (3). I'm willing to listen to how they play out.