Skip to content

Commit ed5c70e

Browse files
committed
feat(experimental): solady hash utils
1 parent bb64987 commit ed5c70e

17 files changed

+1195
-49
lines changed

.changeset/smart-squids-hope.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"viem": patch
3+
---
4+
5+
**Experimental:** Added Solady utilities:
6+
7+
- `hashMessage`
8+
- `hashTypedData`
9+
- `wrapTypedDataSignature`

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@
9494
"src": {
9595
"entry": [
9696
"index.ts!",
97-
"{accounts,actions,celo,chains,ens,experimental,node,nonce,op-stack,siwe,utils,window,zksync}/index.ts!",
97+
"{accounts,actions,celo,chains,ens,experimental,experimental/solady,node,nonce,op-stack,siwe,utils,window,zksync}/index.ts!",
9898
"chains/utils.ts!"
9999
],
100100
"ignore": ["node/trustedSetups_cjs.ts"]
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
---
2+
description: Hashes an EIP-191 message via Solady's ERC-1271 format.
3+
---
4+
5+
# hashMessage
6+
7+
Calculates a [EIP-191](https://eips.ethereum.org/EIPS/eip-191) personal sign hash via Solady's [ERC-1271 `PersonalSign` format](https://github.com/Vectorized/solady/blob/678c9163550810b08f0ffb09624c9f7532392303/src/accounts/ERC1271.sol#L154-L166).
8+
9+
## Import
10+
11+
```ts
12+
import { hashMessage } from 'viem/experimental/solady'
13+
```
14+
15+
## Usage
16+
17+
```ts
18+
import { hashMessage } from 'viem/experimental/solady'
19+
20+
// Hash a UTF-8 value.
21+
hashMessage({
22+
message: 'hello world',
23+
verifierDomain: {
24+
name: 'Smart Account',
25+
version: '1',
26+
verifyingContract: '0x1234567890abcdef1234567890abcdef12345678',
27+
chainId: 1,
28+
},
29+
})
30+
31+
// Hash a hex data value.
32+
hashMessage({
33+
message: { raw: '0x68656c6c6f20776f726c64' },
34+
verifierDomain: {
35+
name: 'Smart Account',
36+
version: '1',
37+
verifyingContract: '0x1234567890abcdef1234567890abcdef12345678',
38+
chainId: 1,
39+
},
40+
})
41+
42+
// Hash a bytes data value.
43+
hashMessage({
44+
message: {
45+
raw: Uint8Array.from([
46+
104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100,
47+
])
48+
},
49+
verifierDomain: {
50+
name: 'Smart Account',
51+
version: '1',
52+
verifyingContract: '0x1234567890abcdef1234567890abcdef12345678',
53+
chainId: 1,
54+
},
55+
})
56+
```
57+
58+
## Returns
59+
60+
[`Hex`](/docs/glossary/types#hex)
61+
62+
A signable message hash.
63+
64+
## Parameters
65+
66+
### message
67+
68+
- **Type:** `string | { raw: Hex | ByteArray }`
69+
70+
Message to hash.
71+
72+
### verifierDomain
73+
74+
- **Type:** `TypedDataDomain`
75+
76+
The EIP-712 domain of the verifying contract.
77+
78+

0 commit comments

Comments
 (0)