Method: QuorumSdk::Chain::Management#update_allow_list

Defined in:
lib/quorum_sdk/chain/management.rb

#update_allow_list(**kwargs) ⇒ Object

Raises:



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/quorum_sdk/chain/management.rb', line 79

def update_allow_list(**kwargs)
  raise ArgumentError, "Keyword arguments #{ARGUMENTS_FOR_UPDATE_ALLOW_LIST} must be provided" unless ARGUMENTS_FOR_UPDATE_ALLOW_LIST.all?(&->(arg) { arg.in? kwargs.keys })

  trx_type = kwargs[:trx_type] || ['POST']
  trx_type = [trx_type] if trx_type.is_a?(String)
  raise ArgumentError, 'trx type must be one of POST/ANNOUNCE/REQ_BLOCK_FORWARD/REQ_BLOCK_FORWARD' unless trx_type.all?(&->(op) { op.in? %w[POST ANNOUNCE REQ_BLOCK_RESP REQ_BLOCK_BACKWARD] })

  action = kwargs[:action]
  raise ArgumentError, 'trx_auth_mode must be one of add/remove' unless action.in? %w[add remove]

  pubkey = kwargs[:pubkey]
  if Eth::Util.hex?(pubkey)
    pubkey = Secp256k1::PublicKey.from_data([pubkey].pack('H*')).compressed
    pubkey = Base64.urlsafe_encode64(pubkey)
  end

  group_id = kwargs[:group_id] || @group_id
  raise ArgumentError, 'group_id must be provided' if group_id.blank?

  update_chain_config(
    group_id:,
    type: 'upd_alw_list',
    config: {
      trx_type:,
      action:,
      pubkey:
    },
    memo: kwargs[:memo]
  )
end