Skip to content

Commit f0062a5

Browse files
vileodysseus0
andauthored
Update package to use web3.py >=6.0.0, <7 (#87)
* update and fix dependencies - bump web3.py version to >=6, <7 - chore: bump package version to 2.0.0 - chore: lock packages - chore: update vscode settings.json - update .vscode/settings.json to properly use black formatter * fix: get private key using v6 LocalAccount private key property * feat: use v6 method and property naming convention - use Pythonic snake_case where applicable - `web3.module.Module uses` `w3` naming instead of `web3`(e.g. `self.web3.eth.block_number` -> `self.w3.eth.block_number`) - sha3 method has been renamed to keccak * chore: update PKG-INFO web3 package version * Update simple.py for web3.py v6 * Update pyproject.toml and poetry.lock to the latest --------- Co-authored-by: George Zhang <georgezhangtj97@gmail.com>
1 parent c00711a commit f0062a5

8 files changed

Lines changed: 1776 additions & 1100 deletions

File tree

.vscode/settings.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
{
2-
"python.formatting.provider": "black"
3-
}
2+
"editor.formatOnSave": true,
3+
"[python]": {
4+
"editor.defaultFormatter": "ms-python.black-formatter"
5+
}
6+
}

PKG-INFO

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Author-email: me@gakonst.com
77
Requires-Python: >=3.9,<4.0
88
Classifier: Programming Language :: Python :: 3
99
Classifier: Programming Language :: Python :: 3.9
10-
Requires-Dist: web3 (>=5.22.0,<6)
10+
Requires-Dist: web3 (>=6,<7)
1111
Description-Content-Type: text/markdown
1212

1313
This library works by injecting a new module in the Web3.py instance, which allows

examples/simple.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ def main() -> None:
9393
print(f"Sender address: {sender.address}")
9494
print(f"Receiver address: {receiverAddress}")
9595
print(
96-
f"Sender account balance: {Web3.fromWei(w3.eth.get_balance(sender.address), 'ether')} ETH"
96+
f"Sender account balance: {Web3.from_wei(w3.eth.get_balance(sender.address), 'ether')} ETH"
9797
)
9898
print(
99-
f"Receiver account balance: {Web3.fromWei(w3.eth.get_balance(receiverAddress), 'ether')} ETH"
99+
f"Receiver account balance: {Web3.from_wei(w3.eth.get_balance(receiverAddress), 'ether')} ETH"
100100
)
101101

102102
# bundle two EIP-1559 (type 2) transactions, pre-sign one of them
@@ -106,10 +106,10 @@ def main() -> None:
106106
nonce = w3.eth.get_transaction_count(sender.address)
107107
tx1: TxParams = {
108108
"to": receiverAddress,
109-
"value": Web3.toWei(0.001, "ether"),
109+
"value": Web3.to_wei(0.001, "ether"),
110110
"gas": 21000,
111-
"maxFeePerGas": Web3.toWei(200, "gwei"),
112-
"maxPriorityFeePerGas": Web3.toWei(50, "gwei"),
111+
"maxFeePerGas": Web3.to_wei(200, "gwei"),
112+
"maxPriorityFeePerGas": Web3.to_wei(50, "gwei"),
113113
"nonce": nonce,
114114
"chainId": NETWORK_CONFIG[NETWORK]["chain_id"],
115115
"type": 2,
@@ -118,10 +118,10 @@ def main() -> None:
118118

119119
tx2: TxParams = {
120120
"to": receiverAddress,
121-
"value": Web3.toWei(0.001, "ether"),
121+
"value": Web3.to_wei(0.001, "ether"),
122122
"gas": 21000,
123-
"maxFeePerGas": Web3.toWei(200, "gwei"),
124-
"maxPriorityFeePerGas": Web3.toWei(50, "gwei"),
123+
"maxFeePerGas": Web3.to_wei(200, "gwei"),
124+
"maxPriorityFeePerGas": Web3.to_wei(50, "gwei"),
125125
"nonce": nonce + 1,
126126
"chainId": NETWORK_CONFIG[NETWORK]["chain_id"],
127127
"type": 2,
@@ -158,15 +158,15 @@ def main() -> None:
158158
target_block_number=block + 1,
159159
opts={"replacementUuid": replacement_uuid},
160160
)
161-
print("bundleHash", w3.toHex(send_result.bundle_hash()))
161+
print("bundleHash", w3.to_hex(send_result.bundle_hash()))
162162

163163
stats_v1 = w3.flashbots.get_bundle_stats(
164-
w3.toHex(send_result.bundle_hash()), block
164+
w3.to_hex(send_result.bundle_hash()), block
165165
)
166166
print("bundleStats v1", stats_v1)
167167

168168
stats_v2 = w3.flashbots.get_bundle_stats_v2(
169-
w3.toHex(send_result.bundle_hash()), block
169+
w3.to_hex(send_result.bundle_hash()), block
170170
)
171171
print("bundleStats v2", stats_v2)
172172

@@ -182,10 +182,10 @@ def main() -> None:
182182
print(f"canceled {cancel_res}")
183183

184184
print(
185-
f"Sender account balance: {Web3.fromWei(w3.eth.get_balance(sender.address), 'ether')} ETH"
185+
f"Sender account balance: {Web3.from_wei(w3.eth.get_balance(sender.address), 'ether')} ETH"
186186
)
187187
print(
188-
f"Receiver account balance: {Web3.fromWei(w3.eth.get_balance(receiverAddress), 'ether')} ETH"
188+
f"Receiver account balance: {Web3.from_wei(w3.eth.get_balance(receiverAddress), 'ether')} ETH"
189189
)
190190

191191

flashbots/flashbots.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def __init__(self, w3: Web3, signed_tx: HexBytes, max_block_number: int):
9595
self.max_block_number = max_block_number
9696
self.tx = {
9797
"signed_transaction": signed_tx,
98-
"hash": self.w3.sha3(signed_tx),
98+
"hash": self.w3.keccak(signed_tx),
9999
}
100100

101101
def wait(self) -> bool:
@@ -147,12 +147,12 @@ def sign_bundle(
147147
if tx.get("nonce") is None:
148148
tx["nonce"] = nonces.get(
149149
signer.address,
150-
self.web3.eth.get_transaction_count(signer.address),
150+
self.w3.eth.get_transaction_count(signer.address),
151151
)
152152
nonces[signer.address] = tx["nonce"] + 1
153153

154154
if "gas" not in tx:
155-
tx["gas"] = self.web3.eth.estimateGas(tx)
155+
tx["gas"] = self.w3.eth.estimate_gas(tx)
156156

157157
signed_tx = signer.sign_transaction(tx)
158158
signed_transactions.append(signed_tx.rawTransaction)
@@ -192,7 +192,7 @@ def sign_bundle(
192192

193193
unsigned_tx = serializable_unsigned_transaction_from_dict(tx_dict)
194194
raw = encode_transaction(unsigned_tx, vrs=(v, r, s))
195-
assert self.web3.keccak(raw) == tx["hash"]
195+
assert self.w3.keccak(raw) == tx["hash"]
196196
signed_transactions.append(raw)
197197

198198
return signed_transactions
@@ -243,7 +243,7 @@ def send_bundle_munger(
243243
) -> List[Any]:
244244
signed_txs = self.sign_bundle(bundled_transactions)
245245
self.response = FlashbotsBundleResponse(
246-
self.web3, signed_txs, target_block_number
246+
self.w3, signed_txs, target_block_number
247247
)
248248
return self.send_raw_bundle_munger(signed_txs, target_block_number, opts)
249249

@@ -286,22 +286,22 @@ def simulate(
286286
):
287287
# interpret block number from tag
288288
block_number = (
289-
self.web3.eth.block_number
289+
self.w3.eth.block_number
290290
if block_tag is None or block_tag == "latest"
291291
else block_tag
292292
)
293293

294294
# sets evm params
295-
evm_block_number = self.web3.toHex(block_number)
295+
evm_block_number = self.w3.to_hex(block_number)
296296
evm_block_state_number = (
297-
self.web3.toHex(state_block_tag)
297+
self.w3.to_hex(state_block_tag)
298298
if state_block_tag is not None
299-
else self.web3.toHex(block_number - 1)
299+
else self.w3.to_hex(block_number - 1)
300300
)
301301
evm_timestamp = (
302302
block_timestamp
303303
if block_timestamp is not None
304-
else self.extrapolate_timestamp(block_number, self.web3.eth.block_number)
304+
else self.extrapolate_timestamp(block_number, self.w3.eth.block_number)
305305
)
306306

307307
signed_bundled_transactions = self.sign_bundle(bundled_transactions)
@@ -327,7 +327,7 @@ def extrapolate_timestamp(self, block_tag: int, latest_block_number: int):
327327
block_delta = block_tag - latest_block_number
328328
if block_delta < 0:
329329
raise Exception("block extrapolation negative")
330-
return self.web3.eth.get_block(latest_block_number)["timestamp"] + (
330+
return self.w3.eth.get_block(latest_block_number)["timestamp"] + (
331331
block_delta * SECONDS_PER_BLOCK
332332
)
333333

@@ -357,7 +357,7 @@ def call_bundle_munger(
357357
)
358358

359359
def get_user_stats_munger(self) -> List:
360-
return [{"blockNumber": hex(self.web3.eth.blockNumber)}]
360+
return [{"blockNumber": hex(self.w3.eth.block_number)}]
361361

362362
getUserStats: Method[Callable[[Any], Any]] = Method(
363363
json_rpc_method=FlashbotsRPC.flashbots_getUserStats,
@@ -414,14 +414,14 @@ def send_private_transaction_munger(
414414
)
415415
if max_block_number is None:
416416
# get current block num, add 25
417-
current_block = self.web3.eth.block_number
417+
current_block = self.w3.eth.block_number
418418
max_block_number = current_block + 25
419419
params = {
420420
"tx": self.to_hex(signed_transaction),
421421
"maxBlockNumber": max_block_number,
422422
}
423423
self.response = FlashbotsPrivateTransactionResponse(
424-
self.web3, signed_transaction, max_block_number
424+
self.w3, signed_transaction, max_block_number
425425
)
426426
return [params]
427427

flashbots/provider.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def make_request(self, method: RPCEndpoint, params: Any) -> RPCResponse:
4141
text=Web3.keccak(text=request_data.decode("utf-8")).hex()
4242
)
4343
signed_message = Account.sign_message(
44-
message, private_key=self.signature_account.privateKey.hex()
44+
message, private_key=self.signature_account._private_key
4545
)
4646

4747
headers = self.get_request_headers() | {

0 commit comments

Comments
 (0)