// contract.rs
#[entry_point]
pub fn instantiate(
    _deps: DepsMut,
    _env: Env,
    _info: MessageInfo,
    _msg: InstantiateMsg,
) -> StdResult<Response> {
    Ok(Response::default())
}

fn instantiate ⇒ 특별한 기능 없이, 컨트랙트를 instantiate.

// contract.rs
#[entry_point]
pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult<QueryResponse> {
    match msg {
        QueryMsg::VerifyCosmosSignature {
            message,
            signature,
            public_key,
        } => to_binary(&query_verify_cosmos(
            deps,
            &message.0,
            &signature.0,
            &public_key.0,
        )?),
        QueryMsg::VerifyEthereumText {
            message,
            signature,
            signer_address,
        } => to_binary(&query_verify_ethereum_text(
            deps,
            &message,
            &signature,
            &signer_address,
        )?),
        QueryMsg::VerifyEthereumTransaction {
            from,
            to,
            nonce,
            gas_limit,
            gas_price,
            value,
            data,
            chain_id,
            r,
            s,
            v,
        } => to_binary(&query_verify_ethereum_transaction(
            deps, from, to, nonce, gas_limit, gas_price, value, data, chain_id, r, s, v,
        )?),
        QueryMsg::VerifyTendermintSignature {
            message,
            signature,
            public_key,
        } => to_binary(&query_verify_tendermint(
            deps,
            &message.0,
            &signature.0,
            &public_key.0,
        )?),
        QueryMsg::VerifyTendermintBatch {
            messages,
            signatures,
            public_keys,
        } => to_binary(&query_verify_tendermint_batch(
            deps,
            &messages,
            &signatures,
            &public_keys,
        )?),
        QueryMsg::ListVerificationSchemes {} => to_binary(&query_list_verifications(deps)?),
    }
}

fn query ⇒ QueryMsg container에 담긴 정보에 따라 verify 수행.

QueryMsg::VerifyCosmosSignature {
    message,
    signature,
    public_key,
} => to_binary(&query_verify_cosmos(
    deps,
    &message.0,
    &signature.0,
    &public_key.0,
)?),

QueryMsg::VerifyCosmosSignature 라면, fn query_verify_cosmos 수행 후, 그 값을 binary로 바꿔 return.

QueryMsg::VerifyEthereumText {
    message,
    signature,
    signer_address,
} => to_binary(&query_verify_ethereum_text(
    deps,
    &message,
    &signature,
    &signer_address,
)?),

QueryMsg::VerifyEthereumText 라면, fn query_verify_ethereum_text 수행 후, 그 값을 binary로 바꿔 return.