#bech32 #base32 #bitcoin #encoding #codec #syscoin

syscoin-bech32

Encodes and decodes Bitcoin/Syscoin Segregated Witness addresses in Bech32

3 releases

Uses old Rust 2015

0.8.4 Feb 5, 2019
0.8.3 Feb 5, 2019
0.8.2 Feb 5, 2019

#14 in #bech32

MIT license

22KB
333 lines

Syscoin Bech32

Encodes and decodes Syscoin Segregated Witness addresses in the Bech32 format described in BIP-0173.

Example

use syscoin_bech32::{WitnessProgram, u5};
use syscoin_bech32::constants::Network;

let witness_program = WitnessProgram::new(
    u5::try_from_u8(0).unwrap(),
    vec![
        0x00, 0x00, 0x00, 0xc4, 0xa5, 0xca, 0xd4, 0x62,
        0x21, 0xb2, 0xa1, 0x87, 0x90, 0x5e, 0x52, 0x66,
        0x36, 0x2b, 0x99, 0xd5, 0xe9, 0x1c, 0x6c, 0xe2,
        0x4d, 0x16, 0x5d, 0xab, 0x93, 0xe8, 0x64, 0x33],
    Network::Testnet,
).unwrap();

let address = witness_program.to_address();
assert_eq!(address,
           "ts1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy".to_string());

let decoded = WitnessProgram::from_address(&address).unwrap();
assert_eq!(decoded, witness_program);

lib.rs:

Encoding and decoding Bech32 Bitcoin Segwit Addresses

Encoding and decoding for Bitcoin Segregated Witness addresses. Bech32 is an encoding scheme described in BIP-0173, and segregated witness addresses encoded by Bech32 simply combine a coin-specific human-readable part with the data of the witness program as the Bech32 data payload.

Examples

use syscoin_bech32::{WitnessProgram, u5};
use syscoin_bech32::constants::Network;

let witness_program = WitnessProgram::new(
    u5::try_from_u8(0).unwrap(),
    vec![
        0x00, 0x00, 0x00, 0xc4, 0xa5, 0xca, 0xd4, 0x62,
        0x21, 0xb2, 0xa1, 0x87, 0x90, 0x5e, 0x52, 0x66,
        0x36, 0x2b, 0x99, 0xd5, 0xe9, 0x1c, 0x6c, 0xe2,
        0x4d, 0x16, 0x5d, 0xab, 0x93, 0xe8, 0x64, 0x33],
    Network::Testnet
).unwrap();

let address = witness_program.to_address();
assert_eq!(address,
    "tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy".to_string());

let decoded = WitnessProgram::from_address(&address).unwrap();
assert_eq!(decoded, witness_program);

Dependencies

~180KB