Copyright | No rights reserved |
---|---|
License | MIT |
Maintainer | jprupp@protonmail.ch |
Stability | experimental |
Portability | POSIX |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Support for Bitcoin SegWit (BTC) Bech32 addresses. This module is a modified version of Marko Bencun's reference implementation.
Synopsis
- type HRP = Text
- type Bech32 = Text
- data Bech32Encoding
- bech32Const :: Bech32Encoding -> Word
- type Data = [Word8]
- bech32Encode :: Bech32Encoding -> HRP -> [Word5] -> Maybe Bech32
- bech32Decode :: Bech32 -> Maybe (Bech32Encoding, HRP, [Word5])
- toBase32 :: [Word8] -> [Word5]
- toBase256 :: [Word5] -> Maybe [Word8]
- segwitEncode :: HRP -> Word8 -> Data -> Maybe Text
- segwitDecode :: HRP -> Bech32 -> Maybe (Word8, Data)
- newtype Word5 = UnsafeWord5 Word8
- word5 :: Integral a => a -> Word5
- fromWord5 :: Num a => Word5 -> a
Bech32
Human-readable part of Bech32Encoding
address.
data Bech32Encoding Source #
Instances
bech32Const :: Bech32Encoding -> Word Source #
Data part of Bech32Encoding
address.
bech32Encode :: Bech32Encoding -> HRP -> [Word5] -> Maybe Bech32 Source #
Encode string of five-bit words into Bech32Encoding
using a provided
human-readable part. Can fail if HRP
is invalid or result would be longer
than 90 characters.
bech32Decode :: Bech32 -> Maybe (Bech32Encoding, HRP, [Word5]) Source #
Decode human-readable Bech32Encoding
string into a human-readable part and a
string of five-bit words.
toBase32 :: [Word8] -> [Word5] Source #
Convert from eight-bit to five-bit word string, adding padding as required.
toBase256 :: [Word5] -> Maybe [Word8] Source #
Convert from five-bit word string to eight-bit word string, ignoring padding.
segwitEncode :: HRP -> Word8 -> Data -> Maybe Text Source #
Encode Data
as a SegWit Bech32Encoding
address. Needs human-readable part and
witness program version.
segwitDecode :: HRP -> Bech32 -> Maybe (Word8, Data) Source #
Decode SegWit Bech32Encoding
address from a string and expected human-readable part.