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
- Initial supply:
1000
(can be minted by users) - Mintable: yes (see docs)
Characteristics
- Level determines max count of available upgrades
- Initial value:
1
- Initial value:
- Experience determines max available level
- Initial value:
0
- Increases: by
1
after each successful Learn action
- Initial value:
- 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
- Initial value:
- 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
- Initial value:
Primary attributes
- Power determines max token reward per action
- Initial value:
1
- Initial value:
- Regeneration determines how much energy is restored per second
- Initial value:
1
- Initial value:
- Endurance determines max energy limit
- Initial value:
1
- Initial value:
- Luck determines max multiplier of reward per action
- Initial value:
1
- Initial value:
- Child level determines the child NFT level (see minting)
- Initial value:
1
- Initial value:
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)
- Calculate the current energy level dynamically:
- Initial value:
Constants
- BasicIncome determines the base amount of MWR tokens per Learn action.
- Value:
1000
- Value:
- BasicExperience determines the base experience for use in formulas.
- Value:
10
- Value:
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
byRANDOM(BasicIncome * Power, BasicIncome * Power * Luck ^ 1.3) * 0.8 ^ Fatigue
Mint
Inputs:
Parent A
- a MetaWomen NFTParent B
- a MetaWomen NFT
Checks:
Parent A
andParent B
must be owned by the sameUser
Parent A
must havePotential
greater than0
Parent B
must havePotential
greater than0
Parent A
must not have minted in the last 48 hoursParent B
must not have minted in the last 48 hoursUser MWR Balance
must be at least:MWRBalanceForMint = BasicIncome * 50 * 1.2 ^ (Potential.max - getLowestPotential(ParentA, ParentB))
Effects:
- Decreases
Parent A Potential
by1
- Decreases
Parent B Potential
by1
- Decreases
User MWR Balance
bythe formula above
- Mints a new NFT:
- Characteristics:
- Level: max of (
Parent A Child Level
orParent B Child Level
)
- Level: max of (
- Characteristics:
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
by1
- Decreases
User MWR Balance
bythe formula above
Increase attribute
Inputs:
NFT
- a MetaWomen NFTAttribute
- a MetaWomen NFT attribute
Checks:
- Sum of
NFT
attribute increments must be less thanNFT Level
- Default values of NFT attributes don't count, only the increments.
Effects:
- Increase
[Attribute]
by1
Notes:
- This action is free but irreversible.
Rest
Inputs:
NFT
- a MetaWomen NFT
Checks:
NFT Fatigue
must be greater than0
User MWR Balance
must be at least:MWRBalanceForRest = BasicIncome * NFT Experience * 0.1
Effects:
- Sets
NFT Fatigue
to0
- Decreases
User MWR Balance
bythe formula above
Slash
Inputs:
NFT
- a MetaWomen NFT
Checks:
NFT Level
must be greater than1
NFT Last Action
was at least 3 days ago
Effects:
- Decreases
NFT Level
by1
- Resets
NFT Last Action
tocurrent timestamp
Freeze
Inputs:
NFT
- a MetaWomen NFTduration
- freeze duration in seconds
Checks:
User MWR Balance
must be at least:MWRBalanceForFreeze = BasicIncome * duration / (24 * 60 * 60)
Effects:
- Extends
NFT Frozen Until
byduration
- Decreases
User MWR Balance
bythe formula above
Implementation details
- Omnichain using LayerZero ONFT standard (can be listed on multiple marketplaces on different blockchains).
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
Level | Min experience | Upgrade cost (MWR) |
---|---|---|
1 | 0 | 0 |
2 | 10 | 15000 |
3 | 22 | 49500 |
4 | 37 | 124875 |
5 | 52 | 263250 |
6 | 68 | 516375 |
7 | 85 | 968203 |
8 | 103 | 1759851 |
9 | 121 | 3101097 |
10 | 139 | 5343626 |
11 | 158 | 9111076 |
12 | 177 | 15310067 |
13 | 197 | 25560028 |
14 | 217 | 42232432 |
15 | 237 | 69187234 |
16 | 257 | 112538729 |
17 | 278 | 182601752 |
18 | 299 | 294593114 |
19 | 320 | 472925401 |
20 | 342 | 758158534 |
21 | 364 | 1210393449 |
22 | 386 | 1925323646 |
23 | 408 | 3052585678 |
24 | 430 | 4825778829 |
25 | 453 | 7625852824 |
26 | 475 | 11994304939 |
27 | 498 | 18862622715 |
28 | 521 | 29600682032 |
29 | 545 | 46446367680 |
30 | 568 | 72609734429 |
Return On Investment
Power | Luck | MWR per action (min) | MWR per action (max) |
---|---|---|---|
1 | 1 | 1000 | 1000 |
1 | 2 | 1000 | 2462 |
1 | 3 | 1000 | 4171 |
1 | 4 | 1000 | 6062 |
1 | 5 | 1000 | 8103 |
2 | 1 | 2000 | 2000 |
2 | 2 | 2000 | 4924 |
2 | 3 | 2000 | 8342 |
2 | 4 | 2000 | 12125 |
2 | 5 | 2000 | 16206 |
3 | 1 | 3000 | 3000 |
3 | 2 | 3000 | 7386 |
3 | 3 | 3000 | 12513 |
3 | 4 | 3000 | 18188 |
3 | 5 | 3000 | 24309 |
4 | 1 | 4000 | 4000 |
4 | 2 | 4000 | 9849 |
4 | 3 | 4000 | 16684 |
4 | 4 | 4000 | 24251 |
4 | 5 | 4000 | 32413 |
5 | 1 | 5000 | 5000 |
5 | 2 | 5000 | 12311 |
5 | 3 | 5000 | 20855 |
5 | 4 | 5000 | 30314 |
5 | 5 | 5000 | 40516 |
Slashing
Frozen NFT count | Burned token amount (per day) |
---|---|
10 | 10000 |
20 | 20000 |
30 | 30000 |
40 | 40000 |
50 | 50000 |
60 | 60000 |
70 | 70000 |
80 | 80000 |
90 | 90000 |
100 | 100000 |
110 | 110000 |
120 | 120000 |
130 | 130000 |
140 | 140000 |
150 | 150000 |
160 | 160000 |
170 | 170000 |
180 | 180000 |
190 | 190000 |
200 | 200000 |
210 | 210000 |
220 | 220000 |
230 | 230000 |
240 | 240000 |
250 | 250000 |
260 | 260000 |
270 | 270000 |
280 | 280000 |
290 | 290000 |
300 | 300000 |
310 | 310000 |
320 | 320000 |
330 | 330000 |
340 | 340000 |
350 | 350000 |
360 | 360000 |
370 | 370000 |
380 | 380000 |
390 | 390000 |
400 | 400000 |
410 | 410000 |
420 | 420000 |
430 | 430000 |
440 | 440000 |
450 | 450000 |
460 | 460000 |
470 | 470000 |
480 | 480000 |
490 | 490000 |
500 | 500000 |
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)
}