diff --git a/contracts/moonstream/ERC20Facet.sol b/contracts/moonstream/ERC20Facet.sol index 38ec9c2..1e7f8d9 100644 --- a/contracts/moonstream/ERC20Facet.sol +++ b/contracts/moonstream/ERC20Facet.sol @@ -16,7 +16,7 @@ import "../diamond/libraries/LibDiamond.sol"; contract ERC20Facet is ERC20WithCommonStorage { constructor() {} - function controller() external view returns (address) { + function moonstreamController() external view returns (address) { return LibERC20.erc20Storage().controller; } diff --git a/contracts/terminus/TerminusFacet.sol b/contracts/terminus/TerminusFacet.sol index 187e48b..94f9c2b 100644 --- a/contracts/terminus/TerminusFacet.sol +++ b/contracts/terminus/TerminusFacet.sol @@ -16,7 +16,7 @@ import "../diamond/libraries/LibDiamond.sol"; contract TerminusFacet is ERC1155WithTerminusStorage { constructor() {} - function controller() external view returns (address) { + function terminusController() external view returns (address) { return LibTerminus.terminusStorage().controller; } diff --git a/dao/ERC20Facet.py b/dao/ERC20Facet.py index 4b9b20e..dd1d9e7 100644 --- a/dao/ERC20Facet.py +++ b/dao/ERC20Facet.py @@ -102,10 +102,6 @@ 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() @@ -128,6 +124,10 @@ class ERC20Facet: self.assert_contract_is_instantiated() return self.contract.mint(account, amount, transaction_config) + def moonstream_controller(self) -> Any: + self.assert_contract_is_instantiated() + return self.contract.moonstreamController.call() + def name(self) -> Any: self.assert_contract_is_instantiated() return self.contract.name.call() @@ -231,13 +231,6 @@ 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) @@ -279,6 +272,13 @@ def handle_mint(args: argparse.Namespace) -> None: print(result) +def handle_moonstream_controller(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = ERC20Facet(args.address) + result = contract.moonstream_controller() + print(result) + + def handle_name(args: argparse.Namespace) -> None: network.connect(args.network) contract = ERC20Facet(args.address) @@ -365,10 +365,6 @@ 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) @@ -399,6 +395,10 @@ def generate_cli() -> argparse.ArgumentParser: mint_parser.add_argument("--amount", required=True, help="Type: uint256", type=int) mint_parser.set_defaults(func=handle_mint) + moonstream_controller_parser = subcommands.add_parser("moonstream-controller") + add_default_arguments(moonstream_controller_parser, False) + moonstream_controller_parser.set_defaults(func=handle_moonstream_controller) + name_parser = subcommands.add_parser("name") add_default_arguments(name_parser, False) name_parser.set_defaults(func=handle_name) diff --git a/dao/TerminusFacet.py b/dao/TerminusFacet.py index c84b2b6..c71adc3 100644 --- a/dao/TerminusFacet.py +++ b/dao/TerminusFacet.py @@ -98,10 +98,6 @@ 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) @@ -176,6 +172,10 @@ class TerminusFacet: self.assert_contract_is_instantiated() return self.contract.supportsInterface.call(interface_id) + def terminus_controller(self) -> Any: + self.assert_contract_is_instantiated() + return self.contract.terminusController.call() + def total_pools(self) -> Any: self.assert_contract_is_instantiated() return self.contract.totalPools.call() @@ -245,13 +245,6 @@ 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) @@ -356,6 +349,13 @@ def handle_supports_interface(args: argparse.Namespace) -> None: print(result) +def handle_terminus_controller(args: argparse.Namespace) -> None: + network.connect(args.network) + contract = TerminusFacet(args.address) + result = contract.terminus_controller() + print(result) + + def handle_total_pools(args: argparse.Namespace) -> None: network.connect(args.network) contract = TerminusFacet(args.address) @@ -397,10 +397,6 @@ 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) @@ -502,6 +498,10 @@ def generate_cli() -> argparse.ArgumentParser: ) supports_interface_parser.set_defaults(func=handle_supports_interface) + terminus_controller_parser = subcommands.add_parser("terminus-controller") + add_default_arguments(terminus_controller_parser, False) + terminus_controller_parser.set_defaults(func=handle_terminus_controller) + total_pools_parser = subcommands.add_parser("total-pools") add_default_arguments(total_pools_parser, False) total_pools_parser.set_defaults(func=handle_total_pools) diff --git a/dao/test_terminus.py b/dao/test_terminus.py new file mode 100644 index 0000000..aaa2f39 --- /dev/null +++ b/dao/test_terminus.py @@ -0,0 +1,36 @@ +import unittest + +from brownie import accounts +import brownie + +from . import TerminusFacet, TerminusInitializer +from .core import ZERO_ADDRESS, facet_cut +from .test_core import MoonstreamDAOTestCase, MoonstreamDAOFullTestCase + + +class TestDeployment(MoonstreamDAOTestCase): + def test_add_and_replace(self): + initializer = TerminusInitializer.TerminusInitializer(None) + initializer.deploy({"from": accounts[0]}) + + terminus_facet = TerminusFacet.TerminusFacet(None) + terminus_facet.deploy({"from": accounts[0]}) + + diamond_address = self.contracts["Diamond"] + facet_cut( + diamond_address, + "TerminusFacet", + terminus_facet.address, + "add", + {"from": accounts[0]}, + initializer.address, + ) + + diamond_terminus = TerminusFacet.TerminusFacet(diamond_address) + + controller = diamond_terminus.terminus_controller() + self.assertEqual(controller, accounts[0].address) + + +if __name__ == "__main__": + unittest.main()