├── .github └── workflows │ └── test.yml ├── .gitignore ├── .gitmodules ├── README.md ├── foundry.toml ├── lib └── StakingV2 │ ├── @openzeppelin │ ├── contracts-upgradeable │ │ ├── proxy │ │ │ ├── ERC1967 │ │ │ │ └── ERC1967UpgradeUpgradeable.sol │ │ │ ├── beacon │ │ │ │ └── IBeaconUpgradeable.sol │ │ │ └── utils │ │ │ │ ├── Initializable.sol │ │ │ │ └── UUPSUpgradeable.sol │ │ ├── security │ │ │ ├── PausableUpgradeable.sol │ │ │ └── ReentrancyGuardUpgradeable.sol │ │ ├── token │ │ │ ├── ERC1155 │ │ │ │ ├── ERC1155Upgradeable.sol │ │ │ │ ├── IERC1155ReceiverUpgradeable.sol │ │ │ │ ├── IERC1155Upgradeable.sol │ │ │ │ └── extensions │ │ │ │ │ └── IERC1155MetadataURIUpgradeable.sol │ │ │ └── ERC20 │ │ │ │ ├── IERC20Upgradeable.sol │ │ │ │ └── utils │ │ │ │ └── SafeERC20Upgradeable.sol │ │ └── utils │ │ │ ├── AddressUpgradeable.sol │ │ │ ├── ContextUpgradeable.sol │ │ │ ├── StorageSlotUpgradeable.sol │ │ │ └── introspection │ │ │ ├── ERC165CheckerUpgradeable.sol │ │ │ ├── ERC165Upgradeable.sol │ │ │ └── IERC165Upgradeable.sol │ └── contracts │ │ ├── token │ │ └── ERC20 │ │ │ ├── ERC20.sol │ │ │ ├── IERC20.sol │ │ │ └── extensions │ │ │ ├── IERC20Metadata.sol │ │ │ ├── draft-ERC20Permit.sol │ │ │ └── draft-IERC20Permit.sol │ │ └── utils │ │ ├── Context.sol │ │ ├── Counters.sol │ │ ├── Strings.sol │ │ └── cryptography │ │ ├── ECDSA.sol │ │ └── draft-EIP712.sol │ ├── contracts │ ├── interfaces │ │ ├── IAccessControlManager.sol │ │ ├── IStaking.sol │ │ ├── IVault.sol │ │ ├── IYOPRewards.sol │ │ └── roles │ │ │ └── IGatekeeperable.sol │ ├── security │ │ └── BasePauseableUpgradeable.sol │ ├── staking │ │ ├── Staking.sol │ │ └── StakingV2.sol │ └── vaults │ │ └── roles │ │ ├── Gatekeeperable.sol │ │ └── Governable.sol │ └── settings.json ├── misc ├── project_structure.png └── project_structure2.png ├── remappings.txt ├── script └── Contract.s.sol ├── src └── Contract.sol └── test └── Contract.t.sol /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | cache/ 2 | out/ 3 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/.gitmodules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/README.md -------------------------------------------------------------------------------- /foundry.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/foundry.toml -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/token/ERC20/ERC20.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/token/ERC20/ERC20.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/token/ERC20/IERC20.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/token/ERC20/IERC20.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/utils/Context.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/utils/Context.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/utils/Counters.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/utils/Counters.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/utils/Strings.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/utils/Strings.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/utils/cryptography/ECDSA.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/utils/cryptography/ECDSA.sol -------------------------------------------------------------------------------- /lib/StakingV2/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/interfaces/IAccessControlManager.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/interfaces/IAccessControlManager.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/interfaces/IStaking.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/interfaces/IStaking.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/interfaces/IVault.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/interfaces/IVault.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/interfaces/IYOPRewards.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/interfaces/IYOPRewards.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/interfaces/roles/IGatekeeperable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/interfaces/roles/IGatekeeperable.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/security/BasePauseableUpgradeable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/security/BasePauseableUpgradeable.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/staking/Staking.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/staking/Staking.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/staking/StakingV2.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/staking/StakingV2.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/vaults/roles/Gatekeeperable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/vaults/roles/Gatekeeperable.sol -------------------------------------------------------------------------------- /lib/StakingV2/contracts/vaults/roles/Governable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/contracts/vaults/roles/Governable.sol -------------------------------------------------------------------------------- /lib/StakingV2/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/lib/StakingV2/settings.json -------------------------------------------------------------------------------- /misc/project_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/misc/project_structure.png -------------------------------------------------------------------------------- /misc/project_structure2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/misc/project_structure2.png -------------------------------------------------------------------------------- /remappings.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/remappings.txt -------------------------------------------------------------------------------- /script/Contract.s.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/script/Contract.s.sol -------------------------------------------------------------------------------- /src/Contract.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/src/Contract.sol -------------------------------------------------------------------------------- /test/Contract.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SergeKireev/foundry-poc-tutorial-II/HEAD/test/Contract.t.sol --------------------------------------------------------------------------------