kopia lustrzana https://github.com/bugout-dev/dao
Added payment token functionality to TerminusFacet
rodzic
44aa774e5c
commit
96829f26bd
|
@ -23,6 +23,8 @@ library LibTerminus {
|
|||
address controller;
|
||||
bool isTerminusActive;
|
||||
uint256 currentPoolID;
|
||||
address paymentToken;
|
||||
uint256 poolBasePrice;
|
||||
// Terminus pools
|
||||
mapping(uint256 => address) poolController;
|
||||
mapping(uint256 => bool) poolActive;
|
||||
|
@ -79,7 +81,7 @@ library LibTerminus {
|
|||
emit PoolControlTransferred(poolID, previousController, newController);
|
||||
}
|
||||
|
||||
function createPool() internal returns (uint256) {
|
||||
function createSimplePool() internal returns (uint256) {
|
||||
TerminusStorage storage ts = terminusStorage();
|
||||
uint256 poolID = ts.currentPoolID + 1;
|
||||
setPoolController(poolID, msg.sender);
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
pragma solidity ^0.8.0;
|
||||
|
||||
import "@openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
|
||||
import "./ERC1155WithTerminusStorage.sol";
|
||||
import "./LibTerminus.sol";
|
||||
import "../diamond/libraries/LibDiamond.sol";
|
||||
|
@ -20,6 +21,27 @@ contract TerminusFacet is ERC1155WithTerminusStorage {
|
|||
return LibTerminus.terminusStorage().controller;
|
||||
}
|
||||
|
||||
function paymentToken() external view returns (address) {
|
||||
return LibTerminus.terminusStorage().paymentToken;
|
||||
}
|
||||
|
||||
function setPaymentToken(address newPaymentToken) external {
|
||||
LibTerminus.enforceIsController();
|
||||
LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage();
|
||||
ts.paymentToken = newPaymentToken;
|
||||
}
|
||||
|
||||
function _paymentTokenContract() internal view returns (IERC20) {
|
||||
address paymentTokenAddress = LibTerminus
|
||||
.terminusStorage()
|
||||
.paymentToken;
|
||||
require(
|
||||
paymentTokenAddress != address(0),
|
||||
"TerminusFacet: Payment token has not been set"
|
||||
);
|
||||
return IERC20(paymentTokenAddress);
|
||||
}
|
||||
|
||||
function setURI(uint256 poolID, string memory poolURI) external {
|
||||
LibTerminus.enforcePoolIsController(poolID, _msgSender());
|
||||
LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage();
|
||||
|
@ -30,8 +52,21 @@ contract TerminusFacet is ERC1155WithTerminusStorage {
|
|||
return LibTerminus.terminusStorage().currentPoolID;
|
||||
}
|
||||
|
||||
function createPool() external returns (uint256) {
|
||||
return LibTerminus.createPool();
|
||||
function createSimplePool() external returns (uint256) {
|
||||
LibTerminus.TerminusStorage storage ts = LibTerminus.terminusStorage();
|
||||
uint256 requiredPayment = ts.poolBasePrice;
|
||||
IERC20 paymentTokenContract = _paymentTokenContract();
|
||||
require(
|
||||
paymentTokenContract.allowance(_msgSender(), address(this)) >=
|
||||
requiredPayment,
|
||||
"TerminusFacet: createSimplePool -- Insufficient allowance on payment token"
|
||||
);
|
||||
paymentTokenContract.transferFrom(
|
||||
msg.sender,
|
||||
address(this),
|
||||
requiredPayment
|
||||
);
|
||||
return LibTerminus.createSimplePool();
|
||||
}
|
||||
|
||||
function terminusPoolController(uint256 poolID)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Code generated by moonworm : https://github.com/bugout-dev/moonworm
|
||||
# Moonworm version : 0.1.8
|
||||
# Moonworm version : 0.1.9
|
||||
|
||||
import argparse
|
||||
import json
|
||||
|
@ -98,9 +98,9 @@ class TerminusFacet:
|
|||
self.assert_contract_is_instantiated()
|
||||
return self.contract.balanceOfBatch.call(accounts, ids)
|
||||
|
||||
def create_pool(self, transaction_config) -> Any:
|
||||
def create_simple_pool(self, transaction_config) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.createPool(transaction_config)
|
||||
return self.contract.createSimplePool(transaction_config)
|
||||
|
||||
def is_approved_for_all(
|
||||
self, account: ChecksumAddress, operator: ChecksumAddress
|
||||
|
@ -130,6 +130,10 @@ class TerminusFacet:
|
|||
self.assert_contract_is_instantiated()
|
||||
return self.contract.mintBatch(to, pool_i_ds, amounts, data, transaction_config)
|
||||
|
||||
def payment_token(self) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.paymentToken.call()
|
||||
|
||||
def safe_batch_transfer_from(
|
||||
self,
|
||||
from_: ChecksumAddress,
|
||||
|
@ -164,6 +168,12 @@ class TerminusFacet:
|
|||
self.assert_contract_is_instantiated()
|
||||
return self.contract.setApprovalForAll(operator, approved, transaction_config)
|
||||
|
||||
def set_payment_token(
|
||||
self, new_payment_token: ChecksumAddress, transaction_config
|
||||
) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.setPaymentToken(new_payment_token, transaction_config)
|
||||
|
||||
def set_uri(self, pool_id: int, pool_uri: str, transaction_config) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.setURI(pool_id, pool_uri, transaction_config)
|
||||
|
@ -196,6 +206,8 @@ def get_transaction_config(args: argparse.Namespace) -> Dict[str, Any]:
|
|||
transaction_config["gas_price"] = args.gas_price
|
||||
if args.confirmations is not None:
|
||||
transaction_config["required_confs"] = args.confirmations
|
||||
if args.nonce is not None:
|
||||
transaction_config["nonce"] = args.nonce
|
||||
return transaction_config
|
||||
|
||||
|
||||
|
@ -225,6 +237,9 @@ def add_default_arguments(parser: argparse.ArgumentParser, transact: bool) -> No
|
|||
default=None,
|
||||
help="Number of confirmations to await before considering a transaction completed",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--nonce", type=int, default=None, help="Nonce for the transaction (optional)"
|
||||
)
|
||||
|
||||
|
||||
def handle_deploy(args: argparse.Namespace) -> None:
|
||||
|
@ -249,11 +264,11 @@ def handle_balance_of_batch(args: argparse.Namespace) -> None:
|
|||
print(result)
|
||||
|
||||
|
||||
def handle_create_pool(args: argparse.Namespace) -> None:
|
||||
def handle_create_simple_pool(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = TerminusFacet(args.address)
|
||||
transaction_config = get_transaction_config(args)
|
||||
result = contract.create_pool(transaction_config=transaction_config)
|
||||
result = contract.create_simple_pool(transaction_config=transaction_config)
|
||||
print(result)
|
||||
|
||||
|
||||
|
@ -292,6 +307,13 @@ def handle_mint_batch(args: argparse.Namespace) -> None:
|
|||
print(result)
|
||||
|
||||
|
||||
def handle_payment_token(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = TerminusFacet(args.address)
|
||||
result = contract.payment_token()
|
||||
print(result)
|
||||
|
||||
|
||||
def handle_safe_batch_transfer_from(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = TerminusFacet(args.address)
|
||||
|
@ -334,6 +356,16 @@ def handle_set_approval_for_all(args: argparse.Namespace) -> None:
|
|||
print(result)
|
||||
|
||||
|
||||
def handle_set_payment_token(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = TerminusFacet(args.address)
|
||||
transaction_config = get_transaction_config(args)
|
||||
result = contract.set_payment_token(
|
||||
new_payment_token=args.new_payment_token, transaction_config=transaction_config
|
||||
)
|
||||
print(result)
|
||||
|
||||
|
||||
def handle_set_uri(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = TerminusFacet(args.address)
|
||||
|
@ -408,9 +440,9 @@ def generate_cli() -> argparse.ArgumentParser:
|
|||
)
|
||||
balance_of_batch_parser.set_defaults(func=handle_balance_of_batch)
|
||||
|
||||
create_pool_parser = subcommands.add_parser("create-pool")
|
||||
add_default_arguments(create_pool_parser, True)
|
||||
create_pool_parser.set_defaults(func=handle_create_pool)
|
||||
create_simple_pool_parser = subcommands.add_parser("create-simple-pool")
|
||||
add_default_arguments(create_simple_pool_parser, True)
|
||||
create_simple_pool_parser.set_defaults(func=handle_create_simple_pool)
|
||||
|
||||
is_approved_for_all_parser = subcommands.add_parser("is-approved-for-all")
|
||||
add_default_arguments(is_approved_for_all_parser, False)
|
||||
|
@ -446,6 +478,10 @@ def generate_cli() -> argparse.ArgumentParser:
|
|||
)
|
||||
mint_batch_parser.set_defaults(func=handle_mint_batch)
|
||||
|
||||
payment_token_parser = subcommands.add_parser("payment-token")
|
||||
add_default_arguments(payment_token_parser, False)
|
||||
payment_token_parser.set_defaults(func=handle_payment_token)
|
||||
|
||||
safe_batch_transfer_from_parser = subcommands.add_parser("safe-batch-transfer-from")
|
||||
add_default_arguments(safe_batch_transfer_from_parser, True)
|
||||
safe_batch_transfer_from_parser.add_argument(
|
||||
|
@ -492,6 +528,13 @@ def generate_cli() -> argparse.ArgumentParser:
|
|||
)
|
||||
set_approval_for_all_parser.set_defaults(func=handle_set_approval_for_all)
|
||||
|
||||
set_payment_token_parser = subcommands.add_parser("set-payment-token")
|
||||
add_default_arguments(set_payment_token_parser, True)
|
||||
set_payment_token_parser.add_argument(
|
||||
"--new-payment-token", required=True, help="Type: address"
|
||||
)
|
||||
set_payment_token_parser.set_defaults(func=handle_set_payment_token)
|
||||
|
||||
set_uri_parser = subcommands.add_parser("set-uri")
|
||||
add_default_arguments(set_uri_parser, True)
|
||||
set_uri_parser.add_argument(
|
||||
|
|
2
setup.py
2
setup.py
|
@ -12,7 +12,7 @@ setup(
|
|||
extras_require={
|
||||
"dev": [
|
||||
"black",
|
||||
"moonworm",
|
||||
"moonworm >= 0.1.9",
|
||||
],
|
||||
"distribute": ["setuptools", "twine", "wheel"],
|
||||
},
|
||||
|
|
Ładowanie…
Reference in New Issue