Cadena privada de paridad: la transacción de implementación del contrato no se extrae

Tengo un código de Solidity simple para probar la implementación y la invocación del contrato. Tiene métodos para escribir un valor en el almacenamiento y un método para leerlo. Esto funcionó perfectamente bien con una cadena privada con un cliente geth.

Después de cambiar al cliente de Parity y una cadena de prueba de autoridad , el contrato no se implementa porque la transacción para implementarlo no se extrae. He intentado aumentar el gas a 600 mil y el precio del gas ofrecido a 10 Gwei. Las transferencias simples de Ether sí se realizan. Además, el código de Solidity se compiló correctamente. Intenté con la cuenta de envío desbloqueada y también ingresando la contraseña de la cuenta en la ventana de confirmación en la interfaz de usuario del navegador.

Código de contrato:

pragma solidity ^0.4.7;

contract owned {
  address owner;
  function owned() {
    owner = msg.sender;
  }
}

contract mortal is owned {
  function kill() {
    if (msg.sender == owner) selfdestruct(owner);
  }
}

contract IdMgmt is mortal {

  struct acl {
    string dataType;
    string permissions;
  }

  mapping (address => acl) public aclOf;

  function IdMgmt() { }

  function createId(address _user, string _dataType, string _permissions) {
    aclOf[_user].dataType = _dataType;
    aclOf[_user].permissions = _permissions;
  }

  function getPermissions(address _user, string _dataType) constant
    returns (string userPermissions) {

    if (stringsEqual(aclOf[_user].dataType, _dataType)) {
      userPermissions = aclOf[_user].permissions;
    }
    else {
      userPermissions = "NO DATA";
    }
  }

  function stringsEqual(string _a, string _b) internal returns (bool) {
    bytes memory a = bytes(_a);
    bytes memory b = bytes(_b);
    if (a.length != b.length) {
      return false;
    }
    for (uint i = 0; i < a.length; i ++) {
      if (a[i] != b[i]) return false;
    }
    return true;
  }
}

¿Qué otra información ayudaría a llegar a la causa raíz?

Hmm... Intenté enviar la transacción de implementación del contrato a otro nodo par en la cadena. Esta vez, fue minado. Así que supongo que ahora depende de mí averiguar qué está mal en el nodo donde no se extrae.
Este problema se observó cuando intenté implementar el contrato con la API JSON RPC o con la interfaz de usuario del navegador Parity. En su lugar, intenté implementar con la API Javascript web3 de Parity (con el código Javascript ejecutándose como una aplicación NodeJS) y eso funciona de manera consistente. La transacción de implementación del contrato se extrae y el código existe en la dirección asignada.
Si esto resuelve su problema, no dude en responder su propia pregunta.

Respuestas (1)

Este problema se observó cuando intenté implementar el contrato con la API JSON RPC o con la interfaz de usuario del navegador Parity. En su lugar, intenté implementar con la API Javascript web3 de Parity (con el código Javascript ejecutándose como una aplicación NodeJS) y eso funciona de manera consistente. La transacción de implementación del contrato se extrae y el código existe en la dirección asignada.

¿Sientes que realmente se resuelve con este enfoque? Tengo el mismo problema y me gustaría usar diferentes interfaces como la interfaz de usuario del navegador, la solidez del navegador, web3.py, etc. Descubrí que depende de la cuenta que estoy usando, con las cuentas de firmante funciona, con las cuentas de usuario no: ethereum.stackexchange.com/questions/13506/…
Bueno, sí. No resuelve el problema original, pero esto fue suficiente para mí. Estaba usando la API JSON RPC y la interfaz de usuario del navegador solo como herramientas de desarrollo, pero el proyecto solo requería la interfaz web3 JS para funcionar. Así que no necesitaba dejar esto abierto. Veo que ha enviado una pregunta que describe su problema, por lo que podemos dejarlo así. (Vea mi comentario sobre su pregunta re: una posible causa)