Skip to content

Commit

Permalink
Merge pull request #163 from bugout-dev/dropper-v2
Browse files Browse the repository at this point in the history
  • Loading branch information
zomglings authored Mar 28, 2023
2 parents 348f8ee + da1712c commit af7972e
Show file tree
Hide file tree
Showing 13 changed files with 4,557 additions and 493 deletions.
779 changes: 779 additions & 0 deletions abi/Dropper/v0.1.0/Dropper.json

Large diffs are not rendered by default.

809 changes: 809 additions & 0 deletions abi/Dropper/v0.2.0/DropperFacet.json

Large diffs are not rendered by default.

341 changes: 232 additions & 109 deletions cli/enginecli/DropperV2Facet.py → cli/enginecli/DropperFacet.py

Large diffs are not rendered by default.

14 changes: 9 additions & 5 deletions cli/enginecli/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from . import (
core,
drop,
DropperFacet,
Dropper,
Lootbox,
MockErc20,
Expand All @@ -27,14 +28,17 @@ def main() -> None:
parser.set_defaults(func=lambda _: parser.print_help())
subparsers = parser.add_subparsers()

lootbox_parser = Lootbox.generate_cli()
subparsers.add_parser("lootbox", parents=[lootbox_parser], add_help=False)
core_parser = core.generate_cli()
subparsers.add_parser("core", parents=[core_parser], add_help=False)

dropper_parser = Dropper.generate_cli()
subparsers.add_parser("dropper", parents=[dropper_parser], add_help=False)
subparsers.add_parser("dropper-v1", parents=[dropper_parser], add_help=False)

core_parser = core.generate_cli()
subparsers.add_parser("core", parents=[core_parser], add_help=False)
dropper_facet_parser = DropperFacet.generate_cli()
subparsers.add_parser("dropper", parents=[dropper_facet_parser], add_help=False)

lootbox_parser = Lootbox.generate_cli()
subparsers.add_parser("lootbox", parents=[lootbox_parser], add_help=False)

erc20_parser = MockErc20.generate_cli()
subparsers.add_parser("erc20", parents=[erc20_parser], add_help=False)
Expand Down
84 changes: 81 additions & 3 deletions cli/enginecli/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
Diamond,
DiamondCutFacet,
DiamondLoupeFacet,
DropperFacet,
OwnershipFacet,
ReentrancyExploitable,
CraftingFacet,
Expand All @@ -27,16 +28,20 @@
FACETS: Dict[str, Any] = {
"DiamondCutFacet": DiamondCutFacet,
"DiamondLoupeFacet": DiamondLoupeFacet,
"DropperFacet": DropperFacet,
"OwnershipFacet": OwnershipFacet,
"ReentrancyExploitable": ReentrancyExploitable,
"CraftingFacet": CraftingFacet,
"GOFPFacet": GOFPFacet,
}

FACET_INIT_CALLDATA: Dict[str, str] = {
"DropperFacet": lambda address, *args: DropperFacet.DropperFacet(
address
).contract.init.encode_input(*args),
"GOFPFacet": lambda address, *args: GOFPFacet.GOFPFacet(
address
).contract.init.encode_input(*args)
).contract.init.encode_input(*args),
}

DIAMOND_FACET_PRECEDENCE: List[str] = [
Expand All @@ -53,6 +58,7 @@


class EngineFeatures(Enum):
DROPPER = "dropper"
GOFP = "GardenOfForkingPaths"


Expand All @@ -63,10 +69,14 @@ def feature_from_facet_name(facet_name: str) -> Optional[EngineFeatures]:
return None


FEATURE_FACETS: Dict[EngineFeatures, List[str]] = {EngineFeatures.GOFP: ["GOFPFacet"]}
FEATURE_FACETS: Dict[EngineFeatures, List[str]] = {
EngineFeatures.DROPPER: ["DropperFacet"],
EngineFeatures.GOFP: ["GOFPFacet"],
}

FEATURE_IGNORES: Dict[EngineFeatures, List[str]] = {
EngineFeatures.GOFP: {"methods": ["init"], "selectors": []}
EngineFeatures.DROPPER: {"methods": ["init"], "selectors": []},
EngineFeatures.GOFP: {"methods": ["init"], "selectors": []},
}

FACET_ACTIONS: Dict[str, int] = {"add": 0, "replace": 1, "remove": 2}
Expand Down Expand Up @@ -518,6 +528,36 @@ def lootbox_gogogo(
return contracts


def dropper_gogogo(
admin_terminus_address: str,
admin_terminus_pool_id: int,
transaction_config: Dict[str, Any],
) -> Dict[str, Any]:
deployment_info = diamond_gogogo(
owner_address=transaction_config["from"].address,
transaction_config=transaction_config,
)

dropper_facet = DropperFacet.DropperFacet(None)
dropper_facet.deploy(transaction_config=transaction_config)
deployment_info["contracts"]["DropperFacet"] = dropper_facet.address

diamond_address = deployment_info["contracts"]["Diamond"]
facet_cut(
diamond_address,
"DropperFacet",
dropper_facet.address,
"add",
transaction_config,
initializer_address=dropper_facet.address,
feature=EngineFeatures.DROPPER,
initializer_args=[admin_terminus_address, admin_terminus_pool_id],
)
deployment_info["attached"].append("DropperFacet")

return deployment_info


def gofp_gogogo(
admin_terminus_address: str,
admin_terminus_pool_id: int,
Expand Down Expand Up @@ -588,6 +628,18 @@ def handle_lootbox_gogogo(args: argparse.Namespace) -> None:
json.dump(result, sys.stdout, indent=4)


def handle_dropper_gogogo(args: argparse.Namespace) -> None:
network.connect(args.network)
transaction_config = MockTerminus.get_transaction_config(args)
result = dropper_gogogo(
args.terminus_address, args.terminus_pool_id, transaction_config
)
if args.outfile is not None:
with args.outfile:
json.dump(result, args.outfile)
json.dump(result, sys.stdout, indent=4)


def handle_gofp_gogogo(args: argparse.Namespace) -> None:
network.connect(args.network)
transaction_config = MockTerminus.get_transaction_config(args)
Expand Down Expand Up @@ -687,6 +739,32 @@ def generate_cli():
)
facet_cut_parser.set_defaults(func=handle_facet_cut)

dropper_gogogo_parser = subcommands.add_parser(
"dropper-gogogo",
help="Deploy Dropper diamond contract",
description="Deploy Dropper diamond contract",
)
Diamond.add_default_arguments(dropper_gogogo_parser, transact=True)
dropper_gogogo_parser.add_argument(
"--terminus-address",
required=True,
help="Address of Terminus contract defining access control for this Dropper contract",
)
dropper_gogogo_parser.add_argument(
"--terminus-pool-id",
required=True,
type=int,
help="Pool ID of Terminus pool for administrators of this dropper contract",
)
dropper_gogogo_parser.add_argument(
"-o",
"--outfile",
type=argparse.FileType("w"),
default=None,
help="(Optional) file to write deployed addresses to",
)
dropper_gogogo_parser.set_defaults(func=handle_dropper_gogogo)

gofp_gogogo_parser = subcommands.add_parser(
"gofp-gogogo",
help="Deploy gofp diamond contract",
Expand Down
Loading

0 comments on commit af7972e

Please sign in to comment.