RecordsKeeperRubyLib 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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