Class: TezosClient::LiquidityInterface

Inherits:
Object
  • Object
show all
Includes:
LiquidityWrapper, Logger
Defined in:
lib/tezos_client/liquidity_interface.rb,
lib/tezos_client/liquidity_inteface/liquidity_wrapper.rb

Defined Under Namespace

Modules: LiquidityWrapper

Instance Method Summary collapse

Methods included from LiquidityWrapper

#call_liquidity, #liquidity_cmd

Methods included from Logger

#log

Constructor Details

#initialize(rpc_node_address: "127.0.0.1", rpc_node_port: 8732) ⇒ LiquidityInterface

Returns a new instance of LiquidityInterface.



10
11
12
13
# File 'lib/tezos_client/liquidity_interface.rb', line 10

def initialize(rpc_node_address: "127.0.0.1", rpc_node_port: 8732)
  @rpc_node_address = rpc_node_address
  @rpc_node_port = rpc_node_port
end

Instance Method Details

#call_parameters(script:, parameters:) ⇒ Object



119
120
121
122
123
124
125
# File 'lib/tezos_client/liquidity_interface.rb', line 119

def call_parameters(script:, parameters:)
  parameters = format_params(parameters)
  with_tempfile(".json") do |json_file|
    res = call_liquidity "--json -o #{json_file.path} #{script} --data #{parameters}"
    JSON.parse res
  end
end

#forge_deploy(args) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
# File 'lib/tezos_client/liquidity_interface.rb', line 98

def forge_deploy(args)
  amount = args.fetch(:amount, 0)
  spendable = args.fetch(:spendable, false)
  delegatable = args.fetch(:delegatable, false)
  source = args.fetch :from
  script = args.fetch :script
  init_params = args.fetch :init_params

  res = call_liquidity "--source #{source} #{spendable ? '--spendable' : ''} #{delegatable ? '--delegatable' : ''} --amount #{amount}tz #{script} --forge-deploy '#{init_params}'"
  res.strip
end

#format_params(params) ⇒ Object



15
16
17
18
# File 'lib/tezos_client/liquidity_interface.rb', line 15

def format_params(params)
  params = [params] if params.is_a? String
  params.map { |s| "'#{s}'" }.join(" ")
end

#get_storage(script:, contract_address:) ⇒ Object



114
115
116
117
# File 'lib/tezos_client/liquidity_interface.rb', line 114

def get_storage(script:, contract_address:)
  res = call_liquidity "#{script} --get-storage #{contract_address}"
  res.strip
end

#initial_storage(args) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/tezos_client/liquidity_interface.rb', line 20

def initial_storage(args)
  from = args.fetch :from
  script = args.fetch :script
  init_params = args.fetch :init_params
  init_params = format_params(init_params)

  with_tempfile(".json") do |json_file|
    call_liquidity "--source #{from} --json #{script} -o #{json_file.path} --init-storage #{init_params}"
    JSON.parse json_file.read.strip
  end
end

#json_scripts(args) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/tezos_client/liquidity_interface.rb', line 58

def json_scripts(args)
  with_file_copy(args[:script]) do |script_copy_path|
    json_init_script_path = "#{script_copy_path}.initializer.tz.json"
    json_contract_script_path = "#{script_copy_path}.tz.json"

    call_liquidity "--json #{script_copy_path}"

    json_contract_script_file = File.open(json_contract_script_path)
    json_contract_script = JSON.parse(json_contract_script_file.read)
    json_contract_script_file.close

    if File.exists? json_init_script_path
      json_init_script_file = File.open(json_init_script_path)
      json_init_script = JSON.parse(json_init_script_file.read)
      json_init_script_file.close
    end

    if block_given?
      yield(json_init_script, json_contract_script)
    else
      return json_init_script, json_contract_script
    end

  ensure
    [json_init_script_path, json_contract_script_path].each do |file_path|
      File.delete file_path if File.exists? file_path
    end
  end
end

#origination_script(args) ⇒ Object



88
89
90
91
92
93
94
95
96
# File 'lib/tezos_client/liquidity_interface.rb', line 88

def origination_script(args)
  storage = initial_storage(args)
  _json_init_script, json_contract_script = json_scripts(args)

  {
    code: json_contract_script,
    storage: storage
  }
end

#tezos_nodeObject



110
111
112
# File 'lib/tezos_client/liquidity_interface.rb', line 110

def tezos_node
  "#{@rpc_node_address}:#{@rpc_node_port}"
end

#with_file_copy(source_file_path) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/tezos_client/liquidity_interface.rb', line 40

def with_file_copy(source_file_path)
  source_file = File.open(source_file_path, "r")
  source_extention = File.extname(source_file_path)

  file_copy_path = nil

  res = with_tempfile(source_extention) do |file_copy|
    file_copy.write(source_file.read)
    file_copy_path = file_copy.path
    file_copy.close
    yield(file_copy_path)
  end

  res
ensure
  File.delete(file_copy_path) if File.exists? file_copy_path
end

#with_tempfile(extension) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/tezos_client/liquidity_interface.rb', line 32

def with_tempfile(extension)
  file = Tempfile.new(["script", extension])
  yield(file)

ensure
  file.unlink
end