compare_share() doesn't implement strict ordering
store_share() uses MDB_APPENDDUP to avoid problem with compare_share
MDB_APPENDDUP may fail since the following pair of valid shares can't added in specified order:
1. {share1, share2 | (share1.timestamp < share2.timestamp) && (share1.address > share2.address)}
2. {share1, share2 | (share1.timestamp > share2.timestamp) && (share1.address == share2.address)}
If there is no plan to avoid usage of MDB_APPENDDUP in store_share()
then compare_share() can be modified to use only timestamp field
thus avoid MDB_APPENDDUP fail in the first case.