Ich habe diesen Vertrag bereitgestellt und auch mit Ganache interagiert.
pragma solidity ^0.4.0;
contract Counter {
int private count = 0;
function incrementCounter() public {
count += 1;
}
function decrementCounter() public {
count -= 1;
}
function getCount() public constant returns (int) {
return count;
}
}
Bei der Interaktion mit dem Vertrag kann jedoch jedes Konto auf Ganache damit interagieren und die Funktion erhöhen. Wie kann ich nur ein Konto von Ganache definieren, um diese Funktion ändern zu können? Ich möchte nur etwas Sicherheit zum Vertrag hinzufügen?
Dies ist der Link für den Smart Contract, dem ich folge: https://medium.com/crypto-currently/build-your-first-smart-contract-fc36a8ff50ca
Schauen Sie sich die Ownable
Bibliothek https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol an . Es gibt Ihnen einen Modifikator namens onlyOwner
, den Sie zu allen Funktionen hinzufügen können, bei denen Sie den Zugriff einschränken müssen.
Die Verwendung des onlyOwner
Modifikators blockiert den Zugriff von allen außer dem Eigentümer. Eigentümer ist standardmäßig derjenige, der den Vertrag erstellt hat.
Es gibt auch andere Alternativen dazu, aber Ownable
es ist wahrscheinlich die am weitesten verbreitete und akzeptierte Lösung.
Sie können Ihren Funktionen eine Einschränkung wie folgt hinzufügen:
pragma solidity ^0.4.0;
contract Counter {
int private count = 0;
address public admin;
constructor() public {
admin = msg.sender;
}
function incrementCounter() public {
require(msg.sender==admin);
count += 1;
}
function decrementCounter() public {
require(msg.sender==admin);
count -= 1;
}
function getCount() public constant returns (int) {
return count;
}
}
Im Konstruktor ist der Administrator auf das Konto festgelegt, das den Vertrag bereitgestellt hat. Dann require(msg.sender==admin)
wird überprüft, ob das Konto, das versucht, die Funktionen auszuführen, der Administrator Ihres Systems ist. Wenn nicht, wird es ausgelöst und die Funktion wird nicht ausgeführt.
hoffe das hilft.
Sie müssen modifier
dem Vertrag nur ein hinzufügen und dann den Modifikator dort einfügen, wo Sie die zusätzliche Sicherheit wünschen. Unten isAdmin
wurde der Modifikator zu den Funktionen incrementCounter
und hinzugefügt decrementCounter
.
pragma solidity ^0.4.0;
contract Counter {
int private count = 0;
modifier isAdmin() {
require(msg.sender == 0xYOUR-ADDRESS-HERE);
_;
}
function incrementCounter() public isAdmin {
count += 1;
}
function decrementCounter() public isAdmin {
count -= 1;
}
function getCount() public constant returns (int) {
return count;
}
}
David Nicola
Schomari
0x
, sollte sein0x081D55360Acf2990791656c195Ee94124d84B186
David Nicola
Schomari