Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00
Cross-Chain Transactions
Loading...
Loading
Contract Name:
RolesRepo
Compiler Version
v0.8.8+commit.dddeac2f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
/* *
* Copyright (c) 2021-2023 LI LI @ JINGTIAN & GONGCHENG.
*
* This WORK is licensed under ComBoox SoftWare License 1.0, a copy of which
* can be obtained at:
* [https://github.com/paul-lee-attorney/comboox]
*
* THIS WORK IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
* WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. IN NO
* EVENT SHALL ANY CONTRIBUTOR BE LIABLE TO YOU FOR ANY DAMAGES.
*
* YOU ARE PROHIBITED FROM DEPLOYING THE SMART CONTRACTS OF THIS WORK, IN WHOLE
* OR IN PART, FOR WHATEVER PURPOSE, ON ANY BLOCKCHAIN NETWORK THAT HAS ONE OR
* MORE NODES THAT ARE OUT OF YOUR CONTROL.
* */
pragma solidity ^0.8.8;
library RolesRepo {
struct Role {
address admin;
mapping(address => bool) isMember;
}
struct Repo {
address owner;
uint8 state; // 0-pending; 1-initiated; 2-finalized
mapping(bytes32 => Role) roles;
}
// ##################
// ## Modifier ##
// ##################
modifier isOwner(Repo storage repo, address caller) {
require(
repo.owner == caller,
"RR.isOwner: not owner"
);
_;
}
modifier isRoleAdmin(Repo storage repo, bytes32 role,
address caller)
{
require(
repo.roles[role].admin == caller,
"RR.isRoleAdmin: not admin"
);
_;
}
// #################
// ## Write ##
// #################
function initDoc(Repo storage repo, address owner) public
{
require(repo.state == 0, "already initiated");
repo.state = 1;
repo.owner = owner;
}
function setOwner(
Repo storage repo,
address acct,
address caller
) public isOwner(repo, caller){
repo.owner = acct;
}
// ==== role ====
function setRoleAdmin(
Repo storage repo,
bytes32 role,
address acct,
address caller
) public isOwner(repo, caller) {
repo.roles[role].admin = acct;
repo.roles[role].isMember[acct] = true;
}
function quitRoleAdmin(
Repo storage repo,
bytes32 role,
address caller
) public isRoleAdmin(repo, role, caller) {
delete repo.roles[role].admin;
delete repo.roles[role].isMember[caller];
}
function grantRole(
Repo storage repo,
bytes32 role,
address acct,
address caller
) public isRoleAdmin(repo, role, caller) {
repo.roles[role].isMember[acct] = true;
}
function revokeRole(
Repo storage repo,
bytes32 role,
address acct,
address caller
) public isRoleAdmin(repo, role, caller) {
delete repo.roles[role].isMember[acct];
}
function renounceRole(
Repo storage repo,
bytes32 role,
address caller
) public {
delete repo.roles[role].isMember[caller];
}
function abandonRole(
Repo storage repo,
bytes32 role,
address caller
) public isOwner(repo, caller) {
delete repo.roles[role];
}
// ###############
// ## Read ##
// ###############
function getOwner(
Repo storage repo
) public view returns (address) {
return repo.owner;
}
function getRoleAdmin(Repo storage repo, bytes32 role)
public view returns (address)
{
return repo.roles[role].admin;
}
function hasRole(
Repo storage repo,
bytes32 role,
address acct
) public view returns (bool) {
return repo.roles[role].isMember[acct];
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract Creation Code
61077e61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b35760003560e01c80639423dd051161007b5780639423dd05146101bc57806394916c47146102015780639fd7a4801461021c578063a2b745dd1461023c578063bf2755e31461025c578063f17b81511461027c57600080fd5b80632c7ebf73146100b8578063303b779f1461010c5780633d3c5d271461012e57806351e7e8051461014e5780635a2cc4461461016e575b600080fd5b6100f76100c63660046105cd565b60009182526001928301602090815260408084206001600160a01b0393909316845291909301909252205460ff1690565b60405190151581526020015b60405180910390f35b81801561011857600080fd5b5061012c610127366004610602565b61029c565b005b81801561013a57600080fd5b5061012c610149366004610602565b61031d565b81801561015a57600080fd5b5061012c610169366004610648565b610397565b81801561017a57600080fd5b5061012c6101893660046105cd565b60009182526001928301602090815260408084206001600160a01b0390931684529190930190925220805460ff19169055565b6101e96101ca36600461067b565b600090815260019190910160205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610103565b6101e961020f36600461069d565b546001600160a01b031690565b81801561022857600080fd5b5061012c6102373660046106b6565b6103eb565b81801561024857600080fd5b5061012c6102573660046105cd565b61045c565b81801561026857600080fd5b5061012c6102773660046105cd565b6104e2565b81801561028857600080fd5b5061012c610297366004610602565b610536565b60008381526001850160205260409020548490849083906001600160a01b038083169116146102e65760405162461bcd60e51b81526004016102dd906106e2565b60405180910390fd5b5050506000928352506001928301602090815260408084206001600160a01b0390931684529190930190925220805460ff19169055565b60008381526001850160205260409020548490849083906001600160a01b0380831691161461035e5760405162461bcd60e51b81526004016102dd906106e2565b5050506000928352506001928301602090815260408084206001600160a01b03909316845291840190529020805460ff19169091179055565b8254839082906001600160a01b038083169116146103c75760405162461bcd60e51b81526004016102dd90610719565b505082546001600160a01b0319166001600160a01b03929092169190911790915550565b8154600160a01b900460ff16156104385760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e481a5b9a5d1a585d1959607a1b60448201526064016102dd565b81546001600160a01b039091166001600160a81b031990911617600160a01b179055565b60008281526001840160205260409020548390839083906001600160a01b0380831691161461049d5760405162461bcd60e51b81526004016102dd906106e2565b505050600091825260019283016020908152604080842080546001600160a01b03191681556001600160a01b039390931684529190930190925220805460ff19169055565b8254839082906001600160a01b038083169116146105125760405162461bcd60e51b81526004016102dd90610719565b505050600090815260019091016020526040902080546001600160a01b0319169055565b8354849082906001600160a01b038083169116146105665760405162461bcd60e51b81526004016102dd90610719565b505050600091825260019283016020908152604080842080546001600160a01b039094166001600160a01b03199094168417815592845291840190529020805460ff19169091179055565b80356001600160a01b03811681146105c857600080fd5b919050565b6000806000606084860312156105e257600080fd5b83359250602084013591506105f9604085016105b1565b90509250925092565b6000806000806080858703121561061857600080fd5b843593506020850135925061062f604086016105b1565b915061063d606086016105b1565b905092959194509250565b60008060006060848603121561065d57600080fd5b8335925061066d602085016105b1565b91506105f9604085016105b1565b6000806040838503121561068e57600080fd5b50508035926020909101359150565b6000602082840312156106af57600080fd5b5035919050565b600080604083850312156106c957600080fd5b823591506106d9602084016105b1565b90509250929050565b60208082526019908201527f52522e6973526f6c6541646d696e3a206e6f742061646d696e00000000000000604082015260600190565b60208082526015908201527429291734b9a7bbb732b91d103737ba1037bbb732b960591b60408201526060019056fea26469706673582212204826e5c3088bb73dcf2f83c65bc3ea9df047e287da408713205be028f943447664736f6c63430008080033
Deployed Bytecode
0x73bd04750ec4ecc513c81db997f06d615349d6215d30146080604052600436106100b35760003560e01c80639423dd051161007b5780639423dd05146101bc57806394916c47146102015780639fd7a4801461021c578063a2b745dd1461023c578063bf2755e31461025c578063f17b81511461027c57600080fd5b80632c7ebf73146100b8578063303b779f1461010c5780633d3c5d271461012e57806351e7e8051461014e5780635a2cc4461461016e575b600080fd5b6100f76100c63660046105cd565b60009182526001928301602090815260408084206001600160a01b0393909316845291909301909252205460ff1690565b60405190151581526020015b60405180910390f35b81801561011857600080fd5b5061012c610127366004610602565b61029c565b005b81801561013a57600080fd5b5061012c610149366004610602565b61031d565b81801561015a57600080fd5b5061012c610169366004610648565b610397565b81801561017a57600080fd5b5061012c6101893660046105cd565b60009182526001928301602090815260408084206001600160a01b0390931684529190930190925220805460ff19169055565b6101e96101ca36600461067b565b600090815260019190910160205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610103565b6101e961020f36600461069d565b546001600160a01b031690565b81801561022857600080fd5b5061012c6102373660046106b6565b6103eb565b81801561024857600080fd5b5061012c6102573660046105cd565b61045c565b81801561026857600080fd5b5061012c6102773660046105cd565b6104e2565b81801561028857600080fd5b5061012c610297366004610602565b610536565b60008381526001850160205260409020548490849083906001600160a01b038083169116146102e65760405162461bcd60e51b81526004016102dd906106e2565b60405180910390fd5b5050506000928352506001928301602090815260408084206001600160a01b0390931684529190930190925220805460ff19169055565b60008381526001850160205260409020548490849083906001600160a01b0380831691161461035e5760405162461bcd60e51b81526004016102dd906106e2565b5050506000928352506001928301602090815260408084206001600160a01b03909316845291840190529020805460ff19169091179055565b8254839082906001600160a01b038083169116146103c75760405162461bcd60e51b81526004016102dd90610719565b505082546001600160a01b0319166001600160a01b03929092169190911790915550565b8154600160a01b900460ff16156104385760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e481a5b9a5d1a585d1959607a1b60448201526064016102dd565b81546001600160a01b039091166001600160a81b031990911617600160a01b179055565b60008281526001840160205260409020548390839083906001600160a01b0380831691161461049d5760405162461bcd60e51b81526004016102dd906106e2565b505050600091825260019283016020908152604080842080546001600160a01b03191681556001600160a01b039390931684529190930190925220805460ff19169055565b8254839082906001600160a01b038083169116146105125760405162461bcd60e51b81526004016102dd90610719565b505050600090815260019091016020526040902080546001600160a01b0319169055565b8354849082906001600160a01b038083169116146105665760405162461bcd60e51b81526004016102dd90610719565b505050600091825260019283016020908152604080842080546001600160a01b039094166001600160a01b03199094168417815592845291840190529020805460ff19169091179055565b80356001600160a01b03811681146105c857600080fd5b919050565b6000806000606084860312156105e257600080fd5b83359250602084013591506105f9604085016105b1565b90509250925092565b6000806000806080858703121561061857600080fd5b843593506020850135925061062f604086016105b1565b915061063d606086016105b1565b905092959194509250565b60008060006060848603121561065d57600080fd5b8335925061066d602085016105b1565b91506105f9604085016105b1565b6000806040838503121561068e57600080fd5b50508035926020909101359150565b6000602082840312156106af57600080fd5b5035919050565b600080604083850312156106c957600080fd5b823591506106d9602084016105b1565b90509250929050565b60208082526019908201527f52522e6973526f6c6541646d696e3a206e6f742061646d696e00000000000000604082015260600190565b60208082526015908201527429291734b9a7bbb732b91d103737ba1037bbb732b960591b60408201526060019056fea26469706673582212204826e5c3088bb73dcf2f83c65bc3ea9df047e287da408713205be028f943447664736f6c63430008080033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.