    function initialize(
        address operator,
        bytes memory multihash,
        bytes memory metadata
    ) public initializeTemplate() {
        if (operator != address(0)) {
            Operated._setOperator(operator);
            Operated._activateOperator();
        }
        if (multihash.length != 0) {
            MultiHashWrapper.MultiHash memory multihashObj = MultiHashWrapper._splitMultiHash(multihash);
            ProofHashes._setMultiHashFormat(multihashObj.hashFunction, multihashObj.digestSize);
            ProofHashes._submitHash(multihashObj.hash);
        }
        if (metadata.length != 0) {
            EventMetadata._setMetadata(metadata);
        }
        emit Initialized(operator, multihash, metadata);
    }