<<  >> (p.9)
    Author Topic: bech32(1) for encoding/decoding of Bech32 strings & “Bravo Charlie” Addresses  (Read 573 times)
    nullius (OP)
    Copper Member
    Hero Member
    *****
    Offline

    Activity: 630
    Merit: 2635


    If you don’t do PGP, you don’t do crypto!


    View Profile WWW
    December 29, 2017, 09:54:59 PM
    Last edit: January 02, 2018, 06:58:16 AM by nullius
    Merited by EcuaMobi (5), RGBKey (3), DooMAD (2), bones261 (2), darosior (2), ABCbits (1)
     #1

    I have released an initial version of the bech32(1) utility for encoding and decoding of BIP 173 Bech32 strings and Bitcoin “Bravo Charlie Addresses” (“bc1”).  As any worthwhile software, it comes replete with a manpage (text), q.v.

    As part of its initial feature set, bech32(1) has special handling for RFC 7686 .onion special-use domain names; it detects such a name, and transcodes the RFC 4648 Base32 to and from Bech32 with an HRP of “onion”.  For Bitcoin “Bravo Charlie” addresses, bech32(1) takes and gives the witness version and the hexadecimal-coded octets of the witness program.  Otherwise, for the most part, it encodes and decodes hexadecimal data with user-provided HRPs.  I intend to add special interpretation of “pgp1” with a concept I call “PGP Descriptors”; but I need to spec that out first.

    Some usage examples from the manpage:

    Code:
    Extract the witness version and Hash160 from the bech32 utility author's
    Bech32 tip address:

          bech32 -S bc1qcash96s5jqppzsp8hy8swkggf7f6agex98an7h
          0:0xc76172ea149002114027b90f0759084f93aea326

    Get a “hello, world” introduction to Bech32:

          bech32 -e -h hello_world 48656c6c6f2c20776f726c6421
          hello_world1fpjkcmr09ss8wmmjd3jzzwhs4ff

    Generate a “burn address” with a Hash160 of all zeroes, which would be
    spendable by the same unknown private keys as the infamous
    1111111111111111111114oLvT2.  Warning:  Do NOT send coins here:

          bech32 -s 0 0x0000000000000000000000000000000000000000
          bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq9e75rs

    Bech32-encode the address for Wikileaks, to add error-correcting codes:

          bech32 -e wlupld3ptjvsgwqw.onion
          onion1kt50trm0nf4jxkskpcjy74

    Now, decode the address someone gave you:

          bech32 -d onion1kt50trm0nf4jxkskpcjy74
          wlupld3ptjvsgwqw.onion

    Licensing includes a Bitcoin Consensus Clause, to prevent use by scamcoin pretenders.

    This is an alpha-quality initial release.  The code is still a bit messy; it needs test vectors, which seem insufficiently specified; features and the finer details of behaviour may be a bit in flux.  However, the basic user interface should be considered stable.  I am here opening a Bitcoin Forum thread for discussion of this utility; over time, I will edit and update this post as appropriate.

Page 8
Viewing Page: 9