Polygon Sponsored slots available. Book your slot here!
Overview
POL Balance
0 POL
POL Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 23 from a total of 23 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Sign Transaction | 50117678 | 385 days ago | IN | 0 POL | 0.00632686 | ||||
Sign Transaction | 50117553 | 385 days ago | IN | 0 POL | 0.00237271 | ||||
Sign Transaction | 50117532 | 385 days ago | IN | 0 POL | 0.00277294 | ||||
Withdraw Funds | 50117481 | 385 days ago | IN | 0 POL | 0.00242048 | ||||
Sign Transaction | 46116720 | 486 days ago | IN | 0 POL | 0.00649367 | ||||
Sign Transaction | 46116712 | 486 days ago | IN | 0 POL | 0.00484839 | ||||
Sign Transaction | 46116711 | 486 days ago | IN | 0 POL | 0.00593111 | ||||
Withdraw Funds | 46116694 | 486 days ago | IN | 0 POL | 0.0043188 | ||||
Transfer | 46116663 | 486 days ago | IN | 1 POL | 0.00162057 | ||||
Toggle Admin Sig... | 46116640 | 486 days ago | IN | 0 POL | 0.00200238 | ||||
Sign Transaction | 46116606 | 486 days ago | IN | 0 POL | 0.00706843 | ||||
Sign Transaction | 46116446 | 486 days ago | IN | 0 POL | 0.00559829 | ||||
Sign Transaction | 46116427 | 486 days ago | IN | 0 POL | 0.00527335 | ||||
Sign Transaction | 46116420 | 486 days ago | IN | 0 POL | 0.00565473 | ||||
Withdraw Funds | 46116391 | 486 days ago | IN | 0 POL | 0.00450443 | ||||
Transfer | 46116352 | 486 days ago | IN | 1 POL | 0.00159452 | ||||
Add Owner | 45526337 | 501 days ago | IN | 0 POL | 0.00339735 | ||||
Remove Owner | 45526328 | 501 days ago | IN | 0 POL | 0.00184373 | ||||
Sign Transaction | 45526211 | 501 days ago | IN | 0 POL | 0.00695252 | ||||
Sign Transaction | 45526201 | 501 days ago | IN | 0 POL | 0.00456067 | ||||
Sign Transaction | 45526195 | 501 days ago | IN | 0 POL | 0.00618332 | ||||
Withdraw Funds | 45526136 | 501 days ago | IN | 0 POL | 0.00760237 | ||||
Transfer | 45525842 | 501 days ago | IN | 1 POL | 0.00135194 |
Loading...
Loading
Contract Name:
Payments
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 250 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.17; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/utils/Address.sol"; interface iPaymentFactory { function _getAdmin() external view returns(address adminAddress); } contract Payments is Ownable, ReentrancyGuard { using Address for address payable; mapping(address => uint8) private owners; uint8 private constant MIN_SIGN = 3; uint256 private txIdx = 0; struct Transaction { uint256 value; uint8 status; uint8 confirmCount; uint8 adminConfirmed; } mapping(uint => mapping(address => bool)) public isConfirmed; address public factory; address[] _wallets; uint256[] _percentages; Transaction[] public transactions; bool adminSigner = true; error NotAdmin(); error NotValidOwner(); error TxDoesNotExist(); error TxAlreadyExecuted(); error TxAlreadyConfirmed(); error TxOpen(); error ZeroAddress(); error RequiresAdminSignature(); error InvalidPercentage(); error Blacklisted(); error NoAvailableFunds(); error WithdrawTooHigh(); error WithdrawFailed(); event Received(address _Sender, uint256 _Amount); event Withdraw(uint256 _Amount, address[] _Wallets, uint256[] _Percentages); event AddedOwner(address _Owner); event RemovedOwner(address _Owner); event TransactionCreated(uint256 indexed _TxIdx, uint256 _Amount); event TransactionDenied(uint256 indexed _TxIdx, address _Address); event TransactionSigned(uint256 indexed _TxIdx, address _Address); event TransactionComplete(uint256 indexed _TxIdx, uint256 _Amount); event ChangeWallets(address[] _Wallets); event ChangePercentages(uint256[] _Percentages); event ChangeWalletsAndPercentages(address[] _Wallets, uint256[] _Percentages); receive() external payable { emit Received(msg.sender, msg.value); } modifier isAdmin() { if(msg.sender != iPaymentFactory(factory)._getAdmin()) {revert NotAdmin();} _; } modifier validOwner() { if(!(msg.sender == owner() || owners[msg.sender] == 1 || msg.sender == iPaymentFactory(factory)._getAdmin())) {revert NotValidOwner();} _; } modifier txExists(uint _txIndex) { if(_txIndex >= transactions.length) {revert TxDoesNotExist();} _; } modifier notExecuted(uint _txIndex) { if(transactions[_txIndex].status != 0) {revert TxAlreadyExecuted();} _; } modifier notConfirmed(uint _txIndex) { if(isConfirmed[_txIndex][msg.sender]) {revert TxAlreadyConfirmed();} _; } modifier notOpen() { if(!(txIdx == 0 || (txIdx != 0 && transactions[txIdx-1].status != 0))) {revert TxOpen();} _; } constructor(address[] memory wallets_, uint256[] memory percentages_, address[3] memory owners_) { uint256 total = 0; for(uint256 i=0; i < percentages_.length; i++) { total += percentages_[i]; } if(total != 10000) {revert InvalidPercentage();} _wallets = wallets_; _percentages = percentages_; transferOwnership(owners_[0]); owners[owners_[1]] = 1; owners[owners_[2]] = 1; factory = msg.sender; } function changeWallets(address[] memory wallets_) public onlyOwner { _wallets = wallets_; emit ChangeWallets(wallets_); } function changePercentages(uint256[] memory percentages_) public onlyOwner { uint256 total = 0; for(uint256 i=0; i < percentages_.length; i++) { total += percentages_[i]; } if(total != 10000) {revert InvalidPercentage();} _percentages = percentages_; emit ChangePercentages(percentages_); } function changeWalletsAndPercentages(address[] memory wallets_, uint256[] memory percentages_) public onlyOwner { uint256 total = 0; for(uint256 i=0; i < percentages_.length; i++) { total += percentages_[i]; } if(total != 10000) {revert InvalidPercentage();} _wallets = wallets_; _percentages = percentages_; emit ChangeWalletsAndPercentages(wallets_, percentages_); } function addOwner(address owner) onlyOwner public { owners[owner] = 1; emit AddedOwner(owner); } function removeOwner(address owner) onlyOwner public { owners[owner] = 0; emit RemovedOwner(owner); } function toggleAdminSigner() public isAdmin { adminSigner = !adminSigner; } function availableFunds() public view validOwner returns(uint256 amount){ return(address(this).balance); } function withdrawFunds(uint256 amount) public onlyOwner { if(address(this).balance == 0) {revert NoAvailableFunds();} if(amount > (address(this).balance)) {revert WithdrawTooHigh();} createTransaction(amount); } function createTransaction(uint256 amount) private notOpen { txIdx = transactions.length+1; Transaction memory transaction; transaction.value = amount; transaction.status = 0; transaction.confirmCount = 0; transactions.push(transaction); emit TransactionCreated(txIdx, amount); } function signTransaction(uint8 action) public validOwner txExists(txIdx-1) notExecuted(txIdx-1) notConfirmed(txIdx-1) { Transaction storage transaction = transactions[txIdx-1]; if(transaction.confirmCount == MIN_SIGN) { if(adminSigner && !isConfirmed[txIdx-1][iPaymentFactory(factory)._getAdmin()] && msg.sender != iPaymentFactory(factory)._getAdmin()) { revert RequiresAdminSignature(); } } transaction.confirmCount += 1; isConfirmed[txIdx-1][msg.sender] = true; if(action == 2) { transaction.status = action; emit TransactionDenied(txIdx, msg.sender); return; } emit TransactionSigned(txIdx, msg.sender); if(transaction.confirmCount >= MIN_SIGN) { if(adminSigner && !isConfirmed[txIdx-1][iPaymentFactory(factory)._getAdmin()]) {return;} transaction.status = 1; _withdrawFunds(transaction.value); emit TransactionComplete(txIdx, transaction.value); } } function _withdrawFunds(uint256 amount) private { for (uint256 i = 0; i < _wallets.length; i++) { (bool wallet, ) = payable(_wallets[i]).call{value: ((amount * _percentages[i])/10000)}(""); if(!wallet) {revert WithdrawFailed();} } emit Withdraw(amount, _wallets, _percentages); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * * Furthermore, `isContract` will also return true if the target contract within * the same transaction is already scheduled for destruction by `SELFDESTRUCT`, * which only has an effect at the end of a transaction. * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 250 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address[]","name":"wallets_","type":"address[]"},{"internalType":"uint256[]","name":"percentages_","type":"uint256[]"},{"internalType":"address[3]","name":"owners_","type":"address[3]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Blacklisted","type":"error"},{"inputs":[],"name":"InvalidPercentage","type":"error"},{"inputs":[],"name":"NoAvailableFunds","type":"error"},{"inputs":[],"name":"NotAdmin","type":"error"},{"inputs":[],"name":"NotValidOwner","type":"error"},{"inputs":[],"name":"RequiresAdminSignature","type":"error"},{"inputs":[],"name":"TxAlreadyConfirmed","type":"error"},{"inputs":[],"name":"TxAlreadyExecuted","type":"error"},{"inputs":[],"name":"TxDoesNotExist","type":"error"},{"inputs":[],"name":"TxOpen","type":"error"},{"inputs":[],"name":"WithdrawFailed","type":"error"},{"inputs":[],"name":"WithdrawTooHigh","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_Owner","type":"address"}],"name":"AddedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"_Percentages","type":"uint256[]"}],"name":"ChangePercentages","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"_Wallets","type":"address[]"}],"name":"ChangeWallets","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"_Wallets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"_Percentages","type":"uint256[]"}],"name":"ChangeWalletsAndPercentages","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_Sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_Amount","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_Owner","type":"address"}],"name":"RemovedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_TxIdx","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_Amount","type":"uint256"}],"name":"TransactionComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_TxIdx","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_Amount","type":"uint256"}],"name":"TransactionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_TxIdx","type":"uint256"},{"indexed":false,"internalType":"address","name":"_Address","type":"address"}],"name":"TransactionDenied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_TxIdx","type":"uint256"},{"indexed":false,"internalType":"address","name":"_Address","type":"address"}],"name":"TransactionSigned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_Amount","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"_Wallets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"_Percentages","type":"uint256[]"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"addOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"availableFunds","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"percentages_","type":"uint256[]"}],"name":"changePercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets_","type":"address[]"}],"name":"changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets_","type":"address[]"},{"internalType":"uint256[]","name":"percentages_","type":"uint256[]"}],"name":"changeWalletsAndPercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"isConfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"action","type":"uint8"}],"name":"signTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleAdminSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transactions","outputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint8","name":"confirmCount","type":"uint8"},{"internalType":"uint8","name":"adminConfirmed","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260006003556009805460ff191660011790553480156200002357600080fd5b5060405162001dbf38038062001dbf8339810160408190526200004691620004cc565b620000513362000160565b600180556000805b8351811015620000a457838181518110620000785762000078620005af565b6020026020010151826200008d9190620005db565b9150806200009b81620005f7565b91505062000059565b508061271014620000c857604051631f3b85d360e01b815260040160405180910390fd5b8351620000dd90600690602087019062000291565b508251620000f3906007906020860190620002fb565b5081516200010190620001b0565b506020818101516001600160a01b03908116600090815260029092526040808320805460ff19908116600190811790925594820151909216835290912080549092161790555050600580546001600160a01b0319163317905562000613565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001ba62000233565b6001600160a01b038116620002255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b620002308162000160565b50565b6000546001600160a01b031633146200028f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200021c565b565b828054828255906000526020600020908101928215620002e9579160200282015b82811115620002e957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002b2565b50620002f792915062000339565b5090565b828054828255906000526020600020908101928215620002e9579160200282015b82811115620002e95782518255916020019190600101906200031c565b5b80821115620002f757600081556001016200033a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000391576200039162000350565b604052919050565b60006001600160401b03821115620003b557620003b562000350565b5060051b60200190565b80516001600160a01b0381168114620003d757600080fd5b919050565b600082601f830112620003ee57600080fd5b8151602062000407620004018362000399565b62000366565b82815260059290921b840181019181810190868411156200042757600080fd5b8286015b848110156200044457805183529183019183016200042b565b509695505050505050565b600082601f8301126200046157600080fd5b604051606081016001600160401b038111828210171562000486576200048662000350565b6040528060608401858111156200049c57600080fd5b845b81811015620004c157620004b281620003bf565b8352602092830192016200049e565b509195945050505050565b600080600060a08486031215620004e257600080fd5b83516001600160401b0380821115620004fa57600080fd5b818601915086601f8301126200050f57600080fd5b8151602062000522620004018362000399565b82815260059290921b8401810191818101908a8411156200054257600080fd5b948201945b838610156200056b576200055b86620003bf565b8252948201949082019062000547565b918901519197509093505050808211156200058557600080fd5b506200059486828701620003dc565b925050620005a685604086016200044f565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620005f157620005f1620005c5565b92915050565b6000600182016200060c576200060c620005c5565b5060010190565b61179c80620006236000396000f3fe6080604052600436106100ec5760003560e01c8063721c08001161008a5780639ace38c2116100595780639ace38c2146102c1578063c45a01551461030a578063d1b707891461032a578063f2fde38b1461034a57600080fd5b8063721c08001461020457806380f59a65146102245780638da5cb5b1461026f57806397e88653146102a157600080fd5b806346fcff4c116100c657806346fcff4c146101925780634d6e0065146101ba5780637065cb48146101cf578063715018a6146101ef57600080fd5b8063155dd5ee14610130578063173825d9146101525780631d79111f1461017257600080fd5b3661012b57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561013c57600080fd5b5061015061014b366004611274565b61036a565b005b34801561015e57600080fd5b5061015061016d3660046112a2565b6103c0565b34801561017e57600080fd5b5061015061018d366004611400565b610420565b34801561019e57600080fd5b506101a76104f7565b6040519081526020015b60405180910390f35b3480156101c657600080fd5b506101506105d7565b3480156101db57600080fd5b506101506101ea3660046112a2565b610693565b3480156101fb57600080fd5b506101506106ef565b34801561021057600080fd5b5061015061021f366004611464565b610703565b34801561023057600080fd5b5061025f61023f366004611487565b600460209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b1565b34801561027b57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101b1565b3480156102ad57600080fd5b506101506102bc3660046114b7565b610cb8565b3480156102cd57600080fd5b506102e16102dc366004611274565b610d03565b6040805194855260ff9384166020860152918316918401919091521660608201526080016101b1565b34801561031657600080fd5b50600554610289906001600160a01b031681565b34801561033657600080fd5b506101506103453660046114f4565b610d47565b34801561035657600080fd5b506101506103653660046112a2565b610e07565b610372610e82565b476000036103935760405163192a4ff560e31b815260040160405180910390fd5b478111156103b45760405163a721f86d60e01b815260040160405180910390fd5b6103bd81610edc565b50565b6103c8610e82565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91015b60405180910390a150565b610428610e82565b6000805b825181101561046e5782818151811061044757610447611529565b60200260200101518261045a9190611555565b9150806104668161156e565b91505061042c565b50806127101461049157604051631f3b85d360e01b815260040160405180910390fd5b82516104a49060069060208601906111bf565b5081516104b8906007906020850190611224565b507f6a99ccd1fd7eb1115a753b27d3b70f82f6d0328806dca222ab000d940ffa26c383836040516104ea9291906115fb565b60405180910390a1505050565b600080546001600160a01b031633148061052357503360009081526002602052604090205460ff166001145b806105b55750600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a09190611629565b6001600160a01b0316336001600160a01b0316145b6105d25760405163912ecce760e01b815260040160405180910390fd5b504790565b600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190611629565b6001600160a01b0316336001600160a01b03161461067f57604051637bfa4b9f60e01b815260040160405180910390fd5b6009805460ff19811660ff90911615179055565b61069b610e82565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea269101610415565b6106f7610e82565b6107016000611050565b565b6000546001600160a01b031633148061072e57503360009081526002602052604090205460ff166001145b806107c05750600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190611629565b6001600160a01b0316336001600160a01b0316145b6107dd5760405163912ecce760e01b815260040160405180910390fd5b60016003546107ec9190611646565b600854811061080e57604051639e1b596f60e01b815260040160405180910390fd5b600160035461081d9190611646565b6008818154811061083057610830611529565b600091825260209091206001600290920201015460ff161561086557604051632ea945cf60e01b815260040160405180910390fd5b60016003546108749190611646565b600081815260046020908152604080832033845290915290205460ff16156108af5760405163276b851960e21b815260040160405180910390fd5b6000600860016003546108c29190611646565b815481106108d2576108d2611529565b60009182526020909120600290910201600181015490915060ff6101009091041660021901610a735760095460ff1680156109c1575060046000600160035461091b9190611646565b81526020019081526020016000206000600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190611629565b6001600160a01b0316815260208101919091526040016000205460ff16155b8015610a555750600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611629565b6001600160a01b0316336001600160a01b031614155b15610a7357604051633711c5a960e01b815260040160405180910390fd5b600181810180548290610a8f908290610100900460ff16611659565b92506101000a81548160ff021916908360ff1602179055506001600460006001600354610abc9190611646565b8152602080820192909252604090810160009081203382529092529020805460ff191691151591909117905560ff8516600203610b405760018101805460ff191660ff87161790556003546040513381527f12cd094e454538586035071c64eb69c206d65137212e7d5e9d32d738540435709060200160405180910390a250610cb2565b6003546040513381527f737f6609fa194738ed162051f994c6e9599a830846ea9d72d6501d79871e09819060200160405180910390a26001810154600361010090910460ff1610610cb05760095460ff168015610c515750600460006001600354610bab9190611646565b81526020019081526020016000206000600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c329190611629565b6001600160a01b0316815260208101919091526040016000205460ff16155b15610c5c5750610cb2565b6001818101805460ff191690911790558054610c77906110a0565b60035481546040519081527f48dc3aaaf751c6847dedb63d9f887408f8255aa391a8bedf6c97389ffd573bb19060200160405180910390a25b505b50505050565b610cc0610e82565b8051610cd39060069060208401906111bf565b507f4b6f40eee62a92990dd6caa370ff7ef1c687dd76568fbf94aed3131ddeb3a552816040516104159190611672565b60088181548110610d1357600080fd5b60009182526020909120600290910201805460019091015490915060ff808216916101008104821691620100009091041684565b610d4f610e82565b6000805b8251811015610d9557828181518110610d6e57610d6e611529565b602002602001015182610d819190611555565b915080610d8d8161156e565b915050610d53565b508061271014610db857604051631f3b85d360e01b815260040160405180910390fd5b8151610dcb906007906020850190611224565b507ffad1f2dd2c96f12adf99f399aa36481482d6d9b565a49a04f279e5fc9ca32de482604051610dfb9190611685565b60405180910390a15050565b610e0f610e82565b6001600160a01b038116610e795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103bd81611050565b6000546001600160a01b031633146107015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e70565b6003541580610f2d575060035415801590610f2d575060086001600354610f039190611646565b81548110610f1357610f13611529565b600091825260209091206001600290920201015460ff1615155b610f4a5760405163aba4668b60e01b815260040160405180910390fd5b600854610f58906001611555565b6003908155604080516080810182526000602080830182815283850183815260608501848152888652600880546001810182559552855160029095027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee381019590955591517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee490940180549151925160ff908116620100000262ff0000199482166101000261ffff1990941691909616179190911791909116929092179091559254915184815290927f6110ba4ca3a2a4b05be8a5160cfb9b4dfbdc1738e1c8e424a1546fc3f2bce843910160405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b600654811015611189576000600682815481106110c2576110c2611529565b600091825260209091200154600780546001600160a01b03909216916127109190859081106110f3576110f3611529565b9060005260206000200154856111099190611698565b61111391906116af565b604051600081818185875af1925050503d806000811461114f576040519150601f19603f3d011682016040523d82523d6000602084013e611154565b606091505b505090508061117657604051631d42c86760e21b815260040160405180910390fd5b50806111818161156e565b9150506110a3565b507f92fa2fd248211cbea75f601afd8922bac95ab333812c4d75755c3e4644bcd1888160066007604051610415939291906116d1565b828054828255906000526020600020908101928215611214579160200282015b8281111561121457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906111df565b5061122092915061125f565b5090565b828054828255906000526020600020908101928215611214579160200282015b82811115611214578251825591602001919060010190611244565b5b808211156112205760008155600101611260565b60006020828403121561128657600080fd5b5035919050565b6001600160a01b03811681146103bd57600080fd5b6000602082840312156112b457600080fd5b81356112bf8161128d565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611305576113056112c6565b604052919050565b600067ffffffffffffffff821115611327576113276112c6565b5060051b60200190565b600082601f83011261134257600080fd5b813560206113576113528361130d565b6112dc565b82815260059290921b8401810191818101908684111561137657600080fd5b8286015b8481101561139a57803561138d8161128d565b835291830191830161137a565b509695505050505050565b600082601f8301126113b657600080fd5b813560206113c66113528361130d565b82815260059290921b840181019181810190868411156113e557600080fd5b8286015b8481101561139a57803583529183019183016113e9565b6000806040838503121561141357600080fd5b823567ffffffffffffffff8082111561142b57600080fd5b61143786838701611331565b9350602085013591508082111561144d57600080fd5b5061145a858286016113a5565b9150509250929050565b60006020828403121561147657600080fd5b813560ff811681146112bf57600080fd5b6000806040838503121561149a57600080fd5b8235915060208301356114ac8161128d565b809150509250929050565b6000602082840312156114c957600080fd5b813567ffffffffffffffff8111156114e057600080fd5b6114ec84828501611331565b949350505050565b60006020828403121561150657600080fd5b813567ffffffffffffffff81111561151d57600080fd5b6114ec848285016113a5565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156115685761156861153f565b92915050565b6000600182016115805761158061153f565b5060010190565b600081518084526020808501945080840160005b838110156115c05781516001600160a01b03168752958201959082019060010161159b565b509495945050505050565b600081518084526020808501945080840160005b838110156115c0578151875295820195908201906001016115df565b60408152600061160e6040830185611587565b828103602084015261162081856115cb565b95945050505050565b60006020828403121561163b57600080fd5b81516112bf8161128d565b818103818111156115685761156861153f565b60ff81811683821601908111156115685761156861153f565b6020815260006112bf6020830184611587565b6020815260006112bf60208301846115cb565b80820281158282048414176115685761156861153f565b6000826116cc57634e487b7160e01b600052601260045260246000fd5b500490565b600060608201858352602060608185015281865480845260808601915060009350878452828420845b8281101561171f5781546001600160a01b0316845292840192600191820191016116fa565b50505084810360408601528554808252868452828420918301905b808510156117595782548252600194850194909201919083019061173a565b509897505050505050505056fea264697066735822122043926a943c3d3d258dcb18fde340c2da0aba9293b3a80a102daa8bc17f0f23e264736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000421ef10e599c3c2dd3c00871bb5a2bf5ccb2a3be00000000000000000000000055df58afeec2c7f46c164f9b34cc87ba973f86790000000000000000000000000b737dca710bd64a918b111e6d2c5f191b6ac33700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000b737dca710bd64a918b111e6d2c5f191b6ac33700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002710
Deployed Bytecode
0x6080604052600436106100ec5760003560e01c8063721c08001161008a5780639ace38c2116100595780639ace38c2146102c1578063c45a01551461030a578063d1b707891461032a578063f2fde38b1461034a57600080fd5b8063721c08001461020457806380f59a65146102245780638da5cb5b1461026f57806397e88653146102a157600080fd5b806346fcff4c116100c657806346fcff4c146101925780634d6e0065146101ba5780637065cb48146101cf578063715018a6146101ef57600080fd5b8063155dd5ee14610130578063173825d9146101525780631d79111f1461017257600080fd5b3661012b57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561013c57600080fd5b5061015061014b366004611274565b61036a565b005b34801561015e57600080fd5b5061015061016d3660046112a2565b6103c0565b34801561017e57600080fd5b5061015061018d366004611400565b610420565b34801561019e57600080fd5b506101a76104f7565b6040519081526020015b60405180910390f35b3480156101c657600080fd5b506101506105d7565b3480156101db57600080fd5b506101506101ea3660046112a2565b610693565b3480156101fb57600080fd5b506101506106ef565b34801561021057600080fd5b5061015061021f366004611464565b610703565b34801561023057600080fd5b5061025f61023f366004611487565b600460209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b1565b34801561027b57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101b1565b3480156102ad57600080fd5b506101506102bc3660046114b7565b610cb8565b3480156102cd57600080fd5b506102e16102dc366004611274565b610d03565b6040805194855260ff9384166020860152918316918401919091521660608201526080016101b1565b34801561031657600080fd5b50600554610289906001600160a01b031681565b34801561033657600080fd5b506101506103453660046114f4565b610d47565b34801561035657600080fd5b506101506103653660046112a2565b610e07565b610372610e82565b476000036103935760405163192a4ff560e31b815260040160405180910390fd5b478111156103b45760405163a721f86d60e01b815260040160405180910390fd5b6103bd81610edc565b50565b6103c8610e82565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91015b60405180910390a150565b610428610e82565b6000805b825181101561046e5782818151811061044757610447611529565b60200260200101518261045a9190611555565b9150806104668161156e565b91505061042c565b50806127101461049157604051631f3b85d360e01b815260040160405180910390fd5b82516104a49060069060208601906111bf565b5081516104b8906007906020850190611224565b507f6a99ccd1fd7eb1115a753b27d3b70f82f6d0328806dca222ab000d940ffa26c383836040516104ea9291906115fb565b60405180910390a1505050565b600080546001600160a01b031633148061052357503360009081526002602052604090205460ff166001145b806105b55750600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a09190611629565b6001600160a01b0316336001600160a01b0316145b6105d25760405163912ecce760e01b815260040160405180910390fd5b504790565b600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190611629565b6001600160a01b0316336001600160a01b03161461067f57604051637bfa4b9f60e01b815260040160405180910390fd5b6009805460ff19811660ff90911615179055565b61069b610e82565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea269101610415565b6106f7610e82565b6107016000611050565b565b6000546001600160a01b031633148061072e57503360009081526002602052604090205460ff166001145b806107c05750600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190611629565b6001600160a01b0316336001600160a01b0316145b6107dd5760405163912ecce760e01b815260040160405180910390fd5b60016003546107ec9190611646565b600854811061080e57604051639e1b596f60e01b815260040160405180910390fd5b600160035461081d9190611646565b6008818154811061083057610830611529565b600091825260209091206001600290920201015460ff161561086557604051632ea945cf60e01b815260040160405180910390fd5b60016003546108749190611646565b600081815260046020908152604080832033845290915290205460ff16156108af5760405163276b851960e21b815260040160405180910390fd5b6000600860016003546108c29190611646565b815481106108d2576108d2611529565b60009182526020909120600290910201600181015490915060ff6101009091041660021901610a735760095460ff1680156109c1575060046000600160035461091b9190611646565b81526020019081526020016000206000600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190611629565b6001600160a01b0316815260208101919091526040016000205460ff16155b8015610a555750600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611629565b6001600160a01b0316336001600160a01b031614155b15610a7357604051633711c5a960e01b815260040160405180910390fd5b600181810180548290610a8f908290610100900460ff16611659565b92506101000a81548160ff021916908360ff1602179055506001600460006001600354610abc9190611646565b8152602080820192909252604090810160009081203382529092529020805460ff191691151591909117905560ff8516600203610b405760018101805460ff191660ff87161790556003546040513381527f12cd094e454538586035071c64eb69c206d65137212e7d5e9d32d738540435709060200160405180910390a250610cb2565b6003546040513381527f737f6609fa194738ed162051f994c6e9599a830846ea9d72d6501d79871e09819060200160405180910390a26001810154600361010090910460ff1610610cb05760095460ff168015610c515750600460006001600354610bab9190611646565b81526020019081526020016000206000600560009054906101000a90046001600160a01b03166001600160a01b031663839f5fb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c329190611629565b6001600160a01b0316815260208101919091526040016000205460ff16155b15610c5c5750610cb2565b6001818101805460ff191690911790558054610c77906110a0565b60035481546040519081527f48dc3aaaf751c6847dedb63d9f887408f8255aa391a8bedf6c97389ffd573bb19060200160405180910390a25b505b50505050565b610cc0610e82565b8051610cd39060069060208401906111bf565b507f4b6f40eee62a92990dd6caa370ff7ef1c687dd76568fbf94aed3131ddeb3a552816040516104159190611672565b60088181548110610d1357600080fd5b60009182526020909120600290910201805460019091015490915060ff808216916101008104821691620100009091041684565b610d4f610e82565b6000805b8251811015610d9557828181518110610d6e57610d6e611529565b602002602001015182610d819190611555565b915080610d8d8161156e565b915050610d53565b508061271014610db857604051631f3b85d360e01b815260040160405180910390fd5b8151610dcb906007906020850190611224565b507ffad1f2dd2c96f12adf99f399aa36481482d6d9b565a49a04f279e5fc9ca32de482604051610dfb9190611685565b60405180910390a15050565b610e0f610e82565b6001600160a01b038116610e795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103bd81611050565b6000546001600160a01b031633146107015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e70565b6003541580610f2d575060035415801590610f2d575060086001600354610f039190611646565b81548110610f1357610f13611529565b600091825260209091206001600290920201015460ff1615155b610f4a5760405163aba4668b60e01b815260040160405180910390fd5b600854610f58906001611555565b6003908155604080516080810182526000602080830182815283850183815260608501848152888652600880546001810182559552855160029095027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee381019590955591517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee490940180549151925160ff908116620100000262ff0000199482166101000261ffff1990941691909616179190911791909116929092179091559254915184815290927f6110ba4ca3a2a4b05be8a5160cfb9b4dfbdc1738e1c8e424a1546fc3f2bce843910160405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b600654811015611189576000600682815481106110c2576110c2611529565b600091825260209091200154600780546001600160a01b03909216916127109190859081106110f3576110f3611529565b9060005260206000200154856111099190611698565b61111391906116af565b604051600081818185875af1925050503d806000811461114f576040519150601f19603f3d011682016040523d82523d6000602084013e611154565b606091505b505090508061117657604051631d42c86760e21b815260040160405180910390fd5b50806111818161156e565b9150506110a3565b507f92fa2fd248211cbea75f601afd8922bac95ab333812c4d75755c3e4644bcd1888160066007604051610415939291906116d1565b828054828255906000526020600020908101928215611214579160200282015b8281111561121457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906111df565b5061122092915061125f565b5090565b828054828255906000526020600020908101928215611214579160200282015b82811115611214578251825591602001919060010190611244565b5b808211156112205760008155600101611260565b60006020828403121561128657600080fd5b5035919050565b6001600160a01b03811681146103bd57600080fd5b6000602082840312156112b457600080fd5b81356112bf8161128d565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611305576113056112c6565b604052919050565b600067ffffffffffffffff821115611327576113276112c6565b5060051b60200190565b600082601f83011261134257600080fd5b813560206113576113528361130d565b6112dc565b82815260059290921b8401810191818101908684111561137657600080fd5b8286015b8481101561139a57803561138d8161128d565b835291830191830161137a565b509695505050505050565b600082601f8301126113b657600080fd5b813560206113c66113528361130d565b82815260059290921b840181019181810190868411156113e557600080fd5b8286015b8481101561139a57803583529183019183016113e9565b6000806040838503121561141357600080fd5b823567ffffffffffffffff8082111561142b57600080fd5b61143786838701611331565b9350602085013591508082111561144d57600080fd5b5061145a858286016113a5565b9150509250929050565b60006020828403121561147657600080fd5b813560ff811681146112bf57600080fd5b6000806040838503121561149a57600080fd5b8235915060208301356114ac8161128d565b809150509250929050565b6000602082840312156114c957600080fd5b813567ffffffffffffffff8111156114e057600080fd5b6114ec84828501611331565b949350505050565b60006020828403121561150657600080fd5b813567ffffffffffffffff81111561151d57600080fd5b6114ec848285016113a5565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156115685761156861153f565b92915050565b6000600182016115805761158061153f565b5060010190565b600081518084526020808501945080840160005b838110156115c05781516001600160a01b03168752958201959082019060010161159b565b509495945050505050565b600081518084526020808501945080840160005b838110156115c0578151875295820195908201906001016115df565b60408152600061160e6040830185611587565b828103602084015261162081856115cb565b95945050505050565b60006020828403121561163b57600080fd5b81516112bf8161128d565b818103818111156115685761156861153f565b60ff81811683821601908111156115685761156861153f565b6020815260006112bf6020830184611587565b6020815260006112bf60208301846115cb565b80820281158282048414176115685761156861153f565b6000826116cc57634e487b7160e01b600052601260045260246000fd5b500490565b600060608201858352602060608185015281865480845260808601915060009350878452828420845b8281101561171f5781546001600160a01b0316845292840192600191820191016116fa565b50505084810360408601528554808252868452828420918301905b808510156117595782548252600194850194909201919083019061173a565b509897505050505050505056fea264697066735822122043926a943c3d3d258dcb18fde340c2da0aba9293b3a80a102daa8bc17f0f23e264736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000421ef10e599c3c2dd3c00871bb5a2bf5ccb2a3be00000000000000000000000055df58afeec2c7f46c164f9b34cc87ba973f86790000000000000000000000000b737dca710bd64a918b111e6d2c5f191b6ac33700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000b737dca710bd64a918b111e6d2c5f191b6ac33700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002710
-----Decoded View---------------
Arg [0] : wallets_ (address[]): 0x0B737dCa710BD64a918b111E6D2C5F191b6ac337
Arg [1] : percentages_ (uint256[]): 10000
Arg [2] : owners_ (address[3]): 0x421eF10e599C3C2DD3C00871Bb5a2BF5CCb2A3Be,0x55df58aFEec2c7F46C164f9B34Cc87bA973f8679,0x0B737dCa710BD64a918b111E6D2C5F191b6ac337
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 000000000000000000000000421ef10e599c3c2dd3c00871bb5a2bf5ccb2a3be
Arg [3] : 00000000000000000000000055df58afeec2c7f46c164f9b34cc87ba973f8679
Arg [4] : 0000000000000000000000000b737dca710bd64a918b111e6d2c5f191b6ac337
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 0000000000000000000000000b737dca710bd64a918b111e6d2c5f191b6ac337
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [8] : 0000000000000000000000000000000000000000000000000000000000002710
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.