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:0x3fb10829e58e9b9b89cfc5e31d0b8379c7738472|verified:true|block:23386686|tx:0xb80a08efdb2573691ed1937f64f2d63958e5d2e7517f384b2dddf2b0431ac265|first_check:1758188226

Submitted on: 2025-09-18 11:37:08

Comments

Log in to comment.

No comments yet.