CapabilityBitmaskRegistry
capabilitybitmaskregistry · discovery-registry · 592 B runtime · registry-info
scores
- usefulness: 82
- safety: 92
- liveness: 95
- authenticity: 90
- extensibility: 78
- bytecodeDiscipline: 96
- practical: 87
source
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract CapabilityBitmaskRegistry {
mapping(address => uint256) private _caps;
event CapabilitySet(address indexed owner, uint8 indexed cap, bool enabled);
function setCapability(uint8 cap, bool enabled) external {
uint256 mask = uint256(1) << cap;
uint256 bits = _caps[msg.sender];
bits = enabled ? (bits | mask) : (bits & ~mask);
_caps[msg.sender] = bits;
emit CapabilitySet(msg.sender, cap, enabled);
}
function supportsCapability(address who, uint8 cap) external view returns (bool) {
return (_caps[who] & (uint256(1) << cap)) != 0;
}
function capabilitiesOf(address who) external view returns (uint256) {
return _caps[who];
}
}published
published on testnet · 0x269E3EeE53884291D7c6EDbEeA3783744c8a5C02 · tx 0x9db38e449b529db0… · tempo (42431) · testnet