Post
Topic
Board Altcoin Discussion
Re: Is it true that Vanillacoin uses the BTC code?
by
smooth
on 13/08/2015, 05:55:16 UTC
There has also been additions like the zerotime stuff which is not like anything in Bitcoin:

I have no doubt that his completely new stuff like ZeroTime is not from bitcoin. The problem is that there is a lot of code that is from Bitcoin, and he refuses to comply with the copyright license terms and, claimed (and as far as I know still claims) that the coin was built from scratch in its entirety, which was and is a lie:

No, this is not a fork. It was built from scratch in it's entirety.

Note: quoted date is incorrect; correct date is 2014-12-15, 00:19:37

That kind of behavior is reprehensible and is a huge red flag. If he's lying about that what else is he lying about, or willing to lie about?

Quoting the supporting evidence below (only one example, others have been cited elsewhere), because I am going to link this post when I give negative trust to jc.


That code is essentially identical, but reformatted, and far beyond an occasional duplicated line or two. Even the variable names are the same, same sentinel values used, etc. It is clearly a copy.

In stripping out the Bitcoin attribution I call this clear fraud.

EDIT: posted below, showing VNL code inheriting bugs from the Bitcoin code that was copied/reformatted. Pathetic

Oh, he'll want to fix some of the inherited bugs:

https://github.com/john-connor/vanillacoin/blob/51c6960b2a14ffbf67af19aefac6291768e1ffbc/include/coin/address_manager.hpp#L120

corresponds to

https://github.com/bitcoin/bitcoin/blob/0.9/src/addrman.cpp#L12

but not

https://github.com/bitcoin/bitcoin/blob/0.10/src/addrman.cpp#L13

I presume for someone who is apparently smarter than the entire Bitcoin development team put together, understanding why and updating the code accordingly will be trivial.


EDIT (2015-09-21): More evidence quoted below

Comparing a sample piece of code it is clear that at least some of it is based on Bitcoin code:

From vanillacoin - https://github.com/john-connor/vanillacoin/blob/master/src/address_manager.cpp#L1315

Code:
    * Try to find an entry that can be erased.
     */
    for (auto it = bucket_new.begin(); it != bucket_new.end(); ++it)
    {
        assert(address_info_map_.count(*it));
        
        auto & info = address_info_map_[*it];
        
        if (info.is_terrible())
        {
            if (--info.reference_count == 0)
            {
                std::lock_guard l1(mutex_random_ids_);
                
                swap_random(
                    info.random_position,
                    static_cast (random_ids_.size() - 1)
                );
                
                random_ids_.pop_back();
                network_address_map_.erase(info.addr);
                address_info_map_.erase(*it);
                number_new_--;
            }
            
            bucket_new.erase(it);
            
            return;

From Bitcoin 0.9.2 in addrman.cpp:

Code:
   // first look for deletable items
    for (std::set::iterator it = vNew.begin(); it != vNew.end(); it++)
    {
        assert(mapInfo.count(*it));
        CAddrInfo &info = mapInfo[*it];
        if (info.IsTerrible())
        {
            if (--info.nRefCount == 0)
            {
                SwapRandom(info.nRandomPos, vRandom.size()-1);
                vRandom.pop_back();
                mapAddr.erase(info);
                mapInfo.erase(*it);
                nNew--;
            }
            vNew.erase(it);
            return 0;
        }
    }

The above code from vanillacoin is based on bitcoin, albeit renamed, refactored, reformatted and re-commented at almost every possible occasion.

The algorithm is the same line by line and even the esoteric identifier name "IsTerrible"/"is_terrible" is used in both.

My guess is John started with a old bitcoin code base and refactored, renamed and recommented the code to a huge degree.

There has also been additions like the zerotime stuff which is not like anything in Bitcoin:

https://github.com/john-connor/vanillacoin/blob/master/src/zerotime.cpp




Thanks for that.

Adding “#L34” to the vnl URI nails it for me:

Code:
int EC_KEY_regenerate_key(EC_KEY * eckey, BIGNUM * priv_key)
{
    int ok = 0;
    
    BN_CTX * ctx = 0;
    EC_POINT * pub_key = 0;

    if (eckey == 0)
    {
        return 0;
    }
    
    const EC_GROUP * group = EC_KEY_get0_group(eckey);

    if ((ctx = BN_CTX_new()) == 0)
    {
        goto err;
    }
    
    pub_key = EC_POINT_new(group);

    if (pub_key == 0)
    {
        goto err;
    }

Code:
int EC_KEY_regenerate_key(EC_KEY *eckey, BIGNUM *priv_key)
{
    int ok = 0;
    BN_CTX *ctx = NULL;
    EC_POINT *pub_key = NULL;

    if (!eckey) return 0;

    const EC_GROUP *group = EC_KEY_get0_group(eckey);

    if ((ctx = BN_CTX_new()) == NULL)
        goto err;

    pub_key = EC_POINT_new(group);

    if (pub_key == NULL)
        goto err;

That's a lot more than just a structural similarity.

It’s hard for me to see this as anything other than incontrovertible evidence of the author having a naively self-centred perspective on intellectual property rights, broadly translatable as “what’s yours is mine and what’s mine’s my own”.

More tellingly, it's also hard to reconcile this evident difficulty in critical thinking with any kind of work in the area of cryptography, notorious for its relentlessly stern demands of cognitive sophistication in its proponents.

Stand back a few yards and the picture becomes somewhat clearer. I've not even bothered looking at vnl, being confident that it’s just another variant of the “misunderstood but brilliant maverick outsider, wronged by a complacent community” media narrative and all the posturing is entirely consistent, even the expedient arrogation of others’ work. Given the evidence in the codebase, I'm reassured that my confidence is not misplaced, although I do have to admit that his choice of pseudonym is a bit of a give-away in and of itself.


Cheers

Graham

EDIT: 2015-09-29 additional comments from Rick Storm (quoted above)

There are many places where Vanillacoin copied Bitcoin code. I have pointed out a good example previously, it won't be hard to find dozens more.

There's nothing wrong with copying and modifying the Bitcoin code, the MIT license allows you to do with it what you like, it just ask you not to be a scumbag and remove attribution and pretend you wrote the code in the first instance.

FWIW, I politely reported the copyright violation (the code being a copy of Bitcoin Core run through an auto-formatter with all the attribution removed) as an issue on the github for the project and john-connor accused me of stalking him and then hid the issue tracker on that github from public view. :-/

I suppose I shouldn't be surprised as it's consistent with the rest of the concerns that resulted in creating this thread-- that there is some ongoing effort to keep that work out of the sunlight.