get_accounts
Account types
accounts[0] -- dummy ganache accounts
accounts.add("env") -- private key from env file
-> accounts.add(config["wallets"]["wallet1"])
accounts.load("id") -- load from brownie accounts list
Iteration 1
from brownie import FundMe
from brownie import network, config
from scripts.helpful_scripts import *
from scripts.helpful_scripts import LOCAL_BLOCKCHAIN_ENV
def deploy_fund_me():
account = get_account()
print(f"Deploying on .....{network.show_active()}")
if network.show_active() not in LOCAL_BLOCKCHAIN_ENV:
price_feed_address = config["networks"][network.show_active()]["eth_usd_price_feed"]
else: #deploy mock of price feed on internal chain: development
deploy_mocks()
price_feed_address = MockV3Aggregator[-1].address
fund_me = FundMe.deploy(price_feed_address,
{"from": account},
publish_source=config["networks"][network.show_active()].get("verify"))
print(f"Contract deployed to: {fund_me.address}")
return fund_me
def main():
deploy_fund_me()
#Python will automatically run main() on execution.
Account
account = get_account()
get_account is defined in helpful_scripts
Function will check which network we are deploying to. If it is in LOCAL_BLOCKCHAIN_ENV / FORKED_LOCAL_ENV, a dummy ganache account is used.
Else, (i.e. live chains: mainnet, testnet), MetaMask wallet is used.
pulls private key from wallet1 defined in brownie-config.yaml
which in turn references the PK stored in the .env file
we do this, as opposed to hardcoding into the yaml file, so that on a git push, the .env is not uploaded to github, thereby exposing our private key.
In this version of get_accounts(), we only utilized dummy accounts and adding accounts from Private Key. We shall see the third method in the next interation.
Iteration 2
def get_account(index=None,id=None):
both parameters, index and id are optional, as their default value is set to None.
index and id are optional, as their default value is set to None.if index parameter is passed, function will return a dummy ganache account based on the parameter
account[index]
if id is passed, for example, get_account(id=freecodecamp)
function will reference stored accounts in brownie of the id name
can store an account by: brownie accounts new <id>
pass the private key, add 0x before it.
brownie will request for a password to hash it.
If neither index nor id are passed,
and deployment into LOCAL_BLOCKCHAIN_ENV / FORKED_LOCAL_ENV -> account[0]
else (live chains: mainnet/rinkeby), -> use PK from config.yaml file
In summary,
if index specified -> use ganache account
if id specified -> use id, stored account
none specified -> if local/forked env, use dummy, else use PK from config.yaml
Last updated