contract xyz {
mapping(address => bool) Users;
function add(address userAddress) {
require(userAddress != 0x0 && !Users[userAddress]);
Users[userAddress] = true;
}
function pass(address passAddress) returns (bool) {
return Users[passAddress];
}
}
contract SaveData {
address[] addrs;
string[] hashSet;
xyz asd = xyz();
function Save(address PubAddress) {
require(asd.pass(PubAddress)==true);
addrs.push(PubAddress); //saving public addresses
}
//function to save hash
function saveHash(string hashStr) {
hashSet.push(hashStr);
}
}
Ich bin neu bei Solidity, ich erstelle eine einfache Benutzerregistrierung und überprüfe und speichere sie mit einem anderen Vertrag. Vertrag xyz funktioniert einwandfrei, aber jetzt möchte ich ihn in SaveData Contract aufrufen und die Adresse mit der Pass-Funktion überprüfen, die nur dann die Adresse speichert, wenn die Adresse auf der weißen Liste steht.
vielen Dank im Voraus
Die Hauptsache ist, dass Sie eine Variable als Instanz Ihres Vertrags umwandeln und sie dann an der Adresse instanziieren, an der Sie sie erwarten.
Etwas wie
MyContract myContract;
myContract = MyContract(contractAddress);
Ich konnte nicht anders und passte die Namen einiger Dinge an.
pragma solidity 0.4.21;
contract UserReg {
mapping(address => bool) public isUser;
function add(address userAddress) public {
require(userAddress != 0x0 && !isUser[userAddress]);
isUser[userAddress] = true;
}
function pass(address passAddress) public view returns(bool) {
return isUser[passAddress];
}
// Added this for safety check near 31
function isUserReg() public pure returns(bool isIndeed) {
return true;
}
}
contract SaveData {
address[] public addrs;
UserReg userReg;
function instantiateXyz(address userRegAddr) public returns(bool success) {
userReg = UserReg(userRegAddr); // instantiate asd instance of Zyz
require(userReg.isUserReg()); // should return true, right?
return true;
}
function saveAddress(address pubAddress) public returns(bool success) {
require(userReg.pass(pubAddress)==true);
addrs.push(pubAddress); //saving public addresses
return true;
}
}
Ich hoffe es hilft.
Michael Kohl
Sandeep Gupta
Andy McEwan