Plug
A Plug 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 Plug
data type:
typescript
type Plug = {
target: `0x${string}`;
value: bigint;
data: `0x${string}`;
}
1
2
3
4
5
2
3
4
5
typescript
const Plug = [
{ name: 'target', type: 'address' },
{ name: 'value', type: 'uint256' },
{ name: 'data', type: 'bytes' }
]
1
2
3
4
5
2
3
4
5
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 target
, value
and data
as the fields of the Plug
data type we can generate the type hash as follows:
solidity
bytes32 constant PLUG_TYPEHASH = keccak256(
'Plug(address target,uint256 value,bytes data)'
);
1
2
3
2
3
solidity
bytes32 constant PLUG_TYPEHASH = 0x0d73e94823fdaacb148d9146f00bc268b7834e768ced483d796db05a52e1e395
1