diff --git a/.changeset/itchy-llamas-act.md b/.changeset/itchy-llamas-act.md new file mode 100644 index 0000000000..a845a5deb2 --- /dev/null +++ b/.changeset/itchy-llamas-act.md @@ -0,0 +1,9 @@ +--- +"@farcaster/hub-nodejs": minor +"@farcaster/hub-web": minor +"@farcaster/replicator": minor +"@farcaster/core": minor +"@farcaster/hubble": minor +--- + +Add Solana verification support diff --git a/apps/hubble/src/rpc/test/verificationService.test.ts b/apps/hubble/src/rpc/test/verificationService.test.ts index c6d2b440cf..4033724d41 100644 --- a/apps/hubble/src/rpc/test/verificationService.test.ts +++ b/apps/hubble/src/rpc/test/verificationService.test.ts @@ -75,30 +75,28 @@ describe("getVerification", () => { await engine.mergeOnChainEvent(storageEvent); }); - test.only("solana-succeeds", async () => { - const r = await engine.mergeMessage(solVerificationAdd); - expect(r.isOk()).toBeTruthy(); + test.only("succeeds", async () => { + const solanaMerge = await engine.mergeMessage(solVerificationAdd); + expect(solanaMerge.isOk()).toBeTruthy(); - const result = await client.getVerification( + const solanaResult = await client.getVerification( VerificationRequest.create({ fid, address: solVerificationAdd.data.verificationAddAddressBody.address ?? new Uint8Array(), }), ); - expect(Message.toJSON(result._unsafeUnwrap())).toEqual(Message.toJSON(solVerificationAdd)); - }); + expect(Message.toJSON(solanaResult._unsafeUnwrap())).toEqual(Message.toJSON(solVerificationAdd)); - test("ethereum-succeeds", async () => { - const r = await engine.mergeMessage(ethVerificationAdd); - expect(r.isOk()).toBeTruthy(); + const ethereumMerge = await engine.mergeMessage(ethVerificationAdd); + expect(ethereumMerge.isOk()).toBeTruthy(); - const result = await client.getVerification( + const ethereumResult = await client.getVerification( VerificationRequest.create({ fid, address: ethVerificationAdd.data.verificationAddAddressBody.address ?? new Uint8Array(), }), ); - expect(Message.toJSON(result._unsafeUnwrap())).toEqual(Message.toJSON(ethVerificationAdd)); + expect(Message.toJSON(ethereumResult._unsafeUnwrap())).toEqual(Message.toJSON(ethVerificationAdd)); }); test("solana fails if verification is missing", async () => { diff --git a/packages/core/src/validations.ts b/packages/core/src/validations.ts index b2609d46cf..6c88571700 100644 --- a/packages/core/src/validations.ts +++ b/packages/core/src/validations.ts @@ -710,7 +710,7 @@ export const validateVerificationAddSolAddressBody = ( } if (body.addressVerificationSignature.length !== 64) { - return err(new HubError("bad_request.validation_failure", "addressVerificationSignature > 256 bytes")); + return err(new HubError("bad_request.validation_failure", "addressVerificationSignature != 64 bytes")); } return ok(body);