Module: MixinBot::API::Multisig

Included in:
MixinBot::API
Defined in:
lib/mixin_bot/api/multisig.rb

Instance Method Summary collapse

Instance Method Details

#create_multisig_raw_tx(_asset_id:, senders:, receivers:, threshold:, inputs:, amount:, trace_id:, extra: '') ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/mixin_bot/api/multisig.rb', line 39

def create_multisig_raw_tx(_asset_id:, senders:, receivers:, threshold:, inputs:, amount:, trace_id:,
                           extra: '')
  out_hint = MixinBot.utils.unique_object_id(trace_id, 'OUTPUT', '0')
  change_hint = MixinBot.utils.unique_object_id(trace_id, 'OUTPUT', '1')
  keys = create_safe_keys(
    { receivers:, index: 0, hint: out_hint },
    { receivers: senders, index: 1, hint: change_hint }
  )['data']

  receivers_list = [
    { members: receivers, threshold: 1, amount: amount.to_s, ghosts: [keys[0]] },
    { members: senders, threshold:, amount: nil, ghosts: [keys[1]] }
  ].compact

  tx = build_safe_transaction(utxos: inputs, receivers: receivers_list, extra:)
  MixinBot.utils.encode_raw_transaction(tx)
end

#create_safe_multisig_request(request_id, raw, access_token: nil) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/mixin_bot/api/multisig.rb', line 6

def create_safe_multisig_request(request_id, raw, access_token: nil)
  path = '/safe/multisigs'
  payload = [{
    request_id:,
    raw:
  }]

  client.post path, *payload, access_token:
end

#safe_multisig_request(request_id, access_token: nil) ⇒ Object Also known as: fetch_safe_multisig_request



32
33
34
35
36
# File 'lib/mixin_bot/api/multisig.rb', line 32

def safe_multisig_request(request_id, access_token: nil)
  path = format('/safe/multisigs/%<request_id>s', request_id:)

  client.get path, access_token:
end

#sign_safe_multisig_request(request_id, raw, access_token: nil) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/mixin_bot/api/multisig.rb', line 16

def sign_safe_multisig_request(request_id, raw, access_token: nil)
  path = format('/safe/multisigs/%<request_id>s/sign', request_id:)

  payload = {
    raw:
  }

  client.post path, **payload, access_token:
end

#unlock_safe_multisig_request(request_id, access_token: nil) ⇒ Object



26
27
28
29
30
# File 'lib/mixin_bot/api/multisig.rb', line 26

def unlock_safe_multisig_request(request_id, access_token: nil)
  path = format('/safe/multisigs/%<request_id>s/unlock', request_id:)

  client.post path, access_token:
end