Migración de trufa atascada

Estoy tratando de migrar el contrato en una red de cadena de bloques creada con la cadena de bloques del consorcio de Azure Ethereum, pero cuando ejecuto el comando Truffle, migre, se atasca en

 PS D:\sl\BCSLAC\bcdemo\sol> truffle migrate --network test
 Using network 'test'.

 Running migration: 1_initial_migration.js
 Deploying Migrations...

Este mensaje persiste durante mucho tiempo y no sucede nada después de esto. ¿Alguien puede tener idea de cuál es el problema?

Y lo interesante es que tengo una configuración de red de cadena de bloques más en Azure (que estoy usando anteriormente). Si trato de implementarla en esa red, funciona bien, pero no en la nueva.

Busqué este problema y encontré una solución aquí que dice eliminar el archivo DAG. Como estoy usando Windows 7, la ubicación del archivo dag debe ser

(INICIO)/Appdata/Local/Ethash/completo......

pero no puedo ver ninguna carpeta llamada Ethash en mi carpeta AppData/Local

¿Estás seguro de que tu red tiene un minero activo? Parece que la trufa está esperando que el contrato desplegado se extraiga en un bloque.
sí, he confirmado que mi red tiene mineros activos

Respuestas (3)

Una cosa que puede causar este comportamiento con Parity (no estoy seguro de si eso es lo que está ejecutando el servicio de Azure o no) es que si la cuenta con la que quiere implementar está bloqueada, como está de forma predeterminada, espera que tome algún otro paso. para aprobar la transacción.

Parity intenta hacer esto ejecutando una interfaz de usuario web en algún otro puerto, mostrando cada solicitud de transacción en una pantalla web y esperando que haga clic en ella. Desafortunadamente, truffle no sabe nada de esto y no le dice nada sobre la existencia de esta pantalla web o la solicitud que se muestra en ella.

Para evitar que haga esto, desbloquee la cuenta de envío cuando inicie el nodo de paridad. Por ejemplo, cuando se ejecuta con las cuentas de ejemplo utilizadas en el tutorial de Parity PoA , coloque las contraseñas en un archivo llamado user.pwdsy ejecute parity con:

parity --config node0.toml --unlock 0x004ec07d2329997267ec62b4166639513386f32e,0x00bd138abd70e2f00903268f3db08f2d25677c9e --password user.pwds

El archivo de contraseñas contiene las contraseñas de las cuentas, una por línea, por ejemplo:

node0
user
Ya he desbloqueado la cuenta usando la api personal de la consola geth usandopersonal.unlockAccount("accountHash","password",0)
Creo que hay una confusión con esta pregunta, no estoy usando la paridad, estoy usando el consorcio Blockchain de Azure Ethereum, que se basa en go ethereum.

Me enfrenté al mismo problema. Revisé todo, desde mineros activos hasta cuentas bloqueadas. Al final, reiniciar el nodo de transacción desde Azure Portal funcionó para mí.

Los problemas que enfrenté fueron una combinación de muchos:

  1. La cuenta debe desbloquearse antes de que se pueda minar la transacción.
  2. Los mineros deberían estar funcionando si la transacción debe ser minada.
  3. El remitente debe enviar suficiente gas.
  4. Los firmantes estaban habilitados, pero no pude firmar transacciones porque no podía acceder a ellos en la interfaz de usuario (estaba probando el código en el servidor). Para deshabilitar firmantes seguros, usé --no-uimientras ejecutaba paridad.

Para superar estos problemas, utilicé una cadena privada con la siguiente configuración:

Las especificaciones de la cadena se tomaron prestadas de private-chain y se almacenaron en un archivo llamado demo-spec.json:

{
    "name": "DevelopmentChain",
    "engine": {
        "instantSeal": { "params": {} }
    },
    "params": {
        "accountStartNonce": "0x0",
        "maximumExtraDataSize": "0x20",
        "minGasLimit": "0x1388",
        "networkID" : "0x11"
    },
    "genesis": {
        "seal": {
            "generic": "0x0"
        },
        "difficulty": "0x20000",
        "author": "0x0000000000000000000000000000000000000000",
        "timestamp": "0x00",
        "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "extraData": "0x",
        "gasLimit": "0x5B8D80"
    },
    "accounts": {
        "0000000000000000000000000000000000000001": { "balance": "1", "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } },
        "0000000000000000000000000000000000000002": { "balance": "1", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } },
        "0000000000000000000000000000000000000003": { "balance": "1", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } },
        "0000000000000000000000000000000000000004": { "balance": "1", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } },
        "0x00a329c0648769a73afac7f9381e08fb43dbea72": { "balance": "1606938044258990275541962092341162602522202993782792835301376" },
                "0x004ec07d2329997267ec62b4166639513386f32e": {"balance": "9999999999999999999999999999999999999999999999999999999999999999999999"},
                "0x00bd138abd70e2f00903268f3db08f2d25677c9e": {"balance":"999999999999999999999999999999999999999999999999999999999999999999999999"}
    }
}

El siguiente paso fue crear node0.tomlel archivo:

[parity]
chain = "demo-spec.json"
base_path = "./tmp/parity0"
[network]
port = 30300
[rpc]
port = 8540
apis = ["web3", "eth", "net", "personal", "parity", "parity_set", "traces", "rpc", "parity_accounts"]
[websockets]
port = 8450
[account]
password = ["node.pwds"]
[mining]
reseal_min_period = 0
min_gas_price = 0

No inicie el nodo todavía, aún no hemos guardado la contraseña. Guarde el siguiente contenido en node.pwdsel archivo:

node0
user

Ahora inicie el nodo usando

parity --config node0.toml

Las cuentas existen en la cadena, pero no se guardan en el nodo que estamos ejecutando. Antes de que podamos hacer que nuestras cuentas funcionen, debemos crearlas en nuestro nodo. Lo hice usando RPC:

curl --data '{"jsonrpc":"2.0","method":"parity_newAccountFromPhrase","params":["node0", "node0"],"id":0}' -H "Content-Type: application/json" -X POST localhost:8540

curl --data '{"jsonrpc":"2.0","method":"parity_newAccountFromPhrase","params":["user", "user"],"id":0}' -H "Content-Type: application/json" -X POST localhost:8540

Ahora todo está listo y podemos iniciar el nodo de paridad desbloqueando la cuenta:

parity --config node0.toml --no-ui --unlock 0x004ec07d2329997267ec62b4166639513386f32e,0x00bd138abd70e2f00903268f3db08f2d25677c9e --password node.pwds

Nota:

  1. La interfaz de usuario está deshabilitada. Deshabilité el firmante seguro usando --no-ui. La interfaz de usuario se puede habilitar modificando node0.tomly cambiando el comando para ejecutar la paridad excluyendo --no-ui.
  2. El procedimiento anterior se usa para probar el código de trufa en el servidor con rpc en el puerto 8540.