# Solidity API ## NotImplemented ```solidity error NotImplemented() ``` ## WakuRln ### contractIndex ```solidity uint16 contractIndex ``` ### constructor ```solidity constructor(address _poseidonHasher, uint16 _contractIndex) public ``` ### \_register ```solidity function _register(uint256 idCommitment) internal ``` Registers a member #### Parameters | Name | Type | Description | | ------------ | ------- | ------------------------------ | | idCommitment | uint256 | The idCommitment of the member | ### register ```solidity function register(uint256[] idCommitments) external ``` ### register ```solidity function register(uint256 idCommitment) external payable ``` Allows a user to register as a member #### Parameters | Name | Type | Description | | ------------ | ------- | ------------------------------ | | idCommitment | uint256 | The idCommitment of the member | ### slash ```solidity function slash(uint256 idCommitment, address payable receiver, uint256[8] proof) external pure ``` _Allows a user to slash a member_ #### Parameters | Name | Type | Description | | ------------ | --------------- | ------------------------------ | | idCommitment | uint256 | The idCommitment of the member | | receiver | address payable | | | proof | uint256[8] | | ### \_validateRegistration ```solidity function _validateRegistration(uint256 idCommitment) internal view ``` _Inheriting contracts MUST override this function_ ### \_validateSlash ```solidity function _validateSlash(uint256 idCommitment, address payable receiver, uint256[8] proof) internal pure ``` ### withdraw ```solidity function withdraw() external pure ``` Allows a user to withdraw funds allocated to them upon slashing a member ## StorageAlreadyExists ```solidity error StorageAlreadyExists(address storageAddress) ``` ## NoStorageContractAvailable ```solidity error NoStorageContractAvailable() ``` ## FailedToRegister ```solidity error FailedToRegister(string reason) ``` ## WakuRlnRegistry ### currentStorageIndex ```solidity uint16 currentStorageIndex ``` ### storages ```solidity mapping(uint16 => address) storages ``` ### usingStorageIndex ```solidity uint16 usingStorageIndex ``` ### poseidonHasher ```solidity contract IPoseidonHasher poseidonHasher ``` ### NewStorageContract ```solidity event NewStorageContract(uint16 index, address storageAddress) ``` ### constructor ```solidity constructor(address _poseidonHasher) public ``` ### \_insertIntoStorageMap ```solidity function _insertIntoStorageMap(address storageAddress) internal ``` ### registerStorage ```solidity function registerStorage(address storageAddress) external ``` ### newStorage ```solidity function newStorage() external ``` ### register ```solidity function register(uint256 commitment) external payable ```