#1 Simple Registry
https://github.com/yieldprotocol/mentorship2022/issues/1
Problem statement: https://github.com/yieldprotocol/mentorship2022/issues/1
Objectives
Base Code
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
/**
@title An on-chain name registry
@author Calnix
@notice A registed name can be released, availing to be registered by another user
*/
contract SimpleNameRegister {
/// @notice Map a name to an address to identify current holder
mapping (string => address) public holder;
/// @notice Emit event when a name is registered
event Register(address indexed holder, string name);
/// @notice Emit event when a name is released
event Release(address indexed holder, string name);
/// @notice User can register an available name
/// @param name The string to register
function register(string calldata name) external {
require(holder[name] == address(0), "Already registered!");
holder[name] = msg.sender;
emit Register(msg.sender, name);
}
/// @notice Holder can release a name, making it available
/// @param name The string to release
function release(string calldata name) external {
require(holder[name] == msg.sender, "Not your name!");
delete holder[name];
emit Release(msg.sender, name);
}
}1. Mapping associating names to their respective owner's address
2. Function to allow a user to register their ownership of a name
3. Function to allow a user to relinquish their ownership of a name
Events
Problem:
Solution: Using Events
Testing
function setUp()
Linear vs State Inheritance Approach
Deployment
Verifying
Check verification
Last updated