web3 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 580e8c735123564ea15894cbf75ab42be2451b22
4
- data.tar.gz: 9b07d0cd09c9c798fe3ce79f2d59cbf1a4353c86
3
+ metadata.gz: 170e81fe01c157aa99753de652b20b05963b8c23
4
+ data.tar.gz: 534d468da62684106ec0fa5d3ed9e929237e8494
5
5
  SHA512:
6
- metadata.gz: 2bc85f68a6ffef72f5819e5c58ce37c4eaa94c037705f4c4b02175084e6f15a9a1264c78e06a8f4cd3e0eb2dde9b580601ff862e52e79070b9ac7a46db8ef1e5
7
- data.tar.gz: e0dff90efeff0e931faf48ccf88b8bff71da4d24164707d8cf0681a5ab84548f2ab2c535064a15457582de2f75011773b2bf2d734564ed154e3d880a03538ddc
6
+ metadata.gz: 624a8a9d52fc81f9055eb770dfbc91ff3bdd7d14a832c266a2f3e928622c98c67d31d467ff354d4cb4a8c8b6a4c38f0867d5daa982bc29996f36536cddbc472d
7
+ data.tar.gz: d0fd4cb84025506b00696b73d62e1ddc8bb394a800b65705496c1b828aebb5300d8b4d9487601f9894174e51923a8a763b8d3117ea004695769dd8a358fb0317
@@ -1,389 +1,4 @@
1
1
  module GeneratedWeb3Methods
2
2
 
3
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#web3_clientversion
4
- def web3_clientVersion()
5
- response = do_request("web3_clientVersion")
6
- response["result"]
7
- end
8
3
 
9
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#web3_sha3
10
- def web3_sha3(data)
11
- response = do_request("web3_sha3",[data])
12
- response["result"]
13
- end
14
-
15
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#net_version
16
- def net_version()
17
- response = do_request("net_version")
18
- response["result"]
19
- end
20
-
21
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#net_peercount
22
- def net_peerCount()
23
- response = do_request("net_peerCount")
24
- to_decimal response["result"]
25
- end
26
-
27
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#net_listening
28
- def net_listening()
29
- response = do_request("net_listening")
30
- response["result"]
31
- end
32
-
33
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_protocolversion
34
- def eth_protocolVersion()
35
- raise NotImplementedError.new "JSON-RPC call to eth_protocolVersion is not currently supported"
36
- end
37
-
38
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_syncing
39
- def eth_syncing()
40
- response = do_request("eth_syncing")
41
- response["result"]
42
- end
43
-
44
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_coinbase
45
- def eth_coinbase()
46
- response = do_request("eth_coinbase")
47
- response["result"]
48
- end
49
-
50
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_mining
51
- def eth_mining()
52
- response = do_request("eth_mining")
53
- response["result"]
54
- end
55
-
56
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_hashrate
57
- def eth_hashrate()
58
- response = do_request("eth_hashrate")
59
- to_decimal response["result"]
60
- end
61
-
62
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gasprice
63
- def eth_gasPrice()
64
- response = do_request("eth_gasPrice")
65
- to_decimal response["result"]
66
- end
67
-
68
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_accounts
69
- def eth_accounts()
70
- response = do_request("eth_accounts")
71
- response["result"]
72
- end
73
-
74
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_blocknumber
75
- def eth_blockNumber()
76
- response = do_request("eth_blockNumber")
77
- to_decimal response["result"]
78
- end
79
-
80
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getbalance
81
- def eth_getBalance(address, block = "latest")
82
- response = do_request("eth_getBalance",[address, block])
83
- to_decimal response["result"]
84
- end
85
-
86
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getstorageat
87
- def eth_getStorageAt(storage_address, position, block = "latest")
88
- response = do_request("eth_getStorageAt",[storage_address, to_hex(position), block])
89
- response["result"]
90
- end
91
-
92
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactioncount
93
- def eth_getTransactionCount(address, block = "latest")
94
- response = do_request("eth_getTransactionCount",[address, block])
95
- to_decimal response["result"]
96
- end
97
-
98
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblocktransactioncountbyhash
99
- def eth_getBlockTransactionCountByHash(data)
100
- response = do_request("eth_getBlockTransactionCountByHash",[data])
101
- to_decimal response["result"]
102
- end
103
-
104
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblocktransactioncountbynumber
105
- def eth_getBlockTransactionCountByNumber(block = "latest")
106
- response = do_request("eth_getBlockTransactionCountByNumber",[block])
107
- to_decimal response["result"]
108
- end
109
-
110
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getunclecountbyblockhash
111
- def eth_getUncleCountByBlockHash(data)
112
- response = do_request("eth_getUncleCountByBlockHash",[data])
113
- to_decimal response["result"]
114
- end
115
-
116
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getunclecountbyblocknumber
117
- def eth_getUncleCountByBlockNumber(data)
118
- response = do_request("eth_getUncleCountByBlockNumber",[data])
119
- to_decimal response["result"]
120
- end
121
-
122
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getcode
123
- def eth_getCode(address, block = "latest")
124
- response = do_request("eth_getCode",[address, block])
125
- response["result"]
126
- end
127
-
128
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign
129
- def eth_sign(address, data)
130
- response = do_request("eth_sign",[address, data])
131
- response["result"]
132
- end
133
-
134
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendtransaction
135
- def eth_sendTransaction(trans_object)
136
- response = do_request("eth_sendTransaction",[trans_object])
137
- response["result"]
138
- end
139
-
140
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendrawtransaction
141
- def eth_sendRawTransaction(data)
142
- response = do_request("eth_sendRawTransaction",[data])
143
- response["result"]
144
- end
145
-
146
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call
147
- def eth_call(trans_object,block)
148
- response = do_request("eth_call",[trans_object, block])
149
- response["result"]
150
- end
151
-
152
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_estimategas
153
- def eth_estimateGas(trans_object,block)
154
- response = do_request("eth_estimateGas",[trans_object, block])
155
- response["result"]
156
- end
157
-
158
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblockbyhash
159
- def eth_getBlockByHash(hash, full_transactions = true)
160
- response = do_request("eth_getBlockByHash",[hash, full_transactions])
161
- response["result"]
162
- end
163
-
164
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblockbynumber
165
- def eth_getBlockByNumber(number, full_transactions = true)
166
- response = do_request("eth_getBlockByNumber",[number, full_transactions])
167
- response["result"]
168
- end
169
-
170
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyhash
171
- def eth_getTransactionByHash(hash)
172
- response = do_request("eth_getTransactionByHash",[hash])
173
- response["result"]
174
- end
175
-
176
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyblockhashandindex
177
- def eth_getTransactionByBlockHashAndIndex(hash, index)
178
- response = do_request("eth_getTransactionByBlockHashAndIndex",[hash, index])
179
- response["result"]
180
- end
181
-
182
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyblocknumberandindex
183
- def eth_getTransactionByBlockNumberAndIndex(number, index)
184
- response = do_request("eth_getTransactionByBlockNumberAndIndex",[number, index])
185
- response["result"]
186
- end
187
-
188
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionreceipt
189
- def eth_getTransactionReceipt(hash)
190
- response = do_request("eth_getTransactionReceipt",[hash])
191
- response["result"]
192
- end
193
-
194
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getunclebyblockhashandindex
195
- def eth_getUncleByBlockHashAndIndex(hash, index)
196
- response = do_request("eth_getUncleByBlockHashAndIndex",[hash, index])
197
- response["result"]
198
- end
199
-
200
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getunclebyblocknumberandindex
201
- def eth_getUncleByBlockNumberAndIndex(number, index)
202
- response = do_request("eth_getUncleByBlockNumberAndIndex",[number, index])
203
- response["result"]
204
- end
205
-
206
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getcompilers
207
- def eth_getCompilers()
208
- response = do_request("eth_getCompilers")
209
- response["result"]
210
- end
211
-
212
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_compilelll
213
- def eth_compileLLL(code)
214
- response = do_request("eth_compileLLL",[code])
215
- response["result"]
216
- end
217
-
218
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_compilesolidity
219
- def eth_compileSolidity(code)
220
- response = do_request("eth_compileSolidity",[code])
221
- response["result"]
222
- end
223
-
224
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_compileserpent
225
- def eth_compileSerpent(code)
226
- response = do_request("eth_compileSerpent",[code])
227
- response["result"]
228
- end
229
-
230
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newfilter
231
- def eth_newFilter(fromBlock, toBlock, address, topics)
232
- response = do_request("$CODE",[fromBlock, toBlock, address, topics])
233
- to_decimal response["result"]
234
- end
235
-
236
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newblockfilter
237
- def eth_newBlockFilter()
238
- response = do_request("eth_newBlockFilter")
239
- to_decimal response["result"]
240
- end
241
-
242
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newpendingtransactionfilter
243
- def eth_newPendingTransactionFilter()
244
- response = do_request("eth_newPendingTransactionFilter")
245
- to_decimal response["result"]
246
- end
247
-
248
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_uninstallfilter
249
- def eth_uninstallFilter(id)
250
- response = do_request("eth_uninstallFilter",[id])
251
- response["result"]
252
- end
253
-
254
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterchanges
255
- def eth_getFilterChanges(id)
256
- response = do_request("eth_getFilterChanges",[id])
257
- response["result"]
258
- end
259
-
260
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterlogs
261
- def eth_getFilterLogs(id)
262
- response = do_request("eth_getFilterLogs",[id])
263
- response["result"]
264
- end
265
-
266
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getlogs
267
- def eth_getLogs(filter_obj)
268
- response = do_request("eth_getLogs",[filter_obj])
269
- response["result"]
270
- end
271
-
272
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getwork
273
- def eth_getWork()
274
- response = do_request("eth_getWork")
275
- response["result"]
276
- end
277
-
278
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_submitwork
279
- def eth_submitWork(nonce, powHash, mixDigest)
280
- response = do_request("eth_submitWork",[nonce, powHash, mixDigest])
281
- response["result"]
282
- end
283
-
284
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_submithashrate
285
- def eth_submitHashrate(hashrate, id)
286
- response = do_request("eth_submitHashrate",[hashrate, id])
287
- response["result"]
288
- end
289
-
290
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_version
291
- def shh_version()
292
- response = do_request("shh_version")
293
- response["result"]
294
- end
295
-
296
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_post
297
- def shh_post(post_object)
298
- response = do_request("shh_post",[post_object])
299
- response["result"]
300
- end
301
-
302
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_newidentity
303
- def shh_newIdentity()
304
- response = do_request("shh_newIdentity")
305
- response["result"]
306
- end
307
-
308
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_hasidentity
309
- def shh_hasIdentity(address)
310
- response = do_request("shh_hasIdentity",[address])
311
- response["result"]
312
- end
313
-
314
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_newgroup
315
- def shh_newGroup()
316
- response = do_request("shh_newGroup")
317
- response["result"]
318
- end
319
-
320
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_addtogroup
321
- def shh_addToGroup(address)
322
- response = do_request("shh_addToGroup",[address])
323
- response["result"]
324
- end
325
-
326
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_newfilter
327
- def shh_newFilter(filter_object)
328
- response = do_request("shh_newFilter",[filter_object])
329
- to_decimal response["result"]
330
- end
331
-
332
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_uninstallfilter
333
- def shh_uninstallFilter(id)
334
- response = do_request("shh_uninstallFilter",[id])
335
- response["result"]
336
- end
337
-
338
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_getfilterchanges
339
- def shh_getFilterChanges(id)
340
- response = do_request("shh_getFilterChanges",[id])
341
- response["result"]
342
- end
343
-
344
- # See https://github.com/ethereum/wiki/wiki/JSON-RPC#shh_getmessages
345
- def shh_getMessages(id)
346
- response = do_request("shh_getMessages",[id])
347
- response["result"]
348
- end
349
-
350
- # For web3 personal api - not activated by default in geth
351
- def personal_listAccounts()
352
- response = do_request("personal_listAccounts")
353
- response["result"]
354
- end
355
-
356
- # For web3 personal api - not activated by default in geth
357
- def personal_importRawKey(key, passphrase)
358
- response = do_request("personal_importRawKey",[key, passphrase])
359
- response["result"]
360
- end
361
-
362
- # For web3 personal api - not activated by default in geth
363
- def personal_newAccount(password)
364
- response = do_request("personal_newAccount",[password])
365
- response["result"]
366
- end
367
-
368
- # For web3 personal api - not activated by default in geth
369
- def personal_signAndSendTransaction(transaction, passphrase)
370
- response = do_request("personal_signAndSendTransaction",[transaction, passphrase])
371
- response["result"]
372
- end
373
-
374
- # For web3 personal api - not activated by default in geth
375
- def personal_lockAccount(account)
376
- response = do_request("personal_lockAccount",[account])
377
- response["result"]
378
- end
379
-
380
-
381
- # For web3 personal api
382
- # Be careful with this method. Do not leave an account unlocked, as that creates
383
- # an opportunity for an attacker to make transactions from that account. In general
384
- # personal_signAndSendTransaction is a better option than unlock -> send -> lock
385
- def personal_unlockAccount(account, passphrase, duration)
386
- response = do_request("personal_unlockAccount",[account, passphrase, duration])
387
- response["result"]
388
- end
389
4
  end
data/lib/web3.rb CHANGED
@@ -9,13 +9,17 @@ class Web3
9
9
  @@jsonrpc = "2.0"
10
10
  @@debug = ENV["ETH_DEBUG"] || false
11
11
 
12
+ # the default endpoint is http://localhost:8545 and default client id is 999
13
+ # these can be set as envioronment variables - ETH_ENDPOINT and ETH_DEFAULT_CLIENT_ID
12
14
  def initialize( endpoint = ENV["ETH_ENDPOINT"] || "http://localhost:8545",
13
15
  id = ENV["ETH_DEFAULT_CLIENT_ID"] || 999)
14
16
  @endpoint = endpoint
15
17
  @id = id
16
18
  end
17
19
 
18
- def do_request(method, params = [], id = @id) #TODO: More error handling
20
+ # this is the method responsible for communicating with the endpoint
21
+ # it gets called by all the action-specific methods
22
+ def do_request(method, params = [], id = @id)
19
23
  request_json = { :jsonrpc => @@jsonrpc,
20
24
  :method => method,
21
25
  :params => params,
@@ -51,11 +55,31 @@ class Web3
51
55
  end
52
56
 
53
57
  # JSON RPC FUNCTION CALLS INCLUDED HERE
54
- require_relative "generated_web3_methods.rb"
55
- include GeneratedWeb3Methods
58
+ # require_relative "generated_web3_methods.rb"
59
+ # include GeneratedWeb3Methods
60
+
61
+ require_relative "web3_calls.rb"
62
+ include Web3::Web3Calls
63
+
64
+ require_relative "net_calls.rb"
65
+ include Web3::NetCalls
66
+
67
+ require_relative "eth_calls.rb"
68
+ include Web3::EthCalls
69
+
70
+ require_relative "shh_calls.rb"
71
+ include Web3::ShhCalls
72
+
73
+ require_relative "personal_calls.rb"
74
+ include Web3::PersonalCalls
75
+
76
+ require_relative "txpool_calls.rb"
77
+ include Web3::TxpoolCalls
56
78
 
57
79
 
58
80
  #Utility methods
81
+
82
+ # Converts a hex string or int to a decimal integer
59
83
  def to_decimal(hex)
60
84
  if hex == nil
61
85
  return nil
@@ -66,6 +90,7 @@ class Web3
66
90
  hex.to_i(16)
67
91
  end
68
92
 
93
+ # Converts a decimal integer to a hex string
69
94
  def to_hex(decimal)
70
95
  if decimal == nil
71
96
  return nil
@@ -73,21 +98,26 @@ class Web3
73
98
  if decimal.is_a?(String)
74
99
  return decimal
75
100
  end
76
- decimal.to_s(16)
101
+ decimal.to_s(16) #this will throw an error if a non-integer is used
77
102
  end
78
103
 
104
+
105
+ # Converts a decimal integer to a hex string that starts with a 0x marker
79
106
  def to_0x(decimal)
80
107
  "0x" + to_hex(decimal)
81
108
  end
82
109
 
110
+ # Converts wei to ether
83
111
  def wei_to_ether(wei)
84
112
  1.0 * wei / 10**18
85
113
  end
86
114
 
115
+ # Converts either to wei
87
116
  def ether_to_wei(ether)
88
117
  (ether * 10**18).round()
89
118
  end
90
119
 
120
+ # Converts either to wei a hex-formatted string, including the 0x indicator
91
121
  def ether_to_0xwei(ether)
92
122
  to_0x(ether_to_wei(ether))
93
123
  end
@@ -109,6 +139,14 @@ class Web3
109
139
  personal_signAndSendTransaction(trans, password)
110
140
  end
111
141
 
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
112
150
  end
113
151
 
114
152
  w3 = Web3. new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Spike Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-30 00:00:00.000000000 Z
11
+ date: 2017-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hanna-nouveau