meeseeker 0.0.6 → 0.0.7
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 +4 -4
- data/README.md +4 -0
- data/Rakefile +64 -4
- data/lib/meeseeker.rb +1 -1
- data/lib/meeseeker/steem_engine/follower_job.rb +15 -4
- data/lib/meeseeker/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 857cc4efa38d7428ba13457a6ffc3db8cb01aab92a26a3cf052b15698d91ca56
|
4
|
+
data.tar.gz: 3f6398e6bbad560624fe0b5e331f0cba2b3b207edfa15074627b7f964edd262d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ae2f1bdea39419820d35ce2fedb63ceac5c0c59d61c63ef9f7a01470baea9cc0d784a630996997750ece65fdee78ec5b8deb7b339b2e8343e82db3c38682527
|
7
|
+
data.tar.gz: 635057da03b642a258436e6d78c0bb2c830ddb475a595c16cfdc80b33b4b92cf58e5782bd4a4cd0b6dd3e85c06f7d137170f2ae6395543086e9070cf595a2cfd
|
data/README.md
CHANGED
@@ -302,13 +302,17 @@ 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:market`
|
305
306
|
* `steem_engine:market:buy`
|
306
307
|
* `steem_engine:market:cancel`
|
307
308
|
* `steem_engine:market:sell`
|
309
|
+
* `steem_engine:sscstore`
|
308
310
|
* `steem_engine:sscstore:buy`
|
311
|
+
* `steem_engine:steempegged`
|
309
312
|
* `steem_engine:steempegged:buy`
|
310
313
|
* `steem_engine:steempegged:removeWithdrawal`
|
311
314
|
* `steem_engine:steempegged:withdraw`
|
315
|
+
* `steem_engine:tokens`
|
312
316
|
* `steem_engine:tokens:create`
|
313
317
|
* `steem_engine:tokens:issue`
|
314
318
|
* `steem_engine:tokens:transfer`
|
data/Rakefile
CHANGED
@@ -92,10 +92,16 @@ task(:find, [:what, :key, :chain] => [:check_schema]) do |t, args|
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
-
task reset: [:check_schema] do
|
96
|
-
|
97
|
-
keys =
|
98
|
-
|
95
|
+
task :reset, [:chain] => [:check_schema] do |t, args|
|
96
|
+
chain = (args[:chain] || 'all').to_sym
|
97
|
+
keys = []
|
98
|
+
|
99
|
+
print 'Dropping keys for set: %s ...' % chain.to_s
|
100
|
+
|
101
|
+
case chain
|
102
|
+
when :steem, :all then keys += Meeseeker.redis.keys('steem:*')
|
103
|
+
when :steem_engine, :all then keys += Meeseeker.redis.keys('steem_engine:*')
|
104
|
+
end
|
99
105
|
|
100
106
|
if keys.any?
|
101
107
|
print " found #{keys.size} keys ..."
|
@@ -355,6 +361,60 @@ namespace :verify do
|
|
355
361
|
end
|
356
362
|
end
|
357
363
|
end
|
364
|
+
|
365
|
+
desc 'Verifies Steem Engine sidechain against the mainnet.'
|
366
|
+
task :steem_engine_ref_blocks do |t|
|
367
|
+
redis_url = ENV.fetch('MEESEEKER_REDIS_URL', 'redis://127.0.0.1:6379/0')
|
368
|
+
ctx = ctx = Redis.new(url: redis_url)
|
369
|
+
keys = ctx.keys('steem_engine:*')
|
370
|
+
block_api = Steem::BlockApi.new
|
371
|
+
block_trxs = {}
|
372
|
+
|
373
|
+
puts "Checking Steem Engine keys: #{keys.size}"
|
374
|
+
|
375
|
+
keys.each do |key|
|
376
|
+
transaction = JSON[ctx.get(key)]
|
377
|
+
block_num = transaction['refSteemBlockNumber']
|
378
|
+
|
379
|
+
block_trxs[block_num] ||= []
|
380
|
+
block_trxs[block_num] << transaction['transactionId'].split('-').first
|
381
|
+
end
|
382
|
+
|
383
|
+
puts "Related mainnet blocks: #{block_trxs.keys.size}"
|
384
|
+
|
385
|
+
skipped_blocks = []
|
386
|
+
|
387
|
+
block_api.get_blocks(block_range: block_trxs.keys) do |block, block_num|
|
388
|
+
if block.nil? || block[:transaction_ids].nil?
|
389
|
+
print 'S'
|
390
|
+
skipped_blocks << block_num
|
391
|
+
|
392
|
+
next
|
393
|
+
else
|
394
|
+
print '.'
|
395
|
+
end
|
396
|
+
|
397
|
+
if (block.transaction_ids & block_trxs[block_num]).none?
|
398
|
+
puts "\nNo intersection in #{block_num}!"
|
399
|
+
puts "Expected the following sidechain trx_ids: #{block_trxs[block_num].join(', ')}"
|
400
|
+
end
|
401
|
+
end
|
402
|
+
|
403
|
+
puts "\nBlocks to retry: #{skipped_blocks.size}"
|
404
|
+
|
405
|
+
skipped_blocks.each do |block_num|
|
406
|
+
block_api.get_block(block_num: block_num) do |result|
|
407
|
+
block = result.block
|
408
|
+
|
409
|
+
if (block.transaction_ids & block_trxs[block_num]).none?
|
410
|
+
puts "No intersection in #{block_num}!"
|
411
|
+
puts "Expected the following sidechain trx_ids: #{block_trxs[block_num].join(', ')}"
|
412
|
+
end
|
413
|
+
end
|
414
|
+
end
|
415
|
+
|
416
|
+
puts "Done."
|
417
|
+
end
|
358
418
|
|
359
419
|
namespace :witness do
|
360
420
|
desc 'Verifies witnessses in the schedule produced a block.'
|
data/lib/meeseeker.rb
CHANGED
@@ -9,7 +9,7 @@ require 'meeseeker/steem_engine/follower_job'
|
|
9
9
|
|
10
10
|
module Meeseeker
|
11
11
|
LAST_BLOCK_NUM_KEY = 'steem:meeseeker:last_block_num'
|
12
|
-
LAST_STEEM_ENGINE_BLOCK_NUM_KEY = '
|
12
|
+
LAST_STEEM_ENGINE_BLOCK_NUM_KEY = 'steem_engine:meeseeker:last_block_num'
|
13
13
|
BLOCKS_PER_DAY = 28800
|
14
14
|
VIRTUAL_TRX_ID = '0000000000000000000000000000000000000000'
|
15
15
|
@redis = Redis.new(url: ENV.fetch('MEESEEKER_REDIS_URL', 'redis://127.0.0.1:6379/0'))
|
@@ -52,6 +52,7 @@ module Meeseeker::SteemEngine
|
|
52
52
|
current_block_num = block_num
|
53
53
|
end
|
54
54
|
|
55
|
+
redis.publish("steem_engine:#{contract}", {key: key}.to_json)
|
55
56
|
redis.publish("steem_engine:#{contract}:#{action}", {key: key}.to_json)
|
56
57
|
end
|
57
58
|
end
|
@@ -60,22 +61,30 @@ module Meeseeker::SteemEngine
|
|
60
61
|
redis = Meeseeker.redis
|
61
62
|
last_block_num = nil
|
62
63
|
agent = Agent.new
|
64
|
+
until_block_num = options[:until_block_num].to_i
|
63
65
|
|
64
66
|
if !!options[:at_block_num]
|
65
67
|
last_block_num = options[:at_block_num].to_i
|
66
68
|
else
|
67
|
-
|
69
|
+
new_sync = false
|
70
|
+
last_block_num = redis.get(Meeseeker::LAST_STEEM_ENGINE_BLOCK_NUM_KEY)
|
68
71
|
block_info = agent.latest_block_info
|
69
72
|
block_num = block_info['blockNumber']
|
70
|
-
|
71
|
-
last_block = agent.block(last_block_num)
|
73
|
+
last_block = agent.block(block_num)
|
72
74
|
last_block_timestamp = Time.parse(last_block['timestamp'] + 'Z')
|
75
|
+
|
76
|
+
if last_block_num.nil?
|
77
|
+
new_sync = true
|
78
|
+
last_block_num = block_num
|
79
|
+
else
|
80
|
+
last_block_num = last_block_num.to_i + 1
|
81
|
+
end
|
73
82
|
|
74
83
|
if Meeseeker.expire_keys == -1
|
75
84
|
last_block_num = [last_block_num, block_num].max
|
76
85
|
|
77
86
|
puts "Sync Steem Engine from: #{last_block_num}"
|
78
|
-
elsif Time.now.utc - last_block_timestamp > Meeseeker.expire_keys
|
87
|
+
elsif new_sync || (Time.now.utc - last_block_timestamp > Meeseeker.expire_keys)
|
79
88
|
last_block_num = block_num + 1
|
80
89
|
|
81
90
|
puts 'Starting new Steem Engine sync.'
|
@@ -100,6 +109,8 @@ module Meeseeker::SteemEngine
|
|
100
109
|
yield transaction.merge(timestamp: block['timestamp']), block
|
101
110
|
end
|
102
111
|
|
112
|
+
break if until_block_num != 0 && block_num > until_block_num
|
113
|
+
|
103
114
|
block_num = block_num + 1
|
104
115
|
end
|
105
116
|
end
|
data/lib/meeseeker/version.rb
CHANGED
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.
|
4
|
+
version: 0.0.7
|
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-
|
11
|
+
date: 2019-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|