Added script to create pool on TErminus contracts

Handles ERC20 allowances as well as setting of pool URI
pull/61/head
Neeraj Kashyap 2022-09-05 17:17:29 -07:00
rodzic 9be851fab9
commit 00b05e06e0
1 zmienionych plików z 70 dodań i 0 usunięć

Wyświetl plik

@ -0,0 +1,70 @@
"""
Create a Terminus pool and set its metadata
"""
import argparse
from brownie import network
from dao import TerminusFacet, ERC20Facet
parser = argparse.ArgumentParser("Create a Terminus pool and set its metadata")
TerminusFacet.add_default_arguments(parser, transact=True)
parser.add_argument(
"--capacity",
type=int,
default=2**256 - 1,
help="Maximum number of tokens in pool (default: 2^256 - 1)",
)
parser.add_argument(
"--transferable",
required=True,
type=TerminusFacet.boolean_argument_type,
help="Should pool be transferable? ('y' or 'yes' or 1 for yes, 'n' or 'no' or 0 for no)",
)
parser.add_argument(
"--burnable",
required=True,
type=TerminusFacet.boolean_argument_type,
help="Should pool be burnable? ('y' or 'yes' or 1 for yes, 'n' or 'no' or 0 for no)",
)
parser.add_argument(
"--uri", default=None, help="Set this if you would like to set a pool metadata URI"
)
args = parser.parse_args()
network.connect(args.network)
transaction_config = TerminusFacet.get_transaction_config(args)
sender = transaction_config["from"]
terminus_contract = TerminusFacet.TerminusFacet(args.address)
payment_token_address = terminus_contract.payment_token()
pool_price = terminus_contract.pool_base_price()
payment_token = ERC20Facet.ERC20Facet(payment_token_address)
sender_balance = payment_token.balance_of(sender.address)
assert (
sender_balance >= pool_price
), f"Insufficient balance on payment token ({payment_token_address}). Balance: {sender_balance}, required: {pool_price}"
sender_allowance = payment_token.allowance(sender.address, args.address)
if sender_allowance < pool_price:
print(f"Approve purchase with payment token ({payment_token_address}):")
payment_token.approve(args.address, pool_price, transaction_config)
print("Creating pool")
receipt = terminus_contract.create_pool_v1(
args.capacity, args.transferable, args.burnable, transaction_config
)
pool_id = terminus_contract.total_pools(block_number=receipt.block_number)
print(f"Pool created on Terminus contract ({args.address}). Pool ID: {pool_id}")
if args.uri:
print(
f"Setting pool URI. Terminus: {args.address}, Pool ID: {pool_id}, URI: {args.uri}"
)
terminus_contract.set_uri(pool_id, args.uri, transaction_config)