Class: TonSdkRubySmc::MetaData

Inherits:
Object
  • Object
show all
Extended by:
TonSdkRuby, TonSdkRubySmc
Defined in:
lib/ton-sdk-ruby-smc/tokens/metadata.rb

Constant Summary

Constants included from TonSdkRubySmc

PWV2_CODE, SUB_WALLET_ID, TOKEN_ATTRIBUTES_SHA256, VERSION, WALLET_V3_CODE, WALLET_V4_CODE

Class Method Summary collapse

Methods included from TonSdkRubySmc

require_type

Class Method Details

.parse_off_chain_metadata(slice) ⇒ Object



78
79
80
81
82
83
84
85
# File 'lib/ton-sdk-ruby-smc/tokens/metadata.rb', line 78

def self.(slice)
  string = slice.load_string(slice.bits.size / 8)
  while slice.refs.size > 0
    slice = slice.load_ref.parse
    string += slice.load_string(slice.bits.size / 8)
  end
  string
end

.parse_on_chain_metadata(slice) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/ton-sdk-ruby-smc/tokens/metadata.rb', line 48

def self.(slice)
  deserializers = {
    key: -> (k) do
      slice = Slice.parse(Builder.new.store_bits(k).cell)
      just_value = slice.load_bytes(32)
      bytes_to_hex(just_value)
    end,
    value: -> (v) do
      v.parse.load_ref
    end
  }

  result_vot_da = {}
  dick = slice.load_dict(256, {deserializers: deserializers})
  dick.each do |key, value|
    TOKEN_ATTRIBUTES_SHA256.each do |name, hash|
      if hash == key
        cs = value.parse
         = cs.load_uint(8)
        if  == 0x00
          result_vot_da[name] = (cs)
        else
          raise 'Chuncked data unsupported'
        end
      end
    end
  end
  result_vot_da
end

.parse_token_metadata(da_slice) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/ton-sdk-ruby-smc/tokens/metadata.rb', line 31

def self.(da_slice)
  require_type('da_slice', da_slice, Slice)
  pum_purum_tag = da_slice.load_uint(8)
  result = {}
  if pum_purum_tag == 0x01
    result[:tag] = 'offchain'
    result[:data] = (da_slice)
    result
  else
    result[:tag] = 'onchain'
    result[:data] = (da_slice)
    result
  end
end