V with VTools, Keccak Hashes and Its Own Tree

UPDATE November 10th, 2019: there's a new version of the V-tree and starter v pack, including quite a few fixes, check that out too.

The republican versioning control system, V for Victory, is very much used, very much needed but nevertheless not yet versioned itself. As this has caused already way more talk in the logs than it's worth it, I promised I'll do a write-up of my own V setup and publish it, with a proper versioning for V itself included. So I've dug up old versions as well as my current setup and packaged everything in 2 different ways:

  1. A V-tree (using Keccak hashes) that captures the changes to v.pl code1 from the first version that I ever used, namely 999942. To use this, simply download the .vpatches, the .sig files and my signature, check them and then press the tree with either a different V that you might have or otherwise semi-manually with phf's vtools (vpatch more precisely). Note that you WILL need vtools (or equivalent) at any rate! Once you pressed V itself successfuly, you should have a v.pl that you can run - it will check its dependencies and complain if it doesn't find something (most notably the vtools parts namely vpatch and ksum).
  2. A signed .zip meant as a starter package for someone who hears of V for the first time in their life. Download starter_v.zip and starter_v.zip.diana_coman.sig. Check the signature! If and ONLY IF the check passes, unzip and then read the scripts in there. The build.sh script will simply build3 the vtools that are included in this starter pack and it will copy to the starter_v directory all the executables that are needed (v.pl renamed as vk.pl to make it clear it uses Keccak hashes, vdiff, vpatch and ksum). The included vtools are the code obtained from pressing current vtools tree up to and including the ksum .vpatch.

My changes to Mod6's v.pl simply replace older sha-based dependencies and calls with the vtools-based ones. Note that you'll need to have ksum and vpatch in your PATH or otherwise ready and accessible as v.pl will simply try to call them when it needs them.

For potential reference, here's my usual workflow to make a .vpatch:
mkdir a
mkdir b
cp -r old_stuff a/stuff
cp -r new_sutff b/stuff
vdiff a b > newpatch.vpatch
gpg --armor --output newpatch.vpatch.diana_coman.sig --detach-sig newpatch.vpatch

To check / press a V tree:
mkdir patches
mkdir .wot
mkdir .seals
cp some_patches patches/
cp corresponding_sig_files .seals
cp corresponding_trusted_pubkeys .wot
vk4 f
vk l
vk p v testdir chosen_patch.vpatch
cd testdir
read, compile, run etc

The .vpatches and .sig files:

The .zip file and corresponding .sig file:

For something to test your new shiny V on, head over to my Reference Code Shelf and take your pick. For trouble and questions, use the comments box below.


  1. Note that you are warmly invited to implement your own V! This version here is mod6's V implementation that was much discussed and iterated upon in the early days. 

  2. Note that V's versions DECREASE rather than increase, as per the explanation

  3. It requires GNAT. If you have no idea what that is, dig around, read the logs, ask humbly. 

  4. As I have all sorts of V implementations living side by side, I tend to give them different names - this is the vk for V-Keccak! 

10 Responses to “V with VTools, Keccak Hashes and Its Own Tree”

  1. [...] keccak-powered v.pl. Diana Coman was kind and patient enough to help me with this and pointed me to her post on the subject. If you are starting out with V for the first time I highly recommend grabbing the starter pack [...]

  2. [...] Diana Coman's Keccak V Genesis ]::.. Recently, diana_coman created a V Genesis of my vtron. Up until this point, it had been distributed in non-Vtronic form, as a simple tarball. This step [...]

  3. [...] I wanted to continue building Republican tooling on this workstation. Now that we have a proper keccak-vtron, which requires Ada to build, I wanted to get ave1's musltronic GNAT built statically, so I could [...]

  4. [...] me, I ended up going with diana_coman's setup outlined in http://ossasepia.com/2018/11/13/v-with-vtools-keccak-hashes-and-its-own-tree/, and it is working [...]

  5. [...] a Keccak Vtron (starter_v from diana_coman) with ave1's supplied [...]

  6. [...] following is a V patch on Diana's Keccak V tree: v_fixes_vpatch_sync.vpatch (seal). Additionally, as per ye mirroring discussion, my WWW [...]

  7. [...] [↩]When v was initially introduced the hash used was SHA-512, this was later changed to Keccak. [↩]In the pre-v world, it was assumed that each person could have a different version of a [...]

  8. [...] is an update of the previous V-tree and V-starter pack, to include a more recent press of both V itself and the vtools that are used by [...]

Leave a Reply