Type definitions participate in the signed digest.
LET’S PICTURE IT
A form’s field labels and types matter alongside the filled-in values.
SEE IT FOR YOURSELF
From a public address to a verified signatureStep 1 / 4
An address is public receiving information. It is not the private key that authorizes actions.
An address is public receiving information. It is not the private key that authorizes actions.The local signing system uses secret authorization material. It produces a signature; the private key is not sent along with it.A verifier checks the signed request under the account’s rules. A valid signature does not by itself prove that the action is safe.Balances belong to network state. A wallet is an interface and signing system, not a box containing coins.
Animated local teaching model. No wallet, RPC or live blockchain data. Some labels and hashes are abbreviated for readability.
Declare the primary type
A typed message identifies a primary struct type and its field definitions. A uint256 count and a string text are distinct typed fields, not unlabeled concatenated values.
Use standard field hashing
Dynamic strings and bytes are hashed under the typed-data procedure, and nested structs have their own structured hashes. Ordinary abi.encode of a raw object is not a complete implementation.
Preserve exact meaning
Changing a field’s type, order or struct definition can change the digest. Two wallet displays that look similar can still represent different typed schemas.
Compare independent fixtures
Keep the schema, domain and message together in test vectors. Check the verifier and signer produce the same digest before relying on a recovered signature.
Inspect the distinction
Note(uint256 count,string text)
values: count = 7, text = hello
digest with the previous domain: 0xf4184aa7249f3a4ee3caca75f9d9491ec1822f186e774158ab53e869d73255ab
These are local teaching values, not a signature request or a live-chain lookup.