etherscan-lite 0.0.1 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8268ce22467ea0136543b35e4595ff60b51e009dd7d60559f3cf858541ed1e24
4
- data.tar.gz: 66da1fc606dd316d7640e8e45dc99fc0ea7bd81a4c61cbfa6003707ac3a4b334
3
+ metadata.gz: edbdb29fdae2d064fbf9d6513b2747ecba5058ef8449d3e430c67be2a2aaa4da
4
+ data.tar.gz: febad888db3cf78c34e78f46ff09bea7555f2ad0ba030b6146172f5fab03e23d
5
5
  SHA512:
6
- metadata.gz: 3a2ce94118461adce95f7fd3b3992f44c89f0f479b28e145eb2cc0c0d76e4a5fa78d11a3e603b6a4f871a548c9e1349c5908d0931e3a2067ee5082faf730a88c
7
- data.tar.gz: 26c59cb4af1fcfd8b0454964748762d60ea466d3b9fd2e9736789564f841e4fef054a353ed5b2ebabc10bc5e06f116f61db75f362b1a91a1a7de4b15c3489f86
6
+ metadata.gz: 8a545c314b42eb7ed7531e79aac0b3a3d495cb3557fcd4f204421154f7b4a1742064552628045af78ff68573e69a44b4ba1e790461507ce26eed2b25990795f4
7
+ data.tar.gz: 5e66dd8e43960e491b0b2746a38dfeee2a37d6d1b5dfe5c62e1e1d9dd717f752c3973bbf1da4121ae4c7c58f8c87185f565e4ff45b259c0324c18f71383c4ec8
data/Manifest.txt CHANGED
@@ -5,4 +5,7 @@ Rakefile
5
5
  lib/etherscan-lite.rb
6
6
  lib/etherscan-lite/account.rb
7
7
  lib/etherscan-lite/base.rb
8
+ lib/etherscan-lite/contract.rb
9
+ lib/etherscan-lite/misc.rb
10
+ lib/etherscan-lite/proxy.rb
8
11
  lib/etherscan-lite/version.rb
data/README.md CHANGED
@@ -59,44 +59,44 @@ pp data
59
59
  resulting in:
60
60
 
61
61
  ``` json
62
- [{"blockNumber"=>"16191306",
63
- "timeStamp"=>"1671121931",
64
- "hash"=>"0x77361870fdc3046f7c24cabafa7185a84d60f4fa12aef8363e8520fbdd003cc7",
65
- "nonce"=>"4866500",
66
- "blockHash"=>"0x1f5d2e10774bd5473257ad0f47d08b3e523e3baace6f0218bce8aab62e90ec67",
67
- "from"=>"0xdfd5293d8e347dfe59e90efd55b2956a1343963d",
68
- "contractAddress"=>"0xdac17f958d2ee523a2206206994597c13d831ec7",
69
- "to"=>"0x40fbc37ff0e4d3f900b867f2ca48ae6aba77c854",
70
- "value"=>"495264069",
71
- "tokenName"=>"Tether USD",
72
- "tokenSymbol"=>"USDT",
73
- "tokenDecimal"=>"6",
74
- "transactionIndex"=>"44",
75
- "gas"=>"207128",
76
- "gasPrice"=>"31567202036",
77
- "gasUsed"=>"63197",
78
- "cumulativeGasUsed"=>"5207555",
79
- "input"=>"deprecated",
80
- "confirmations"=>"3"},
81
- {"blockNumber"=>"16191304",
82
- "timeStamp"=>"1671121907",
83
- "hash"=>"0xd3d529d0d420e38680ad9066a5d62434a04b01e94b00b81fc5fea303afbda076",
84
- "nonce"=>"4866498",
85
- "blockHash"=>"0x9b2dfbfd068c90546c7572bc059cd790e12eb6b9f9b21a3c7c33e0abd8d69d6c",
86
- "from"=>"0xdfd5293d8e347dfe59e90efd55b2956a1343963d",
87
- "contractAddress"=>"0xdac17f958d2ee523a2206206994597c13d831ec7",
88
- "to"=>"0xf7140bb010da74a191e3c98f801e596937f177fb",
89
- "value"=>"4496800000",
90
- "tokenName"=>"Tether USD",
91
- "tokenSymbol"=>"USDT",
92
- "tokenDecimal"=>"6",
93
- "transactionIndex"=>"57",
94
- "gas"=>"207128",
95
- "gasPrice"=>"32759178674",
96
- "gasUsed"=>"46109",
97
- "cumulativeGasUsed"=>"3775818",
98
- "input"=>"deprecated",
99
- "confirmations"=>"5"},
62
+ [{"blockNumber": "16191306",
63
+ "timeStamp": "1671121931",
64
+ "hash": "0x77361870fdc3046f7c24cabafa7185a84d60f4fa12aef8363e8520fbdd003cc7",
65
+ "nonce": "4866500",
66
+ "blockHash": "0x1f5d2e10774bd5473257ad0f47d08b3e523e3baace6f0218bce8aab62e90ec67",
67
+ "from": "0xdfd5293d8e347dfe59e90efd55b2956a1343963d",
68
+ "contractAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7",
69
+ "to": "0x40fbc37ff0e4d3f900b867f2ca48ae6aba77c854",
70
+ "value": "495264069",
71
+ "tokenName": "Tether USD",
72
+ "tokenSymbol": "USDT",
73
+ "tokenDecimal": "6",
74
+ "transactionIndex": "44",
75
+ "gas": "207128",
76
+ "gasPrice": "31567202036",
77
+ "gasUsed": "63197",
78
+ "cumulativeGasUsed": "5207555",
79
+ "input": "deprecated",
80
+ "confirmations": "3"},
81
+ {"blockNumber": "16191304",
82
+ "timeStamp": "1671121907",
83
+ "hash": "0xd3d529d0d420e38680ad9066a5d62434a04b01e94b00b81fc5fea303afbda076",
84
+ "nonce": "4866498",
85
+ "blockHash": "0x9b2dfbfd068c90546c7572bc059cd790e12eb6b9f9b21a3c7c33e0abd8d69d6c",
86
+ "from": "0xdfd5293d8e347dfe59e90efd55b2956a1343963d",
87
+ "contractAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7",
88
+ "to": "0xf7140bb010da74a191e3c98f801e596937f177fb",
89
+ "value": "4496800000",
90
+ "tokenName": "Tether USD",
91
+ "tokenSymbol": "USDT",
92
+ "tokenDecimal": "6",
93
+ "transactionIndex": "57",
94
+ "gas": "207128",
95
+ "gasPrice": "32759178674",
96
+ "gasUsed": "46109",
97
+ "cumulativeGasUsed": "3775818",
98
+ "input": "deprecated",
99
+ "confirmations": "5"},
100
100
  ...
101
101
  ]
102
102
  ```
@@ -127,16 +127,16 @@ end
127
127
  resulting in:
128
128
 
129
129
  ```
130
- [0] 2022-12-15 16:32:11 UTC - Tether USD (USDT) 495.264069 (495264069) - from: 0xdfd5293d8 to: 0x40fbc37ff - txid: 0x7736187
131
- [1] 2022-12-15 16:31:47 UTC - Tether USD (USDT) 4496.800000 (4496800000) - from: 0xdfd5293d8 to: 0xf7140bb01 - txid: 0xd3d529d
132
- [2] 2022-12-15 16:31:11 UTC - Tether USD (USDT) 1496.800000 (1496800000) - from: 0xdfd5293d8 to: 0xcab0e46b1 - txid: 0x0b7986d
133
- [3] 2022-12-15 16:31:11 UTC - Tether USD (USDT) 122.800000 (122800000) - from: 0xdfd5293d8 to: 0xcc38c0e6f - txid: 0x8894af7
134
- [4] 2022-12-15 16:30:35 UTC - Tether USD (USDT) 22953.971400 (22953971400) - from: 0xdfd5293d8 to: 0xccb95ec69 - txid: 0x0bb6b75
135
- [5] 2022-12-15 16:30:11 UTC - Tether USD (USDT) 254.743920 (254743920) - from: 0xdfd5293d8 to: 0x68f2a6311 - txid: 0xf691bed
136
- [6] 2022-12-15 16:29:35 UTC - Tether USD (USDT) 548.950317 (548950317) - from: 0xdfd5293d8 to: 0xaa00cd50e - txid: 0x847854b
137
- [7] 2022-12-15 16:29:11 UTC - Tether USD (USDT) 33667.697868 (33667697868) - from: 0xdfd5293d8 to: 0xcfb27a23f - txid: 0x7a2390d
138
- [8] 2022-12-15 16:28:59 UTC - Tether USD (USDT) 48126.270731 (48126270731) - from: 0xdfd5293d8 to: 0x09857b83a - txid: 0x0653035
139
- [9] 2022-12-15 16:28:35 UTC - Tether USD (USDT) 15996.800000 (15996800000) - from: 0xdfd5293d8 to: 0xd8d6ffe34 - txid: 0xb02d04b
130
+ [0] 2022-12-15 16:32:11 UTC - Tether USD (USDT) 495.264069 (495264069) - from: 0xdfd5293d8 to: 0x40fbc37ff - txid: 0x7736187
131
+ [1] 2022-12-15 16:31:47 UTC - Tether USD (USDT) 4496.800000 (4496800000) - from: 0xdfd5293d8 to: 0xf7140bb01 - txid: 0xd3d529d
132
+ [2] 2022-12-15 16:31:11 UTC - Tether USD (USDT) 1496.800000 (1496800000) - from: 0xdfd5293d8 to: 0xcab0e46b1 - txid: 0x0b7986d
133
+ [3] 2022-12-15 16:31:11 UTC - Tether USD (USDT) 122.800000 (122800000) - from: 0xdfd5293d8 to: 0xcc38c0e6f - txid: 0x8894af7
134
+ [4] 2022-12-15 16:30:35 UTC - Tether USD (USDT) 22953.971400 (22953971400) - from: 0xdfd5293d8 to: 0xccb95ec69 - txid: 0x0bb6b75
135
+ [5] 2022-12-15 16:30:11 UTC - Tether USD (USDT) 254.743920 (254743920) - from: 0xdfd5293d8 to: 0x68f2a6311 - txid: 0xf691bed
136
+ [6] 2022-12-15 16:29:35 UTC - Tether USD (USDT) 548.950317 (548950317) - from: 0xdfd5293d8 to: 0xaa00cd50e - txid: 0x847854b
137
+ [7] 2022-12-15 16:29:11 UTC - Tether USD (USDT) 33667.697868 (33667697868) - from: 0xdfd5293d8 to: 0xcfb27a23f - txid: 0x7a2390d
138
+ [8] 2022-12-15 16:28:59 UTC - Tether USD (USDT) 48126.270731 (48126270731) - from: 0xdfd5293d8 to: 0x09857b83a - txid: 0x0653035
139
+ [9] 2022-12-15 16:28:35 UTC - Tether USD (USDT) 15996.800000 (15996800000) - from: 0xdfd5293d8 to: 0xd8d6ffe34 - txid: 0xb02d04b
140
140
  ```
141
141
 
142
142
 
@@ -156,44 +156,44 @@ pp data
156
156
  resulting in:
157
157
 
158
158
  ``` json
159
- [{"blockNumber"=>"16191303",
160
- "timeStamp"=>"1671121895",
161
- "hash"=>"0xf049e3247e19e2eca1971f6daa38e7310bf2705b7da6347b9801122eef57f30e",
162
- "nonce"=>"16348",
163
- "blockHash"=>"0x2ec6abfc229cb61b7a851d9e078e93681634cf0b2b3390a54f6fa21e8d10cd04",
164
- "from"=>"0x8ae57a027c63fca8070d1bf38622321de8004c67",
165
- "contractAddress"=>"0x23581767a106ae21c074b2276d25e5c3e136a68b",
166
- "to"=>"0xdc3276739390e3fdf7929056593d2ce316ebcfa8",
167
- "tokenID"=>"2934",
168
- "tokenName"=>"Moonbirds",
169
- "tokenSymbol"=>"MOONBIRD",
170
- "tokenDecimal"=>"0",
171
- "transactionIndex"=>"150",
172
- "gas"=>"168819",
173
- "gasPrice"=>"30350829601",
174
- "gasUsed"=>"64019",
175
- "cumulativeGasUsed"=>"16664047",
176
- "input"=>"deprecated",
177
- "confirmations"=>"25"},
178
- {"blockNumber"=>"16191297",
179
- "timeStamp"=>"1671121823",
180
- "hash"=>"0xb341b32b2c8904733c05648f67c09c99602a22b454f6f99b68746eb204c8f235",
181
- "nonce"=>"4310",
182
- "blockHash"=>"0x8774a12b660e59586ae94af1670362d2c73d09c94230f236859548ae0768f387",
183
- "from"=>"0x8bc110db7029197c3621bea8092ab1996d5dd7be",
184
- "contractAddress"=>"0x23581767a106ae21c074b2276d25e5c3e136a68b",
185
- "to"=>"0x6ce2eb1c3006850ebbb97499f1a25b8ce6c01a44",
186
- "tokenID"=>"9836",
187
- "tokenName"=>"Moonbirds",
188
- "tokenSymbol"=>"MOONBIRD",
189
- "tokenDecimal"=>"0",
190
- "transactionIndex"=>"15",
191
- "gas"=>"3576346",
192
- "gasPrice"=>"35958543341",
193
- "gasUsed"=>"2751035",
194
- "cumulativeGasUsed"=>"3999647",
195
- "input"=>"deprecated",
196
- "confirmations"=>"31"},
159
+ [{"blockNumber": "16191303",
160
+ "timeStamp": "1671121895",
161
+ "hash": "0xf049e3247e19e2eca1971f6daa38e7310bf2705b7da6347b9801122eef57f30e",
162
+ "nonce": "16348",
163
+ "blockHash": "0x2ec6abfc229cb61b7a851d9e078e93681634cf0b2b3390a54f6fa21e8d10cd04",
164
+ "from": "0x8ae57a027c63fca8070d1bf38622321de8004c67",
165
+ "contractAddress": "0x23581767a106ae21c074b2276d25e5c3e136a68b",
166
+ "to": "0xdc3276739390e3fdf7929056593d2ce316ebcfa8",
167
+ "tokenID": "2934",
168
+ "tokenName": "Moonbirds",
169
+ "tokenSymbol": "MOONBIRD",
170
+ "tokenDecimal": "0",
171
+ "transactionIndex": "150",
172
+ "gas": "168819",
173
+ "gasPrice": "30350829601",
174
+ "gasUsed": "64019",
175
+ "cumulativeGasUsed": "16664047",
176
+ "input": "deprecated",
177
+ "confirmations": "25"},
178
+ {"blockNumber": "16191297",
179
+ "timeStamp": "1671121823",
180
+ "hash": "0xb341b32b2c8904733c05648f67c09c99602a22b454f6f99b68746eb204c8f235",
181
+ "nonce": "4310",
182
+ "blockHash": "0x8774a12b660e59586ae94af1670362d2c73d09c94230f236859548ae0768f387",
183
+ "from": "0x8bc110db7029197c3621bea8092ab1996d5dd7be",
184
+ "contractAddress": "0x23581767a106ae21c074b2276d25e5c3e136a68b",
185
+ "to": "0x6ce2eb1c3006850ebbb97499f1a25b8ce6c01a44",
186
+ "tokenID": "9836",
187
+ "tokenName": "Moonbirds",
188
+ "tokenSymbol": "MOONBIRD",
189
+ "tokenDecimal": "0",
190
+ "transactionIndex": "15",
191
+ "gas": "3576346",
192
+ "gasPrice": "35958543341",
193
+ "gasUsed": "2751035",
194
+ "cumulativeGasUsed": "3999647",
195
+ "input": "deprecated",
196
+ "confirmations": "31"},
197
197
  ...
198
198
  ]
199
199
  ```
@@ -217,16 +217,16 @@ end
217
217
  resulting in:
218
218
 
219
219
  ```
220
- [0] 2022-12-15 16:31:35 UTC - Moonbirds 2934 - from: 0x8ae57a027 to: 0xdc3276739 - txid: 0xf049e32
221
- [1] 2022-12-15 16:30:23 UTC - Moonbirds 9836 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
222
- [2] 2022-12-15 16:30:23 UTC - Moonbirds 9378 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
223
- [3] 2022-12-15 16:30:23 UTC - Moonbirds 9059 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
224
- [4] 2022-12-15 16:30:23 UTC - Moonbirds 8199 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
225
- [5] 2022-12-15 16:30:23 UTC - Moonbirds 7800 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
226
- [6] 2022-12-15 16:30:23 UTC - Moonbirds 5952 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
227
- [7] 2022-12-15 16:30:23 UTC - Moonbirds 5868 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
228
- [8] 2022-12-15 16:30:23 UTC - Moonbirds 5853 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
229
- [9] 2022-12-15 16:30:23 UTC - Moonbirds 501 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
220
+ [0] 2022-12-15 16:31:35 UTC - Moonbirds 2934 - from: 0x8ae57a027 to: 0xdc3276739 - txid: 0xf049e32
221
+ [1] 2022-12-15 16:30:23 UTC - Moonbirds 9836 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
222
+ [2] 2022-12-15 16:30:23 UTC - Moonbirds 9378 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
223
+ [3] 2022-12-15 16:30:23 UTC - Moonbirds 9059 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
224
+ [4] 2022-12-15 16:30:23 UTC - Moonbirds 8199 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
225
+ [5] 2022-12-15 16:30:23 UTC - Moonbirds 7800 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
226
+ [6] 2022-12-15 16:30:23 UTC - Moonbirds 5952 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
227
+ [7] 2022-12-15 16:30:23 UTC - Moonbirds 5868 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
228
+ [8] 2022-12-15 16:30:23 UTC - Moonbirds 5853 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
229
+ [9] 2022-12-15 16:30:23 UTC - Moonbirds 501 - from: 0x8bc110db7 to: 0x6ce2eb1c3 - txid: 0xb341b32
230
230
  ```
231
231
 
232
232
 
@@ -249,46 +249,46 @@ resulting in:
249
249
 
250
250
 
251
251
  ``` json
252
- [{"blockNumber"=>"16191330",
253
- "timeStamp"=>"1671122219",
254
- "hash"=>"0xea692b153ec048322dd6dc0a42fba45a0f06b2bd0e6888c7e42edbc629689f00",
255
- "nonce"=>"998",
256
- "blockHash"=>"0x3c3a23b78fd1522f9f9ed5a1fc45d5a7d1d71327961c77d164c0eeb1e72b4322",
257
- "transactionIndex"=>"244",
258
- "from"=>"0xae4705dc0816ee6d8a13f1c72780ec5021915fed",
259
- "to"=>"0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f",
260
- "value"=>"420690000000000000",
261
- "gas"=>"92219",
262
- "gasPrice"=>"26218969764",
263
- "isError"=>"0",
264
- "txreceipt_status"=>"1",
265
- "input"=>"0x439370b1",
266
- "contractAddress"=>"",
267
- "cumulativeGasUsed"=>"18496407",
268
- "gasUsed"=>"91261",
269
- "confirmations"=>"16",
270
- "methodId"=>"0x439370b1",
271
- "functionName"=>"depositEth()"},
272
- {"blockNumber"=>"16191327",
273
- "timeStamp"=>"1671122183",
274
- "hash"=>"0x8a82fc0e7ac1fb588f1ee248810d518bc03dfb4e938160c6502f949fcc16054c",
275
- "nonce"=>"2",
276
- "blockHash"=>"0xb533b2cd157369414839c58b74319bf32400dd6521b5d945eb7ac405d0600203",
277
- "transactionIndex"=>"78",
278
- "from"=>"0x338b8d83e644689a0ea90f04e0efa144fccfb3c7",
279
- "to"=>"0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f",
280
- "value"=>"19000000000000000",
281
- "gas"=>"92219",
282
- "gasPrice"=>"29492008048",
283
- "isError"=>"0",
284
- "txreceipt_status"=>"1",
285
- "input"=>"0x439370b1",
286
- "contractAddress"=>"",
287
- "cumulativeGasUsed"=>"7020870",
288
- "gasUsed"=>"91261",
289
- "confirmations"=>"19",
290
- "methodId"=>"0x439370b1",
291
- "functionName"=>"depositEth()"},
252
+ [{"blockNumber": "16191330",
253
+ "timeStamp": "1671122219",
254
+ "hash": "0xea692b153ec048322dd6dc0a42fba45a0f06b2bd0e6888c7e42edbc629689f00",
255
+ "nonce": "998",
256
+ "blockHash": "0x3c3a23b78fd1522f9f9ed5a1fc45d5a7d1d71327961c77d164c0eeb1e72b4322",
257
+ "transactionIndex": "244",
258
+ "from": "0xae4705dc0816ee6d8a13f1c72780ec5021915fed",
259
+ "to": "0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f",
260
+ "value": "420690000000000000",
261
+ "gas": "92219",
262
+ "gasPrice": "26218969764",
263
+ "isError": "0",
264
+ "txreceipt_status": "1",
265
+ "input": "0x439370b1",
266
+ "contractAddress": "",
267
+ "cumulativeGasUsed": "18496407",
268
+ "gasUsed": "91261",
269
+ "confirmations": "16",
270
+ "methodId": "0x439370b1",
271
+ "functionName": "depositEth()"},
272
+ {"blockNumber": "16191327",
273
+ "timeStamp": "1671122183",
274
+ "hash": "0x8a82fc0e7ac1fb588f1ee248810d518bc03dfb4e938160c6502f949fcc16054c",
275
+ "nonce": "2",
276
+ "blockHash": "0xb533b2cd157369414839c58b74319bf32400dd6521b5d945eb7ac405d0600203",
277
+ "transactionIndex": "78",
278
+ "from": "0x338b8d83e644689a0ea90f04e0efa144fccfb3c7",
279
+ "to": "0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f",
280
+ "value": "19000000000000000",
281
+ "gas": "92219",
282
+ "gasPrice": "29492008048",
283
+ "isError": "0",
284
+ "txreceipt_status": "1",
285
+ "input": "0x439370b1",
286
+ "contractAddress": "",
287
+ "cumulativeGasUsed": "7020870",
288
+ "gasUsed": "91261",
289
+ "confirmations": "19",
290
+ "methodId": "0x439370b1",
291
+ "functionName": "depositEth()"},
292
292
  ...
293
293
  ]
294
294
  ```
@@ -322,16 +322,16 @@ end
322
322
  resulting in:
323
323
 
324
324
  ```
325
- [0] 2022-12-15 16:36:59 UTC - depositEth() 0.420690000000000000 (420690000000000000) - from: 0xae4705dc0 to: 0x4dbd4fc53 - txid: 0xea692b1
326
- [1] 2022-12-15 16:36:23 UTC - depositEth() 0.019000000000000000 (19000000000000000) - from: 0x338b8d83e to: 0x4dbd4fc53 - txid: 0x8a82fc0
327
- [2] 2022-12-15 16:35:23 UTC - depositEth() 0.040000000000000000 (40000000000000000) - from: 0x63e1c7edc to: 0x4dbd4fc53 - txid: 0x46bc422
328
- [3] 2022-12-15 16:34:23 UTC - depositEth() 0.003330000000000000 (3330000000000000) - from: 0xe29abe7f8 to: 0x4dbd4fc53 - txid: 0x2fbd49e
329
- [4] 2022-12-15 16:34:23 UTC - depositEth() 0.022398548608559353 (22398548608559353) - from: 0x3dbcf6a3d to: 0x4dbd4fc53 - txid: 0xc311e3f
330
- [5] 2022-12-15 16:32:23 UTC - depositEth() 0.195713000000000000 (195713000000000000) - from: 0xc7099c3ed to: 0x4dbd4fc53 - txid: 0x4a2f2e4
331
- [6] 2022-12-15 16:31:23 UTC - depositEth() 0.100000000000000000 (100000000000000000) - from: 0x78cea29ac to: 0x4dbd4fc53 - txid: 0xedc3793
332
- [7] 2022-12-15 16:28:35 UTC - depositEth() 2.406000000000000000 (2406000000000000000) - from: 0xa59192967 to: 0x4dbd4fc53 - txid: 0xde20917
333
- [8] 2022-12-15 16:28:23 UTC - depositEth() 0.030000000000000000 (30000000000000000) - from: 0x03a64c941 to: 0x4dbd4fc53 - txid: 0xc813c01
334
- [9] 2022-12-15 16:27:35 UTC - depositEth() 0.004000000000000000 (4000000000000000) - from: 0x614d071bf to: 0x4dbd4fc53 - txid: 0xb24df57
325
+ [0] 2022-12-15 16:36:59 UTC - depositEth() 0.420690000000000000 (420690000000000000) - from: 0xae4705dc0 to: 0x4dbd4fc53 - txid: 0xea692b1
326
+ [1] 2022-12-15 16:36:23 UTC - depositEth() 0.019000000000000000 (19000000000000000) - from: 0x338b8d83e to: 0x4dbd4fc53 - txid: 0x8a82fc0
327
+ [2] 2022-12-15 16:35:23 UTC - depositEth() 0.040000000000000000 (40000000000000000) - from: 0x63e1c7edc to: 0x4dbd4fc53 - txid: 0x46bc422
328
+ [3] 2022-12-15 16:34:23 UTC - depositEth() 0.003330000000000000 (3330000000000000) - from: 0xe29abe7f8 to: 0x4dbd4fc53 - txid: 0x2fbd49e
329
+ [4] 2022-12-15 16:34:23 UTC - depositEth() 0.022398548608559353 (22398548608559353) - from: 0x3dbcf6a3d to: 0x4dbd4fc53 - txid: 0xc311e3f
330
+ [5] 2022-12-15 16:32:23 UTC - depositEth() 0.195713000000000000 (195713000000000000) - from: 0xc7099c3ed to: 0x4dbd4fc53 - txid: 0x4a2f2e4
331
+ [6] 2022-12-15 16:31:23 UTC - depositEth() 0.100000000000000000 (100000000000000000) - from: 0x78cea29ac to: 0x4dbd4fc53 - txid: 0xedc3793
332
+ [7] 2022-12-15 16:28:35 UTC - depositEth() 2.406000000000000000 (2406000000000000000) - from: 0xa59192967 to: 0x4dbd4fc53 - txid: 0xde20917
333
+ [8] 2022-12-15 16:28:23 UTC - depositEth() 0.030000000000000000 (30000000000000000) - from: 0x03a64c941 to: 0x4dbd4fc53 - txid: 0xc813c01
334
+ [9] 2022-12-15 16:27:35 UTC - depositEth() 0.004000000000000000 (4000000000000000) - from: 0x614d071bf to: 0x4dbd4fc53 - txid: 0xb24df57
335
335
  ```
336
336
 
337
337
  and so on.
@@ -2,56 +2,92 @@ module Etherscan
2
2
  BASE = 'https://api.etherscan.io/api'
3
3
 
4
4
 
5
-
6
-
7
5
  def self.call( src ) ## get response as (parsed) json (hash table)
8
- uri = URI.parse( src )
9
-
10
- http = Net::HTTP.new( uri.host, uri.port )
11
-
12
- puts "[debug] GET #{uri.request_uri} uri=#{uri}"
13
6
 
14
7
  headers = {
15
8
  # 'User-Agent' => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
16
9
  'User-Agent' => "ruby v#{RUBY_VERSION}",
17
10
  }
18
11
 
12
+ response = Webclient.get( src, headers: headers )
19
13
 
20
- request = Net::HTTP::Get.new( uri.request_uri, headers )
21
- if uri.instance_of? URI::HTTPS
22
- http.use_ssl = true
23
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
24
- end
25
-
26
- response = http.request( request )
27
-
28
- if response.code == '200'
29
- puts "#{response.code} #{response.message} - content_type: #{response.content_type}, content_length: #{response.content_length}"
14
+ if response.status.ok?
15
+ puts "#{response.status.code} #{response.status.message} - content_type: #{response.content_type}, content_length: #{response.content_length}"
30
16
 
31
- text = response.body.to_s
32
- text = text.force_encoding( Encoding::UTF_8 )
33
-
34
- data = JSON.parse( text )
35
- data
17
+ data = response.json
36
18
 
37
19
  ## note: "unwrap" result - and auto-check status/message e.g.
38
20
  ## {"status"=>"1",
39
21
  ## "message"=>"OK",
40
22
  ## "result"=> ..
41
23
  ## }
42
- if data['status'] == '1' && data['message'] == 'OK'
43
- puts "#{data['status']} #{data['message']}"
44
- data['result']
24
+ ##
25
+ ## An API call that encounters an error will return 0 as its status code and display the cause of the error under the result field.
26
+ ## {
27
+ ## "status":"0",
28
+ ## "message":"NOTOK",
29
+ ## "result":"Max rate limit reached, please use API Key for higher rate limit"
30
+ ## }
31
+
32
+ ##
33
+ # note: add special error handling case for no transaction found!!
34
+ # ==> [8] query 0x01c59869B44F3Fc5420dbB9166a735CdC020E9Ae...
35
+ # [debug] GET /api?module=account&action=txlist&address=...
36
+ # 200 OK - content_type: application/json, content_length: 172
37
+ # !! ETHERSCAN API ERROR:
38
+ # 0 No transactions found - []
39
+
40
+ if data['status'] == '0' && data['message'] == 'No transactions found' && data['result'].empty?
41
+ data['result']
42
+ elsif data['status'] == '1' && data['message'] == 'OK'
43
+ ## puts "#{data['status']} #{data['message']}"
44
+ data['result']
45
45
  else
46
46
  puts "!! ETHERSCAN API ERROR:"
47
- puts "#{data['status']} #{data['message']}"
47
+ puts "#{data['status']} #{data['message']} - #{data['result']}"
48
48
  exit 1
49
49
  end
50
50
  else
51
- puts "!! ERROR:"
52
- puts "#{response.code} #{response.message}"
51
+ puts "!! HTTP ERROR:"
52
+ puts "#{response.status.code} #{response.status.message}"
53
53
  exit 1
54
54
  end
55
55
  end
56
56
 
57
+
58
+ def self.proxy_call( src ) ## get response as (parsed) json (hash table)
59
+
60
+ headers = {
61
+ # 'User-Agent' => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
62
+ 'User-Agent' => "ruby v#{RUBY_VERSION}",
63
+ }
64
+
65
+ response = Webclient.get( src, headers: headers )
66
+
67
+ if response.status.ok?
68
+ puts "#{response.status.code} #{response.status.message} - content_type: #{response.content_type}, content_length: #{response.content_length}"
69
+
70
+ ### check for {"jsonrpc"=>"2.0",
71
+ ## "id"=>1,
72
+ ## "result"=> ... }
73
+ data = response.json
74
+ ## pp data
75
+
76
+ if data['result']
77
+ data['result']
78
+ elsif data['error']
79
+ puts "!! ETHERSCAN API (PROXY JSON-RPC) ERROR:"
80
+ puts "#{data['error']}"
81
+ exit 1
82
+ else
83
+ puts "!! ETHERSCAN API (PROXY JSON-RPC) ERROR:"
84
+ puts " No response on request"
85
+ exit 1
86
+ end
87
+ else
88
+ puts "!! HTTP ERROR:"
89
+ puts "#{response.status.code} #{response.status.message}"
90
+ exit 1
91
+ end
92
+ end
57
93
  end # module Etherscan
@@ -0,0 +1,21 @@
1
+ module Etherscan
2
+
3
+
4
+ ###
5
+ ## Get Contract Creator and Creation Tx Hash
6
+ ## Returns a contract's deployer address and transaction hash
7
+ ## it was created, up to 5 at a time.
8
+ ## see https://docs.etherscan.io/api-endpoints/contracts#get-contract-creator-and-creation-tx-hash
9
+ def self.getcontractcreation_url( contractaddresses: )
10
+ src = "#{BASE}?module=contract&action=getcontractcreation" +
11
+ "&contractaddresses=#{contractaddresses.join(',')}" +
12
+ "&apikey=#{config.key}"
13
+ src
14
+ end
15
+
16
+ def self.getcontractcreation( **kwargs )
17
+ call( getcontractcreation_url( **kwargs ) )
18
+ end
19
+
20
+
21
+ end # module Etherscan
@@ -0,0 +1,48 @@
1
+
2
+ module Etherscan
3
+
4
+
5
+ ###############
6
+ # all-in-one helper for getting contract details
7
+ # note: requires (collects data via) three api calls
8
+
9
+ def self.getcontractdetails( contractaddress: )
10
+
11
+ delay_in_s = 0.5
12
+ puts " sleeping #{delay_in_s} sec(s)..."
13
+ sleep( delay_in_s )
14
+ data = getcontractcreation( contractaddresses: [contractaddress] )
15
+ ## pp data
16
+
17
+ # [{"contractAddress"=>"0x16f5a35647d6f03d5d3da7b35409d65ba03af3b2",
18
+ # "contractCreator"=>"0xc352b534e8b987e036a93539fd6897f53488e56a",
19
+ # "txHash"=>"0xc82aa34310c310463eb9fe7835471f7317ac4b5008034a78c93b2a8a237be228"}]
20
+
21
+ ## reuse hash from repsone - why? why not?
22
+ details = data[0]
23
+
24
+ puts " sleeping #{delay_in_s} sec(s)..."
25
+ sleep( delay_in_s )
26
+ data2 = gettransactionbyhash( txhash: details['txHash'] )
27
+ ## puts
28
+ ## pp data2
29
+ # {"blockHash"=>"0x07f9b4846ee2702da8d18b9eeead15912d977acc8886ab9bf5d760914cb37670",
30
+ # "blockNumber"=>"0x3f17d2",
31
+ # "from"=>"0xa97f8ffc8f8e354475880448334e4e99a0e7212f",
32
+ # "gas"=>"0x2c51d3",
33
+ # "gasPrice"=>"0x53c53dc33",
34
+ # "hash"=>"0x79d48c41b99f0ac8f735dbf4d048165542576862df2b05a80be9a4dbe233a623",
35
+ details['blockNumber'] = data2['blockNumber']
36
+
37
+ puts " sleeping #{delay_in_s} sec(s)..."
38
+ sleep( delay_in_s )
39
+ data3 = getblockbynumber( blocknumber: data2['blockNumber'] )
40
+ ## puts
41
+ ## pp data3
42
+
43
+ details['timestamp'] = data3['timestamp']
44
+ details
45
+ end
46
+
47
+
48
+ end # module Etherscan
@@ -0,0 +1,46 @@
1
+
2
+ module Etherscan
3
+
4
+
5
+
6
+ ###
7
+ ## eth_getTransactionByHash
8
+ ## Returns the information about a transaction requested
9
+ ## by transaction hash.
10
+ ## see https://docs.etherscan.io/api-endpoints/geth-parity-proxy#eth_gettransactionbyhash
11
+
12
+ def self.gettransactionbyhash_url( txhash: )
13
+ src = "#{BASE}?module=proxy&action=eth_getTransactionByHash" +
14
+ "&txhash=#{txhash}" +
15
+ "&apikey=#{config.key}"
16
+ src
17
+ end
18
+
19
+ def self.gettransactionbyhash( **kwargs )
20
+ ## note: requires proxy_call!!! - different return / response format in json!!
21
+ proxy_call( gettransactionbyhash_url( **kwargs ) )
22
+ end
23
+
24
+ #####
25
+ ## eth_getBlockByNumber
26
+ ## Returns information about a block by block number.
27
+ ## see https://docs.etherscan.io/api-endpoints/geth-parity-proxy#eth_getblockbynumber
28
+ ##
29
+ ## the boolean value to show full transaction objects.
30
+ ## when true, returns full transaction objects and their information,
31
+ ## when false only returns a list of transactions.
32
+ def self.getblockbynumber_url( blocknumber:, transactions: false )
33
+ src = "#{BASE}?module=proxy&action=eth_getBlockByNumber" +
34
+ "&tag=#{blocknumber}" + ## note - must be a hexstring !!! e.g. 0x10d4f
35
+ "&boolean=#{transactions}" + ## " note:must be true or false
36
+ "&apikey=#{config.key}"
37
+ src
38
+ end
39
+
40
+ def self.getblockbynumber( **kwargs )
41
+ ## note: requires proxy_call!!! - different return / response format in json!!
42
+ proxy_call( getblockbynumber_url( **kwargs ) )
43
+ end
44
+
45
+
46
+ end # module Etherscan
@@ -2,7 +2,7 @@
2
2
 
3
3
  module EtherscanLite
4
4
  MAJOR = 0
5
- MINOR = 0
5
+ MINOR = 1
6
6
  PATCH = 1
7
7
  VERSION = [MAJOR,MINOR,PATCH].join('.')
8
8
 
@@ -46,6 +46,9 @@ module Etherscan
46
46
 
47
47
  require_relative 'etherscan-lite/base'
48
48
  require_relative 'etherscan-lite/account'
49
+ require_relative 'etherscan-lite/contract'
50
+ require_relative 'etherscan-lite/proxy'
51
+ require_relative 'etherscan-lite/misc'
49
52
 
50
53
 
51
54
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: etherscan-lite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-15 00:00:00.000000000 Z
11
+ date: 2022-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocos
@@ -75,6 +75,9 @@ files:
75
75
  - lib/etherscan-lite.rb
76
76
  - lib/etherscan-lite/account.rb
77
77
  - lib/etherscan-lite/base.rb
78
+ - lib/etherscan-lite/contract.rb
79
+ - lib/etherscan-lite/misc.rb
80
+ - lib/etherscan-lite/proxy.rb
78
81
  - lib/etherscan-lite/version.rb
79
82
  homepage: https://github.com/rubycocos/blockchain
80
83
  licenses: