Skip to content
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

Lesson 6: ValueError: insufficient funds for gas * price + value when testing bad_actor try to use withdraw function #109

Open
JeremieWU23 opened this issue Jul 13, 2023 · 2 comments

Comments

@JeremieWU23
Copy link

JeremieWU23 commented Jul 13, 2023

In the video 5:53:30, try to use withdraw function with a bad_actor and get an browning.exceptions.VirtualMachineError: revert. But when I use brownie test -k test_only_owner_can_withdraw to test, the console gives this error message:

Brownie v1.19.3 - Python development framework for Ethereum

================================================================================================================= test session starts =================================================================================================================
platform win32 -- Python 3.10.7, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: E:\Smart_Contract_Python_Tutorial\brownie_fund_me
plugins: eth-brownie-1.19.3, anyio-3.6.2, hypothesis-6.27.3, forked-1.4.0, xdist-1.34.0, web3-5.31.3
collected 2 items / 1 deselected / 1 selected

Launching 'ganache-cli.cmd --chain.vmErrorsOnRPCResponse true --wallet.totalAccounts 10 --hardfork istanbul --miner.blockGasLimit 12000000 --wallet.mnemonic brownie --server.port 8545'...

tests\test_fund_me.py F                                                                                                                                                                                                                          [100%]

====================================================================================================================== FAILURES =======================================================================================================================
____________________________________________________________________________________________________________ test_only_owner_can_withdraw _____________________________________________________________________________________________________________

    def test_only_owner_can_withdraw():
        if network.show_active() not in LOCAL_BLOCKCHAIN_ENVIRONMENTS:
            pytest.skip("only for local testing")
        fund_me = deploy_fund_me()
        bad_actor = accounts.add()
        print(bad_actor.balance())
>       fund_me.withdraw({"from": bad_actor})

tests\test_fund_me.py:25:

and

The active network is development
Deploying Mocks...
Mocks Deployed!
Contract deployed to 0x602C71e4DAC47a042Ee7f46E0aee17F94A3bA0B6
mnemonic: 'calm junk spy run drink sadness govern crunch dish captain clip race'
0
=============================================================================================================== short test summary info =============================================================================================================== 
FAILED tests/test_fund_me.py::test_only_owner_can_withdraw - ValueError: insufficient funds for gas * price + value
=========================================================================================================== 1 failed, 1 deselected in 7.79s =========================================================================================================== 
Terminating local RPC client...

Here is my test_only_owner_can_withdraw() function:

def test_only_owner_can_withdraw():
    if network.show_active() not in LOCAL_BLOCKCHAIN_ENVIRONMENTS:
        pytest.skip("only for local testing")
    fund_me = deploy_fund_me()
    bad_actor = accounts.add()
    print(bad_actor.balance())
    fund_me.withdraw({"from": bad_actor})

It seems that the account bad_actor does not have enough balance to send a tx, the print its balance is 0. And then raise this error. Why in the video there is not this error?

@JeremieWU23
Copy link
Author

When I change my test_only_owner_can_withdraw() function by letting bad_actor = accounts[1] instead of accounts.add(), it can give the same Error brownie.exceptions.VirtualMachineError: revert in the video:

def test_only_owner_can_withdraw():
    if network.show_active() not in LOCAL_BLOCKCHAIN_ENVIRONMENTS:
        pytest.skip("only for local testing")
    fund_me = deploy_fund_me()
    # bad_actor = accounts.add()
    bad_actor = accounts[1]
    print(bad_actor.balance())
    fund_me.withdraw({"from": bad_actor})

Did the accounts.add() method change after the video was uploaded, now the balance of the account will be set to 0?

I'd be very appreciative if somebody can give me an answer!!!

@PatrickAlphaC
Copy link
Owner

Oh that is odd... Could you make an issue on the brownie repo and ask on stack exchange eth?

Then maybe post in the python discord: https://discord.gg/YGzGZEfSBc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants