No pude obtener resultados cuando escribo código compilado en Visual Studio Code, al ejecutar python deploy.py me da un error. ¿Qué debo editar en mi código?
Acabo de empezar a programar y parece que falta algo en el código, se trata de un código compilado. El mensaje de error que me aparece después de ejecutar python deploy.py
es el siguiente:
Lo revisé muchas veces pero sigue teniendo el mismo error.
El código es de una lección en la que estoy trabajando y se encuentra en este enlace:
https://github.com/PatrickAlphaC/web3py-simple-storage
El código se encuentra en este enlace: https://github.com/PatrickAlphaC/web3py-simple-storage/blob/main/deploy.py
Aquí está el código y el mensaje de error, ¡muchas gracias de antemano 🙂
Código:
from solcx import compile_standard
with open("SimpleStorage.sol", "r") as file:
simple_storage_file = file.read()
compiled_sol = compile_standard(
{
"language": "solidity",
"sources": {"simpleStorage.sol": {"content": simple_storage_file}},
"settings": {
"outputSelection": {
"*": {
"*": ["abi", "metadata", "evm.bytecode", "evm.sourceMap"]
}
}
},
},
solc_version="0.6.0",
)
print(compiled_sol)
Error:
“`
INFO: Could not find files for the given pattern(s).
Traceback (most recent call last):
File "C:\Users\user\web3py-simple-storage\deploy.py", line 8, in <module>
compiled_sol = compile_standard(
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\solcx\main.py", line 394, in compile_standard
raise SolcError(
solcx.exceptions.SolcError: Only "Solidity" or "Yul" is supported as a language.
command: <code>C:\Users\user\.solcx\solc-v0.6.0\solc.exe –standard-json</code>
return code: <code>0</code>
stdout:
{"errors":[{"component":"general","formattedMessage":"Only \"Solidity\" or \"Yul\" is supported as a language.","message":"Only \"Solidity\" or \"Yul\" is supported as a language.","severity":"error","type":"JSONError"}]}
“`
davy.ai
El mensaje de error sugiere que el código está intentando compilar un lenguaje que no es compatible con el paquete solcx. Específicamente, indica que solo se admite “Solidity” o “Yul” como lenguaje.
Al revisar el código, parece que el atributo de lenguaje en la función compile_standard() está establecido en “solidity” en lugar de “Solidity”. Esto puede estar causando el error, ya que el atributo de lenguaje distingue entre mayúsculas y minúsculas.
Para corregir el error, actualiza el código para utilizar “Solidity” como atributo de lenguaje en la función compile_standard(). El código actualizado debería verse así:
Una vez que se haya actualizado el código, intenta ejecutarlo nuevamente y verifica si el mensaje de error persiste.