[Blockchain] ZK - Cairo 시작해보기

2025. 7. 4. 09:38·개발/BlockChain
728x90
반응형

cairo 시작해보기

모든 코드는 깃허브에서 볼수 있습니다.

1. 설치

starkup 설치 (Linux or MacOs)

curl --proto '=https' --tlsv1.2 -sSf https://sh.starkup.dev | sh

설치 후 확인

scarb --version
snforge --version

scarb 는 cairo 의 패키지 매니저라고 생각하면 된다.

2. Hello World

mkdir ./cairo_projects
cd ./cairo_projects
scarb new hello_world

Starknet Foundry (default) 선택

그러면 여러개의 파일이 설치된다.

그중 Scarb.toml 파일에 들어가보면 아래와 같다.

[package]
name = "hello_world"
version = "0.1.0"
edition = "2024_07"

# See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html

[dependencies]
starknet = "2.11.4"

[dev-dependencies]
snforge_std = "0.43.1"
assert_macros = "2.11.4"

[[target.starknet-contract]]
sierra = true

[scripts]
test = "snforge test"

[tool.scarb]
allow-prebuilt-plugins = ["snforge_std"]
[package]
name = "hello_world"
version = "0.1.0"
edition = "2024_07"

패키지에 대한 정보를 나타낸다.

패키지 이름, 사용할 Scarb의 버전, 프렐류드의 에디션이다.

프렐류드는 cairo 프로그램에 자동으로 임포트되는 가장 일반적으로 사용되는 것들의 모음이다. java의 starter 같은??

[dependencies]
starknet = "2.11.4"

의존성을 나열하는 섹션이다. cairo 에서는 크레이트(crate) 라고 부른다.

[dev-dependencies]
snforge_std = "0.43.1"
assert_macros = "2.11.4"

개발환경에서만 사용되는 의존성이다. nodejs 써본 사람이면 바로 이해 할듯.

[[target.starknet-contract]]
sierra = true

스마트 컨트랙트를 빌드하기 위한 설정

[scripts]
test = "snforge test"

[script] 섹션은 사용자 정의 스크립트를 정의할 수 있도록 한다.

다음과 같이 파일들을 바꿔주면 된다.

Scarb.toml

[package]
name = "hello_world"
version = "0.1.0"
edition = "2024_07"

[cairo]
enable-gas = false

[dependencies]
cairo_execute = "2.11.4"


[[target.executable]]
name = "hello_world_main"
function = "hello_world::hello_world::main"

src/lib.cairo

mod hello_world;
touch ./src/hello_world.cairo

src/hello_world.cairo

#[executable]
fn main() {
    println!("Hello, World!");
}

lib.cairo 안에 hell_world module 을 넣어준거라 생각하면 된다.

cairo 는 기본적으로 src 폴더 안에서 작성해야한다.

hello_world 경로로가서 빌드하면 target 폴더가 생성된다.

scarb build

실행해보면 execute 폴더가 생성된다.

scarb execute

터미널에 Hello World 가 프린트 된다. - 이력서에 기술스택 cairo 추가완

Hello, World!

3. 뜯어보기

터미널에 찍힌 Hello World 는 hell_world.cairo 에 있는 main fn 이다.

executable cairo program 에서는 main 함수를 실행한다고 한다.

main 함수는 파라미터도 없고 아무것도 반환하지 않는다.

그래서 최상단에 있는 #[executable] 이걸 지워봤는데 build 가 안된다.

다음은 macros 에 대해서 알아보자

#[executable]
fn main() {
    println!("Hello, World!");
}

main 함수를 다시보면 println! 함수가 있다.

느낌표가 붙으면 일반함수가 아닌 inline macros 를 사용한다고 한다. - 매크로 종류 보러 가기

추가로 마지막에 세미콜론(;) 찍는다고 한다.

4. 결론

scarb new
scarb build
scarb execute

언제나 그랬듯이 일단 코드부터 짜보고 이론적인걸 공부할거다..

레퍼런스

  • cairo start docs
728x90
반응형

'개발 > BlockChain' 카테고리의 다른 글

[Blockchain] ZK - STARKNET SEPOLIA에 배포해보기  (0) 2025.07.06
[Blcokchain] ZK - Cairo 로 Prime Number(소수) 증명하기  (0) 2025.07.04
[Blockchain] ZK - Noir 시작해보기  (2) 2025.07.01
[BlockChain] ZK(Zero-Knowledge Proof)란 무엇인가?  (0) 2025.06.29
[BlockChain] gasPrice 상승 이슈  (1) 2023.12.05
'개발/BlockChain' 카테고리의 다른 글
  • [Blockchain] ZK - STARKNET SEPOLIA에 배포해보기
  • [Blcokchain] ZK - Cairo 로 Prime Number(소수) 증명하기
  • [Blockchain] ZK - Noir 시작해보기
  • [BlockChain] ZK(Zero-Knowledge Proof)란 무엇인가?
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    nodejs
    go
    node
    html
    프로그래머스
    CSS
    30일 챌린지
    명령어
    컨테이너
    블록체인
    go언어
    30일챌린지
    node.js
    js
    erc20
    ERC721
    도커
    React
    하이퍼레저
    mysql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[Blockchain] ZK - Cairo 시작해보기
상단으로

티스토리툴바