/ref/ruby/README.md

https://github.com/sipa/bech32 · Markdown · 67 lines · 45 code · 22 blank · 0 comment · 0 complexity · 597431b42d861a935378d7f2ee6e3003 MD5 · raw file

  1. # Bech32 Ruby
  2. ## Usage
  3. Require code:
  4. ```ruby
  5. require './bech32'
  6. require './segwit_addr'
  7. ```
  8. ### Decode
  9. Decode Bech32-encoded data into hrp part and data part.
  10. ```ruby
  11. hrp, data, spec = Bech32.decode('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4')
  12. # hrp is human-readable part of Bech32 format
  13. 'bc'
  14. # data is data part of Bech32 format
  15. [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]
  16. # spec is whether Bech32::Encoding::BECH32 or Bech32::Encoding::BECH32M
  17. ```
  18. Decode Bech32-encoded Segwit address into `SegwitAddr` instance.
  19. ```ruby
  20. addr = 'BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4'
  21. segwit_addr = SegwitAddr.new(addr)
  22. # generate script pubkey
  23. segwit_addr.to_script_pubkey
  24. => 0014751e76e8199196d454941c45d1b3a323f1433bd6
  25. ```
  26. ### Encode
  27. Encode Bech32 human-readable part and data part into Bech32 string.
  28. ```ruby
  29. hrp = 'bc'
  30. 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]
  31. bech = Bech32.encode(hrp, data)
  32. => bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
  33. ```
  34. Encode Segwit script into Bech32 Segwit address.
  35. ```ruby
  36. segwit_addr = SegwitAddr.new
  37. segwit_addr.hrp = 'bc'
  38. segwit_addr.scriptpubkey = '0014751e76e8199196d454941c45d1b3a323f1433bd6'
  39. # generate addr
  40. segwit_addr.addr
  41. => bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
  42. ```
  43. ## Test
  44. Run test with:
  45. $ ruby test_bech32.rb