-
+ 12CCA3D90B11AD346B6224E009E263BE37361B8EB80E523C3B3F694586AB4E057B07B191ECDABAF4F73DB778F1C23D7FC78241F48D1CB5E1DE566A7F1BEECBB0
v/v_users_manual.txt
(0 . 0)(1 . 536)
1054 ..::[ The Bitcoin Foundation: V Users Manual ]::..
1055
1056
1057 Doc Version: 99994 K
1058 Author: mod6
1059 Fingerprint: 0x027A8D7C0FB8A16643720F40721705A8B71EADAF
1060
1061 0x00]: Introduction
1062
1063 Welcome to V!
1064
1065 This document is intended to be a users manual for mod6's perl implementation
1066 of V. Contained herein the user will find usage explanations and examples of
1067 the many options available.
1068
1069 0x01]: Getting Started
1070
1071 [ Check if perl is installed & version ]:
1072
1073 First, in order to execute the perl version of V, the user must have perl
1074 version 5.005 or greater installed on the local UNIX environment. Perl
1075 typically comes installed on many UNIX environments ahead of time, but just
1076 to be sure, do the following from the command prompt:
1077
1078 perl --version
1079
1080 The user should see a lengthy version message that starts with something
1081 like this:
1082
1083 `This is perl 5, version 18, subversion 2 (v5.18.2) ...'
1084
1085 If not, please install perl 5.005 or greater before going any further:
1086
1087 Ubuntu:
1088 apt-get install -y perl
1089
1090 Gentoo:
1091 emerge =perl-5.20.2.ebuild
1092
1093 [ Install CPAN ]:
1094
1095 If it is desired to at all use the graphing feature of V the user will need
1096 to install CPAN [ `cpan` or `cpanm` or on gentoo, `g-cpan` ] so that the
1097 Graph::Easy perl library can be installed.
1098
1099 Ubuntu:
1100
1101 apt-get install cpanminus
1102 cpanm -i Graph::Easy
1103
1104 Gentoo [x86-64]:
1105
1106 emerge g-cpan
1107
1108 [ NOTE: Copy the next nine lines exacty as they are presented here and ]
1109 [ then paste them into the shell. ]
1110
1111 cat <<EOF > /etc/portage/package.accept_keywords
1112 # required by perl-gcpan/JSON-MaybeXS-1.003005::x-g-cpan
1113 # required by JSON-MaybeXS (argument)
1114 =dev-perl/Test-Without-Module-0.180.0 ~amd64
1115 # required by perl-gcpan/Cpanel-JSON-XS-3.0115::x-g-cpan
1116 # required by Cpanel-JSON-XS (argument)
1117 =dev-perl/common-sense-3.730.0 ~amd64
1118 EOF
1119
1120 g-cpan -i Graph::Easy
1121
1122 [ Install GnuPG ]:
1123
1124 The user will need GnuPG installed locally to run V, if you already have
1125 this installed, skip this step.
1126
1127 Ubuntu:
1128 sudo apt-get install -y gnupg
1129
1130 [NOTE: 1.4.19 seems to be the oldest portage a recent gentoo ships with)]:
1131 Gentoo:
1132 emerge =gnupg-1.4.19
1133
1134 [ Install wget ]:
1135
1136 Many UNIX systems come with `wget` installed already, if yours does not,
1137 install it:
1138
1139 Ubuntu:
1140 sudo apt-get install -y wget
1141
1142 Gentoo:
1143 emerge wget
1144
1145 [ Install GraphViz ]:
1146
1147 In addition to Graph::Easy, if you wish to have V automatically build the
1148 SVG graph in an HTML output file for you from the Dot language output file,
1149 also output by V, you need to install GraphViz.
1150
1151 Ubuntu:
1152 sudo apt-get install -y graphviz
1153
1154 Gentoo:
1155 emerge -a graphviz
1156 etc-update [ enter -5 when prompted ]
1157 emerge -a graphviz [ Answer Yes at prompt ]
1158
1159 [ Download V Archive ]:
1160
1161 Now you must obtain the V archive & signature from:
1162
1163 http://thebitcoin.foundation/v/V-20170317.tar.gz
1164 http://thebitcoin.foundation/v/V-20170317.tar.gz.mod6.sig
1165
1166 Then check the PGP signatures supplied:
1167
1168 wget http://mod6.net/mod6.asc -O mod6.asc
1169 gpg --import mod6.asc
1170
1171 [ Key Fingerprint: 0x027A8D7C0FB8A16643720F40721705A8B71EADAF ]
1172
1173 gpg --verify V-20170317.tar.gz.mod6.sig V-20170317.tar.gz
1174
1175 Then unpack the archive:
1176
1177 tar -xf V-20170317.tar.gz
1178
1179 [ Start V for the first time ]:
1180
1181 First, set the executable bit on v.pl:
1182
1183 chmod 0755 v.pl
1184
1185 Before you get any further, create a '.wot' directory (V looks for '.wot'
1186 in the current working directory by default) and populate it with PGP public
1187 keys manually. Name the pubkey files as such: <wotid>.asc
1188
1189 For example: mod6.asc
1190
1191 Now have V sync the required Seals and Patches directories from a signed
1192 mirror. To view the list of mirrors, run the following command, the output
1193 you'll see below.
1194
1195 ./v.pl m v_mirrors
1196 Mirrors signed by (mod6):
1197 http://thebitcoin.foundation
1198
1199 As stated from mirrors output we can use URL from The Bitcoin Foundation to
1200 sync V up-to-date with all the latest WoT entries (PGP Public Keys), VPatch
1201 Signatures (Seals) and Vpatches.
1202
1203 To begin this initial sync do the following:
1204
1205 ./v.pl i http://thebitcoin.foundation
1206
1207
1208 0x01]: V Usage
1209
1210 At this point the user has installed all of V's requirements, performed a
1211 lookup of available signed mirrors, and sync'd the WoT, Patches and Seals.
1212
1213 What follows are usages and definitions of V's options with examples.
1214
1215 A note about option syntax. Any option enclosed with parenthesis ( ) is
1216 required. The | separates any aliases of commands. Square brackets [ ]
1217 denote optional options. Angle brackets < > denote required arguments to
1218 a given command.
1219
1220 [ m | mirrors ]:
1221 Arguments:
1222 (<output_dir>)
1223
1224 The m or mirrors command is available to connect to the main V site:
1225 http://thebitcoin.foundation Here, V can connect and pull the list of
1226 available mirrors, signed by mirror administrators with L1 trust with
1227 assbot and are in good standing in the WoT. Ask mod6 about this if you
1228 want to run an authorized, signed mirror of V.
1229
1230 The mirrors command takes one required argument, an output directory for the
1231 list of mirrors and the signatures so V can verify the list.
1232
1233 Example:
1234 ./v.pl m v_mirrors
1235 Mirrors signed by (mod6):
1236 http://thebitcoin.foundation
1237
1238 [ i | init ]:
1239
1240 Arguments & Options:
1241 (mirror_url) [(<pdir> <sdir>)]
1242
1243 The i or init command is intended to be utilized the first time running V
1244 on an environment. It takes one required option, and two optional
1245 options. The required argument is a V mirror URL to sync from. Next, the
1246 user can choose to use the default Patches ('patches' in the current working
1247 directory) and Seals (.seals in the current working directory) directories
1248 by not setting the two <pdir> or <sdir> options -- only passing a mirror URL
1249 argument to the init command. If the user wishes to use their own named
1250 directories, simply pass in those arguements in the exact order specified.
1251
1252 Example:
1253 ./v.pl i http://thebitcoin.foundation
1254 Full vpatch sync complete to "/home/mod6/patches"
1255 Seal sync complete to "/home/mod6/.seals"
1256
1257 Example:
1258 ./v.pl i http://thebitcoin.foundation wot vpatches seals
1259 Full vpatch sync complete to "vpatches"
1260 Seal sync complete to "seals"
1261
1262 [ wd | wotdir ]:
1263
1264 Arguments:
1265 (<wotdir>)
1266
1267 The wd or wotdir command is available to point V at a specific WoT
1268 directory rather than the default: '.wot' (in the current working directory)
1269 There is one required argument: a WoT directory.
1270
1271 Example case, only mod6.asc exists in wot2:
1272 ./v.pl f wd wot2
1273 genesis.vpatch (mod6)
1274 bitcoin-asciilifeform.1.vpatch (mod6)
1275 rm_rf_upnp.vpatch (mod6)
1276 ...
1277
1278 [ pd | patchdir ]:
1279
1280 Arguments:
1281 (<patchdir>)
1282
1283 The pd or patchdir command is available to point V at a specific patch
1284 directory rather than the default: 'patches', in V's present working
1285 directory. There is one required argument: a vpatches directory.
1286
1287 Example case, only genesis.vpatch exists in patches2:
1288 ./v.pl f pd patches2
1289 genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
1290
1291 [ sd | sealdir ]:
1292
1293 Arguments:
1294 (<sealdir>)
1295
1296 The sd or sealdir command is available to point V at a specific seal
1297 directory rather than the default: '.seals' (in the current working
1298 directory)
1299 There is one required argument: a seals directory.
1300
1301 Example case, only seals created by mod6 exist in seal2:
1302 ./v.pl f sd seals2/
1303 genesis.vpatch (mod6)
1304 bitcoin-asciilifeform.1.vpatch (mod6)
1305 rm_rf_upnp.vpatch (mod6)
1306 ...
1307
1308 [ w | wot ]:
1309
1310 Options:
1311 [ finger ]
1312
1313 The w or wot command will build a list of WoT entities eligable for
1314 creating seals for approved vpatches. If a specific vpatch has not
1315 been signed by a WoT entity, it is considered a 'WILD' vpatch, and will be
1316 ignored. A vpatch must be signed by both Co-Chairs of The Bitcoin Foundation
1317 to be considered approved for release.
1318
1319 Example:
1320 ./v.pl w
1321 asciilifeform:17215D118B7239507FAFED98B98228A001ABFFC7:Stanislav Datskovskiy <stas@loper-os.org>
1322 ben_vulpes:4F7907942CA8B89B01E25A762AFA1A9FD2D031DA:Ben Vulpes <benkay@gmail.com>
1323 mircea_popescu:6160E1CAC8A3C52966FD76998A736F0E2FB7B452:Mircea Popescu (Acest articol are apriori avantajul aliteralitatii alaturi.) <office@polimedia.us>
1324 mod6:027A8D7C0FB8A16643720F40721705A8B71EADAF:mod6 (mod6) <modsix@gmail.com>
1325 punkman:F28E0095843B91CB22E7D65533588BE08B232B13:punkman
1326 trinque:FC66C0C5D98C42A1D4A98B6B42F9985AFAB953C4:Michael Trinque <mike@trinque.org>
1327
1328 ./v.pl w finger
1329 asciilifeform-B98228A001ABFFC7:17215D118B7239507FAFED98B98228A001ABFFC7:Stanislav Datskovskiy <stas@loper-os.org>
1330 ben_vulpes-2AFA1A9FD2D031DA:4F7907942CA8B89B01E25A762AFA1A9FD2D031DA:Ben Vulpes <benkay@gmail.com>
1331 mircea_popescu-8A736F0E2FB7B452:6160E1CAC8A3C52966FD76998A736F0E2FB7B452:Mircea Popescu (Acest articol are apriori avantajul aliteralitatii alaturi.) <office@polimedia.us>
1332 mod6-721705A8B71EADAF:027A8D7C0FB8A16643720F40721705A8B71EADAF:mod6 (mod6) <modsix@gmail.com>
1333 punkman-33588BE08B232B13:F28E0095843B91CB22E7D65533588BE08B232B13:punkman
1334 trinque-42F9985AFAB953C4:FC66C0C5D98C42A1D4A98B6B42F9985AFAB953C4:Michael Trinque <mike@trinque.org>
1335
1336 [ r | roots ]:
1337
1338 The r or roots command takes no options or arguments, unless a different
1339 pd or patchdir is specified. It simply traverses the vpatch directories
1340 contained vpatches and returns any root vpatches found in the topological
1341 order.
1342
1343 Examples:
1344 ./v.pl r
1345 Root: genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
1346
1347 Examples:
1348 ./v.pl r pd patches2
1349 Root: genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
1350
1351 [ l | leafs ]:
1352
1353 The l or leafs command takes no options or arguments, unless a different
1354 pd or patchdir is specified. It simply traverses the vpatch directories
1355 contained vpatches and returns any leaf vpatches found in the topological
1356 order.
1357
1358 Examples:
1359 ./v.pl l
1360 Leaf: asciilifeform_add_verifyall_option.vpatch (asciilifeform, mod6)
1361 Leaf: asciilifeform_maxint_locks_corrected.vpatch (asciilifeform, mod6)
1362
1363 Example case, only genesis.vpatch exists in patches2:
1364 ./v.pl l pd patches2
1365 Leaf: genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
1366
1367 [ f | flow ]:
1368
1369 The f or flow command prints a topoligical flow of vpatches based on
1370 precedence. By default will look for the 'patches' directory in the present
1371 working directory of V and print the flow to stdout.
1372
1373 Example:
1374 ./v.pl f
1375 genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
1376 bitcoin-asciilifeform.1.vpatch (asciilifeform, mod6)
1377 rm_rf_upnp.vpatch (asciilifeform, mod6)
1378 bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch (asciilifeform, mod6)
1379 bitcoin-asciilifeform.2-https_snipsnip.vpatch (asciilifeform, mod6)
1380 bitcoin-asciilifeform.4-goodbye-win32.vpatch (asciilifeform, mod6)
1381 asciilifeform_dnsseed_snipsnip.vpatch (asciilifeform, mod6)
1382 asciilifeform_zap_hardcoded_seeds.vpatch (asciilifeform, mod6)
1383 asciilifeform-kills-integer-retardation.vpatch (asciilifeform, mod6)
1384 asciilifeform_zap_showmyip_crud.vpatch (asciilifeform, mod6)
1385 asciilifeform_dns_thermonyukyoolar_kleansing.vpatch (asciilifeform, mod6)
1386 asciilifeform_and_now_we_have_block_dumper_corrected.vpatch (asciilifeform, mod6)
1387 mod6_fix_dumpblock_params.vpatch (asciilifeform, mod6)
1388 bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch (asciilifeform, mod6)
1389 bitcoin-v0_5_3_1-rev_bump.7.vpatch (asciilifeform, mod6)
1390 asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch (asciilifeform, mod6)
1391 asciilifeform_orphanage_thermonuke.vpatch (asciilifeform, mod6)
1392 asciilifeform_and_now_we_have_eatblock.vpatch (asciilifeform, mod6)
1393 bitcoin-v0_5_3-db_config.6.vpatch (asciilifeform, mod6)
1394 asciilifeform_tx-orphanage_amputation.vpatch (asciilifeform, mod6)
1395 asciilifeform_maxint_locks_corrected.vpatch (asciilifeform, mod6)
1396 asciilifeform_lets_lose_testnet.vpatch (asciilifeform, mod6)
1397 asciilifeform_add_verifyall_option.vpatch (asciilifeform, mod6)
1398
1399 Example case, only genesis.vpatch exists in patches2:
1400 ./v.pl f pd patches2
1401 genesis.vpatch (asciilifeform, mircea_popescu, mod6, trinque)
1402
1403 [ p | press ]:
1404
1405 Arguments:
1406 (<press_dir> <head>)
1407
1408 The p or press command is available to apply vpatches up through <head> in
1409 topological order (see flow command) to an output directory <press_dir>.
1410 There are two required arguments; an output directory for applied patches
1411 <press_dir> and a vpatch <head> as the tip of the tree to press up through.
1412 By default, no output is shown; however if the user supplies `v' or
1413 `verbose' directly after the p or press command then the output from the
1414 patching applcation process will be directed to stdout.
1415
1416 Example:
1417 ./v.pl p press_output genesis.vpatch
1418
1419 Example:
1420 ./v.pl p verbose press_verbose genesis.vpatch
1421 genesis.vpatch
1422 patching file bitcoin/.gitignore
1423 patching file bitcoin/COPYING
1424 patching file bitcoin/src/base58.h
1425 patching file bitcoin/src/bignum.h
1426 patching file bitcoin/src/bitcoinrpc.cpp
1427 patching file bitcoin/src/bitcoinrpc.h
1428 patching file bitcoin/src/checkpoints.cpp
1429 patching file bitcoin/src/checkpoints.h
1430 patching file bitcoin/src/crypter.cpp
1431 patching file bitcoin/src/crypter.h
1432 patching file bitcoin/src/db.cpp
1433 patching file bitcoin/src/db.h
1434 patching file bitcoin/src/headers.h
1435 patching file bitcoin/src/init.cpp
1436 ...
1437
1438 [ ss | sync-seals ]:
1439
1440 Arguments:
1441 (<mirror_url> <sdir>)
1442
1443 The ss or sync-seals command is avilable to allow the user to sync seal to
1444 an alternative directory. Two arguments are required; the <mirror_url>
1445 from which to sync and the alternative or existing seals directory <sdir>.
1446
1447 Example:
1448 ./v.pl ss http://thebitcoin.foundation seals2
1449 Seal sync complete to "seals2"
1450
1451 [ sv | sync-vpatches ]:
1452
1453 Arguments:
1454 (<mirror_url> <pdir> <vpatches>... )
1455
1456 The sv or sync-vpatches command is availabe to allow the user to sync one or
1457 more individual vpatches to a alternative output directory. Three arguments
1458 are required; the <mirror_url> from which to sync, the alternative or
1459 existing directory <pdir> and one or more <vpatches>.
1460
1461 Example case, sync one vpatch to an existing patches directory:
1462 ./v.pl sv http://thebitcoin.foundation patches genesis.vpatch
1463 genesis.vpatch sync complete to "patches"
1464
1465 Example case, sync more than one vpatch to an alternative patches directory:
1466 ./v.pl sv http://thebitcoin.foundation patches2 genesis.vpatch rm_rf_upnp.vpatch
1467 genesis.vpatch sync complete to "patches2"
1468 rm_rf_upnp.vpatch sync complete to "patches2"
1469
1470 [ sa | sync-all-vpatches ]:
1471
1472 Arguments:
1473 (<mirror_url> <pdir>)
1474
1475 The sa or sync-all-vpatches command is avilable to allow the user to sync
1476 all vpatches from a given mirror to an alternative output directory. Two
1477 arguments are required; the <mirror_url> from which to sync and the
1478 alternative or existing patches directory <pdir>.
1479
1480 Example case, sync all vpatches to the pre-existing patches directory:
1481 ./v.pl sa http://thebitcoin.foundation patches
1482 Full vpatch sync complete to "patches"
1483
1484 Example case, sync all vpatches to an alternative patches directory:
1485 ./v.pl sa http://thebitcoin.foundation patches2
1486 Full vpatch sync complete to "patches2"
1487
1488 [ se | sync-everything ]:
1489
1490 Arguments:
1491 (<mirror_url> <pdir> <sdir>)
1492
1493 The se or sync-everything command is available to allow the user to sync
1494 all patches and seals from a given mirror to either existing or alternative
1495 directories. Three arguments are required; the <mirror_url> from which to
1496 sync, the existing or alternative output patches directory <pdir>, and the
1497 existing or alternative seals directory <sdir>.
1498
1499 ./v.pl se http://thebitcoin.foundation patches2 seals2
1500 Full vpatch sync complete to "patches2"
1501 Seal sync complete to "seals2"
1502
1503 [ a | ante | antecedents ]:
1504
1505 Arguments:
1506 (<vpatch>)
1507
1508 The a or ante or antecedents command is available to allow the user to view
1509 the antecedents of a given vpatch. One argument is required, the name of a
1510 <vpatch>.
1511
1512 Example:
1513 ./v.pl a mod6_fix_dumpblock_params.vpatch
1514 Antecedent: asciilifeform_and_now_we_have_block_dumper_corrected.vpatch \
1515 (asciilifeform, mod6) [ a/bitcoin/src/bitcoinrpc.cpp ]
1516
1517 Example case, examine the antecedents of a given vpatch from an alternative
1518 directory:
1519 ./v.pl a asciilifeform_zap_showmyip_crud.vpatch pd patches2
1520 Antecedent: asciilifeform_zap_hardcoded_seeds.vpatch (asciilifeform, mod6) \
1521 [ a/bitcoin/src/net.cpp ]
1522
1523 [ d | desc | descendants ]:
1524
1525 Arguments:
1526 (<vpatch>)
1527
1528 The d or desc or descendants command is available to allow the user to view
1529 the descendants of a given <vpatch>. One argument is required, the name of
1530 a <vpatch>.
1531
1532 Example:
1533 ./v.pl d mod6_fix_dumpblock_params.vpatch
1534 Descendant: asciilifeform_and_now_we_have_eatblock.vpatch \
1535 (asciilifeform, mod6) [ a/bitcoin/src/bitcoinrpc.cpp ]
1536
1537 Example case, examine the descendants of a given vpatch from an alternative
1538 directory:
1539 ./v.pl d asciilifeform_zap_showmyip_crud.vpatch pd patches2
1540 Descendant: asciilifeform_dns_thermonyukyoolar_kleansing.vpatch \
1541 (asciilifeform, mod6) [ a/bitcoin/src/net.cpp ]
1542
1543 [ o | origin ]:
1544
1545 Arguments:
1546 (<sha512_hash>)
1547
1548 The o or origin command is avaliable to allow the user to pass a sha512
1549 hash and view where the given hash originated in the source tree.
1550
1551 [ g | graph ]:
1552
1553 Arguments & Options:
1554 (<output_dotfile> [<output_svg_html_file>])
1555
1556 The g or graph command is available to produce a topoligical flow graph in
1557 SVG format. The command has a required argument, the <output_dotfile>.
1558 The output Dot language file can be used to generate the SVG HTML output
1559 file with the `dot` binary. To produce the output Dot language file, the
1560 perl library Graph::Easy must be installed on the local environment.
1561 The optional command is given as a name for the <output_svg_html_file>.
1562 If 'graphviz' is installed on the local environment, then the `dot` binary
1563 should be available for V to invoke and generate the SVG HTML output for
1564 the user automatically. If it is not possible for the user to install
1565 'graphviz' on the local environment for whatever reason, the Dot language
1566 output file can be copied to a seperate environment where 'graphviz' can be
1567 installed. A command like this is used to generate the SVG HTML output
1568 with the `dot` binary: `dot -Tsvg v-graph.dot > v-graph.html`.
1569
1570 Example:
1571 ./v.pl g vpatch.dot vpatch-graph.html
1572 Printed Graphviz dot file to vpatch.dot
1573 Executed `dot` and built svg html output file: vpatch-graph.html
1574
1575 Example case, build a graph from an alternative WoT, Patches and Seals
1576 directory:
1577 ./v.pl g vpatch-graph2.dot vpatch-graph2.html wd wot2 pd patches2 sd seals2
1578 Printed Graphviz dot file to vpatch-graph2.dot
1579 Executed `dot` and built svg html output file: vpatch-graph2.html
1580
1581 [ v | version ]:
1582
1583 The v or version command simply prints the current version of V to stdout.
1584 This command takes no options or arguments.
1585
1586 [ h | ? | help ]:
1587
1588 The h or ? or help command will print a longer, more verbose help message
1589 to stdout. This command takes no options or arguments.