-
Notifications
You must be signed in to change notification settings - Fork 377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
getChannelIdentifier return data b' ' #4470
Comments
Reasons I can think of:
|
I hope this is not needed by either parity or geth, the error above was from an This is the full stack trace:
The error happened while the channel was being opened. I think we have two bugs here:
|
@nlsdfnbch can you look into the first bug Augusto mentions here? Should I open a new issue regarding this bug ("SP is using invalid addresses.") in the SP Repo? |
Does anyone know a way to reliably reproduce this error? |
This could also be related to a geth bug: ethereum/go-ethereum#19186. Did anyone get this on parity or the latest geth? |
hmm we got this on Sunday 28.07. We always checkout the latest dev branch and run raiden on that. Does that help? |
@agatsoh is able to reproduce that error. Can you tell us how? |
Yes I run this scenario with the latest version of the scenario player and I get it each time. |
I am taking this issue up. Will investigate for now. |
@agatsoh need more information from you. I can't reproduce the exception with your scenario using the latest master of raiden. The scenario does fail, but with a scenario assertion. Not with the error of this isssue. Your scenario says: |
Hi @LefterisJP my scenario player is set use the latest nightly as i check my ~/.raiden/scenario-player/raiden_releases/bin/, I find this is my latest binary here
@nlsdfnbch also has an interesting find here why it is not updating the binaries to the latest raiden version |
The SP has an open PR to update the url for |
So the latest nightly is from over a month ago? Something is wrong there. Perhaps @nlsdfnbch comment explains why. So @agatsoh can you try with latest master and this scenario to tell me if you can still reproduce this? |
Yes sure I will try with the latest dev branch in SP |
@LefterisJP So me and @nlsdfnbch both checked this yesterday after Nils merged raiden-network/scenario-player#70 and made some more changes. On the scenario player latest dev when you run the scenario player the
After that when you check the nodes individual stderr logs there should be this error
|
So this is with which raiden version @agatsoh? |
@LefterisJP this one raiden-nightly-2019-08-12T00-23-18-v0.100.5.dev107+g8947e0256-linux-x86_64 |
Thank you @agatsoh . I tried both with that and with the latest nightly, then again with master. In neither of the runs did what you describe happens for me. No matter which version I use (nightly or latest master) the scenario fails here:
And that is a scenario failure, not a raiden failure. I did check all stderr/stdout logs and I can't reproduce this. At least with the versions I tried. How are you running the scenario player? Which ethereum client is being used underneath? |
@LefterisJP Sorry for late reply I run it like this
I am also trying to find an answer to which ethereum client does the scenario player use underneath. |
well you are using infura then? What is The argument you are giving up there is how you connect to ethereum. |
aah yes sorry brainfade I am using brainbot VPN nodes. But I dont know exactly what |
@nlsdfnbch Any idea which ethereum client it is |
All right so that is the parity goerli node. |
Unfortunately even with a parity node and following your steps I can't reproduce this. The same thing I mentioned here happens. The scenario fails, but only due to a scenario assertion. Raiden does not fail with an exception during channel opening. I tested with parity, and geth and last 3 nightlies and raiden master. |
So without reproducing it is hard to say anything concrete. But looking at the code and the stack trace seen above what happens is that the following fails. channel_identifier = self.proxy.contract.functions.getChannelIdentifier(
participant=to_checksum_address(participant1),
partner=to_checksum_address(participant2),
).call(block_identifier=block_identifier) It returns Looking at our
The code is already checking for (1) and (2) here. So that only leaves (3). The given block identifier is given below: Lines 394 to 401 in 21467e1
That means that it's getting the current state block number, which is the latest confirmed block, which should be "latest" minus 5. At the same time ... right above that code we check if the token network is registered .. but with the latest block! So I can see a potential race there that could lead to this situation. Lines 386 to 387 in 21467e1
raiden/raiden/network/proxies/token_network_registry.py Lines 78 to 94 in 21467e1
|
Made a test that reproduces this error in |
Test that opening a channel via the API provides the confirmed block and not the latest block as given_block. The discrepancy there lead to potential timing issues where the token network was deployed for the state in the "latest" block but not yet in the confirmed state and a BadFunctionCallOutput exception was thrown from web3. Regression test for raiden-network#4470 At the moment of this commit where the fix is not yet in the test fails with: ``` web3.exceptions.BadFunctionCallOutput: Could not decode contract function call getChannelIdentifier return data b'' for output_types ['uint256'] ```
- Alsi dissalow default argument for block_identifier for get_token_network. This will only lead to bad surprises. Let's just be explicit Fix raiden-network#4470
Test that opening a channel via the API provides the confirmed block and not the latest block as given_block. The discrepancy there lead to potential timing issues where the token network was deployed for the state in the "latest" block but not yet in the confirmed state and a BadFunctionCallOutput exception was thrown from web3. Regression test for #4470 At the moment of this commit where the fix is not yet in the test fails with: ``` web3.exceptions.BadFunctionCallOutput: Could not decode contract function call getChannelIdentifier return data b'' for output_types ['uint256'] ```
- Alsi dissalow default argument for block_identifier for get_token_network. This will only lead to bad surprises. Let's just be explicit Fix #4470
This issue closed assuming that the bug I found here is the reason the issue was made in the first place. Since I could not reproduce I can't be 100% certain but I would ask to open another issue if something similar is found. |
Nodes crash with the following error message:
Happens from time to time. In this case it is run 46 node 0:
http://scenario-player.ci.raiden.network/Scenario_player_Logs-pfs5_too_low_capacity-1-latest-2019-07-28.tar.gz
@hackaugusto @pirapira had some ideas about that if I am not mistaken.
The text was updated successfully, but these errors were encountered: