Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Payment
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; contract Payment { error Payment__PaymentAmountMustBeGreaterThanZero(); error Payment__FailedToSendEther(); error Payment__InvalidReceiverAddress(); error Payment__ArrayLengthMismatch(); error Payment__NotEnoughEtherSent(); address public constant OWNER = 0x61ec9Cbc365b23eC035986A30FDed12e94756b3B; uint256 public constant FEE_PERCENTAGE = 3; // 3% function sendPayment(address[] calldata recipients, uint256[] calldata amounts) external payable { if (recipients.length != amounts.length) { revert Payment__ArrayLengthMismatch(); } uint256 totalAmount = 0; for (uint256 i = 0; i < amounts.length; i++) { totalAmount += amounts[i]; } if (msg.value < totalAmount) { revert Payment__NotEnoughEtherSent(); } uint256 totalEtherSentToRecipients = 0; for (uint256 i = 0; i < recipients.length; i++) { if (recipients[i] == address(0)) { revert Payment__InvalidReceiverAddress(); } if (amounts[i] == 0) { revert Payment__PaymentAmountMustBeGreaterThanZero(); } uint256 fee = (amounts[i] * FEE_PERCENTAGE) / 100; uint256 amountToSendToRecipient = amounts[i] - fee; totalEtherSentToRecipients += amountToSendToRecipient; (bool sentToReceiver,) = recipients[i].call{value: amountToSendToRecipient}(""); if (!sentToReceiver) { revert Payment__FailedToSendEther(); } } (bool sentToOwner,) = OWNER.call{value: msg.value - totalEtherSentToRecipients}(""); if (!sentToOwner) { revert Payment__FailedToSendEther(); } } receive() external payable { (bool sentToOwner,) = OWNER.call{value: msg.value}(""); if (!sentToOwner) { revert Payment__FailedToSendEther(); } } fallback() external payable { (bool sentToOwner,) = OWNER.call{value: msg.value}(""); if (!sentToOwner) { revert Payment__FailedToSendEther(); } } }
{ "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"name":"Payment__ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"Payment__FailedToSendEther","type":"error"},{"inputs":[],"name":"Payment__InvalidReceiverAddress","type":"error"},{"inputs":[],"name":"Payment__NotEnoughEtherSent","type":"error"},{"inputs":[],"name":"Payment__PaymentAmountMustBeGreaterThanZero","type":"error"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"FEE_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OWNER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"sendPayment","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b506105c2806100206000396000f3fe6080604052600436106100375760003560e01c80620b46f8146100f0578063117803e314610118578063de27314b14610158576100c7565b366100c75760007361ec9cbc365b23ec035986a30fded12e94756b3b6001600160a01b0316346040515b60006040518083038185875af1925050503d806000811461009e576040519150601f19603f3d011682016040523d82523d6000602084013e6100a3565b606091505b50509050806100c557604051639fb8bc1760e01b815260040160405180910390fd5b005b60007361ec9cbc365b23ec035986a30fded12e94756b3b6001600160a01b031634604051610061565b3480156100fc57600080fd5b50610105600381565b6040519081526020015b60405180910390f35b34801561012457600080fd5b506101407361ec9cbc365b23ec035986a30fded12e94756b3b81565b6040516001600160a01b03909116815260200161010f565b6100c561016636600461045f565b8281146101865760405163bcea0df560e01b815260040160405180910390fd5b6000805b828110156101c0578383828181106101a4576101a46104cb565b90506020020135826101b691906104f7565b915060010161018a565b50803410156101e257604051637a5f17cb60e01b815260040160405180910390fd5b6000805b85811015610385576000878783818110610202576102026104cb565b90506020020160208101906102179190610510565b6001600160a01b03160361023e5760405163efcff6a960e01b815260040160405180910390fd5b848482818110610250576102506104cb565b9050602002013560000361027757604051639e55ab0960e01b815260040160405180910390fd5b60006064600387878581811061028f5761028f6104cb565b905060200201356102a09190610540565b6102aa9190610557565b90506000818787858181106102c1576102c16104cb565b905060200201356102d29190610579565b90506102de81856104f7565b935060008989858181106102f4576102f46104cb565b90506020020160208101906103099190610510565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610353576040519150601f19603f3d011682016040523d82523d6000602084013e610358565b606091505b505090508061037a57604051639fb8bc1760e01b815260040160405180910390fd5b5050506001016101e6565b5060007361ec9cbc365b23ec035986a30fded12e94756b3b6103a78334610579565b604051600081818185875af1925050503d80600081146103e3576040519150601f19603f3d011682016040523d82523d6000602084013e6103e8565b606091505b505090508061040a57604051639fb8bc1760e01b815260040160405180910390fd5b50505050505050565b60008083601f84011261042557600080fd5b50813567ffffffffffffffff81111561043d57600080fd5b6020830191508360208260051b850101111561045857600080fd5b9250929050565b6000806000806040858703121561047557600080fd5b843567ffffffffffffffff8082111561048d57600080fd5b61049988838901610413565b909650945060208701359150808211156104b257600080fd5b506104bf87828801610413565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561050a5761050a6104e1565b92915050565b60006020828403121561052257600080fd5b81356001600160a01b038116811461053957600080fd5b9392505050565b808202811582820484141761050a5761050a6104e1565b60008261057457634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561050a5761050a6104e156fea26469706673582212202ad3384198047f7ca4b65554fea1e83fc3270f5e5dc43f75eac24112e946e27064736f6c63430008170033
Deployed Bytecode
0x6080604052600436106100375760003560e01c80620b46f8146100f0578063117803e314610118578063de27314b14610158576100c7565b366100c75760007361ec9cbc365b23ec035986a30fded12e94756b3b6001600160a01b0316346040515b60006040518083038185875af1925050503d806000811461009e576040519150601f19603f3d011682016040523d82523d6000602084013e6100a3565b606091505b50509050806100c557604051639fb8bc1760e01b815260040160405180910390fd5b005b60007361ec9cbc365b23ec035986a30fded12e94756b3b6001600160a01b031634604051610061565b3480156100fc57600080fd5b50610105600381565b6040519081526020015b60405180910390f35b34801561012457600080fd5b506101407361ec9cbc365b23ec035986a30fded12e94756b3b81565b6040516001600160a01b03909116815260200161010f565b6100c561016636600461045f565b8281146101865760405163bcea0df560e01b815260040160405180910390fd5b6000805b828110156101c0578383828181106101a4576101a46104cb565b90506020020135826101b691906104f7565b915060010161018a565b50803410156101e257604051637a5f17cb60e01b815260040160405180910390fd5b6000805b85811015610385576000878783818110610202576102026104cb565b90506020020160208101906102179190610510565b6001600160a01b03160361023e5760405163efcff6a960e01b815260040160405180910390fd5b848482818110610250576102506104cb565b9050602002013560000361027757604051639e55ab0960e01b815260040160405180910390fd5b60006064600387878581811061028f5761028f6104cb565b905060200201356102a09190610540565b6102aa9190610557565b90506000818787858181106102c1576102c16104cb565b905060200201356102d29190610579565b90506102de81856104f7565b935060008989858181106102f4576102f46104cb565b90506020020160208101906103099190610510565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610353576040519150601f19603f3d011682016040523d82523d6000602084013e610358565b606091505b505090508061037a57604051639fb8bc1760e01b815260040160405180910390fd5b5050506001016101e6565b5060007361ec9cbc365b23ec035986a30fded12e94756b3b6103a78334610579565b604051600081818185875af1925050503d80600081146103e3576040519150601f19603f3d011682016040523d82523d6000602084013e6103e8565b606091505b505090508061040a57604051639fb8bc1760e01b815260040160405180910390fd5b50505050505050565b60008083601f84011261042557600080fd5b50813567ffffffffffffffff81111561043d57600080fd5b6020830191508360208260051b850101111561045857600080fd5b9250929050565b6000806000806040858703121561047557600080fd5b843567ffffffffffffffff8082111561048d57600080fd5b61049988838901610413565b909650945060208701359150808211156104b257600080fd5b506104bf87828801610413565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561050a5761050a6104e1565b92915050565b60006020828403121561052257600080fd5b81356001600160a01b038116811461053957600080fd5b9392505050565b808202811582820484141761050a5761050a6104e1565b60008261057457634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561050a5761050a6104e156fea26469706673582212202ad3384198047f7ca4b65554fea1e83fc3270f5e5dc43f75eac24112e946e27064736f6c63430008170033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.