Class: AddressCodec::XrpCodec
- Inherits:
-
Codec
- Object
- Codec
- AddressCodec::XrpCodec
show all
- Defined in:
- lib/address-codec/xrp_codec.rb
Constant Summary
collapse
- ACCOUNT_ID =
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
Instance Method Details
#decode_account_id(account_id) ⇒ Object
43
44
45
46
|
# File 'lib/address-codec/xrp_codec.rb', line 43
def decode_account_id(account_id)
opts = { versions: [ACCOUNT_ID], expected_length: 20 }
decode(account_id, opts)[:bytes]
end
|
#decode_account_public(base58string) ⇒ Object
63
64
65
66
|
# File 'lib/address-codec/xrp_codec.rb', line 63
def decode_account_public(base58string)
opts = { versions: [ACCOUNT_PUBLIC_KEY], 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 encode_account_id(bytes)
opts = { versions: [ACCOUNT_ID], 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 encode_account_public(bytes)
opts = { versions: [ACCOUNT_PUBLIC_KEY], 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]
}
encode(entropy, opts)
end
|
#valid_classic_address?(address) ⇒ Boolean
68
69
70
71
72
73
74
75
|
# File 'lib/address-codec/xrp_codec.rb', line 68
def valid_classic_address?(address)
begin
decode_account_id(address)
rescue
return false
end
true
end
|