[ Preface ]

It was brought to the attention of The Bitcoin Foundation by phf that a UTF-8 character was discovered in the original genesis.vpatch of The Bitcoin Reference Implementation, also known as The Real Bitcoin (TRB). UTF-8 characters are forbidden in The Reference Implementation source code, and will be removed. This post meant to present, in detail for Lords of the Most Serene Republic, all of the requisite work to remove the UTF-8 character, and regrind genesis.vpatch as well as descendant vpatches in v0.5.4 RELEASE.

[ The Offending Character ]

Upon inspection of we have found the original culprit of this offense. The character in question appears on line 23962 of genesis.vpatch. It is a substituted Unicode character for a hyphen.

[ First Things First: Seek & Destroy ]

After the UTF-8 character was found in genesis.vpatch I took it upon myself to search through the rest of the v0.5.4 Release vpatches to see if any others were lurking in the thousands of lines of source code.

There are two ways to go about the ``Seek & Destroy UTF-8'' mission: Automate the search, and do the check by hand. To cover the former, automation, I created two different programs, one in perl, and one in C to check each character and see if it fell within the 7-Bit ASCII range. It should be said that a check-by-hand is also in necessary, as even the most well intentioned automation can miss something that would be obvious to the human eye; However, to save us time right now, (there are well over a million bytes to examine contained in v0.5.4 Release) we'll just check with automation.

mod6@gentoo ~/check_nonascii_bytes $ ls patches/
asciilifeform-kills-integer-retardation.vpatch                         bitcoin-asciilifeform.2-https_snipsnip.vpatch
asciilifeform_add_verifyall_option.vpatch                              bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch
asciilifeform_and_now_we_have_block_dumper_corrected.vpatch            bitcoin-asciilifeform.4-goodbye-win32.vpatch
asciilifeform_and_now_we_have_eatblock.vpatch                          bitcoin-v0_5_3-db_config.6.vpatch
asciilifeform_dns_thermonyukyoolar_kleansing.vpatch                    bitcoin-v0_5_3_1-rev_bump.7.vpatch
asciilifeform_dnsseed_snipsnip.vpatch                                  bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch
asciilifeform_lets_lose_testnet.vpatch                                 genesis.vpatch
asciilifeform_maxint_locks_corrected.vpatch                            makefiles.vpatch
asciilifeform_orphanage_thermonuke.vpatch                              malleus_mikehearnificarum.vpatch
asciilifeform_tx-orphanage_amputation.vpatch                           mod6_der_high_low_s.vpatch
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch  mod6_fix_dumpblock_params.vpatch
asciilifeform_zap_hardcoded_seeds.vpatch                               programmable-versionstring.vpatch
asciilifeform_zap_showmyip_crud.vpatch                                 rm_rf_upnp.vpatch
bitcoin-asciilifeform.1.vpatch
mod6@gentoo ~/check_nonascii_bytes $ ls -l patches | awk '{print $5}' | perl -e '@a=<STDIN>; $total=0; foreach $n (@a) { chomp($n); $total+=$n; } print "Total Bytes: $total\n";'
Total Bytes: 1049853
    

WARNING: Neither of these programs are pretty, or meant to be used for anything else, but for our purposes here: They get the job done.

Let's start with the perl program that I wrote to search through all the v0.5.4 Release vpatches. First, I'll present the execution of this program, followed by posting the source code.

mod6@gentoo ~/check_nonascii_bytes $ ./v.pl i http://thebitcoin.foundation 
Full vpatch sync complete to "/home/mod6/check_nonascii_bytes/patches"
Seal sync complete to "/home/mod6/check_nonascii_bytes/.seals"
mod6@gentoo ~/check_nonascii_bytes $ for i in `ls patches`; do echo "vpatch: $i" && cat patches/$i | ./check_nonascii_bytes.pl; done  
vpatch: asciilifeform-kills-integer-retardation.vpatch
vpatch: asciilifeform_add_verifyall_option.vpatch
vpatch: asciilifeform_and_now_we_have_block_dumper_corrected.vpatch
vpatch: asciilifeform_and_now_we_have_eatblock.vpatch
vpatch: asciilifeform_dns_thermonyukyoolar_kleansing.vpatch
vpatch: asciilifeform_dnsseed_snipsnip.vpatch
vpatch: asciilifeform_lets_lose_testnet.vpatch
vpatch: asciilifeform_maxint_locks_corrected.vpatch
vpatch: asciilifeform_orphanage_thermonuke.vpatch
vpatch: asciilifeform_tx-orphanage_amputation.vpatch
vpatch: asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch
vpatch: asciilifeform_zap_hardcoded_seeds.vpatch
vpatch: asciilifeform_zap_showmyip_crud.vpatch
vpatch: bitcoin-asciilifeform.1.vpatch
vpatch: bitcoin-asciilifeform.2-https_snipsnip.vpatch
vpatch: bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch
vpatch: bitcoin-asciilifeform.4-goodbye-win32.vpatch
vpatch: bitcoin-v0_5_3-db_config.6.vpatch
vpatch: bitcoin-v0_5_3_1-rev_bump.7.vpatch
vpatch: bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch
vpatch: genesis.vpatch
NON-7BIT-ASCII VALUE IN SOURCE FILE: a/bitcoin/src/util.h ; BYTE VALUE: e2
NON-7BIT-ASCII VALUE IN SOURCE FILE: a/bitcoin/src/util.h ; BYTE VALUE: 80
NON-7BIT-ASCII VALUE IN SOURCE FILE: a/bitcoin/src/util.h ; BYTE VALUE: 94
vpatch: makefiles.vpatch
vpatch: malleus_mikehearnificarum.vpatch
vpatch: mod6_der_high_low_s.vpatch
vpatch: mod6_fix_dumpblock_params.vpatch
vpatch: programmable-versionstring.vpatch
vpatch: rm_rf_upnp.vpatch
mod6@gentoo ~/check_nonascii_bytes $
    

As we can see from the above, we sync'd all of the vpatches and seals from The Bitcoin Foundation's mirror of v0.5.4 Release vpatches. After sync'ing, we iterate through each vpatch and cat, and feeding them into `check_nonascii_bytes.pl`. Three bytes were discovered in the whole set of v0.5.4 Release vpatches, specifically 'e2', '80', and '94' from genesis.vpatch, in the source file of 'util.h'; the very same hyphen as aforementioned in this post.

The following is source code for `check_nonascii_bytes.pl`:

#!/usr/bin/perl

use strict;

my @vpatch=<STDIN>;

# Keep track of the current source file we're looking through.
my $src_file = "";

# Iterate over the vpatch one line at a time.
foreach my $line (@vpatch) {  

  if($line =~ /^--- (.*) .*/) {
    $src_file = $1;
  }

  # unpack the line into hex i.e. ;
  # 64696666202d754e7220612f626974636f696e2f2e67697469676e6f726520622f626974636f696e2f2e67697469676e6f72650a
  my $hex_line = unpack "H*", $line;

  # add spaces between each two character hex byte, i.e. ;
  # 64 69 66 66 20 2d 75 4e 72 20 61 2f 62 69 74 63 6f 69 6e 2f 2e 67 69 74 69 67 6e 6f 72 65 20 62 2f 62 69 74 63 6f 69 6e 2f 2e 67 69 74 69 67 6e 6f 72 65 0a
  $hex_line =~ s/(..)(?!$)/$1 /g;

  # Split out each two character hex representation by spaces, into array.
  my @line_bytes = split / /, $hex_line;
  
  # Iterate through the array of two character representations of bytes, one at a time.
  foreach my $lb (@line_bytes) {
    
    # Check the current two character representations.
    # First character must be between 0 and 7
    # Second character can be 0-9, or a-f.

    # If the two character byte representation is *NOT* in this range, 
    # we've found a non-seven-bit-ascii char.
    if($lb !~ /^[0-7][0-9a-f]$/i) { 
      print "NON-7BIT-ASCII VALUE IN SOURCE FILE: $src_file ; BYTE VALUE: $lb\n";
    }
  }
}
    

Next, I wrote a C program that completes the same task, here's what it's execution looks like:

mod6@gentoo ~/check_nonascii_bytes $ for i in `ls patches`; do echo "vpatch: $i"; ./cb patches/$i; done
vpatch: asciilifeform-kills-integer-retardation.vpatch
vpatch: asciilifeform_add_verifyall_option.vpatch
vpatch: asciilifeform_and_now_we_have_block_dumper_corrected.vpatch
vpatch: asciilifeform_and_now_we_have_eatblock.vpatch
vpatch: asciilifeform_dns_thermonyukyoolar_kleansing.vpatch
vpatch: asciilifeform_dnsseed_snipsnip.vpatch
vpatch: asciilifeform_lets_lose_testnet.vpatch
vpatch: asciilifeform_maxint_locks_corrected.vpatch
vpatch: asciilifeform_orphanage_thermonuke.vpatch
vpatch: asciilifeform_tx-orphanage_amputation.vpatch
vpatch: asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch
vpatch: asciilifeform_zap_hardcoded_seeds.vpatch
vpatch: asciilifeform_zap_showmyip_crud.vpatch
vpatch: bitcoin-asciilifeform.1.vpatch
vpatch: bitcoin-asciilifeform.2-https_snipsnip.vpatch
vpatch: bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch
vpatch: bitcoin-asciilifeform.4-goodbye-win32.vpatch
vpatch: bitcoin-v0_5_3-db_config.6.vpatch
vpatch: bitcoin-v0_5_3_1-rev_bump.7.vpatch
vpatch: bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch
vpatch: genesis.vpatch
OUT OF 7-BIT ASCII RANGE! : e2
OUT OF 7-BIT ASCII RANGE! : 80
OUT OF 7-BIT ASCII RANGE! : 94
vpatch: makefiles.vpatch
vpatch: malleus_mikehearnificarum.vpatch
vpatch: mod6_der_high_low_s.vpatch
vpatch: mod6_fix_dumpblock_params.vpatch
vpatch: programmable-versionstring.vpatch
vpatch: rm_rf_upnp.vpatch
    

Just as before, we iterate through each vpatch and feed it into our program, `cb` (check_bytes.c). Three bytes were discovered in the whole set of v0.5.4 Release vpatches, specifically 'e2', '80', and '94' from genesis.vpatch; the very same hyphen as aforementioned in this post.

The following is source code for `check_bytes.c`:

#include <stdio.h>
#include <stdlib.h>

void read_file(char *filename) {

  FILE      *file;
  char      *line  = NULL;
  size_t    len    = 0;
  ssize_t   read;

  int pos          = 0;  // Position in line
  short int d      = 0;  // holds the short decimal value of the char

  // attempt to open our file, read-only mode.
  file = fopen(filename, "r");

  // if our file stream is NULL, print error and exit.
  if (file == NULL) {
    fprintf(stderr, "FILE COULD NOT BE OPENED! EXITING.\n");
    exit(-1);
  }

  // Read a file line by line.
  while((read = getline(&line, &len, file)) != -1) {

    pos = 0;

    // Iterate through each character in the line, until we hit the NULL byte.
    while(line[pos] != '\0') {

      // set the current line position char in numeric form
      d = (short int) line[pos];

      // test numeric form of char if within 7-BIT ASCII range
      if(d < 0x0 || d > 0x7f) {
        fprintf(stdout, "OUT OF 7-BIT ASCII RANGE! : %02x\n", (unsigned char) line[pos]);
      }

      // move to the next position in the line
      pos++;
    }
  }

  // Clean up
  free(line);
  fclose(file);
}

int main(int argc, char **argv) {
  int i;

  // Iterate through all of the files given to us via command line
  for(i = 1; i < argc; i++) {
    read_file(argv[i]); // Call read_file for each given filename
  }

  return 0;
}
    

[ Regrind Help From V ]

From running the above two programs we can see that genesis.vpatch has three NON-7BIT-ASCII bytes. Since these bytes exist in util.h, we'll also need to determine which descendant vpatches are necessary to regrind. Note that every descendant vpatch that touches util.h will need to be reground. First, I did this by hand; but afterwards, realized that it wouldn't be hard to have V do this task for us.

I implemented two subroutines to take a descendant hash from a vpatch file, which will recurse to find all the descendant vpatches that touch the same source file and report them to stdout.

First, we'll need to find util.h's descendant hash from genesis.vpatch, then feed it into V:

mod6@gentoo ~/check_nonascii_bytes $ grep -e "^\+\+\+ b/.*util.h" patches/genesis.vpatch 
+++ b/bitcoin/src/util.h 04d09e92edd13820ea292bc0c0f66a9bc6f31c4020204817de56b7ae795c660dd47d7442d32403ba58fdc75ed1985174f6c507bcde7ee988a70185ba22fbb418
    

***NOTE*** THIS IS EXPERIMENTAL ONLY
Before we feed it into our new command, we can double check the hash with the 'origin' or 'o' command:

mod6@gentoo ~/check_nonascii_bytes $ ./v.pl o 04d09e92edd13820ea292bc0c0f66a9bc6f31c4020204817de56b7ae795c660dd47d7442d32403ba58fdc75ed1985174f6c507bcde7ee988a70185ba22fbb418
Origin: genesis.vpatch (mod6) [ a/bitcoin/src/util.h ]
    

Now that we can see that the hash matches, we can proceed to feed the hash into the new, experimental command 'descendant-hash', or 'dh':

mod6@gentoo ~/check_nonascii_bytes $ ./v.pl dh 04d09e92edd13820ea292bc0c0f66a9bc6f31c4020204817de56b7ae795c660dd47d7442d32403ba58fdc75ed1985174f6c507bcde7ee988a70185ba22fbb418
Origin: genesis.vpatch (mod6) [ a/bitcoin/src/util.h ]
|
|
|   bitcoin-asciilifeform.1.vpatch (mod6) [ a/bitcoin/src/util.h ]
+-->  Antecedent Hash: 04d09e92edd13820ea292bc0c0f66a9bc6f31c4020204817de56b7ae795c660dd47d7442d32403ba58fdc75ed1985174f6c507bcde7ee988a70185ba22fbb418
+ <-- Descendant Hash: 1355ad6ce93816fffc1befd7a68a5fbdf034ae24ae99c64a60269ca9db589363d6531f441cd2393630e3128c2762ddcb8101dd6c305551b70cf24e102e59cfd0
|
|
|   bitcoin-asciilifeform.4-goodbye-win32.vpatch (mod6) [ a/bitcoin/src/util.h ]
+-->  Antecedent Hash: 1355ad6ce93816fffc1befd7a68a5fbdf034ae24ae99c64a60269ca9db589363d6531f441cd2393630e3128c2762ddcb8101dd6c305551b70cf24e102e59cfd0
+ <-- Descendant Hash: 1e2275fea3780708aed4d4c7de351b23a9379354df29dda39b8bf2ccc72df95713514b2b7837dc2230d42cf8234744e804bfd608fb4442ff62871257f8d80c12
|
|
|   asciilifeform-kills-integer-retardation.vpatch (mod6) [ a/bitcoin/src/util.h ]
+-->  Antecedent Hash: 1e2275fea3780708aed4d4c7de351b23a9379354df29dda39b8bf2ccc72df95713514b2b7837dc2230d42cf8234744e804bfd608fb4442ff62871257f8d80c12
+ <-- Descendant Hash: e5e5da8c45c0fab1aca83eadb8e98560dc14f65060803b5efd7ea83418be6412ee6a4f59f15fa939e1d639ef2638c9c5d18b5448c246d943827a41e01997ef7b
|
|
|   asciilifeform_and_now_we_have_eatblock.vpatch (mod6) [ a/bitcoin/src/util.h ]
+-->  Antecedent Hash: e5e5da8c45c0fab1aca83eadb8e98560dc14f65060803b5efd7ea83418be6412ee6a4f59f15fa939e1d639ef2638c9c5d18b5448c246d943827a41e01997ef7b
+ <-- Descendant Hash: b81e7c3eb43eb18d226c7a0ebb5868cc793c7197318bf7954590136b9713cac00c9f44fc90578c52f86d424b272c2a78c0fc7a55b23b566cc0c859d4c699983c
|
|
|   asciilifeform_lets_lose_testnet.vpatch (mod6) [ a/bitcoin/src/util.h ]
+-->  Antecedent Hash: b81e7c3eb43eb18d226c7a0ebb5868cc793c7197318bf7954590136b9713cac00c9f44fc90578c52f86d424b272c2a78c0fc7a55b23b566cc0c859d4c699983c
+ <-- Descendant Hash: d88425cb5b70d7df2a60d174f99347b3ac00f0a7f17227bd9944f22ffaa3772389989c00c14135fbbb121fe3cb5b68c51eb1120ce214d3732b354c580d1f2fec
|
|
|   asciilifeform_add_verifyall_option.vpatch (mod6) [ a/bitcoin/src/util.h ]
+-->  Antecedent Hash: d88425cb5b70d7df2a60d174f99347b3ac00f0a7f17227bd9944f22ffaa3772389989c00c14135fbbb121fe3cb5b68c51eb1120ce214d3732b354c580d1f2fec
+ <-- Descendant Hash: 44bd62e864ed9400105aeea2e2ef6499f971577fd28b9c8dc52ef72dcdb4d4928168037cd7d7fca718e5d5a2d4d7c19c65f5b45c87d814d6e24c0d014b307477
|
|
|   programmable-versionstring.vpatch (mod6) [ a/bitcoin/src/util.h ]
+-->  Antecedent Hash: 44bd62e864ed9400105aeea2e2ef6499f971577fd28b9c8dc52ef72dcdb4d4928168037cd7d7fca718e5d5a2d4d7c19c65f5b45c87d814d6e24c0d014b307477
+ <-- Descendant Hash: d7e407108638c11f75b5bed04dc455ac78a96debc0776cd0e71871001c5886fd1472ae060e7a2334fcf3e323b7ad0a1b4fb68757392cc45a1b09721eb67415d1
|
|
|   mod6_der_high_low_s.vpatch (mod6) [ a/bitcoin/src/util.h ]
+-->  Antecedent Hash: d7e407108638c11f75b5bed04dc455ac78a96debc0776cd0e71871001c5886fd1472ae060e7a2334fcf3e323b7ad0a1b4fb68757392cc45a1b09721eb67415d1
+ <-- Descendant Hash: f0c21c349b56516feac63c9cf8018c82b26583ad290a4b3610965e5a5a703d116671b1ef270395b8289c170b603630b5b7e493725e420e187ba1fbd326061ff5
No Descendants Found by Hash: f0c21c349b56516feac63c9cf8018c82b26583ad290a4b3610965e5a5a703d116671b1ef270395b8289c170b603630b5b7e493725e420e187ba1fbd326061ff5
    

The above output shows there are nine vpatches that need to be reground to excise those three NON-7BIT-ASCII bytes found in the util.h file included in genesis.vpatch.

Let's take a look at the two subroutines that were written to produce this new output:

sub print_init_desc_tree {
  my ($hash) = @_;
  print_origin($hash);
  print_descendant_hash_tree($hash);
}

sub print_descendant_hash_tree {
  my ($hash) = @_;
  my $found = "f";
  foreach my $k (keys %map) {
    foreach my $sf (keys %{$map{$k}}) {
      if($map{$k}{$sf}{a} eq $hash) {
        $found = "t";
        print "|\n";
        print "|\n";
        print "|   $k " . get_signatories($k) . " [ $sf ]\n" .
              "+-->  Antecedent Hash: $hash\n" .
              "+ <-- Descendant Hash: $map{$k}{$sf}{b}\n";
              print_descendant_hash_tree($map{$k}{$sf}{b});
      }
    }
  }
  print "No Descendants Found by Hash: $hash\n" if $found ne "t";
}
    

[ Regrinding ]

We now have the nine vpatches that needed regrinding:

  1. genesis.vpatch
  2. bitcoin-asciilifeform.1.vpatch
  3. bitcoin-asciilifeform.4-goodbye-win32.vpatch
  4. asciilifeform-kills-integer-retardation.vpatch
  5. asciilifeform_and_now_we_have_eatblock.vpatch
  6. asciilifeform_lets_lose_testnet.vpatch
  7. asciilifeform_add_verifyall_option.vpatch
  8. programmable-versionstring.vpatch
  9. mod6_der_high_low_s.vpatch

Instead of an exhaustive list of all of the steps in the regrinding process, I'll simply detail out a few steps in the process:

*** Start by creating two directories 'a', and 'b'. ***
  1. Apply original vpatch into 'b'. A command such as this is required: `patch -F 0 -E --dir b -p1 < the_vpatch_to_regrind.vpatch`
  2. Make changes in 'b', ONLY IF REQUIRED! Often, in this regrind process, there may be no changes to be made, just new hashes to be inserted into the resulting reground output vpatch (by vdiff).
  3. Use vdiff to get the differences between 'a' and 'b', save the output to a new, reground, vpatch file.
  4. Remove directory 'a'.
  5. Copy all of 'b' into 'a'. (Now 'a, and 'b' are equal).
  6. Go to step 1. Repeat the process for all vpatches. THEY MUST BE IN THE CORRECT TOPOLOGICAL ORDER!

[ Signing Reground Vpatches With Testing Key ]

After regrinding all nine vpatches, I have signed these with my vpatch-testing key.

Here are the reground patches with corresponding new seals:

  1. genesis.vpatch   Sig
  2. bitcoin-asciilifeform.1.vpatch   Sig
  3. bitcoin-asciilifeform.4-goodbye-win32.vpatch   Sig
  4. asciilifeform-kills-integer-retardation.vpatch   Sig
  5. asciilifeform_and_now_we_have_eatblock.vpatch   Sig
  6. asciilifeform_lets_lose_testnet.vpatch   Sig
  7. asciilifeform_add_verifyall_option.vpatch   Sig
  8. programmable-versionstring.vpatch   Sig
  9. mod6_der_high_low_s.vpatch   Sig

We need to test that the newly created and signed vpatches work as expected.

To begin with, I am only placing my key, and my vpatch-testing key in the wot. If you want to test these, and it is encouraged that you do so, you'll need to do the same. Keep in mind that anyone who signed the original genesis, for instance, their signatures *WILL NOT* work any longer as the vpatch has been reground, and hence, changed.

Next, created a new directory to test the new reground vpatches and their sigs, 'test-regrind'.
I copied everything I needed into there:
'.wot' (with mod6 and mod6-vpatch-testing) ;
'patches' with v0.5.4 RELEASE vpatches replaced with the newly reground vpatches ;
'.seals' with old sigs from other Lords removed for the specific reground vpatches and adding the new 'mod6-vpatch-testing' seals for reground vpatches.

mod6@gentoo ~/check_nonascii_bytes/test-regrind $ ./v.pl w
mod6:027A8D7C0FB8A16643720F40721705A8B71EADAF:mod6 (mod6) <modsix@gmail.com>
mod6-vpatch-testing:3ED06EF340C63F185EE5AA068365BB7FD2C02F12:mod6-vpatch-testing (Key is ONLY for signing test vpatches and development) <modsix@gmail.com>
    

If we check the press-path of v0.5.4 RELEASE with the reground vpatches, we can see that the new ones are signed with 'mod6-vpatch-testing' and the original ones, that did not need regrinding are signed with 'mod6':

mod6@gentoo ~/check_nonascii_bytes/test-regrind $ ./v.pl pp makefiles.vpatch
genesis.vpatch (mod6-vpatch-testing)
bitcoin-asciilifeform.1.vpatch (mod6-vpatch-testing)
rm_rf_upnp.vpatch (mod6)
bitcoin-asciilifeform.2-https_snipsnip.vpatch (mod6)
bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch (mod6)
bitcoin-asciilifeform.4-goodbye-win32.vpatch (mod6-vpatch-testing)
bitcoin-v0_5_3-db_config.6.vpatch (mod6)
bitcoin-v0_5_3_1-rev_bump.7.vpatch (mod6)
bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch (mod6)
asciilifeform-kills-integer-retardation.vpatch (mod6-vpatch-testing)
asciilifeform_and_now_we_have_block_dumper_corrected.vpatch (mod6)
asciilifeform_dnsseed_snipsnip.vpatch (mod6)
asciilifeform_maxint_locks_corrected.vpatch (mod6)
asciilifeform_orphanage_thermonuke.vpatch (mod6)
asciilifeform_tx-orphanage_amputation.vpatch (mod6)
asciilifeform_zap_hardcoded_seeds.vpatch (mod6)
asciilifeform_zap_showmyip_crud.vpatch (mod6)
mod6_fix_dumpblock_params.vpatch (mod6)
asciilifeform_dns_thermonyukyoolar_kleansing.vpatch (mod6)
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch (mod6)
asciilifeform_and_now_we_have_eatblock.vpatch (mod6-vpatch-testing)
asciilifeform_lets_lose_testnet.vpatch (mod6-vpatch-testing)
asciilifeform_add_verifyall_option.vpatch (mod6-vpatch-testing)
programmable-versionstring.vpatch (mod6-vpatch-testing)
malleus_mikehearnificarum.vpatch (mod6)
mod6_der_high_low_s.vpatch (mod6-vpatch-testing)
makefiles.vpatch (mod6)
    

The above output shows that V has accepted the reground patches and seals as expected.

[ Pressing & Building With Reground Vpatches ]

Let's press the newly reground vpatches and ensure that everything is satisfactory:

mod6@gentoo ~/check_nonascii_bytes/test-regrind $ ./v.pl p v trb054 makefiles.vpatch
genesis.vpatch
  patching file bitcoin/.gitignore
  patching file bitcoin/COPYING
  patching file bitcoin/src/base58.h
  patching file bitcoin/src/bignum.h
  patching file bitcoin/src/bitcoinrpc.cpp
  patching file bitcoin/src/bitcoinrpc.h
  patching file bitcoin/src/checkpoints.cpp
  patching file bitcoin/src/checkpoints.h
  patching file bitcoin/src/crypter.cpp
  patching file bitcoin/src/crypter.h
  patching file bitcoin/src/db.cpp
  patching file bitcoin/src/db.h
  patching file bitcoin/src/headers.h
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/init.h
  patching file bitcoin/src/irc.cpp
  patching file bitcoin/src/irc.h
  patching file bitcoin/src/json/LICENSE.txt
  patching file bitcoin/src/json/json_spirit.h
  patching file bitcoin/src/json/json_spirit_error_position.h
  patching file bitcoin/src/json/json_spirit_reader.cpp
  patching file bitcoin/src/json/json_spirit_reader.h
  patching file bitcoin/src/json/json_spirit_reader_template.h
  patching file bitcoin/src/json/json_spirit_stream_reader.h
  patching file bitcoin/src/json/json_spirit_utils.h
  patching file bitcoin/src/json/json_spirit_value.cpp
  patching file bitcoin/src/json/json_spirit_value.h
  patching file bitcoin/src/json/json_spirit_writer.cpp
  patching file bitcoin/src/json/json_spirit_writer.h
  patching file bitcoin/src/json/json_spirit_writer_template.h
  patching file bitcoin/src/key.h
  patching file bitcoin/src/keystore.cpp
  patching file bitcoin/src/keystore.h
  patching file bitcoin/src/main.cpp
  patching file bitcoin/src/main.h
  patching file bitcoin/src/makefile.linux-mingw
  patching file bitcoin/src/makefile.unix
  patching file bitcoin/src/net.cpp
  patching file bitcoin/src/net.h
  patching file bitcoin/src/noui.h
  patching file bitcoin/src/obj/.gitignore
  patching file bitcoin/src/obj/nogui/.gitignore
  patching file bitcoin/src/obj/test/.gitignore
  patching file bitcoin/src/obj-test/.gitignore
  patching file bitcoin/src/protocol.cpp
  patching file bitcoin/src/protocol.h
  patching file bitcoin/src/qtui.h
  patching file bitcoin/src/script.cpp
  patching file bitcoin/src/script.h
  patching file bitcoin/src/serialize.h
  patching file bitcoin/src/strlcpy.h
  patching file bitcoin/src/test/Checkpoints_tests.cpp
  patching file bitcoin/src/test/DoS_tests.cpp
  patching file bitcoin/src/test/README
  patching file bitcoin/src/test/base58_tests.cpp
  patching file bitcoin/src/test/base64_tests.cpp
  patching file bitcoin/src/test/miner_tests.cpp
  patching file bitcoin/src/test/script_tests.cpp
  patching file bitcoin/src/test/test_bitcoin.cpp
  patching file bitcoin/src/test/transaction_tests.cpp
  patching file bitcoin/src/test/uint160_tests.cpp
  patching file bitcoin/src/test/uint256_tests.cpp
  patching file bitcoin/src/test/util_tests.cpp
  patching file bitcoin/src/uint256.h
  patching file bitcoin/src/util.cpp
  patching file bitcoin/src/util.h
  patching file bitcoin/src/wallet.cpp
  patching file bitcoin/src/wallet.h
bitcoin-asciilifeform.1.vpatch
  patching file bitcoin/src/bitcoinrpc.cpp
  patching file bitcoin/src/db.cpp
  patching file bitcoin/src/headers.h
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/qtui.h
  patching file bitcoin/src/util.h
  patching file bitcoin/src/wallet.cpp
rm_rf_upnp.vpatch
  patching file bitcoin/src/db.cpp
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/main.cpp
  patching file bitcoin/src/main.h
  patching file bitcoin/src/makefile.linux-mingw
  patching file bitcoin/src/makefile.unix
  patching file bitcoin/src/net.cpp
bitcoin-asciilifeform.2-https_snipsnip.vpatch
  patching file bitcoin/src/bitcoinrpc.cpp
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/makefile.linux-mingw
  patching file bitcoin/src/makefile.unix
bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch
  patching file bitcoin/src/main.cpp
  patching file bitcoin/src/main.h
bitcoin-asciilifeform.4-goodbye-win32.vpatch
  patching file bitcoin/src/bitcoinrpc.cpp
  patching file bitcoin/src/crypter.cpp
  patching file bitcoin/src/db.cpp
  patching file bitcoin/src/headers.h
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/main.h
  patching file bitcoin/src/makefile.linux-mingw
  patching file bitcoin/src/net.cpp
  patching file bitcoin/src/net.h
  patching file bitcoin/src/protocol.cpp
  patching file bitcoin/src/script.h
  patching file bitcoin/src/serialize.h
  patching file bitcoin/src/uint256.h
  patching file bitcoin/src/util.cpp
  patching file bitcoin/src/util.h
bitcoin-v0_5_3-db_config.6.vpatch
  patching file bitcoin/src/db.cpp
bitcoin-v0_5_3_1-rev_bump.7.vpatch
  patching file bitcoin/src/serialize.h
bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch
  patching file bitcoin/src/makefile.unix
asciilifeform-kills-integer-retardation.vpatch
  patching file bitcoin/src/bitcoinrpc.cpp
  patching file bitcoin/src/util.h
asciilifeform_and_now_we_have_block_dumper_corrected.vpatch
  patching file bitcoin/src/bitcoinrpc.cpp
asciilifeform_dnsseed_snipsnip.vpatch
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/net.cpp
asciilifeform_maxint_locks_corrected.vpatch
  patching file bitcoin/src/db.cpp
asciilifeform_orphanage_thermonuke.vpatch
  patching file bitcoin/src/main.cpp
asciilifeform_tx-orphanage_amputation.vpatch
  patching file bitcoin/src/main.cpp
  patching file bitcoin/src/main.h
asciilifeform_zap_hardcoded_seeds.vpatch
  patching file bitcoin/src/net.cpp
asciilifeform_zap_showmyip_crud.vpatch
  patching file bitcoin/src/net.cpp
mod6_fix_dumpblock_params.vpatch
  patching file bitcoin/src/bitcoinrpc.cpp
asciilifeform_dns_thermonyukyoolar_kleansing.vpatch
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/irc.cpp
  patching file bitcoin/src/net.cpp
  patching file bitcoin/src/net.h
  patching file bitcoin/src/protocol.cpp
  patching file bitcoin/src/protocol.h
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/irc.cpp
  patching file bitcoin/src/irc.h
  patching file bitcoin/src/makefile.unix
  patching file bitcoin/src/net.cpp
  patching file bitcoin/src/net.h
  patching file bitcoin/src/serialize.h
asciilifeform_and_now_we_have_eatblock.vpatch
  patching file bitcoin/src/bitcoinrpc.cpp
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/util.cpp
  patching file bitcoin/src/util.h
asciilifeform_lets_lose_testnet.vpatch
  patching file bitcoin/src/base58.h
  patching file bitcoin/src/bitcoinrpc.cpp
  patching file bitcoin/src/checkpoints.cpp
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/main.cpp
  patching file bitcoin/src/protocol.h
  patching file bitcoin/src/util.cpp
  patching file bitcoin/src/util.h
asciilifeform_add_verifyall_option.vpatch
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/main.cpp
  patching file bitcoin/src/util.cpp
  patching file bitcoin/src/util.h
programmable-versionstring.vpatch
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/knobs.h
  patching file bitcoin/src/main.cpp
  patching file bitcoin/src/makefile.unix
  patching file bitcoin/src/net.h
  patching file bitcoin/src/serialize.h
  patching file bitcoin/src/util.cpp
  patching file bitcoin/src/util.h
malleus_mikehearnificarum.vpatch
  patching file bitcoin/src/main.cpp
mod6_der_high_low_s.vpatch
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/key.h
  patching file bitcoin/src/util.cpp
  patching file bitcoin/src/util.h
makefiles.vpatch
  patching file bitcoin/Makefile
  patching file bitcoin/bin/Makefile
  patching file bitcoin/bin/Manifest.sha512
  patching file bitcoin/build/Makefile
  patching file bitcoin/build/Makefile.rotor
  patching file bitcoin/deps/Makefile
  patching file bitcoin/deps/Manifest.sha512
  patching file bitcoin/src/db.cpp
  patching file bitcoin/src/init.cpp
  patching file bitcoin/src/main.cpp
  patching file bitcoin/verify.mk
    

Alright, as we can see, the press was successful.

[ Testing & Approval ]

Let's now re-test and ensure that the NON-7BIT-ASCII bytes are removed, as expected:

mod6@gentoo ~/check_nonascii_bytes/test-regrind $ cp ../check_nonascii_bytes.pl .
mod6@gentoo ~/check_nonascii_bytes/test-regrind $ cp ../cb .
mod6@gentoo ~/check_nonascii_bytes/test-regrind $ for i in `ls patches`; do echo "vpatch: $i" && cat patches/$i | ./check_nonascii_bytes.pl; done
vpatch: asciilifeform-kills-integer-retardation.vpatch
vpatch: asciilifeform_add_verifyall_option.vpatch
vpatch: asciilifeform_and_now_we_have_block_dumper_corrected.vpatch
vpatch: asciilifeform_and_now_we_have_eatblock.vpatch
vpatch: asciilifeform_dns_thermonyukyoolar_kleansing.vpatch
vpatch: asciilifeform_dnsseed_snipsnip.vpatch
vpatch: asciilifeform_lets_lose_testnet.vpatch
vpatch: asciilifeform_maxint_locks_corrected.vpatch
vpatch: asciilifeform_orphanage_thermonuke.vpatch
vpatch: asciilifeform_tx-orphanage_amputation.vpatch
vpatch: asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch
vpatch: asciilifeform_zap_hardcoded_seeds.vpatch
vpatch: asciilifeform_zap_showmyip_crud.vpatch
vpatch: bitcoin-asciilifeform.1.vpatch
vpatch: bitcoin-asciilifeform.2-https_snipsnip.vpatch
vpatch: bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch
vpatch: bitcoin-asciilifeform.4-goodbye-win32.vpatch
vpatch: bitcoin-v0_5_3-db_config.6.vpatch
vpatch: bitcoin-v0_5_3_1-rev_bump.7.vpatch
vpatch: bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch
vpatch: genesis.vpatch
vpatch: makefiles.vpatch
vpatch: malleus_mikehearnificarum.vpatch
vpatch: mod6_der_high_low_s.vpatch
vpatch: mod6_fix_dumpblock_params.vpatch
vpatch: programmable-versionstring.vpatch
vpatch: rm_rf_upnp.vpatch
mod6@gentoo ~/check_nonascii_bytes/test-regrind $ for i in `ls patches`; do echo "vpatch: $i"; ./cb patches/$i; done
vpatch: asciilifeform-kills-integer-retardation.vpatch
vpatch: asciilifeform_add_verifyall_option.vpatch
vpatch: asciilifeform_and_now_we_have_block_dumper_corrected.vpatch
vpatch: asciilifeform_and_now_we_have_eatblock.vpatch
vpatch: asciilifeform_dns_thermonyukyoolar_kleansing.vpatch
vpatch: asciilifeform_dnsseed_snipsnip.vpatch
vpatch: asciilifeform_lets_lose_testnet.vpatch
vpatch: asciilifeform_maxint_locks_corrected.vpatch
vpatch: asciilifeform_orphanage_thermonuke.vpatch
vpatch: asciilifeform_tx-orphanage_amputation.vpatch
vpatch: asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch
vpatch: asciilifeform_zap_hardcoded_seeds.vpatch
vpatch: asciilifeform_zap_showmyip_crud.vpatch
vpatch: bitcoin-asciilifeform.1.vpatch
vpatch: bitcoin-asciilifeform.2-https_snipsnip.vpatch
vpatch: bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch
vpatch: bitcoin-asciilifeform.4-goodbye-win32.vpatch
vpatch: bitcoin-v0_5_3-db_config.6.vpatch
vpatch: bitcoin-v0_5_3_1-rev_bump.7.vpatch
vpatch: bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch
vpatch: genesis.vpatch
vpatch: makefiles.vpatch
vpatch: malleus_mikehearnificarum.vpatch
vpatch: mod6_der_high_low_s.vpatch
vpatch: mod6_fix_dumpblock_params.vpatch
vpatch: programmable-versionstring.vpatch
vpatch: rm_rf_upnp.vpatch
    

Now that we've re-run both `check_nonascii_bytes.pl`, and `cb` (check_bytes.c) against the pressed, reground source, we can see that no NON-7BIT-ASCII characters have been detected.

The last step here is to completely rebuild trb.

mod6@gentoo ~/check_nonascii_bytes/test-regrind/trb054/bitcoin $ make ONLINE=1
...
cd ../src && \
make STATIC=all -f makefile.unix bitcoind
make[3]: Entering directory '/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/src'
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/checkpoints.o checkpoints.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/crypter.o crypter.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/db.o db.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/init.o init.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/keystore.o keystore.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/main.o main.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/net.o net.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/protocol.o protocol.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/bitcoinrpc.o bitcoinrpc.cpp
In file included from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/detail/socket_types.hpp:50:0,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/detail/epoll_reactor.hpp:32,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/detail/reactor.hpp:21,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/detail/impl/task_io_service.ipp:24,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/detail/task_io_service.hpp:217,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/impl/io_service.hpp:71,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/io_service.hpp:767,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/basic_io_object.hpp:19,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/basic_socket.hpp:19,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio/basic_datagram_socket.hpp:20,
                 from /home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include/boost/asio.hpp:20,
                 from bitcoinrpc.cpp:11:
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/x86_64-therealbitcoin-linux-musl/sysroot/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
 #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
  ^
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/script.o script.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/util.o util.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/wallet.o wallet.cpp
/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/bin/x86_64-therealbitcoin-linux-musl-g++ -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -I/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/include -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -o bitcoind obj/nogui/checkpoints.o obj/nogui/crypter.o obj/nogui/db.o obj/nogui/init.o obj/nogui/keystore.o obj/nogui/main.o obj/nogui/net.o obj/nogui/protocol.o obj/nogui/bitcoinrpc.o obj/nogui/script.o obj/nogui/util.o obj/nogui/wallet.o -L/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/toolchain/usr/lib -L/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/lib -L/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/lib -L/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build/ourlibs/lib -Wl,-Bstatic -l boost_system -l boost_filesystem -l boost_program_options -l boost_thread -l db_cxx -l ssl -l crypto -static-libgcc -Wl,-Bstatic -l pthread
make[3]: Leaving directory '/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/src'
strip ../src/bitcoind
make[2]: Leaving directory '/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build'
cp ../src/bitcoind .
make[1]: Leaving directory '/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/build'
make -C bin
make[1]: Entering directory '/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/bin'
cp ../build/bitcoind .
#grep "  bitcoind$" Manifest.sha512 | sha512sum -c || (mv bitcoind bitcoind.badsum && false)
make[1]: Leaving directory '/home/mod6/check_nonascii_bytes/test-regrind/trb054/bitcoin/bin'
mod6@gentoo ~/check_nonascii_bytes/test-regrind/trb054/bitcoin $ ls -al bin/bitcoind 
-rwxr-xr-x 1 mod6 mod6 4889056 Mar 11 04:27 bin/bitcoind
mod6@gentoo ~/check_nonascii_bytes/test-regrind/trb054/bitcoin $
    

Compile successful.

[ Testing & Approval ]

There are some follow up questions here:

  1. Is there any problems observed with checking for the NON-7BIT-ASCII bytes in the two posted programs above; `check_nonascii_bytes.pl` and `check_bytes.c'?
  2. Do Bitcoin Lords like the possible new functionality (yet unreleased) in V enough to warrant putting it into the next release? It's also worth mentioning that there is also an 'antecedent hash' or 'ah' version of this command as well -- not shown here as to not cause confusion.
After review of all of the above by Lords of The Most Serene Republic, I will post the reground vpatches with seals signed by mod6's key to the The Bitcoin Foundation mailing list. Please send all comments to me in #trilema, or via email. Thanks in advance!
~mod6