Author

Topic: o_e_l_e_o's Merit Source Application (Read 439 times)

legendary
Activity: 2268
Merit: 18711
January 05, 2019, 06:05:12 AM
#11
I am indeed now a source - that didn't take long! I'm sure I benefited from The Pharmacist also starting a thread about merit at the same time.

Many thanks to everyone for the support and endorsements, and of course thanks theymos. My allocation isn't huge (and I never expected it would be straight off), so I might ping a few posts to LoyceV's thread as and when I run out.

Thanks everyone.
member
Activity: 72
Merit: 12
January 05, 2019, 04:26:51 AM
#10
I appreciate you recognizing my post and deeming it worthy or merits and mention in your application.
We really need more merit sources (like you) who are skilled in discerning quality posts.
Good luck on your quest.
sr. member
Activity: 308
Merit: 280
January 05, 2019, 03:23:17 AM
#9
Theymos just added 3 more sources (are you one of them?).
As per TP, he is. I'm not sure though.
Props to you.  You were the other one along with o_e_l_e_o that I was wondering about.  You two seemed to have the strongest applications as of late.  

I didn't have too much time to read all of o_e_l_e_o's quoted post. I have read some and found his application as one of the best application. Therefore, he must be a merit source, IMO.
legendary
Activity: 3766
Merit: 4554
Contact @yahoo62278 on telegram for marketing
January 05, 2019, 03:05:02 AM
#8
I see that it's very high ranking members that are commending your reputation.

Mafia connections  Grin



BTW o_e_l_e_o I think you'll make a fine merit source
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
January 05, 2019, 02:59:24 AM
#7
This has been a work in progress for a few weeks as my sMerit supply slowly dwindles, but this thread has somewhat forced my hand a bit
Sorry Tongue

I'd say you made good choices for meritable posts. Theymos just added 3 more sources (are you one of them?).
legendary
Activity: 2408
Merit: 4282
eXch.cx - Automatic crypto Swap Exchange.
January 05, 2019, 02:34:20 AM
#6
With that in mind, I've chosen instead to focus entirely on posts that have received no merit at all (this statement is correct at time of posting, although I now plan to merit these users). Also, in the spirit of spreading merit around as much as possible, and ensuring deserving newer members are not hindered from ranking up, I've also decided to focus entirely on posts made by users with less than 50 merits.

This allow shows you're qualified to be a merit source unlike other application I found out your list consist mostly of post you're the only meriter. I also loved the idea of you not concentrating on topic alone. Glad you applied to be a merit source and hoping you continue in the good works once you're made a source . Good luck o_e_l_e_o
member
Activity: 672
Merit: 29
January 05, 2019, 02:33:14 AM
#5
I see that it's very high ranking members that are commending your reputation. But honestly your name is quite famous in generously distributing merit across the forum and you are very much impacted knowledge to me personally from your various post it would be only right to make you a merit source
legendary
Activity: 1288
Merit: 1926
฿ear ride on the rainbow slide
January 05, 2019, 02:25:11 AM
#4
I also support this application.  You're helpful, knowledgeable and make quality posts.
legendary
Activity: 3654
Merit: 8909
https://bpip.org
January 04, 2019, 05:08:09 PM
#3
The fact that you're not a merit circle member source is borderline criminal negligence.
legendary
Activity: 3500
Merit: 6981
Top Crypto Casino
January 04, 2019, 05:04:40 PM
#2
I fully support your application, and all I had to do was read the thread title.  I know you know what a good post is vs. a shitpost, and I would have no worries about any shenanigans on your part.  Hopefully Theymos adds more sources, gives more sMerits to those sources, and that we can all figure out a way to find the under-merited posts.  I think you'd be a good addition to the merit source crew, and good luck.
legendary
Activity: 2268
Merit: 18711
January 04, 2019, 04:59:45 PM
#1
This has been a work in progress for a few weeks as my sMerit supply slowly dwindles, but this thread has somewhat forced my hand a bit, as you will see if you read my reasoning below. So here goes:

If you want to be a merit source:

 1. Be a somewhat established member.
 2. Collect TEN posts written in the last couple of months by other people that have not received nearly enough merit for how good they are, and post quotes for them all in a new Meta thread. The point of this is to demonstrate your ability to give out merit usefully.

I like to think I'd be classed as "somewhat established", I'm on both the list of top merit receivers and top merit senders, and I'm way above average in terms of reporting, which I would hope would qualify me enough to apply. I'm sure people will let me know if I'm way off base here.

There are lots and lots of excellent posts, in particular technical explanations and guides, which certainly deserve more merit than they have received, but they have at least received some merit. However, I figure if all I did as a merit source was reinforce other sources' decisions with more merit, then I'm not really helping to keep the system as decentralized as possible. With that in mind, I've chosen instead to focus entirely on posts that have received no merit at all (this statement is correct at time of posting, although I now plan to merit these users). Also, in the spirit of spreading merit around as much as possible, and ensuring deserving newer members are not hindered from ranking up, I've also decided to focus entirely on posts made by users with less than 50 merits.

While the posts I've selected below are generally not of the very high standard you would see in other "Merit Source Application" threads, I believe these posts show junior members who are here for the right reasons - to ask questions, learn, discuss, and contribute, regardless of whether you agree with their opinions, and not just to spam. These are the members we should be encouraging to stay by rewarding their efforts. I've also made a conscious effort to pick users who, at no point in their posting history, have contributed to spam via bounty hunting or bounty reports. @theymos - if I'm going completely the wrong direction here, please let me know and I will reapply with 10 exceptional posts as is the standard. I simply figured with a constant stream of people applying in this way (and no offense to them), to take things in a new direction.

As an aside, this has been a good personal confirmation of my long held suspicion: There are very few good posts from junior members which go unmerited. As I mentioned, I've been working on this list for a few weeks or so, and every time I come back to it I have to remove one or two of the posts from it because someone has merited it already. I'm keen to see how LoyceV's thread turns out.


Post 1

Block Checking & Submit Blocks

File - main.cpp
Line -  1154 -1295

Code:
bool CBlock::CheckBlock() const
{
    These are checks that are independent of context
    that can be verified before saving an orphan block.

    // This section checks the Size limits

Code:
   if (vtx.empty() || vtx.size() > MAX_SIZE || ::GetSerializeSize(*this, SER_DISK) > MAX_SIZE)
        return error("CheckBlock() : size limits failed");

    // This section of code if for checking the timestamp of the block, a timestamp is valid if it is greater than the median timestamp of last 11 blocks and less than the network-adjusted time + 2 hours

Code:
   if (nTime > GetAdjustedTime() + 2 * 60 * 60)
        return error("CheckBlock() : block timestamp too far in the future");

    // This section checks to make sure the first transaction is a coinbase transaction and everything else is not a coinbase TX

Code:
   if (vtx.empty() || !vtx[0].IsCoinBase())
        return error("CheckBlock() : first tx is not coinbase");
    for (int i = 1; i < vtx.size(); i++)
        if (vtx[i].IsCoinBase())
            return error("CheckBlock() : more than one coinbase");

    // Check transactions

Code:
   foreach(const CTransaction& tx, vtx)
        if (!tx.CheckTransaction())
            return error("CheckBlock() : CheckTransaction failed");

    // This section checks that the proof of work matches claimed amount

Code:
   if (CBigNum().SetCompact(nBits) > bnProofOfWorkLimit)
        return error("CheckBlock() : nBits below minimum work");
    if (GetHash() > CBigNum().SetCompact(nBits).getuint256())
        return error("CheckBlock() : hash doesn't match nBits");

    // It is then passed to check the merkleroot

Code:
   if (hashMerkleRoot != BuildMerkleTree())
        return error("CheckBlock() : hashMerkleRoot mismatch");

    return true;
}

Now the code will check for AcceptBlock by checking the following aspects.

bool CBlock::AcceptBlock()

    // In this section the code performs a check for duplicate block.

  
Code:
 uint256 hash = GetHash();
    if (mapBlockIndex.count(hash))
        return error("AcceptBlock() : block already in mapBlockIndex");

    // Here the code will get the previous block index

    
Code:
map::iterator mi = mapBlockIndex.find(hashPrevBlock);
    if (mi == mapBlockIndex.end())
        return error("AcceptBlock() : prev block not found");
    CBlockIndex* pindexPrev = (*mi).second;

    // It will then check the timestamp against previous block

  
Code:
if (nTime <= pindexPrev->GetMedianTimePast())
        return error("AcceptBlock() : block's timestamp is too early");

    // It then performs a check on the proof of work

  
Code:
if (nBits != GetNextWorkRequired(pindexPrev))
        return error("AcceptBlock() : incorrect proof of work");

    // Here the code will write the block to history file

 
Code:
 if (!CheckDiskSpace(::GetSerializeSize(*this, SER_DISK)))
        return error("AcceptBlock() : out of disk space");
    unsigned int nFile;
    unsigned int nBlockPos;
    if (!WriteToDisk(!fClient, nFile, nBlockPos))
        return error("AcceptBlock() : WriteToDisk failed");
    if (!AddToBlockIndex(nFile, nBlockPos))
        return error("AcceptBlock() : AddToBlockIndex failed");

    if (hashBestChain == hash)
        RelayInventory(CInv(MSG_BLOCK, hash));

The next section is commented out of the code and I am still looking for some references for the code below and relations to VAtoms.

    // // Add atoms to user reviews for coins created

    
Code:
// vector vchPubKey;
    // if (ExtractPubKey(vtx[0].vout[0].scriptPubKey, false, vchPubKey))
    // {
    //     unsigned short nAtom = GetRand(USHRT_MAX - 100) + 100;
    //     vector vAtoms(1, nAtom);
    //     AddAtomsAndPropagate(Hash(vchPubKey.begin(), vchPubKey.end()), vAtoms, true);
    // }

    return true;
}

Next the code looks to process the block by the following.

bool ProcessBlock(CNode* pfrom, CBlock* pblock)

    // Check for duplicate
  
Code:
uint256 hash = pblock->GetHash();
    if (mapBlockIndex.count(hash))
        return error("ProcessBlock() : already have block %d %s", mapBlockIndex[hash]->nHeight, hash.ToString().substr(0,14).c_str());
    if (mapOrphanBlocks.count(hash))
        return error("ProcessBlock() : already have block (orphan) %s", hash.ToString().substr(0,14).c_str());

    // Preliminary checks
Code:
   if (!pblock->CheckBlock())
    {
        delete pblock;
        return error("ProcessBlock() : CheckBlock FAILED");
    }

    // If don't already have its previous block, shunt it off to holding area until we get it
  
Code:
if (!mapBlockIndex.count(pblock->hashPrevBlock))
    {
        printf("ProcessBlock: ORPHAN BLOCK, prev=%s\n", pblock->hashPrevBlock.ToString().substr(0,14).c_str());
        mapOrphanBlocks.insert(make_pair(hash, pblock));
        mapOrphanBlocksByPrev.insert(make_pair(pblock->hashPrevBlock, pblock));

        // Ask this guy to fill in what we're missing
  
Code:
    if (pfrom)
            pfrom->PushMessage("getblocks", CBlockLocator(pindexBest), GetOrphanRoot(pblock));
        return true;
    }

    // Store to disk
 
Code:
  if (!pblock->AcceptBlock())
    {
        delete pblock;
        return error("ProcessBlock() : AcceptBlock FAILED");
    }
    delete pblock;

    // Recursively process any orphan blocks that depended on this one
  
Code:
 vector vWorkQueue;
    vWorkQueue.push_back(hash);
    for (int i = 0; i < vWorkQueue.size(); i++)
    {
        uint256 hashPrev = vWorkQueue[i];
        for (multimap::iterator mi = mapOrphanBlocksByPrev.lower_bound(hashPrev);
             mi != mapOrphanBlocksByPrev.upper_bound(hashPrev);
             ++mi)
        {
            CBlock* pblockOrphan = (*mi).second;
            if (pblockOrphan->AcceptBlock())
                vWorkQueue.push_back(pblockOrphan->GetHash());
            mapOrphanBlocks.erase(pblockOrphan->GetHash());
            delete pblockOrphan;
        }
        mapOrphanBlocksByPrev.erase(hashPrev);
    }

At this point the miner would be very happy! as the block has passed the checked and can be called Valid.
The code then prints below :

Code:
   printf("ProcessBlock: ACCEPTED\n");
    return true;


Post 2

I understand what your trying to say  . yes  both of them are different though people still thinks that bank and bitcoin are the same because bitcoin can be store of value and it can be used as an invesment simillar to what they hear on the traditional banks  but for me , both are actually different because bitcoin is commonly known as a curency while banks are  a company that produces money  .

Banks are not supposed to "produce" money, but the sad truth is that they do, out of thin air! The way modern banks work is pretty similar to a ponzi scheme, its called Fractional Reserve Banking something that would be illegal (and it was until the 20th century) but the banks bought their way thru legislation and its perfectly ok to play roulette with the savings of people...

But people are seriously misled into thinking banks store money (they don't), or that their fiat money is backed into something (its not).

The scheme will hold as long as a sum above the fractional reserve is now withdraw at the same time (see?, just like any other scheme).

So if the bank keeps 10% of the money, that's its limit before going bankrupt. But before that happens, Central Banks to the rescue. Now that 10% would need to be nationwide withdraw, to bankrupt the central bank, but World Bank to the rescue! now in the world 10% needs to be withdraw to bankrupt the entire system... (actually the fraction is different on every country).

If only more people knew about fractional reserve banking... Debt based economies (school of chicago) would crash. Stop trusting banks!


Post 3

I have developed this idea into a BIP which is available for people to view here. https://github.com/mechanikalk/bips/blob/master/bip-%3F%3F%3F%3F.mediawiki

Would really appreciate any additional feedback or discussion.

The TL;DR is that it is many Bitcoin blockchains that are merge mined at different difficulties with different sets of state.  This prevents sharding of PoW without causing sharding of state.  Would enable a Bitcoin like blockchain to scale to 10,000s of TPS without any centralization.

Thanks!


Post 4

Hey guys,

I’ve been involved with bitcoin since 2011, long time user but never much for posting on forums or anything.

 I recently have been putting together information to write a paper and I’m doing some market research. I often read forums and have helped others in the past in person when it comes to explaining bitcoin and assisting interested persons in learning about all crypto. I notice a lot of repeating questions and issues with new users and i just want to get a broader look on the community's problems see how that match up with my current perspective, and see what can be done to help newbies/ prospective users.

So, some questions I have for new users of bitcoin/crypto, or even more advanced users that still have issues.

1. What do you find is your biggest issues/ struggles when it comes to learning about cryptocurrency?

2. What would you say is your biggest pain points about crypto in general?

3. ^^ What is so difficult about these things and why?
4. What have you tried to solve these issues? Did anything work? What didn’t work?
5. If you could ask one question about cryptocurrency that you would want an answer to what would it be?
6. What interested you in cryptocurrency to try to learn about it in the first place? What are your main interests in in the space now?
7. What are your motives for, or what do you want to achieve,  being involved in cryptocurrency? (What you hope to gain)
8. If there was something that could solve your issues regarding crypto, what do you think it would it be?

Feel free to answer any of these questions you feel like, or all of them if you choose, if you don’t want your answers publicized or you feel its too long to post, I’m more then happy to take them in email, just let me know and i can shoot you my email.

Also, for anyone potentially interested i’d also like to further interview anyone with pain points revolving bitcoin, maybe I could even help some users with answers to their issues as I have been involved with crypto for many years. I’m just interested in hearing what peoples issues most commonly in this space and what possible things can solve the community and its prospective members issues. If you’re interested in am email interview with just some further questions please feel free to email me  or also message me here we can set something up, who knows maybe I can even offer some insight on your issues. Thanks guys!


Post 5

Bitcoin ETF, as I understand is a way of indirectly buying bitcoin without needing to go through all the processes associated with purchase (exchanges, wallets, private keys etc)
It's basically a share of bitcoin which can be tradeable in external exchanges and would be classified as a security and would mirror the value of actual bitcoin.

It has been presented as a door to bring institutional investors into bitcoin and increase the adoption and price.

But I've come across articles where institutional investors are said to be buying bitcoin through OTC trades.

My question is;
Why would investors wait to buy bitcoin indirectly, when they can buy now?

And is the grounds of possible manipulations on which the proposals has been rejected a solid argument?

And lastly would bitcoin ETF approval herald the bull run as most people believe?


Post 6

Satoshi will certainly be the anomaly here, though. I'm sure other more active users and even some of the most prolific would have difficulty having their older posts merited to such an extent. Most will be long buried and forgotten, whereas satoshi's will always have a spotlight on them. Even theymos doesn't post that much compared to the rest of the community but he is the most merited user here according to the merit stats and that's probably because he gets a lot for stickies and announcements of rules changes and so forth -- or people just like to suck up to him lol.

I don't feel very comfortable with this..yes, Satoshi is a recognized figure here and otherwise. His posts are historic and has some form of direction and inspiration but continual meriting such posts doesn't seem very ideal to me. Reflecting on the past is good not continual compensation rather that should be used to focus on the present. This doesn't mean value in satoshi's post or works will reduce neither will meriting it increase its value anymore than it is.


You could write a thesis on bitcoin and it might not be merited for all sorts of reasons.

This is one of the reasons spamming/plagiarism/repetition is still a major issue the forum has to always combat. In as much as we all don't want to entirely admit it, we humans, always want recognition almost immediately at all point if possible. Yes, there are lazy users that has no interests in contributing positive but only after what the he/she can take from the system yet, there are still that few that don't mind contributing as long as the will get the recognition.

Now and then, I see posts of existing users on parma-ban for mostly plagiarism and I wonder if these long term users never read the rules or the chose to ignore and why... Some part of me feels this may be the reason coupled with other factors like the individual just being lazy. I know we can't go all a sore of meriting all quality posts and all that but we can always make efforts noticed even through our comments. I know alot of new users appreciates when hero/lengendary users comment and share ideas relating to the new user's quality post. It gives feelings that almost competes with the feeling that comes with a merit.


Post 7

(Python)
Code:
> p=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
>
> x=0x78D430274F8C5EC1321338151E9F27F4C676A008BDF8638D07C0B6BE9AB35C71
>
> x3=pow(x,3,p)    --> x^3 = x^3 mod p
>
> y2=(x3+7) % p   --> y^2 = x^3 + 7 mod p
>
> y=pow(y2,(p+1)/4,p)  --> this line computes sqrt(y^2) = y
>
> hex(y)
'0x5eae7f9cdbc532b201694991c0d137fec371f8d32f64c7cb5e607e08a633c7da'
>
 because this y is even, we compute -y = p-y (if y is even, p-y is always odd and viceversa)
>
> hex(p-y)
>'0xa1518063243acd4dfe96b66e3f2ec8013c8e072cd09b3834a19f81f659cc3455'
then: A1518063243ACD4DFE96B66E3F2EC8013C8E072CD09B3834A19F81F659CC3455 : y (odd)

uncompressed key = '04' + 'x' + 'y'

Code:
0478D430274F8C5EC1321338151E9F27F4C676A008BDF8638D07C0B6BE9AB35C71A1518063243ACD4DFE96B66E3F2EC8013C8E072CD09B3834A19F81F659CC3455

Wow, thank you for posting this.  I was driving myself insane trying to understand more of the math and how it's actually implemented, trying very small values from links like this one:

https://www.coindesk.com/math-behind-bitcoin

to get a feel for it.  I think I'm getting there.  I hope that ordering and reading Mastering Bitcoin: Programming the Open Blockchain will help with the math, and trying to write my own blockchain parser.

I'm not a math heavyweight, so I have a couple of questions if you have time:

From what I understand so far, there are constants that are always the same in Bitcoin.  This includes the Q (curve generator), the p (for mod p), taken from your code and which I noted in the link to coindesk.  I couldn't see how the order was calculated, given other values.  Can you briefly describe what a base point is?  I think I'm getting a decent idea of what a finite field is.

When trying to find:

Code:
y=pow(y2,(p+1)/4,p)  --> this line computes sqrt(y^2) = y

Is this always how it's done, for any y2, p is always the same, and the (p+1)/4 part is constant as well for getting y from y2?

Thanks again!


Post 8

Does anyone have the exact numbers of how much protection you get using a 24 word seed vs using the conventional default standard that shows up automatically when you create a wallet in Electrum?

It's still not clear to me that you can trust this type of wallet, that could be bruteforced and then all of your keys are compromised forever as long as you keep creating them on that wallet. It still seems safer to use a wallet.dat file. I want to see the math.

Here's the basics. Using the 2048 word BIP39 list, each word represents 11 bits of entropy (2**11 = 2048). So a 12 word phrase has 132 bits of entropy, and therefore a 24 word phrase has 264 bits of entropy.

Looking at a 12 word phrase, that means there are 2**132 possible combinations = 5.444 x 10**39 possibilities.
A 24 word phrase has 2**256 possibililties, or 1.158 x 10**77

If you want to go the distance on this analysis, you can do the math as to how long either would take, assuming some # of guesses/second.

Either should give you comfort.

If you want to consider phrases other than 12 or 24 words, as long as you're using the BIP39 list just remember: #bits of entropy = #words * 11
and number of possible phrases = 2**(#bits of entropy)


Post 9

Hey everyone,

I've been looking into 51 percent attacks recently and was wondering about the limitations. In a 51 percent attack an attacker tries to generate an alternate chain faster than the honest chain. To convince the network that his chain is the correct, he must ultimately have the longest chain.

The blocktime for each chain is 10 min per block. If blocks are created too fast, the difficulty is adjusted.

Given these limitations how is it possible to build an alternate chain that grows much faster than the honest chain? If my understanding is correct, nodes also check whether the difficulty target has been adjusted correctly. So if the block time is too short in the long run, the newly mined blocks might not been recognized by the network.

Is that correct or do I miss something? Thanks!


Post 10


One of the things I've seen is that "The minimum python version was increased to 3.6" in Electrum 3.3.0.
Maybe I'm completely wrong, since I'm far from best with Linux, but this is what I'd start with when checking.




That's not what it means. It means the python interpreter he has does not think the code is correct. That's because he's using an older version of python as NeuroticFish pointed out above. He needs to update to python 3.6 or stick with electrum 3.2.3.

This is how I built Python 3.7.2 from source on Debian Stretch

The steps:

1. Update all system packages first

Code:
sudo apt-get update && sudo apt-get upgrade
2. Install the required build tools for Python 3.7.2

Code:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev
sudo apt-get install -y libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
sudo apt-get install -y libncurses5-dev  libncursesw5-dev xz-utils tk-dev
3. Download the latest version 3.7.2 source file and its SIG file using wget

Code:
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz.asc

4. Verify the authenticity of the source file

Code:
gpg -v Python-3.7.2.tgz.asc

5. Unpack the source file

Code:
tar xvf Python-3.7.2.tgz

6. Enter the Python-3.7.2 directory and run ‘./configure’ to prepare the build

Code:
cd Python-3.7.2
./configure --enable-optimizations

7. Run the following command to build Python 3.7.2

Code:
make -j 8

8. Run the following command to install Python 3.7.2

Code:
sudo make altinstall

9. Reboot the machine

After installing Python 3.7.2, below are the steps that I took to run Electrum 3.3.2:

9. Go to the folder where the downloaded file Electrum-3.3.2.tar.gz is

10. Unpack the gzipped file

11. Go to the directory where run_electrum is located

12. Type python3.7 run_electrum in a terminal

13. The following error appears:

Code:
Error: Could not import PyQt5 on Linux systems, you may try 'sudo apt-get install python3-pyqt5'
/usr/local/lib/python3.7/asyncio/events.py:88: RuntimeWarning: coroutine 'ignore_exceptions..wrapper' was never awaited
  self._context.run(self._callback, *self._args)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

14. I went back to Step 8 and instead of altinstall, I typed the command:

Code:
sudo make install

and rebooted the machine. This time Python3.7 is the default on my Debian Stretch

15. I typed the command python3.7 run_electrum and the same error message appeared:

Code:
Error: Could not import PyQt5 on Linux systems, you may try 'sudo apt-get install python3-pyqt5'
/usr/local/lib/python3.7/asyncio/events.py:88: RuntimeWarning: coroutine 'ignore_exceptions..wrapper' was never awaited
  self._context.run(self._callback, *self._args)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

Please note that python3-pyqt5 has already been installed when I was using version 3.2.3

Thomas (developer): If you are reading this post, could you help me out please?

By the way, season's greetings to all of the folks here.
Jump to: