Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: refactor chopstick to different package #149

Merged
merged 8 commits into from
Dec 5, 2023
7 changes: 7 additions & 0 deletions chopsticks/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"parachain": "acala",
"xcm": {
"relaychain": "polakdot",
"parachains": ["acala", "moonbeam"]
}
}
1 change: 1 addition & 0 deletions chopsticks/kurtosis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
name: "github.com/hugobyte/polkadot-kurtosis-package"
77 changes: 77 additions & 0 deletions chopsticks/main.star
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
"""
This package contains code for spawning the chopstick network.
"""

def run(plan, args):
service_details = {}
if args["parachain"] != None:
service_details["parachain"] = run_chopsticks_parachain(plan, args["parachain"])

if len(args["xcm"]) != 0:
plan.print("Running XCM service....")
if len(args["xcm"]["parachains"]) >= 2:
service_details["xcm"] = run_chopsticks_xcm(plan, args["xcm"]["relaychain"], args["xcm"]["parachains"])
else:
fail("xcm needs atleast two parachains")

return service_details



def run_chopsticks_parachain(plan, para_chain):
"""
Set up a service for the chopstick network for given parachain.

Args:
plan: The Kurtosis plan.
para_chain (str): The parachain to configure for the chopstick network.
"""

service_config = ServiceConfig(
image="node:latest",
ports={
"TCP": PortSpec(number=8000)
},
# public_ports={
# "TCP": PortSpec(number=8000)
# },
entrypoint=["/bin/sh", "-c", "yarn add @acala-network/chopsticks@latest && npx @acala-network/chopsticks --config=%s --port=8000 --allow-unresolved-imports=true" % (para_chain)]
)

service_details = plan.add_service(name="chopstick-%s" % para_chain, config=service_config)

return service_details


def run_chopsticks_xcm(plan, relay_chain, para_chains):
"""
Set up a service for the chopstick network with cross-chain messaging (xcm) support with give relachain and parachains.

Args:
plan: The Kurtosis plan.
relay_chain (str): The relay chain for cross-chain messaging.
para_chains (list): List of parachains to include in the network.
"""

exec_cmd = "npx @acala-network/chopsticks xcm"
exec_cmd = exec_cmd + " -r " + relay_chain

for para in para_chains:
exec_cmd = exec_cmd + " -p " + para

ports = {}
public_ports = {}

for i in range(0, len(para_chains) + 1):
ports["TCP" + str(i)] = PortSpec(number=8000 + i)
public_ports["TCP" + str(i)] = PortSpec(number=8000 + i)

service_config = ServiceConfig(
image="node:latest",
ports=ports,
public_ports=public_ports,
entrypoint=["/bin/sh", "-c", "yarn add @acala-network/chopsticks@latest && %s" % (exec_cmd)]
)

service_details = plan.add_service(name="chopstick-xcm", config=service_config)
return service_details