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?
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.
Ajoy Bhatia
Ajoy Bhatia
q9f