Files
PolyWeather/scripts/encode_checkout_v2_constructor.py
2026-03-20 23:50:40 +08:00

47 lines
1.2 KiB
Python

#!/usr/bin/env python3
from __future__ import annotations
import argparse
import sys
from eth_abi import encode
from web3 import Web3
def main() -> int:
parser = argparse.ArgumentParser(
description="Encode PolyWeatherCheckoutV2 constructor args for PolygonScan verification.",
)
parser.add_argument("--owner", required=True, help="Owner or multisig address")
parser.add_argument("--treasury", required=True, help="Treasury address")
parser.add_argument(
"--signer",
required=True,
help="EIP-712 signer address (backend signer or multisig-controlled signer)",
)
args = parser.parse_args()
for name, value in {
"owner": args.owner,
"treasury": args.treasury,
"signer": args.signer,
}.items():
if not Web3.is_address(value):
print(f"invalid --{name} address", file=sys.stderr)
return 1
encoded = encode(
["address", "address", "address"],
[
Web3.to_checksum_address(args.owner),
Web3.to_checksum_address(args.treasury),
Web3.to_checksum_address(args.signer),
],
).hex()
print(encoded)
return 0
if __name__ == "__main__":
raise SystemExit(main())