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);
}
}
Я новичок в Solidity, я создаю простую пользовательскую регистрацию, проверяю и сохраняю ее, используя другой контракт. Контракт xyz работает нормально, но теперь я хочу вызвать его в контракт SaveData и проверить адрес с помощью функции передачи, которая, если адрес занесен в белый список, только сохранит адрес.
заранее спасибо
Главное, вы приводите переменную в качестве экземпляра вашего контракта, а затем создаете ее экземпляр по адресу, где вы ожидаете, что он будет.
Что-то вроде
MyContract myContract;
myContract = MyContract(contractAddress);
Я не удержался и поправил названия некоторых вещей.
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;
}
}
Надеюсь, поможет.
Майкл Коль
Сандип Гупта
Энди Макьюэн