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
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 * 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:
// 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.cppThanks for that.
Adding #L34 to the vnl URI nails it for me:
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;
}
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.
Its 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 whats yours is mine and whats mines 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 its 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.