Class: AddressCodec::XrpCodec

Inherits:
Codec
  • Object
show all
Defined in:
lib/address-codec/xrp_codec.rb

Direct Known Subclasses

AddressCodec

Constant Summary collapse

ACCOUNT_ID =

base58 encodings: xrpl.org/base58-encodings.html

0
ACCOUNT_PUBLIC_KEY =

Account address (20 bytes)

0x23
FAMILY_SEED =

Account public key (33 bytes)

0x21
NODE_PUBLIC =

33; Seed value (for secret keys) (16 bytes)

0x1c
ED25519_SEED =

28; Validation public key (33 bytes)

[0x01, 0xe1, 0x4b].freeze

Instance Method Summary collapse

Methods inherited from Codec

#decode, #decode_checked, #encode, #encode_checked, #initialize

Constructor Details

This class inherits a constructor from AddressCodec::Codec

Instance Method Details

#decode_account_id(account_id) ⇒ Object



43
44
45
46
# File 'lib/address-codec/xrp_codec.rb', line 43

def ()
  opts = { versions: [], expected_length: 20 }
  decode(, opts)[:bytes]
end

#decode_account_public(base58string) ⇒ Object



63
64
65
66
# File 'lib/address-codec/xrp_codec.rb', line 63

def (base58string)
  opts = { versions: [], expected_length: 33 }
  decode(base58string, opts)[:bytes]
end

#decode_node_public(base58string) ⇒ Object



48
49
50
51
# File 'lib/address-codec/xrp_codec.rb', line 48

def decode_node_public(base58string)
  opts = { versions: [NODE_PUBLIC], expected_length: 33 }
  decode(base58string, opts)[:bytes]
end

#decode_seed(seed, opts = { version_types: ['ed25519', 'secp256k1'], versions: [ED25519_SEED, FAMILY_SEED], expected_length: 16 }) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/address-codec/xrp_codec.rb', line 30

def decode_seed(seed, opts = {
      version_types: ['ed25519', 'secp256k1'],
      versions: [ED25519_SEED, FAMILY_SEED],
      expected_length: 16
    })
  decode(seed, opts)
end

#encode_account_id(bytes) ⇒ Object



38
39
40
41
# File 'lib/address-codec/xrp_codec.rb', line 38

def (bytes)
  opts = { versions: [], expected_length: 20 }
  encode(bytes, opts)
end

#encode_account_public(bytes) ⇒ Object



58
59
60
61
# File 'lib/address-codec/xrp_codec.rb', line 58

def (bytes)
  opts = { versions: [], expected_length: 33 }
  encode(bytes, opts)
end

#encode_node_public(bytes) ⇒ Object



53
54
55
56
# File 'lib/address-codec/xrp_codec.rb', line 53

def encode_node_public(bytes)
  opts = { versions: [NODE_PUBLIC], expected_length: 33 }
  encode(bytes, opts)
end

#encode_seed(entropy, type = nil) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/address-codec/xrp_codec.rb', line 16

def encode_seed(entropy, type = nil)
  unless check_byte_length(entropy, 16)
    raise 'entropy must have length 16'
  end

  opts = {
    expected_length: 16,
    versions: type == 'ed25519' ? ED25519_SEED : [FAMILY_SEED]
  }

  # prefixes entropy with version bytes
  encode(entropy, opts)
end

#valid_classic_address?(address) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
71
72
73
74
75
# File 'lib/address-codec/xrp_codec.rb', line 68

def valid_classic_address?(address)
  begin
    (address)
  rescue
    return false
  end
  true
end