Ich habe einen einfachen Solidity-Code, um die Bereitstellung und den Aufruf von Verträgen zu testen. Es hat Methoden, um einen Wert in den Speicher zu schreiben, und eine Methode, um ihn zu lesen. Dies funktionierte perfekt mit einer privaten Kette mit einem Geth-Kunden.
Nach dem Umschalten auf den Parity-Client und eine Proof-of-Authority- Kette wird der Vertrag nicht bereitgestellt, da die Transaktion zum Bereitstellen nicht abgebaut wird. Ich habe versucht, das Gas auf 600 mil und den angebotenen Gaspreis auf 10 Gwei zu erhöhen. Einfache Überweisungen von Ether gehen durch. Außerdem wurde der Solidity-Code erfolgreich kompiliert. Versucht, das Konto entsperrt zu senden, und auch durch Eingabe des Kontokennworts im Bestätigungsfenster in der Browser-Benutzeroberfläche.
Vertragscode:
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;
}
}
Welche anderen Informationen würden helfen, der Ursache auf den Grund zu gehen?
Dieses Problem trat auf, als ich versuchte, den Vertrag entweder mit der JSON-RPC-API oder mit der Benutzeroberfläche des Parity-Browsers bereitzustellen. Stattdessen habe ich versucht, die Bereitstellung mit der web3-JavaScript-API von Parity durchzuführen (wobei der Javascript-Code als NodeJS-App ausgeführt wird), und das funktioniert durchweg. Die Vertragsbereitstellungstransaktion wird abgebaut, und der Code ist an der zugewiesenen Adresse vorhanden.
Ajoy Bhatia
Ajoy Bhatia
q9f