mirror of
https://github.com/logos-storage/logos-storage-contracts-eth.git
synced 2026-01-10 01:03:12 +00:00
70 lines
2.0 KiB
Solidity
70 lines
2.0 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity 0.8.28;
|
|
|
|
import "../Configuration.sol";
|
|
import "../Requests.sol";
|
|
|
|
library Collateral {
|
|
using Collateral for Request;
|
|
using Collateral for CollateralConfig;
|
|
|
|
function checkCorrectness(
|
|
CollateralConfig memory configuration
|
|
) internal pure {
|
|
require(
|
|
configuration.repairRewardPercentage <= 100,
|
|
Marketplace_RepairRewardPercentageTooHigh()
|
|
);
|
|
require(
|
|
configuration.slashPercentage <= 100,
|
|
Marketplace_SlashPercentageTooHigh()
|
|
);
|
|
require(
|
|
configuration.maxNumberOfSlashes * configuration.slashPercentage <= 100,
|
|
Marketplace_MaximumSlashingTooHigh()
|
|
);
|
|
}
|
|
|
|
function collateralPerSlot(
|
|
Request storage request
|
|
) internal view returns (uint128) {
|
|
return request.ask.collateralPerByte * request.ask.slotSize;
|
|
}
|
|
|
|
function slashAmount(
|
|
CollateralConfig storage configuration,
|
|
uint128 collateral
|
|
) internal view returns (uint128) {
|
|
return (collateral * configuration.slashPercentage) / 100;
|
|
}
|
|
|
|
function repairReward(
|
|
CollateralConfig storage configuration,
|
|
uint128 collateral
|
|
) internal view returns (uint128) {
|
|
return (collateral * configuration.repairRewardPercentage) / 100;
|
|
}
|
|
|
|
function validatorReward(
|
|
CollateralConfig storage configuration,
|
|
uint128 slashed
|
|
) internal view returns (uint128) {
|
|
return (slashed * configuration.validatorRewardPercentage) / 100;
|
|
}
|
|
|
|
function designatedCollateral(
|
|
CollateralConfig storage configuration,
|
|
uint128 collateral
|
|
) internal view returns (uint128) {
|
|
uint8 slashes = configuration.maxNumberOfSlashes;
|
|
uint128 slashing = configuration.slashAmount(collateral);
|
|
uint128 validation = slashes * configuration.validatorReward(slashing);
|
|
uint128 repair = configuration.repairReward(collateral);
|
|
return collateral - validation - repair;
|
|
}
|
|
|
|
error Marketplace_RepairRewardPercentageTooHigh();
|
|
error Marketplace_SlashPercentageTooHigh();
|
|
error Marketplace_MaximumSlashingTooHigh();
|
|
}
|