Skip to content

필사 모드: 스마트 컨트랙트 언어 2026 완벽 가이드 - Solidity 0.8 · Vyper · Move (Aptos/Sui) · Cairo · Stylus (Arbitrum) · Fuel/Sway 심층 분석

한국어
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

프롤로그 — 2026년, 스마트 컨트랙트는 어디서 도는가

블록체인은 분산 데이터베이스다. 스마트 컨트랙트는 그 데이터베이스 위에서 도는 **결정론적 프로그램**이다. 모든 노드가 같은 입력으로 같은 출력을 내야 하므로, 언어 선택은 곧 합의 모델·가스 모델·검증 모델을 같이 고른다는 뜻이다.

2026년 5월 현재, 전 세계 스마트 컨트랙트 TVL의 **약 60%가 여전히 Ethereum 메인넷**에 있고, L2를 합치면 EVM 패밀리가 **약 80%**다. 그러나 비-EVM의 점유율이 빠르게 늘었다. Solana가 약 7%, Aptos·Sui가 합쳐 약 4%, Cosmos가 약 3%, StarkNet과 Fuel이 신생으로 합쳐 약 2%다.

그래서 2026년의 신입 컨트랙트 엔지니어는 보통 **세 갈래** 중 하나를 고른다.

- **EVM 길** — Solidity 0.8.28을 배우고 Foundry로 테스트한다. 가장 큰 시장, 가장 많은 감사회사, 가장 깊은 라이브러리.

- **Move 길** — Aptos Move 또는 Sui Move로 리소스 타입을 배운다. 객체 중심 모델, 병렬 실행.

- **Rust 길** — Solana Anchor, Stylus, CosmWasm, Sway, NEAR 모두 Rust 계열. 한 언어로 여러 체인을 쓸 수 있다.

이 글은 그 모든 갈래를 **한 호흡으로** 정리한다. 언어의 특이점, 도구 체인, 보안 모델, 그리고 한국·일본 Web3의 현실까지.

1장 · EVM 패권 — Ethereum과 L2의 풍경

먼저 숫자부터. 2026년 5월 기준 EVM 체인 TVL을 정리하면 다음과 같다.

- Ethereum 메인넷: 약 800억 달러

- Arbitrum One: 약 180억 달러

- Base (Coinbase L2): 약 150억 달러

- OP Mainnet: 약 90억 달러

- Polygon PoS + zkEVM: 약 60억 달러

- BNB Chain: 약 50억 달러

- Linea, Scroll, zkSync Era 등: 각 10억 달러대

`evm-version`을 Cancun 또는 Prague로 맞춰 컴파일하면 거의 모든 L2에서 그대로 돌아간다. 한 번 짠 Solidity 코드는 Ethereum, Arbitrum, Base, OP, Polygon, BNB Chain, Linea, Scroll, zkSync, Mantle, Blast, Mode, Zora, Avalanche C-Chain, Fantom Sonic, Celo L2, Hedera EVM, Astar zkEVM에서 **거의 그대로** 동작한다.

이 게 EVM의 진짜 힘이다. **하나를 잘 짜면 17개 체인에서 돈다.**

2장 · Solidity 0.8.28 — 사실상 표준, 그러나 변하고 있다

Solidity는 2014년 Gavin Wood가 발표한 이후 12년째 Ethereum의 기본 언어다. 2026년 5월의 최신은 **0.8.28**. 그 사이의 굵직한 변화를 잠깐 정리하자.

- 0.8.0 (2020) — 산술 오버플로우가 기본으로 revert. SafeMath 시대 종료.

- 0.8.4 (2021) — **Custom errors**. `require(cond, "string")`보다 가스 절약.

- 0.8.18 (2023) — 컴파일러 옵션으로 named arguments 활성화.

- 0.8.24 (2024) — **EIP-1153 Transient storage** 정식 지원. `tload`·`tstore`.

- 0.8.27 — Yul 최적화 개선, evm-version 기본 Cancun.

- 0.8.28 — Prague EVM 일부 명령어 지원, 컴파일 속도 개선.

가장 짧은 Solidity 계약은 이렇게 생겼다.

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.28;

contract Counter {

uint256 public count;

error CountTooLarge(uint256 attempted, uint256 max);

function increment() external {

if (count >= 1_000_000) revert CountTooLarge(count + 1, 1_000_000);

count += 1;

}

}

세 가지 포인트.

1. `pragma solidity ^0.8.28` — 0.8.x 라인은 산술 오버플로우 보호가 기본.

2. `error CountTooLarge(...)` — string 대신 selector 4바이트 + 인자만 저장. 가스 절약 약 200-400.

3. `if (cond) revert` 패턴이 `require(!cond)`보다 가스 적고 디버깅이 명확하다.

저장소 매핑은 백틱으로 감싼 `mapping(address => uint256)` 처럼 쓴다. 이 글 안에서도 마찬가지로 백틱 안에서만 쓸 것이다.

3장 · Transient Storage (EIP-1153) — 2024년 이후의 진짜 패러다임 시프트

EIP-1153은 2024년 3월 Dencun 하드포크와 함께 들어왔다. 한 트랜잭션 동안만 살아 있는 저장소다. `sstore`가 약 20,000 가스라면 `tstore`는 약 100 가스다.

전형적인 활용은 **재진입 락**이다. 옛 방식.

// 옛 방식 — SLOAD/SSTORE로 락 관리. 매 호출 약 5000 가스.

contract OldReentrancyGuard {

uint256 private _locked = 1;

modifier nonReentrant() {

require(_locked == 1, "REENTRANT");

_locked = 2;

_;

_locked = 1;

}

}

새 방식.

// 새 방식 — TLOAD/TSTORE. 매 호출 약 200 가스.

contract NewReentrancyGuard {

bytes32 private constant LOCKED_SLOT = keccak256("reentrancy.lock");

modifier nonReentrant() {

assembly {

if tload(LOCKED_SLOT) { revert(0, 0) }

tstore(LOCKED_SLOT, 1)

}

_;

assembly {

tstore(LOCKED_SLOT, 0)

}

}

}

가스 절약은 한 호출당 약 4800 가스. 일 100만 호출하는 컨트랙트라면 하루 약 0.5 ETH 절약이다. 2026년 5월의 ETH 가격 약 4000달러로 환산하면 일 2000달러.

OpenZeppelin 5.1부터 `ReentrancyGuardTransient`가 기본 제공된다.

4장 · Foundry — Paradigm이 만든 진짜 표준 도구

스마트 컨트랙트 개발 도구는 2020-2024년 사이 완전히 재편됐다. 2020년대 초반은 **Hardhat**(Nomic Foundation)과 **Truffle**(ConsenSys)이 양강이었다. 2024년 기준으로 보면 **Foundry**가 사실상 표준이 됐고, Truffle은 ConsenSys가 2023년 공식 종료를 선언했다. Brownie도 같은 해 사실상 유지 중단.

Foundry의 구성.

- `forge` — 빌드·테스트 러너. **Solidity로 테스트를 쓴다**가 핵심.

- `cast` — 명령행 RPC 클라이언트. ABI 인코딩, 트랜잭션 디버깅.

- `anvil` — 로컬 EVM 노드. Hardhat Network의 대안.

- `chisel` — Solidity REPL.

Foundry로 쓰는 테스트는 이렇게 생겼다.

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.28;

contract CounterTest is Test {

Counter counter;

function setUp() public {

counter = new Counter();

}

function test_Increment() public {

counter.increment();

assertEq(counter.count(), 1);

}

function testFuzz_IncrementNeverExceedsMax(uint8 n) public {

for (uint256 i = 0; i < n; i++) {

counter.increment();

}

assertLe(counter.count(), 1_000_000);

}

}

`testFuzz_` 접두사로 시작하면 자동 퍼징이 돈다. 기본 256회 시도. 명시적 입력 없이 무작위 값으로 invariant를 깨려 든다.

벤치마크. Solidity 컨트랙트 200개 빌드 + 1000 테스트 실행 시간.

- Foundry: 약 12초 (Rust로 작성)

- Hardhat 2: 약 90초 (Node.js + ts-node)

- Hardhat 3: 약 25초 (viem + Rust EDR)

5장 · Hardhat 3 — Nomic Foundation의 반격

2024년 말 발표된 Hardhat 3은 두 가지가 결정적으로 다르다. 첫째, **viem 기반**. ethers.js 의존을 끊었다. 둘째, **Rust EDR** — Ethereum Development Runtime을 Rust로 다시 썼다. anvil에 비빌 만하다.

Hardhat 3의 hardhat.config.ts는 이렇게 생겼다.

const config: HardhatUserConfig = {

plugins: [HardhatViem],

solidity: {

version: "0.8.28",

settings: {

optimizer: { enabled: true, runs: 200 },

evmVersion: "cancun"

}

},

networks: {

sepolia: {

type: "http",

url: process.env.SEPOLIA_RPC_URL ?? "",

accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []

}

}

};

export default config;

선택 기준 한 줄. **Solidity 단일 언어 + 속도가 중요하면 Foundry**, **TypeScript와 프론트엔드 통합이 중요하면 Hardhat 3**.

6장 · Vyper 0.4 — Pythonic 보안 우선 언어

Vyper는 2017년 Vitalik Buterin이 직접 시드한 프로젝트로 시작했다. 철학이 명확하다. **상속 없음, 변경자 없음, 인라인 어셈블리 없음, 함수 오버로딩 없음, 무한 루프 없음.** "쓰기 쉬운 코드"가 아니라 **"감사하기 쉬운 코드"**를 목표로 한다.

2026년 5월의 최신은 **0.4.0**. 1.0 직전이다.

@version ^0.4.0

count: public(uint256)

MAX_COUNT: constant(uint256) = 1_000_000

@external

def increment():

assert self.count < MAX_COUNT, "Count exceeded"

self.count += 1

Pythonic하다. 들여쓰기로 블록을 구분한다. 그러나 진짜 Python은 아니다. 모든 타입이 정적이고, gas 비용이 컴파일 타임에 결정된다.

진짜로 쓰는 곳은 어디인가. **Curve Finance** — 전체 컨트랙트 대부분이 Vyper. **Yearn Finance** — 핵심 vault. **Lido**의 일부. TVL로 환산하면 Vyper 컨트랙트가 관리하는 자산이 2026년 5월 기준 약 250억 달러다.

Vyper의 비극은 2023년 7월에 있었다. 컴파일러 버그로 Curve의 일부 풀에서 재진입 락이 우회됐고, 약 7000만 달러가 도난당했다. 이후 Vyper 팀은 컴파일러 자체에 **Fuzz 캠페인**과 **차등 테스트**(EVM 결과와 비교)를 도입했다.

7장 · Huff와 Yul — 어셈블리 레벨 가스 최적화

Solidity가 가스 면에서 부족할 때 두 갈래로 내려간다.

**Yul** — Solidity의 중간 표현. inline assembly 블록 안에서 직접 쓴다.

function gasOptimized() external pure returns (uint256 result) {

assembly {

let x := 0x42

result := mul(x, 2)

}

}

**Huff** — 완전히 어셈블리 수준 DSL. ERC20을 약 200 가스 차이로 짤 수 있다.

#define function transfer(address,uint256) nonpayable returns (bool)

#define macro TRANSFER() = takes(0) returns(0) {

0x04 calldataload

0x24 calldataload

[BALANCE_LOCATION] sload

sub

[BALANCE_LOCATION] sstore

0x01 0x00 mstore

0x20 0x00 return

}

쓰지 말자, 라는 게 일반적인 권고다. 99%의 컨트랙트는 Solidity로 충분하고, Huff가 절약하는 가스보다 감사 비용이 더 든다. 예외는 **Uniswap V4 Hooks 같은 핫패스**다.

8장 · Solady와 Solmate — 가스 최적화 라이브러리

OpenZeppelin Contracts가 표준이지만 가스를 따지면 너무 무겁다. 대안 두 개.

**Solmate** — Rari Capital의 t11s(Transmissions11)가 만든 미니멀 ERC20·ERC721·ERC1155. Rari가 망한 뒤 사실상 유지 중단.

**Solady** — Solmate의 정신적 후계자. Vectorized(트위터의 가스 최적화 전설)가 유지. **현재 가장 활발한 가스 최적화 라이브러리**다.

Solady의 ERC20 사용 예.

contract MyToken is ERC20 {

function name() public pure override returns (string memory) {

return "MyToken";

}

function symbol() public pure override returns (string memory) {

return "MTK";

}

}

OpenZeppelin의 ERC20과 비교하면 transfer 한 번에 약 300-500 가스 절약. 토큰이라면 한 번의 차이지만 DeFi 프로토콜이면 누적 차이가 크다.

9장 · 정형 검증 — SMTChecker, Certora, Halmos, Echidna

Solidity의 보안 도구는 네 층위로 정리된다.

**1. 컴파일러 내장 — SMTChecker**

/// @custom:invariant count <= MAX_COUNT

contract Counter {

uint256 public count;

// ...

}

`solc --model-checker-engine chc` 한 줄로 돌린다. 무료, 빠름, 그러나 표현력 제한적.

**2. Foundry Invariant Testing**

contract CounterInvariantTest is Test {

Counter counter;

function setUp() public {

counter = new Counter();

targetContract(address(counter));

}

function invariant_countNeverExceedsMax() public view {

assertLe(counter.count(), 1_000_000);

}

}

무작위로 함수를 호출해서 invariant가 깨지는지 본다. Foundry 표준.

**3. Halmos** — a16z crypto가 후원하는 심볼릭 실행기. Foundry 테스트를 그대로 받아 심볼릭으로 검증한다. 작은 컨트랙트에 강력.

**4. Certora Prover** — 상용. Aave, Compound, MakerDAO가 쓴다. 비싸지만 가장 강력한 정형 검증. 연 라이선스가 약 10-30만 달러대.

**5. Echidna** — Trail of Bits의 퍼저. 속성 기반 테스트. Crytic-properties 라이브러리와 같이 쓴다.

**6. KEVM** — Runtime Verification의 K Framework 기반 EVM 모델. 가장 무거운 정형 검증.

실무에서는 보통 SMTChecker + Foundry invariant + Echidna까지가 표준이다. Certora는 100억 달러 이상 다루는 프로토콜에서 추가로 쓴다.

10장 · Move 언어 — Diem의 유산, Aptos와 Sui의 현재

Move는 2019년 페이스북(현 Meta)의 Diem(구 Libra) 프로젝트에서 시작됐다. Diem이 2022년 1월 좌초한 뒤, 핵심 엔지니어들이 두 회사를 세웠다.

- **Aptos Labs** — Mo Shaikh + Avery Ching. Aptos 메인넷 2022년 10월 출시.

- **Mysten Labs** — Evan Cheng + Sam Blackshear. Sui 메인넷 2023년 5월 출시.

두 체인 모두 Move를 쓰지만, **언어 자체가 갈라졌다**. Aptos Move는 원본 Diem Move에 가깝고, Sui Move는 객체 중심 모델로 다시 설계됐다.

Move의 핵심 아이디어 한 줄. **자원은 복사·삭제될 수 없고, 오직 이동(move)된다.** 코인은 변수가 아니라 자원이다. 두 곳에 동시에 존재할 수 없다.

Aptos Move의 코인 정의.

module my_addr::my_coin {

use std::signer;

struct MyCoin has key {

value: u64,

}

public entry fun mint(account: &signer, value: u64) {

let coin = MyCoin { value };

move_to(account, coin);

}

public entry fun transfer(from: &signer, to: address, amount: u64) acquires MyCoin {

let from_addr = signer::address_of(from);

let from_coin = borrow_global_mut<MyCoin>(from_addr);

assert!(from_coin.value >= amount, 1);

from_coin.value = from_coin.value - amount;

}

}

`has key`는 글로벌 저장소에 들어갈 수 있다는 뜻. `acquires MyCoin`은 이 함수가 어떤 자원을 빌려오는지 명시. Move의 모든 동적 자원 접근은 컴파일 타임에 검증된다.

11장 · Sui Move — 객체 중심 모델

Sui Move는 같은 Move지만 **세계관이 다르다**. Aptos Move가 "계정에 자원이 붙는다"라면, Sui Move는 "**모든 것은 객체다**". 각 객체에는 고유한 `UID`가 있고, 객체는 다른 객체에 소유된다.

Sui Move의 코인.

module my_pkg::my_coin {

use sui::coin::{Self, Coin, TreasuryCap};

use sui::transfer;

use sui::tx_context::TxContext;

public struct MY_COIN has drop {}

fun init(witness: MY_COIN, ctx: &mut TxContext) {

let (treasury, metadata) = coin::create_currency(

witness, 9, b"MYC", b"My Coin", b"", option::none(), ctx

);

transfer::public_freeze_object(metadata);

transfer::public_transfer(treasury, tx_context::sender(ctx));

}

}

Sui Move의 진짜 강점은 **병렬 실행**이다. 한 트랜잭션이 건드리는 객체와 다른 트랜잭션이 건드리는 객체가 겹치지 않으면, 두 트랜잭션은 병렬로 실행된다. 핫스팟이 없는 NFT 트랜스퍼는 거의 무한 병렬화된다.

Sui 메인넷은 일평균 TPS 약 2000을 유지하고, 피크는 약 8000을 넘는다. EVM이 약 100 TPS인 것과 비교하면 한 자리 수 차이다.

12장 · Cairo 2.6 — STARK 친화 언어

Cairo는 StarkWare가 만든 언어다. 핵심은 **STARK 증명 생성 비용에 친화적인 명령어 세트**다. 일반 EVM에서 가스가 비싼 연산(예: 곱셈)이 Cairo에서는 거의 무료고, 그 반대도 있다.

Cairo 1.0은 2023년 7월 출시. Rust에 강하게 영감받았다. 2026년 5월의 최신은 **2.6.4**.

Cairo의 카운터.

#[starknet::contract]

mod Counter {

#[storage]

struct Storage {

count: u128,

}

#[external(v0)]

fn increment(ref self: ContractState) {

let current = self.count.read();

assert(current < 1_000_000, 'Count exceeded');

self.count.write(current + 1);

}

}

타입 시스템이 Rust와 거의 같다. `ref self`로 가변 참조를 받는다. 패닉은 `assert`로 던진다.

StarkNet 메인넷은 2024년 11월 **v0.13.2**부터 가스 모델을 Ethereum과 더 비슷하게 맞췄다. 2026년 5월 현재 StarkNet TVL은 약 25억 달러.

Cairo의 진짜 의미는 **검증 비용**이다. 1만 개 트랜잭션을 묶어서 ZK 증명 하나로 Ethereum에 올린다. 사용자 1인당 가스 비용이 EVM L2의 약 10분의 1이다.

13장 · Stylus — Arbitrum의 Rust/WASM 실험

Arbitrum Stylus는 2024년 8월 메인넷 출시됐다. 핵심은 한 줄. **Arbitrum L2 위에서 Rust·C·C++·AssemblyScript를 EVM 컨트랙트와 같이 돌린다.** WebAssembly를 EVM 옆에서 실행한다.

Stylus Rust 컨트랙트.

use stylus_sdk::{alloy_primitives::U256, prelude::*};

#[storage]

#[entrypoint]

pub struct Counter {

count: StorageU256,

}

#[public]

impl Counter {

pub fn count(&self) -> U256 {

self.count.get()

}

pub fn increment(&mut self) -> Result<(), Vec<u8>> {

let current = self.count.get();

if current >= U256::from(1_000_000_u32) {

return Err(b"Count exceeded".to_vec());

}

self.count.set(current + U256::from(1));

Ok(())

}

}

Stylus 컨트랙트는 Solidity 컨트랙트와 **상호 호출** 가능하다. 같은 ABI를 쓰고, 같은 가스 회계 안에서 돈다. 다만 Rust 쪽이 산술 연산에서 약 10-50배 빠르다. 암호학·압축·FFT 같은 계산 집약 코드를 Rust로 옮기고, 비즈니스 로직은 Solidity로 두는 게 일반적인 패턴.

14장 · Fuel과 Sway — UTXO Ethereum L2

Fuel은 2023년 9월 베타넷 출시, 2024년 메인넷 가동. 가장 큰 차이는 **UTXO 모델**이다. Ethereum이 계정 모델인 것과 정반대다.

Sway 언어는 Rust에 강하게 영감받았지만 UTXO 모델에 맞춰 설계됐다.

contract;

storage {

count: u64 = 0,

}

abi Counter {

#[storage(read)]

fn count() -> u64;

#[storage(read, write)]

fn increment();

}

impl Counter for Contract {

#[storage(read)]

fn count() -> u64 {

storage.count.read()

}

#[storage(read, write)]

fn increment() {

let current = storage.count.read();

require(current < 1_000_000, "Count exceeded");

storage.count.write(current + 1);

}

}

UTXO 모델의 장점은 병렬화다. 입력 UTXO가 겹치지 않는 트랜잭션은 병렬로 검증된다. 단점은 카운터 같은 공유 상태가 자연스럽지 않다는 것. 위 예시도 사실 Fuel의 "상태 저장 계약" 확장을 쓴 것이다.

Fuel TVL은 2026년 5월 기준 약 5억 달러. 신생 L2 중에서는 빠르게 성장 중.

15장 · Solana — Rust, Anchor, Pinocchio

Solana는 EVM이 아니다. 컨트랙트가 **프로그램**으로 불리고, 상태는 별도 **계정**에 저장된다. 한 프로그램은 자기 계정을 가지지 않고, 사용자가 PDA(Program Derived Address)로 만든 계정에 쓴다.

Solana 프로그램을 짜는 세 가지 길.

**1. 네이티브 Solana** — 가장 낮은 레벨. `solana_program` 크레이트로 직접 짠다. 가장 빠르고 가장 길다.

**2. Anchor 프레임워크** — Solana의 Hardhat. 매크로로 보일러플레이트를 줄인다. **사실상 표준**이다.

use anchor_lang::prelude::*;

declare_id!("11111111111111111111111111111111");

#[program]

pub mod counter {

use super::*;

pub fn increment(ctx: Context<Increment>) -> Result<()> {

let counter = &mut ctx.accounts.counter;

require!(counter.count < 1_000_000, ErrorCode::CountExceeded);

counter.count += 1;

Ok(())

}

}

#[derive(Accounts)]

pub struct Increment<'info> {

#[account(mut)]

pub counter: Account<'info, Counter>,

}

#[account]

pub struct Counter {

pub count: u64,

}

#[error_code]

pub enum ErrorCode {

#[msg("Count exceeded")]

CountExceeded,

}

**3. Pinocchio** — 2024년 등장한 zero-copy 저레벨 라이브러리. Anchor의 매크로 비용 없이 직접 컨트랙트를 짠다. Anchor보다 약 30-50% 가스 절약. 단, Anchor만큼 자동 검증이 없어서 직접 신경 써야 할 게 많다.

Solana TVL은 2026년 5월 약 130억 달러. Anchor가 약 80%, 네이티브가 약 15%, Pinocchio가 약 5%.

16장 · NEAR — Rust, AssemblyScript

NEAR Protocol은 2020년 출시. JavaScript 친화 체인을 표방했지만, 결국 Rust가 표준이 됐다. AssemblyScript SDK는 2024년 사실상 폐기.

NEAR Rust 컨트랙트.

use near_sdk::{env, near, AccountId};

#[near(contract_state)]

#[derive(Default)]

pub struct Counter {

count: u64,

}

#[near]

impl Counter {

pub fn increment(&mut self) {

assert!(self.count < 1_000_000, "Count exceeded");

self.count += 1;

}

pub fn get_count(&self) -> u64 {

self.count

}

}

NEAR의 차별점은 **샤딩**이다. Nightshade 샤딩으로 처리량을 가로로 확장한다. 그러나 2026년 5월 현재 NEAR TVL은 약 3억 달러로, 한때의 기대보다 훨씬 작은 자리에 있다.

17장 · Cosmos CosmWasm — Rust on 인터체인

Cosmos는 단일 체인이 아니다. **하나의 SDK로 만든 수십 개 체인의 연합**이다. CosmWasm은 그 SDK 위에서 도는 스마트 컨트랙트 모듈이다. Osmosis, Juno, Neutron, Stargaze 등이 CosmWasm을 쓴다.

CosmWasm Rust 컨트랙트.

use cosmwasm_std::{entry_point, DepsMut, Env, MessageInfo, Response, StdError};

use cw_storage_plus::Item;

const COUNT: Item<u64> = Item::new("count");

#[entry_point]

pub fn instantiate(deps: DepsMut, _env: Env, _info: MessageInfo, _msg: ())

-> Result<Response, StdError> {

COUNT.save(deps.storage, &0u64)?;

Ok(Response::default())

}

#[entry_point]

pub fn execute(deps: DepsMut, _env: Env, _info: MessageInfo, _msg: ())

-> Result<Response, StdError> {

let current = COUNT.load(deps.storage)?;

if current >= 1_000_000 {

return Err(StdError::generic_err("Count exceeded"));

}

COUNT.save(deps.storage, &(current + 1))?;

Ok(Response::default())

}

CosmWasm의 강점은 **IBC**. 한 체인의 컨트랙트가 다른 체인의 컨트랙트를 호출할 수 있다. 인터체인 자산 이동이 네이티브로 들어 있다.

전체 Cosmos 생태계 TVL은 2026년 5월 약 35억 달러.

18장 · Polkadot ink! — Substrate 위의 Rust

ink!는 Parity Technologies가 만든 Polkadot/Substrate용 Rust DSL이다.

#[ink::contract]

mod counter {

#[ink(storage)]

pub struct Counter {

count: u64,

}

impl Counter {

#[ink(constructor)]

pub fn new() -> Self {

Self { count: 0 }

}

#[ink(message)]

pub fn increment(&mut self) {

assert!(self.count < 1_000_000, "Count exceeded");

self.count += 1;

}

#[ink(message)]

pub fn get(&self) -> u64 {

self.count

}

}

}

ink!의 진짜 특이점은 **WebAssembly 컨트랙트**라는 것. EVM이 아닌 Wasm을 네이티브로 실행한다. Polkadot 메인넷에서 직접 쓰는 곳은 거의 없고, 주로 파라체인(Astar, Aleph Zero 등)에서 쓴다.

19장 · Cardano — Plutus와 Aiken

Cardano는 Haskell 기반 스마트 컨트랙트 언어 **Plutus**로 시작했다. Haskell이라는 진입 장벽이 너무 높았다. 그래서 2023년 등장한 게 **Aiken**이다.

Aiken은 Plutus와 호환되지만 Rust 같은 문법을 가진다.

use aiken/transaction.{ScriptContext}

validator {

fn counter(_redeemer: Data, _datum: Data, _ctx: ScriptContext) -> Bool {

True

}

}

Cardano는 UTXO 확장(eUTxO) 모델이다. 컨트랙트가 직접 상태를 가지지 않고, UTXO의 datum에 상태를 박는다. 이게 사고 방식의 전환이 크다.

Cardano TVL은 2026년 5월 약 4억 달러. 한때의 약속에 비하면 작은 자리.

20장 · Tezos, Algorand, Hedera — 각자의 길

**Tezos** — Michelson(저레벨 어셈블리), LIGO(JavaScript/Pascal-like), SmartPy(Python-like), Archetype(formal verification 우선). 자체 거버넌스로 자가 업그레이드. TVL 약 1억 달러.

**Algorand** — TEAL(저레벨), PyTeal(Python), Algorand Smart Contract, Reach(컴파일러 기반). Pure Proof of Stake. TVL 약 2억 달러.

**Hedera** — Solidity. Hedera Smart Contract Service가 EVM과 호환. 엔터프라이즈 시장(IBM, Google, Boeing 등 거버넌스 위원). TVL 약 1.5억 달러.

**Bitcoin Layer 2** — Liquid Network(Elements Script), RGB(client-side validation), Simplicity(formal-verifiable 어셈블리). Bitcoin 위 스마트 컨트랙트의 세 갈래 시도. 아직 초기 단계.

21장 · Account Abstraction — EIP-4337, EIP-7702

스마트 컨트랙트 자체보다 더 큰 변화가 일어난 영역. 2026년 5월 현재 Ethereum 트랜잭션의 약 18%가 **스마트 계정**에서 출발한다.

**EIP-4337** — 2023년 3월 메인넷에 들어갔다. 컨트랙트 변경 없이 메모리풀 레벨에서 스마트 계정을 지원한다. 핵심 컴포넌트: UserOperation, Bundler, EntryPoint, Paymaster.

**EIP-7702** — 2024년 5월 Pectra 하드포크와 함께 들어갔다. EOA(외부 소유 계정)에 임시로 코드를 붙일 수 있다. 사용자가 메타마스크 그대로 쓰면서도, 한 트랜잭션 동안 스마트 계정처럼 동작한다.

주요 스마트 계정 인프라.

- **Safe** (구 Gnosis Safe) — 멀티시그 표준. 약 1500억 달러 자산이 Safe로 관리.

- **Pimlico** — Bundler/Paymaster 서비스. permissionless.js SDK.

- **Alchemy Account Kit** — Account Abstraction SDK + 인프라.

- **Biconomy** — 가스리스 트랜잭션 + 스마트 계정.

- **ZeroDev** — Kernel 스마트 계정.

- **Stackup** — Bundler 인프라.

22장 · MEV와 보호 — Flashbots, SUAVE

MEV(Maximal Extractable Value)는 블록 빌더가 트랜잭션 순서를 조작해 추출하는 가치다. Sandwich attack, frontrunning, backrunning이 전형.

**Flashbots** — 2020년 등장. MEV를 투명하게 만든다. MEV-Boost가 Ethereum 메인넷의 약 92% 블록을 통해 검증인-빌더 분리(PBS)를 구현.

**SUAVE** (Single Unifying Auction for Value Expression) — Flashbots가 2023년 발표한 분산 메모리풀. 사용자가 어떤 빌더에 트랜잭션을 보낼지 선택하지 않아도 된다.

**MEV 보호 RPC** — Flashbots Protect, MEV Blocker, BloxRoute Protect. 메타마스크에 RPC를 바꾸면 그날부터 sandwich attack을 거의 안 당한다.

23장 · 감사회사들 — 누가 누구를 감사하는가

2026년 기준 주요 스마트 컨트랙트 감사회사.

- **OpenZeppelin** — 가장 큰 회사. Aave, Compound, MakerDAO 감사 경험.

- **Trail of Bits** — Echidna, Slither 개발. 정형 검증 강점.

- **ConsenSys Diligence** — MythX, Scribble 개발사. Ethereum 재단과 가까움.

- **Quantstamp** — 토론토 기반. 자동화 도구 강조.

- **Hacken** — 우크라이나/유럽 기반. CertiK과 더불어 동유럽 강세.

- **Halborn** — 마이애미. 멀티체인 강점.

- **CertiK** — 일리노이대 출신. 자동 정형 검증.

- **Spearbit** — 분산 감사 네트워크. 개인 감사인 매칭.

**감사 대안**:

- **Code4rena** — 경쟁 감사. 약 $50K-500K 풀로 수십 명의 감사인이 경쟁.

- **Sherlock** — 감사 + 해킹 보험. 발견 못한 버그는 보험으로 보상.

- **Cantina** — Spearbit 후속. 경쟁 + 큐레이션.

- **Immunefi** — 버그 바운티 플랫폼. 최대 약 1000만 달러 바운티.

평균 감사 비용. **소규모 (5000줄 미만)** 약 $30K-100K, **중규모** 약 $100K-500K, **대규모 프로토콜** 약 $500K-2M. 감사 한 번이면 6주-3개월.

24장 · The Graph, Goldsky — 컨트랙트 데이터 인덱싱

블록체인 위에 짠 컨트랙트는 RPC로 직접 읽으면 느리다. 그래서 **인덱서**가 필요하다.

- **The Graph** — 가장 오래된 표준. 서브그래프(GraphQL 스키마)로 정의. Decentralized 네트워크 + 호스티드 서비스. 2024년 호스티드 서비스 종료, 분산 네트워크로 완전 이전.

- **Goldsky** — 더 빠르고 더 쉽다. SQL-like Mirror, GraphQL Subgraphs. 엔터프라이즈 고객 강세.

- **Subsquid** — 오픈소스 인덱서 SDK. Postgres 직접 호스팅 가능.

- **Ponder** — TypeScript 네이티브 인덱서. Hardhat/Foundry 개발자에 친화.

- **Envio** — HyperSync 기반 초고속 인덱서. 인덱싱 속도 약 1000블록/초.

- **Allium** — Web3 데이터웨어하우스. SQL로 모든 체인 쿼리.

- **Dune Analytics** — SQL 대시보드. 분석가 표준.

선택 기준 한 줄. **DApp에 GraphQL 인덱서가 필요하면 Goldsky 또는 The Graph**, **TypeScript 코드에 가까운 인덱서가 필요하면 Ponder**, **분석/대시보드면 Dune**.

25장 · 한국 Web3 — Klaytn에서 Kaia까지

한국 Web3 풍경의 굵직한 변화는 2024년 6월이다. **Klaytn**(카카오)과 **Finschia**(라인)가 합병해 **Kaia**가 됐다. 본사는 아부다비. 메인넷은 2024년 8월 출시.

주요 한국계 Web3.

- **Kaia** — Klaytn + Finschia 합병체. EVM 호환. TVL 약 5억 달러.

- **BORA** — 카카오게임즈의 게임 토큰 + 플랫폼. Kaia 위에서 도는 사이드체인.

- **Klip** — 카카오 지갑. 사실상 한국 Web3의 진입 지점.

- **WEMIX** — 위메이드의 게임 토큰. 한때 1.5조 원 시총 → 2022년 9월 거래소 상폐 사건 → 회복 중.

- **ICON** — 2017년 ICO 붐의 한국 대표. 현재 BTP(Blockchain Transmission Protocol)로 인터체인 노력.

- **Sygnum Korea** — 스위스 Sygnum의 한국 진출. 기관 디지털 자산 은행.

- **두나무 / Upbit** — 한국 최대 거래소. 자체 체인 Luniverse 운영.

- **Xangle** — 한국 Web3 데이터 분석 + 리서치.

한국 시장 한 줄. **개인 거래는 거대(전 세계 거래량의 약 7% 차지)**하지만 **국내 DeFi/온체인 활동은 여전히 작다**.

26장 · 일본 Web3 — Astar에서 Soneium까지

일본은 2017년 코인체크 해킹 이후 강한 규제로 한동안 잠잠했다. 그러나 2023-2024년 사이 자민당이 친 Web3 정책을 펴면서 풍경이 바뀌었다.

주요 일본계 Web3.

- **Astar Network** — 일본 최대 자체 체인. EVM + WASM 동시 지원. Polkadot 파라체인이었다가 2024년 Polygon CDK 기반 zkEVM L2(Astar zkEVM)로 전환.

- **Soneium** — **Sony Block Solutions Labs + Startale**의 OP Stack 기반 L2. 2025년 1월 메인넷 출시. 소니의 IP(애니메이션, 게임, 음악)를 온체인으로 가져오는 게 목표.

- **Oasys** — 일본 게임 컨소시엄(반다이 남코, 세가, 스퀘어 에닉스 등). Layer 1 + 게임용 Verse 레이어.

- **JPYC** — 일본 엔 스테이블코인. 2024년 자금결제법 개정 이후 정식 발행.

- **Animoca Brands Japan** — 홍콩 Animoca의 일본 지사. 일본 게임/IP NFT 강세.

- **HashPort** — 일본 NFT/Web3 컨설팅. 가장 큰 일본 Web3 SI.

- **Double Jump.Tokyo** — My Crypto Heroes로 시작한 일본 NFT 게임 회사.

일본 시장 한 줄. **IP가 강하다(애니메이션, 게임, 캐릭터)**. 그래서 NFT 중심 Web3가 자연스럽고, DeFi는 상대적으로 약하다.

27장 · 진짜 매출 — Curve, Lido, Aave, Compound, Uniswap

스마트 컨트랙트가 만든 진짜 매출은 어디인가. 2026년 5월 기준 연환산 매출.

- **Tether (USDT 발행)** — 약 70억 달러. 단연 1위. 사실상 컨트랙트라기보다 신탁 금융.

- **Circle (USDC 발행)** — 약 18억 달러.

- **MakerDAO/Sky (DAI/USDS)** — 약 5억 달러.

- **Aave** — 약 3.5억 달러 (수수료 기준). TVL 약 250억 달러.

- **Lido** — 약 1.5억 달러 (10% 수수료). 스테이킹 약 90억 달러 ETH.

- **Uniswap Labs** — 정확한 매출 불공개. 추정 약 1억 달러대 (프론트엔드 수수료).

- **Curve Finance** — 약 5000만 달러. veTokenomics 원조.

- **Compound** — 약 3000만 달러. 한때 DeFi 황제.

- **GMX** — 약 2000만 달러. 영구 선물 DEX.

- **Pendle** — 약 1500만 달러. 수익률 토큰화.

Solidity 컨트랙트가 만든 매출의 합이 연 약 100억 달러. 작은 시장이 아니다.

28장 · 무엇으로 시작할까 — 2026년의 의사결정 트리

신입 컨트랙트 엔지니어가 받는 가장 많은 질문. "무엇부터 배워야 하나요?" 한 줄로 정리한다.

- **취업/사이드프로젝트 목적, 최단 경로** → Solidity 0.8.28 + Foundry. 한 달 안에 첫 컨트랙트 배포.

- **장기적인 인프라/L2 작업** → Rust + Solana Anchor 또는 Stylus. 2개월 학습.

- **연구 지향 (정형 검증, ZK)** → Cairo 또는 Rust + Halmos. 3개월 이상.

- **새로운 패러다임 (객체 모델, 병렬)** → Sui Move 또는 Aptos Move. 2개월.

- **한국 게임/IP 기획** → Kaia EVM + Klip 통합. Solidity가 그대로 쓰인다.

- **일본 게임/IP 기획** → Soneium 또는 Oasys. 둘 다 EVM이라 Solidity가 그대로 쓰인다.

**보안 우선** → SMTChecker + Echidna + Foundry invariant + Slither. Certora는 큰 프로토콜에서.

**가스 최적화 우선** → Solady 라이브러리 + Yul inline assembly. Huff는 정말 핫패스만.

마지막 한 문장. **EVM은 죽지 않는다. 그러나 EVM만 알면 미래가 좁아진다.** 2026년의 컨트랙트 엔지니어는 Solidity 하나는 깊게, Move 또는 Rust 중 하나는 입문 정도는 알아야 한다.

참고 자료

- Solidity 공식 문서: https://docs.soliditylang.org/

- Solidity GitHub: https://github.com/ethereum/solidity

- Vyper 공식 문서: https://docs.vyperlang.org/

- Foundry Book: https://book.getfoundry.sh/

- Hardhat 공식 문서: https://hardhat.org/docs

- OpenZeppelin Contracts: https://github.com/OpenZeppelin/openzeppelin-contracts

- Solady: https://github.com/Vectorized/solady

- Solmate: https://github.com/transmissions11/solmate

- Aptos Move 문서: https://aptos.dev/move/move-on-aptos

- Sui Move 문서: https://docs.sui.io/concepts/sui-move-concepts

- Cairo Book: https://book.cairo-lang.org/

- StarkNet 문서: https://docs.starknet.io/

- Arbitrum Stylus 문서: https://docs.arbitrum.io/stylus/stylus-gentle-introduction

- Fuel Sway Book: https://docs.fuel.network/docs/sway/

- Solana Anchor: https://www.anchor-lang.com/

- NEAR SDK Rust: https://github.com/near/near-sdk-rs

- CosmWasm Book: https://book.cosmwasm.com/

- ink! 공식 문서: https://use.ink/

- Aiken: https://aiken-lang.org/

- EIP-1153 (Transient Storage): https://eips.ethereum.org/EIPS/eip-1153

- EIP-4337 (Account Abstraction): https://eips.ethereum.org/EIPS/eip-4337

- EIP-7702 (EOA Code): https://eips.ethereum.org/EIPS/eip-7702

- Flashbots Docs: https://docs.flashbots.net/

- Certora Prover: https://www.certora.com/

- Halmos: https://github.com/a16z/halmos

- Echidna: https://github.com/crytic/echidna

- The Graph: https://thegraph.com/docs/

- Goldsky: https://docs.goldsky.com/

- Ponder: https://ponder.sh/

- DefiLlama TVL Rankings: https://defillama.com/

- Kaia 공식 문서: https://docs.kaia.io/

- Soneium 공식 사이트: https://soneium.org/

- Astar Network: https://docs.astar.network/

현재 단락 (1/495)

블록체인은 분산 데이터베이스다. 스마트 컨트랙트는 그 데이터베이스 위에서 도는 **결정론적 프로그램**이다. 모든 노드가 같은 입력으로 같은 출력을 내야 하므로, 언어 선택은 곧 ...

작성 글자: 0원문 글자: 19,666작성 단락: 0/495