The new client is getting ready for release. Here are some of the nitty-gritty caveats and details.
There is the possibility of some pain points during this upgrade:
- Sexcoin has been vulnerable to transaction malleablity. This release addresses that issue. Once miners have updated, old clients will have a possibility (by our calculation about 5%) of creating transactions that will be completely rejected by the network. The way you know this has happened will be evident by this behavior:
An old client sends a transaction which gets broadcast to the network. It is recorded in the wallet as usual, and you see a zero confirm transaction. Because it has been broadcast to the network, the recieving client also shows an incoming, zero confirmed transaction. So now both the sender and receiver have transactions in their wallets, but with zero confirms. However, miners will reject the transaction and not include it in the blocks they assemble for processing. As time goes on, both wallets retain the record, waiting for it to confirm on the blockchain. This transaction will NEVER make it onto the blockchain. Old clients have marked these coins as 'unspendable' so the coins are tied up in the users wallet. The transaction at the receivers end will show as unconfirmed. This puts both sender and receiver in a unwanted position.
On old wallets, restarting your wallet with the '--rescan' might clear the problem...but not always. The only way I've found to work 100% is to start a new wallet, import the private keys from the old wallet, then let the wallet rebuild with the information from the blockchain.
On new wallets, you can restart the wallet with '--zapwallettxes=1' to clear unconfirmed transactions and free up the coins. This is much easier than having to import private keys, but still takes time.
I have begun work on adapting pywallet to work with sexcoin so we have a tool to deal with this, but will not have it done for quite a while.
IF THIS HAPPENS YOUR COINS HAVE NOT BEEN LOST! They are just inaccessible until your wallet is cleaned up. Its probably a good time to upgrade your wallet - Sexcoin has age verification flags in the current transaction version field. The old client rejects any 'transaction version != 1'. ANY age verified transaction, picked up by an OLD miner, will reject the transaction as invalid. See the above scenario. YMMV in this scenario. IF a miner wins a block that is mining with the new client the transaction will be accepted to the blockchain.
The remedy to this is to NOT USE AGE VERIFICATION (Set age verification to 'NONE' ) until a significant amount of miners have switched. This is why we are releasing to miners first. - The next Android release will refuse to connect to old nodes. This is the primary reason we are delaying release of the Android client. Once the network has significantly updated, the new Android client will be available.
I think when you fully understand the different permutations involved, you can see why the release got delayed for so long. Is it better to get miners first, then users? Is it better to upgrade users first, and pray they don't set age verification? Should we simply release and have everyone explode? Is there some way to code in a solution? This last question is what has taken the longest amount of time. We've attempted code solutions, but at the end of the day, the only effective changes that mitigate lie in changing the code in the old client, which obviously is stupid, if we're releasing a new client.