¿Cómo puedo solucionar el problema del archivo .env cuando quiero exportar mi clave privada en Brownie?
Tengo el mismo problema exacto que este, estoy aprendiendo en el curso de Patrick Collins en esta parte con el siguiente código:
from brownie import accounts, config, SimpleStorage, network
def deploy_simple_storage():
account = get_account()
simple_storage = SimpleStorage.deploy({"from": account})
stored_value = simple_storage.retrieve()
print(stored_value)
transaction = simple_storage.store(15, {"from": account})
transaction.wait(1)
updated_stored_value = simple_storage.retrieve()
print(updated_stored_value)
def get_account():
if network.show_active() == "development":
return accounts[0]
else:
return accounts.add(config["wallets"]["from_key"])
def main():
deploy_simple_storage()
Tengo brownie v1.14.6.
Tengo .env
y brownie-config.ymal
en el mismo repositorio.
Ya intenté importar os
en una línea, luego print(os.getenv("PRIVATE_KEY"))
y me devuelve el mismo error y “none”.
Creo que es un problema con .env
(Variables Environment, como también intenté agregar manualmente las variables de PATH y aún no funciona) me devuelve el mismo error:
PS C:\Users\ericl\demos\brownie_simple_storage> brownie run .\scripts\deploy.py --network rinkeby
INFO: Could not find files for the given pattern(s).
Brownie v1.14.6 - Python development framework for Ethereum
BrownieSimpleStorageProject is the active project.
Running 'scripts\deploy.py::main'...
File "c:\users\ericl\appdata\local\programs\python\python39\lib\site-packages\brownie\_cli\run.py", line 49, in main
return_value, frame = run(
File "c:\users\ericl\appdata\local\programs\python\python39\lib\site-packages\brownie\project\scripts.py", line 103, in run
return_value = f_locals[method_name](*args, **kwargs)
File ".\scripts\deploy.py", line 23, in main
deploy_simple_storage()
File ".\scripts\deploy.py", line 5, in deploy_simple_storage
account = get_account()
File ".\scripts\deploy.py", line 19, in get_account
return accounts.add(config["wallets"]["from_key"])
File "c:\users\ericl\appdata\local\programs\python\python39\lib\site-packages\brownie\network\account.py", line 132, in add
w3account = web3.eth.account.from_key(private_key)
_utils\decorators.py", line 18, in _wrapper
return self.method(obj, *args, **kwargs)
File "c:\users\ericl\appdata\local\programs\python\python39\lib\site-packages\eth_account\account.py", line 246, in from_key
key = self._parsePrivateKey(private_key)
File "c:\users\ericl\appdata\local\programs\python\python39\lib\site-packages\eth_utils\decorators.py", line 18, in _wrapper
return self.method(obj, *args, **kwargs)
File "c:\users\ericl\appdata\local\programs\python\python39\lib\site-packages\eth_account\account.py", line 696, in _parsePrivateKey
raise ValueError(
ValueError: The private key must be exactly 32 bytes long, instead of 0 bytes.
Nota: Uso Windows 10.
davy.ai
Parece que estás teniendo problemas para acceder a las variables de entorno al ejecutar tu script. Aquí hay algunas cosas que puedes intentar para resolver el problema:
os.getenv()
para verificar si estás accediendo a las variables correctamente.Agrega las variables manualmente: Si todavía tienes problemas para acceder a las variables de entorno, puedes intentar agregarlas manualmente a tu script configurándolas como variables.
Asegúrate de que las variables se estén cargando: Brownie busca automáticamente y carga tanto los archivos
.env
comobrownie-config.yaml
cuando ejecutas tu script. Asegúrate de que estos archivos estén en la ubicación correcta y de que se estén cargando correctamente.Revisa las variables de sistema: También es posible que tus variables de sistema no estén configuradas correctamente. Asegúrate de haber agregado las rutas y variables correctas a tus variables de entorno del sistema.
También es importante tener en cuenta que el error que estás recibiendo está relacionado con la longitud de la clave privada. Asegúrate de estar usando la clave privada correcta y de que tenga la longitud correcta. Si todavía tienes problemas, puedes intentar contactar a la comunidad de Brownie para obtener soporte adicional.