Module: BSV::Wallet::Serializer::RelinquishCertificate

Defined in:
lib/bsv/wallet/serializer/relinquish_certificate.rb

Overview

BRC-103 wire codec for the relinquish_certificate call (call byte 20).

Args wire layout:

[32 bytes: type]
[32 bytes: serial_number]
[33 bytes: certifier pubkey]

Result wire layout:

[empty — relinquished is implicit from the frame error byte]

Constant Summary collapse

CERT_TYPE_SIZE =
32
SERIAL_SIZE =
32
PUBKEY_SIZE =
33

Class Method Summary collapse

Class Method Details

.deserialize_args(bytes) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/bsv/wallet/serializer/relinquish_certificate.rb', line 34

def deserialize_args(bytes)
  r = Wire::Reader.new(bytes)
  type_raw   = r.read_bytes(CERT_TYPE_SIZE)
  serial_raw = r.read_bytes(SERIAL_SIZE)
  certifier  = r.read_bytes(PUBKEY_SIZE).unpack1('H*')
  {
    type: Base64.strict_encode64(type_raw),
    serial_number: Base64.strict_encode64(serial_raw),
    certifier: certifier
  }
end

.deserialize_result(_bytes) ⇒ Object



50
51
52
# File 'lib/bsv/wallet/serializer/relinquish_certificate.rb', line 50

def deserialize_result(_bytes)
  { relinquished: true }
end

.serialize_args(args) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/bsv/wallet/serializer/relinquish_certificate.rb', line 24

def serialize_args(args)
  w = Wire::Writer.new
  type_bytes = Base64.strict_decode64(args[:type].to_s)
  w.write_bytes(type_bytes.ljust(CERT_TYPE_SIZE, "\x00").byteslice(0, CERT_TYPE_SIZE))
  serial_bytes = Base64.strict_decode64(args[:serial_number].to_s)
  w.write_bytes(serial_bytes.ljust(SERIAL_SIZE, "\x00").byteslice(0, SERIAL_SIZE))
  w.write_bytes([args[:certifier].to_s].pack('H*'))
  w.buf
end

.serialize_result(_result) ⇒ Object



46
47
48
# File 'lib/bsv/wallet/serializer/relinquish_certificate.rb', line 46

def serialize_result(_result)
  ''.b
end