Class: IcAgent::SyetemState

Inherits:
Object
  • Object
show all
Defined in:
lib/ic_agent/system_state.rb

Class Method Summary collapse

Class Method Details

.canister_controllers(agent, canister_id) ⇒ Object



36
37
38
39
40
41
# File 'lib/ic_agent/system_state.rb', line 36

def self.canister_controllers(agent, canister_id)
  path = ['canister', Principal.from_str(canister_id).bytes, 'controllers']
  cert = agent.read_state_raw(canister_id, [path])
  controllers = Certificate.lookup(path, cert)
  CBOR.decode(controllers).value.map { |item| Principal.new(bytes: item) }
end

.canister_module_hash(agent, canister_id) ⇒ Object



29
30
31
32
33
34
# File 'lib/ic_agent/system_state.rb', line 29

def self.canister_module_hash(agent, canister_id)
  path = ['canister', Principal.from_str(canister_id).bytes, 'module_hash']
  cert = agent.read_state_raw(canister_id, [path])
  module_hash = Certificate.lookup(path, cert)
  module_hash.str2hex
end

.subnet_canister_ranges(agent, canister_id, subnet_id) ⇒ Object



22
23
24
25
26
27
# File 'lib/ic_agent/system_state.rb', line 22

def self.subnet_canister_ranges(agent, canister_id, subnet_id)
  path = ['subnet', Principal.from_str(subnet_id).bytes, 'canister_ranges']
  cert = agent.read_state_raw(canister_id, [path])
  ranges = Certificate.lookup(path, cert)
  CBOR.decode(ranges).value.map { |range| range.map { |item| Principal.new(bytes: item) } }
end

.subnet_public_key(agent, canister_id, subnet_id) ⇒ Object



15
16
17
18
19
20
# File 'lib/ic_agent/system_state.rb', line 15

def self.subnet_public_key(agent, canister_id, subnet_id)
  path = ['subnet', Principal.from_str(subnet_id).bytes, 'public_key']
  cert = agent.read_state_raw(canister_id, [path])
  pubkey = Certificate.lookup(path, cert)
  pubkey.str2hex
end

.time(agent, canister_id) ⇒ Object



8
9
10
11
12
13
# File 'lib/ic_agent/system_state.rb', line 8

def self.time(agent, canister_id)
  cert = agent.read_state_raw(canister_id, [['time']])
  timestamp = Certificate.lookup(['time'], cert)
  str_io = StringIO.new(timestamp)
  LEB128.decode_signed(str_io)
end