huginn_callisto_network_agent 0.1.75 → 0.1.77
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/huginn_callisto_network_agent/callisto_network_agent.rb +60 -86
- 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: bb44e0ebbc2034ccc01b7b724c5f55b36d0c9066a75122019a7ee10c5e45c9ca
|
4
|
+
data.tar.gz: 9d884a5a362b25025ffbc1b6fa2273ddc951ee45efd6e4592f7d86569ec34f85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46eb61be573cc249c56bb6f39f2a8078188b0c5cd009b5655d929b6b92235d5a6838d84fb7fbc7ffd1ba4410b33aa3e82a753b01e227fabd54e7a5af6c947e0b
|
7
|
+
data.tar.gz: 81fb96b63c44b7fddd213dd807ae4eb124fc3745d405c3d8fdb4ecb33a24b887aea9f22a4d60bb238fdee10622804744bb6cfa10d82854951ea0ddf05f45df63
|
@@ -53,7 +53,8 @@ module Agents
|
|
53
53
|
'changes_only' => 'true',
|
54
54
|
'filter_for_method_id' => '',
|
55
55
|
'first_block' => '',
|
56
|
-
'last_block' => ''
|
56
|
+
'last_block' => '',
|
57
|
+
'sql_db' => ''
|
57
58
|
}
|
58
59
|
end
|
59
60
|
|
@@ -61,7 +62,7 @@ module Agents
|
|
61
62
|
form_configurable :emit_events, type: :boolean
|
62
63
|
form_configurable :expected_receive_period_in_days, type: :string
|
63
64
|
form_configurable :changes_only, type: :boolean
|
64
|
-
form_configurable :type, type: :array, values: ['get_balance', 'net_peerCount', 'net_version', 'eth_protocolVersion', 'eth_gasPrice', 'eth_getTransactionCount', 'stake_reward_clo', 'get_tokens_balance', 'eth_getBlockByNumber', 'soy_farming_soy_clo_pending_rewards', 'soy_farming_soy_cloe_pending_rewards', 'stake_reward_soy', 'soy_farming_soy_btt_pending_rewards', 'soy_cs_pending_rewards', 'clo_sendtx', 'get_tx_by_address_with_filter', 'start_cs_clo', 'withdraw_cs_clo', 'get_tx_stats', 'callosha_slots', '2bears_check_order_by_id']
|
65
|
+
form_configurable :type, type: :array, values: ['get_balance', 'net_peerCount', 'net_version', 'eth_protocolVersion', 'eth_gasPrice', 'eth_getTransactionCount', 'stake_reward_clo', 'get_tokens_balance', 'eth_getBlockByNumber', 'soy_farming_soy_clo_pending_rewards', 'soy_farming_soy_cloe_pending_rewards', 'stake_reward_soy', 'soy_farming_soy_btt_pending_rewards', 'soy_cs_pending_rewards', 'clo_sendtx', 'get_tx_by_address_with_filter', 'start_cs_clo', 'withdraw_cs_clo', 'get_tx_stats', 'callosha_slots', '2bears_check_order_by_id', 'get_abi_json']
|
65
66
|
form_configurable :wallet, type: :string
|
66
67
|
form_configurable :rpc_server, type: :string
|
67
68
|
form_configurable :wallet_password, type: :string
|
@@ -71,8 +72,9 @@ module Agents
|
|
71
72
|
form_configurable :filter_for_method_id, type: :string
|
72
73
|
form_configurable :first_block, type: :string
|
73
74
|
form_configurable :last_block, type: :string
|
75
|
+
form_configurable :sql_db, type: :string
|
74
76
|
def validate_options
|
75
|
-
errors.add(:base, "type has invalid value: should be 'get_balance' 'net_peerCount' 'net_version' 'eth_protocolVersion' 'eth_gasPrice' 'eth_getTransactionCount' 'stake_reward_clo' 'get_tokens_balance' 'eth_getBlockByNumber' 'soy_farming_soy_clo_pending_rewards' 'soy_farming_soy_cloe_pending_rewards' 'stake_reward_soy' 'soy_farming_soy_btt_pending_rewards' 'soy_cs_pending_rewards' 'clo_sendtx' 'get_tx_by_address_with_filter' 'start_cs_clo' 'withdraw_cs_clo' 'get_tx_stats' 'callosha_slots' '2bears_check_order_by_id'") if interpolated['type'].present? && !%w(get_balance net_peerCount net_version eth_protocolVersion eth_gasPrice eth_getTransactionCount stake_reward_clo get_tokens_balance eth_getBlockByNumber soy_farming_soy_clo_pending_rewards soy_farming_soy_cloe_pending_rewards stake_reward_soy soy_farming_soy_btt_pending_rewards soy_cs_pending_rewards clo_sendtx get_tx_by_address_with_filter start_cs_clo withdraw_cs_clo get_tx_stats callosha_slots 2bears_check_order_by_id).include?(interpolated['type'])
|
77
|
+
errors.add(:base, "type has invalid value: should be 'get_balance' 'net_peerCount' 'net_version' 'eth_protocolVersion' 'eth_gasPrice' 'eth_getTransactionCount' 'stake_reward_clo' 'get_tokens_balance' 'eth_getBlockByNumber' 'soy_farming_soy_clo_pending_rewards' 'soy_farming_soy_cloe_pending_rewards' 'stake_reward_soy' 'soy_farming_soy_btt_pending_rewards' 'soy_cs_pending_rewards' 'clo_sendtx' 'get_tx_by_address_with_filter' 'start_cs_clo' 'withdraw_cs_clo' 'get_tx_stats' 'callosha_slots' '2bears_check_order_by_id' 'get_abi_json'") if interpolated['type'].present? && !%w(get_balance net_peerCount net_version eth_protocolVersion eth_gasPrice eth_getTransactionCount stake_reward_clo get_tokens_balance eth_getBlockByNumber soy_farming_soy_clo_pending_rewards soy_farming_soy_cloe_pending_rewards stake_reward_soy soy_farming_soy_btt_pending_rewards soy_cs_pending_rewards clo_sendtx get_tx_by_address_with_filter start_cs_clo withdraw_cs_clo get_tx_stats callosha_slots 2bears_check_order_by_id get_abi_json).include?(interpolated['type'])
|
76
78
|
|
77
79
|
unless options['wallet_password'].present? || !['clo_sendtx' 'start_cs_clo' 'withdraw_cs_clo'].include?(options['type'])
|
78
80
|
errors.add(:base, "wallet_password is a required field")
|
@@ -94,7 +96,7 @@ module Agents
|
|
94
96
|
errors.add(:base, "rpc_server is a required field")
|
95
97
|
end
|
96
98
|
|
97
|
-
unless options['wallet'].present? || !['get_balance' 'eth_getTransactionCount' 'stake_reward_clo' 'get_tokens_balance' 'eth_getBlockByNumber' 'soy_farming_soy_clo_pending_rewards' 'soy_farming_soy_cloe_pending_rewards' 'stake_reward_soy' 'soy_farming_soy_btt_pending_rewards' 'soy_cs_pending_rewards' 'clo_sendtx' 'get_tx_by_address_with_filter' 'start_cs_clo' 'callosha_slots'].include?(options['type'])
|
99
|
+
unless options['wallet'].present? || !['get_balance' 'eth_getTransactionCount' 'stake_reward_clo' 'get_tokens_balance' 'eth_getBlockByNumber' 'soy_farming_soy_clo_pending_rewards' 'soy_farming_soy_cloe_pending_rewards' 'stake_reward_soy' 'soy_farming_soy_btt_pending_rewards' 'soy_cs_pending_rewards' 'clo_sendtx' 'get_tx_by_address_with_filter' 'start_cs_clo' 'callosha_slots' 'get_abi_json'].include?(options['type'])
|
98
100
|
errors.add(:base, "wallet is a required field")
|
99
101
|
end
|
100
102
|
|
@@ -191,6 +193,52 @@ module Agents
|
|
191
193
|
return found_symbol
|
192
194
|
end
|
193
195
|
|
196
|
+
def function_finder(contract_address=interpolated['wallet'],bytes_signature)
|
197
|
+
|
198
|
+
db = SQLite3::Database.new(interpolated['sql_db'])
|
199
|
+
result = db.get_first_row('SELECT text_signature FROM signatures WHERE bytes_signature = ? AND contract_address = ?', bytes_signature, contract_address)
|
200
|
+
db.close
|
201
|
+
|
202
|
+
if result
|
203
|
+
return result[0].split('(').first
|
204
|
+
else
|
205
|
+
db = SQLite3::Database.new(interpolated['sql_db'])
|
206
|
+
result = db.get_first_row('SELECT text_signature FROM signatures WHERE bytes_signature = ?', bytes_signature)
|
207
|
+
db.close
|
208
|
+
if result
|
209
|
+
return result[0].split('(').first
|
210
|
+
else
|
211
|
+
return 'unknown'
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
def get_abi_json(contract_address,internal=false)
|
217
|
+
|
218
|
+
uri = URI.parse("https://explorer.callisto.network/api?module=contract&action=getabi&address=#{contract_address}")
|
219
|
+
request = Net::HTTP::Get.new(uri)
|
220
|
+
request["Accept"] = "application/json"
|
221
|
+
|
222
|
+
req_options = {
|
223
|
+
use_ssl: uri.scheme == "https",
|
224
|
+
}
|
225
|
+
|
226
|
+
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
|
227
|
+
http.request(request)
|
228
|
+
end
|
229
|
+
|
230
|
+
log_curl_output(response.code,response.body)
|
231
|
+
|
232
|
+
payload = JSON.parse(response.body)
|
233
|
+
|
234
|
+
if internal == false
|
235
|
+
create_event payload: payload
|
236
|
+
else
|
237
|
+
return payload
|
238
|
+
end
|
239
|
+
|
240
|
+
end
|
241
|
+
|
194
242
|
def get_tx_receipt(hash)
|
195
243
|
|
196
244
|
uri = URI.parse("#{interpolated['rpc_server']}")
|
@@ -450,94 +498,14 @@ module Agents
|
|
450
498
|
transaction['symbol'] = "CLO"
|
451
499
|
transaction['value'] = "#{transaction['value'].to_i(16) / power.to_i.to_f}"
|
452
500
|
when "0xb88a802f"
|
453
|
-
transaction['call_type'] = 'claimReward'
|
454
501
|
transaction['symbol'] = find_symbol(transaction['to'])
|
455
|
-
when "0xe80233c6"
|
456
|
-
transaction['call_type'] = 'activateNode'
|
457
|
-
when "0xc180f4f1"
|
458
|
-
transaction['call_type'] = 'addClassProperty'
|
459
|
-
when "0x25498c75"
|
460
|
-
transaction['call_type'] = 'addNewTokenClass'
|
461
|
-
when "0xb199892a"
|
462
|
-
transaction['call_type'] = 'addNode'
|
463
|
-
when "0x01026099"
|
464
|
-
transaction['call_type'] = 'addTokens'
|
465
|
-
when "0x095ea7b3"
|
466
|
-
transaction['call_type'] = 'approve'
|
467
|
-
when "0x514fcac7"
|
468
|
-
transaction['call_type'] = 'cancelOrder'
|
469
|
-
when "0x8f995234", "0x4e71d92d"
|
470
|
-
transaction['call_type'] = 'claim'
|
471
|
-
when "0xa0169f0d"
|
472
|
-
transaction['call_type'] = 'createDumperShield'
|
473
|
-
when "0x96d4f640"
|
474
|
-
transaction['call_type'] = 'createOrder'
|
475
|
-
when "0x65814455"
|
476
|
-
transaction['call_type'] = 'deactivateNode'
|
477
|
-
when "0xbd000546"
|
478
|
-
transaction['call_type'] = 'DeleteOrder'
|
479
|
-
when "0x1da7ee0d"
|
480
|
-
transaction['call_type'] = 'depositPosition'
|
481
|
-
when "0x487cda0d"
|
482
|
-
transaction['call_type'] = 'depositTokens'
|
483
|
-
when "0x83f818b4"
|
484
|
-
transaction['call_type'] = 'game'
|
485
|
-
when "0xc4d66de8", "0x1624f6c6"
|
486
|
-
transaction['call_type'] = 'initialize'
|
487
|
-
when "0xbf3c35c3"
|
488
|
-
transaction['call_type'] = 'migrateCLOE'
|
489
|
-
when "0x2da91f95"
|
490
|
-
transaction['call_type'] = 'migrationWithdraw'
|
491
|
-
when "0x40c10f19"
|
492
|
-
transaction['call_type'] = 'mint'
|
493
|
-
when "0x3054d9cb"
|
494
|
-
transaction['call_type'] = 'modifyClassProperty'
|
495
|
-
when "0xb2b99ec9"
|
496
|
-
transaction['call_type'] = 'removeNode'
|
497
|
-
when "0x11411e08"
|
498
|
-
transaction['call_type'] = 'sellToken'
|
499
|
-
when "0xcf456ae7"
|
500
|
-
transaction['call_type'] = 'setMinter'
|
501
|
-
when "0xcdfdb7dc"
|
502
|
-
transaction['call_type'] = 'setRatios'
|
503
|
-
when "0xfe3f3f02"
|
504
|
-
transaction['call_type'] = 'setSalary'
|
505
|
-
when "0x957138a4"
|
506
|
-
transaction['call_type'] = 'setStop'
|
507
|
-
when "0xc98e0c3c"
|
508
|
-
transaction['call_type'] = 'silentTransfer'
|
509
|
-
when "0x84daaf54"
|
510
|
-
transaction['call_type'] = 'stakingMigrate'
|
511
|
-
when "0x5d8c85ef"
|
512
|
-
transaction['call_type'] = 'start_staking'
|
513
|
-
when "0x2e9b3dc3"
|
514
|
-
transaction['call_type'] = 'swapExactCLOForTokens'
|
515
|
-
when "0x38ed1739"
|
516
|
-
transaction['call_type'] = 'swapExactTokensForTokens'
|
517
|
-
when "0xa6e83852"
|
518
|
-
transaction['call_type'] = 'swapTokensForExactCLO'
|
519
|
-
when "0x8803dbee"
|
520
|
-
transaction['call_type'] = 'swapTokensForExactTokens'
|
521
502
|
when "0xa9059cbb"
|
522
|
-
transaction['call_type'] = 'TokenTransfer'
|
523
503
|
transaction['symbol'] = find_symbol(transaction['to'])
|
524
504
|
# transaction['to'] = transaction['input'][10, 64]
|
525
505
|
transaction['to'] = "0x#{transaction['input'][34, 40]}"
|
526
506
|
transaction['value'] = "#{transaction['input'][74, 64].to_i(16) / power.to_i.to_f}"
|
527
|
-
|
528
|
-
transaction['call_type'] = '
|
529
|
-
when "0xf2fde38b"
|
530
|
-
transaction['call_type'] = 'transferOwnership'
|
531
|
-
when "0xa2e62045", "0x82ab890a"
|
532
|
-
transaction['call_type'] = 'update'
|
533
|
-
when "0x3659cfe6"
|
534
|
-
transaction['call_type'] = 'upgradeTo'
|
535
|
-
when "0xd9caed12"
|
536
|
-
transaction['call_type'] = 'withdraw'
|
537
|
-
when "0x78be0ad4", "0xcd948855"
|
538
|
-
transaction['call_type'] = 'withdraw_stake'
|
539
|
-
else
|
540
|
-
transaction['call_type'] = 'unknown'
|
507
|
+
# else
|
508
|
+
# transaction['call_type'] = 'unknown'
|
541
509
|
end
|
542
510
|
if transaction['input'] != '0x'
|
543
511
|
hex_string = transaction['input'].dup
|
@@ -552,6 +520,10 @@ module Agents
|
|
552
520
|
transaction['input_utf8'] = decoded_string
|
553
521
|
end
|
554
522
|
end
|
523
|
+
if !interpolated['sql_db'].empty?
|
524
|
+
transaction['call_type'] = function_finder(transaction['to'],transaction['input'][0, 10])
|
525
|
+
end
|
526
|
+
# log "#{transaction['input'][0, 10]} -> #{function_finder(transaction['to'],true,transaction['input'][0, 10])}"
|
555
527
|
create_event payload: transaction
|
556
528
|
end
|
557
529
|
end
|
@@ -1665,6 +1637,8 @@ module Agents
|
|
1665
1637
|
callosha_slots()
|
1666
1638
|
when "2bears_check_order_by_id"
|
1667
1639
|
twobears_check_order_by_id()
|
1640
|
+
when "get_abi_json"
|
1641
|
+
get_abi_json(interpolated['wallet'],false)
|
1668
1642
|
else
|
1669
1643
|
log "Error: type has an invalid value (#{type})"
|
1670
1644
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: huginn_callisto_network_agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.77
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicolas Germain
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|