// 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.
fn query_verify_cosmos(deps, message, signature, public_key)
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.
fn query_verify_ethereum_text(deps, message, signature, signer_address)