eth 0.5.12 → 0.5.13

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
  SHA256:
3
- metadata.gz: a6da48b3e3128860af79efba95ded96258dfe87a8bf0a374a44bff060fc2f9c3
4
- data.tar.gz: 9ad4cbabd4d5b31419d02b9363cdff915c4e1c61ba95197b42cf2a61ed31ac50
3
+ metadata.gz: cc5ddb568fad899fb1b19cce7995c8152b799475fbca603932d840d561fa4b4c
4
+ data.tar.gz: fc69a4e2c2866a719336cc94a0adb9244383a6c80116ab7da8a1165262743ac9
5
5
  SHA512:
6
- metadata.gz: bbc07ab8bb0fc56f89619037ee16da5eeadb7d0fcde714572bd9b678e8c4da18b70e3fa042207c57195dd7e6e2700ebf5650bf5ca6ddf848da78661a2b8eda16
7
- data.tar.gz: 51206666cc4a84bd05d0995ab6b7476699b17cc8bb37d3d78f789cf93116844dd3cd0f4e24360b59d7758d3588cc9fbebbe0504cdf1bd7b8a00a67e3600ac0ad
6
+ metadata.gz: 35062c2f2b04723b2889195a5a16c662e2f2913fed4ecc3d5903a6167ed125d23a3b066125756023b2b71451f5899a58f5a36e61049f0e744b6a24583a6eff9e
7
+ data.tar.gz: 51732510c1e64a48d3095fb6a6502038e493ace3390da31cde1006f67f4b7a4e130f78de2ab667ae235ce4285c2bb986a3720be8b6648e91d845de5bdb6f1a8f
@@ -20,7 +20,7 @@ jobs:
20
20
  gem install yard
21
21
  yard doc
22
22
  - name: Deploy GH Pages
23
- uses: JamesIves/github-pages-deploy-action@v4.6.1
23
+ uses: JamesIves/github-pages-deploy-action@v4.7.1
24
24
  with:
25
25
  branch: gh-pages
26
26
  folder: doc/
@@ -19,7 +19,7 @@ jobs:
19
19
  fail-fast: false
20
20
  matrix:
21
21
  os: [ubuntu-latest, macos-latest]
22
- ruby: ['3.1', '3.2', '3.3']
22
+ ruby: ['3.2', '3.3']
23
23
  steps:
24
24
  - uses: actions/checkout@v4
25
25
  - uses: ruby/setup-ruby@v1
@@ -29,13 +29,13 @@ jobs:
29
29
  - name: MacOs Dependencies
30
30
  run: |
31
31
  brew tap ethereum/ethereum
32
- brew install --verbose pkg-config automake autogen ethereum solidity
32
+ brew install --verbose pkg-config automake autogen geth solidity
33
33
  if: startsWith(matrix.os, 'macOS')
34
34
  - name: Ubuntu Dependencies
35
35
  run: |
36
36
  sudo add-apt-repository -y ppa:ethereum/ethereum
37
37
  sudo apt-get update
38
- sudo apt-get install ethereum solc libyaml-dev
38
+ sudo apt-get install geth solc
39
39
  if: startsWith(matrix.os, 'Ubuntu')
40
40
  - name: Run Geth
41
41
  run: |
@@ -51,7 +51,7 @@ jobs:
51
51
  env:
52
52
  INFURA_TOKEN: ${{ secrets.INFURA_TOKEN }}
53
53
  - name: Upload coverage to Codecov
54
- uses: codecov/codecov-action@v4
54
+ uses: codecov/codecov-action@v5
55
55
  with:
56
- fail_ci_if_error: false
56
+ fail_ci_if_error: true
57
57
  token: ${{ secrets.CODECOV_TOKEN }}
data/CHANGELOG.md CHANGED
@@ -1,9 +1,47 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [0.5.13]
5
+ ### Changed
6
+ * Eth/api: update to latest available go-ethereum apis [#301](https://github.com/q9f/eth.rb/pull/301)
7
+ * Eth/chain: update ids [#300](https://github.com/q9f/eth.rb/pull/300)
8
+ * Spec: update ethereum/tests fixtures [#303](https://github.com/q9f/eth.rb/pull/303)
9
+ * Ci: fix codecov uploader [#302](https://github.com/q9f/eth.rb/pull/302)
10
+ * Eth/tx: only enforce block gas limit on mainnet [#299](https://github.com/q9f/eth.rb/pull/299)
11
+ * Eth/util: fix single-byte hex-string nibbles [#298](https://github.com/q9f/eth.rb/pull/298)
12
+ * Eth/address: rename null address to zero address [#297](https://github.com/q9f/eth.rb/pull/297)
13
+ * Eth/address: add support to check for the ethereum "null address" [#296](https://github.com/q9f/eth.rb/pull/296)
14
+ * Build(deps): bump codecov/codecov-action from 4 to 5 [#295](https://github.com/q9f/eth.rb/pull/295)
15
+ * Build(deps): bump JamesIves/github-pages-deploy-action [#294](https://github.com/q9f/eth.rb/pull/294)
16
+ * Build(deps): bump JamesIves/github-pages-deploy-action [#288](https://github.com/q9f/eth.rb/pull/288)
17
+ * Eth/client: always return hash even if transaction didn't succeed [#284](https://github.com/q9f/eth.rb/pull/284)
18
+ * Eth/chain: update list of chains [#283](https://github.com/q9f/eth.rb/pull/283)
19
+ * Fix undefined method `raise_error' for an instance of Eth::Tx::Eip1559 (NoMethodError) [#282](https://github.com/q9f/eth.rb/pull/282)
20
+ * Gem: bump version to 0.5.13 [#281](https://github.com/q9f/eth.rb/pull/281)
21
+
4
22
  ## [0.5.12]
5
23
  ### Added
24
+ * Allow to call JSON RPC with custom block number [#268](https://github.com/q9f/eth.rb/pull/268)
25
+ * Support tuple params in EventLog [#276](https://github.com/q9f/eth.rb/pull/276)
26
+
6
27
  ### Changed
28
+ * Eth: update version [#280](https://github.com/q9f/eth.rb/pull/280)
29
+ * Eth/abi: fix negative integer coding [#279](https://github.com/q9f/eth.rb/pull/279)
30
+ * Support negative number from JSON RPC [#267](https://github.com/q9f/eth.rb/pull/267)
31
+ * Abi/event: confirm decoding tuples works [#278](https://github.com/q9f/eth.rb/pull/278)
32
+ * Allow to call JSON RPC with custom block number [#268](https://github.com/q9f/eth.rb/pull/268)
33
+ * Gem: run rufo [#277](https://github.com/q9f/eth.rb/pull/277)
34
+ * Fix event signature [#250](https://github.com/q9f/eth.rb/pull/250)
35
+ * Support tuple params in EventLog [#276](https://github.com/q9f/eth.rb/pull/276)
36
+ * Ci: update ruby version [#271](https://github.com/q9f/eth.rb/pull/271)
37
+ * Eth/api: remove coinbase as default account [#269](https://github.com/q9f/eth.rb/pull/269)
38
+ * Build(deps): bump JamesIves/github-pages-deploy-action from 4.5.0 to 4.6.1 [#275](https://github.com/q9f/eth.rb/pull/275)
39
+ * Build(deps): bump github/codeql-action from 2 to 3 [#257](https://github.com/q9f/eth.rb/pull/257)
40
+ * Build(deps): bump JamesIves/github-pages-deploy-action from 4.4.3 to 4.5.0 [#256](https://github.com/q9f/eth.rb/pull/256)
41
+ * Fix typo in contract_spec.rb [#253](https://github.com/q9f/eth.rb/pull/253)
42
+ * Eth/eip721: fix data type bug for bytes, fix #251 [#252](https://github.com/q9f/eth.rb/pull/252)
43
+ * Ci: unpatch geth [#248](https://github.com/q9f/eth.rb/pull/248)
44
+ * Build(deps): bump actions/checkout from 3 to 4 [#246](https://github.com/q9f/eth.rb/pull/246)
7
45
 
8
46
  ## [0.5.11]
9
47
  ### Added
@@ -55,7 +93,7 @@ All notable changes to this project will be documented in this file.
55
93
 
56
94
  ## [0.5.9]
57
95
  ### Added
58
- * Eth/abi: dynamic struct encoding (#135) [#185](https://github.com/q9f/eth.rb/pull/185)
96
+ * Eth/abi: dynamic struct encoding [#135](https://github.com/q9f/eth.rb/pull/135) [#185](https://github.com/q9f/eth.rb/pull/185)
59
97
  * Eth/client: support camel case (convert before sending the tx) [#172](https://github.com/q9f/eth.rb/pull/172)
60
98
  * Eth/client: add `tx_succeeded?` [#173](https://github.com/q9f/eth.rb/pull/173)
61
99
 
data/Gemfile CHANGED
@@ -3,14 +3,14 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  group :test, :development do
6
- gem "bundler", "~> 2.2"
7
- gem "codecov", "~> 0.6"
8
- gem "pry", "~> 0.14"
9
- gem "rake", "~> 13.0"
10
- gem "rdoc", "~> 6.4"
11
- gem "rspec", "~> 3.11"
12
- gem "rufo", "~> 0.13"
13
- gem "simplecov", "~> 0.21"
6
+ gem "bundler", "~> 2.4"
7
+ gem "pry", "~> 0.15"
8
+ gem "rake", "~> 13.2"
9
+ gem "rdoc", "~> 6.9"
10
+ gem "rspec", "~> 3.13"
11
+ gem "rufo", "~> 0.18"
12
+ gem "simplecov", "~> 0.22"
13
+ gem "simplecov-cobertura", "~> 2.1"
14
14
  gem "yard", "~> 0.9"
15
15
  end
16
16
 
data/SECURITY.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Supported Versions
4
4
 
5
- Ruby Ethereum 0.5.0 is a complete rewrite of the old `eth` 0.4.x gem.
5
+ Ruby Ethereum 0.5.x is a complete rewrite of the old `eth` 0.4.x gem.
6
6
  It also contains modules from `abi`, `rlp` and the `ethereum` gem.
7
7
 
8
8
  None of these gems are maintained anymore except for `eth` 0.5.0 and
data/eth.gemspec CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.test_files = spec.files.grep %r{^(test|spec|features)/}
33
33
 
34
34
  spec.platform = Gem::Platform::RUBY
35
- spec.required_ruby_version = ">= 2.7", "< 4.0"
35
+ spec.required_ruby_version = ">= 3.0", "< 4.0"
36
36
 
37
37
  # forwardable for contracts meta programming
38
38
  spec.add_dependency "forwardable", "~> 1.3"
@@ -54,19 +54,18 @@ module Eth
54
54
  elsif type.base_type == "tuple"
55
55
  offset = 0
56
56
  data = {}
57
+ raise DecodingError, "Cannot decode tuples without known components" if type.components.nil?
57
58
  type.components.each do |c|
58
59
  if c.dynamic?
59
60
  pointer = Util.deserialize_big_endian_to_int arg[offset, 32] # Pointer to the size of the array's element
60
61
  data_len = Util.deserialize_big_endian_to_int arg[pointer, 32] # length of the element
61
62
 
62
63
  data[c.name] = type(c, arg[pointer, Util.ceil32(data_len) + 32])
63
- # puts data
64
64
  offset += 32
65
65
  else
66
66
  size = c.size
67
67
  data[c.name] = type(c, arg[offset, size])
68
68
  offset += size
69
- # puts data
70
69
  end
71
70
  end
72
71
  data
data/lib/eth/address.rb CHANGED
@@ -17,6 +17,7 @@ module Eth
17
17
 
18
18
  # The {Eth::Address} class to handle checksummed Ethereum addresses.
19
19
  class Address
20
+ ZERO = "0x0000000000000000000000000000000000000000"
20
21
 
21
22
  # Provides a special checksum error if EIP-55 is violated.
22
23
  class CheckSumError < StandardError; end
@@ -51,6 +52,13 @@ module Eth
51
52
  end
52
53
  end
53
54
 
55
+ # Checks that the address is the zero address.
56
+ #
57
+ # @return [Boolean] true if the address is the zero address.
58
+ def zero?
59
+ address == ZERO
60
+ end
61
+
54
62
  # Generate a checksummed address.
55
63
  #
56
64
  # @return [String] prefixed hexstring representing an checksummed address.
data/lib/eth/api.rb CHANGED
@@ -27,17 +27,25 @@ module Eth
27
27
  "account_signTypedData",
28
28
  "admin_addPeer",
29
29
  "admin_addTrustedPeer",
30
+ "admin_clearHistory",
30
31
  "admin_datadir",
31
32
  "admin_exportChain",
33
+ "admin_getDatadir",
34
+ "admin_getNodeInfo",
35
+ "admin_getPeers",
32
36
  "admin_importChain",
33
37
  "admin_nodeInfo",
34
38
  "admin_peerEvents",
35
39
  "admin_peers",
36
40
  "admin_removePeer",
37
41
  "admin_removeTrustedPeer",
42
+ "admin_sleep",
43
+ "admin_sleepBlocks",
38
44
  "admin_startHTTP",
45
+ "admin_startRPC",
39
46
  "admin_startWS",
40
47
  "admin_stopHTTP",
48
+ "admin_stopRPC",
41
49
  "admin_stopWS",
42
50
  "clef_deriveAccount",
43
51
  "clef_listWallets",
@@ -78,6 +86,7 @@ module Eth
78
86
  "debug_getRawHeader",
79
87
  "debug_getRawReceipts",
80
88
  "debug_getRawTransaction",
89
+ "debug_getTrieFlushInterval",
81
90
  "debug_goTrace",
82
91
  "debug_intermediateRoots",
83
92
  "debug_memStats",
@@ -89,6 +98,7 @@ module Eth
89
98
  "debug_setGCPercent",
90
99
  "debug_setHead",
91
100
  "debug_setMutexProfileFraction",
101
+ "debug_setTrieFlushInterval",
92
102
  "debug_stacks",
93
103
  "debug_standardTraceBadBlockToFile",
94
104
  "debug_standardTraceBlockToFile",
@@ -111,51 +121,92 @@ module Eth
111
121
  "debug_writeBlockProfile",
112
122
  "debug_writeMemProfile",
113
123
  "debug_writeMutexProfile",
124
+ "dev_addWithdrawal",
125
+ "dev_setFeeRecipient",
114
126
  "eth_accounts",
127
+ "eth_blobBaseFee",
115
128
  "eth_blockNumber",
116
129
  "eth_call",
117
130
  "eth_chainId",
131
+ "eth_coinbase",
132
+ "eth_compile",
118
133
  "eth_compileLLL",
119
134
  "eth_compileSerpent",
120
135
  "eth_compileSolidity",
136
+ "eth_contract",
121
137
  "eth_createAccessList",
138
+ "eth_defaultAccount",
139
+ "eth_defaultBlock",
122
140
  "eth_estimateGas",
123
141
  "eth_feeHistory",
142
+ "eth_fillTransaction",
143
+ "eth_filter",
124
144
  "eth_gasPrice",
145
+ "eth_getAccounts",
125
146
  "eth_getBalance",
147
+ "eth_getBlobBaseFee",
148
+ "eth_getBlock",
126
149
  "eth_getBlockByHash",
127
150
  "eth_getBlockByNumber",
151
+ "eth_getBlockNumber",
152
+ "eth_getBlockReceipts",
153
+ "eth_getBlockTransactionCount",
128
154
  "eth_getBlockTransactionCountByHash",
129
155
  "eth_getBlockTransactionCountByNumber",
156
+ "eth_getBlockUncleCount",
130
157
  "eth_getCode",
158
+ "eth_getCoinbase",
131
159
  "eth_getCompilers",
132
160
  "eth_getFilterChanges",
133
161
  "eth_getFilterLogs",
162
+ "eth_getGasPrice",
163
+ "eth_getHashrate",
164
+ "eth_getHeaderByHash",
165
+ "eth_getHeaderByNumber",
134
166
  "eth_getLogs",
167
+ "eth_getMaxPriorityFeePerGas",
168
+ "eth_getMining",
169
+ "eth_getPendingTransactions",
135
170
  "eth_getProof",
171
+ "eth_getProtocolVersion",
172
+ "eth_getRawTransaction",
173
+ "eth_getRawTransactionFromBlock",
136
174
  "eth_getStorageAt",
175
+ "eth_getSyncing",
176
+ "eth_getTransaction",
137
177
  "eth_getTransactionByBlockHashAndIndex",
138
178
  "eth_getTransactionByBlockNumberAndIndex",
139
179
  "eth_getTransactionByHash",
140
180
  "eth_getTransactionCount",
181
+ "eth_getTransactionFromBlock",
141
182
  "eth_getTransactionReceipt",
183
+ "eth_getUncle",
142
184
  "eth_getUncleByBlockHashAndIndex",
143
185
  "eth_getUncleByBlockNumberAndIndex",
144
186
  "eth_getUncleCountByBlockHash",
145
187
  "eth_getUncleCountByBlockNumber",
146
188
  "eth_getWork",
147
189
  "eth_hashrate",
190
+ "eth_iban",
191
+ "eth_icapNamereg",
192
+ "eth_isSyncing",
148
193
  "eth_maxPriorityFeePerGas",
149
194
  "eth_mining",
195
+ "eth_namereg",
150
196
  "eth_newBlockFilter",
151
197
  "eth_newFilter",
152
198
  "eth_newPendingTransactionFilter",
199
+ "eth_pendingTransactions",
153
200
  "eth_protocolVersion",
201
+ "eth_resend",
202
+ "eth_sendIBANTransaction",
154
203
  "eth_sendRawTransaction",
155
204
  "eth_sendTransaction",
156
205
  "eth_sign",
157
206
  "eth_signTransaction",
207
+ "eth_simulateV1",
158
208
  "eth_submitHashrate",
209
+ "eth_submitTransaction",
159
210
  "eth_submitWork",
160
211
  "eth_syncing",
161
212
  "eth_uninstallFilter",
@@ -177,6 +228,9 @@ module Eth
177
228
  "miner_setRecommitInterval",
178
229
  "miner_start",
179
230
  "miner_stop",
231
+ "net_getListening",
232
+ "net_getPeerCount",
233
+ "net_getVersion",
180
234
  "net_listening",
181
235
  "net_peerCount",
182
236
  "net_version",
@@ -195,6 +249,8 @@ module Eth
195
249
  "personal_signTransaction",
196
250
  "personal_unlockAccount",
197
251
  "personal_unpair",
252
+ "rpc_getModules",
253
+ "rpc_modules",
198
254
  "shh_addToGroup",
199
255
  "shh_getFilterChanges",
200
256
  "shh_getMessages",
@@ -207,10 +263,49 @@ module Eth
207
263
  "shh_version",
208
264
  "txpool_content",
209
265
  "txpool_contentFrom",
266
+ "txpool_getContent",
267
+ "txpool_getInspect",
268
+ "txpool_getStatus",
210
269
  "txpool_inspect",
211
270
  "txpool_status",
271
+ "web3_admin",
272
+ "web3_bzz",
212
273
  "web3_clientVersion",
274
+ "web3_createBatch",
275
+ "web3_currentProvider",
276
+ "web3_db",
277
+ "web3_debug",
278
+ "web3_dev",
279
+ "web3_eth",
280
+ "web3_fromAscii",
281
+ "web3_fromDecimal",
282
+ "web3_fromICAP",
283
+ "web3_fromUtf8",
284
+ "web3_fromWei",
285
+ "web3_isAddress",
286
+ "web3_isChecksumAddress",
287
+ "web3_isConnected",
288
+ "web3_isIBAN",
289
+ "web3_miner",
290
+ "web3_net",
291
+ "web3_padLeft",
292
+ "web3_padRight",
293
+ "web3_personal",
294
+ "web3_providers",
295
+ "web3_reset",
296
+ "web3_rpc",
297
+ "web3_setProvider",
298
+ "web3_settings",
213
299
  "web3_sha3",
300
+ "web3_shh",
301
+ "web3_toAscii",
302
+ "web3_toChecksumAddress",
303
+ "web3_toDecimal",
304
+ "web3_toHex",
305
+ "web3_toUtf8",
306
+ "web3_toWei",
307
+ "web3_txpool",
308
+ "web3_version",
214
309
  ]
215
310
  end
216
311
  end
data/lib/eth/chain.rb CHANGED
@@ -32,6 +32,15 @@ module Eth
32
32
  # Chain ID for Optimistic Ethereum mainnet.
33
33
  OPTIMISM = 10.freeze
34
34
 
35
+ # Chain ID for Cronos mainnet.
36
+ CRONOS = 25.freeze
37
+
38
+ # Chain ID for Rootstock mainnet.
39
+ RSK = 30.freeze
40
+
41
+ # Chain ID for BNB Smart Chain mainnet.
42
+ BNB = 56.freeze
43
+
35
44
  # Chain ID for Ethereum Classic mainnet.
36
45
  CLASSIC = 61.freeze
37
46
 
@@ -50,9 +59,45 @@ module Eth
50
59
  # Chain ID for the Polygon mainnet (formerly Matic).
51
60
  POLYGON = MATIC.freeze
52
61
 
53
- # Chain ID for Arbitrum mainnet.
62
+ # Chain ID for Filecoin mainnet.
63
+ FILECOIN = 314.freeze
64
+
65
+ # Chain ID for the Cronos zkEVM chain.
66
+ CRONOS_ZK = 388.freeze
67
+
68
+ # Chain ID for Redstone Optimistic Rollup.
69
+ REDSTONE = 690.freeze
70
+
71
+ # Chain ID for the Polygon zkEVM.
72
+ POLYGON_ZK = 1101.freeze
73
+
74
+ # Chain ID for the Lisk layer 2.
75
+ LISK = 1135.freeze
76
+
77
+ # Chain ID for Moonbeam
78
+ MOONBEAM = 1284.freeze
79
+
80
+ # Chain ID for Base mainnet.
81
+ BASE = 8453.freeze
82
+
83
+ # Chain ID for the EVMOS mainnet.
84
+ EVMOS = 9001.freeze
85
+
86
+ # Chain ID for the Celo layer 2.
87
+ CELO = 42220.freeze
88
+
89
+ # Chain ID for Arbitrum One mainnet.
54
90
  ARBITRUM = 42161.freeze
55
91
 
92
+ # Chain ID for Avalance C-Chain mainnet.
93
+ AVALANCHE = 43114.freeze
94
+
95
+ # Chain ID for Linea mainnet.
96
+ LINEA = 59144.freeze
97
+
98
+ # Chain ID for the Scroll layer 2.
99
+ SCROLL = 534352.freeze
100
+
56
101
  # Chain ID for Morden (Ethereum) testnet.
57
102
  MORDEN = 2.freeze
58
103
 
@@ -77,7 +122,7 @@ module Eth
77
122
  # Chain ID for Mordor testnet.
78
123
  MORDOR = 63.freeze
79
124
 
80
- # Chain ID for Optimistik Kovan testnet.
125
+ # Chain ID for Optimistm Kovan testnet.
81
126
  KOVAN_OPTIMISM = 69.freeze
82
127
 
83
128
  # Chain ID for Arbitrum xDAI testnet.
@@ -86,6 +131,15 @@ module Eth
86
131
  # Chain ID for Optimistic Goerli testnet.
87
132
  GOERLI_OPTIMISM = 420.freeze
88
133
 
134
+ # Chain ID for Moonriver testnet
135
+ MOONRIVER = 1285.freeze
136
+
137
+ # Chain ID for Moonbase alpha
138
+ MOONBASE = 1287.freeze
139
+
140
+ # Chain ID for the Garnet Holesky testnet
141
+ GARNET = 17069.freeze
142
+
89
143
  # Chain ID for the Polygon Mumbai testnet.
90
144
  MUMBAI = 80001.freeze
91
145
 
@@ -100,19 +154,11 @@ module Eth
100
154
 
101
155
  # Chain ID for Holesovice testnet.
102
156
  HOLESOVICE = 11166111.freeze
157
+ HOLESKY = HOLESOVICE
103
158
 
104
159
  # Chain ID for the geth private network preset.
105
160
  PRIVATE_GETH = 1337.freeze
106
161
 
107
- # Chain ID for Moonbase
108
- MOONBASE = 1287.freeze
109
-
110
- # Chain ID for Moonriver
111
- MOONRIVER = 1285.freeze
112
-
113
- # Chain ID for Moonbeam
114
- MOONBEAM = 1284.freeze
115
-
116
162
  # Indicates wether the given `v` indicates a legacy chain value
117
163
  # used by ledger wallets without EIP-155 replay protection.
118
164
  #
data/lib/eth/client.rb CHANGED
@@ -315,11 +315,11 @@ module Eth
315
315
  # See {#transact} for params and overloads.
316
316
  #
317
317
  # @raise [Client::ContractExecutionError] if the execution fails.
318
- # @return [Object] returns the result of the transaction.
318
+ # @return [Object, Boolean] returns the result of the transaction (hash and execution status).
319
319
  def transact_and_wait(contract, function, *args, **kwargs)
320
320
  begin
321
321
  hash = wait_for_tx(transact(contract, function, *args, **kwargs))
322
- return hash if tx_succeeded? hash
322
+ return hash, tx_succeeded?(hash)
323
323
  rescue IOError => e
324
324
  raise ContractExecutionError, e
325
325
  end
@@ -180,7 +180,7 @@ module Eth
180
180
  # allows us to force-setting a signature if the transaction is signed already
181
181
  _set_signature(recovery_id, r, s)
182
182
  else
183
- raise_error DecoderError, "Cannot decode EIP-1559 payload!"
183
+ raise DecoderError, "Cannot decode EIP-1559 payload!"
184
184
  end
185
185
 
186
186
  # last but not least, set the type.
@@ -175,7 +175,7 @@ module Eth
175
175
  # allows us to force-setting a signature if the transaction is signed already
176
176
  _set_signature(recovery_id, r, s)
177
177
  else
178
- raise_error DecoderError, "Cannot decode EIP-2930 payload!"
178
+ raise DecoderError, "Cannot decode EIP-2930 payload!"
179
179
  end
180
180
 
181
181
  # last but not least, set the type.
data/lib/eth/tx.rb CHANGED
@@ -210,7 +210,9 @@ module Eth
210
210
  if fields[:nonce].nil? or fields[:nonce] < 0
211
211
  raise ParameterError, "Invalid signer nonce #{fields[:nonce]}!"
212
212
  end
213
- if fields[:gas_limit].nil? or fields[:gas_limit] < DEFAULT_GAS_LIMIT or fields[:gas_limit] > BLOCK_GAS_LIMIT
213
+ if fields[:gas_limit].nil? or
214
+ fields[:gas_limit] < DEFAULT_GAS_LIMIT or
215
+ (fields[:gas_limit] > BLOCK_GAS_LIMIT and fields[:chain_id] == Chain::ETHEREUM)
214
216
  raise ParameterError, "Invalid gas limit #{fields[:gas_limit]}!"
215
217
  end
216
218
  unless fields[:value] >= 0
data/lib/eth/util.rb CHANGED
@@ -12,6 +12,8 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ # -*- encoding : ascii-8bit -*-
16
+
15
17
  require "digest/keccak"
16
18
 
17
19
  # Provides the {Eth} module.
@@ -48,7 +50,7 @@ module Eth
48
50
  # @raise [TypeError] if value is not a string.
49
51
  def bin_to_hex(bin)
50
52
  raise TypeError, "Value must be an instance of String" unless bin.instance_of? String
51
- bin.unpack("H*").first
53
+ hex = bin.unpack("H*").first
52
54
  end
53
55
 
54
56
  # Packs a hexa-decimal string into a binary string. Also works with
@@ -61,7 +63,8 @@ module Eth
61
63
  raise TypeError, "Value must be an instance of String" unless hex.instance_of? String
62
64
  hex = remove_hex_prefix hex
63
65
  raise TypeError, "Non-hexadecimal digit found" unless hex? hex
64
- [hex].pack("H*")
66
+ hex = "0#{hex}" if hex.size % 2 != 0
67
+ bin = [hex].pack("H*")
65
68
  end
66
69
 
67
70
  # Prefixes a hexa-decimal string with `0x`.
data/lib/eth/version.rb CHANGED
@@ -22,7 +22,7 @@ module Eth
22
22
  MINOR = 5.freeze
23
23
 
24
24
  # Defines the patch version of the {Eth} module.
25
- PATCH = 12.freeze
25
+ PATCH = 13.freeze
26
26
 
27
27
  # Defines the version string of the {Eth} module.
28
28
  VERSION = [MAJOR, MINOR, PATCH].join(".").freeze
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.12
4
+ version: 0.5.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Ellis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-06-23 00:00:00.000000000 Z
12
+ date: 2024-12-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: forwardable
@@ -192,7 +192,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
192
  requirements:
193
193
  - - ">="
194
194
  - !ruby/object:Gem::Version
195
- version: '2.7'
195
+ version: '3.0'
196
196
  - - "<"
197
197
  - !ruby/object:Gem::Version
198
198
  version: '4.0'
@@ -202,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
202
  - !ruby/object:Gem::Version
203
203
  version: '0'
204
204
  requirements: []
205
- rubygems_version: 3.2.32
205
+ rubygems_version: 3.5.16
206
206
  signing_key:
207
207
  specification_version: 4
208
208
  summary: Ruby Ethereum library.