PTB 실습
Practicing with Programmable Transaction Blocks
💡 이 장의 목표
- PTB(Programmable Transaction Block)를 직접 구성하고 실행한다.
- Move 모듈의 함수 호출을 시각적으로 연결하는 과정을 배운다.
- 웹 버전 PTB Builder(
ptb.wal.app
)를 활용하여 실행 결과를 검증한다.
1. 준비
- 이전 장에서 배포한 Managed Token 패키지 확인
- Owner Objects Explorer에서
TreasuryCap<...::MANAGED>
존재 여부 확인 - Sui Extension 또는 CLI에서 네트워크가 이전 장에서 배포한 동일한 네트워크 — Testnet 또는 Devnet — 인지 확인
2. Sui Extension에서 실행하기
Package Explorer에서 Package 선택
- 단, VS Code를 새로 실행한 경우 Load를 통해 On-Chain에서 Package 정보를 불러와야 합니다.
mint
함수 선택 → 인자 입력 (treasury_cap
,amount
,recipient
)실행 → 새
Coin<MANAGED>
생성
💡 이 방식은 Move 함수를 직접 실행하는 가장 기본적인 방법입니다.
3. PTB Builder에서 실행하기
PTB Builder 열기
노드 추가:
moveCall → managed::mint
인자 입력:
object(treasuryCapId)
pure.u64(amount)
pure.address(recipient)
Run 클릭 → Transaction Digest 확인
⚡️ PTB Builder는 실행한 구성을 TypeScript 코드로 변환해 제공합니다. Export/Copy 메뉴를 사용해 개발 코드에 바로 활용할 수 있습니다.
4. 웹 기반 PTB Builder 사용하기
PTB Builder는 웹에서도 사용할 수 있습니다. 👉 https://ptb.wal.app
주요 기능
- PTB 조립 및 실행 (시각적 노드 연결)
tx digest
기반 트랜잭션 시각화- PTB를 파일로 내보내기 (export)
- PTB를 TypeScript 코드로 변환
5. TypeScript 코드로 내보내기
PTB Builder는 트랜잭션 블록을 다음과 같은 형태의 TypeScript 코드로 변환합니다.
ts
import { Transaction } from "@mysten/sui/transactions";
const tx = new Transaction();
const treasuryCap = tx.object("0x123...");
const amount = tx.pure.u64(100);
const recipient = tx.pure.address("0xabc...");
tx.moveCall({
target: "0xPACKAGE::managed::mint",
arguments: [treasuryCap, amount, recipient],
});
이 코드는 실제 Sui SDK 환경에서 바로 실행 가능합니다.
💡 이제 여러분은 PTB를 구성하고, 실행하며, 변환하는 방법을 이해했습니다. 다음으로, 여러 커맨드를 포함한 하나의 트랜잭션을 만들어 더 고급 사례를 학습해 봅시다.