OK, but, if we want to be able to calculate probabilities, there must be a good math model of how these weights can be simulated (i.e., something like this: "one can assume that weights of accounts are independent Exponential random variables with expectations equal (or proportional?) to their balances"). Without such a model, it would be difficult to proceed...
So for each account we take the first 8 bytes of an SHA256 hash of the "previous block sig + your account #" to get a "base target" (so an unpredictable 8 byte value that changes with every block). We then multiply this by your account's balance and the time (in seconds) since the last block to come up with your "current target".
There is also a "minimum target" value set in order to prevent spam (i.e. we don't want the network clogged up with people broadcasting "losing tickets"). This value is not overly important so I wouldn't worry too much about including it in the model (or just pretend it is a constant maybe).
Note that the time multiplication is really just to "widen" everyone's chance so that it won't take more than 60 seconds for "someone" to have a "current target" > "minimum target" and then broadcast their block.
When considering what is a "better block" time would be removed from the equation (so best "block target" is always the "base target" multiplied by "account balance") so the whole "time" thing could be left out of the model (just want you to be clear how the system works).
How the "weight of the blockchain" is defined? Do you just add the weights of all blocks? Or, say, last k blocks? Can it be a weighted sum?
The weight is simply the sum of each "block target" in the chain (as far as I am aware - will reply again if I've got anything wrong).
Also, a question about the network topology: how is it decided, who will connect to who? In particular, can a "bad guy" just choose, to which nodes it will be connected?
Each node will generally connect to as many nodes as it can within max. limits set and it will ask each node it connects to for that nodes connections also but of course a bad guy could choose to only connect to certain nodes.
A node will disconnect from another if that node "spams" it or has gone "quiet" for too long (to prevent wasting memory on non-functioning connections).