main goal is sign transaction for `pay` method off-chain. User should use this signed transaction when try to claim. see eip712 to implement this