π§Mapping of addresses
In this section you'll see how to create a proper Solidity mapping linking two addresses (EVM/Substrate).
Solidity Example
PlayerRegistry Contract:
mapping(address => Player) public players
: This mapping stores the player information, where the key is the Ethereum address, and the value is aPlayer
struct containing the EVM address and Substrate address.struct Player
: This struct defines the structure of player data, including the EVM address and Substrate address.
onlyEvmAddress Modifier:
modifier onlyEvmAddress()
: This modifier ensures that the function can only be executed by the EVM address associated with the player making the request. It checks if themsg.sender
(the caller of the function) matches the stored EVM address in the player's data.
registerPlayer Function:
function registerPlayer(address _evmAddress, string memory _substrateAddress) public
: This function allows a player to register by providing their EVM address and Substrate address.
doSomethingRestricted Function:
function doSomethingRestricted() public onlyEvmAddress
: This is an example function that uses theonlyEvmAddress
modifier, ensuring that only the player's EVM address can call this function. You can add your restricted logic within this function.
getSubstrateAddress Function:
function getSubstrateAddress() public view returns (string memory)
: This function allows anyone to retrieve the Substrate address associated with their Ethereum address.
This contract provides a basic structure for managing player information with restricted access to certain functions based on the player's EVM address.
Last updated