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}")