skale-admin
skale-admin copied to clipboard
2.2.1 admin is incompatible with new contracts
Describe the bug
If there are nodes with old admin version (2.5.4
) and nodes with new admin version (2.6.0-beta.0
), we can't run node rotation or create schain because nodes with old admin won't send broadcast
transaction. The reason is in new parameter (rotation_id
) for broadcast
transaction which is added to the new versions of admin and contracts. So in such case nodes with old admin try to send broadcast
3 times and fail (Tx broadcast failed after 3 retries
).
Versions:
old admin - 2.5.4
new admin - 2.6.0-beta.0
skale-manager - 1.10.0-beta.0
To Reproduce Steps to reproduce the behavior: There are nodes with old and new admin
- Start node rotation procedure or create schain
- DKG starts
- Go to skale-admin logs on node with old admin
- See error :arrow_down:
[2024-01-26 12:25:11,853 INFO][27261][thundering-rotanev][T_0] - skale.transactions.tools:46 - Dry run tx: broadcast, sender: 0x6D1e4710A0e55c1c4f96B921b091434687558257, wallet: RedisWalletAdapter, value: 0,
[2024-01-26 12:25:11,949 ERROR][27261][thundering-rotanev][T_0] - skale.transactions.tools:62 - Dry run for method failed with error
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/skale/transactions/tools.py", line 59, in make_dry_run_call
estimated_gas = estimate_gas(skale.web3, method, opts)
File "/usr/local/lib/python3.9/site-packages/skale/transactions/tools.py", line 74, in estimate_gas
estimated_gas = method.estimate_gas(
File "/usr/local/lib/python3.9/site-packages/web3/contract/contract.py", line 496, in estimate_gas
return estimate_gas_for_function(
File "/usr/local/lib/python3.9/site-packages/web3/contract/utils.py", line 203, in estimate_gas_for_function
return w3.eth.estimate_gas(estimate_transaction, block_identifier)
File "/usr/local/lib/python3.9/site-packages/web3/eth/eth.py", line 292, in estimate_gas
return self._estimate_gas(transaction, block_identifier)
File "/usr/local/lib/python3.9/site-packages/web3/module.py", line 68, in caller
result = w3.manager.request_blocking(
File "/usr/local/lib/python3.9/site-packages/web3/manager.py", line 232, in request_blocking
return self.formatted_response(
File "/usr/local/lib/python3.9/site-packages/web3/manager.py", line 197, in formatted_response
apply_error_formatters(error_formatters, response)
File "/usr/local/lib/python3.9/site-packages/web3/manager.py", line 73, in apply_error_formatters
formatted_resp = pipe(response, error_formatters)
File "cytoolz/functoolz.pyx", line 680, in cytoolz.functoolz.pipe
File "cytoolz/functoolz.pyx", line 655, in cytoolz.functoolz.c_pipe
File "/usr/local/lib/python3.9/site-packages/web3/_utils/method_formatters.py", line 786, in raise_contract_logic_error_on_revert
raise ContractLogicError("execution reverted", data=data)
web3.exceptions.ContractLogicError: execution reverted
[2024-01-26 12:25:11,950 ERROR][27261][thundering-rotanev][T_0] - skale.transactions.tools:181 - Tx attempt 2/3 failed
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/skale/transactions/tools.py", line 178, in run_tx_with_retry
tx_res = transaction(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/skale/contracts/base_contract.py", line 128, in wrapper
tx_res.raise_for_status()
File "/usr/local/lib/python3.9/site-packages/skale/transactions/result.py", line 68, in raise_for_status
raise RevertError(self.dry_run_result['error'])
skale.transactions.exceptions.RevertError: execution reverted ```