La solidez pragma no funciona

ingrese la descripción de la imagen aquí

Estimados todos, soy muy nuevo en Ethereum, novato. Esto podría enojar a muchos, pero tengo que preguntar, ¿por qué la solidez del pragma no funciona correctamente? He visto innumerables ejemplos donde pragma solidity ^0.4.0; funciona, pero ¿por qué no funciona para mí? Probé esto en remix.ethereum.org, el compilador basado en el navegador ethereum.

Recibo este error, ayuda por favor, cualquiera!

browser/Untitled.sol:1:1: ParserError: Pragma esperado, directiva de importación o definición de contrato/interfaz/biblioteca.pragma solidity ^0.4.0;

Aquí está el código:

pragma solidity ^0.4.0;
contract MyfirstContract{
    string private name;
    uint private age;

    function setName(string newName){
        name=newName;
    }
    fucntion getName() returns (string){
        return;

    }

}
Debe publicar su código como un bloque de código para que pueda copiarse y probarse. Si es una imagen nadie puede copiarla. Mi suposición actual es que tienes algún símbolo extraño en algún lugar que se volvería evidente si pudiéramos copiar y pegar el código.
El código está funcionando bien. Comprueba tu versión de remix. functionestá mal escrito en getName(). Corrige eso.
Heh, ups, error de novato. ¿El compilador dice que no está cargado?

Respuestas (3)

Esto ocurre cuando el compilador aún no se ha cargado. Deberías esperar un tiempo

Para declaraciones como pragma solidity ^0.4.11, esperar un tiempo hará que el error desaparezca. En esta declaración, al usar ^estamos diciendo que use cualquier compilador anterior 0.4.11, por lo que si 0.4.21está cargado, también funcionará.

Pero a veces este error puede permanecer. Esto sucede si está utilizando una versión específica del compilador, como en la siguiente línea:

pragma solidity 0.4.3;

En ese caso, vaya a la sección de configuración que se encuentra a la derecha y seleccione la versión del compilador que está utilizando.

Por si no está claro.

pragma"En la programación de computadoras, una directiva o pragma (de" pragmático ") es una construcción de lenguaje que especifica cómo un compilador (u otro traductor) debe procesar su entrada". - https://en.wikipedia.org/wiki/Directive_(programación)

Solo dice que fue diseñado para un compilador de versión 0.4.0o superior ( ^). El solccompilador está diseñado para generar un error si él mismo no es compatible, y esto puede ser una protección útil, posiblemente evitando que se use un compilador incompatible o no probado.

Como señaló @Ayushya, el compilador en sí tarda unos segundos en cargarse e inicializarse. En el caso de un compilador incompatible, Remix le permite al desarrollador elegir entre una larga lista de compiladores disponibles, para que no tenga que conformarse con el predeterminado.

ingrese la descripción de la imagen aquí

Es pragmaposible que le diga qué versión del compilador necesita cargar para trabajar con éxito con un archivo fuente. Esto es potencialmente importante cuando se trabaja con código probado porque es posible que se hayan introducido cambios importantes después de la publicación. Las palabras están en desuso de vez en cuando.

Conclusión principal: Remix le permite cargar cualquier compilador que desee/necesite y hay bastantes para elegir. pragmaestá ahí para evitar rascarse la cabeza. Sugiere con qué versión trabajó el desarrollador y presumiblemente probó el código.

Espero eso ayude.

Ante todo. Copié y pegué exactamente lo que has publicado aquí en tu código. Escribió mal "función" en la línea 9. Después de corregir eso, compila muy bien para mí. Estoy usando Remix en Firefox. Vea si el navegador que elige no está causando ningún problema, si aún recibe un error después de corregir la palabra mal escrita. De lo contrario, intente poner la versión de licencia SPDX. Aparte de eso, diría que su problema es la palabra mal escrita. [![compila bien][2]][2]

ingrese la descripción de la imagen aquí