Skip to content

Instantly share code, notes, and snippets.

@OkoliEvans
Created February 4, 2023 07:49
Show Gist options
  • Save OkoliEvans/23c6c32c8702d0e9a259f61f62a7d4d9 to your computer and use it in GitHub Desktop.
Save OkoliEvans/23c6c32c8702d0e9a259f61f62a7d4d9 to your computer and use it in GitHub Desktop.
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;
contract City_DNS {
address private owner;
mapping (bytes32 => bool) internal dao_name;
mapping (address => bool) internal registeredAccounts;
mapping (address => bytes32) internal accountOwner;
event txLog (address indexed _newOwner, string message);
modifier accountTrix(address _address) {
require(registeredAccounts[_address] = false, "Name already assigned to this account");
_;
}
function node5(string memory _name) private pure returns(bytes32){
return keccak256(abi.encode(_name));
}
function assignName(address _addr, string memory _name) external{
require(!registeredAccounts[_addr], "Already assigned a name");
require(!dao_name[node5(_name)],"Name already taken");
dao_name[node5(_name)] = true;
registeredAccounts[_addr] = true;
accountOwner[_addr] = node5(_name);
emit txLog(_addr, "Name assigned to account successfully");
}
function transferNameOwnership(string memory _name, address _address) external accountTrix(_address){
accountOwner[_address] = node5(_name);
registeredAccounts[_address] = true;
emit txLog(_address, "Name transferred to new account successfully");
}
function checkName(string memory _name) public view returns (bool) {
return (dao_name[node5(_name)]);
}
/**
function retrieveAccount(address _address) public view returns() {
} */
function deleteAccount(address _addr) external {
delete(accountOwner[_addr]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment