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);
}
}
Soy nuevo en Solidity, estoy creando un registro de usuario simple y verificándolo y guardándolo usando otro contrato. El contrato xyz funciona bien, pero ahora quiero llamarlo a SaveData Contract y verificar la dirección usando la función de paso que si la dirección está en la lista blanca, solo guardará la dirección.
gracias de antemano
Lo principal es lanzar una variable como una instancia de su contrato, luego la instancia en la dirección donde espera que esté.
Algo como
MyContract myContract;
myContract = MyContract(contractAddress);
No pude evitarlo y ajusté los nombres de algunas cosas.
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;
}
}
Espero eso ayude.
Michael Kohl
Sandeep Gupta
Andy McEwan