GemWorks

Searchβ¦

β

Frequent Issues

U64::max

This means the larger the numbers you use for your farm, the higher the chance you'll hit the U64::max limit and cause an overflow. This in turn will cause your transaction to fail, typically with code

`0x1770`

.In simple terms what I'm saying is - if at any point in your program's math journey there is a number bigger than 18,446,744,073,709,551,615 (1.8 * 10^19) - you'll get an error.

β

So what are the numbers that matter?

- Decimals for your token - if you have 9 decimals, you should add
`* 10`

^`9`

to all math operations. - Rarity points assigned to each NFT (remember default is 1, but you can assign up to 65,535 per item)
- Number of NFTs staked
- Duration the reward is funded for
- Amount of promised reward per unit of time

β

Let's go through an example

- You have a collection of 10,000 NFTs and you suspect the max a single user might want to stake is 100
- You've added rarities and the most rare one has a rarity of 5,000
- You want to let your users stake NFTs on a fixed schedule, promising them 1,000 tokens per day
- You've funded your reward for 365 days
- Your token has 9 decimals
- Let's see what we get:
- Number of NFTs staked * Max rarity * Rewards/day promised * Days promised * Token decimals
- 100 * 5000 * 1000 * 365 * 10^9 =
`1.82 * 10^20`

- Uh oh! That's about 10 times bigger than u64::max. You'll get an error.

Last modified 7mo ago

Copy link