MyCryptoHQ / MyCrypto

MyCrypto is an open-source tool that allows you to manage your Ethereum accounts privately and securely. Developed by and for the community since 2015, we’re focused on building awesome products that put the power in people’s hands.
https://mycrypto.com
MIT License
1.37k stars 649 forks source link

This request is not supported because your node running with state pruning for Parity full history node #2328

Closed vbaranov closed 4 years ago

vbaranov commented 5 years ago

Description of the Issue

MyCrypto does not recognize a Parity full history node. The interaction with smart-contracts leads to an error "This request is not supported because your node is running with state pruning. Run with --pruning=archive."

Custom RPC provider endpoint: https://core-fullnode.poa.network Ethereum client: Parity-Ethereum//v2.2.1-beta-5c56fc5-20181114/x86_64-linux-gnu/rustc1.30.1

Pruning mode is disabled in configuration:

[footprint]
tracing = "on"
pruning = "archive"
fat_db = "on"

This endpoint works with Ethereum JSON RPC directly, MEW, MetaMask, Nifty Wallet.

Steps to Reproduce

Description of Your Machine

Google Chrome Version 71.0.3578.98 (Official Build) (64-bit) macOS 10.13.6

Console Logs / Screenshots

screen shot 2018-12-19 at 16 35 52

screen shot 2018-12-19 at 16 18 56


MacBook-Pro-Viktor:~ viktor$ curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' https://core-fullnode.poa.network/
{"jsonrpc":"2.0","result":"Parity-Ethereum//v2.2.1-beta-5c56fc5-20181114/x86_64-linux-gnu/rustc1.30.1","id":67}
tayvano commented 5 years ago

Thanks so much for the report. For some reason we are sending this call out with the param pending instead of latest. We're checking into why we did this in the first place to ensure we don't inadvertently break something else when implementing the fix for this issue.

tayvano commented 5 years ago

Just an update on our end

The Infura POA node is working with the current parameters we are giving. We're thinking that it might be related to how your node is configured and/or related to this issue https://github.com/paritytech/parity-ethereum/issues/9707?

The weird thing is that all of our other nodes across chains are working properly with the parameters we're currently using so we're thinking this could be more easily resolved by adjusting your node settings. What exactly those settings are is beyond my paygrade unfortunately.

blurpesec commented 5 years ago

To provide additional insight: Both your's and Infura's nodes work with the "Latest" parameter for eth_call JSON RPC requests. Infura's node still works with "pending", but yours does not. I used Postman to test these.

EDIT: Infura team mentioned that they had an issue a few weeks ago that they haven't been able to replicate where when using both a config toml file and cmd-line args, one cancelled the other out, forcing the node to not be run as archive. Maybe check that you're not doing this :-)

tayvano commented 5 years ago

Hey @vbaranov—just wondering if you had any luck solving this on your end?

vbaranov commented 5 years ago

@tayvano thank you and @blurpesec for the ideas. Tried different configurations for Parity full archive node - none of them was successful. Also, we have no mixing toml config and CLI parameters. Actually, I opened an issue on Parity end https://github.com/paritytech/parity-ethereum/issues/10096 . Anyways, I guess this issue is related rather to Parity Ethereum client configuration, then to MyCrypto. Thus, this issue can be closed. I am just curious if you could point me out to why you are using pending state by default instead of latest.

tayvano commented 5 years ago

@vbaranov We never did fully determined why we decided to use the pending state across the calls instead of latest. We did confirm that using latest breaks things for some reason (this is actually even more confusing to me than the "why use pending" question.)

I'll leave this open for now so that I can check in occasionally and stay abreast of any updates on Parity's end or changes we need to make.

vbaranov commented 5 years ago

@tayvano

UPDATE: as far as I can see, Infura updated their client to Parity-Ethereum//v2.2.6-beta-e9396e1-20190109/x86_64-linux-gnu/rustc1.31.1:

MacBook-Pro-Viktor:~ viktor$ curl -X POST \
> -H 'Content-Type: application/json' \
> --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":42}' \
> https://poa.infura.io
{"jsonrpc":"2.0","id":42,"result":"Parity-Ethereum//v2.2.6-beta-e9396e1-20190109/x86_64-linux-gnu/rustc1.31.1"}

And the problem from this issue is also reproducible now with default POA Core RPC endpoint https://poa.infura.io

MacBook-Pro-Viktor:~ viktor$ curl -X POST \
> --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"to": "0x4316f704989157162de90997ce1a05cff3118680", "data": "0x8da5cb5b"}, "pending"],"id":42}' \
> https://poa.infura.io
{"jsonrpc":"2.0","id":42,"error":{"code":-32000,"message":"This request is not supported because your node is running with state pruning. Run with --pruning=archive."}}

And it is not in a syncing state:

MacBook-Pro-Viktor:~ viktor$ curl -X POST \
> --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' \
> https://poa.infura.io
{"jsonrpc":"2.0","id":1,"result":false}

Thus, users are not able to interact with POA core through MyCrypto.

zulhfreelancer commented 5 years ago

Hi MyCrypto team, any update on this issue?

Update

I just tested MEW v3.39.0 and it doesn't produce "This request is not supported because your node is running with state pruning. Run with --pruning=archive." error. I can read and write states without any issues.

tayvano commented 5 years ago

Let me check for you.

The new MyCrypto that were working on is on the /gau branch and we are using ethers.js, which will likely resolve this issue.

zulhfreelancer commented 5 years ago

Thanks @tayvano

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.