| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- # This script prepares a local Squads multisig deployment for use with
- # the multisig-wh-message-builder
- import errno
- import os
- import sys
- from pyth_utils import *
- MULTISIG_SCRIPT_CMD_PREFIX = "npm run start --".split(" ")
- MULTISIG_SCRIPT_DIR = os.environ.get("MULTISIG_SCRIPT_DIR", "/root/pyth/multisig-wh-message-builder")
- MESH_KEY_DIR = "/usr/src/solana/keys/squads/"
- MESH_PROGRAM_ADDR = "SMPLVC8MxZ5Bf5EfF7PaMiTCxoBAcmkbM2vkrvMK8ho"
- MESH_CREATE_KEY_PATH = MESH_KEY_DIR + "create_key.json"
- MESH_VAULT_EXT_AUTHORITY_KEY_PATH = MESH_KEY_DIR + "external_authority.json"
- ALICE_KEY_PATH = MESH_KEY_DIR + "member_alice.json"
- BOB_KEY_PATH = MESH_KEY_DIR + "member_bob.json"
- CAROL_KEY_PATH = MESH_KEY_DIR + "member_carol.json"
- create_key_addr = sol_run_or_die("address", ["--keypair", MESH_CREATE_KEY_PATH], capture_output=True).stdout.strip()
- ext_authority_addr = sol_run_or_die("address", ["--keypair", MESH_VAULT_EXT_AUTHORITY_KEY_PATH], capture_output=True).stdout.strip()
- alice_addr = sol_run_or_die("address", ["--keypair", ALICE_KEY_PATH], capture_output=True).stdout.strip()
- bob_addr = sol_run_or_die("address", ["--keypair", BOB_KEY_PATH], capture_output=True).stdout.strip()
- carol_addr = sol_run_or_die("address", ["--keypair", CAROL_KEY_PATH], capture_output=True).stdout.strip()
- # wrap run_or_die in msg builder common cli args
- def msg_builder_run_or_die(args = [], debug=False, **kwargs):
- """
- Message builder boilerplate in front of run_or_die()
- """
- return run_or_die(
- MULTISIG_SCRIPT_CMD_PREFIX + args, cwd=MULTISIG_SCRIPT_DIR, debug=debug, **kwargs)
- # create a Multisig Vault
- res = msg_builder_run_or_die([
- "init-vault",
- "-k", create_key_addr,
- "-x", ext_authority_addr,
- "-p", SOL_PAYER_KEYPAIR,
- "-c", "localdevnet",
- "-r", SOL_RPC_URL,
- "-i", f"{alice_addr},{bob_addr},{carol_addr}",
- "-t", "2", # 2/3 threshold
- ],
- capture_output=True, debug=True, die=False)
- if res.returncode == errno.EEXIST:
- print("WARNING: Skipping vault creation and testing, received EEXIST from script", file=sys.stderr)
- elif res.returncode != 0:
- print(f"ERROR: unexpected failure with code {res.returncode}", file=sys.stderr)
- sys.exit(res.returncode)
- else:
- print("Vault created, starting test routine", file=sys.stderr)
- # TODO(2022-12-08): Add test scenarios
- sys.stderr.flush()
- readiness()
|