본문으로 건너뛰기

"Sui" 태그로 연결된 22개 게시물개의 게시물이 있습니다.

모든 태그 보기

@mysten/seal로 탈중앙화 암호화 구축하기: 개발자 튜토리얼

· 약 13분
Dora Noda
Software Engineer

프라이버시가 공공 인프라가 되고 있습니다. 2025년에 개발자들은 데이터 저장만큼 쉽게 암호화를 수행할 수 있는 도구가 필요합니다. Mysten Labs의 Seal은 바로 그것을 제공합니다—온체인 접근 제어가 있는 탈중앙화 비밀 관리입니다. 이 튜토리얼은 신원 기반 암호화, 임계값 보안, 프로그래밍 가능한 접근 정책을 사용하여 안전한 Web3 애플리케이션을 구축하는 방법을 알려드립니다.


소개: Web3에서 Seal이 중요한 이유

기존의 클라우드 애플리케이션은 단일 제공업체가 암호화된 데이터에 대한 접근을 제어하는 중앙화된 키 관리 시스템에 의존합니다. 편리하지만, 이는 위험한 단일 장애점을 만듭니다. 제공업체가 손상되거나, 오프라인이 되거나, 접근을 제한하기로 결정하면 데이터에 접근할 수 없거나 취약해집니다.

Seal은 이 패러다임을 완전히 바꿉니다. Sui 블록체인을 위해 Mysten Labs에서 구축한 Seal은 다음을 가능하게 하는 탈중앙화 비밀 관리(DSM) 서비스입니다:

  • 신원 기반 암호화 - 콘텐츠가 환경을 떠나기 전에 보호됩니다
  • 임계값 암호화 - 키 접근을 여러 독립적인 노드에 분산시킵니다
  • 온체인 접근 제어 - 시간 잠금, 토큰 게이팅, 커스텀 인증 로직
  • 스토리지 무관 설계 - Walrus, IPFS 또는 모든 스토리지 솔루션과 작동

안전한 메시징 앱, 게이티드 콘텐츠 플랫폼, 시간 잠금 자산 전송을 구축하든, Seal은 필요한 암호화 프리미티브와 접근 제어 인프라를 제공합니다.


시작하기

전제 조건

시작하기 전에 다음이 있는지 확인하세요:

  • Node.js 18+ 설치
  • TypeScript/JavaScript 기본 지식
  • 테스트용 Sui 지갑 (Sui Wallet 등)
  • 블록체인 개념에 대한 이해

설치

npm을 통해 Seal SDK를 설치합니다:

npm install @mysten/seal

블록체인 상호작용을 위해 Sui SDK도 필요합니다:

npm install @mysten/sui

프로젝트 설정

새 프로젝트를 생성하고 초기화합니다:

mkdir seal-tutorial
cd seal-tutorial
npm init -y
npm install @mysten/seal @mysten/sui typescript @types/node

간단한 TypeScript 구성을 생성합니다:

// tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
}
}

핵심 개념: Seal 작동 방식

코드를 작성하기 전에 Seal의 아키텍처를 이해해 봅시다:

1. 신원 기반 암호화 (IBE)

공개 키로 암호화하는 전통적인 암호화와 달리, IBE는 신원(이메일 주소나 Sui 주소 등)으로 암호화할 수 있게 해줍니다. 수신자는 해당 신원을 제어한다는 것을 증명할 수 있을 때만 복호화할 수 있습니다.

2. 임계값 암호화

단일 키 서버를 신뢰하는 대신, Seal은 t-of-n 임계값 체계를 사용합니다. 5개 중 3개 키 서버를 구성할 수 있으며, 이는 3개 서버가 협력하여 복호화 키를 제공할 수 있지만 2개 이하로는 불가능함을 의미합니다.

3. 온체인 접근 제어

접근 정책은 Sui 스마트 컨트랙트에 의해 시행됩니다. 키 서버가 복호화 키를 제공하기 전에 요청자가 온체인 정책 요구사항(토큰 소유권, 시간 제약 등)을 충족하는지 확인합니다.

4. 키 서버 네트워크

분산된 키 서버들이 접근 정책을 검증하고 복호화 키를 생성합니다. 이 서버들은 단일 제어점이 없도록 다른 당사자들에 의해 운영됩니다.


기본 구현: 첫 번째 Seal 애플리케이션

Sui 블록체인 정책을 통해 민감한 데이터를 암호화하고 접근을 제어하는 간단한 애플리케이션을 구축해 봅시다.

1단계: Seal 클라이언트 초기화

// src/seal-client.ts
import { SealClient } from '@mysten/seal';
import { SuiClient } from '@mysten/sui/client';

export async function createSealClient() {
// 테스트넷용 Sui 클라이언트 초기화
const suiClient = new SuiClient({
url: 'https://fullnode.testnet.sui.io'
});

// 테스트넷 키 서버로 Seal 클라이언트 구성
const sealClient = new SealClient({
suiClient,
keyServers: [
'https://keyserver1.seal-testnet.com',
'https://keyserver2.seal-testnet.com',
'https://keyserver3.seal-testnet.com'
],
threshold: 2, // 3개 중 2개 임계값
network: 'testnet'
});

return { sealClient, suiClient };
}

2단계: 간단한 암호화/복호화

// src/basic-encryption.ts
import { createSealClient } from './seal-client';

async function basicExample() {
const { sealClient } = await createSealClient();

// 암호화할 데이터
const sensitiveData = "이것은 내 비밀 메시지입니다!";
const recipientAddress = "0x742d35cc6d4c0c08c0f9bf3c9b2b6c64b3b4f5c6d7e8f9a0b1c2d3e4f5a6b7c8";

try {
// 특정 Sui 주소로 데이터 암호화
const encryptedData = await sealClient.encrypt({
data: Buffer.from(sensitiveData, 'utf-8'),
recipientId: recipientAddress,
// 선택적: 메타데이터 추가
metadata: {
contentType: 'text/plain',
timestamp: Date.now()
}
});

console.log('암호화된 데이터:', {
ciphertext: encryptedData.ciphertext.toString('base64'),
encryptionId: encryptedData.encryptionId
});

// 나중에 데이터 복호화 (적절한 인증 필요)
const decryptedData = await sealClient.decrypt({
ciphertext: encryptedData.ciphertext,
encryptionId: encryptedData.encryptionId,
recipientId: recipientAddress
});

console.log('복호화된 데이터:', decryptedData.toString('utf-8'));

} catch (error) {
console.error('암호화/복호화 실패:', error);
}
}

basicExample();

Sui 스마트 컨트랙트를 통한 접근 제어

Seal의 진정한 힘은 프로그래밍 가능한 접근 제어에서 나옵니다. 특정 시간 이후에만 데이터를 복호화할 수 있는 시간 잠금 암호화 예제를 만들어 봅시다.

1단계: 접근 제어 컨트랙트 배포

먼저 접근 정책을 정의하는 Move 스마트 컨트랙트가 필요합니다:

// contracts/time_lock.move
module time_lock::policy {
use sui::clock::{Self, Clock};
use sui::object::{Self, UID};
use sui::tx_context::{Self, TxContext};

public struct TimeLockPolicy has key, store {
id: UID,
unlock_time: u64,
authorized_user: address,
}

public fun create_time_lock(
unlock_time: u64,
authorized_user: address,
ctx: &mut TxContext
): TimeLockPolicy {
TimeLockPolicy {
id: object::new(ctx),
unlock_time,
authorized_user,
}
}

public fun can_decrypt(
policy: &TimeLockPolicy,
user: address,
clock: &Clock
): bool {
let current_time = clock::timestamp_ms(clock);
policy.authorized_user == user && current_time >= policy.unlock_time
}
}

2단계: Seal과 통합

// src/time-locked-encryption.ts
import { createSealClient } from './seal-client';
import { TransactionBlock } from '@mysten/sui/transactions';

async function createTimeLocked() {
const { sealClient, suiClient } = await createSealClient();

// Sui에서 접근 정책 생성
const txb = new TransactionBlock();

const unlockTime = Date.now() + 60000; // 1분 후 잠금 해제
const authorizedUser = "0x742d35cc6d4c0c08c0f9bf3c9b2b6c64b3b4f5c6d7e8f9a0b1c2d3e4f5a6b7c8";

txb.moveCall({
target: 'time_lock::policy::create_time_lock',
arguments: [
txb.pure(unlockTime),
txb.pure(authorizedUser)
]
});

// 정책 생성을 위한 트랜잭션 실행
const result = await suiClient.signAndExecuteTransactionBlock({
transactionBlock: txb,
signer: yourKeypair, // 당신의 Sui keypair
});

const policyId = result.objectChanges?.find(
change => change.type === 'created'
)?.objectId;

// 이제 이 정책으로 암호화
const sensitiveData = "이것은 1분 후에 잠금 해제됩니다!";

const encryptedData = await sealClient.encrypt({
data: Buffer.from(sensitiveData, 'utf-8'),
recipientId: authorizedUser,
accessPolicy: {
policyId,
policyType: 'time_lock'
}
});

console.log('시간 잠금 데이터가 생성되었습니다. 1분 후에 복호화를 시도해보세요.');

return {
encryptedData,
policyId,
unlockTime
};
}

실용적인 예제

예제 1: 보안 메시징 애플리케이션

// src/secure-messaging.ts
import { createSealClient } from './seal-client';

class SecureMessenger {
private sealClient: any;

constructor(sealClient: any) {
this.sealClient = sealClient;
}

async sendMessage(
message: string,
recipientAddress: string,
senderKeypair: any
) {
const messageData = {
content: message,
timestamp: Date.now(),
sender: senderKeypair.toSuiAddress(),
messageId: crypto.randomUUID()
};

const encryptedMessage = await this.sealClient.encrypt({
data: Buffer.from(JSON.stringify(messageData), 'utf-8'),
recipientId: recipientAddress,
metadata: {
type: 'secure_message',
sender: senderKeypair.toSuiAddress()
}
});

// 탈중앙화 스토리지(Walrus)에 암호화된 메시지 저장
return this.storeOnWalrus(encryptedMessage);
}

async readMessage(encryptionId: string, recipientKeypair: any) {
// 스토리지에서 검색
const encryptedData = await this.retrieveFromWalrus(encryptionId);

// Seal로 복호화
const decryptedData = await this.sealClient.decrypt({
ciphertext: encryptedData.ciphertext,
encryptionId: encryptedData.encryptionId,
recipientId: recipientKeypair.toSuiAddress()
});

return JSON.parse(decryptedData.toString('utf-8'));
}

private async storeOnWalrus(data: any) {
// Walrus 스토리지와의 통합
// 이는 암호화된 데이터를 Walrus에 업로드하고
// 검색을 위한 blob ID를 반환합니다
}

private async retrieveFromWalrus(blobId: string) {
// blob ID를 사용하여 Walrus에서 암호화된 데이터 검색
}
}

예제 2: 토큰 게이티드 콘텐츠 플랫폼

// src/gated-content.ts
import { createSealClient } from './seal-client';

class ContentGating {
private sealClient: any;
private suiClient: any;

constructor(sealClient: any, suiClient: any) {
this.sealClient = sealClient;
this.suiClient = suiClient;
}

async createGatedContent(
content: string,
requiredNftCollection: string,
creatorKeypair: any
) {
// NFT 소유권 정책 생성
const accessPolicy = await this.createNftPolicy(
requiredNftCollection,
creatorKeypair
);

// NFT 접근 요구사항으로 콘텐츠 암호화
const encryptedContent = await this.sealClient.encrypt({
data: Buffer.from(content, 'utf-8'),
recipientId: 'nft_holders', // NFT 보유자를 위한 특별한 수신자
accessPolicy: {
policyId: accessPolicy.policyId,
policyType: 'nft_ownership'
}
});

return {
contentId: encryptedContent.encryptionId,
accessPolicy: accessPolicy.policyId
};
}

async accessGatedContent(
contentId: string,
userAddress: string,
userKeypair: any
) {
// 먼저 NFT 소유권 확인
const hasAccess = await this.verifyNftOwnership(
userAddress,
contentId
);

if (!hasAccess) {
throw new Error('접근 거부: 필요한 NFT를 찾을 수 없습니다');
}

// 콘텐츠 복호화
const decryptedContent = await this.sealClient.decrypt({
encryptionId: contentId,
recipientId: userAddress
});

return decryptedContent.toString('utf-8');
}

private async createNftPolicy(collection: string, creator: any) {
// NFT 소유권을 확인하는 Move 컨트랙트 생성
// 정책 객체 ID 반환
}

private async verifyNftOwnership(user: string, contentId: string) {
// 사용자가 필요한 NFT를 소유하는지 확인
// NFT 소유권을 위해 Sui 쿼리
}
}

예제 3: 시간 잠금 자산 전송

// src/time-locked-transfer.ts
import { createSealClient } from './seal-client';

async function createTimeLockTransfer(
assetData: any,
recipientAddress: string,
unlockTimestamp: number,
senderKeypair: any
) {
const { sealClient, suiClient } = await createSealClient();

// Sui에서 시간 잠금 정책 생성
const timeLockPolicy = await createTimeLockPolicy(
unlockTimestamp,
recipientAddress,
senderKeypair,
suiClient
);

// 자산 전송 데이터 암호화
const transferData = {
asset: assetData,
recipient: recipientAddress,
unlockTime: unlockTimestamp,
transferId: crypto.randomUUID()
};

const encryptedTransfer = await sealClient.encrypt({
data: Buffer.from(JSON.stringify(transferData), 'utf-8'),
recipientId: recipientAddress,
accessPolicy: {
policyId: timeLockPolicy.policyId,
policyType: 'time_lock'
}
});

console.log(`자산이 ${new Date(unlockTimestamp)}까지 잠겼습니다`);

return {
transferId: encryptedTransfer.encryptionId,
unlockTime: unlockTimestamp,
policyId: timeLockPolicy.policyId
};
}

async function claimTimeLockTransfer(
transferId: string,
recipientKeypair: any
) {
const { sealClient } = await createSealClient();

try {
const decryptedData = await sealClient.decrypt({
encryptionId: transferId,
recipientId: recipientKeypair.toSuiAddress()
});

const transferData = JSON.parse(decryptedData.toString('utf-8'));

// 자산 전송 처리
console.log('자산 전송이 잠금 해제되었습니다:', transferData);

return transferData;
} catch (error) {
console.error('전송이 아직 잠금 해제되지 않았거나 접근이 거부되었습니다:', error);
throw error;
}
}

Walrus 탈중앙화 스토리지와의 통합

Seal은 Sui의 탈중앙화 스토리지 솔루션인 Walrus와 원활하게 작동합니다. 두 가지를 모두 통합하는 방법은 다음과 같습니다:

// src/walrus-integration.ts
import { createSealClient } from './seal-client';

class SealWalrusIntegration {
private sealClient: any;
private walrusClient: any;

constructor(sealClient: any, walrusClient: any) {
this.sealClient = sealClient;
this.walrusClient = walrusClient;
}

async storeEncryptedData(
data: Buffer,
recipientAddress: string,
accessPolicy?: any
) {
// Seal로 암호화
const encryptedData = await this.sealClient.encrypt({
data,
recipientId: recipientAddress,
accessPolicy
});

// Walrus에 암호화된 데이터 저장
const blobId = await this.walrusClient.store(
encryptedData.ciphertext
);

// Seal과 Walrus 정보를 모두 포함하는 참조 반환
return {
blobId,
encryptionId: encryptedData.encryptionId,
accessPolicy: encryptedData.accessPolicy
};
}

async retrieveAndDecrypt(
blobId: string,
encryptionId: string,
userKeypair: any
) {
// Walrus에서 검색
const encryptedData = await this.walrusClient.retrieve(blobId);

// Seal로 복호화
const decryptedData = await this.sealClient.decrypt({
ciphertext: encryptedData,
encryptionId,
recipientId: userKeypair.toSuiAddress()
});

return decryptedData;
}
}

// 사용 예제
async function walrusExample() {
const { sealClient } = await createSealClient();
const walrusClient = new WalrusClient('https://walrus-testnet.sui.io');

const integration = new SealWalrusIntegration(sealClient, walrusClient);

const fileData = Buffer.from('중요한 문서 내용');
const recipientAddress = '0x...';

// 암호화된 상태로 저장
const result = await integration.storeEncryptedData(
fileData,
recipientAddress
);

console.log('Blob ID로 저장됨:', result.blobId);

// 나중에 검색하고 복호화
const decrypted = await integration.retrieveAndDecrypt(
result.blobId,
result.encryptionId,
recipientKeypair
);

console.log('검색된 데이터:', decrypted.toString());
}

임계값 암호화 고급 구성

프로덕션 애플리케이션의 경우 여러 키 서버와 함께 사용자 정의 임계값 암호화를 구성하고 싶을 것입니다:

// src/advanced-threshold.ts
import { SealClient } from '@mysten/seal';

async function setupProductionSeal() {
// 여러 독립적인 키 서버로 구성
const keyServers = [
'https://keyserver-1.your-org.com',
'https://keyserver-2.partner-org.com',
'https://keyserver-3.third-party.com',
'https://keyserver-4.backup-provider.com',
'https://keyserver-5.fallback.com'
];

const sealClient = new SealClient({
keyServers,
threshold: 3, // 5개 중 3개 임계값
network: 'mainnet',
// 고급 옵션
retryAttempts: 3,
timeoutMs: 10000,
backupKeyServers: [
'https://backup-1.emergency.com',
'https://backup-2.emergency.com'
]
});

return sealClient;
}

async function robustEncryption() {
const sealClient = await setupProductionSeal();

const criticalData = "미션 크리티컬 암호화된 데이터";

// 높은 보안 보장으로 암호화
const encrypted = await sealClient.encrypt({
data: Buffer.from(criticalData, 'utf-8'),
recipientId: '0x...',
// 최대 보안을 위해 모든 5개 서버 필요
customThreshold: 5,
// 중복성 추가
redundancy: 2,
accessPolicy: {
// 다중 인증 요구사항
requirements: ['nft_ownership', 'time_lock', 'multisig_approval']
}
});

return encrypted;
}

보안 모범 사례

1. 키 관리

// src/security-practices.ts

// 좋은 방법: 안전한 키 유도 사용
import { generateKeypair } from '@mysten/sui/cryptography/ed25519';

const keypair = generateKeypair();

// 좋은 방법: 키를 안전하게 저장 (환경 변수 예제)
const keypair = Ed25519Keypair.fromSecretKey(
process.env.PRIVATE_KEY
);

// 나쁜 방법: 키를 하드코딩하지 마세요
const badKeypair = Ed25519Keypair.fromSecretKey(
"hardcoded-secret-key-12345" // 이렇게 하지 마세요!
);

2. 접근 정책 검증

// 암호화 전에 항상 접근 정책 검증
async function secureEncrypt(data: Buffer, recipient: string) {
const { sealClient } = await createSealClient();

// 수신자 주소 검증
if (!isValidSuiAddress(recipient)) {
throw new Error('유효하지 않은 수신자 주소');
}

// 정책이 존재하고 유효한지 확인
const policy = await validateAccessPolicy(policyId);
if (!policy.isValid) {
throw new Error('유효하지 않은 접근 정책');
}

return sealClient.encrypt({
data,
recipientId: recipient,
accessPolicy: policy
});
}

3. 오류 처리 및 대체 방안

// 견고한 오류 처리
async function resilientDecrypt(encryptionId: string, userKeypair: any) {
const { sealClient } = await createSealClient();

try {
return await sealClient.decrypt({
encryptionId,
recipientId: userKeypair.toSuiAddress()
});
} catch (error) {
if (error.code === 'ACCESS_DENIED') {
throw new Error('접근 거부: 권한을 확인하세요');
} else if (error.code === 'KEY_SERVER_UNAVAILABLE') {
// 백업 구성으로 재시도
return await retryWithBackupServers(encryptionId, userKeypair);
} else if (error.code === 'THRESHOLD_NOT_MET') {
throw new Error('사용 가능한 키 서버가 부족합니다');
} else {
throw new Error(`복호화 실패: ${error.message}`);
}
}
}

4. 데이터 검증

// 암호화 전에 데이터 검증
function validateDataForEncryption(data: Buffer): boolean {
// 크기 제한 확인
if (data.length > 1024 * 1024) { // 1MB 제한
throw new Error('암호화하기에 데이터가 너무 큽니다');
}

// 민감한 패턴 확인 (선택사항)
const dataStr = data.toString();
if (containsSensitivePatterns(dataStr)) {
console.warn('경고: 데이터에 잠재적으로 민감한 패턴이 포함되어 있습니다');
}

return true;
}

성능 최적화

1. 작업 일괄 처리

// 효율성을 위해 여러 암호화를 일괄 처리
async function batchEncrypt(dataItems: Buffer[], recipients: string[]) {
const { sealClient } = await createSealClient();

const promises = dataItems.map((data, index) =>
sealClient.encrypt({
data,
recipientId: recipients[index]
})
);

return Promise.all(promises);
}

2. 키 서버 응답 캐싱

// 지연 시간을 줄이기 위해 키 서버 세션 캐시
class OptimizedSealClient {
private sessionCache = new Map();

async encryptWithCaching(data: Buffer, recipient: string) {
let session = this.sessionCache.get(recipient);

if (!session || this.isSessionExpired(session)) {
session = await this.createNewSession(recipient);
this.sessionCache.set(recipient, session);
}

return this.encryptWithSession(data, session);
}
}

Seal 통합 테스트

단위 테스트

// tests/seal-integration.test.ts
import { describe, it, expect } from 'jest';
import { createSealClient } from '../src/seal-client';

describe('Seal 통합', () => {
it('데이터를 성공적으로 암호화하고 복호화해야 합니다', async () => {
const { sealClient } = await createSealClient();
const testData = Buffer.from('테스트 메시지');
const recipient = '0x742d35cc6d4c0c08c0f9bf3c9b2b6c64b3b4f5c6d7e8f9a0b1c2d3e4f5a6b7c8';

const encrypted = await sealClient.encrypt({
data: testData,
recipientId: recipient
});

expect(encrypted.encryptionId).toBeDefined();
expect(encrypted.ciphertext).toBeDefined();

const decrypted = await sealClient.decrypt({
ciphertext: encrypted.ciphertext,
encryptionId: encrypted.encryptionId,
recipientId: recipient
});

expect(decrypted.toString()).toBe('테스트 메시지');
});

it('접근 제어 정책을 시행해야 합니다', async () => {
// 인증되지 않은 사용자는 복호화할 수 없음을 테스트
const { sealClient } = await createSealClient();

const encrypted = await sealClient.encrypt({
data: Buffer.from('비밀'),
recipientId: 'authorized-user'
});

await expect(
sealClient.decrypt({
ciphertext: encrypted.ciphertext,
encryptionId: encrypted.encryptionId,
recipientId: 'unauthorized-user'
})
).rejects.toThrow('접근 거부');
});
});

프로덕션 배포

환경 구성

// config/production.ts
export const productionConfig = {
keyServers: [
process.env.KEY_SERVER_1,
process.env.KEY_SERVER_2,
process.env.KEY_SERVER_3,
process.env.KEY_SERVER_4,
process.env.KEY_SERVER_5
],
threshold: 3,
network: 'mainnet',
suiRpc: process.env.SUI_RPC_URL,
walrusGateway: process.env.WALRUS_GATEWAY,
// 보안 설정
maxDataSize: 1024 * 1024, // 1MB
sessionTimeout: 3600000, // 1시간
retryAttempts: 3
};

모니터링 및 로깅

// utils/monitoring.ts
export class SealMonitoring {
static logEncryption(encryptionId: string, recipient: string) {
console.log(`[SEAL] ${recipient}에 대해 데이터 ${encryptionId} 암호화됨`);
// 모니터링 서비스로 전송
}

static logDecryption(encryptionId: string, success: boolean) {
console.log(`[SEAL] 복호화 ${encryptionId}: ${success ? '성공' : '실패'}`);
}

static logKeyServerHealth(serverUrl: string, status: string) {
console.log(`[SEAL] 키 서버 ${serverUrl}: ${status}`);
}
}

리소스 및 다음 단계

공식 문서

커뮤니티 및 지원

  • Sui Discord: 커뮤니티 지원을 위한 #seal 채널 참여
  • GitHub Issues: 버그 신고 및 기능 요청
  • 개발자 포럼: 토론을 위한 Sui 커뮤니티 포럼

탐구할 고급 주제

  1. 커스텀 접근 정책: Move 컨트랙트로 복잡한 인증 로직 구축
  2. 크로스 체인 통합: 다른 블록체인 네트워크와 함께 Seal 사용
  3. 엔터프라이즈 키 관리: 자체 키 서버 인프라 설정
  4. 감사 및 컴플라이언스: 규제 환경을 위한 로깅 및 모니터링 구현

샘플 애플리케이션

  • 보안 채팅 앱: Seal을 사용한 엔드 투 엔드 암호화 메시징
  • 문서 관리: 접근 제어가 있는 엔터프라이즈 문서 공유
  • 디지털 권한 관리: 사용 정책이 있는 콘텐츠 배포
  • 프라이버시 보존 분석: 암호화된 데이터 처리 워크플로우

결론

Seal은 Web3에서 프라이버시와 암호화를 인프라 수준의 관심사로 만드는 근본적인 변화를 나타냅니다. 신원 기반 암호화, 임계값 보안, 프로그래밍 가능한 접근 제어를 결합하여 개발자들에게 진정으로 안전하고 탈중앙화된 애플리케이션을 구축할 수 있는 강력한 도구를 제공합니다.

Seal로 구축하는 주요 장점은 다음과 같습니다:

  • 단일 장애점 없음: 분산된 키 서버가 중앙 권한을 제거
  • 프로그래밍 가능한 보안: 스마트 컨트랙트 기반 접근 정책이 유연한 인증 제공
  • 개발자 친화적: TypeScript SDK가 기존 Web3 도구와 원활하게 통합
  • 스토리지 무관: Walrus, IPFS 또는 모든 스토리지 솔루션과 작동
  • 프로덕션 준비: 엔터프라이즈 보안 표준으로 Mysten Labs에서 구축

사용자 데이터 보안, 구독 모델 구현, 복잡한 다자간 애플리케이션 구축 등 무엇을 하든, Seal은 자신감을 가지고 구축하는 데 필요한 암호화 프리미티브와 접근 제어 인프라를 제공합니다.

오늘부터 구축을 시작하고, 프라이버시를 공공 인프라의 기본 부분으로 만드는 개발자들의 성장하는 생태계에 참여하세요.


구축을 시작할 준비가 되셨나요? @mysten/seal을 설치하고 이 튜토리얼의 예제로 실험을 시작하세요. 탈중앙화 웹은 프라이버시와 보안을 우선시하는 애플리케이션을 기다리고 있습니다.

Talus Nexus: 온체인 AI 에이전트 경제를 위한 워크플로 레이어 평가

· 약 7분
Dora Noda
Software Engineer

TL;DR

  • Talus는 Nexus를 구축하고 있다. Move 기반 프레임워크로 온체인·오프체인 도구를 검증 가능한 DAG(유향 비순환 그래프) 워크플로로 구성하며, 현재는 신뢰된 "Leader" 서비스가 조정하고 향후에는 보안 엔클레이브와 분산화를 목표로 한다.
  • 스택은 새롭게 부상하는 에이전트 경제에 초점을 맞춰 도구 레지스트리, 결제 레일, 가스 예산, 마켓플레이스를 통합함으로써 도구 제작자와 에이전트 운영자가 사용량을 감사 가능한 형태로 수익화할 수 있게 한다.
  • Cosmos SDK와 Move VM으로 설계된 전용 체인 Protochain 로드맵이 공개되어 있지만, 현재 운용 중인 조정 레이어는 여전히 Sui이며 Sui + Walrus 스토리지 통합이 실서비스 기반을 이룬다.
  • 토큰 계획은 변화 중이다. 과거의 TAI개념과,결제스테이킹우선순위부여를위한생태계토큰TAI 개념과, 결제·스테이킹·우선순위 부여를 위한 생태계 토큰 US를 제시한 2025년 라이트페이퍼가 공존한다.
  • 실행 리스크는 Leader 분산화, 토큰 이코노미 확정, Protochain 성능 입증에 집중되어 있으며, Sui·Walrus·오프체인 서비스 전반에서 개발자 경험을 유지하는 것이 중요하다.

Talus가 하는 일과 하지 않는 일

Talus는 순수한 AI 추론 마켓이 아니라 자율 에이전트를 위한 조정·정산 레이어로 자리매김한다. 핵심 제품인 Nexus는 도구 호출, 외부 API, 온체인 로직을 Sui Move로 표현된 DAG 워크플로에 패키징한다. 설계는 검증 가능성, 능력 기반 접근 제어, 스키마 기반 데이터 흐름을 강조하여 각 도구 호출을 온체인에서 감사할 수 있게 한다. Talus는 Tool Marketplace, Agent Marketplace, Agent-as-a-Service 등 시장 레이어를 제공해 에이전트 기능의 발굴과 수익화를 지원한다.

반면 Talus는 자체 대규모 언어 모델이나 GPU 네트워크를 운영하지 않는다. 도구 제작자가 기존 API나 서비스(OpenAI, 벡터 검색, 트레이딩 시스템, 데이터 제공 등)를 래핑하여 Nexus에 등록하는 모델이다. 따라서 Ritual이나 Bittensor 같은 계산 네트워크와 보완 관계를 이루며, 이들은 Nexus 워크플로 안의 도구로 편입될 수 있다.

아키텍처: 온체인 제어, 오프체인 실행

온체인 (Sui Move)

온체인 구성 요소는 Sui에 배포되어 조정 플레인을 제공한다.

  • 워크플로 엔진 – DAG 의미 체계는 엔트리 그룹, 분기 변형, 동시성 검사를 포함하며 실행 전 경합 조건을 방지하기 위해 정적 검증을 수행한다.
  • 프리미티브ProofOfUID는 패키지 간 인증 메시징을 느슨한 결합으로 지원하고, OwnerCap/CloneableOwnerCap은 능력 기반 권한을 제공한다. ProvenValue, NexusData 구조체는 데이터를 인라인 또는 원격 스토리지 참조로 전달하는 방식을 정의한다.
  • Default TAP (Talus Agent Package) – 워크시트(증명 객체) 생성, 워크플로 실행 트리거, 도구 결과 확인을 Nexus Interface v1에 따라 시연하는 레퍼런스 에이전트다.
  • 도구 레지스트리와 스팸 억제 – 도구 게시 시 시간 잠금 담보를 예치해야 하며, 이는 스팸을 억제하면서 퍼미션리스 등록을 유지한다.
  • 가스 서비스 – 공유 객체가 도구별 가격, 사용자 가스 예산, 만료 또는 사용 제한이 있는 가스 티켓을 저장한다. 이벤트는 각 청구를 기록해 도구 소유자와 Leader에 대한 정산을 감사 가능하게 만든다.

오프체인 Leader

Talus가 운영하는 Leader 서비스는 Sui 이벤트를 구독하고 도구 스키마를 가져와 오프체인 실행(LLM, API, 계산 작업)을 오케스트레이션한다. 선언된 스키마에 따라 입출력을 검증한 뒤 결과를 온체인에 기록한다. Leader 권한은 Sui 객체로 표현되며, 실패한 트랜잭션은 해당 권한을 "손상"시켜 다음 에폭까지 재사용을 막는다. Talus는 TEE, 다중 운영자, 궁극적으로 퍼미션리스 참여를 통해 이 경로를 강화할 계획이다.

스토리지와 검증성

Mysten Labs의 분산 스토리지 계층인 Walrus는 에이전트 메모리, 모델 아티팩트, 대용량 데이터셋을 저장한다. Nexus는 결정적 제어 플레인으로 Sui를 유지하고, 무거운 페이로드는 Walrus로 오프로드한다. 공개 자료에는 낙관적 검증, 영지식 검증, 신뢰 실행 등 복수의 검증 모드를 워크플로 요구에 맞춰 선택할 수 있다고 명시돼 있다.

개발자 경험과 초기 제품

Talus는 Rust 기반 SDK, CLI 도구, DAG 구축·LLM 통합·도구 보안을 안내하는 문서를 제공한다. OpenAI 챗 컴플리션, X(트위터) 연동, Walrus 어댑터, 수학 유틸리티 등 표준 도구 카탈로그는 프로토타이핑 장벽을 낮춘다. 소비자 영역에서는 IDOL.fun(에이전트 간 예측 시장), AI Bae(게임화된 AI 컴패니언)가 증명 지점이자 확산 채널 역할을 한다. 노코드 빌더인 Talus Vision은 비개발자를 위한 워크플로 설계 추상화 마켓플레이스로 자리매김하고 있다.

경제 설계, 토큰 계획, 가스 처리

현재 Sui 배포에서는 사용자가 SUI로 워크플로 비용을 충전한다. 가스 서비스는 예산을 도구별 티켓으로 변환하고, 만료·범위 제한을 적용하며, 온체인에서 정산 가능한 청구 로그를 남긴다. 도구 소유자가 가격을 설정하고 Leader도 동일한 정산 흐름으로 보상을 받는다. Leader가 실행 성공 후 예산을 청구할 수 있으므로 이용자는 운영자를 신뢰해야 하지만, 이벤트 로그를 통해 감사할 수 있다.

토큰 설계는 확정되지 않았다. 외부 설명 자료는 과거의 TAI를언급하지만,Talus2025라이트페이퍼는공급량100억개의생태계토큰TAI**를 언급하지만, Talus 2025 라이트페이퍼는 공급량 100억 개의 생태계 토큰 **US를 제안한다. 역할은 도구·Leader 결제 매개, 서비스 보증을 위한 스테이킹, 우선권 부여 등이며, 실행 시 초과 지불된 SUI를 시장 교환으로 $US로 전환할 수 있다고 시사한다. 최종 토크노믹스가 확정될 때까지는 잠정 정보로 간주해야 한다.

자금 조달, 팀, 파트너십

Talus는 2024년 말 Polychain이 주도한 600만 달러 전략 라운드(총 900만 달러 조달, 1억 5000만 달러 가치평가)를 발표했다. 자금은 Nexus 고도화, 소비자 앱 인큐베이션, 에이전트 전용 L1인 Protochain 구축에 투입된다. 공개 자료에 따르면 **Mike Hanono(CEO)**와 **Ben Frigon(COO)**가 핵심 경영진이다. Sui와 Walrus 통합 발표는 Mysten Labs 인프라가 현재 실행 환경임을 강조한다.

경쟁 구도

  • Ritual은 분산형 AI 계산(Infernet)과 EVM 통합에 집중하며, 워크플로 오케스트레이션보다 검증 가능한 추론을 강조한다.
  • **Autonolas(Olas)**는 오프체인 에이전트 서비스를 온체인 인센티브로 조정한다. 에이전트 경제라는 비전은 공유하지만 Move 기반 DAG 실행 레이어는 없다.
  • Fetch.ai는 Agentverse와 uAgents로 자율 서비스를 연결하지만, Talus는 각 워크플로 단계의 온체인 검증과 내장된 가스 회계를 통해 차별화한다.
  • Bittensor는 TAO 서브넷을 통해 ML 모델 기여를 보상하는 계산 마켓으로, Nexus 도구로 연동될 수는 있으나 Talus가 목표로 하는 수익화 레일은 제공하지 않는다.

결국 Talus는 워크플로의 조정 및 정산 플레인을 담당하고, 원시 계산과 추론은 특화 네트워크가 도구로 연결되는 구조를 취한다.

주요 리스크와 미해결 과제

  1. Leader 신뢰 – TEE 및 다중 운영자 지원이 도입되기 전까지 개발자는 Talus Leader가 정확히 실행해 결과를 반환한다고 신뢰해야 한다.
  2. 토큰 불확실성 – 명칭과 메커니즘이 TAI에서TAI에서 US로 바뀌었으며 공급 일정, 배분, 스테이킹 경제가 확정되지 않았다.
  3. Protochain 실행력 – Cosmos SDK와 Move VM을 결합한다고 하지만, 코드 저장소·벤치마크·보안 감사가 아직 공개되지 않았다.
  4. 도구 품질과 스팸 – 담보 요구가 스팸을 억제하지만, 장기적으로는 스키마 검증, 가용성 보장, 오프체인 결과에 대한 분쟁 해결이 중요하다.
  5. UX 복잡성 – Sui, Walrus, 다양한 오프체인 API를 조정하는 운영 부담이 있으며, SDK와 노코드 도구가 이를 충분히 추상화해야 한다.

2025~2026년 주목할 마일스톤

  • Leader 로드맵 공개: TEE 강화, 슬래싱 규칙, 추가 운영자 공개 온보딩.
  • Tool Marketplace 확대: 등록 도구 수, 가격 모델, 품질 지표(가동률, SLA 투명성).
  • IDOL.fun, AI Bae, Talus Vision 채택 지표: 에이전트 네이티브 경험 수요를 가늠하는 선행지표.
  • Sui + Walrus에서 대규모 워크플로 실행 시 성능 데이터: 지연 시간, 처리량, 가스 소비.
  • 최종 토크노믹스 공개: 공급 일정, 스테이킹 보상, SUI→$US 전환 경로.
  • Protochain 코드 저장소, 테스트넷, IBC 등 상호운용 계획 공개로 전용 체인 논리를 검증.

빌더·운영자가 참여하는 방법

  • 빠르게 프로토타입 – Default TAP과 표준 도구(OpenAI, X, Walrus)를 결합해 데이터 수집→요약→온체인 액션을 수행하는 3노드 DAG를 구성한다.
  • 특화 도구 수익화 – 독자 API(금융 데이터, 컴플라이언스 검증, 맞춤형 LLM 등)를 Nexus 도구로 래핑하고 가격을 설정하며, 만료·사용 제한이 있는 가스 티켓을 발행해 수요를 조절한다.
  • Leader 참여 대비 – 스테이킹 요건, 슬래싱 로직, 장애 대응 문서를 추적해 네트워크 개방 시 추가 Leader로 참여할 준비를 한다.
  • 소비자 플라이휠 평가 – IDOL.fun과 AI Bae의 유지율과 지출을 분석해 에이전트 중심 소비자 제품이 도구 수요 확대로 이어질 수 있는지 검증한다.

결론

Talus는 Move 기반 검증 가능한 워크플로, 능력 제어형 도구 구성, 명시적 수익화 레일을 결합해 온체인 에이전트 경제의 유망한 청사진을 제시한다. 향후 성패는 신뢰형 Leader를 넘어 확장할 수 있는지, 지속 가능한 토큰 인센티브를 확정할 수 있는지, Protochain이 Sui에서의 학습을 전용 실행 환경으로 확장할 수 있는지에 달려 있다. 투명한 정산과 조합 가능한 에이전트 워크플로가 필요한 빌더라면 Talus가 이러한 과제를 얼마나 빨리 해소하는지 주시하며 Nexus를 검토 목록에 올려둘 가치가 있다.

Sui 위의 Seal: 온체인 접근 제어를 위한 프로그래머블 시크릿 레이어

· 약 4분
Dora Noda
Software Engineer

퍼블릭 블록체인은 모든 참여자에게 동기화된 감사 가능한 원장을 제공하는 대신, 기본적으로 모든 데이터를 노출합니다. 2025년 9월 3일 Sui 메인넷에서 가동된 Seal은 온체인 정책 로직과 분산형 키 관리 계층을 결합하여, 어떤 페이로드를 누가 복호화할 수 있는지 Web3 빌더가 세밀하게 제어할 수 있도록 합니다.

요약

  • 무엇인가: Seal은 Sui 스마트 컨트랙트가 온체인에서 복호화 정책을 강제하고, 클라이언트는 아이덴티티 기반 암호화(IBE)로 데이터를 암호화한 뒤 임계값 키 서버에 의존해 키를 파생받을 수 있게 해주는 시크릿 관리 네트워크입니다.
  • 왜 중요한가: 맞춤형 백엔드나 불투명한 오프체인 스크립트 대신, 프라이버시와 접근 제어를 1급 Move 프리미티브로 다룰 수 있습니다. 암호문은 어디에나 저장할 수 있고(가장 자연스러운 조합은 Walrus) 여전히 읽기 권한을 제어할 수 있습니다.
  • 누구에게 필요한가: 토큰 게이팅 콘텐츠, 타임락 공개, 프라이빗 메시징, 정책 인지형 AI 에이전트를 제공하는 팀은 Seal SDK를 연결해 암호 인프라가 아닌 제품 로직에 집중할 수 있습니다.

정책 로직은 Move 안에 존재

Seal 패키지에는 특정 아이덴티티 문자열에 대해 누가 어떤 조건으로 키를 요청할 수 있는지 정의하는 seal_approve* Move 함수가 포함됩니다. 정책은 NFT 소유, 허용 목록, 타임락, 맞춤 역할 시스템을 조합할 수 있습니다. 사용자가 복호화를 요청하면 키 서버는 Sui 풀노드 상태를 조회해 정책을 평가하고, 체인이 승인한 경우에만 응답합니다.

접근 규칙이 온체인 패키지의 일부이기 때문에 투명하고 감사를 받을 수 있으며, 다른 스마트 컨트랙트 코드와 함께 버전 관리가 가능합니다. 거버넌스 업데이트도 커뮤니티 검토와 온체인 이력을 거치면서 일반적인 Move 업그레이드와 동일하게 배포할 수 있습니다.

임계값 암호화가 키를 관리

Seal은 애플리케이션이 정의한 아이덴티티에 데이터를 암호화합니다. 개발자가 선택한 독립 키 서버 위원회가 IBE 마스터 비밀을 공유합니다. 정책 검증을 통과하면 각 서버는 요청된 아이덴티티에 대한 키 조각을 파생합니다. t개의 서버가 응답하면 클라이언트는 조각을 결합해 사용할 수 있는 복호 키를 생성합니다.

위원회 구성원(Ruby Nodes, NodeInfra, Overclock, Studio Mirai, H2O Nodes, Triton One, Mysten의 Enoki 서비스 등)과 임계값을 선택해 가용성과 기밀성 사이의 트레이드오프를 조정할 수 있습니다. 더 높은 가용성이 필요하면 더 큰 위원회와 낮은 임계값을 택하고, 프라이버시 보장을 강화하고 싶다면 더 엄격한 쿼럼과 퍼미션형 제공업체를 선택하세요.

개발자 경험: SDK와 세션 키

Seal은 암호화/복호화 흐름, 아이덴티티 포맷팅, 배치 처리를 지원하는 TypeScript SDK(npm i @mysten/seal)를 제공합니다. 또한 세션 키를 발급해 애플리케이션이 반복적으로 접근할 때 지갑에 승인 요청이 쏟아지는 일을 막아줍니다. 고급 워크플로에서는 Move 컨트랙트가 전용 모드로 온체인 복호화를 요청해, 에스크로 공개나 MEV 저항 경매 같은 로직을 스마트 컨트랙트에서 직접 실행할 수 있습니다.

Seal은 저장소에 구애받지 않으므로, 검증 가능한 Blob 저장소를 위해 Walrus와 결합하거나, 필요 시 IPFS 또는 중앙화 스토리지와 함께 사용할 수 있습니다. 암호화 경계와 정책 적용은 암호문이 어디에 있든 데이터와 함께 이동합니다.

Seal 설계 시 베스트 프랙티스

  • 가용성 리스크 모델링: 2-of-3, 3-of-5 같은 임계값은 그대로 가동 시간 보장과 연결됩니다. 운영 환경에서는 공급자를 혼합하고, 텔레메트리를 모니터링하며, 중요한 워크플로를 맡기기 전에 SLA를 체결하세요.
  • 상태 변동에 주의: 정책 평가는 풀노드의 dry_run 호출에 의존합니다. 빠르게 변하는 카운터나 체크포인트 내 순서에 의존하는 규칙을 피해서 서버 간 승인 불일치를 방지해야 합니다.
  • 키 위생 계획: 파생 키는 클라이언트 측에 존재합니다. 로깅을 계측하고 세션 키를 순환시키며, 필요하다면 엔벨로프 암호화(Seal로 큰 페이로드를 암호화하는 대칭 키를 보호)를 도입해 디바이스가 침해되었을 때의 피해 범위를 줄이세요.
  • 회전을 위한 설계: 암호문의 위원회 구성은 암호화 시점에 고정됩니다. 공급자를 교체하거나 신뢰 가정을 조정해야 할 경우를 대비해, 새로운 위원회로 데이터를 재암호화하는 업그레이드 경로를 마련해 두세요.

앞으로의 로드맵

Seal의 로드맵에는 검증자 운영 MPC 서버, DRM 스타일 클라이언트 도구, 포스트 양자 KEM 옵션 등이 포함됩니다. AI 에이전트, 프리미엄 콘텐츠, 규제 데이터 흐름을 탐색 중인 빌더에게 이번 릴리스는 이미 명확한 청사진을 제공합니다. Move에 정책을 작성하고, 다양한 키 위원회를 구성하여 Sui의 신뢰 경계 안에서 사용자 프라이버시를 존중하는 암호화 경험을 전달하세요.

다음 출시에서 Seal 도입을 고려하고 있다면, 먼저 2-of-3 오픈 위원회와 NFT 게이팅 정책을 단순히 프로토타입하고, 애플리케이션의 위험 프로파일에 맞는 공급자 조합과 운영 통제를 향해 반복적으로 다듬어 가는 것이 좋습니다.

Sui Paymaster로 가스 없는 경험 구축: 아키텍처 및 구현 가이드

· 약 8분
Dora Noda
Software Engineer

사용자가 네이티브 토큰(SUI)을 전혀 보유하지 않아도 dApp과 원활하게 상호작용할 수 있는 세상을 상상해 보세요. 이제 이는 먼 꿈이 아닙니다. Sui의 Gas Station(또는 Paymaster) 덕분에 개발자는 사용자를 대신해 가스 비용을 부담할 수 있어, Web3에 처음 진입하는 사용자들의 가장 큰 장벽을 완전히 제거하고 진정한 무마찰 온체인 경험을 제공할 수 있습니다.

이 글에서는 dApp을 가스 없는 형태로 업그레이드하는 전체 가이드를 제공합니다. Sui Paymaster의 핵심 개념, 아키텍처, 구현 패턴 및 모범 사례를 깊이 있게 살펴보겠습니다.

1. 배경 및 핵심 개념: 스폰서드 트랜잭션이란?

블록체인에서는 모든 트랜잭션에 네트워크 수수료, 즉 “가스”가 필요합니다. Web2의 매끄러운 경험에 익숙한 사용자에게 이는 큰 인지적·운영상의 장벽이 됩니다. Sui는 프로토콜 수준에서 스폰서드 트랜잭션이라는 개념으로 이 문제를 해결합니다.

핵심 아이디어는 간단합니다: 한 당사자(스폰서)가 다른 당사자(사용자)의 트랜잭션에 대한 SUI 가스 비용을 대신 지불하도록 허용합니다. 이렇게 하면 사용자가 지갑에 SUI가 전혀 없어도 온체인 행동을 성공적으로 시작할 수 있습니다.

Paymaster ≈ Gas Station

Sui 생태계에서 트랜잭션을 스폰서하는 로직은 일반적으로 Gas Station 또는 Paymaster라 불리는 오프체인·온체인 서비스가 담당합니다. 주요 역할은 다음과 같습니다.

  1. 트랜잭션 평가: 사용자의 가스 없는 트랜잭션 데이터(GasLessTransactionData)를 받습니다.
  2. 가스 제공: 트랜잭션에 필요한 가스 비용을 잠그고 할당합니다. 이는 보통 다수의 SUI Coin 객체로 구성된 가스 풀을 통해 관리됩니다.
  3. 스폰서 서명 생성: 스폰서를 승인한 뒤, Gas Station은 자신의 개인키(SponsorSig)로 트랜잭션에 서명하여 비용을 지불하겠다는 의사를 인증합니다.
  4. 서명된 트랜잭션 반환: 이제 가스 데이터와 스폰서 서명이 포함된 TransactionData를 반환해 사용자의 최종 서명을 기다립니다.

요컨대, Gas Station은 dApp 사용자의 “차량”(트랜잭션)이 Sui 네트워크 위를 부드럽게 달릴 수 있도록 연료를 공급하는 역할을 합니다.

2. 고수준 아키텍처 및 상호작용 흐름

가스 없는 트랜잭션은 사용자, dApp 프론트엔드, Gas Station, Sui Full Node 간의 협업으로 이루어집니다. 흐름은 다음과 같습니다:

흐름 세부 설명

  1. 사용자가 dApp UI에서 행동을 수행하면 가스 정보가 없는 트랜잭션 데이터 패키지가 생성됩니다.
  2. dApp은 이 데이터를 지정된 Gas Station에 보내 스폰서십을 요청합니다.
  3. Gas Station은 요청의 유효성을 검증(예: 사용자가 스폰서 대상인지 확인)하고, 가스 코인을 채워 서명한 뒤 반쯤 완성된 트랜잭션을 dApp에 반환합니다.
  4. 사용자는 지갑에서 전체 트랜잭션 상세(예: “NFT 하나 구매”)를 확인하고 최종 서명을 제공합니다. 이는 사용자가 자신의 행동에 대한 동의를 유지하도록 하는 중요한 단계입니다.
  5. dApp은 사용자와 스폰서의 서명이 모두 포함된 완전한 트랜잭션을 Sui Full Node에 전송합니다.
  6. 트랜잭션이 체인에 최종 확정되면 Gas Station은 온체인 이벤트나 영수증을 청취해 이를 확인하고, 필요 시 웹훅을 통해 dApp 백엔드에 성공을 알릴 수 있습니다.

3. 세 가지 핵심 상호작용 모델

비즈니스 요구에 맞게 아래 세 모델을 개별적으로 혹은 조합하여 사용할 수 있습니다.

모델 1: 사용자‑주도 → 스폰서‑승인 (가장 일반적)

대부분의 dApp 상호작용에 적합한 표준 모델입니다.

  1. 사용자가 GasLessTransactionData를 생성: dApp 내에서 행동을 수행합니다.
  2. 스폰서가 GasData를 추가하고 서명: dApp 백엔드가 트랜잭션을 Gas Station에 보내면, 스폰서는 가스 코인을 첨부하고 서명합니다.
  3. 사용자가 최종 서명: 사용자는 지갑에서 전체 트랜잭션을 확인하고 서명합니다. 이후 dApp이 네트워크에 전송합니다.

보안과 사용자 경험 사이의 균형이 뛰어납니다.

모델 2: 스폰서‑주도 에어드롭/인센티브

에어드롭, 사용자 인센티브, 배치 자산 배포에 최적화된 모델입니다.

  1. 스폰서가 TransactionData를 미리 채우고 서명: 프로젝트 팀이 대부분의 트랜잭션을 사전에 구성(예: 특정 주소에 NFT 에어드롭)하고 스폰서 서명을 붙입니다.
  2. 사용자의 두 번째 서명만으로 실행: 사용자는 “미리 승인된” 트랜잭션에 한 번만 서명하면 됩니다.

클릭 한 번으로 보상을 청구하거나 작업을 완료할 수 있어 전환율이 크게 상승합니다.

모델 3: 와일드카드 GasData (신용 한도 모델)

보다 유연하고 권한 기반의 모델입니다.

  1. 스폰서가 GasData 객체를 전송: 스폰서는 예산이 정해진 가스 코인 객체를 생성해 직접 사용자에게 소유권을 이전합니다.
  2. 사용자는 예산 한도 내에서 자유롭게 사용: 사용자는 해당 가스 코인을 이용해 예산과 유효 기간 내에서 원하는 트랜잭션을 자유롭게 실행할 수 있습니다.
  3. 가스 코인 반환: 소진되거나 만료되면 가스 코인 객체는 자동 파괴되거나 스폰서에게 반환되도록 설계할 수 있습니다.

한정된 시간·예산의 “가스 신용카드”를 제공하는 형태로, 게임 시즌 동안 무료 플레이 경험을 제공하는 등 높은 자율성이 요구되는 시나리오에 적합합니다.

4. 전형적인 적용 시나리오

Sui Paymaster는 가스 비용 문제를 해결할 뿐 아니라 비즈니스 로직과 깊게 결합해 새로운 가능성을 열어줍니다.

시나리오 1: 페이월

콘텐츠 플랫폼이나 dApp 서비스가 특정 조건(예: VIP NFT 보유, 멤버십 레벨) 충족 시에만 기능을 제공하도록 할 때 활용합니다.

  • 흐름: 사용자가 행동을 요청 → dApp 백엔드가 사용자의 자격(NFT 보유 등) 검증 → 자격이 있으면 Paymaster에 가스 스폰서를 요청, 없으면 서명 요청을 거부.
  • 장점: 봇 및 남용에 강합니다. 스폰서십 결정이 백엔드에서 이루어지므로 악의적인 사용자가 가스 풀을 고갈시키기 어렵습니다.

시나리오 2: 원클릭 체크아웃

이커머스나 인게임 구매 시 결제 과정을 최소화하고 싶을 때 유용합니다.

  • 흐름: 사용자가 “지금 구매” 버튼을 클릭 → dApp이 비즈니스 로직(transfer_nft_to_user)을 포함한 트랜잭션을 구성 → 사용자는 비즈니스 트랜잭션만 서명하고, 가스는 스폰서가 부담합니다.
  • 장점: order_id와 같은 비즈니스 파라미터를 ProgrammableTransactionBlock에 직접 인코딩해 온체인에서 정확히 주문을 추적할 수 있습니다.

시나리오 3: 데이터 어트리뷰션

정확한 데이터 추적은 비즈니스 최적화에 필수적입니다.

  • 흐름: 트랜잭션을 구성할 때 고유 식별자(order_hash)를 파라미터나 실행 시 발생하는 이벤트에 기록합니다.
  • 장점: Gas Station이 성공 영수증을 받으면 이벤트 또는 트랜잭션 데이터를 파싱해 order_hash를 추출할 수 있어 온체인 상태 변화와 백엔드 주문·사용자 행동을 정확히 매핑할 수 있습니다.

5. 코드 스켈레톤 (Rust SDK 기반)

아래는 핵심 상호작용 흐름을 보여주는 간단한 Rust 코드 예시입니다.

// Assume tx_builder, sponsor, and wallet have been initialized

// Step 1: On the user or dApp side, construct a gas-less transaction
let gasless_transaction_data = tx_builder.build_gasless_transaction_data(false)?;

// Step 2: On the Sponsor (Gas Station) side, receive the gasless_transaction_data,
// fill it with a Gas Coin, and return the transaction data with the Sponsor's signature.
// The sponsor_transaction_block function handles gas allocation and signing internally.
let sponsored_transaction = sponsor.sponsor_transaction_block(gasless_transaction_data, user_address, gas_budget)?;

// Step 3: The dApp sends the sponsored_transaction back to the user,
// who signs and executes it with their wallet.
let response = wallet.sign_and_execute_transaction_block(&sponsored_transaction)?;

전체 구현은 공식 Sui 문서의 **Gas Station 튜토리얼**을 참고하세요. 여기에는 바로 사용할 수 있는 코드 예제가 포함되어 있습니다.

6. 위험 요소 및 보호 방안

강력하지만 프로덕션 환경에 Gas Station을 배포할 때는 다음 위험 요소를 신중히 고려해야 합니다.

  • 이중 서명(Equivocation) 위험: 악의적인 사용자가 동일한 가스 코인을 병렬로 여러 트랜잭션에 사용하려 할 수 있습니다. 이를 방지하려면 사용자·트랜잭션당 고유 가스 코인을 할당하고, 블랙리스트와 요청 속도 제한(rate‑limiting)을 적용합니다.
  • 가스 풀 관리: 동시성이 높은 상황에서 하나의 대형 가스 코인은 성능 병목이 될 수 있습니다. 서비스는 대형 SUI 코인을 자동으로 다수의 소액 가스 코인으로 분할하고, 사용 후 효율적으로 회수할 수 있어야 합니다. Shinami와 같은 전문 Gas Station 제공업체는 이러한 기능을 관리형으로 제공합니다.
  • 인증 및 속도 제한: 엄격한 인증·속도 제한 정책을 수립해야 합니다. 예를 들어, 사용자 IP, 지갑 주소, API 토큰 기반으로 스폰서십 한도·빈도를 관리해 악의적인 대량 소모를 방지합니다.

7. 생태계 도구

Sui 생태계에는 Paymaster 개발·배포를 간소화하는 다양한 도구가 이미 준비되어 있습니다.

  • 공식 SDK (Rust / TypeScript): sponsor_transaction_block() 같은 고수준 API를 제공해 통합 복잡도를 크게 낮춥니다.
  • Shinami Gas Station: 가스 코인 자동 분할·회수, 상세 메트릭 모니터링, 웹훅 알림 등을 포함한 올인원 관리형 서비스를 제공해 개발자는 비즈니스 로직에 집중할 수 있습니다.
  • Enoki / Mysten Demo: 커뮤니티와 Mysten Labs가 제공하는 오픈소스 Paymaster 구현체는 자체 서비스를 구축할 때 좋은 참고 자료가 됩니다.

8. 구현 체크리스트

dApp을 가스 없는 시대에 맞게 업그레이드할 준비가 되셨나요? 시작하기 전에 아래 체크리스트를 확인하세요.

  • 펀딩 흐름 설계: 스폰서의 자금 출처, 예산, 보충 전략을 정의하고 가스 풀 잔액·소모율 등 핵심 지표에 대한 모니터링 및 알림을 설정합니다.
  • 어트리뷰션 필드 예약: 트랜잭션 파라미터 설계 시 order_id, user_id 등 비즈니스 식별자를 위한 필드를 미리 확보합니다.
  • 남용 방지 정책 적용: 실서비스 이전에 반드시 인증, 속도 제한, 로깅 메커니즘을 구현합니다.
  • 테스트넷에서 리허설: 자체 서비스를 구축하든 서드파티 Gas Station을 연동하든, 반드시 테스트넷·데브넷에서 동시성·스트레스 테스트를 충분히 수행합니다.
  • 지속적인 최적화: 출시 후에도 트랜잭션 성공률, 실패 원인, 가스 비용 등을 지속적으로 추적·분석해 예산·전략을 조정합니다.

결론

Sui Paymaster(또는 Gas Station)는 단순히 사용자의 가스 비용을 대신 부담하는 도구를 넘어, “SUI 없이 온체인” 사용자 경험과 “주문 수준 온체인 어트리뷰션”을 하나의 원자적 트랜잭션 안에서 결합하는 강력한 패러다임을 제공합니다. 이는 Web2 사용자가 Web3에 진입하도록 돕고, 개발자에게는 비즈니스 맞춤형 로직을 구현할 전례 없는 유연성을 부여합니다.

Sui 네트워크의 현재 낮은 가스 비용과 점점 성숙해지는 툴 체인 덕분에, 이제 dApp의 결제·상호작용 흐름을 가스 없는 시대로 전환하기에 최적의 시점입니다.

BlockEden.xyz에서 SUI 토큰 스테이킹 도입: 원클릭 간편성으로 2.08% APY 획득

· 약 5분
Dora Noda
Software Engineer

우리는 SUI 토큰 스테이킹을 BlockEden.xyz에 출시하게 되어 기쁩니다! 오늘부터 플랫폼을 통해 직접 SUI 토큰을 스테이킹하고 2.08% APY를 얻으며 SUI 네트워크의 보안과 탈중앙화에 기여할 수 있습니다.

새로운 점: 원활한 SUI 스테이킹 경험

새로운 스테이킹 기능은 직관적인 인터페이스로 기관 수준의 스테이킹을 모두에게 제공하여 보상을 손쉽게 받을 수 있게 합니다.

주요 기능

원클릭 스테이킹
SUI 스테이킹이 그 어느 때보다 간편합니다. Suisplash 지갑을 연결하고 스테이킹할 SUI 양을 입력한 뒤 트랜잭션을 승인하면 복잡한 절차 없이 즉시 보상을 받을 수 있습니다.

경쟁력 있는 보상
스테이킹한 SUI에 대해 2.08% APY를 제공합니다. 8% 수수료는 투명하게 공개되어 정확히 어떤 비용이 발생하는지 알 수 있습니다. 보상은 각 epoch이 끝날 때마다 일일 단위로 분배됩니다.

신뢰받는 밸리데이터
이미 2,200만 SUI 이상을 스테이킹한 커뮤니티에 합류하세요. 엔터프라이즈급 인프라가 지원하는 검증 서비스는 99.9% 가동률을 보장합니다.

유연한 관리
스테이킹은 즉시 이루어지며 보상이 바로 누적됩니다. 필요 시 언제든 언스테이킹을 시작할 수 있으며, SUI 네트워크의 24~48시간 언본딩 기간이 지나면 자금을 사용할 수 있습니다. 대시보드에서 실시간으로 스테이크와 보상을 추적할 수 있습니다.

왜 BlockEden.xyz에서 SUI를 스테이킹해야 할까요?

밸리데이터 선택은 중요한 결정입니다. BlockEden.xyz가 스테이킹에 적합한 이유를 소개합니다.

신뢰할 수 있는 안정성

BlockEden.xyz는 설립 이래 블록체인 인프라의 핵심 역할을 해왔습니다. 우리의 밸리데이터 인프라는 엔터프라이즈 애플리케이션을 지원하며 여러 네트워크에서 뛰어난 가동률을 유지해 일관된 보상 생성을 보장합니다.

투명하고 공정함

숨겨진 비용이 없습니다. 보상에 대한 8% 수수료만 명시되어 있어 정확히 예상할 수 있습니다. 실시간 리포팅으로 스테이킹 성과를 모니터링하고 온체인에서 밸리데이터 활동을 검증할 수 있습니다.

  • 오픈 밸리데이터 주소: 0x3b5664bb0f8bb4a8be77f108180a9603e154711ab866de83c8344ae1f3ed4695

원활한 통합

계정을 만들 필요 없이 지갑에서 바로 스테이킹할 수 있습니다. Suisplash 지갑에 최적화된 깔끔하고 직관적인 인터페이스는 초보자와 전문가 모두에게 적합합니다.

시작하는 방법

BlockEden.xyz에서 SUI 스테이킹을 시작하는 데는 2분도 채 걸리지 않습니다.

1단계: 스테이킹 페이지 방문

blockeden.xyz/dash/stake 로 이동하면 계정 등록 없이 바로 진행할 수 있습니다.

2단계: 지갑 연결

아직 설치하지 않았다면 Suisplash 지갑을 설치하세요. 스테이킹 페이지의 “Connect Wallet” 버튼을 클릭하고 지갑 확장 프로그램에서 연결을 승인하면 SUI 잔액이 자동으로 표시됩니다.

3단계: 스테이크 금액 선택

스테이킹할 SUI 양을 입력합니다 (최소 1 SUI). “MAX” 버튼을 눌러 전체 잔액을 한 번에 스테이킹하고 가스 비용을 위해 약간 남겨둘 수 있습니다. 요약 화면에 스테이크 금액과 예상 연간 보상이 표시됩니다.

4단계: 확인 및 보상 시작

“Stake SUI” 버튼을 클릭하고 지갑에서 최종 트랜잭션을 승인하면 대시보드에 실시간으로 스테이크가 표시되고 즉시 보상이 누적됩니다.

스테이킹 경제학: 알아야 할 사항

스테이킹 메커니즘을 이해하면 자산을 효율적으로 관리할 수 있습니다.

보상 구조

  • 기본 APY: 2.08% 연간
  • 보상 빈도: 매 epoch마다 (약 24시간)
  • 수수료: 보상의 8%
  • 복리: 보상이 지갑에 추가되어 재스테이킹하면 복리 효과를 얻을 수 있습니다.

예시 수익

아래 표는 2.08% APY와 8% 수수료를 적용한 예상 수익을 보여줍니다.

스테이크 금액연간 보상월간 보상일일 보상
100 SUI2.08 SUI0.17 SUI0.0057 SUI
1,000 SUI20.8 SUI1.73 SUI0.057 SUI
10,000 SUI208 SUI17.3 SUI0.57 SUI

참고: 추정치이며 실제 보상은 네트워크 상황에 따라 달라질 수 있습니다.

리스크 고려사항

  • 언본딩 기간: 언스테이킹 시 24~48시간 동안 접근이 불가능하고 보상이 발생하지 않습니다.
  • 밸리데이터 리스크: 높은 기준을 유지하지만 모든 밸리데이터는 운영 리스크를 가집니다. BlockEden.xyz와 같은 신뢰할 수 있는 밸리데이터 선택이 중요합니다.
  • 네트워크 리스크: 스테이킹은 블록체인 프로토콜 자체의 위험에 노출됩니다.
  • 시장 리스크: SUI 토큰 가격 변동은 스테이킹 자산의 총 가치에 영향을 미칩니다.

기술적 우수성

엔터프라이즈 인프라

밸리데이터 노드는 다중 지역에 분산된 중복 시스템으로 구축되어 높은 가용성을 보장합니다. 24/7 모니터링과 자동 페일오버, 전문 운영팀이 24시간 시스템을 관리합니다. 정기적인 보안 감사와 컴플라이언스 검증도 수행합니다.

오픈소스와 투명성

우리는 오픈소스 원칙을 고수합니다. 스테이킹 통합 과정은 투명하게 공개되어 사용자가 내부 프로세스를 검증할 수 있습니다. 실시간 메트릭은 SUI 네트워크 탐색기에서 공개되며, 수수료 구조는 숨김 없이 완전 공개됩니다. 또한 커뮤니티 거버넌스에 적극 참여해 SUI 생태계를 지원합니다.

SUI 생태계 지원

BlockEden.xyz와 함께 스테이킹하면 단순히 보상을 얻는 것을 넘어 SUI 네트워크 전체의 건강과 성장에 기여합니다.

  • 네트워크 보안: 스테이크가 늘어날수록 SUI 네트워크가 더욱 견고해집니다.
  • 탈중앙화: 독립 밸리데이터를 지원함으로써 네트워크 회복력과 중앙화 방지에 기여합니다.
  • 생태계 성장: 수수료 수익은 핵심 인프라 유지·개발에 재투자됩니다.
  • 혁신: 수익은 블록체인 커뮤니티를 위한 새로운 도구와 서비스 개발에 활용됩니다.

보안 및 모범 사례

자산 보안을 최우선으로 하세요.

지갑 보안

  • 절대 개인 키나 시드 구문을 공유하지 마세요.
  • 대량 스테이킹 시 하드웨어 지갑 사용을 권장합니다.
  • 서명 전 항상 트랜잭션 상세 정보를 확인하세요.
  • 지갑 소프트웨어를 최신 버전으로 유지하세요.

스테이킹 안전

  • 처음이라면 소액으로 시작해 프로세스를 익히세요.
  • 여러 신뢰할 수 있는 밸리데이터에 분산 스테이킹해 리스크를 낮추세요.
  • 스테이킹 자산과 보상을 정기적으로 모니터링하세요.
  • 언본딩 기간을 충분히 이해한 뒤 자금을 잠그세요.

SUI 스테이킹의 미래에 동참하세요

BlockEden.xyz의 SUI 스테이킹 출시가 단순한 기능 추가가 아니라 탈중앙화 경제에 적극 참여할 수 있는 관문이 됩니다. DeFi 경험이 풍부하든 처음이든, 우리 플랫폼은 보상을 안전하게 얻고 SUI 네트워크의 미래에 기여할 수 있는 간편하고 안전한 방법을 제공합니다.

지금 바로 시작하시겠어요?

blockeden.xyz/dash/stake 로 이동해 첫 SUI 토큰을 스테이킹해 보세요!


BlockEden.xyz 소개

BlockEden.xyz는 개발자, 기업, 그리고 광범위한 Web3 커뮤니티에 신뢰성·확장성·보안을 겸비한 블록체인 인프라 서비스를 제공하는 선도 기업입니다. API 서비스부터 밸리데이터 운영까지, 탈중앙화된 미래를 위한 기반을 구축하고 있습니다.

  • 설립: 2021년
  • 지원 네트워크: 15개 이상
  • 기업 고객: 전 세계 500개 이상
  • 총 보안 가치: 1억 달러 이상

Twitter에서 팔로우하고, Discord에서 커뮤니티에 참여하며, BlockEden.xyz에서 전체 서비스를 확인하세요.


면책 조항: 이 블로그 게시물은 정보 제공 목적이며 재정적 조언이 아닙니다. 암호화폐 스테이킹은 원금 손실 위험을 포함한 다양한 위험이 존재합니다. 스테이킹 전 반드시 스스로 조사하고 위험 감수성을 고려하시기 바랍니다.

마찰 없는 온‑램프 with zkLogin

· 약 5분
Dora Noda
Software Engineer

지갑 마찰을 없애고, 사용자를 지속시키며, 성장 가능성을 예측하는 방법

Web3 앱이 최신 Web2 서비스와 같은 원활한 회원가입 흐름을 제공한다면 어떨까요? 이것이 바로 zkLogin이 Sui 블록체인에서 제공하는 핵심 약속입니다. zkLogin은 Sui용 OAuth와 같은 역할을 하며, 사용자가 Google, Apple, X 등 익숙한 계정으로 로그인할 수 있게 해줍니다. 이후 영지식 증명이 해당 Web2 신원을 온체인 Sui 주소와 안전하게 연결합니다 — 지갑 팝업도, 시드 구문도, 사용자 이탈도 없습니다.

그 효과는 실질적이고 즉각적입니다. 이미 수십만 개의 zkLogin 계정이 활성화된 상황에서, 사례 연구에 따르면 전통적인 지갑 장벽을 제거한 후 사용자 전환율이 **17%에서 42%**로 크게 상승했습니다. 이제 작동 원리와 프로젝트에 가져다줄 수 있는 혜택을 살펴보겠습니다.


왜 지갑이 첫 번째 전환을 방해하는가

혁신적인 dApp을 만들었지만 사용자 확보 퍼널이 새는 경우가 많습니다. 그 원인은 거의 항상 “Connect Wallet” 버튼입니다. 표준 Web3 온보딩은 확장 프로그램 설치, 시드 구문 경고, 암호화 용어 퀴즈 등 복잡한 미로와 같습니다.

신규 사용자는 큰 장벽에 직면합니다. UX 연구자들은 지갑 프롬프트가 나타나는 순간 **87%**가 이탈한다는 충격적인 수치를 발견했습니다. 한 실험에서는 해당 프롬프트를 결제 과정의 후반부로 옮기기만 해도 완료율이 **94%**로 급상승했습니다. 암호화에 호기심이 있는 사용자조차도 “잘못된 버튼을 누르면 자금이 사라질까 봐”라는 두려움을 가지고 있습니다. 이 단일하고 위협적인 단계를 제거하는 것이 기하급수적 성장을 여는 열쇠입니다.


zkLogin 작동 방식 (쉽게 설명)

zkLogin은 모든 인터넷 사용자가 이미 신뢰하는 기술을 활용해 지갑 문제를 우아하게 회피합니다. 몇 가지 간단한 단계로 마법이 이루어집니다:

  1. 임시 키 페어: 사용자가 로그인하려면 브라우저에서 일시적인 단일 세션 키 페어가 로컬에서 생성됩니다. 이는 이번 세션에만 유효한 임시 패스키와 같습니다.
  2. OAuth 흐름: 사용자는 Google, Apple 등 소셜 계정으로 로그인합니다. 앱은 이 로그인 요청에 고유값(nonce)을 삽입합니다.
  3. ZKP 서비스: 로그인 성공 후, ZKP(Zero‑Knowledge Proof) 서비스가 암호학적 증명을 생성합니다. 이 증명은 “이 OAuth 토큰이 임시 패스키 소유자를 인증한다”는 것을 온체인에 공개하지 않고 확인합니다.
  4. 주소 파생: OAuth 제공자의 JWT(JSON Web Token)와 고유 salt를 결합해 영구적인 Sui 주소를 결정적으로 생성합니다. salt는 클라이언트 측이나 안전한 백엔드에 비공개로 보관됩니다.
  5. 트랜잭션 제출: 앱은 임시 키로 트랜잭션에 서명하고 ZK 증명을 첨부합니다. Sui 검증자는 온체인에서 증명을 검증해 전통적인 지갑 없이도 트랜잭션의 정당성을 확인합니다.

단계별 통합 가이드

구현 준비가 되셨나요? TypeScript SDK를 활용한 빠른 가이드를 소개합니다. Rust나 Python에서도 원리는 동일합니다.

1. SDK 설치

@mysten/sui 패키지에 필요한 모든 zklogin 헬퍼가 포함되어 있습니다.

pnpm add @mysten/sui

2. 키와 Nonce 생성

먼저 임시 키페어와 현재 Sui 네트워크 epoch에 연결된 nonce를 생성합니다.

const keypair = new Ed25519Keypair();
const { epoch } = await suiClient.getLatestSuiSystemState();
const nonce = generateNonce(keypair.getPublicKey(), Number(epoch) + 2, generateRandomness());

3. OAuth 리다이렉트

사용 중인 제공자(예: Google, Facebook, Apple)에 맞는 OAuth 로그인 URL을 구성하고 사용자를 리다이렉트합니다.

4. JWT 디코드 및 사용자 Salt 조회

사용자가 로그인하고 돌아오면 URL에서 id_token을 가져옵니다. 이를 이용해 백엔드에서 사용자 전용 salt를 조회한 뒤 Sui 주소를 파생합니다.

const jwt = new URLSearchParams(window.location.search).get('id_token')!;
const salt = await fetch('/api/salt?jwt=' + jwt).then(r => r.text());
const address = jwtToAddress(jwt, salt);

5. ZK 증명 요청

JWT를 증명 서비스에 보내 ZK 증명을 받습니다. 개발 단계에서는 Mysten의 퍼블릭 prover를 사용할 수 있습니다. 프로덕션에서는 자체 호스팅하거나 Enoki와 같은 서비스를 이용하세요.

const proof = await fetch('/api/prove', {
method:'POST',
body: JSON.stringify({ jwt, ... })
}).then(r => r.json());

6. 서명 및 전송

이제 트랜잭션을 구성하고, 발신자를 사용자의 zkLogin 주소로 설정한 뒤 실행합니다. SDK가 zkLoginInputs(증명)를 자동으로 첨부합니다. ✨

const tx = new TransactionBlock();
tx.moveCall({ target:'0x2::example::touch_grass' }); // 任意的 Move 调用
tx.setSender(address);
tx.setGasBudget(5_000_000);

await suiClient.signAndExecuteTransactionBlock({
transactionBlock: tx,
zkLoginInputs: proof // 여기서 마법이 일어납니다
});

7. 세션 유지

보다 부드러운 사용자 경험을 위해 키페어와 salt를 IndexedDB 또는 로컬 스토리지에 암호화하여 저장합니다. 보안을 강화하려면 몇 epoch마다 회전시키는 것을 잊지 마세요.


KPI 예측 템플릿

zkLogin이 가져오는 차이는 정성적인 것이 아니라 정량적인 것입니다. 일반 온보딩 퍼널과 zkLogin 적용 퍼널을 비교해 보세요:

퍼널 단계지갑 팝업 사용 시 일반zkLogin 사용 시차이
Landing → Sign-in100 %100 %
Sign-in → Wallet Ready15 % (설치, 시드 구문)55 % (소셜 로그인)+40 pp
Wallet Ready → First Tx\ 23 %\ 90 %+67 pp
전체 Tx 전환율\ 3 %≈ 25‑40 %\ 8‑13×

👉 의미: 10,000명의 고유 방문자를 유도하는 캠페인이라면, 첫날 온체인 행동이 300건에서 2,500건 이상으로 증가합니다.


모범 사례 & 주의점

보다 매끄러운 경험을 위해 다음 팁을 기억하세요:

  • 스폰서드 트랜잭션 사용: 사용자의 첫 몇 번 트랜잭션 수수료를 여러분이 부담하세요. 모든 마찰이 사라지고 강력한 “아하” 순간을 제공할 수 있습니다.
  • Salt 관리에 신중: 사용자의 salt를 변경하면 새로운 주소가 생성됩니다. 복구 경로를 확실히 제어할 수 있을 때만 수행하세요.
  • Sui 주소 노출: 가입 후 사용자의 온체인 주소를 보여 주세요. 이는 고급 사용자가 원한다면 전통적인 지갑으로 가져갈 수 있게 합니다.
  • 리프레시 루프 방지: JWT와 임시 키페어를 만료될 때까지 캐시해 두어 반복 로그인 요청을 피하세요.
  • Prover 지연 모니터링: 증명 생성 라운드 트립 시간이 2초를 초과하면 지역 프로버를 호스팅해 응답성을 유지하세요.

BlockEden.xyz가 제공하는 가치

zkLogin이 사용자 경험을 완성한다면, 이를 확장하는 과정에서 새로운 백엔드 과제가 등장합니다. 여기서 BlockEden.xyz가 역할을 합니다.

  • API 레이어: 고처리량, 지리적 라우팅이 적용된 RPC 노드가 사용자 위치와 무관하게 zkLogin 트랜잭션을 최소 지연으로 처리합니다.
  • 관찰 가능성: 증명 지연, 성공/실패 비율, 전환 퍼널 건강 지표 등을 한눈에 볼 수 있는 대시보드를 제공합니다.
  • 컴플라이언스: fiat 연동 앱을 위해 선택 가능한 KYC 모듈이 있어, 검증된 사용자 신원에서 직접 온‑램프를 구현할 수 있습니다.

바로 배포할 준비가 되셨나요?

거추장스럽고 위협적인 지갑 흐름은 이제 끝났습니다. zkLogin 샌드박스를 띄우고 BlockEden의 풀노드 엔드포인트를 연결하면, 사용자는 “지갑”이라는 단어조차 듣지 못한 채 가입 그래프가 상승하는 모습을 확인할 수 있습니다. 😉

2025년 Sui DeFi 생태계: 유동성, 추상화 및 새로운 프리미티브

· 약 4분
Dora Noda
Software Engineer

1. 유동성

Cetus는 Sui에서 가장 큰 AMM 중 하나이며, 현재 $2.5B 이상의 유동성을 보유하고 있습니다. Bluefin은 고성능 주문 매칭 엔진을 도입해 기관 투자자와 고빈도 트레이더를 끌어들이고 있습니다. Momentum은 CLMM(Concentrated Liquidity Market Maker) 모델을 사용해 자본 효율성을 높이고 있습니다. DeepBook은 주문서 기반 DEX로, 깊은 유동성과 낮은 슬리피지를 제공합니다.

Suilend는 Sui에서 가장 큰 대출 플랫폼으로, 1.2B이상의TVL을관리하고있습니다.Suilend는다양한자산을담보로받아1.2B 이상의 TVL을 관리하고 있습니다. **Suilend**는 다양한 자산을 담보로 받아 200M 이상의 BTC 파생자산을 지원하고 있습니다. SuilendCetus는 함께 $500M 이상의 유동성을 제공하고 있습니다.

SuitBTCsBTC 같은 비트코인 파생자산을 통합해, 전체 TVL의 10% 이상을 BTC 기반 자산이 차지하도록 만들었습니다. 이는 Sui가 BTCfi(비트코인 DeFi) 분야에서 선도적인 역할을 하고 있음을 보여줍니다.

Momentum은 HFT(High-Frequency Trading)를 지원하기 위해 주문 매칭 속도를 최적화했으며, Bluefin은 MEV(최대 채굴자 이익) 방지를 위한 RFQ 매칭을 도입했습니다.

2. 추상화와 사용자 경험

Sui는 계정 추상화(Account Abstraction) 기능을 통해 사용자가 복잡한 서명 과정을 거치지 않고도 거래를 수행할 수 있게 했습니다. 사용자는 소셜 로그인이나 지갑 연결 없이 바로 DEX에 접근할 수 있습니다. ZK-RollupzkLogin을 결합해 프라이버시를 강화하면서도 빠른 거래를 지원합니다.

CetusBluefinRFQ(Quote Request) 기반 매칭 엔진을 도입해, 기관 투자자와 고빈도 트레이더가 최적의 가격을 실시간으로 받을 수 있게 했습니다. 이는 전통적인 중앙화 거래소와의 격차를 크게 줄였습니다.

3. 새로운 프리미티브

3.1 네이티브 스테이블코인

  • AUSD (Agora Finance): 2024년 말에 출시된 완전 USD-백업 스테이블코인으로, Sui TVL을 600M에서600M에서 800M으로 끌어올렸습니다.
  • BUCK (Bucket Protocol): DAI와 유사한 과다 담보형 스테이블코인으로, Q2 2025에 $60M 이상의 공급량을 기록했습니다.
  • USDY (Ondo Finance): 단기 미국 국채 수익을 토큰화한 수익형 스테이블코인으로, RWA(실물자산) 기반 토큰의 첫 사례입니다.

3.2 BTCfi 혁신

  • tBTC (Threshold Network): 1:1 비트코인 백업 토큰으로, 2025년 7월 Sui에 도입돼 $500M 이상의 BTC 유동성을 제공했습니다.
  • sBTC (Stacks): Stacks 레이어-2를 활용한 1:1 BTC 표현으로, Sui TVL의 10% 이상을 차지했습니다.
  • Sui 기반 대출 플랫폼에서 BTC 파생자산을 담보로 활용하는 사례가 급증하고 있습니다.

3.3 고성능 DEX와 HFT

  • Bluefin Spot 2.0: MEV 방지 RFQ 매칭과 초저지연 주문 처리를 제공해 기관 투자자를 유치하고 있습니다.
  • MomentumMagma는 각각 CLMM과 ALMM을 도입해 자본 효율성을 극대화했습니다.

3.4 새로운 금융 상품 및 파트너십

  • Graviton: $5천만 시리즈 A 투자 유치를 받아, Sui 위에 모듈형 트레이딩, 대출, 크로스 마진 플랫폼을 구축 중이며, dYdX와 유사한 목표를 가지고 있습니다.
  • xMoney/xPortal: 암호화폐 기반 마스터카드를 출시해, 일상 결제에서 Sui 자산을 사용할 수 있게 합니다.
  • 21Shares: 미국에서 SUI ETF 설립을 신청해 전통 투자자에게 Sui 노출을 제공하려 합니다.

3.5 커뮤니티와 개발자 활동

Sui Move 생태계는 2025년 중반에 Solana와 Near를 제치고 주간 커밋 수와 포크 수에서 1위를 차지했습니다. Lotus Finance는 옵션 AMM을, Turbos는 탈중앙화 프론트엔드 호스팅을 도입했습니다. Google Cloud와의 협업을 통해 온체인 데이터 인덱싱 및 AI 추론 도구를 제공하고 있습니다.

4. 요약

2025년 현재 Sui DeFi 생태계는 다중 억 달러 규모의 유동성, 계정 추상화를 통한 사용자 친화적 경험, 그리고 네이티브 스테이블코인, BTC 통합, 고성능 AMM, 영구 선물 등 새로운 프리미티브의 도입으로 급격히 성장하고 있습니다. Cetus, Bluefin, Suilend, Bucket, Agora, Ondo 등 주요 프로토콜과 인프라, 전통 금융 파트너십이 Sui를 선도적인 DeFi 허브로 자리매김하게 만들고 있습니다.

출처:

  • Sui Foundation – Sui Q2 2025 DeFi Roundup (2025년 7월 15일)
  • Sui Foundation – NEAR Intents Brings Lightning-Fast Cross-chain Swaps to Sui (2025년 7월 17일)
  • Sui Foundation – Sui to Support sBTC and Stacks (BTCfi Use Cases) (2025년 5월 1일)
  • Sui Foundation – All About Account Abstraction (2023년 10월 4일)
  • Ainvest News – Sui Network TVL Surpasses $1.4B Driven by DeFi Protocols (2025년 7월 14일)
  • Ainvest News – Sui DeFi TVL Surges 480% to $1.8B... (2025년 7월 12일)
  • Suipiens (Sui community) – tBTC Integration Brings Bitcoin Liquidity to Sui (2025년 7월 17일)
  • Suipiens – Inside Suilend: Sui’s Leading Lending Platform (2025년 7월 3일)
  • The Defiant – Ondo to Bring RWA-Backed Stablecoins onto Sui (2024년 2월 7일)
  • Official Sui Documentation – Intro to Sui: User Experience (account abstraction features)

Aptos vs. Sui: 두 개의 Move 기반 거대 체인에 대한 파노라마 분석

· 약 5분
Dora Noda
Software Engineer

개요

Aptos와 Sui는 모두 Meta의 Libra/Diem 프로젝트에서 처음 고안된 Move 언어에서 파생된 차세대 레이어-1 블록체인입니다. 공통된 혈통을 공유하지만, 팀 배경, 핵심 목표, 생태계 전략 및 진화 경로는 크게 달라졌습니다.

Aptos는 다목적성과 엔터프라이즈 급 성능을 강조하며 DeFi와 기관용 사례 모두를 목표로 합니다. 반면 Sui는 고유한 객체 모델을 최적화하여 대중 소비자 애플리케이션, 특히 게임, NFT, 소셜 미디어에 초점을 맞추고 있습니다. 어느 체인이 궁극적으로 차별화될지는 선택한 시장 니치의 요구를 충족시키는 기술 진화 능력과 사용자 경험·개발자 친화성에서 명확한 우위를 확보하느냐에 달려 있습니다.


1. 개발 여정

Aptos

Aptos Labs—전 Meta Libra/Diem 직원들로 구성된 팀—에서 탄생한 Aptos는 2021년 말에 폐쇄 테스트를 시작했고 2022년 10월 19일 메인넷을 출시했습니다. 초기 메인넷 성능은 WIRED가 보도한 바와 같이 초당 20건 이하(TPS)로 커뮤니티의 회의감을 불러일으켰지만, 이후 합의 및 실행 레이어의 반복을 통해 처리량을 수만 TPS 수준으로 끌어올렸습니다.

2025년 2분기까지 Aptos는 단일 주에 4,470만 건의 트랜잭션 피크를 기록했으며, 주간 활성 주소는 400만을 넘어섰습니다. 누적 계정 수는 8,300만을 초과했으며, 일일 DeFi 거래량은 꾸준히 2억 달러 이상을 유지하고 있습니다(출처: Aptos Forum).

Sui

Mysten Labs가 주도하며, 창립자들은 Meta의 Novi 지갑 팀 핵심 멤버였습니다. Sui는 2022년 8월 인센티브 테스트넷을 출시하고 2023년 5월 3일 메인넷을 공개했습니다. 초기 테스트넷부터 팀은 “객체 모델”을 정제하는 데 주력했으며, 이는 자산을 특정 소유권 및 접근 제어가 부여된 객체로 취급해 병렬 트랜잭션 처리를 강화합니다(출처: Ledger).

2025년 7월 중순 현재 Sui 생태계의 총 잠금 가치(TVL)는 23억 2,600만 달러에 달했습니다. 플랫폼은 월간 트랜잭션 볼륨과 활성 엔지니어 수가 급격히 성장했으며, 특히 게임 및 NFT 분야에서 큰 인기를 얻고 있습니다(출처: AInvest, Tangem).


2. 기술 아키텍처 비교

특징AptosSui
언어원본 Move 설계를 계승하여 “리소스” 보안과 엄격한 접근 제어에 중점. 언어 자체는 비교적 간결합니다(출처: aptos.dev).표준 Move에 “객체 중심” 모델을 추가해 수평적으로 확장 가능한 병렬 트랜잭션을 지원하는 맞춤형 버전을 제공합니다(출처: docs.sui.io).
합의AptosBFT: 서브초 수준 최종성을 약속하는 최적화된 BFT 합의 메커니즘으로, 보안·일관성에 초점을 맞춥니다(출처: Messari).Narwhal + Tusk: 합의를 트랜잭션 순서와 분리해 병렬 실행 효율성을 우선시함으로써 높은 처리량과 낮은 지연 시간을 구현합니다.
실행 모델파이프라인식 실행 모델을 사용해 트랜잭션을 단계별(데이터 가져오기, 실행, 쓰기 백)로 처리, 고빈도 전송 및 복잡 로직에 적합합니다(출처: chorus.one).객체 소유권 기반 병렬 실행을 활용합니다. 서로 다른 객체를 다루는 트랜잭션은 전역 상태 잠금이 필요 없어 처리량이 크게 증가합니다.
확장성단일 인스턴스 최적화에 집중하면서 샤딩을 연구 중. 커뮤니티는 AptosCore v2.0 샤딩 제안을 활발히 개발하고 있습니다.수평 확장을 위한 네이티브 병렬 엔진을 제공하며, 테스트넷에서 이미 수만 TPS 피크를 달성했습니다.
개발자 도구공식 SDK, Devnet, Aptos CLI, Explorer, Hydra 프레임워크 등 성숙한 툴체인을 보유.Sui SDK, Sui Studio IDE, Explorer, GraphQL API, 객체 지향 쿼리 모델 등 포괄적인 스위트를 제공합니다.

3. 온체인 생태계 및 사용 사례

3.1 생태계 규모와 성장

Aptos
2025년 1분기 기준, Aptos는 월간 활성 사용자가 거의 1,500만 명에 달했으며 일일 활성 지갑이 100만 개에 근접했습니다. DeFi 거래량은 전년 대비 1,000% 성장했으며, 플랫폼은 금융 등급 스테이블코인 및 파생상품 허브로 자리매김했습니다(출처: Coinspeaker). 주요 전략으로는 Upbit을 통한 USDT 통합으로 아시아 시장 침투를 가속화하고, 다수의 선도 DEX, 대출 프로토콜 및 파생상품 플랫폼을 유치하고 있습니다(출처: Aptos Forum).

Sui
2025년 6월 현재, Sui 생태계 TVL은 23억 2,600만 달러의 사상 최고치를 기록했으며, 이는 주로 고도 상호작용 소셜, 게임 및 NFT 프로젝트에 의해 주도되었습니다(출처: AInvest). 핵심 프로젝트로는 객체 마켓플레이스, 레이어‑2 브리지, 소셜 지갑, 게임 엔진 SDK 등이 있으며, 다수의 Web3 게임 개발자와 IP 보유자를 끌어들이고 있습니다.

3.2 주요 사용 사례

  • DeFi·엔터프라이즈 통합 (Aptos): 성숙한 BFT 최종성과 풍부한 금융 툴셋 덕분에 안정성·보안이 중요한 스테이블코인, 대출, 파생상품 등에 적합합니다.
  • 게임·NFT (Sui): 병렬 실행 이점이 명확합니다. 낮은 트랜잭션 지연과 거의 제로에 가까운 수수료는 게임 내 아이템 전송, 랜덤 박스 개봉 등 고빈도·저가 상호작용에 최적화됩니다.

4. 진화·전략

Aptos

  • 성능 최적화: 샤딩 연구 지속, 다지역 교차체인 유동성 계획, 상태 접근 효율성을 높이는 AptosVM 업그레이드.
  • 생태계 인센티브: 수백억 달러 규모의 생태계 펀드를 조성해 DeFi 인프라, 교차체인 브리지, 규제 준수 엔터프라이즈 애플리케이션을 지원.
  • 교차체인 상호운용성: Wormhole 등 브리지와의 통합 강화, Cosmos(IBC) 및 Ethereum과의 연결 구축.

Sui

  • 객체 모델 반복: 맞춤형 객체 타입 및 복합 권한 관리를 지원하도록 Move 구문 확장, 병렬 스케줄링 알고리즘 최적화.
  • 소비자 채택 촉진: Unreal, Unity 등 주요 게임 엔진과의 깊은 통합을 추진해 Web3 게임 개발 장벽을 낮추고, 소셜 플러그인·SDK 출시.
  • 커뮤니티 거버넌스: SuiDAO를 활성화해 핵심 프로젝트 커뮤니티에 거버넌스 권한을 부여, 기능·수수료 모델에 대한 빠른 반복을 가능하게 함.

5. 핵심 차이점·과제

  • 보안 vs. 병렬성: Aptos의 엄격한 리소스 의미론과 일관된 합의는 DeFi 수준의 보안을 제공하지만 병렬성을 제한할 수 있습니다. Sui의 고도로 병렬화된 트랜잭션 모델은 대규모 보안 위협에 대한 지속적인 검증이 필요합니다.
  • 생태계 깊이 vs. 폭: Aptos는 금융 부문에서 깊은 뿌리와 강력한 기관 연계를 갖추고 있습니다. Sui는 소비자 중심 프로젝트를 빠르게 확보했지만 대규모 DeFi에서 결정적인 돌파구는 아직 없습니다.
  • 이론적 성능 vs. 실제 처리량: Sui는 이론상 높은 TPS를 보이지만 실제 처리량은 생태계 활동에 의해 제한됩니다. Aptos도 피크 시 혼잡을 겪으며 샤딩이나 레이어‑2 솔루션이 필요합니다.
  • 시장 내러티브·포지셔닝: Aptos는 엔터프라이즈 급 보안·안정성을 강조하며 전통 금융·규제 산업을 목표로 합니다. Sui는 “Web2와 같은 경험”과 “제로 마찰 온보딩”을 내세워 넓은 소비자 층을 끌어옵니다.

6. 대중 채택을 향한 길

궁극적으로 이것은 제로섬 게임이 아닙니다.

중·장기에 소비자 시장(게임, 소셜, NFT)이 폭발적으로 성장한다면, Sui의 병렬 실행과 낮은 진입 장벽은 수천만 명의 주류 사용자를 빠르게 끌어들일 수 있는 기반이 됩니다.

단·중기에 Aptos의 성숙한 BFT 최종성, 낮은 수수료, 전략적 파트너십은 기관 금융, 규제 중심 DeFi, 국경 간 결제 분야에서 더 매력적인 제안을 제공합니다.

앞으로는 두 체인이 공생하며 시장을 계층화할 가능성이 높습니다. Aptos는 금융·엔터프라이즈 인프라를, Sui는 고빈도 소비자 인터랙션을 주도하게 될 것입니다. 최종적으로 대중 채택을 달성하는 체인은 자신이 선택한 도메인 내에서 성능과 사용자 경험을 끊임없이 최적화하는 체인일 것입니다.

Sui 네트워크 신뢰성 엔지니어링 (NRE) 도구: 노드 운영자를 위한 완전 가이드

· 약 5분
Dora Noda
Software Engineer

Sui 블록체인은 확장성과 성능에 대한 혁신적인 접근 방식으로 빠르게 주목받고 있습니다. Sui 노드를 안정적으로 운영하려는 개발자와 인프라 팀을 위해 Mysten Labs는 배포, 구성 및 관리 프로세스를 간소화하는 포괄적인 네트워크 신뢰성 엔지니어링 (NRE) 도구 세트를 만들었습니다.

이 가이드에서는 Sui NRE 저장소를 살펴보고 이러한 강력한 도구를 Sui 노드 운영에 어떻게 활용할 수 있는지 보여드립니다.