EIP712Domain
A EIP712Domain data type provides EIP-712 compatability for encoding and decoding the data needed for an Plug
to be securely distributed and executed.
The Data Type
To interact with the data type onchain will you need both the Typescript
and EIP-712
representations of the EIP712Domain
data type:
typescript
type EIP712Domain = {
name: string;
version: string;
chainId: bigint;
verifyingContract: `0x${string}`;
}
1
2
3
4
5
6
2
3
4
5
6
typescript
const EIP712Domain = [
{ name: 'name', type: 'string' },
{ name: 'version', type: 'string' },
{ name: 'chainId', type: 'uint256' },
{ name: 'verifyingContract', type: 'address' }
]
1
2
3
4
5
6
2
3
4
5
6
TIP
The Typescript
representation is used to build and work with the object in your dApp and API while the EIP-712
representation is used to encode and decode the data type onchain.
Onchain Implementation
With name
, version
, chainId
and verifyingContract
as the fields of the EIP712Domain
data type we can generate the type hash as follows:
solidity
bytes32 constant EIP712_DOMAIN_TYPEHASH = keccak256(
'EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'
);
1
2
3
2
3
solidity
bytes32 constant EIP712_DOMAIN_TYPEHASH = 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f
1