OH MY GAWD. :facepalm:
So, let me verify that I understand correctly—because I just can’t believe it: Yacoin uses scrypt as a generalized hash!?
That is easily one of the ten worst altcoin ideas that I have ever seen (and the other nine are from BSV). I think that I will now die of laughter. Thanks.
But alas, your coin is not yet optimally pessimal. I can help you pessimize it further.
I doubt that Yacoin really uses scrypt for everything. What about digital signatures? ECDSA needs a hash; deterministic ECDSA needs several hashes. If you instantiate those hashes with scrypt, preferably at a high Nfactor, then you will make validation extremely slower.
But why stop there? Why not use for all hashing purposes a Verifiable Delay Function based on iterated scrypt?
While you are at it, find anywhere in the code that uses a sorting function, and change it to use permutation sort. Once upon a time, as a fun learning exercise, I wrote an optimally pessimal permutation sort implementation; if I can find that old code, perhaps I could contribute it. That makes almost as much sense as using a password hashing function as a general-purpose cryptographic hash!
Someone needs to tell Colin Percival, the designer of scrypt, that an altcoin is using it as a hash function for everything. He was unhappy when he heard about Litecoin’s misuse of his creation; it is not designed as a POW hash, and using it for that purpose is stupid enough.
https://mega.nz/file/SZcVWSRK#HEP0u6GkrNBuvloZv-vijcJtCXPNgiHv1WHAzeSoxDY
:facepalm: :facepalm: :facepalm:
“Download the blockchain from this anonymous Mega link, and don’t validate it at all because it is too computationally expensive to validate” is not what I would call “decentralized”.
That Mega link can contain any version of the ledger that you may desire. It can even contain an invalid ledger. You are now a trusted central authority.
Hello, do you realize that Bitcoin Core even removed checkpoints? The whole concept was replaced long ago with -assumevalid. I myself recommend setting up your first node with assumevalid=0, viz., validate all scripts in all transactions; and then, you can set up other nodes using an assumevalid hash from something near the chaintip of your own node. assumevalid only skips script verification; everything still needs to be hashed.
if (
(0 < nPosBlockCount)
&&
(
(
fTestNet
&&
pprev
)
||
!fUseOld044Rules //(nTime >= YACOIN_NEW_LOGIC_SWITCH_TIME)
)
)
What the fuck is that, COBOL?
It reminds me of one fine day in early 2014, when I decided to try to audit OpenSSL. The code looked just like that, plus mazes of nested #ifdefs. To avoid blindness and insanity, I gave up after about ten minutes. By coincidence, this was about two months before Heartbleed was discovered; if I had persisted, perhaps I could have been the one to discover it!
A “few hundred commits”? Nice guess; you are off by only two orders of magnitude.
nullius@onion:~/src/bitcoin$ git rev-list v0.8.6...v0.21.0 | wc -l
22543
Oh, and...
nullius@onion:~/src/bitcoin$ git rev-list v0.21.0...HEAD | wc -l
1931
Of course, this does not count commits from any of the many PRs that are reviewed, rejected, and closed without merging.
Bitcoin development is highly active. Core is slow to release new features, because breaking the network could wreck a trillion dollars in value; they do not “move fast and break things”. Whereas Bitcoin has some of the most active development of any cryptocurrency!
Joe_Bauers, my condolences.
If you want to try to salvage something from this mess, I suggest calling it “Yacoin Classic” instead of “Yacoin Cash”. Well, that is if you avoid a network hardfork. Bcash was a network hardfork; the various coins called “Classic”, such as Ethereum Classic, were typically created to avoid contentious hardforks. If you want to remove the “use scrypt for everything” pessimization, I infer that you probably need your own hardfork; in that case, perhaps try “Yacoin Optimized”. (I first thought to suggest “Yacoin Unbroken” or “Yacoin Less-Stupid”, but that would just be cruel.)
Merging fixes and upgrades from Bitcoin can have huge benefits. I have some practical experience with this; e.g., after Zcash pulled in Core’s switch from OpenSSL to libsecp256k1 for validating signatures, I could feel how much faster sync was. Quantitatively, jlopp measured “significant performance improvements to the tune of more than a 50% speedup” between his tests of Zcash 2.0.1 and Zcash 2.1.1, probably due to merges of such upstream improvements—yes, sync time was cut in half. Of course, faster point arithmetic for secp256k1 is relatively meaningless if you have a maximally pessimized coin that is using scrypt for all of its hashing needs.
Thanks for the laughs. I mean that sincerely and unironically. This thread made my day.