Module: MixinBot::Utils::Address

Included in:
MixinBot::Utils
Defined in:
lib/mixin_bot/utils/address.rb

Constant Summary collapse

MAIN_ADDRESS_PREFIX =
MixinBot::MAIN_ADDRESS_PREFIX
MIX_ADDRESS_PREFIX =
MixinBot::MIX_ADDRESS_PREFIX
MIX_ADDRESS_VERSION =
MixinBot::MIX_ADDRESS_VERSION

Instance Method Summary collapse

Instance Method Details

#build_main_address(public_key) ⇒ Object



10
11
12
# File 'lib/mixin_bot/utils/address.rb', line 10

def build_main_address(public_key)
  MainAddress.new(public_key:).address
end

#build_mix_address(members:, threshold:) ⇒ Object



18
19
20
# File 'lib/mixin_bot/utils/address.rb', line 18

def build_mix_address(members:, threshold:)
  MixAddress.from_members(members:, threshold:).address
end

#build_safe_recipient(**kwargs) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/mixin_bot/utils/address.rb', line 30

def build_safe_recipient(**kwargs)
  members = kwargs[:members]
  threshold = kwargs[:threshold]
  amount = kwargs[:amount]

  members = [members] if members.is_a? String
  amount = format('%.8f', amount.to_d.to_r).gsub(/\.?0+$/, '')

  {
    members:,
    threshold:,
    amount:,
    mix_address: build_mix_address(members:, threshold:)
  }
end

#burning_addressObject



46
47
48
# File 'lib/mixin_bot/utils/address.rb', line 46

def burning_address
  MainAddress.burning_address.address
end

#hash_members(ids) ⇒ Object

Sorted-member hash used by Safe outputs and legacy collectible listing (Go HashMembers).



53
54
55
56
# File 'lib/mixin_bot/utils/address.rb', line 53

def hash_members(ids)
  list = Array(ids).flatten.compact.map(&:to_s).sort
  SHA3::Digest::SHA256.hexdigest(list.join)
end

#parse_main_address(address) ⇒ Object



14
15
16
# File 'lib/mixin_bot/utils/address.rb', line 14

def parse_main_address(address)
  MainAddress.new(address:).public_key
end

#parse_mix_address(address) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/mixin_bot/utils/address.rb', line 22

def parse_mix_address(address)
  ma = MixAddress.parse(address)
  {
    members: ma.uuid_members + ma.xin_members,
    threshold: ma.threshold
  }
end