RecordsKeeperRubyLib 0.3.0 → 0.4.0

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.
@@ -1,92 +1,99 @@
1
- # Library to work with assets.
2
-
3
- # You can issue assets or retrieve assets information by using asset class.
4
- # You just have to pass parameters to invoke the pre-defined functions.
5
-
6
- require 'rubygems'
7
- require 'httparty'
8
- require 'json'
9
- require 'binary_parser'
10
- require 'yaml'
11
- require 'hex_string'
12
-
13
- module RecordsKeeperRubyLib
14
- class Assets
15
- # # Entry point for accessing Block class resources.
16
- # # Import values from config file.
17
- cfg = YAML::load(File.open('config.yaml','r'))
18
- @network = cfg['network']
19
- @url = cfg['network']['url']
20
- @user = cfg['network']['rkuser']
21
- @password = cfg['network']['passwd']
22
- @chain = cfg['network']['chain']
23
-
24
- def self.variable
25
- net = @network
26
- return net
27
- end
28
-
29
- # Function to create or issue an asset
30
- def self.createAsset address, asset_name, asset_qty
31
- auth = {:username => @user, :password => @password}
32
- options = {
33
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
34
- :basic_auth => auth,
35
- :body => [ {"method":"issue","params":[address, asset_name, asset_qty],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
36
- }
37
- response = HTTParty.get(@url, options)
38
- out = response.parsed_response
39
- check = out[0]['result']
40
- if check == nil
41
- txid = out[0]['error']['message']
42
- else
43
- txid = out[0]['result']
44
- end
45
- return txid; # Variable to store issue transaction id
46
- end
47
-
48
- # Function to retrieve assets information
49
- def self.retrieveAssets
50
- asset_name = []
51
- issue_id = []
52
- issue_qty = []
53
- auth = {:username => @user, :password => @password}
54
- options = {
55
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
56
- :basic_auth => auth,
57
- :body => [ {"method":"listassets","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
58
- }
59
- response = HTTParty.get(@url, options)
60
- out = response.parsed_response
61
- asset_count = out[0]['result'].length # Returns assets count
62
- for i in 0...asset_count
63
- asset_name.push(out[0]['result'][i]['name']) # Returns asset name
64
- issue_id.push(out[0]['result'][i]['issuetxid']) # Returns issue id
65
- issue_qty.push(out[0]['result'][i]['issueraw']) # Returns issue quantity
66
- end
67
- retrieve = {:asset_name => asset_name,:issue_id => issue_id,:issue_qty => issue_qty,:asset_count => asset_count}
68
- retrievedinfo = JSON.generate retrieve
69
- return retrievedinfo
70
- end
71
-
72
- # Function to send quantity of assets to an address
73
- def self.sendasset address, asset_name, asset_qty
74
- auth = {:username => @user, :password => @password}
75
- options = {
76
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
77
- :basic_auth => auth,
78
- :body => [ {"method":"sendasset","params":[address, asset_name, asset_qty],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
79
- }
80
- response = HTTParty.get(@url, options)
81
- out = response.parsed_response
82
- if out[0]['result'].nil?
83
- txid = out[0]['error']['message']
84
- else
85
- txid = out[0]['result']
86
- end
87
- return txid; # Variable to store send asset transaction id
88
- end
89
-
90
- end
91
-
92
- end
1
+ # Library to work with assets.
2
+
3
+ # You can issue assets, send assets or retrieve assets information by using asset class.
4
+ # You just have to pass parameters to invoke the pre-defined functions.
5
+
6
+ require 'rubygems'
7
+ require 'httparty'
8
+ require 'json'
9
+ require 'binary_parser'
10
+ require 'yaml'
11
+ require 'hex_string'
12
+
13
+ module RecordsKeeperRubyLib
14
+ class Assets
15
+ # # Entry point for accessing Asset class functions
16
+ if File.exist?('config.yaml')
17
+ # Import values from configuration file.
18
+ cfg = YAML::load(File.open('config.yaml','r'))
19
+
20
+ @url = cfg['url']
21
+ @user = cfg['rkuser']
22
+ @password = cfg['passwd']
23
+ @chain = cfg['chain']
24
+
25
+ else
26
+ #Import using ENV variables
27
+
28
+ @url = ENV['url']
29
+ @user = ENV['rkuser']
30
+ @password = ENV['passwd']
31
+ @chain = ENV['chain']
32
+ end
33
+
34
+
35
+ # Function to create or issue an asset
36
+ def self.createAsset address, asset_name, asset_qty
37
+
38
+ auth = {:username => @user, :password => @password}
39
+ options = {
40
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
41
+ :basic_auth => auth,
42
+ :body => [ {"method":"issue","params":[address, asset_name, asset_qty],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
43
+ }
44
+ response = HTTParty.get(@url, options)
45
+ out = response.parsed_response
46
+ check = out[0]['result']
47
+ if check == nil
48
+ txid = out[0]['error']['message']
49
+ else
50
+ txid = out[0]['result']
51
+ end
52
+ return txid; # Variable to store issue transaction id
53
+ end
54
+
55
+ # Function to retrieve assets information
56
+ def self.retrieveAssets
57
+ asset_name = []
58
+ issue_id = []
59
+ issue_qty = []
60
+ auth = {:username => @user, :password => @password}
61
+ options = {
62
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
63
+ :basic_auth => auth,
64
+ :body => [ {"method":"listassets","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
65
+ }
66
+ response = HTTParty.get(@url, options)
67
+ out = response.parsed_response
68
+ asset_count = out[0]['result'].length # Returns assets count
69
+ for i in 0...asset_count
70
+ asset_name.push(out[0]['result'][i]['name']) # Returns asset name
71
+ issue_id.push(out[0]['result'][i]['issuetxid']) # Returns issue id
72
+ issue_qty.push(out[0]['result'][i]['issueraw']) # Returns issue quantity
73
+ end
74
+ retrieve = {:asset_name => asset_name,:issue_id => issue_id,:issue_qty => issue_qty,:asset_count => asset_count}
75
+ retrievedinfo = JSON.generate retrieve
76
+ return retrievedinfo
77
+ end
78
+
79
+ # Function to send assets to an address
80
+ def self.sendasset address, asset_name, asset_qty
81
+ auth = {:username => @user, :password => @password}
82
+ options = {
83
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
84
+ :basic_auth => auth,
85
+ :body => [ {"method":"sendasset","params":[address, asset_name, asset_qty],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
86
+ }
87
+ response = HTTParty.get(@url, options)
88
+ out = response.parsed_response
89
+ if out[0]['result'].nil?
90
+ txid = out[0]['error']['message']
91
+ else
92
+ txid = out[0]['result']
93
+ end
94
+ return txid; # Variable to store send asset transaction id
95
+ end
96
+
97
+ end
98
+
99
+ end
@@ -1,88 +1,94 @@
1
- # Library to work with RecordsKeeper blocks.
2
-
3
- # You can retrieve complete block information by using block class.
4
- # You just have to pass parameters to invoke the pre-defined functions.
5
-
6
- # Import the following libraries
7
-
8
- require 'rubygems'
9
- require 'httparty'
10
- require 'json'
11
- require 'binary_parser'
12
- require 'yaml'
13
-
14
- module RecordsKeeperRubyLib
15
- class Block
16
-
17
- #Entry point for accessing Block class resources.
18
- #Import values from config file.
19
- cfg = YAML::load(File.open('config.yaml','r'))
20
- @network = cfg['network']
21
- @url = cfg['network']['url']
22
- @user = cfg['network']['rkuser']
23
- @password = cfg['network']['passwd']
24
- @chain = cfg['network']['chain']
25
-
26
- def self.variable
27
- net = @network
28
- return net
29
- end
30
-
31
- def self.blockinfo block_height
32
- height = block_height.to_s
33
- auth = {:username => @user, :password => @password}
34
- options = {
35
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
36
- :basic_auth => auth,
37
- :body => [ {"method":"getblock","params":[height],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
38
- }
39
- response = HTTParty.get(@url, options)
40
- out = response.parsed_response
41
- tx_count_number = out[0]['result']['tx']
42
- tx_count = tx_count_number.length # variable returns block's transaction count
43
- miner = out[0]['result']['miner'] # variable returns block's miner
44
- size = out[0]['result']['size'] # variable returns block's size
45
- nonce = out[0]['result']['nonce'] # variable returns block's nonce
46
- blockHash = out[0]['result']['hash'] # variable returns blockhash
47
- prevblock = out[0]['result']['previousblockhash'] # variable returns prevblockhash
48
- nextblock = out[0]['result']['nextblockhash'] # variable returns nextblockhash
49
- merkleroot = out[0]['result']['merkleroot'] # variable returns merkleroot
50
- blocktime = out[0]['result']['time'] # variable returns blocktime
51
- difficulty = out[0]['result']['difficulty'] # variable returns difficulty
52
- tx = [] # list to store transaction ids
53
- for i in 0...tx_count
54
- tx.push(out[0]['result']['tx'][i]) # pushes transaction ids onto tx list
55
- end
56
- retrieved = { :tx_count => tx_count,:miner => miner,:size => size,:nonce => nonce,:blockHash => blockHash,:prevblock => prevblock, :nextblock => nextblock,:merkleroot => merkleroot,:blocktime => blocktime,:difficulty => difficulty,:tx => tx}
57
- retrievedinfo = JSON.generate retrieved
58
- return retrievedinfo
59
- end
60
-
61
- def self.retrieveBlocks block_range
62
- blockhash = []
63
- miner = []
64
- blocktime = []
65
- tx_count = []
66
- auth = {:username => @user, :password => @password}
67
- options = {
68
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
69
- :basic_auth => auth,
70
- :body => [ {"method":"listblocks","params":[block_range],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
71
- }
72
- response = HTTParty.get(@url, options)
73
- out = response.parsed_response
74
- block_count_len = out[0]['result']
75
- block_count = block_count_len.length
76
- for i in 0...block_count
77
- blockhash.push(out[0]['result'][i]['hash'])
78
- miner.push(out[0]['result'][i]['miner'])
79
- blocktime.push(out[0]['result'][i]['time'])
80
- tx_count.push(out[0]['result'][i]['txcount'])
81
- end
82
- retrieved = { :blockhash => blockhash,:miner => miner,:blocktime => blocktime,:tx_count => tx_count}
83
- retrievedinfo = JSON.generate retrieved
84
- return retrievedinfo
85
- end
86
-
87
- end
88
- end
1
+ # Library to work with RecordsKeeper blocks.
2
+
3
+ # You can retrieve complete block information by using block class.
4
+ # You just have to pass parameters to invoke the pre-defined functions.
5
+
6
+ # Import the following libraries
7
+
8
+ require 'rubygems'
9
+ require 'httparty'
10
+ require 'json'
11
+ require 'binary_parser'
12
+ require 'yaml'
13
+
14
+ module RecordsKeeperRubyLib
15
+ class Block
16
+ # # Entry point for accessing Block class functions
17
+ if File.exist?('config.yaml')
18
+ # Import values from configuration file.
19
+ cfg = YAML::load(File.open('config.yaml','r'))
20
+
21
+ @url = cfg['url']
22
+ @user = cfg['rkuser']
23
+ @password = cfg['passwd']
24
+ @chain = cfg['chain']
25
+
26
+ else
27
+ #Import using ENV variables
28
+
29
+ @url = ENV['url']
30
+ @user = ENV['rkuser']
31
+ @password = ENV['passwd']
32
+ @chain = ENV['chain']
33
+ end
34
+
35
+ # function to retrieve data of a particular block no.
36
+ def self.blockinfo block_height
37
+ height = block_height.to_s
38
+ auth = {:username => @user, :password => @password}
39
+ options = {
40
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
41
+ :basic_auth => auth,
42
+ :body => [ {"method":"getblock","params":[height],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
43
+ }
44
+ response = HTTParty.get(@url, options)
45
+ out = response.parsed_response
46
+ tx_count_number = out[0]['result']['tx']
47
+ tx_count = tx_count_number.length # variable returns block's transaction count
48
+ miner = out[0]['result']['miner'] # variable returns block's miner
49
+ size = out[0]['result']['size'] # variable returns block's size
50
+ nonce = out[0]['result']['nonce'] # variable returns block's nonce
51
+ blockHash = out[0]['result']['hash'] # variable returns blockhash
52
+ prevblock = out[0]['result']['previousblockhash'] # variable returns prevblockhash
53
+ nextblock = out[0]['result']['nextblockhash'] # variable returns nextblockhash
54
+ merkleroot = out[0]['result']['merkleroot'] # variable returns merkleroot
55
+ blocktime = out[0]['result']['time'] # variable returns blocktime
56
+ difficulty = out[0]['result']['difficulty'] # variable returns difficulty
57
+ tx = [] # list to store transaction ids
58
+ for i in 0...tx_count
59
+ tx.push(out[0]['result']['tx'][i]) # pushes transaction ids onto tx list
60
+ end
61
+ retrieved = { :tx_count => tx_count,:miner => miner,:size => size,:nonce => nonce,:blockHash => blockHash,:prevblock => prevblock, :nextblock => nextblock,:merkleroot => merkleroot,:blocktime => blocktime,:difficulty => difficulty,:tx => tx}
62
+ retrievedinfo = JSON.generate retrieved
63
+ return retrievedinfo
64
+ end
65
+
66
+ # function to retrieve data of blocks in a particular range
67
+ def self.retrieveBlocks block_range
68
+ blockhash = []
69
+ miner = []
70
+ blocktime = []
71
+ tx_count = []
72
+ auth = {:username => @user, :password => @password}
73
+ options = {
74
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
75
+ :basic_auth => auth,
76
+ :body => [ {"method":"listblocks","params":[block_range],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
77
+ }
78
+ response = HTTParty.get(@url, options)
79
+ out = response.parsed_response
80
+ block_count_len = out[0]['result']
81
+ block_count = block_count_len.length
82
+ for i in 0...block_count
83
+ blockhash.push(out[0]['result'][i]['hash'])
84
+ miner.push(out[0]['result'][i]['miner'])
85
+ blocktime.push(out[0]['result'][i]['time'])
86
+ tx_count.push(out[0]['result'][i]['txcount'])
87
+ end
88
+ retrieved = { :blockhash => blockhash,:miner => miner,:blocktime => blocktime,:tx_count => tx_count}
89
+ retrievedinfo = JSON.generate retrieved
90
+ return retrievedinfo
91
+ end
92
+
93
+ end
94
+ end
@@ -1,138 +1,148 @@
1
- # Library to work with RecordsKeeper Blockchain.
2
-
3
- # You can retrieve blockchain information, node's information, node's balance, node's permissions, pending transaction details
4
- # by using Blockchain class.
5
- # You just have to pass parameters to invoke the pre-defined functions."""
6
-
7
- require 'rubygems'
8
- require 'httparty'
9
- require 'json'
10
- require 'binary_parser'
11
- require 'yaml'
12
-
13
- module RecordsKeeperRubyLib
14
- class Blockchain
15
-
16
- cfg = YAML::load(File.open('config.yaml','r'))
17
- @network = cfg['network']
18
- @url = cfg['network']['url']
19
- @user = cfg['network']['rkuser']
20
- @password = cfg['network']['passwd']
21
- @chain = cfg['network']['chain']
22
-
23
- def self.variable
24
- net = @network
25
- return net
26
- end
27
-
28
- # Function to retrieve RecordsKeeper Blockchain parameters
29
- def self.getChainInfo
30
- auth = {:username => @user, :password => @password}
31
- options = {
32
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
33
- :basic_auth => auth,
34
- :body => [ {"method":"getblockchainparams","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
35
- }
36
- response = HTTParty.get(@url, options)
37
- out = response.parsed_response
38
- result = out[0]['result']
39
- chain_protocol = result['chain-protocol']
40
- chain_description = result['chain-description']
41
- root_stream = result['root-stream-name']
42
- max_blocksize = result['maximum-block-size']
43
- default_networkport = result['default-network-port']
44
- default_rpcport = result['default-rpc-port']
45
- mining_diversity = result['mining-diversity']
46
- chain_name = result['chain-name']
47
- info = {:chain_protocol => chain_protocol, :chain_description => chain_description, :root_stream => root_stream, :max_blocksize => max_blocksize, :default_networkport => default_networkport, :default_rpcport => default_rpcport, :mining_diversity => mining_diversity, :chain_name => chain_name} #returns chain parameters
48
- retrieved = JSON.generate info
49
- return retrieved
50
- end
51
-
52
- # Function to retrieve node's information on RecordsKeeper Blockchain
53
- def self.getNodeInfo
54
- auth = {:username => @user, :password => @password}
55
- options = {
56
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
57
- :basic_auth => auth,
58
- :body => [ {"method":"getinfo","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
59
- }
60
- response = HTTParty.get(@url, options)
61
- out = response.parsed_response
62
- node_balance = out[0]['result']['balance']
63
- synced_blocks = out[0]['result']['blocks']
64
- node_address = out[0]['result']['nodeaddress']
65
- difficulty = out[0]['result']['difficulty']
66
- info = {:node_balance => node_balance, :synced_blocks => synced_blocks,:node_address => node_address,:difficulty => difficulty} # Returns node's details
67
- retrieved = JSON.generate info
68
- return retrieved
69
- end
70
-
71
- # Function to retrieve node's permissions on RecordsKeeper Blockchain
72
- def self.permissions
73
- auth = {:username => @user, :password => @password}
74
- options = {
75
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
76
- :basic_auth => auth,
77
- :body => [ {"method":"listpermissions","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
78
- }
79
- response = HTTParty.get(@url, options)
80
- out = response.parsed_response
81
- pms_count_len = out[0]['result']
82
- pms_count = pms_count_len.length
83
- permissions = []
84
- for i in 0...pms_count
85
- permissions.push(out[0]['result'][i]['type'])
86
- end
87
- return permissions; # Returns list of permissions
88
- end
89
-
90
- # Function to retrieve pending transactions information on RecordsKeeper Blockchain
91
- def self.getpendingTransactions
92
- auth = {:username => @user, :password => @password}
93
- options = {
94
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
95
- :basic_auth => auth,
96
- :body => [ {"method":"getmempoolinfo","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
97
- }
98
- response = HTTParty.get(@url, options)
99
- out = response.parsed_response
100
- tx_count = out[0]['result']['size'] # Stores pending tx count
101
-
102
- if tx_count==0
103
- tx = "No pending transactions"
104
- else
105
- auth = {:username => @user, :password => @password}
106
- options = {
107
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
108
- :basic_auth => auth,
109
- :body => [ {"method":"getrawmempool","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
110
- }
111
- response2 = HTTParty.get(@url, options)
112
- out2 = response2.parsed_response
113
- tx = []
114
- for i in 0...tx_count
115
- tx.push(out2[0]['result'])
116
- end
117
- end
118
- pending = {:tx_count => tx_count,:tx => tx}
119
- pendingtransac = JSON.generate pending # Returns pending tx and tx count
120
- return pendingtransac
121
- end
122
-
123
- # Function to check node's total balance
124
- def self.checkNodeBalance
125
- auth = {:username => @user, :password => @password}
126
- options = {
127
- :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
128
- :basic_auth => auth,
129
- :body => [ {"method":"getmultibalances","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
130
- }
131
- response = HTTParty.get(@url, options)
132
- out = response.parsed_response
133
- balance = out[0]['result']['total'][0]['qty']
134
- return balance; # Returns balance of node
135
- end
136
- end
137
-
138
- end
1
+ # Library to work with RecordsKeeper Blockchain.
2
+
3
+ # You can retrieve blockchain information, node's information, node's balance, node's permissions, pending transaction details
4
+ # by using Blockchain class.
5
+ # You just have to pass parameters to invoke the pre-defined functions."""
6
+
7
+ require 'rubygems'
8
+ require 'httparty'
9
+ require 'json'
10
+ require 'binary_parser'
11
+ require 'yaml'
12
+
13
+ module RecordsKeeperRubyLib
14
+ class Blockchain
15
+
16
+ # # Entry point for accessing Blockchain class functions
17
+ if File.exist?('config.yaml')
18
+ # Import values from configuration file.
19
+ cfg = YAML::load(File.open('config.yaml','r'))
20
+
21
+ @url = cfg['url']
22
+ @user = cfg['rkuser']
23
+ @password = cfg['passwd']
24
+ @chain = cfg['chain']
25
+
26
+ else
27
+ #Import using ENV variables
28
+
29
+ @url = ENV['url']
30
+ @user = ENV['rkuser']
31
+ @password = ENV['passwd']
32
+ @chain = ENV['chain']
33
+ end
34
+
35
+ # Function to retrieve RecordsKeeper Blockchain parameters
36
+ def self.getChainInfo
37
+ auth = {:username => @user, :password => @password}
38
+ options = {
39
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
40
+ :basic_auth => auth,
41
+ :body => [ {"method":"getblockchainparams","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
42
+ }
43
+ response = HTTParty.get(@url, options)
44
+ out = response.parsed_response
45
+ result = out[0]['result']
46
+ chain_protocol = result['chain-protocol']
47
+ chain_description = result['chain-description']
48
+ root_stream = result['root-stream-name']
49
+ max_blocksize = result['maximum-block-size']
50
+ default_networkport = result['default-network-port']
51
+ default_rpcport = result['default-rpc-port']
52
+ mining_diversity = result['mining-diversity']
53
+ chain_name = result['chain-name']
54
+ info = {:chain_protocol => chain_protocol, :chain_description => chain_description, :root_stream => root_stream, :max_blocksize => max_blocksize, :default_networkport => default_networkport, :default_rpcport => default_rpcport, :mining_diversity => mining_diversity, :chain_name => chain_name} #returns chain parameters
55
+ retrieved = JSON.generate info
56
+ return retrieved
57
+ end
58
+
59
+ # Function to retrieve node's information on RecordsKeeper Blockchain
60
+ def self.getNodeInfo
61
+ auth = {:username => @user, :password => @password}
62
+ options = {
63
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
64
+ :basic_auth => auth,
65
+ :body => [ {"method":"getinfo","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
66
+ }
67
+ response = HTTParty.get(@url, options)
68
+ out = response.parsed_response
69
+ node_balance = out[0]['result']['balance']
70
+ synced_blocks = out[0]['result']['blocks']
71
+ node_address = out[0]['result']['nodeaddress']
72
+ difficulty = out[0]['result']['difficulty']
73
+ info = {:node_balance => node_balance, :synced_blocks => synced_blocks,:node_address => node_address,:difficulty => difficulty} # Returns node's details
74
+ retrieved = JSON.generate info
75
+ return retrieved
76
+ end
77
+
78
+ # Function to retrieve node's permissions on RecordsKeeper Blockchain
79
+ def self.permissions
80
+ auth = {:username => @user, :password => @password}
81
+ options = {
82
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
83
+ :basic_auth => auth,
84
+ :body => [ {"method":"listpermissions","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
85
+ }
86
+ response = HTTParty.get(@url, options)
87
+ out = response.parsed_response
88
+ pms_count_len = out[0]['result']
89
+ pms_count = pms_count_len.length
90
+ permissions = []
91
+ for i in 0...pms_count
92
+ permissions.push(out[0]['result'][i]['type'])
93
+ end
94
+
95
+ permissions_list = permissions.uniq
96
+ return permissions_list; # Returns list of permissions
97
+ end
98
+
99
+ # Function to retrieve pending transactions information on RecordsKeeper Blockchain
100
+ def self.getpendingTransactions
101
+ auth = {:username => @user, :password => @password}
102
+ options = {
103
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
104
+ :basic_auth => auth,
105
+ :body => [ {"method":"getmempoolinfo","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
106
+ }
107
+ response = HTTParty.get(@url, options)
108
+ out = response.parsed_response
109
+ tx_count = out[0]['result']['size'] # Stores pending tx count
110
+
111
+ if tx_count==0
112
+ tx = "No pending transactions"
113
+ else
114
+ auth = {:username => @user, :password => @password}
115
+ options = {
116
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
117
+ :basic_auth => auth,
118
+ :body => [ {"method":"getrawmempool","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
119
+ }
120
+ response2 = HTTParty.get(@url, options)
121
+ out2 = response2.parsed_response
122
+ tx = []
123
+ for i in 0...tx_count
124
+ tx.push(out2[0]['result'])
125
+ end
126
+ end
127
+ pending = {:tx_count => tx_count,:tx => tx}
128
+ pendingtransaction = JSON.generate pending # Returns pending tx and tx count
129
+ return pendingtransaction
130
+ end
131
+
132
+ # Function to check node's total balance
133
+ def self.checkNodeBalance
134
+ auth = {:username => @user, :password => @password}
135
+ options = {
136
+ :headers => headers= {"Content-Type"=> "application/json","Cache-Control" => "no-cache"},
137
+ :basic_auth => auth,
138
+ :body => [ {"method":"getmultibalances","params":[],"jsonrpc":2.0,"id":"curltext","chain_name":@chain}].to_json
139
+ }
140
+ response = HTTParty.get(@url, options)
141
+ out = response.parsed_response
142
+
143
+ balance = out[0]['result']['total'][-1]['qty']
144
+ return balance; # Returns balance of node
145
+ end
146
+ end
147
+
148
+ end