CosmWasm을 사용한 스마트 계약(5부)

소개



개인적인 일을 마치고 돌아옵니다. 나를 따르고 지원하는 모든 사람에게 감사하며 시리즈의 끝입니다.

계약서 작성



파일examples/schema.rs에서 계약의 스키마를 정의해야 합니다. 이전 부분에서 가져온 모든 스키마를 State , InstantiateMsg , ExecuteMsg , QueryMsg , ExecuteResponse , QueryResponse 로 가져옵니다.

use std::env::current_dir;
use std::fs::create_dir_all;

use cosmwasm_schema::{export_schema, remove_schemas, schema_for};

use cw_starter::msg::{ExecuteMsg, ExecuteResponse, InstantiateMsg, QueryMsg, QueryResponse};
use cw_starter::state::State;

fn main() {
    let mut out_dir = current_dir().unwrap();
    out_dir.push("schema");
    create_dir_all(&out_dir).unwrap();
    remove_schemas(&out_dir).unwrap();

    export_schema(&schema_for!(State), &out_dir);
    export_schema(&schema_for!(InstantiateMsg), &out_dir);
    export_schema(&schema_for!(ExecuteMsg), &out_dir);
    export_schema(&schema_for!(ExecuteResponse), &out_dir);
    export_schema(&schema_for!(QueryMsg), &out_dir);
    export_schema(&schema_for!(QueryResponse), &out_dir);
}


모든 json 스키마를 schema 디렉토리로 푸시합니다. 이제 스키마를 생성합니다.
루트 폴더의 터미널에서 명령을 실행합니다.

cargo schema


명령이 성공적으로 실행되면 schema 폴더에 json 스키마가 표시됩니다.



준비 단계는 괜찮습니다. 다음으로 CosmWasm IDE로 스마트 계약을 구축합니다.

파일src/contract.rs을 열고 상태 표시줄에서 Build CosmWasm를 클릭한 다음 확장 프로그램이 계약을 빌드할 때까지 기다립니다. 빌드가 완료되면 새 파일artifacts/cw-starter.wasm을 찾고 확장의 UI가 나타납니다. 이것은 우리의 계약입니다:

참고: Cargo.toml 에서 이러한 종속성을 사용하고 있으므로 계약 지원 체인을 Malaga , Osmosis Testnet , Osmosis MainnetCosmosHub Testnet 로 선택하고 니모닉을 .env 파일에 추가해야 합니다. 니모닉을 읽고 지갑과 상호 작용하기 위한 확장을 위한 루트 프로젝트.

[dependencies]
cosmwasm-std = "1.0.0"
cosmwasm-storage = "1.0.0"
cw-storage-plus = "0.13.2"
cw2 = "0.13.2"
schemars = "0.8.8"
serde = { version = "1.0.137", default-features = false, features = ["derive"] }
thiserror = { version = "1.0.31" }


좋습니다. 다음 단계인 체인에 계약을 배포합니다.

계약 배포



먼저 체인을 선택합니다. 저는 Osmosis Testnet를 선택하겠습니다.
계약을 배포할 때 모든 필드를 완료해야 합니다. 우리의 경우 InstantiateMsg에는 필드가 필요하지 않으므로 계약 레이블만 입력하거나 무시할 수 있습니다.
Deploy CosmWasm로 배포하고 계약StoreCodeInstantiate가 체인에 연결될 때까지 기다립니다. 배포 성공 후 계약 주소가 있습니다.

계약을 실행



선택 상자를 열고 Execute를 선택하고 위 단계에서 얻은 컨트랙트 주소를 입력하고 Execute Message 입력란에 다음 메시지를 입력합니다.wallet mnemonic(optional)에 니모닉을 입력해야 합니다(혼란스러울 수 있지만 필수 항목임).

{"update":{}}

Execute 버튼을 누르세요. 확장 프로그램은 계약을 실행하고 msg를 포함하는 트랜잭션을 반환하여 계약을 실행합니다.



계약 조회



동일하게 계약을 실행하면 빠르게 이동합니다.
쿼리를 선택하고 계약 주소를 입력한 다음 Query Message를 입력합니다.

{"counter":{}}

Query 버튼을 누르고 짜잔! 그리고 계약의 현재 상태가 나타납니다.



요약



이것이 시리즈의 끝입니다. 이 시리즈 이후에 우리는 간단한 용어, 개발 코드를 갖고 CosmWasm 스마트 계약과 상호 작용하기를 바랍니다.
읽어 주셔서 감사합니다.

참조


  • CosmWasm IDE
  • Oraiwasm Scaffold
  • Cosmwasm zero to here
  • 좋은 웹페이지 즐겨찾기