diff --git a/READMEs/main-flow.md b/READMEs/main-flow.md index 565f58e61..a837089b8 100644 --- a/READMEs/main-flow.md +++ b/READMEs/main-flow.md @@ -174,15 +174,22 @@ Ocean's architecture allows for >1 implementations of ERC20, each with its own " Template 1: - Solidity: [ERC20Template.sol](https://github.com/oceanprotocol/contracts/blob/main/contracts/templates/ERC20Template.sol) -- Python wrapper: [Datatoken](https://github.com/oceanprotocol/ocean.py/blob/main/ocean_lib/models/datatoken.py). It has a Python method for every Solidity method, via Brownie. +- Python wrapper: [Datatoken1](https://github.com/oceanprotocol/ocean.py/blob/main/ocean_lib/models/datatoken.py). It has a Python method for every Solidity method, via Brownie. - Implements methods like `start_order()`, `create_exchange()`, and `create_dispenser()` to enhance developer experience. Template 2: - Inherits from template 1 in both Solidity and Python. - Solidity: [ERC20TemplateEnterprise.sol](https://github.com/oceanprotocol/contracts/blob/main/contracts/templates/ERC20TemplateEnterprise.sol) -- Python wrapper: [DatatokenEnterprise](https://github.com/oceanprotocol/ocean.py/blob/main/ocean_lib/models/datatoken_enterprise.py) -- New method: [`buy_DT_and_order()`](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken_enterprise.py#L20). This uses just 1 tx to do both actions at once (versus 2 txs for template 1). -- New method: [`dispense_and_order()`](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken_enterprise.py#L70). Similarly, uses just 1 tx. +- Python wrapper: [Datatoken2](https://github.com/oceanprotocol/ocean.py/blob/main/ocean_lib/models/datatoken2.py) +- New method: [`buy_DT_and_order()`](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken2.py#L20). This uses just 1 tx to do both actions at once (versus 2 txs for template 1). +- New method: [`dispense_and_order()`](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken2.py#L70). Similarly, uses just 1 tx. + +Below you can find an explanatory table describing the template attributes: + +Template # | Class Label | Allows dispense by default? | Allows non-custody of datatokens? | Combines txs? | Allows non-custody of url? +:----: | :----: | :----: | :----: | :----: | :----: +1 | Datatoken1 | Y | N | N | N +2 | Datatoken2 | N | Y | Y | N ### DIDs and DDOs @@ -260,7 +267,7 @@ Calling `create()` like above generates a data NFT, a datatoken for that NFT, an datatoken = data_nft.create_datatoken({"from": alice}, "Datatoken 1", "DT1") ``` -If you call `create()` after this, you can pass in an argument `deployed_datatokens:List[Datatoken]` and it will use those datatokens during creation. +If you call `create()` after this, you can pass in an argument `deployed_datatokens:List[Datatoken1]` and it will use those datatokens during creation.

Appendix: Dispenser / Faucet Details

@@ -272,9 +279,9 @@ We access dispenser (faucet) functionality from two complementary places: datato A given datatoken can create exactly one dispenser for that datatoken. **Interface via datatokens:** -- [`datatoken.create_dispenser()`](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken.py#L337) - implemented in Datatoken, inherited by DatatokenEnterprise +- [`datatoken.create_dispenser()`](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken.py#L337) - implemented in DatatokenBase, inherited by Datatoken2 - [`datatoken.dispense()`](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken.py#L380) - "" -- [`datatoken.dispense_and_order()` - implemented in Datatoken](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken.py#L439) and [in DatatokenEnterprise](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken_enterprise.py#L70). The latter only needs one tx to dispense and order. +- [`datatoken.dispense_and_order()` - implemented in Datatoken1](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken.py#L439) and [in Datatoken2](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken_enterprise.py#L70). The latter only needs one tx to dispense and order. - [`datatoken.dispenser_status()`](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/datatoken.py#L403) - returns a [`DispenserStatus`](https://github.com/oceanprotocol/ocean.py/blob/4aa12afd8a933d64bc2ed68d1e5359d0b9ae62f9/ocean_lib/models/dispenser.py#L16) object **Interface via [`Dispenser`](https://github.com/oceanprotocol/ocean.py/blob/main/ocean_lib/models/dispenser.py) Python class:** @@ -319,10 +326,10 @@ DispenserStatus: ### Who can request tokens from a faucet -Template 1 (`Datatoken`): +Template 1 (`Datatoken1`): - Anyone can call `datatoken.dispense()` to request tokens. -Template 2 (`DatatokenEnterprise`): +Template 2 (`Datatoken2`): - Option A. Anyone can `datatoken.dispense_and_order()` to request tokens, and order. - Option B. Not anyone can call `datatoken.dispense()` by default. To allow anyone, the publisher does: `ocean.dispenser.setAllowedSwapper(datatoken_address, ZERO_ADDRESS, {"from" : publisher_wallet})`, where `ZERO_ADDRESS` is `0x00..00`. diff --git a/conftest_ganache.py b/conftest_ganache.py index 0c3f3e138..fb0843831 100644 --- a/conftest_ganache.py +++ b/conftest_ganache.py @@ -10,7 +10,7 @@ from ocean_lib.example_config import get_config_dict from ocean_lib.models.data_nft import DataNFT from ocean_lib.models.data_nft_factory import DataNFTFactoryContract -from ocean_lib.models.datatoken import Datatoken +from ocean_lib.models.datatoken1 import Datatoken1 from ocean_lib.models.factory_router import FactoryRouter from ocean_lib.models.fixed_rate_exchange import FixedRateExchange from ocean_lib.ocean.util import get_address_of_type, to_wei @@ -110,9 +110,9 @@ def ocean_address(config) -> str: @pytest.fixture -def ocean_token(config, ocean_address) -> Datatoken: +def ocean_token(config, ocean_address) -> Datatoken1: connect_to_network("development") - return Datatoken(config, ocean_address) + return Datatoken1(config, ocean_address) @pytest.fixture @@ -156,19 +156,19 @@ def data_nft(config, publisher_wallet) -> DataNFT: @pytest.fixture -def data_NFT_and_DT(config, publisher_wallet) -> Tuple[DataNFT, Datatoken]: +def data_NFT_and_DT(config, publisher_wallet) -> Tuple[DataNFT, Datatoken1]: return deploy_erc721_erc20(config, publisher_wallet, publisher_wallet) @pytest.fixture -def DT(data_NFT_and_DT) -> Datatoken: +def DT(data_NFT_and_DT) -> Datatoken1: (_, DT) = data_NFT_and_DT return DT # aliases @pytest.fixture -def OCEAN(ocean_token) -> Datatoken: +def OCEAN(ocean_token) -> Datatoken1: return ocean_token diff --git a/ocean_lib/models/datatoken.py b/ocean_lib/models/datatoken1.py similarity index 99% rename from ocean_lib/models/datatoken.py rename to ocean_lib/models/datatoken1.py index c1d2091bc..4732e475d 100644 --- a/ocean_lib/models/datatoken.py +++ b/ocean_lib/models/datatoken1.py @@ -191,7 +191,7 @@ def withdrawETH() -> None: """ -class Datatoken(DatatokenBase): +class Datatoken1(DatatokenBase): CONTRACT_NAME = "ERC20Template" BASE = 10**18 diff --git a/ocean_lib/models/datatoken_enterprise.py b/ocean_lib/models/datatoken2.py similarity index 95% rename from ocean_lib/models/datatoken_enterprise.py rename to ocean_lib/models/datatoken2.py index 1e48d05e9..9af0e2fa5 100644 --- a/ocean_lib/models/datatoken_enterprise.py +++ b/ocean_lib/models/datatoken2.py @@ -6,7 +6,7 @@ from enforce_typing import enforce_types -from ocean_lib.models.datatoken import Datatoken, TokenFeeInfo +from ocean_lib.models.datatoken_base import DatatokenBase, TokenFeeInfo from ocean_lib.ocean.util import get_address_of_type, get_from_address, to_wei from ocean_lib.web3_internal.constants import ZERO_ADDRESS from ocean_lib.web3_internal.contract_base import ContractBase @@ -14,7 +14,7 @@ checksum_addr = ContractBase.to_checksum_address """ -DatatokenEnterprise retains all the functions from Datatoken model. +Datatoken2 retains all the functions from Datatoken model. The different functions are redundant (wrapped by ocean.py in helpers): buyFromDispenserAndOrder @@ -22,7 +22,7 @@ """ -class DatatokenEnterprise(Datatoken): +class Datatoken2(DatatokenBase): CONTRACT_NAME = "ERC20TemplateEnterprise" @enforce_types diff --git a/ocean_lib/models/datatoken_base.py b/ocean_lib/models/datatoken_base.py index a1ce24688..f5288f90f 100644 --- a/ocean_lib/models/datatoken_base.py +++ b/ocean_lib/models/datatoken_base.py @@ -77,7 +77,7 @@ def __init__( cap: Optional[int] = None, ): if template_index == 2 and not cap: - raise Exception("Cap is needed for Datatoken Enterprise token deployment.") + raise Exception("Cap is needed for Datatoken Template 2 token deployment.") self.cap = cap if template_index == 2 else MAX_UINT256 @@ -165,17 +165,17 @@ class DatatokenBase(ABC, ContractBase): @staticmethod def get_typed(config, address): - from ocean_lib.models.datatoken import Datatoken - from ocean_lib.models.datatoken_enterprise import DatatokenEnterprise + from ocean_lib.models.datatoken1 import Datatoken1 + from ocean_lib.models.datatoken2 import Datatoken2 - datatoken = Datatoken(config, address) + datatoken = Datatoken1(config, address) try: template_id = datatoken.getId() except Exception: template_id = 1 - return datatoken if template_id == 1 else DatatokenEnterprise(config, address) + return datatoken if template_id == 1 else Datatoken2(config, address) @enforce_types def start_order( diff --git a/ocean_lib/models/test/test_data_nft.py b/ocean_lib/models/test/test_data_nft.py index 80dbfc4a0..b72ee6cbf 100644 --- a/ocean_lib/models/test/test_data_nft.py +++ b/ocean_lib/models/test/test_data_nft.py @@ -343,23 +343,23 @@ def test_create_datatoken( {"from": publisher_wallet}, datatoken_args=DatatokenArguments( template_index=2, - name="DatatokenEnterpriseDT1", - symbol="DatatokenEnterpriseDT1Symbol", + name="Datatoken2DT1", + symbol="Datatoken2DT1Symbol", minter=publisher_wallet.address, fee_manager=consumer_wallet.address, bytess=[b""], cap=to_wei(0.1), ), ) - assert dt_ent, "Could not create datatoken Enterprise with explicit parameters" + assert dt_ent, "Could not create datatoken template 2 with explicit parameters" dt_ent = data_nft.create_datatoken( {"from": publisher_wallet}, - name="DatatokenEnterpriseDT1", - symbol="DatatokenEnterpriseDT1Symbol", + name="Datatoken2DT1", + symbol="Datatoken2DT1Symbol", cap=to_wei(0.1), ) - assert dt_ent, "Could not create datatoken Enterprise with implicit parameters." + assert dt_ent, "Could not create datatoken template 2 with implicit parameters." def test_create_datatoken_with_usdc_order_fee( @@ -736,7 +736,7 @@ def test_fail_create_datatoken( @pytest.mark.unit def test_datatoken_cap(publisher_wallet, consumer_wallet, data_nft_factory): # create NFT with ERC20 - with pytest.raises(Exception, match="Cap is needed for Datatoken Enterprise"): + with pytest.raises(Exception, match="Cap is needed for Datatoken Template 2"): DatatokenArguments(template_index=2, name="DTB1", symbol="EntDT1Symbol") diff --git a/ocean_lib/models/test/test_data_nft_factory.py b/ocean_lib/models/test/test_data_nft_factory.py index a0c617bc7..0a446e2ce 100644 --- a/ocean_lib/models/test/test_data_nft_factory.py +++ b/ocean_lib/models/test/test_data_nft_factory.py @@ -7,7 +7,7 @@ from web3.main import Web3 from ocean_lib.models.data_nft import DataNFT, DataNFTArguments -from ocean_lib.models.datatoken import Datatoken +from ocean_lib.models.datatoken1 import Datatoken1 from ocean_lib.models.datatoken_base import ( DatatokenArguments, DatatokenBase, @@ -62,7 +62,7 @@ def test_nft_creation( # Tests datatoken template list datatoken_template_address = get_address_of_type( - config, Datatoken.CONTRACT_NAME, "1" + config, Datatoken1.CONTRACT_NAME, "1" ) template = data_nft_factory.getTokenTemplate(1) assert template[0] == datatoken_template_address @@ -223,7 +223,7 @@ def test_start_multiple_order( # Tests datatoken template list datatoken_template_address = get_address_of_type( - config, Datatoken.CONTRACT_NAME, "1" + config, Datatoken1.CONTRACT_NAME, "1" ) template = data_nft_factory.getTokenTemplate(1) assert template[0] == datatoken_template_address diff --git a/ocean_lib/models/test/test_datatoken_order_both_templates.py b/ocean_lib/models/test/test_datatoken_order_both_templates.py index d870b4947..2f6ca321b 100644 --- a/ocean_lib/models/test/test_datatoken_order_both_templates.py +++ b/ocean_lib/models/test/test_datatoken_order_both_templates.py @@ -21,7 +21,7 @@ def test_dispense_and_order_with_non_defaults( consumer_wallet, factory_deployer_wallet, ): - """Tests dispense_and_order function of the Datatoken Enterprise""" + """Tests dispense_and_order function of the Datatoken Template 2""" _, DT = deploy_erc721_erc20(config, publisher_wallet, publisher_wallet, 2) USDC = DatatokenBase.get_typed(config, get_address_of_type(config, "MockUSDC")) @@ -115,7 +115,7 @@ def test_dispense_and_order_with_non_defaults( def test_dispense_and_order_with_defaults( config, publisher_wallet, consumer_wallet, factory_deployer_wallet, template_index ): - """Tests dispense_and_order function of the Datatoken and DatatokenEnterprise""" + """Tests dispense_and_order function of the Datatoken1 and Datatoken2""" _, DT = deploy_erc721_erc20( config, publisher_wallet, publisher_wallet, template_index ) @@ -150,7 +150,7 @@ def test_buy_DT_and_order( another_consumer_wallet, template_index, ): - """Tests buy_DT_and_order function of the Datatoken and DatatokenEnterprise""" + """Tests buy_DT_and_order function of the Datatoken1 and Datatoken2""" _, DT = deploy_erc721_erc20( config, publisher_wallet, publisher_wallet, template_index ) diff --git a/ocean_lib/models/test/test_exchange_fees.py b/ocean_lib/models/test/test_exchange_fees.py index 2d8acbe92..cbc9176ca 100644 --- a/ocean_lib/models/test/test_exchange_fees.py +++ b/ocean_lib/models/test/test_exchange_fees.py @@ -4,7 +4,7 @@ # import pytest -from ocean_lib.models.datatoken import Datatoken +from ocean_lib.models.datatoken1 import Datatoken1 from ocean_lib.models.factory_router import FactoryRouter from ocean_lib.models.fixed_rate_exchange import FixedRateExchange, OneExchange from ocean_lib.models.test.test_factory_router import ( @@ -71,7 +71,7 @@ def test_exchange_swap_fees( router = FactoryRouter(config, get_address_of_type(config, "Router")) FRE = FixedRateExchange(config, get_address_of_type(config, "FixedPrice")) - bt = Datatoken(config, get_address_of_type(config, bt_name)) + bt = Datatoken1(config, get_address_of_type(config, bt_name)) dt = DT transfer_bt_if_balance_lte( @@ -241,8 +241,8 @@ def buy_or_sell_dt_and_verify_balances_swap_fees( bob, ): details = exchange.details - bt = Datatoken(config, details.base_token) - dt = Datatoken(config, details.datatoken) + bt = Datatoken1(config, details.base_token) + dt = Datatoken1(config, details.datatoken) # Get balances before swap BT_bob1 = bt.balanceOf(bob) @@ -351,8 +351,8 @@ def collect_bt_or_dt_and_verify_balances( ): """Collet BT or Collect DT and verify balances""" details = exchange.details - dt = Datatoken(config, details.datatoken) - bt = Datatoken(config, details.base_token) + dt = Datatoken1(config, details.datatoken) + bt = Datatoken1(config, details.base_token) publish_market = dt.getPaymentCollector() if token_address == dt.address: @@ -390,7 +390,7 @@ def collect_fee_and_verify_balances( ): """Collect publish_market or opc fees, and verify balances""" FRE = FixedRateExchange(config, get_address_of_type(config, "FixedPrice")) - bt = Datatoken(config, exchange.details.base_token) + bt = Datatoken1(config, exchange.details.base_token) if fee_type == "publish_market_fee": BT_exchange_fee_avail1 = ( diff --git a/ocean_lib/models/test/test_fake_ocean.py b/ocean_lib/models/test/test_fake_ocean.py index e1955221d..961b027e9 100644 --- a/ocean_lib/models/test/test_fake_ocean.py +++ b/ocean_lib/models/test/test_fake_ocean.py @@ -7,10 +7,8 @@ import pytest from brownie.network import accounts - -from ocean_lib.models.datatoken import Datatoken -from ocean_lib.ocean.util import get_ocean_token_address, to_wei from ocean_lib.ocean.mint_fake_ocean import mint_fake_OCEAN +from ocean_lib.ocean.util import to_wei @pytest.mark.unit diff --git a/ocean_lib/ocean/ocean.py b/ocean_lib/ocean/ocean.py index 62f75a20d..6c2990054 100644 --- a/ocean_lib/ocean/ocean.py +++ b/ocean_lib/ocean/ocean.py @@ -148,7 +148,7 @@ def get_nft_token(self, token_address: str) -> DataNFT: def get_datatoken(self, token_address: str) -> DatatokenBase: """ :param token_address: Token contract address, str - :return: `Datatoken` or `DatatokenEnterprise` instance + :return: `Datatoken1` or `Datatoken2` instance """ return DatatokenBase.get_typed(self.config, token_address) diff --git a/ocean_lib/ocean/ocean_assets.py b/ocean_lib/ocean/ocean_assets.py index bcc1a3898..a6bdcaa0e 100644 --- a/ocean_lib/ocean/ocean_assets.py +++ b/ocean_lib/ocean/ocean_assets.py @@ -169,7 +169,7 @@ def create_algo_asset( tag: str = "python-branin", checksum: str = "sha256:8221d20c1c16491d7d56b9657ea09082c0ee4a8ab1a6621fa720da58b09580e4", wait_for_aqua: bool = True, - use_enterprise: bool = False, + dt_template_index: Optional[int] = 1, pricing_schema_args: Optional[ Union[DispenserArguments, ExchangeArguments] ] = None, @@ -199,7 +199,7 @@ def create_algo_asset( files, tx_dict, wait_for_aqua=wait_for_aqua, - use_enterprise=use_enterprise, + dt_template_index=dt_template_index, pricing_schema_args=pricing_schema_args, ) @@ -210,7 +210,7 @@ def create_url_asset( url: str, tx_dict: dict, wait_for_aqua: bool = True, - use_enterprise: bool = False, + dt_template_index: Optional[int] = 1, pricing_schema_args: Optional[ Union[DispenserArguments, ExchangeArguments] ] = None, @@ -224,7 +224,7 @@ def create_url_asset( files, tx_dict, wait_for_aqua=wait_for_aqua, - use_enterprise=use_enterprise, + dt_template_index=dt_template_index, pricing_schema_args=pricing_schema_args, ) @@ -235,7 +235,7 @@ def create_arweave_asset( transaction_id: str, tx_dict: dict, wait_for_aqua: bool = True, - use_enterprise: bool = False, + dt_template_index: Optional[int] = 1, pricing_schema_args: Optional[ Union[DispenserArguments, ExchangeArguments] ] = None, @@ -249,7 +249,7 @@ def create_arweave_asset( files, tx_dict, wait_for_aqua=wait_for_aqua, - use_enterprise=use_enterprise, + dt_template_index=dt_template_index, pricing_schema_args=pricing_schema_args, ) @@ -261,7 +261,7 @@ def create_graphql_asset( query: str, tx_dict: dict, wait_for_aqua: bool = True, - use_enterprise: bool = False, + dt_template_index: Optional[int] = 1, pricing_schema_args: Optional[ Union[DispenserArguments, ExchangeArguments] ] = None, @@ -275,7 +275,7 @@ def create_graphql_asset( files, tx_dict, wait_for_aqua=wait_for_aqua, - use_enterprise=use_enterprise, + dt_template_index=dt_template_index, pricing_schema_args=pricing_schema_args, ) @@ -287,7 +287,7 @@ def create_onchain_asset( contract_abi: dict, tx_dict: dict, wait_for_aqua: bool = True, - use_enterprise: bool = False, + dt_template_index: Optional[int] = 1, pricing_schema_args: Optional[ Union[DispenserArguments, ExchangeArguments] ] = None, @@ -303,7 +303,7 @@ def create_onchain_asset( files, tx_dict, wait_for_aqua=wait_for_aqua, - use_enterprise=use_enterprise, + dt_template_index=dt_template_index, pricing_schema_args=pricing_schema_args, ) @@ -331,7 +331,7 @@ def create_bundled( tx_dict: dict, credentials: Optional[dict] = None, wait_for_aqua: bool = True, - use_enterprise: bool = False, + dt_template_index: Optional[int] = 1, pricing_schema_args: Optional[ Union[DispenserArguments, ExchangeArguments] ] = None, @@ -340,10 +340,9 @@ def create_bundled( self._assert_ddo_metadata(metadata) name = metadata["name"] - template_index = 2 if use_enterprise else 1 data_nft_args = DataNFTArguments(name, name) datatoken_args = DatatokenArguments( - f"{name}: DT1", files=files, template_index=template_index + f"{name}: DT1", files=files, template_index=dt_template_index ) if not pricing_schema_args: diff --git a/ocean_lib/ocean/test/test_ocean.py b/ocean_lib/ocean/test/test_ocean.py index d5e275ef2..a509870a0 100644 --- a/ocean_lib/ocean/test/test_ocean.py +++ b/ocean_lib/ocean/test/test_ocean.py @@ -5,20 +5,19 @@ import pytest from ocean_lib.models.data_nft_factory import DataNFTFactoryContract -from ocean_lib.models.datatoken import Datatoken +from ocean_lib.models.datatoken1 import Datatoken1 +from ocean_lib.models.df.df_rewards import DFRewards +from ocean_lib.models.df.df_strategy_v1 import DFStrategyV1 from ocean_lib.models.dispenser import Dispenser from ocean_lib.models.factory_router import FactoryRouter from ocean_lib.models.fixed_rate_exchange import FixedRateExchange -from ocean_lib.models.df.df_rewards import DFRewards -from ocean_lib.models.df.df_strategy_v1 import DFStrategyV1 from ocean_lib.models.ve.smart_wallet_checker import SmartWalletChecker +from ocean_lib.models.ve.ve_allocate import VeAllocate from ocean_lib.models.ve.ve_delegation import VeDelegation from ocean_lib.models.ve.ve_delegation_proxy import VeDelegationProxy -from ocean_lib.models.ve.ve_fee_estimate import VeFeeEstimate -from ocean_lib.models.ve.ve_allocate import VeAllocate from ocean_lib.models.ve.ve_fee_distributor import VeFeeDistributor +from ocean_lib.models.ve.ve_fee_estimate import VeFeeEstimate from ocean_lib.models.ve.ve_ocean import VeOcean - from tests.resources.helper_functions import deploy_erc721_erc20 @@ -39,8 +38,8 @@ def test_contract_objects(publisher_ocean): ocean = publisher_ocean assert ocean.OCEAN_address[:2] == "0x" - assert isinstance(ocean.OCEAN_token, Datatoken) - assert isinstance(ocean.OCEAN, Datatoken) + assert isinstance(ocean.OCEAN_token, Datatoken1) + assert isinstance(ocean.OCEAN, Datatoken1) assert ocean.OCEAN_address == ocean.OCEAN_token.address assert ocean.OCEAN_address == ocean.OCEAN.address diff --git a/tests/integration/ganache/test_market_flow.py b/tests/integration/ganache/test_market_flow.py index 7ced1bd67..b76c7a731 100644 --- a/tests/integration/ganache/test_market_flow.py +++ b/tests/integration/ganache/test_market_flow.py @@ -8,7 +8,7 @@ import pytest from web3.main import Web3 -from ocean_lib.models.datatoken import TokenFeeInfo +from ocean_lib.models.datatoken_base import TokenFeeInfo from ocean_lib.ocean.util import to_wei from tests.resources.ddo_helpers import get_registered_asset_with_access_service from tests.resources.helper_functions import get_another_consumer_ocean_instance