I posted a lengthy response to someone asking about a specific coin, I hope you'll excuse me for quoting it in full here but i) I've found that stuff-behind-links tends to stay there and play little part in the discussion, so I've adopted a strategy of transclusion and ii) I'm just a saddo:
gjhiggins, can you tell by the code in the zip if the technology he claims the coin will use actually exists?
There's no evidence of that in the contents of the zip archive. The contents are Godcoin with user-facing strings changed to read “Achilles”, with only the absolutely key parameters changed (rpcport, genesisblock, etc). The only significant
functional changes to the codebase are a bigger premine and larger block rewards.
The pastebin listing that I posted contains
all the differences between ZenGodcoin source code and ZenAchilles source code.
I found it notable how few differences are actually required to separate one functioning altcoin from another.
If you'd like to take a gander yourself, if only to see what I'm blithering on about, there is a technique which helps. When I put an altcoin under the microscope the first thing I do is use a little Python script I wrote to rebrand the coin as Zencoin (ZENZ). I did this with Godcoin and Achilles, giving me ZenGodcoin and ZenAchilles.
I then compare the two directories and their contents, side-by-side, using a visual diff and merge tool:
http://meldmerge.org/. It gives a very clear and accessible visual presentation of differences in directory structure and between files.
What the hey, lets have some piccies ...
Here's a screenshot of ZencoinGodcoin vs ZencoinAchilles:
Meld allows me to double-click the blue-lit names to show the content side-by-side. In a moment, we'll have a look at the differences in base58.h but first I need to draw your attention to the left-and-right vertical navigation scrollers - the coloured blocks show the location of pairs of files that differ. In the directory-level presentation, one coloured block = one filepair. In the above listing, a total of eight (8!) changed files is sufficient to create a functionally distinct altcoin.
There's a similar vertical nav scroller for the file-level presentation and again, coloured bars (a single line differing in content) or coloured blocks (several contiguous lines of code differing). Not too challenging I hope but an illustration should be, er, well, illuminating ...
Here's a screenshot of the one-and-only difference between
godcoin/src/base58.h and
achilles/src/base58.h:
That's it.
That's the difference which shows up as a blue block in the directory-level display.
Pretty much the same goes for all but a few of the rest of the blue-lit files, e.g. here's a screenshot of the (again, one-and-only) difference between
godcoin/src/net.cpp and
achilles/src/net.cpp:
I re-ran diff configured to output just the minimum context (filename and line no) for clarity - these are the only differences:
http://pastebin.com/dWht3JRuAnd (for eyewatering completeness) files matching the patterns below were excluded from the comparison:
$ cat notthese
*.qm
*.ts
*.png
*.jpg
*.svg
*.o
*~
*.ico
*.icns
In essence, my workflow runs as follows:
$ git clone http://github.com/foo/bazcoin.git
$ cd bazcoin
$ rm -rf .git* # don't need it
$ ln -s bazcoin-qt.pro coin-qt.pro # allows meld comparison
$ grep 'BTC' src/qt/bitcoinunits.cpp # what units were actually coded?
$ grep -r BAZZA src/ # ensure no clash with source code
$ ../omm.exe BazCoin BAZZA # use XYZZY to suppress symbol replacement if it'd muck up the source code
$ cd ..
$ meld bazcoin godcoin
If you feel up to it, you can have a go yourself. We've set up a bitbucket repository that you can use:
https://bitbucket.org/minkizmates/zencoin.gitThere's a small collection of zenified coins (incl godcoin and achilles) for use when comparing with fresh candidates along with the “omm.exe” Python script to create Zencoins:
https://bitbucket.org/minkizmates/zencoin/srcmeld will usefully show 3 sources side-by-side, viewing recently-launched elitecoin, fusecoin and sumcoin side-by-side is quite instructive in showing how little they differ.
The immediately-prior post notes “once a source code was ONCE reviewed, the people tend to trust it indefinitely” - all too true but a simple application of
will highlight the changes.