PoCs

Thirdweb — 플랫폼 서베이

컨트랙트·지갑/AA·백엔드 tx·Unity SDK — 각 부문 1등을 내주고 산 넓이.

아직 만들지 않았습니다

이 페이지는 카드에 적힌 내용을 펼쳐 보여줄 뿐입니다 — 돌아가는 코드도, 열어볼 데모도 아직 없습니다. 무엇을 왜 만들려는지가 아래에 있습니다.

어떻게 보나

참조 — docs/features/thirdweb.md. AA 카드의 ②③ 요소에서 이미 쓰고 있습니다.

기술 노트

각 항목이 실제로 무엇을 보여주고 어떻게 동작하는지 — 위 카드보다 자세한 기술 설명입니다.

Thirdweb — 플랫폼 서베이준비 중

목적: 중립적 서베이가 아닙니다 — 이 프로젝트가 이미 의존하고 있습니다. AA 카드의 가스 대납·원자적 배치 요소가 thirdweb의 4337 스택 위에서 돌고, 에이전트 PoC의 D1 가스 결정이 정확히 이 노트가 짚는 트레이드오프에 달려 있습니다: thirdweb은 paymaster를 주지만 **4337 계정에 한해서**이고, 그건 위임 서사가 딛고 선 7702/7710 계정과 다른 종류입니다. **넓이는 편리합니다 — 어느 한 부분이 반드시 최고여야 하는 지점 전까지는.**

동작 방식: 네 표면(컨트랙트 배포, Connect 지갑·계정 추상화, 백엔드 서명 트랜잭션용 Engine, Unity SDK)에 걸친 정독 노트로, 각각을 직접 구현하는 경우와 견줍니다. 여기서 의미 있는 접점은 명시되어 있습니다 — 이미 나간 AA 요소들, AP2 경로의 백엔드 트랜잭션, 그리고 게임 카드가 필요로 할 Unity 트랙.

관련 코드:
# Thirdweb — platform survey across four surfaces (contracts, Connect wallets/AA,
# Engine backend tx, Unity SDK), each rated against doing it directly. Prints a
# feature-comparison table from a dict of {feature: supported_bool}.

SURFACES = {
    "Contract deploys": {
        "one-click deploy from templates": True,
        "custom Solidity, no thirdweb lock-in": True,
        "gas-optimized beyond OpenZeppelin defaults": False,
    },
    "Connect (wallets / AA)": {
        "ERC-4337 smart accounts": True,
        "sponsored gas (paymaster)": True,
        "ERC-7702 / 7710 delegated accounts": False,  # different account type — the D1 gap
    },
    "Engine (backend tx)": {
        "server-signed transactions": True,
        "managed key custody": True,
        "self-hosted signer, zero vendor dependency": False,
    },
    "Unity SDK": {
        "in-game wallet connect": True,
        "NFT/inventory bridging": True,
        "console-platform support (parity with mobile/web)": False,
    },
}


def coverage(features: dict) -> float:
    return sum(features.values()) / len(features)


def print_table():
    print(f"{'Surface':<26}{'Feature':<45}{'Supported'}")
    print("-" * 80)
    for surface, features in SURFACES.items():
        for feature, supported in features.items():
            mark = "yes" if supported else "NO"
            print(f"{surface:<26}{feature:<45}{mark}")


if __name__ == "__main__":
    print("Thirdweb platform survey — feature coverage by surface\n")
    print_table()

    print("\nCoverage ratio per surface:")
    for surface, features in SURFACES.items():
        print(f"  {surface:<26} {coverage(features):.0%}")

    gaps = [
        f"{surface} / {feature}"
        for surface, features in SURFACES.items()
        for feature, supported in features.items()
        if not supported
    ]
    print("\nGaps where 'best-in-class' breaks (breadth's limit):")
    for gap in gaps:
        print(f"  - {gap}")

docs/code/pocs/thirdweb.py