meeseeker 0.0.8 → 0.0.9

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
- SHA1:
3
- metadata.gz: 3204b511fca2e18ee8612eb32cd520edaf8bc72e
4
- data.tar.gz: 803ab700225d7781a0de824ed1f3221f1dce8033
2
+ SHA256:
3
+ metadata.gz: 6b0c21a1d80f88d64cb337412bc98bfa587477720f4e6d8de0ec4c25781d9af4
4
+ data.tar.gz: '090cde6805a1bed78470c51413f83edf753c698677b169d77a929cc88d75e9e6'
5
5
  SHA512:
6
- metadata.gz: '079b763077af4e430b84183e96b2bc683668a89677aa6d90bf4238f8a1533200c1c0c64ffe3e00a2f838ecb1e99e6c12a93f3be9ea4e188b24e501de8cd596cd'
7
- data.tar.gz: 13cc852acec9b743017e20dc58c6566f9acb0f513a0feb30187536540abe8cd6aacb09707f981adf0f69022b5bdb699211fb76096c6a8ee84d310ea1869ef109
6
+ metadata.gz: 974862220d3dfc63c34fc2883fcf982cbc80e5085a58cfc262c28fb8b3dde9c912c46d604a692ec30137d93007e31de643dfae4bfd60a9ded749771a68fd4369
7
+ data.tar.gz: 0ba23902a5fe150682b4d720f620e8a80c94131ec118ae8b23c83b3fd6e60889b06752ac9d8cc47878b633e4a556ae293da87720ca2bd8c8e7776c8ac3e6e1a2
data/README.md CHANGED
@@ -302,6 +302,10 @@ When running `meeseeker sync steem_engine`, the following channels are available
302
302
 
303
303
  * `steem_engine:block`
304
304
  * `steem_engine:transaction`
305
+ * `steem_engine:virtual_transaction`
306
+ * `steem_engine:contract`
307
+ * `steem_engine:contract:deploy`
308
+ * `steem_engine:contract:update`
305
309
  * `steem_engine:market`
306
310
  * `steem_engine:market:buy`
307
311
  * `steem_engine:market:cancel`
@@ -313,10 +317,15 @@ When running `meeseeker sync steem_engine`, the following channels are available
313
317
  * `steem_engine:steempegged:removeWithdrawal`
314
318
  * `steem_engine:steempegged:withdraw`
315
319
  * `steem_engine:tokens`
320
+ * `steem_engine:tokens:checkPendingUnstake`
316
321
  * `steem_engine:tokens:create`
322
+ * `steem_engine:tokens:enableStaking`
317
323
  * `steem_engine:tokens:issue`
318
324
  * `steem_engine:tokens:transfer`
325
+ * `steem_engine:tokens:transferOwnership`
326
+ * `steem_engine:tokens:unstake`
319
327
  * `steem_engine:tokens:updateMetadata`
328
+ * `steem_engine:tokens:updateParams`
320
329
  * `steem_engine:tokens:updateUrl`
321
330
 
322
331
  The above "channel/action" patterns are the ones that are known that the time of writing. In addition, if a new contract is added or updated, meeseeker will automatically publish to these corresponding channels as they appear, without needing to update or even restart meeseeker.
data/Rakefile CHANGED
@@ -131,7 +131,7 @@ namespace :verify do
131
131
  when :irreversible then dgpo.last_irreversible_block_num
132
132
  else; abort "Unknown block mode: #{mode}"
133
133
  end
134
- end + max_blocks.to_i
134
+ end + max_blocks.to_i + 1
135
135
  end
136
136
 
137
137
  Thread.new do
@@ -129,67 +129,82 @@ module Meeseeker
129
129
  # to embed it into op values. This should also reduce streaming
130
130
  # overhead since we no longer stream block_headers inder the hood.
131
131
 
132
- stream.blocks(options) do |b, n|
133
- b.transactions.each_with_index do |transaction, index|
134
- transaction.operations.each do |op|
135
- op = op.merge(timestamp: b.timestamp)
136
-
137
- yield op, b.transaction_ids[index], n
138
- end
139
- end
140
-
141
- next unless !!Meeseeker.include_virtual
142
-
143
- retries = 0
144
-
145
- # This is where it gets tricky. Virtual ops sometims don't show up
146
- # right away, especially if we're streaming on head blocks. In that
147
- # situation, we might only need to wait about 1 block. This loop
148
- # will likely one execute one iteration, but we have fallback logic
149
- # in case there are complications.
150
- #
151
- # See: https://developers.steem.io/tutorials-recipes/virtual-operations-when-streaming-blockchain-transactions
152
-
153
- loop do
154
- condenser_api ||= Steem::CondenserApi.new(url: Meeseeker.node_url)
155
- condenser_api.get_ops_in_block(n, true) do |vops|
156
- redo if vops.nil?
157
-
158
- if vops.empty? && mode != :head
159
- # Usually, we just need to slow down to allow virtual ops to
160
- # show up after a short delay. Adding this delay doesn't
161
- # impact overall performance because steem-ruby will batch
162
- # when block streams fall behind.
163
-
164
- if retries < MAX_VOP_RETRY
165
- retries = retries + 1
166
- condenser_api = nil
167
- sleep 3 * retries
132
+ loop do
133
+ begin
134
+ stream.blocks(options) do |b, n|
135
+ b.transactions.each_with_index do |transaction, index|
136
+ transaction.operations.each do |op|
137
+ op = op.merge(timestamp: b.timestamp)
168
138
 
169
- redo
139
+ yield op, b.transaction_ids[index], n
170
140
  end
171
-
172
- puts "Gave up retrying virtual ops lookup on block #{n}"
173
-
174
- break
175
141
  end
176
142
 
177
- if retries > 0
178
- puts "Found virtual ops for block #{n} aftere #{retries} retrie(s)"
179
- end
143
+ next unless !!Meeseeker.include_virtual
144
+
145
+ retries = 0
180
146
 
181
- vops.each do |vop|
182
- normalized_op = Hashie::Mash.new(
183
- type: vop.op[0],
184
- value: vop.op[1],
185
- timestamp: vop.timestamp
186
- )
147
+ # This is where it gets tricky. Virtual ops sometims don't show up
148
+ # right away, especially if we're streaming on head blocks. In that
149
+ # situation, we might only need to wait about 1 block. This loop
150
+ # will likely one execute one iteration, but we have fallback logic
151
+ # in case there are complications.
152
+ #
153
+ # See: https://developers.steem.io/tutorials-recipes/virtual-operations-when-streaming-blockchain-transactions
154
+
155
+ loop do
156
+ condenser_api ||= Steem::CondenserApi.new(url: Meeseeker.node_url)
157
+ condenser_api.get_ops_in_block(n, true) do |vops|
158
+ redo if vops.nil?
159
+
160
+ if vops.empty? && mode != :head
161
+ # Usually, we just need to slow down to allow virtual ops to
162
+ # show up after a short delay. Adding this delay doesn't
163
+ # impact overall performance because steem-ruby will batch
164
+ # when block streams fall behind.
165
+
166
+ if retries < MAX_VOP_RETRY
167
+ retries = retries + 1
168
+ condenser_api = nil
169
+ sleep 3 * retries
170
+
171
+ redo
172
+ end
173
+
174
+ puts "Gave up retrying virtual ops lookup on block #{n}"
175
+
176
+ break
177
+ end
178
+
179
+ if retries > 0
180
+ puts "Found virtual ops for block #{n} aftere #{retries} retrie(s)"
181
+ end
182
+
183
+ vops.each do |vop|
184
+ normalized_op = Hashie::Mash.new(
185
+ type: vop.op[0],
186
+ value: vop.op[1],
187
+ timestamp: vop.timestamp
188
+ )
189
+
190
+ yield normalized_op, vop.trx_id, vop.block
191
+ end
192
+ end
187
193
 
188
- yield normalized_op, vop.trx_id, vop.block
194
+ break
189
195
  end
190
196
  end
191
197
 
192
198
  break
199
+ rescue => e
200
+ raise e unless e.to_s.include? 'Request Entity Too Large'
201
+
202
+ # We need to tell steem-ruby to avoid json-rpc-batch on this
203
+ # node.
204
+
205
+ Steem::BlockApi.const_set 'MAX_RANGE_SIZE', 1
206
+ sleep 3
207
+ redo
193
208
  end
194
209
  end
195
210
  end
@@ -1,4 +1,4 @@
1
1
  module Meeseeker
2
- VERSION = '0.0.8'
2
+ VERSION = '0.0.9'
3
3
  AGENT_ID = "meeseeker/#{VERSION}"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meeseeker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-08 00:00:00.000000000 Z
11
+ date: 2019-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -255,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
255
255
  version: '0'
256
256
  requirements: []
257
257
  rubyforge_project:
258
- rubygems_version: 2.6.14
258
+ rubygems_version: 2.7.7
259
259
  signing_key:
260
260
  specification_version: 4
261
261
  summary: Redis based block follower is an efficient way for multiple apps to stream