The implementation of the Bech32 encoder and decoder for Ruby.
Bech32 is checksummed base32 format that is used in following Bitcoin address format.
https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki
Add this line to your application's Gemfile:
gem 'bech32'
And then execute:
$ bundle
Or install it yourself as:
$ gem install bech32
Require the Gem:
require 'bech32'
Decode Bech32-encoded data into hrp part and data part.
hrp, data = Bech32.decode('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4')
# hrp is human-readable part of Bech32 format
'bc'
# data is data part of Bech32 format
[0, 14, 20, 15, 7, 13, 26, 0, 25, 18, 6, 11, 13, 8, 21, 4, 20, 3, 17, 2, 29, 3, 12, 29, 3, 4, 15, 24, 20, 6, 14, 30, 22]
Decode Bech32-encoded Segwit address into Bech32::SegwitAddr
instance.
addr = 'BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4'
segwit_addr = Bech32::SegwitAddr.new(addr)
# generate script pubkey
segwit_addr.to_script_pubkey
=> 0014751e76e8199196d454941c45d1b3a323f1433bd6
Encode Bech32 human-readable part and data part into Bech32 string.
hrp = 'bc'
data = [0, 14, 20, 15, 7, 13, 26, 0, 25, 18, 6, 11, 13, 8, 21, 4, 20, 3, 17, 2, 29, 3, 12, 29, 3, 4, 15, 24, 20, 6, 14, 30, 22]
bech = Bech32.encode(hrp, data)
=> bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
Encode Segwit script into Bech32 Segwit address.
segwit_addr = Bech32::SegwitAddr.new
segwit_addr.script_pubkey = '0014751e76e8199196d454941c45d1b3a323f1433bd6'
# generate addr
segwit_addr.addr
=> bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
The gem is available as open source under the terms of the MIT License.