diff --git a/contracts/moonstream/ERC20Facet.sol b/contracts/moonstream/ERC20Facet.sol index 1f7d515..38ec9c2 100644 --- a/contracts/moonstream/ERC20Facet.sol +++ b/contracts/moonstream/ERC20Facet.sol @@ -16,6 +16,10 @@ import "../diamond/libraries/LibDiamond.sol"; contract ERC20Facet is ERC20WithCommonStorage { constructor() {} + function controller() external view returns (address) { + return LibERC20.erc20Storage().controller; + } + function mint(address account, uint256 amount) external { LibERC20.enforceIsController(); _mint(account, amount); diff --git a/contracts/terminus/TerminusFacet.sol b/contracts/terminus/TerminusFacet.sol index 4f74e03..187e48b 100644 --- a/contracts/terminus/TerminusFacet.sol +++ b/contracts/terminus/TerminusFacet.sol @@ -16,6 +16,10 @@ import "../diamond/libraries/LibDiamond.sol"; contract TerminusFacet is ERC1155WithTerminusStorage { constructor() {} + function controller() external view returns (address) { + return LibTerminus.terminusStorage().controller; + } + function setURI(uint256 poolID, string memory poolURI) external { LibTerminus.enforcePoolIsController(poolID, _msgSender()); LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage(); diff --git a/dao/ERC20Facet.py b/dao/ERC20Facet.py index 96c2f24..4b9b20e 100644 --- a/dao/ERC20Facet.py +++ b/dao/ERC20Facet.py @@ -102,6 +102,10 @@ class ERC20Facet: self.assert_contract_is_instantiated() return self.contract.balanceOf.call(account) + def controller(self) -> Any: + self.assert_contract_is_instantiated() + return self.contract.controller.call() + def decimals(self) -> Any: self.assert_contract_is_instantiated() return self.contract.decimals.call() @@ -227,6 +231,13 @@ def handle_balance_of(args: argparse.Namespace) -> None: print(result) +def handle_controller(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = ERC20Facet(args.address) + result = contract.controller() + print(result) + + def handle_decimals(args: argparse.Namespace) -> None: network.connect(args.network) contract = ERC20Facet(args.address) @@ -354,6 +365,10 @@ def generate_cli() -> argparse.ArgumentParser: balance_of_parser.add_argument("--account", required=True, help="Type: address") balance_of_parser.set_defaults(func=handle_balance_of) + controller_parser = subcommands.add_parser("controller") + add_default_arguments(controller_parser, False) + controller_parser.set_defaults(func=handle_controller) + decimals_parser = subcommands.add_parser("decimals") add_default_arguments(decimals_parser, False) decimals_parser.set_defaults(func=handle_decimals) diff --git a/dao/TerminusFacet.py b/dao/TerminusFacet.py index 5b8da6d..c84b2b6 100644 --- a/dao/TerminusFacet.py +++ b/dao/TerminusFacet.py @@ -98,6 +98,10 @@ class TerminusFacet: self.assert_contract_is_instantiated() return self.contract.balanceOfBatch.call(accounts, ids) + def controller(self) -> Any: + self.assert_contract_is_instantiated() + return self.contract.controller.call() + def create_pool(self, transaction_config) -> Any: self.assert_contract_is_instantiated() return self.contract.createPool(transaction_config) @@ -241,6 +245,13 @@ def handle_balance_of_batch(args: argparse.Namespace) -> None: print(result) +def handle_controller(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = TerminusFacet(args.address) + result = contract.controller() + print(result) + + def handle_create_pool(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) @@ -386,6 +397,10 @@ def generate_cli() -> argparse.ArgumentParser: ) balance_of_batch_parser.set_defaults(func=handle_balance_of_batch) + controller_parser = subcommands.add_parser("controller") + add_default_arguments(controller_parser, False) + controller_parser.set_defaults(func=handle_controller) + create_pool_parser = subcommands.add_parser("create-pool") add_default_arguments(create_pool_parser, True) create_pool_parser.set_defaults(func=handle_create_pool)