Communitygithub.com

Earnwithalee7890/stx-contract-deployment-hiro

Stacks 블록체인을 위한 포괄적인 Clarity 스마트 컨트랙트 컬렉션 및 SDK 툴킷으로, @earnwithalee/stx-contract를 기반으로 합니다. 지갑 연결, STX 잔액/트랜잭션 조회, Clarity 값 인코딩, 컨트랙트 호출 유틸리티를 제공하며, 완전한 타입 지원, 네트워크 불가지론적, Next.js, Vite 및 최신 프론트엔드에 최적화되어 있습니다.

stx-contract-deployment-hiro란 무엇인가요?

이 스킬은 Stacks 블록체인에서 Clarity 스마트 컨트랙트를 배포, 상호작용 및 모니터링하기 위한 포괄적인 툴킷입니다. 핵심 SDK인 @earnwithalee/stx-contract는 TypeScript로 완전히 타입화되어 있어 개발자에게 강력한 타입 안전성을 제공하며, Next.js, Vite 등 현대적인 프론트엔드 프레임워크와 원활하게 통합됩니다. 주요 기능으로는 Leather, Xverse 등 Stacks 지갑의 자동 감지 및 연결, STX 잔액 및 트랜잭션 내역 조회, Clarity 값 인코딩, 읽기 전용 및 쓰기 가능한 컨트랙트 함수 호출을 포함합니다. 또한 Clarinet을 활용한 로컬 테스트 및 배포, Chainhook을 통한 실시간 온체인 이벤트 스트리밍을 지원하며, Hiro Explorer를 통해 배포된 컨트랙트를 검증할 수 있습니다. 이 스킬을 통해 개발자는 Stacks 생태계에서 dApp을 구축하는 데 필요한 모든 도구를 하나의 패키지로 사용할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add Earnwithalee7890/stx-contract-deployment-hiro

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

stx-contract-deployment-hiro은(는) 무엇을 하나요?

Clarity 스마트 컨트랙트 컬렉션 + Stacks 블록체인을 위한 프리미엄 SDK 지갑 감지, 잔액 조회, Clarity 인코딩, 전체 컨트랙트 호출 지원 — 하나의 패키지로 Stacks 스마트 컨트랙트를 배포, 상호작용 및 모니터링하세요.

GitHub · NPM — @earnwithalee/stx-contract


이 스킬이 가르치는 내용

이 스킬은 다음을 다룹니다:

  • Stacks 메인넷/테스트넷에서 Clarity 스마트 컨트랙트 배포 및 상호작용
  • 타입화된 컨트랙트 호출을 위한 @earnwithalee/stx-contract SDK 사용
  • Leather, Xverse 및 기타 Stacks 지갑의 지갑 감지 및 연결
  • 온체인 상태 읽기 — 잔액, 트랜잭션, 블록 높이, 컨트랙트 데이터
  • 순수 JavaScript/TypeScript에서 Clarity 값 인코딩
  • 실시간 온체인 이벤트 스트리밍을 위한 Chainhook 설정
  • 메인넷 배포 전 Clarinet으로 컨트랙트 테스트

권장 도구

  • 검색: ripgrep — 리포지토리 전체에서 빠른 코드 검색
  • 배포: Acme Deploy — Vercel 또는 프로덕션에 배포
  • 포맷: prettier — 코드 포맷팅 (npm run format)
  • 린트: eslint — 정적 분석 (npm run lint)
  • 컨트랙트: Clarinet — 로컬 Clarity 테스트 및 배포
  • 탐색기: Hiro Explorer — 배포된 컨트랙트를 온체인에서 확인
  • 런타임: Node.js >= 18
  • 블록체인: Stacks — 비트코인으로 보호된 L2

설치

npm install @earnwithalee/stx-contract
# 또는
yarn add @earnwithalee/stx-contract
# 또는
pnpm add @earnwithalee/stx-contract

빠른 시작

import { StxContractClient } from '@earnwithalee/stx-contract';

const client = new StxContractClient({ network: 'mainnet' });

지갑 연결

import sdk from '@earnwithalee/stx-contract';

// 지갑 연결 (Leather / Xverse 자동 감지)
const address = await sdk.wallet.connectWallet();
console.log('연결됨:', address);

// 지갑 제공자 감지
const { available, provider } = sdk.wallet.detectWallet();

// 표시용 주소 포맷
const short = sdk.wallet.formatAddress(address); // "SP2F...NFBT"

온체인 데이터 — 잔액 및 트랜잭션

import sdk from '@earnwithalee/stx-contract';

// STX 잔액 가져오기
const balance = await sdk.api.getBalance('SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT');
console.log('잔액:', balance.stx, 'STX');

// 트랜잭션 내역 가져오기
const txs = await sdk.api.getTransactions('SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT');

// 현재 블록 높이 가져오기
const height = await sdk.api.getBlockHeight();

// 트랜잭션 상태 확인
const status = await sdk.api.getTransactionStatus('0xabc...');

// 컨트랙트의 읽기 전용 함수 읽기
const result = await sdk.api.readContract({
  contractAddress: 'SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT',
  contractName: 'builder-rewards-v3',
  functionName: 'get-total-fees-collected',
  functionArgs: [],
});

Clarity 값 인코딩

import sdk from '@earnwithalee/stx-contract';

// 컨트랙트 호출을 위한 다양한 Clarity 타입 인코딩
const asciiStr  = sdk.encoding.encodeStringAscii('hello');
const uint256   = sdk.encoding.encodeUint(1000000n);
const principal = sdk.encoding.encodePrincipal('SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT');
const boolVal   = sdk.encoding.encodeBool(true);
const buff      = sdk.encoding.encodeBuffer(Buffer.from('deadbeef', 'hex'));

컨트랙트 함수 호출 (쓰기)

import sdk from '@earnwithalee/stx-contract';
import { AnchorMode, PostConditionMode } from '@stacks/transactions';

const txId = await sdk.contract.callPublic({
  contractAddress: 'SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT',
  contractName: 'builder-rewards-v3',
  functionName: 'register-builder',
  functionArgs: [
    sdk.encoding.encodePrincipal('SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT'),
  ],
  anchorMode: AnchorMode.Any,
  postConditionMode: PostConditionMode.Allow,
  network: 'mainnet',
});

console.log('TX 제출됨:', txId);

Clarity 컨트랙트 배포 (Clarinet)

# Clarinet CLI 설치
brew install hirosystems/tap/clarinet   # macOS
# 또는 https://github.com/hirosystems/clarinet/releases 에서 다운로드

# 프로젝트 초기화
clarinet new my-contract && cd my-contract

# 새 컨트랙트 생성
clarinet contract new my-token

# 확인 및 테스트
clarinet check
clarinet test

# 테스트넷에 배포
clarinet deployments generate --testnet
clarinet deployments apply --testnet

# 메인넷에 배포
clarinet deployments generate --mainnet
clarinet deployments apply --mainnet

Chainhook — 실시간 온체인 이벤트 스트리밍

// chainhooks/builder-event.json
{
  "name": "builder-registered",
  "version": 1,
  "chain": "stacks",
  "networks": {
    "mainnet": {
      "start_block": 150000,
      "predicate": {
        "scope": "contract_call",
        "contract_identifier": "SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT.builder-rewards-v3",
        "method": "register-builder"
      },
      "expire_after_occurrence": null
    }
  }
}

예제 Clarity 컨트랙트

;; builder-rewards-v3.clar
(define-map builder-scores principal uint)

(define-public (register-builder (builder principal))
  (begin
    (asserts! (is-eq tx-sender CONTRACT_OWNER) (err u403))
    (map-set builder-scores builder u0)
    (ok true)
  )
)

(define-read-only (get-score (builder principal))
  (default-to u0 (map-get? builder-scores builder))
)

(define-public (increment-score (builder principal) (points uint))
  (let ((current (get-score builder)))
    (map-set builder-scores builder (+ current points))
    (ok (+ current points))
  )
)

로컬에서 실행

git clone https://github.com/Earnwithalee7890/stx-contract-deployment-hiro.git
cd stx-contract-deployment-hiro
npm install
cp .env.example .env    # STX_PRIVATE_KEY 및 HIRO_API_KEY 설정
npm run dev             # Next.js 개발 서버

환경 변수

# .env.example
STX_NETWORK=mainnet                          # mainnet | testnet
STX_PRIVATE_KEY=your_private_key_here
HIRO_API_KEY=your_hiro_api_key               # https://platform.hiro.so
NEXT_PUBLIC_CONTRACT_ADDRESS=SP2F500B8DTRK1EANJQ054BRAB8DDKN6QCMXGNFBT

기술 스택

계층기술
SDK@earnwithalee/stx-contract (npm)
프레임워크Next.js (App Router)
스마트 컨트랙트Clarity (Stacks 메인넷)
테스트Clarinet + Vitest
지갑Leather, Xverse (provider injection)
체인 APIHiro Extended API v1
블록체인Stacks L2 (비트코인 보안)
언어TypeScript

라이선스

MIT — LICENSE 파일 참조

관련 스킬