my idea for testing:
1. prepare a basic testnet blockchain:
- mine huge coin in first blocks
- generate 2000 address
- send random coins (150-5000) to that addresses
- query the mnsecret for addresses
2. distribute this mnstart=foo string
- everyone can run 5-10 node in the wallet daemon (less memory than qt)
3. make some monitor program (we dont know anything about election)
- query the mnlist in every 1-10 seconds, put the data into a database
- make this until we have 1440 mn
- examine the stored data: how fast is chaning the score for a low/high price node, etc, etc
4. add/remove some node
- monitor the mnlist
- examine the data
i know it's seem a bit complicated, but this called engineering: we need test+datas to see how this works. Without concrete test, we just guessing and hoping!
I don't think we need to reverse engineer the code to find out how it works - it's already there on github for those who can understand it.
I like the general idea though.
What would make this really easy would be an RPC call to yield the output string that at the moment has to be laboriously CTRL+C'd from the QT client.
I've already written a simple script to take a bunch of those outputs and stick mnstart=foo lines in the .conf file. If spreadcoind could give you the output, the whole process could be automated and would only take minutes...
1. Generate (for example) 15 wallets, each with 100 masternode-qualifying collateral amounts.
2. Batch produce the spreadcoin.conf for each wallet.
3. Send wallet + corresponding spreadcoin.conf to each of the 15 testers.
edit:
If someone can make a 'getmnoutputs' RPC call, they could also presumably automate the rest too. So a user just has to run './spreadcoind generateserverconf' and the daemon could spit out a spreadcoin.conf by itself. It's fifteen lines of code in my clumsy python, I'm sure it's not that hard to incorporate this into the wallet itself, to make running Spread MNs even easier for the user...?
We should be aiming to make all this stuff 1-click simple for users.