Method: FlowClient::Client#add_contract

Defined in:
lib/flow_client/client.rb

#add_contract(name, code, payer_account, signer) ⇒ Object

Adds a contract to an account



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/flow_client/client.rb', line 134

def add_contract(name, code, , signer)
  script = File.read(File.join("lib", "cadence", "templates", "add-contract.cdc"))
  code_hex = code.unpack1("H*")

  arguments = [
    CadenceType.String(name),
    CadenceType.String(code_hex)
  ]

  transaction = FlowClient::Transaction.new
  transaction.script = script
  transaction.reference_block_id = get_latest_block.id
  transaction.proposer_address = .address
  transaction.proposer_key_index = 0
  transaction.arguments = arguments
  transaction.proposer_key_sequence_number = (.address).keys.first.sequence_number
  transaction.payer_address = .address
  transaction.authorizer_addresses = [.address]
  transaction.add_envelope_signature(.address, 0, signer)
  res = send_transaction(transaction)

  wait_for_transaction(res.id) do |response|
    raise CadenceRuntimeError, response.error_message if response.status_code != 0
  end
end