ethereum-attestation-service / eas-sdk

Ethereum Attestation Service - TypeScript/JavaScript SDK
MIT License
83 stars 39 forks source link

Why make off-chain didn't pass the resolver contract? #52

Closed crazyyuan closed 11 months ago

crazyyuan commented 11 months ago

I create the scheme with the resolver contract. But when I make the off-chain attestation, it seems that just sign the data without passing the resolver contract. Is this reasonable? Would you consider improving it in the future?

ps: I read the docs about Resolver Contracts, which didn't indicate about off-chain.

brucexu-eth commented 11 months ago

The challenge primarily pertains to business logic. Consider a scenario with a ticket schema. Possession of an EAS record, whether on-chain or off-chain, signifies ticket ownership. This schema employs a resolver contract to validate the ticket data before creating EAS records.

Given the high gas fees, I've opted for an off-chain approach to issue tickets to users. However, the resolver contract's logic isn't applied with off-chain EAS record creation. This implies that anyone can create an off-chain record for the ticket schema, therefore, the use of off-chain EAS is ineffective.

slavik0329 commented 11 months ago

Of course offchain attestations can not be forced to obey the resolver. The trick here is to stimulate a transaction to verify if it passes the resolver. You will notice that in order to push offchain attestations to easscan it will only allow valid offchain attestations to be posted.

crazyyuan commented 11 months ago

Wouldn't it be better to pass resolver as an optional parameter when making off-chain attestations? Typically, I would like to make off-chain attestations that are already verified by default.

slavik0329 commented 11 months ago

@crazyyuan we might add a helper method for this