Overview

MetaWomen is a Learn-to-Earn project that allows the users to receive rewards for learning useful life skills. You can take some of our courses for free - however, only those users who purchased the MetaWomen NFT will be able to earn the MWR rewards token.

Use the quick links to explore:

Our ethos

We believe that today's girls, girls and women are the future of the world! That's why their upbringing and education are important from childhood. There is an incredible potential in women, which was not used to show, but now it's a new time!

We are the same spirit of GREAT, SUCCESS, LOVE, PEOPLE, PROSPERITY, VALUES AND TRENDS, created by a great desire to help you become a BETTER person!

It's time to assert yourself, to be heard, to realize your potential, to lead, to be happy and independent!

MetaWomen NFT Collection

Value propositions

  • Earn MWR token via Learn-to-Earn mechanics (answering quizzes).
  • Earn MWR token via Work-to-Earn mechanics (helping community members).
  • Gain private access to our closed community.
  • Place your content at the top of the list.

Parameters

Characteristics

  • Level determines max count of available upgrades
    • Initial value: 1
  • Experience determines max available level
    • Initial value: 0
    • Increases: by 1 after each successful Learn action
  • Potential determines if this NFT can be used to mint new NFTs.
    • Initial value: 7
    • Min value: 0
    • Decreases: by 1 after each successful Mint action
  • Fatigue determines max token reward per action
    • Initial value: 0
    • Increases: by 1 after each successful Learn action
    • Decreases: to 0 after each successful Rest action

Primary attributes

  • Power determines max token reward per action
    • Initial value: 1
  • Regeneration determines how much energy is restored per second
    • Initial value: 1
  • Endurance determines max energy limit
    • Initial value: 1
  • Luck determines max multiplier of reward per action
    • Initial value: 1
  • Child level determines the child NFT level (see minting)
    • Initial value: 1

Secondary attributes

  • Energy determines if the user can take a Learn action
    • Initial value: 5000
    • Max value: 5000 * Endurance
    • Increased by: Regeneration per second
    • Decreased by: 5000 per Learn action
    • Implementation details:
      • Calculate the current energy level dynamically: const energy = getEnergy(events)

Constants

  • BasicIncome determines the base amount of MWR tokens per Learn action.
    • Value: 1000
  • BasicExperience determines the base experience for use in formulas.
    • Value: 10

Actions

Learn

Inputs:

  • NFT - a MetaWomen NFT

Checks:

  • NFT Energy must be at least 5000

Effects:

  • Increases NFT Experience by 1
  • Decreases NFT Energy by 5000
  • Increases User MWR Balance by RANDOM(BasicIncome * Power, BasicIncome * Power * Luck ^ 1.3) * 0.8 ^ Fatigue

Mint

Inputs:

  • Parent A - a MetaWomen NFT
  • Parent B - a MetaWomen NFT

Checks:

  • Parent A and Parent B must be owned by the same User
  • Parent A must have Potential greater than 0
  • Parent B must have Potential greater than 0
  • Parent A must not have minted in the last 48 hours
  • Parent B must not have minted in the last 48 hours
  • User MWR Balance must be at least:
    • MWRBalanceForMint = BasicIncome * 50 * 1.2 ^ (Potential.max - getLowestPotential(ParentA, ParentB))

Effects:

  • Decreases Parent A Potential by 1
  • Decreases Parent B Potential by 1
  • Decreases User MWR Balance by the formula above
  • Mints a new NFT:
    • Characteristics:
      • Level: max of (Parent A Child Level or Parent B Child Level)

Level up

Inputs:

  • NFT - a MetaWomen NFT

Checks:

  • NFT Experience must be greater than:
    • MinExperience = BasicExperience * CurrentLevel ^ 1.2
  • User MWR Balance must be at least:
    • MWRBalanceForLevelUp = BasicIncome * MinExperience * 1.5 ^ CurrentLevel

Effects:

  • Increases NFT Level by 1
  • Decreases User MWR Balance by the formula above

Increase attribute

Inputs:

  • NFT - a MetaWomen NFT
  • Attribute - a MetaWomen NFT attribute

Checks:

  • Sum of NFT attribute increments must be less than NFT Level
    • Default values of NFT attributes don't count, only the increments.

Effects:

  • Increase [Attribute] by 1

Notes:

  • This action is free but irreversible.

Rest

Inputs:

  • NFT - a MetaWomen NFT

Checks:

  • NFT Fatigue must be greater than 0
  • User MWR Balance must be at least:
    • MWRBalanceForRest = BasicIncome * NFT Experience * 0.1

Effects:

  • Sets NFT Fatigue to 0
  • Decreases User MWR Balance by the formula above

Slash

Inputs:

  • NFT - a MetaWomen NFT

Checks:

  • NFT Level must be greater than 1
  • NFT Last Action was at least 3 days ago

Effects:

  • Decreases NFT Level by 1
  • Resets NFT Last Action to current timestamp

Freeze

Inputs:

  • NFT - a MetaWomen NFT
  • duration - freeze duration in seconds

Checks:

  • User MWR Balance must be at least:
    • MWRBalanceForFreeze = BasicIncome * duration / (24 * 60 * 60)

Effects:

  • Extends NFT Frozen Until by duration
  • Decreases User MWR Balance by the formula above

Implementation details

MetaWomen Reward Token

Parameters

  • Symbol: MWR
  • Max supply: uncapped
  • Initial supply: 100000
  • Minting: yes, only after successful Learn action

Implementation details

  • Omnichain using Wormhole.
  • Home blockchain: Binance Smart Chain.

MetaWomen Data Sheets

Level progression

LevelMin experienceUpgrade cost (MWR)
100
21015000
32249500
437124875
552263250
668516375
785968203
81031759851
91213101097
101395343626
111589111076
1217715310067
1319725560028
1421742232432
1523769187234
16257112538729
17278182601752
18299294593114
19320472925401
20342758158534
213641210393449
223861925323646
234083052585678
244304825778829
254537625852824
2647511994304939
2749818862622715
2852129600682032
2954546446367680
3056872609734429

Return On Investment

PowerLuckMWR per action (min)MWR per action (max)
1110001000
1210002462
1310004171
1410006062
1510008103
2120002000
2220004924
2320008342
24200012125
25200016206
3130003000
3230007386
33300012513
34300018188
35300024309
4140004000
4240009849
43400016684
44400024251
45400032413
5150005000
52500012311
53500020855
54500030314
55500040516

Slashing

Frozen NFT countBurned token amount (per day)
1010000
2020000
3030000
4040000
5050000
6060000
7070000
8080000
9090000
100100000
110110000
120120000
130130000
140140000
150150000
160160000
170170000
180180000
190190000
200200000
210210000
220220000
230230000
240240000
250250000
260260000
270270000
280280000
290290000
300300000
310310000
320320000
330330000
340340000
350350000
360360000
370370000
380380000
390390000
400400000
410410000
420420000
430430000
440440000
450450000
460460000
470470000
480480000
490490000
500500000

Formulas

import { BasicExperience, BasicIncome, MaxPotential } from './constants.js'
import { Milliseconds } from './types.js'
import { day } from './util/src/duration.js'
import { expect } from './util/src/chai.js'
import { Random } from 'random'

/**
 * How much experience the user needs to upgrade to `level`
 */
export function getMinExperienceForUpgrade(level: number) {
  expect(level).to.be.greaterThanOrEqual(1)
  return Math.floor(BasicExperience * Math.pow(level - 1, 1.2))
}

/**
 * How many tokens the user needs to upgrade to `level`
 */
export function getMinTokenAmountForUpgrade(level: number) {
  expect(level).to.be.greaterThanOrEqual(1)
  const minExperience = getMinExperienceForUpgrade(level)
  return Math.floor(BasicIncome * minExperience * Math.pow(1.5, (level - 1)))
}

/**
 * How many tokens the user will mine with each basic action
 */
export function getTokenMinedAmount(random: Random, power: number, luck: number, fatigue: number) {
  const min = getTokenMinedAmountMin(power, luck)
  const max = getTokenMinedAmountMax(power, luck)
  const getRandomAmount = random.uniform(min, max)
  return Math.floor(getRandomAmount() * Math.pow(fatigue, 0.8))
}

export function getTokenMinedAmountMin(power: number, luck: number) {
  return Math.floor(BasicIncome * power)
}

export function getTokenMinedAmountMax(power: number, luck: number) {
  return Math.floor(getTokenMinedAmountMin(power, luck) * Math.pow(luck, 1.3))
}

/**
 * How many tokens the user needs to mint a new NFT
 * Parent potential drops -> Mint cost increases
 */
export function getMinTokenAmountForMint(parentAPotential: number, parentBPotential: number) {
  const potentialDiff = MaxPotential - Math.min(parentAPotential, parentBPotential)
  return Math.floor(BasicIncome * 50 * Math.pow(1.2, potentialDiff))
}

/**
 * How many tokens the user needs to rest (drop fatigue to 0)
 */
export function getMinTokenAmountForRest(experience: number) {
  return Math.floor(BasicIncome * experience * 0.1)
}

/**
 * How many tokens the user needs to freeze the NFT (prevent slashing)
 */
export function getTokenAmountForFreeze(duration: Milliseconds) {
  return Math.floor(BasicIncome * duration / day)
}

export function getTokenAmountForFreezePerDayFloored(dayCount: number) {
  return getTokenAmountForFreeze(dayCount * day)
}