OwnbitMultiSigProxy

Description:

Multi-signature wallet contract requiring multiple confirmations for transaction execution.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Solidity",
  "sources": {
    "OwnbitMultiSigProxy.sol": {
      "content": "// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

// Proxy Contract
contract OwnbitMultiSigProxy {
    address public constant implementation = 0xC013dA3eca3E73Cf4aEA2DC3a9EcaE78f151DFb1; 

    /// @param _owners          initial owners (admins)
    /// @param _signers         initial signers (for spending)
    /// @param _weights         weights for signers, aligned with _signers
    /// @param _ownerRequired   owner approvals required for config changes
    /// @param _signRequired    weighted threshold required for spending
    constructor(
        address[] memory _owners,
        address[] memory _signers,
        uint256[] memory _weights,
        uint256 _ownerRequired,
        uint256 _signRequired
    ) {
        bytes memory initData = abi.encodeWithSignature(
            "initialize(address[],address[],uint256[],uint256,uint256)",
            _owners,
            _signers,
            _weights,
            _ownerRequired,
            _signRequired
        );

        (bool success, bytes memory returndata) = implementation.delegatecall(initData);
        require(success, _getRevertMsg(returndata));
    }

    fallback() external payable {
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    // bubble up revert reason from implementation initialize (optional helper)
    function _getRevertMsg(bytes memory _returnData) private pure returns (string memory) {
        if (_returnData.length < 68) return "Initialization failed";
        assembly {
            _returnData := add(_returnData, 0x04)
        }
        return abi.decode(_returnData, (string));
    }
}"
    }
  },
  "settings": {
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "viaIR": true,
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "abi"
        ]
      }
    }
  }
}}

Tags:
Multisig, Upgradeable, Multi-Signature, Factory|addr:0x33699bd780b5b7ad712b5e973de76e175276541a|verified:true|block:23731186|tx:0x1fee371d86a4e1224b4e4900f0b8b4b6d32733bc19db85709c96b051597d1a7f|first_check:1762345011

Submitted on: 2025-11-05 13:16:53

Comments

Log in to comment.

No comments yet.