chore(XPToken): rename XP to Karma

This commit is contained in:
Andrea Franz
2025-02-21 10:54:51 +01:00
committed by r4bbit
parent dd755f1cb7
commit 5d1784828a
13 changed files with 96 additions and 480 deletions

View File

@@ -1,384 +0,0 @@
╭-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| script/DeployRewardsStreamerMP.s.sol:DeployRewardsStreamerMPScript Contract | | | | | |
+=======================================================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 6944992 | 33066 | | | | |
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| | | | | | |
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| run | 6063837 | 6063837 | 6063837 | 6063837 | 72 |
╰-----------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
╭---------------------------------------------------------+-----------------+-----+--------+-----+---------╮
| script/DeploymentConfig.s.sol:DeploymentConfig Contract | | | | | |
+==========================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
| 0 | 7607 | | | | |
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
| | | | | | |
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------------------+-----------------+-----+--------+-----+---------|
| activeNetworkConfig | 419 | 419 | 419 | 419 | 144 |
╰---------------------------------------------------------+-----------------+-----+--------+-----+---------╯
╭-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
| script/UpgradeRewardsStreamerMP.s.sol:UpgradeRewardsStreamerMPScript Contract | | | | | |
+=========================================================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| 3111592 | 15193 | | | | |
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| | | | | | |
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| run | 2599280 | 2599280 | 2599280 | 2599280 | 3 |
╰-------------------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
╭------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| src/RewardsStreamerMP.sol:RewardsStreamerMP Contract | | | | | |
+=============================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 2757347 | 12705 | | | | |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| | | | | | |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| MAX_LOCKUP_PERIOD | 1486 | 1486 | 1486 | 1486 | 4 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| MAX_MULTIPLIER | 642 | 642 | 642 | 642 | 10 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| MIN_LOCKUP_PERIOD | 202 | 202 | 202 | 202 | 15 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| compound | 37136 | 75198 | 75198 | 113261 | 2 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| emergencyModeEnabled | 3530 | 3530 | 3530 | 3530 | 7 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| enableEmergencyMode | 3413 | 20845 | 26302 | 26302 | 8 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getAccountTotalMaxMP | 4096 | 4096 | 4096 | 4096 | 1 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getAccountTotalStakedBalance | 15333 | 15333 | 15333 | 15333 | 1 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getAccountVaults | 5773 | 5773 | 5773 | 5773 | 4 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getStakedBalance | 2675 | 2675 | 2675 | 2675 | 1 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| getVault | 1792 | 1792 | 1792 | 1792 | 76 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 115245 | 115245 | 115245 | 115245 | 72 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| lastRewardTime | 1122 | 2122 | 2122 | 3122 | 2 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 94547 | 94547 | 94547 | 94547 | 1 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| lock | 15241 | 52240 | 52136 | 92820 | 260 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 14701 | 73085 | 16880 | 187676 | 3 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| mpBalanceOf | 1047 | 2185 | 1985 | 7200 | 12 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| mpBalanceOfAccount | 11097 | 11097 | 11097 | 11097 | 1 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| mpStakedOf | 725 | 878 | 725 | 2725 | 13 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| proxiableUUID | 615 | 615 | 615 | 615 | 3 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| registerVault | 2520 | 74752 | 75302 | 75302 | 288 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardEndTime | 503 | 1503 | 1503 | 2503 | 2 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardStartTime | 393 | 1393 | 1393 | 2393 | 2 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardsBalanceOf | 2039 | 2939 | 3170 | 6039 | 12 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setReward | 3285 | 56852 | 62610 | 107330 | 8 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| setTrustedCodehash | 24115 | 24115 | 24115 | 24115 | 72 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 3116 | 225610 | 228544 | 248731 | 327 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMP | 1040 | 1282 | 1282 | 1524 | 6 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMPAccrued | 767 | 767 | 767 | 767 | 84 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMPStaked | 723 | 723 | 723 | 723 | 87 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMaxMP | 789 | 789 | 789 | 789 | 84 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalRewardsAccrued | 1031 | 1031 | 1031 | 1031 | 3 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalRewardsSupply | 1791 | 2384 | 2207 | 7624 | 34 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalShares | 711 | 711 | 711 | 711 | 6 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| totalStaked | 965 | 965 | 965 | 965 | 91 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| unstake | 71186 | 77741 | 77668 | 81389 | 13 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| updateGlobalState | 16846 | 27817 | 29662 | 29662 | 20 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| updateVaultMP | 29693 | 35404 | 36039 | 36039 | 20 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| upgradeToAndCall | 3307 | 8018 | 8629 | 10897 | 5 |
|------------------------------------------------------+-----------------+--------+--------+--------+---------|
| vaultShares | 1754 | 1920 | 1754 | 3754 | 12 |
╰------------------------------------------------------+-----------------+--------+--------+--------+---------╯
╭----------------------------------------+-----------------+--------+--------+--------+---------╮
| src/StakeVault.sol:StakeVault Contract | | | | | |
+===============================================================================================+
| Deployment Cost | Deployment Size | | | | |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| 1465368 | 6898 | | | | |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| | | | | | |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| STAKING_TOKEN | 171 | 171 | 171 | 171 | 1 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| emergencyExit | 16145 | 32620 | 32516 | 49616 | 7 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 97512 | 97512 | 97512 | 97512 | 288 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 12252 | 152622 | 69405 | 459428 | 4 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| lock | 12167 | 67481 | 67589 | 108367 | 261 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 30198 | 99793 | 32377 | 236806 | 3 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| owner | 546 | 566 | 546 | 2546 | 293 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| register | 12453 | 78290 | 78818 | 78818 | 288 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 12013 | 280134 | 284011 | 304198 | 328 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| stakeManager | 458 | 458 | 458 | 458 | 287 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| trustStakeManager | 7519 | 7519 | 7519 | 7519 | 1 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| unstake | 11837 | 101627 | 108461 | 112182 | 14 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| withdraw | 20931 | 20931 | 20931 | 20931 | 1 |
╰----------------------------------------+-----------------+--------+--------+--------+---------╯
╭----------------------------------------------------+-----------------+------+--------+--------+---------╮
| src/TransparentProxy.sol:TransparentProxy Contract | | | | | |
+=========================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| 0 | 948 | | | | |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| | | | | | |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| fallback | 547 | 7423 | 1310 | 139538 | 630 |
|----------------------------------------------------+-----------------+------+--------+--------+---------|
| implementation | 241 | 2238 | 2241 | 2241 | 899 |
╰----------------------------------------------------+-----------------+------+--------+--------+---------╯
╭--------------------------------------------+-----------------+--------+--------+--------+---------╮
| src/VaultFactory.sol:VaultFactory Contract | | | | | |
+===================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| 0 | 1972 | | | | |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| | | | | | |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| createVault | 231027 | 247829 | 248127 | 248127 | 287 |
╰--------------------------------------------+-----------------+--------+--------+--------+---------╯
╭-------------------------------------------------+-----------------+-------+--------+-------+---------╮
| src/XPNFTToken.sol:XPNFTToken Contract | | | | | |
+======================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| 673020 | 2943 | | | | |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| approve | 228 | 228 | 228 | 228 | 1 |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| getApproved | 148 | 148 | 148 | 148 | 1 |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| isApprovedForAll | 609 | 609 | 609 | 609 | 1 |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| metadataGenerator | 350 | 350 | 350 | 350 | 1 |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| safeTransferFrom(address,address,uint256) | 337 | 337 | 337 | 337 | 1 |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| safeTransferFrom(address,address,uint256,bytes) | 677 | 677 | 677 | 677 | 1 |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| setApprovalForAll | 479 | 479 | 479 | 479 | 1 |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| setMetadataGenerator | 24009 | 26514 | 26514 | 29019 | 2 |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| tokenURI | 61313 | 61313 | 61313 | 61313 | 1 |
|-------------------------------------------------+-----------------+-------+--------+-------+---------|
| transferFrom | 293 | 293 | 293 | 293 | 1 |
╰-------------------------------------------------+-----------------+-------+--------+-------+---------╯
╭----------------------------------+-----------------+-------+--------+-------+---------╮
| src/XPToken.sol:XPToken Contract | | | | | |
+=======================================================================================+
| Deployment Cost | Deployment Size | | | | |
|----------------------------------+-----------------+-------+--------+-------+---------|
| 958002 | 4712 | | | | |
|----------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | |
|----------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|----------------------------------+-----------------+-------+--------+-------+---------|
| acceptOwnership | 28335 | 28335 | 28335 | 28335 | 1 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| addRewardProvider | 23807 | 57744 | 51218 | 68318 | 44 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| allowance | 697 | 697 | 697 | 697 | 2 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| approve | 240 | 240 | 240 | 240 | 2 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf | 3320 | 10986 | 9320 | 20320 | 6 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| getRewardProviders | 1091 | 3374 | 3374 | 5657 | 4 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| mint | 24184 | 75538 | 90623 | 90635 | 14 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| mintAllowance | 5536 | 5546 | 5546 | 5557 | 2 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| owner | 570 | 1236 | 570 | 2570 | 3 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| removeRewardProvider | 23690 | 28149 | 25831 | 34928 | 6 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| totalSupply | 2881 | 4881 | 2881 | 10881 | 8 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| transfer | 614 | 614 | 614 | 614 | 2 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| transferFrom | 357 | 357 | 357 | 357 | 2 |
|----------------------------------+-----------------+-------+--------+-------+---------|
| transferOwnership | 47977 | 47977 | 47977 | 47977 | 1 |
╰----------------------------------+-----------------+-------+--------+-------+---------╯
╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| src/nft-metadata-generators/NFTMetadataGeneratorSVG.sol:NFTMetadataGeneratorSVG Contract | | | | | |
+===============================================================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 1154988 | 6011 | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| generate | 45334 | 45334 | 45334 | 45334 | 1 |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| imagePrefix | 851 | 1851 | 1851 | 2851 | 2 |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| imageSuffix | 895 | 1895 | 1895 | 2895 | 2 |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setImageStrings | 25271 | 30572 | 30572 | 35873 | 2 |
╰------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
╭------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| src/nft-metadata-generators/NFTMetadataGeneratorURL.sol:NFTMetadataGeneratorURL Contract | | | | | |
+===============================================================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 1123357 | 5736 | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| generate | 51347 | 51347 | 51347 | 51347 | 1 |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setURLStrings | 25439 | 30740 | 30740 | 36041 | 2 |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| urlPrefix | 763 | 763 | 763 | 763 | 1 |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| urlSuffix | 829 | 829 | 829 | 829 | 1 |
╰------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
╭---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/mocks/MockMetadataGenerator.sol:MockMetadataGenerator Contract | | | | | |
+==========================================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 820970 | 4015 | | | | |
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | |
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| generate | 47689 | 47689 | 47689 | 47689 | 1 |
╰---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
╭---------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/mocks/MockToken.sol:MockToken Contract | | | | | |
+==================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| 569042 | 3218 | | | | |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| approve | 45933 | 45956 | 45957 | 45957 | 286 |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf | 513 | 883 | 513 | 2513 | 108 |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| mint | 50997 | 56045 | 50997 | 68097 | 298 |
╰---------------------------------------------+-----------------+-------+--------+-------+---------╯
╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮
| test/mocks/StackOverflowStakeManager.sol:StackOverflowStakeManager Contract | | | | | |
+====================================================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| 887790 | 3932 | | | | |
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| | | | | | |
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 321 | 213894 | 213894 | 427541 | 323 |
|-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------|
| proxiableUUID | 383 | 383 | 383 | 383 | 1 |
╰-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╯
╭-------------------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/mocks/XPProviderMock.sol:XPProviderMock Contract | | | | | |
+============================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|-------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 182028 | 624 | | | | |
|-------------------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | |
|-------------------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-------------------------------------------------------+-----------------+-------+--------+-------+---------|
| rewardsBalanceOfAccount | 436 | 1769 | 2436 | 2436 | 12 |
|-------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setTotalXPShares | 43633 | 43633 | 43633 | 43633 | 20 |
|-------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setUserXPShare | 44001 | 44001 | 44001 | 44001 | 4 |
|-------------------------------------------------------+-----------------+-------+--------+-------+---------|
| totalRewardsSupply | 355 | 1021 | 355 | 2355 | 72 |
╰-------------------------------------------------------+-----------------+-------+--------+-------+---------╯

View File

@@ -174,4 +174,4 @@ jobs:
rule:
- verify:rewards_streamer_mp
- verify:emergency_mode
- verify:xp_token
- verify:karma

View File

@@ -1,8 +1,8 @@
{
"files": ["src/XPToken.sol"],
"msg": "Verifying XPToken.sol",
"files": ["src/Karma.sol"],
"msg": "Verifying Karma.sol",
"rule_sanity": "basic",
"verify": "XPToken:certora/specs/XPToken.spec",
"verify": "Karma:certora/specs/Karma.spec",
"optimistic_loop": true,
"loop_iter": "3",
"packages": [

View File

@@ -23,10 +23,10 @@
"scripts": {
"clean": "rm -rf cache out",
"lint": "pnpm lint:sol && pnpm prettier:check",
"verify": "pnpm verify:rewards_streamer_mp && pnpm verify:xp_token && pnpm verify:emergency_mode",
"verify": "pnpm verify:rewards_streamer_mp && pnpm verify:karma && pnpm verify:emergency_mode",
"verify:rewards_streamer_mp": "certoraRun certora/confs/RewardsStreamerMP.conf",
"verify:emergency_mode": "certoraRun certora/confs/EmergencyMode.conf",
"verify:xp_token": "certoraRun certora/confs/XPToken.conf",
"verify:karma": "certoraRun certora/confs/Karma.conf",
"lint:sol": "forge fmt --check && pnpm solhint {script,src,test,certora}/**/*.sol",
"prettier:check": "prettier --check **/*.{json,md,yml} --ignore-path=.prettierignore",
"prettier:write": "prettier --write **/*.{json,md,yml} --ignore-path=.prettierignore",

View File

@@ -5,15 +5,15 @@ import { Ownable, Ownable2Step } from "@openzeppelin/contracts/access/Ownable2St
import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import { IRewardProvider } from "./interfaces/IRewardProvider.sol";
contract XPToken is ERC20, Ownable2Step {
error XPToken__MintAllowanceExceeded();
contract Karma is ERC20, Ownable2Step {
error Karma__MintAllowanceExceeded();
string public constant NAME = "XP Token";
string public constant SYMBOL = "XP";
string public constant NAME = "Karma";
string public constant SYMBOL = "KARMA";
IRewardProvider[] public rewardProviders;
error XPToken__TransfersNotAllowed();
error Karma__TransfersNotAllowed();
error RewardProvider__IndexOutOfBounds();
constructor() ERC20(NAME, SYMBOL) Ownable(msg.sender) { }
@@ -45,7 +45,7 @@ contract XPToken is ERC20, Ownable2Step {
function mint(address account, uint256 amount) external onlyOwner {
if (amount > _mintAllowance()) {
revert XPToken__MintAllowanceExceeded();
revert Karma__MintAllowanceExceeded();
}
_mint(account, amount);
@@ -87,15 +87,15 @@ contract XPToken is ERC20, Ownable2Step {
}
function transfer(address, uint256) public pure override returns (bool) {
revert XPToken__TransfersNotAllowed();
revert Karma__TransfersNotAllowed();
}
function approve(address, uint256) public pure override returns (bool) {
revert XPToken__TransfersNotAllowed();
revert Karma__TransfersNotAllowed();
}
function transferFrom(address, address, uint256) public pure override returns (bool) {
revert XPToken__TransfersNotAllowed();
revert Karma__TransfersNotAllowed();
}
function allowance(address, address) public pure override returns (uint256) {

View File

@@ -8,27 +8,27 @@ interface IERC20 {
function balanceOf(address account) external view returns (uint256);
}
contract XPNFTToken is Ownable {
error XPNFT__TransferNotAllowed();
error XPNFT__InvalidTokenId();
contract KarmaNFT is Ownable {
error KarmaNFT__TransferNotAllowed();
error KarmaNFT__InvalidTokenId();
IERC20 public xpToken;
IERC20 public karmaToken;
INFTMetadataGenerator public metadataGenerator;
string private name = "XPNFT";
string private symbol = "XPNFT";
string private name = "KarmaNFT";
string private symbol = "KARMANFT";
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
modifier onlyValidTokenId(uint256 tokenId) {
if (tokenId > type(uint160).max) {
revert XPNFT__InvalidTokenId();
revert KarmaNFT__InvalidTokenId();
}
_;
}
constructor(address xpTokenAddress, address _metadataGenerator) Ownable(msg.sender) {
xpToken = IERC20(xpTokenAddress);
constructor(address karmaTokenAddress, address _metadataGenerator) Ownable(msg.sender) {
karmaToken = IERC20(karmaTokenAddress);
metadataGenerator = INFTMetadataGenerator(_metadataGenerator);
}
@@ -50,23 +50,23 @@ contract XPNFTToken is Ownable {
}
function safeTransferFrom(address, address, uint256, bytes calldata) external pure {
revert XPNFT__TransferNotAllowed();
revert KarmaNFT__TransferNotAllowed();
}
function safeTransferFrom(address, address, uint256) external pure {
revert XPNFT__TransferNotAllowed();
revert KarmaNFT__TransferNotAllowed();
}
function transferFrom(address, address, uint256) external pure {
revert XPNFT__TransferNotAllowed();
revert KarmaNFT__TransferNotAllowed();
}
function approve(address, uint256) external pure {
revert XPNFT__TransferNotAllowed();
revert KarmaNFT__TransferNotAllowed();
}
function setApprovalForAll(address, bool) external pure {
revert XPNFT__TransferNotAllowed();
revert KarmaNFT__TransferNotAllowed();
}
function getApproved(uint256) external pure returns (address) {
@@ -79,7 +79,7 @@ contract XPNFTToken is Ownable {
function tokenURI(uint256 tokenId) external view onlyValidTokenId(tokenId) returns (string memory) {
address account = address(uint160(tokenId));
uint256 balance = xpToken.balanceOf(account);
uint256 balance = karmaToken.balanceOf(account);
return metadataGenerator.generate(account, balance);
}
}

View File

@@ -14,8 +14,8 @@ abstract contract BaseNFTMetadataGenerator is INFTMetadataGenerator, Ownable {
}
function generate(address account, uint256 balance) external view returns (string memory) {
string memory baseName = "XPNFT Token ";
string memory baseDescription = "This is a XPNFT token for address ";
string memory baseName = "KarmaNFT ";
string memory baseDescription = "This is a KarmaNFT for address ";
string memory propName = string(abi.encodePacked(baseName, Strings.toHexString(account)));
string memory propDescription = string(

View File

@@ -2,27 +2,27 @@
pragma solidity ^0.8.26;
import { Test } from "forge-std/Test.sol";
import { XPToken } from "../src/XPToken.sol";
import { XPProviderMock } from "./mocks/XPProviderMock.sol";
import { Karma } from "../src/Karma.sol";
import { KarmaProviderMock } from "./mocks/KarmaProviderMock.sol";
import { IRewardProvider } from "../src/interfaces/IRewardProvider.sol";
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
contract XPTokenTest is Test {
XPToken xpToken;
contract KarmaTest is Test {
Karma xpToken;
address owner = makeAddr("owner");
address alice = makeAddr("alice");
address bob = makeAddr("bob");
XPProviderMock provider1;
XPProviderMock provider2;
KarmaProviderMock provider1;
KarmaProviderMock provider2;
function setUp() public virtual {
vm.prank(owner);
xpToken = new XPToken();
xpToken = new Karma();
provider1 = new XPProviderMock();
provider2 = new XPProviderMock();
provider1 = new KarmaProviderMock();
provider2 = new KarmaProviderMock();
vm.prank(owner);
xpToken.addRewardProvider(provider1);
@@ -31,8 +31,8 @@ contract XPTokenTest is Test {
xpToken.addRewardProvider(provider2);
}
function testAddXPProviderOnlyOwner() public {
XPProviderMock provider3 = new XPProviderMock();
function testAddKarmaProviderOnlyOwner() public {
KarmaProviderMock provider3 = new KarmaProviderMock();
vm.prank(alice);
vm.expectPartialRevert(Ownable.OwnableUnauthorizedAccount.selector);
@@ -48,7 +48,7 @@ contract XPTokenTest is Test {
assertEq(address(providers[2]), address(provider3));
}
function testRemoveXPProviderOnlyOwner() public {
function testRemoveKarmaProviderOnlyOwner() public {
vm.prank(alice);
vm.expectPartialRevert(Ownable.OwnableUnauthorizedAccount.selector);
xpToken.removeRewardProvider(0);
@@ -61,15 +61,15 @@ contract XPTokenTest is Test {
assertEq(address(providers[0]), address(provider2));
}
function testRemoveXPProviderIndexOutOfBounds() public {
function testRemoveKarmaProviderIndexOutOfBounds() public {
vm.prank(owner);
vm.expectRevert(XPToken.RewardProvider__IndexOutOfBounds.selector);
vm.expectRevert(Karma.RewardProvider__IndexOutOfBounds.selector);
xpToken.removeRewardProvider(10);
}
function testTotalSupply() public {
provider1.setTotalXPShares(1000 ether);
provider2.setTotalXPShares(2000 ether);
provider1.setTotalKarmaShares(1000 ether);
provider2.setTotalKarmaShares(2000 ether);
vm.prank(owner);
xpToken.mint(owner, 500 ether);
@@ -78,7 +78,7 @@ contract XPTokenTest is Test {
assertEq(totalSupply, 3500 ether);
}
function testBalanceOfWithNoSystemTotalXP() public view {
function testBalanceOfWithNoSystemTotalKarma() public view {
uint256 aliceBalance = xpToken.balanceOf(alice);
assertEq(aliceBalance, 0);
@@ -87,11 +87,11 @@ contract XPTokenTest is Test {
}
function testBalanceOf() public {
provider1.setTotalXPShares(1000 ether);
provider2.setTotalXPShares(2000 ether);
provider1.setTotalKarmaShares(1000 ether);
provider2.setTotalKarmaShares(2000 ether);
provider1.setUserXPShare(alice, 1000e18);
provider2.setUserXPShare(alice, 2000e18);
provider1.setUserKarmaShare(alice, 1000e18);
provider2.setUserKarmaShare(alice, 2000e18);
vm.prank(owner);
xpToken.mint(alice, 500e18);
@@ -103,8 +103,8 @@ contract XPTokenTest is Test {
}
function testMintOnlyOwner() public {
provider1.setTotalXPShares(1000 ether);
provider2.setTotalXPShares(2000 ether);
provider1.setTotalKarmaShares(1000 ether);
provider2.setTotalKarmaShares(2000 ether);
assertEq(xpToken.totalSupply(), 3000 ether);
vm.prank(alice);
@@ -117,13 +117,13 @@ contract XPTokenTest is Test {
}
function testTransfersNotAllowed() public {
vm.expectRevert(XPToken.XPToken__TransfersNotAllowed.selector);
vm.expectRevert(Karma.Karma__TransfersNotAllowed.selector);
xpToken.transfer(alice, 100e18);
vm.expectRevert(XPToken.XPToken__TransfersNotAllowed.selector);
vm.expectRevert(Karma.Karma__TransfersNotAllowed.selector);
xpToken.approve(alice, 100e18);
vm.expectRevert(XPToken.XPToken__TransfersNotAllowed.selector);
vm.expectRevert(Karma.Karma__TransfersNotAllowed.selector);
xpToken.transferFrom(alice, bob, 100e18);
uint256 allowance = xpToken.allowance(alice, bob);
@@ -131,15 +131,15 @@ contract XPTokenTest is Test {
}
}
contract XPTokenOwnershipTest is Test {
XPToken xpToken;
contract KarmaOwnershipTest is Test {
Karma xpToken;
address owner = makeAddr("owner");
address alice = makeAddr("alice");
function setUp() public {
vm.prank(owner);
xpToken = new XPToken();
xpToken = new Karma();
}
function testInitialOwner() public view {
@@ -157,15 +157,15 @@ contract XPTokenOwnershipTest is Test {
}
}
contract XPTokenMintAllowanceTest is XPTokenTest {
contract KarmaMintAllowanceTest is KarmaTest {
function setUp() public override {
super.setUp();
}
function testMintAllowance_Available() public {
// 3000 external => maxSupply = 9000
provider1.setTotalXPShares(1000 ether);
provider2.setTotalXPShares(2000 ether);
provider1.setTotalKarmaShares(1000 ether);
provider2.setTotalKarmaShares(2000 ether);
vm.prank(owner);
xpToken.mint(owner, 500 ether);
@@ -177,8 +177,8 @@ contract XPTokenMintAllowanceTest is XPTokenTest {
function testMintAllowance_NotAvailable() public {
// 3000 external => maxSupply = 9000
provider1.setTotalXPShares(1000 ether);
provider2.setTotalXPShares(2000 ether);
provider1.setTotalKarmaShares(1000 ether);
provider2.setTotalKarmaShares(2000 ether);
vm.prank(owner);
xpToken.mint(owner, 6000 ether);
@@ -190,8 +190,8 @@ contract XPTokenMintAllowanceTest is XPTokenTest {
function testMint_RevertWithAllowanceExceeded() public {
// 3000 external => maxSupply = 9000
provider1.setTotalXPShares(1000 ether);
provider2.setTotalXPShares(2000 ether);
provider1.setTotalKarmaShares(1000 ether);
provider2.setTotalKarmaShares(2000 ether);
vm.prank(owner);
xpToken.mint(owner, 500 ether);
@@ -199,14 +199,14 @@ contract XPTokenMintAllowanceTest is XPTokenTest {
// allowed to mint 5500
vm.prank(owner);
vm.expectRevert(XPToken.XPToken__MintAllowanceExceeded.selector);
vm.expectRevert(Karma.Karma__MintAllowanceExceeded.selector);
xpToken.mint(owner, 6000 ether);
}
function testMint_Ok() public {
// 3000 external => maxSupply = 9000
provider1.setTotalXPShares(1000 ether);
provider2.setTotalXPShares(2000 ether);
provider1.setTotalKarmaShares(1000 ether);
provider2.setTotalKarmaShares(2000 ether);
vm.prank(owner);
xpToken.mint(owner, 500 ether);

View File

@@ -1,24 +1,24 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import { Test, console } from "forge-std/Test.sol";
import { Test } from "forge-std/Test.sol";
import { Base64 } from "@openzeppelin/contracts/utils/Base64.sol";
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
import { MockToken } from "./mocks/MockToken.sol";
import { XPNFTToken } from "../src/XPNFTToken.sol";
import { KarmaNFT } from "../src/KarmaNFT.sol";
import { MockMetadataGenerator } from "./mocks/MockMetadataGenerator.sol";
contract XPNFTTokenTest is Test {
contract KarmaNFTTest is Test {
MockToken erc20Token;
MockMetadataGenerator metadataGenerator;
XPNFTToken nft;
KarmaNFT nft;
address alice = makeAddr("alice");
function setUp() public {
erc20Token = new MockToken("Test", "TEST");
metadataGenerator = new MockMetadataGenerator(address(erc20Token), "https://test.local/");
nft = new XPNFTToken(address(erc20Token), address(metadataGenerator));
nft = new KarmaNFT(address(erc20Token), address(metadataGenerator));
address[1] memory users = [alice];
for (uint256 i = 0; i < users.length; i++) {
@@ -32,9 +32,9 @@ contract XPNFTTokenTest is Test {
function testTokenURI() public view {
bytes memory expectedMetadata = abi.encodePacked(
"{\"name\":\"XPNFT Token 0x328809bc894f92807417d2dad6b7c998c1afdac6\",",
"{\"name\":\"KarmaNFT 0x328809bc894f92807417d2dad6b7c998c1afdac6\",",
// solhint-disable-next-line
"\"description\":\"This is a XPNFT token for address 0x328809bc894f92807417d2dad6b7c998c1afdac6 with balance 10000000000000000000\",",
"\"description\":\"This is a KarmaNFT for address 0x328809bc894f92807417d2dad6b7c998c1afdac6 with balance 10000000000000000000\",",
"\"image\":\"https://test.local/0x328809bc894f92807417d2dad6b7c998c1afdac6\"}"
);
string memory metadata = nft.tokenURI(addressToId(alice));
@@ -60,27 +60,27 @@ contract XPNFTTokenTest is Test {
}
function testTransferNotAllowed() public {
vm.expectRevert(XPNFTToken.XPNFT__TransferNotAllowed.selector);
vm.expectRevert(KarmaNFT.KarmaNFT__TransferNotAllowed.selector);
nft.transferFrom(alice, address(0), addressToId(alice));
}
function testSafeTransferNotAllowed() public {
vm.expectRevert(XPNFTToken.XPNFT__TransferNotAllowed.selector);
vm.expectRevert(KarmaNFT.KarmaNFT__TransferNotAllowed.selector);
nft.safeTransferFrom(alice, address(0), addressToId(alice));
}
function testSafeTransferWithDataNotAllowed() public {
vm.expectRevert(XPNFTToken.XPNFT__TransferNotAllowed.selector);
vm.expectRevert(KarmaNFT.KarmaNFT__TransferNotAllowed.selector);
nft.safeTransferFrom(alice, address(0), addressToId(alice), "");
}
function testApproveNotAllowed() public {
vm.expectRevert(XPNFTToken.XPNFT__TransferNotAllowed.selector);
vm.expectRevert(KarmaNFT.KarmaNFT__TransferNotAllowed.selector);
nft.approve(address(0), addressToId(alice));
}
function testSetApprovalForAllNotAllowed() public {
vm.expectRevert(XPNFTToken.XPNFT__TransferNotAllowed.selector);
vm.expectRevert(KarmaNFT.KarmaNFT__TransferNotAllowed.selector);
nft.setApprovalForAll(address(0), true);
}

View File

@@ -3,18 +3,18 @@ pragma solidity ^0.8.26;
import { IRewardProvider } from "../../src/interfaces/IRewardProvider.sol";
contract XPProviderMock is IRewardProvider {
contract KarmaProviderMock is IRewardProvider {
// solhint-disable-next-line
mapping(address => uint256) public userXPShare;
mapping(address => uint256) public userKarmaShare;
uint256 public totalXPShares;
uint256 public totalKarmaShares;
function setUserXPShare(address user, uint256 xp) external {
userXPShare[user] = xp;
function setUserKarmaShare(address user, uint256 karma) external {
userKarmaShare[user] = karma;
}
function setTotalXPShares(uint256 xp) external {
totalXPShares = xp;
function setTotalKarmaShares(uint256 karma) external {
totalKarmaShares = karma;
}
function rewardsBalanceOf(address) external pure override returns (uint256) {
@@ -22,10 +22,10 @@ contract XPProviderMock is IRewardProvider {
}
function rewardsBalanceOfAccount(address account) external view override returns (uint256) {
return userXPShare[account];
return userKarmaShare[account];
}
function totalRewardsSupply() external view override returns (uint256) {
return totalXPShares;
return totalKarmaShares;
}
}

View File

@@ -21,10 +21,10 @@ contract NFTMetadataGeneratorSVGTest is Test {
}
function testGenerateMetadata() public view {
string memory expectedName = "XPNFT Token 0x328809bc894f92807417d2dad6b7c998c1afdac6";
string memory expectedName = "KarmaNFT 0x328809bc894f92807417d2dad6b7c998c1afdac6";
string memory expectedDescription =
// solhint-disable-next-line
"This is a XPNFT token for address 0x328809bc894f92807417d2dad6b7c998c1afdac6 with balance 10000000000000000000";
"This is a KarmaNFT for address 0x328809bc894f92807417d2dad6b7c998c1afdac6 with balance 10000000000000000000";
string memory encodedImage = Base64.encode(abi.encodePacked("<svg>10</svg>"));
string memory expectedImage = string(abi.encodePacked("data:image/svg+xml;base64,", encodedImage));

View File

@@ -23,9 +23,9 @@ contract NFTMetadataGeneratorURLTest is Test {
function testGenerateMetadata() public view {
string memory expectedMetadata = "data:application/json;base64,";
bytes memory json = abi.encodePacked(
"{\"name\":\"XPNFT Token 0x328809bc894f92807417d2dad6b7c998c1afdac6\",",
"{\"name\":\"KarmaNFT 0x328809bc894f92807417d2dad6b7c998c1afdac6\",",
// solhint-disable-next-line
"\"description\":\"This is a XPNFT token for address 0x328809bc894f92807417d2dad6b7c998c1afdac6 with balance 10000000000000000000\",",
"\"description\":\"This is a KarmaNFT for address 0x328809bc894f92807417d2dad6b7c998c1afdac6 with balance 10000000000000000000\",",
"\"image\":\"http://test.local/images/0x328809bc894f92807417d2dad6b7c998c1afdac6.jpg\"}"
);
expectedMetadata = string(abi.encodePacked(expectedMetadata, Base64.encode(json)));