ton-sdk-ruby 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25a0c3e316b01ed8e0cc0ab2ef117cb474e79dc62a5c906bba2961cc38cffa4e
4
- data.tar.gz: cdafc6b80d047df373fa13f556d7796285a264272edae1a2e07494ec66ca361d
3
+ metadata.gz: 752289b7128c6053647dcef5b5e3abd2df529b0c3123ab82a19de7bafc510e96
4
+ data.tar.gz: '058e58a9bc26b88de381e106dcfa2ab8d4a93cc0da115753a9ea491f8b19004f'
5
5
  SHA512:
6
- metadata.gz: f92e1abe5d87b03477d00cc383c3b93055f1a979134542c8a0b71a7c858073141276bb28102c4adc2361a066b866eb330b3129f35953de321884208db450c7da
7
- data.tar.gz: 3e231351b1b6d5b776430ea24e6291ffd04e81479eba66520bda2fbe23ad836035ee7ed1352051bfdb21b2cfee4cff862eb24b904d2b3090a8543a2d0344ea63
6
+ metadata.gz: 394ba8607ba2edd3e020d55683501402f1443ef9d56d0af325fd2ddc55851d9c1a64bea6a5134879b0c81ff9a3a1fc2eac25049dad18231938aa1b01f63d1640
7
+ data.tar.gz: 8422831cd0aadb059d753828c835330eb2b96aa6085cf7808d0eccb4890ee12a8ee88325db61afccd225d85922239fe81a5587d468ca28867650032e89113e02
@@ -106,6 +106,11 @@ module TonSdkRuby
106
106
  size = (Math.log2(length)).ceil
107
107
  size_bytes = (int.to_s(2).length.to_f / 8).ceil
108
108
  size_bits = size_bytes * 8
109
+ int_bits = 1 << (size_bits - 1)
110
+
111
+ if int < -int_bits || int >= int_bits
112
+ raise StandardError.new("Builder: can't store an VarInt, because its value allocates more space than provided.")
113
+ end
109
114
 
110
115
  check_bits_overflow(size + size_bits)
111
116
 
@@ -124,6 +129,10 @@ module TonSdkRuby
124
129
  size_bytes = (uint.to_s(2).length.to_f / 8).ceil
125
130
  size_bits = size_bytes * 8
126
131
 
132
+ if uint < 0 || uint >= (1 << size_bits)
133
+ raise StandardError.new("Builder: can't store an VarUInt, because its value allocates more space than provided.")
134
+ end
135
+
127
136
  check_bits_overflow(size + size_bits)
128
137
 
129
138
  if uint == 0
@@ -38,7 +38,6 @@ module TonSdkRuby
38
38
  def get_secure_random_number(min, max)
39
39
  range = max - min
40
40
  bits_needed = Math.log2(range).ceil
41
- raise 'Range is too large' if bits_needed > 53
42
41
  bytes_needed = (bits_needed / 8.0).ceil
43
42
  mask = (2 ** bits_needed) - 1
44
43
 
@@ -88,7 +87,7 @@ module TonSdkRuby
88
87
  current_file_path = File.expand_path(File.dirname(__FILE__))
89
88
  bip0039en = JSON.parse(File.read("#{current_file_path}/words/english.json"))
90
89
  length.times do
91
- index = get_secure_random_number(0, length)
90
+ index = get_secure_random_number(0, bip0039en.size)
92
91
  mnemonic_array.push(bip0039en[index])
93
92
  end
94
93
 
@@ -24,6 +24,10 @@ module TonSdkRuby
24
24
  send_request('getAddressInformation', {address: address})
25
25
  end
26
26
 
27
+ def get_extended_address_information(address)
28
+ send_request('getExtendedAddressInformation', {address: address})
29
+ end
30
+
27
31
  def get_address_balance(address)
28
32
  send_request('getAddressBalance', {address: address})
29
33
  end
@@ -1,4 +1,4 @@
1
1
  module TonSdkRuby
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.6"
3
3
  end
4
4
 
data/lib/ton-sdk-ruby.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require_relative './ton-sdk-ruby/version'
2
- require_relative './ton-sdk-ruby/bit_array/bit_array'
3
2
 
4
3
  require_relative './ton-sdk-ruby/utils/helpers'
5
4
  require_relative './ton-sdk-ruby/utils/bits'
@@ -7,9 +6,9 @@ require_relative './ton-sdk-ruby/utils/checksum'
7
6
  require_relative './ton-sdk-ruby/utils/hash'
8
7
  require_relative './ton-sdk-ruby/utils/numbers'
9
8
 
10
- require_relative './ton-sdk-ruby/types/Address'
11
- require_relative './ton-sdk-ruby/types/Block'
12
- require_relative './ton-sdk-ruby/types/Coins'
9
+ require_relative './ton-sdk-ruby/types/address'
10
+ require_relative './ton-sdk-ruby/types/block'
11
+ require_relative './ton-sdk-ruby/types/coins'
13
12
 
14
13
  require_relative './ton-sdk-ruby/boc/mask'
15
14
  require_relative './ton-sdk-ruby/boc/cell'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ton-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - nerzh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-11 00:00:00.000000000 Z
11
+ date: 2023-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ed25519
@@ -90,7 +90,6 @@ extra_rdoc_files: []
90
90
  files:
91
91
  - bin/ton-sdk-ruby
92
92
  - lib/ton-sdk-ruby.rb
93
- - lib/ton-sdk-ruby/bit_array/bit_array.rb
94
93
  - lib/ton-sdk-ruby/boc/builder.rb
95
94
  - lib/ton-sdk-ruby/boc/cell.rb
96
95
  - lib/ton-sdk-ruby/boc/hashmap.rb
@@ -1,147 +0,0 @@
1
- module TonSdkRuby
2
-
3
- class BitArray < Array
4
- extend TonSdkRuby
5
- include TonSdkRuby
6
-
7
- attr_accessor :read_cursor
8
-
9
- def initialize(size: 0, value: false)
10
- @read_cursor = 0
11
- super(size) { |_| get_value(value) }
12
- end
13
-
14
- def to_s
15
- self.map { |e| e ? 1 : 0 }.join('')
16
- end
17
-
18
- def show_cursor
19
- self.map { |e| e ? 1 : 0 }.join('').insert(cursor, '⏶')
20
- end
21
-
22
- def set_bit!(index: nil, value: nil)
23
- raise "Wrong index #{index}. Out of bounds array" if index > size || index < 0
24
- self[index] = get_value(value)
25
- end
26
-
27
- def get_bit(index: nil)
28
- raise "Wrong index #{index}. Out of bounds array" if index > size - 1 || index < 0
29
- self[index]
30
- end
31
-
32
- def set_byte!(index: nil, value: nil)
33
- set_number!(index: index, value: value, size: 8)
34
- end
35
-
36
- def get_byte(index: nil)
37
- raise "Wrong index #{index}. Out of bounds array" if index > size - 1 || index < 0
38
- self[index..index+7].map { |e| e.to_i}.join('').to_i(2)
39
- end
40
-
41
- def store_uint!(value: nil, size: nil)
42
- store_number!(value: value, size: size)
43
- end
44
-
45
- def store_sint!(value: nil, size: nil)
46
- # i.e. signed int and one first bit reserved for sign size = (size - 1)
47
- # and restrict for max value = value >= (1 << size - 1)
48
- max_sint = (1 << size - 1)
49
- raise "Wrong value #{value}" if value < -max_sint || value >= max_sint
50
- set_number!(value: value, size: size)
51
- end
52
-
53
- def read_uint!(bits_amount: nil)
54
- raise "Wrong bits_amount #{bits_amount}" if bits_amount > self.size
55
- bits_string = ""
56
- (read_cursor + bits_amount).times do |index|
57
- bits_string << self[index] ? '1' : '0'
58
- @read_cursor = index
59
- end
60
- bits_string.to_i(2)
61
- end
62
-
63
- def read_sint!(bits_amount: nil)
64
- raise "Wrong bits_amount #{bits_amount}" if bits_amount > self.size
65
- negative_sign = false
66
- bits_string = ""
67
- (read_cursor + bits_amount).times do |index|
68
- bits_string << (self[index] ? '1' : '0')
69
- @read_cursor = index
70
- end
71
- calc_signed_integer(bits_string: bits_string)
72
- end
73
-
74
-
75
- private
76
-
77
- # 00001101 -> set as 00001101
78
- def set_number!(index: nil, value: nil, size: nil)
79
- index = index ? index : self.size
80
- raise "Wrong index #{index}. Out of bounds array" if index > self.size || index < 0
81
- # if size = 4 bit and max value in bits = 1111, then error (value >= 10000) == (value >= (1 << 4))
82
- raise "Wrong value #{value}" if value >= (1 << size)
83
- size.times do |i|
84
- bit_index = size - i - 1
85
- # if size = 4 bit and value in bots = 1000, then (1000 >> (4 - 1)) == 0001
86
- most_significant_bit = (value >> bit_index)
87
- # p most_significant_bit.to_s(2)
88
- # & (AND) 101 & 1 == 001 or 101 & 001 == 001
89
- bit = (most_significant_bit & 1) == 1
90
- set_bit!(index: index, value: bit)
91
- index += 1
92
- end
93
- self
94
- end
95
-
96
- # # 00001101 -> set as 00001101
97
- # def store_number!(index: nil, value: nil, size: nil)
98
- # @cursor = index ? index : cursor
99
- # raise "Wrong index #{cursor}. Out of bounds array" if cursor > self.size || cursor < 0
100
- # # if size = 4 bit and max value in bits = 1111, then error (value >= 10000) == (value >= (1 << 4))
101
- # raise "Wrong value #{value}" if value < 0 || value >= (1 << size)
102
- # size.times do |i|
103
- # bit_index = size - i - 1
104
- # # if size = 4 bit and value in bots = 1000, then (1000 >> (4 - 1)) == 0001
105
- # most_significant_bit = (value >> bit_index)
106
- # # p most_significant_bit.to_s(2)
107
- # # & (AND) 101 & 1 == 001 or 101 & 001 == 001
108
- # bit = (most_significant_bit & 1) == 1
109
- # set_bit!(index: cursor, value: bit)
110
- # @cursor += 1
111
- # end
112
- # self
113
- # end
114
-
115
- def calc_signed_integer(bits_string: nil)
116
- value = bits_string.to_i(2)
117
- index = bits_string.size - 1
118
- (value & ~(1 << index)) - (value & (1 << index))
119
- end
120
-
121
- def get_value(val)
122
- if val.class == TrueClass
123
- val
124
- elsif val.class == FalseClass
125
- val
126
- elsif val.class == String
127
- val == "1" ? true : false
128
- elsif val.class == Integer
129
- val == 0 ? false : true
130
- else
131
- raise "Wrong data type of #{val}"
132
- end
133
- end
134
- end
135
- end
136
-
137
- class FalseClass
138
- def to_i
139
- 0
140
- end
141
- end
142
-
143
- class TrueClass
144
- def to_i
145
- 1
146
- end
147
- end