Process by which you test the mpv3 contract in Remix.

At a minimum, you'll need mpv3.sol, erc20.sol, test_env1.sol and a NFT project like sc_simpv2.sol.
Using Remix, build all files with optimization on 200 and the EVM version berlin. Once built,
you'll launch and setup each smart contract. 

test_env1
This is the test environment that should be setup first. Notice that there are four wallets that
are needed during the deployment of the contract. Pick four different remix accounts to serve these
roles. 

erc20
Next, you're going to deploy a sample TNT20 in order to have collateral that can be used
during the testing process. Might be worthwhile to use two different accounts from the 
four that were used to simulate Selene Network contracts.
- when deploying the coin, use the test contract as the participant
- Mint a known amount of coins into each/some of the test_env1 accounts.

sc_simpv2
This is the contract where NFTs can be minted and used as deposit collateral for testing.
Deploy with 'simp' false false and 0.
After deploying the contract by using the test_env1 address for a bunch of parameters, 
initialize the contract by calling payInitialize() with:
10,777,2,20,10
and calling projectUpdate() with something like:
https://amorstyle.com/nfts/sc_simpv2/,sc_simpv2,bafa6b2bf67fe21d119492acb2660c98a907e703
After this, get the price it costs to mint by calling 
payMintPrice()
Then, payMint() with:
1001,1
At this point you have a token that can be used (id=1).

CODE TO TEST MPV3
last setup step is to launch a version of mpv3. Choose one of the test_env1 accounts as titled and
use the test_env1 address for the environment smart contracts. After deploying, 
call payInitialize() with something like:
0,180,0,50,0
and projectUpdate() with
https://amorstyle.com/nfts/mpv3/,mpv3,bafa6b2bf67fe21d119492acb2660c98a907e703

NOTE: There is a price to LIST and CLAIM, nothing else.


Now, to put something in the marketplace, someone needs to mint that NFT and then set
the allowance for that NFT to the marketplace contract. note that in order to 
list the NFT, the NFT contract has to give permission to the contract for the transfer.

Give allowance to the marketplace to capture the NFT.

If the token id that gets put in the marketplace is token 1, then:
1001,1,0x0000000000000000000000000000000000000000, NFT CONTRACT ADDRESS, 1,5,0x0000000000000000000000000000000000000000,0
and remember, the cost of listing is index 0 on payPrice and 
0x0000000000000000000000000000000000000000 represents a null address.

Buying

to buy the marketplace item, switch accounts and use mpBuy. The cost for buying is 
found in the mpInfo data. When buying with tfuel, use costWei. 

When buing with an altToken, no tfuel should be sent.

NOTE: withdraw funds...

Claiming

There is a price for reclaiming the resource. payPrice(1) gives that. 

100000000000000000000
100000000000000000000 from mpInfo


Math
3593200000000000000 seller
 138200000000000000 website
 414600000000000000 agent
4146000000000000000 total


9021200000000000000


0xd8b934580fcE35a11B58C6D73aDeE468a2833fa8


Then create a card that can be used with cardNewSpotcol()
5,1,10,0,0x1234,50,0x1234,10,2,25
where 0x1234 is replaced by the TNT20 address and the sc_simpv2 address.
- read cardInfo with 
5,1
to make sure the info is correct.
Use same parameters for cardMintPrice(), get the mint price.

Create a second series that doesn't take collateral using cardNewSpot() like:
6,1,10,0

Also create a third series that doesn't require a deposit token like:
7,1,5,0,0x1234,100,0x1234,5,2,75
Where both contracts are just the TNT20 address. This will create a card that doesn't
require a deposit token but just requires collateral.

At this point, you're ready to test.
The series 6 - should mint without collateral
The series 7 - should mint without deposit token, but with collateral
The series 5 - requires both deposit token and collateral

cardMint() 6,1.
- call cardMintToggle with: 6,1 - from titled account
- call cardMintPrice with: 6,1
- call cardMint with: 1001,1,6,1,0 & payment
* validate state
- call payBurnPrice
- call payBurn with token Id 1

setup to mint 7,1 - card with only collateral.
- make sure account that is going to mint is a test_env1 account (holds participant)
- call cardInfo with: 7,1 
- make sure minting account holds enough collateral (>100)
- make sure it's approved the tntcolv1 contract with allowance.
- call cardMintPrice with: 7,1
- call cardMint with: 1001,1,7,1,0 & payment
* should get token 2. 
* check TNT20 balance numbers.
- call charUpgradePrice() on token 2
- call cardUpgrade() on token 2
* validate balance has changed.

setup to mint 5,1 - card with both types of collateral
- make sure the account that holds the deposit card is active
- approve tntcolv1 for token 1
- make sure minting account holds enough collateral (>100)
- make sure it's approved the tntcolv1 contract with allowance.
- call cardMintPrice with: 5,1
- call cardMint with: 1001,1,5,1,1 & payment
* should get token 3. 
* validate TNT20 drawdown
* validate sc_simpv2 token is owned by contract.

***
Now unwind the prcess by burning tokens. start with 2.


Example collateral values
10 tnt20 = 10.000000000000000000



0x5B38Da6a701c568545dCfcB03FcB875f56beddC4 = titled -> 2k
0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2 = part 1 -> 2k
0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db = part 2
0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB = part 3
0x583031D1113aD414F02576BD6afaBfb302140225 = agent
0xdD870fA1b7C4700F2BD7f44238821C26f7392148 = website


0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2
0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db
0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB
0x583031D1113aD414F02576BD6afaBfb302140225
0xdD870fA1b7C4700F2BD7f44238821C26f7392148

buy: 
55280000000000000000 buy price

Bidding
50280000000000000000 bid from 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2 -> 


mpReturn seems to work.
- test with private placement


FOR TESTING ADJUSTING PRICE
Default parameters: 276400000000000000,0.036179170599477
Price Rise:         263160000000000000,0.038 (26.315789 tfuel/dollar)
Price Drop:         294120000000000000,0.034 (29.411764 tfuel/dollar)
price rise:         250000000000000000,0.04 (25 tfuel/dollar)


