Commit Graph

51 Commits

Author SHA1 Message Date
UdjinM6
c1aa277286 set a cooldown for MN check 2015-08-08 13:36:30 +03:00
Evan Duffield
145c845d1f Changed vote restrition model
- Masternodes can only vote once per hour now, instead of 100 times a day total
- UI reports back errors now
2015-07-26 07:01:49 -07:00
Evan Duffield
b04faf6e2d Update lastPing in mapSeen obj, remove ping from CMasternode hash 2015-07-25 21:13:17 -07:00
UdjinM6
5a6e474ec6 include lastPing in mnb hash calculation 2015-07-25 09:22:58 +03:00
evan82
aa996b2615 Merge pull request #446 from UdjinM6/v0.12.0.x_fix_mnb_ping_acceptance
V0.12.0.x fix mnb ping acceptance
2015-07-20 11:21:15 -07:00
UdjinM6
cc26cff893 do not require active MN on ping check from UpdateFromNewBroadcast 2015-07-20 20:46:22 +03:00
Evan Duffield
77af4fb6ad MNP ping changes
- Ping every 5 minutes
- Nodes will propagate pings every 10 minutes
2015-07-20 10:44:27 -07:00
Evan Duffield
9c34930680 Disable nDos on early ping / sync regtest changes 2015-07-19 08:49:46 -07:00
UdjinM6
33ee068d6a Slightly refactor masternode statuses:
- better names (MASTERNODE_INITIAL was defined twice before that)
- move to proper header
2015-07-17 20:01:54 +03:00
UdjinM6
26fed43603 Major masternode broadcast/ping changes (incompatible with prev version, proto bump required):
- Do not rely on local lastTimeSeen and requested fRequested anymore. Use last know (signed) ping instead and base all logic on that. Should reduce mn list difference between
 nodes.
- Rework CActiveMasternode accordingly along with states, errorMessages, rpc etc.
- Clean some related code, move parts from public to private
- drop c_str in LogPrintf that were related to this functionality (todo: drop it for LogPrintf everywhere else)
2015-07-14 08:50:30 +03:00
UdjinM6
d94967d958 small fixes 2015-07-07 15:47:22 +03:00
Evan Duffield
4596e7f336 Vastly improved proposal management implementation
-Syncing now happens in stages. Masternodes and Sporks, then Masternode winners, then proposals. Some of these require the masternode signatures, otherwise there are race conditions within the syncing process itself.
-Resigning - When a proposal is sent to the network initially it's signed by a masternode, if that masternode goes inactive the proposal becomes invalid. Resigning allows other masternodes to update proposal keep it valid with the coming and going of masternodes.
-Resigning compatibility - non masternodes will scan and flag proposals as invalid to accept updated owners.
-Invalid votes are now actively removed from the proposals when they go inactive
- Remove budgets with negative votes of more than 10% of network
- Only allow proposals into budget that have more than 10% of network support
- Faster removal of inactive masternodes
2015-07-06 10:46:58 -07:00
Evan Duffield
f1b868f098 Removed PoSe due to consensus issues
- With nodes coming and going on the network, the network could come to different opinions about who should get paid next in line due to some nodes being flagged as failing a PoSe check. This will have to be fixed by introducing a blockchain based PoSe system, but that's out of the scope of this release. To fix the issues in the interrim, I'm removing PoSe checks for the time being.
2015-06-23 16:44:31 -07:00
Evan Duffield
43e6976695 merged 2015-06-23 10:53:12 -07:00
Evan Duffield
c72355335c Coinbase Payee Cache Implementation
- Masternode nLastPaid is removed and a new caching system that keeps the last 30 days of coinbase payees replaces it
- To deal with some significant attack vectors, the masternode donation feature was removed. The donation feature was added to support developement anyway, so this will be replaced by the budgeting code.
-  This code should allow the network to come to consensus about who should be paid pretty effectively
2015-06-23 10:48:03 -07:00
UdjinM6
a6a04cb5c1 refactor: dsee -> mnb 2015-06-23 18:40:08 +03:00
UdjinM6
91c7f66562 remove nLastPaid from CMasternodeBroadcast 2015-06-18 00:18:24 +03:00
UdjinM6
795ee119ec SecondsSincePayment (fix buffer overflow / change logic / move impl to cpp) 2015-06-17 23:03:09 +03:00
evan82
07fbdfc525 Merge pull request #356 from UdjinM6/v0.12.0.x_mnping_blockhash
V0.12.0.x add recent (tip - 12) blockhash to mnping
2015-06-09 20:04:12 -06:00
adios
f9b77c4376 Masternode broadcast's and ping's GetHash method fix 2015-06-09 17:22:31 +04:00
UdjinM6
19d9a65f8a add recent (tip - 12) block hash to mnping 2015-06-09 14:37:36 +03:00
Evan Duffield
bd4a7f2fad Masternode payment consensus via quorums
- Payees are chosen by their last payment, if no payment it's based on their hash
- Fixed a few issues with counting quorum votes
2015-05-28 10:45:31 -07:00
Evan Duffield
40149c4e41 Budgeting Software / Reference Node Removal
- Added commands for using budgets "mnbudget" and "mnfinalbudget"
- Supports 100% decentralized budget control and view-only site with json meta data object
2015-05-14 18:01:15 -07:00
Evan Duffield
969826c249 Reference Node / Stubbed Out Budget System
- Removed of reference node and replaced with decentralized quorums that pick the masternodes who get paid each block.
- Made a budgeting system, where masternodes can vote on individual budgets and the data is stored perminently on each clients computer
2015-04-30 07:55:37 -07:00
Evan Duffield
1e69e57662 Masternode Overhaul
- Added new CMasterBroadcast/CmasternodePing objects, with all of the code required to check each new message. SHould be much easier to tell what's going on now.
2015-04-17 23:44:49 -07:00
Evan Duffield
d25cf1af22 Split masternode and payments code 2015-04-16 13:26:18 -07:00
Evan Duffield
88f6a598b9 Updated Reference-Node Implementation
- Added nLastPaid to masternode information for persistant storage of the masternode payment cycle
- Masternodes get flagged as just paid when they enter the masternode list and must wait a full cycle to be paid again
- Masternode RPC commands now show short vin string instead of ip address
2015-04-16 07:08:06 -07:00
UdjinM6
dd39898a6b Merge branch 'master' into HEAD
Resolved conflicts:
	configure.ac
	src/clientversion.h
	src/qt/locale/dash_bg.ts
	src/qt/locale/dash_cmn.ts
	src/qt/locale/dash_de.ts
	src/qt/locale/dash_es.ts
	src/qt/locale/dash_fi.ts
	src/qt/locale/dash_pt.ts
	src/qt/locale/dash_ru.ts
	src/qt/locale/dash_sv.ts
	src/qt/locale/dash_vi.ts
	src/qt/res/icons/toolbar.png
	src/qt/res/icons/toolbar_testnet.png
2015-04-04 19:45:02 +03:00
UdjinM6
64eebc3316 0.12 dirty merge'n'fix (bitcoin 0.10) 2015-04-04 19:24:37 +03:00
UdjinM6
89f8a68a97 Fixes for "masternode list"
- fix descriptions and filtering in masternode list rpc, sort modes
- rename "active" to "status"
- move MN status string compilation to masternode.h
- "full" mode will use Status instead of IsEnabled now
2015-03-31 04:14:44 +03:00
Evan Duffield
6c9cc68449 version 12 2015-03-26 07:29:56 -07:00
UdjinM6
0fd7c655a4 move mn state enum inside class 2015-03-24 04:59:12 +03:00
UdjinM6
5c1621447d make sure nScanningErrorCount and nLastScanningErrorBlockHeight handled correctly 2015-03-24 04:52:27 +03:00
Evan Duffield
4152eea1c1 fixed ranking issues for PoSe 2015-03-23 05:59:22 -07:00
Evan Duffield
649937dc4f masternode voting improvements 2015-03-20 20:34:36 -07:00
Evan Duffield
412a6838c7 added masternode voting system for dash initiates 2015-03-20 11:24:11 -07:00
Evan Duffield
8cd7f8e980 Add structure for donating a percentage of ones earnings to another party via the protocol 2015-03-16 12:01:11 -07:00
Evan Duffield
e5267319ef Complete implementation of Proof-of-Service
- Ensures ports remain open and client are responsive to IX requests.
- Completely 100% decentralized. This farms out the work of checking the masternode network to the masternode network. 1% of the network is determistically selected to check another 1% of the network each block. It takes six separate checks to deactivate a node, thus making it tamper proof.
- Nodes are kept in the masternode list if they fail enough PoSe checks to deactivate. They will continue to be checked until the operator fixes them. However they will not be paid while they're failing checks.
2015-03-16 09:32:18 -07:00
Mike Kinney
98fe439af4 V0.11.2.x update comments 2015-03-05 00:10:15 -08:00
UdjinM6
b2017ebefa find oldest legit masternode to pay / naming "now" -> "sigTime" 2015-03-01 18:45:27 +03:00
Evan Duffield
848adbb2d3 Fixed compiling errors
std::stoi was introduced in C++11, should probably avoid using it
2015-02-26 07:23:06 -07:00
UdjinM6
2e05bf212e Change the way changes are handled:
- do not keep track of a single time variable for whole structure change
- save to masternode.dat and clear on checks:
  - who's asked for the masternode list and the last time
  - who we asked for the masternode list and the last time (will help to prevent dseg ban when restart wallet several times in short period of time)
  - which masternodes we've asked for
- do not use timeout for CheckAndRemove (played with that - doesn't make sense actually)
2015-02-26 02:21:28 +03:00
UdjinM6
dd1c1b7d1c CMasternodeMan - masternode manager class - part3 - connect ProcessMessage from mnodeman(rpc still broken) 2015-02-23 23:12:33 +03:00
UdjinM6
14e122cbfa CMasternodeMan - masternode manager class - part2 - fix ProcessMasternodeConnections/ThreadCheckDarkSendPool (still broken) 2015-02-23 23:07:37 +03:00
UdjinM6
adddff85a2 CMasternodeMan - masternode manager class - part1(broken) 2015-02-23 23:01:21 +03:00
Evan Duffield
a119b3008c use inventory system for masternode winners 2015-02-09 13:23:42 -07:00
Evan Duffield
412f54fe8a added improvements to hashing algorithm / block hash caching 2015-02-05 15:56:59 -07:00
Evan Duffield
feb9a1e922 Improved masternode payments 2015-02-03 10:17:30 -07:00
Evan Duffield
678a43c35b disable reference node code when key is not present 2015-01-20 03:02:11 -07:00
Evan Duffield
826b18c41f Regtest+Darksend / Dsee update / vecMasternodes
- Made masternodes/darksend compatible with regression testing mode (a local-only blockchain that doesn't require mining). Developers can now test multiple rounds in a few minutes without waiting on mining (much faster).
- Added dsee security verification to v11
- darkSendMasternodes -> vecMasternodes (must clearer)
2014-12-30 19:54:00 -07:00