Skip to content

Commit

Permalink
3.5.8.8-Mandatory
Browse files Browse the repository at this point in the history
Gridcoin Research 3.5.8.8/MSI=42.2
Mandatory Upgrade

- Resolve syncing problem with beacon business logic.
  • Loading branch information
gridcoin committed Apr 2, 2017
1 parent 419db74 commit 63547b1
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 18 deletions.
2 changes: 1 addition & 1 deletion Makefile.Debug
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#############################################################################
# Makefile for building: gridcoinresearch
# Generated by qmake (2.01a) (Qt 4.8.4) on: Sun Mar 26 17:49:04 2017
# Generated by qmake (2.01a) (Qt 4.8.4) on: Sun Apr 2 08:08:53 2017
# Project: gridcoinresearch.pro
# Template: app
#############################################################################
Expand Down
2 changes: 1 addition & 1 deletion Makefile.Release
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#############################################################################
# Makefile for building: gridcoinresearch
# Generated by qmake (2.01a) (Qt 4.8.4) on: Sun Mar 26 17:49:05 2017
# Generated by qmake (2.01a) (Qt 4.8.4) on: Sun Apr 2 08:08:54 2017
# Project: gridcoinresearch.pro
# Template: app
#############################################################################
Expand Down
20 changes: 10 additions & 10 deletions contrib/Installer/GridcoinInstaller/GridcoinResearch.vdproj
Original file line number Diff line number Diff line change
Expand Up @@ -232,37 +232,37 @@
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_6408A3D03D15E306A4C3FC5FD95ADA69"
"OwnerKey" = "8:_7A0EA93E644A4D9E8037FBB3C062DD65"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_32F2DC723F30362B0B78F9A291EC0098"
"OwnerKey" = "8:_6AEABB5004EC4B57225B51B085DB5625"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_DEB886DE05C496A5AD26B43C4B1B90B9"
"OwnerKey" = "8:_5644D8F767F33372E534FBD5A2384D12"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_5644D8F767F33372E534FBD5A2384D12"
"OwnerKey" = "8:_DEB886DE05C496A5AD26B43C4B1B90B9"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_6AEABB5004EC4B57225B51B085DB5625"
"OwnerKey" = "8:_32F2DC723F30362B0B78F9A291EC0098"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_7A0EA93E644A4D9E8037FBB3C062DD65"
"OwnerKey" = "8:_6408A3D03D15E306A4C3FC5FD95ADA69"
"MsmSig" = "8:_UNDEFINED"
}
}
Expand Down Expand Up @@ -1084,19 +1084,19 @@
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:Gridcoin Research"
"ProductCode" = "8:{841D7D7B-708C-4FB6-952D-FE393085E82D}"
"PackageCode" = "8:{B62D5B84-E542-4BA2-9024-E4D93CD8DBA7}"
"ProductCode" = "8:{187182ED-AEF9-46D8-91FD-4839828A6C9D}"
"PackageCode" = "8:{417B50AD-DB90-4AFC-BA6A-9022A071FD61}"
"UpgradeCode" = "8:{9617E9EA-252F-43CE-B53E-B48C85F71192}"
"AspNetVersion" = "8:4.0.30319.0"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:FALSE"
"InstallAllUsers" = "11:TRUE"
"ProductVersion" = "8:42.1"
"ProductVersion" = "8:42.2"
"Manufacturer" = "8:GridcoinResearch"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"
"Title" = "8:Gridcoin Research 42.1"
"Title" = "8:Gridcoin Research 42.2"
"Subject" = "8:"
"ARPCONTACT" = "8:The Gridcoin Developers"
"Keywords" = "8:Gridcoin Research"
Expand Down
2 changes: 1 addition & 1 deletion src/clientversion.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#define CLIENT_VERSION_MAJOR 3
#define CLIENT_VERSION_MINOR 5
#define CLIENT_VERSION_REVISION 8
#define CLIENT_VERSION_BUILD 7
#define CLIENT_VERSION_BUILD 8

// Converts the parameter X to a string after macro replacement on X has been performed.
// Don't merge these into one macro!
Expand Down
8 changes: 4 additions & 4 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ extern void FlushGridcoinBlockFile(bool fFinalize);
std::string msHDDSerial = "";
//When syncing, we grandfather block rejection rules up to this block, as rules became stricter over time and fields changed

int nGrandfather = 854400;
int nGrandfather = 860000;
int nNewIndex = 271625;
int nNewIndex2 = 364500;

Expand Down Expand Up @@ -4370,11 +4370,11 @@ bool CBlock::CheckBlock(std::string sCaller, int height1, int64_t Mint, bool fCh
if (fDebug10) printf("BV %f, CV %f ",bv,cvn);
// if (bv+10 < cvn) return error("ConnectBlock[]: Old client version after mandatory upgrade - block rejected\r\n");
// Enforce Beacon Age
if (bv < 3587 && height1 > 855000 && !fTestNet) return error("CheckBlock[]: Old client spamming new blocks after mandatory upgrade \r\n");
if (bv < 3588 && height1 > 860500 && !fTestNet) return error("CheckBlock[]: Old client spamming new blocks after mandatory upgrade \r\n");
if (bv < 3580 && fTestNet) return DoS(25, error("CheckBlock[]: Old testnet client spamming new blocks after mandatory upgrade \r\n"));
}

if (bb.cpid != "INVESTOR" && height1 > nGrandfather)
if (bb.cpid != "INVESTOR" && height1 > nGrandfather && BlockNeedsChecked(nTime))
{
if (bb.projectname.empty() && !IsResearchAgeEnabled(height1)) return DoS(1,error("CheckBlock::PoR Project Name invalid"));
if (!fLoadingIndex && !IsCPIDValidv2(bb,height1))
Expand Down Expand Up @@ -7170,7 +7170,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
return false;
}

if (pfrom->nVersion < 180322 && !fTestNet && pindexBest->nHeight > 855000)
if (pfrom->nVersion < 180323 && !fTestNet && pindexBest->nHeight > 860500)
{
// disconnect from peers older than this proto version - Enforce Beacon Age - 3-26-2017
if (fDebug10) printf("partner %s using obsolete version %i (before enforcing beacon age); disconnecting\n", pfrom->addr.ToString().c_str(), pfrom->nVersion);
Expand Down
2 changes: 1 addition & 1 deletion src/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ extern int MINOR_VERSION;
///////////////////////////////////////////////////////////
// network protocol versioning //
// //
static const int PROTOCOL_VERSION = 180322; //
static const int PROTOCOL_VERSION = 180323; //
// disconnect from peers older than this proto version //
static const int MIN_PEER_PROTO_VERSION = 180284; //
///////////////////////////////////////////////////////////
Expand Down

20 comments on commit 63547b1

@Dantali0n
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find the time I have to upgrade to a new mandatory upgrade short, to the point where I am now actively monitoring this github repository to keep up. Also the website does not list the current version or if there has been any update. The only 'media' way to know there is a new mandatory version is 'that one tweet'.

I would suggest trying to find ways to improve the communication of mandatory updates as I expect this may be one of the reasons there are clients staying on old versions.

@iFoggz
Copy link
Member

@iFoggz iFoggz commented on 63547b1 Apr 2, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would be nice if once in awhile the client checks for an updated version and makes a popup saying there is a new version or in the mininginfo section? atleast and wheather its mandatory or not. thatd be a little more effective? wheather checking online for a new version number .

@ceo75
Copy link

@ceo75 ceo75 commented on 63547b1 Apr 3, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, there should be better mechanism for forcing checks against the current version. Ultimately, the application should be able to present a non-technical user with an easy experience keeping up-to-date.

Maybe just adding a couple strings on the overview, one showing client rev and one showing latest available rev. It could highlight red if client is out of sync? That could help draw people to be more aware of updates.

@grctest
Copy link
Contributor

@grctest grctest commented on 63547b1 Apr 3, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Dantali0n Join the Telegram group if you don't use IRC https://t.me/gridcoin

@Dantali0n
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@grctest Thanks for the suggestion but it's not really about me, we have to look at the grand scheme of things. Organizations like bittrex or eobot running this client, none technical users etc. We can't expect all of them to actively monitor IRC, Telegram or Github in order to be notified of an update. (Bittrex still has GRC 'wallet maintenance')

In my opinion it would be a good idea to spent time and effort into making a release schedule. With this schedule we could communicate mandatory updates way in advance making sure all users are ready to update when the time comes.

In the GUI options of the client there is also this 'automatic update' button which does not seem to work at least not for me. It would be amazing if users there clients would automatically update.

In all fairness I understand that making things like release schedules or implementing automatic updates is hard but it would still be a good idea to look into it.

@philipswift
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I concur with above. You have to treat users like fools although obviously, most are not. Education and a strict AUP (Acceptable Use Policy) that contracts the user to taking responsibility for their own actions/inactions is the only way to do it. You need a streamline classy look with hardly any switches or knobs. The less user input the better. Download the Windows wallet for Ethereum and take in the design, ergonomics and function. Have a rant at me, I don't mind. We are getting in a right mess here and the only way is strict structured ways of doing things already proven in Enterprise IT such as ITIL service management. The wallet should update itself. If it needs a reboot then the only input a user should have is to be able to set a preferred reboot window. This should be stated in the AUP and signed for by proxy on downloading the initial exe or msi file.

@tomasbrod
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"The wallet should update itself" I don't agree. The user should be notified of release, but he needs to confirm the download and install. Especially on linux, every program that updates or modifies itself is considered a virus (trojan?). There are package managers and market to update your packages. Additionally I am for more knobs, settings and information in the wallet gui (instead of editing config files).

@philipswift
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm referring to Windows only which the majority will be using. If you think more bells and whistles is good for the average Windows user you are a fool yourself. In fact I'd say the average user on any O/S needs simple but powerful GUI. If you are happy to man the support and help channels go for it. If not, then kindly keep your ill-informed opinions to yourself.

@grctest
Copy link
Contributor

@grctest grctest commented on 63547b1 Apr 4, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Dantali0n

Organizations like bittrex or eobot running this client

Erkan-Yilmaz/Gridcoin-tasks#95

none technical users etc.

We try to contact all users through multiple social media platforms, but unfortunately not everyone is active enough to take notice. Users should join telegram, follow the twitter account, subscribe to the announcement thread on cryptocointalk, enable release notifications in this repo, etc.

I agree with @tomasbrod that an auto-upgrader goes against what many would deem acceptable, if you want an always up-to-date client you can use tools to automate upgrades.

In my opinion it would be a good idea to spent time and effort into making a release schedule. With this schedule we could communicate mandatory updates way in advance making sure all users are ready to update when the time comes.

Normally this would be the case, but these releases were not planned - they were mandatory due to glitches which were/are causing syncing issues and potentially forks. With planned mandatory releases we notify the services/exchanges weeks in advance.

@iFoggz
Copy link
Member

@iFoggz iFoggz commented on 63547b1 Apr 4, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i dont agree with auto upgrade as that could be dangerous. just a label saying upgrade avaiable on wallet would be good in my opionon. also make it more easier for people to follow the social platform accounts of gridcoin (maybe in about gridcoin window).

@grctest
Copy link
Contributor

@grctest grctest commented on 63547b1 Apr 4, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could scrape the latest release from github within the client, rather than looking for version numbers greater than your client within getpeerinfo, that's one way we could introduce an update notification..

@iFoggz
Copy link
Member

@iFoggz iFoggz commented on 63547b1 Apr 4, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@grctest i think from github is a sound idea. only thing i think could be an issue possibly is precompiled can take a little longer to be released versus what is on there immediatly from an update. but i agree with your idea of scrape

@Dantali0n
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@grctest That way we block a potential vulnerability where malicious clients with high version numbers are introduced into the network to trigger update alerts on clients. Sounds like a good idea to use Github as a source for checking the most recent version.

@philipswift
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would totally agree if we didn't need the majority of clients at latest mandatory to effect a graceful resolution. Compromise suggests this maybe.... 'only windows X only when a mandatory is issued X only when the mandatory upgrade is to repair a failed engine (eg: not cosmetic or wish list but hardcore repair or fault resolver) X user has agreed to submit to automatic new write-over install versions where the upgrade occurs in a set time window (off-peak local time) X if: the upgrade needs a reboot of client or computer or both to satisfy best-practise, then this action will only occur if the user has agreed to submit to an ungraceful hard reboot (it could be a graceful soft reboot however, best to caveat for last-resort scenario)

@Erkan-Yilmaz
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tomasbrod
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While we try to push update notification to our users, we should also point them to the download. For example I did not see a link from this GitHub to the official Windows installer or Linux deb. And when I download from gridcoin.us it is not clear what wersion msi I am downloading (I can't verify from linux that link that i give to my win friend is really the latest).

@tomasbrod
Copy link
Member

@tomasbrod tomasbrod commented on 63547b1 Apr 6, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am for more knobs, settings and information in the wallet gui (instead of editing config files).
If you think more bells and whistles is good for the average Windows user you are a fool yourself.

To clarify myself for @philipswift: I agree with you that simple gui is much better than complex one like in the first picture.
Screenshot of a complex gui
But for being forced to edit config files is even worse then that. The gui has to provide access to important information and allow changing settings that every user needs to adjust (like the email). I believe we can agree on that. No h8 m8 :)

@philipswift
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not your mate.

@Peppernrino
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

while we're talking about possible vectors of attack etc, i'm sort of uncomfortable with there being a fully-realized boincstats.com inside the wallet. being somebody that uses a shitload of ad-blocker and data-collection circumventing software, this feels problematic to me.

i would much rather have our IRC in there or something... is there a way to add a simple chat client to the wallet? would be easier to give support for new versions also. people would already see chatter going on about whether or not to update in the same window.

@tomasbrod
Copy link
Member

@tomasbrod tomasbrod commented on 63547b1 Apr 9, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This chat could even be done decentralized. I mean reuse the gossip mechanism used for transaction propagation to propagate chat messages. Very easy to spam though. Other way: IRC is already implemented (to some degree) in wallet for testnet peer discovery.
Apart from the boincstats browser window, there is a boincstats ekvivalent limited for our teem for the NN. Would be cool if the wallet somehow allow to view the data.
I will now create separate issues from theese ideas. Edit: already done #270

Please sign in to comment.