본 문서는 Phase 4 이후 진행 예정인 메타 트랜잭션 기반 transfer/mint 대납 기능의 개발 범위를 정의합니다. 목표는 “사용자가 지갑(예: MetaMask)에서 서명만 하고, DApp 서버가 가스를 대납해 민팅/전송을 수행”하는 흐름을 구현하는 것입니다.
POST /contracts/deploy 요청에 trustedForwarder 필드를 추가하거나, .env (TRUSTED_FORWARDER_ADDRESS)를 통해 기본 Forwarder 주소를 주입.MijiERC721, MijiERC1155) 배포 시 해당 주소를 constructor에 전달해 EIP-2771 context를 실제로 사용하도록 함.gift(address from, address to, uint256 tokenId, bytes signature) 같은 wrapper 함수를 추가해 이벤트/검증을 단순화.MinimalForwarder..env에 등록.BlockchainService를 통해 signer를 가져오도록 구성.POST /transfers/relay
{
"chainId": "43113",
"contractAddress": "0x...",
"from": "0x선물자",
"to": "0x수신자",
"tokenId": "1",
"signature": "<EIP-712>",
"deadline": 1234567890
}
transfer-queue)에 작업을 적재.TransferProcessor가 blockchainService.getSigner()로 Relayer signer를 받아 Forwarder 컨트랙트를 호출.TransferOrder 문서를 업데이트하고 Webhook/로그 발송.POST /minting/relay)를 도입.chainId, contractAddress, from, to, tokenId, signature, status, txHash, errorMessage, createdAt, updatedAt.MintingOrder에도 signature, relayedBy 등의 필드가 추가될 수 있음.name, version, chainId, verifyingContract.ForwardRequest 또는 커스텀 구조.deadline) 및 nonce 관리로 재사용 공격 차단.위 항목들은 메타 트랜잭션 기능 구현 시 필수적으로 고려해야 할 범위를 정리한 것입니다. 실제 개발 착수 시 컨트랙트/백엔드/프론트엔드가 병행해 수정되어야 합니다.