viem 2.36.0 → 2.36.1-jxom-erc8010-20250901014739

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/_cjs/actions/public/verifyHash.js +148 -38
  3. package/_cjs/actions/public/verifyHash.js.map +1 -1
  4. package/_cjs/chains/definitions/abstract.js +1 -1
  5. package/_cjs/chains/definitions/abstract.js.map +1 -1
  6. package/_cjs/chains/definitions/abstractTestnet.js +1 -1
  7. package/_cjs/chains/definitions/abstractTestnet.js.map +1 -1
  8. package/_cjs/chains/definitions/creditCoin3Mainnet.js +2 -2
  9. package/_cjs/chains/definitions/creditCoin3Mainnet.js.map +1 -1
  10. package/_cjs/chains/definitions/creditCoin3Testnet.js +2 -2
  11. package/_cjs/chains/definitions/creditCoin3Testnet.js.map +1 -1
  12. package/_cjs/chains/definitions/crossfi.js +24 -0
  13. package/_cjs/chains/definitions/crossfi.js.map +1 -0
  14. package/_cjs/chains/definitions/openledger.js +20 -0
  15. package/_cjs/chains/definitions/openledger.js.map +1 -0
  16. package/_cjs/chains/definitions/unichain.js +1 -0
  17. package/_cjs/chains/definitions/unichain.js.map +1 -1
  18. package/_cjs/chains/definitions/unichainSepolia.js +1 -0
  19. package/_cjs/chains/definitions/unichainSepolia.js.map +1 -1
  20. package/_cjs/chains/definitions/zksync.js +1 -1
  21. package/_cjs/chains/definitions/zksync.js.map +1 -1
  22. package/_cjs/chains/definitions/zksyncSepoliaTestnet.js +1 -1
  23. package/_cjs/chains/definitions/zksyncSepoliaTestnet.js.map +1 -1
  24. package/_cjs/chains/index.js +15 -11
  25. package/_cjs/chains/index.js.map +1 -1
  26. package/_cjs/constants/abis.js +3 -3
  27. package/_cjs/constants/abis.js.map +1 -1
  28. package/_cjs/constants/contracts.js +2 -2
  29. package/_cjs/constants/contracts.js.map +1 -1
  30. package/_cjs/errors/version.js +1 -1
  31. package/_cjs/errors/version.js.map +1 -1
  32. package/_cjs/index.js +19 -11
  33. package/_cjs/index.js.map +1 -1
  34. package/_cjs/utils/index.js +8 -2
  35. package/_cjs/utils/index.js.map +1 -1
  36. package/_cjs/utils/rpc/http.js +2 -2
  37. package/_cjs/utils/rpc/http.js.map +1 -1
  38. package/_cjs/utils/signature/isErc8010Signature.js +8 -0
  39. package/_cjs/utils/signature/isErc8010Signature.js.map +1 -0
  40. package/_cjs/utils/signature/parseErc8010Signature.js +24 -0
  41. package/_cjs/utils/signature/parseErc8010Signature.js.map +1 -0
  42. package/_cjs/utils/signature/serializeErc8010Signature.js +25 -0
  43. package/_cjs/utils/signature/serializeErc8010Signature.js.map +1 -0
  44. package/_esm/actions/public/verifyHash.js +166 -51
  45. package/_esm/actions/public/verifyHash.js.map +1 -1
  46. package/_esm/chains/definitions/abstract.js +1 -1
  47. package/_esm/chains/definitions/abstract.js.map +1 -1
  48. package/_esm/chains/definitions/abstractTestnet.js +1 -1
  49. package/_esm/chains/definitions/abstractTestnet.js.map +1 -1
  50. package/_esm/chains/definitions/creditCoin3Mainnet.js +2 -2
  51. package/_esm/chains/definitions/creditCoin3Mainnet.js.map +1 -1
  52. package/_esm/chains/definitions/creditCoin3Testnet.js +2 -2
  53. package/_esm/chains/definitions/creditCoin3Testnet.js.map +1 -1
  54. package/_esm/chains/definitions/crossfi.js +21 -0
  55. package/_esm/chains/definitions/crossfi.js.map +1 -0
  56. package/_esm/chains/definitions/openledger.js +17 -0
  57. package/_esm/chains/definitions/openledger.js.map +1 -0
  58. package/_esm/chains/definitions/unichain.js +1 -0
  59. package/_esm/chains/definitions/unichain.js.map +1 -1
  60. package/_esm/chains/definitions/unichainSepolia.js +1 -0
  61. package/_esm/chains/definitions/unichainSepolia.js.map +1 -1
  62. package/_esm/chains/definitions/zksync.js +1 -1
  63. package/_esm/chains/definitions/zksync.js.map +1 -1
  64. package/_esm/chains/definitions/zksyncSepoliaTestnet.js +1 -1
  65. package/_esm/chains/definitions/zksyncSepoliaTestnet.js.map +1 -1
  66. package/_esm/chains/index.js +2 -0
  67. package/_esm/chains/index.js.map +1 -1
  68. package/_esm/constants/abis.js +2 -2
  69. package/_esm/constants/abis.js.map +1 -1
  70. package/_esm/constants/contracts.js +1 -1
  71. package/_esm/constants/contracts.js.map +1 -1
  72. package/_esm/errors/version.js +1 -1
  73. package/_esm/errors/version.js.map +1 -1
  74. package/_esm/index.js +9 -2
  75. package/_esm/index.js.map +1 -1
  76. package/_esm/utils/index.js +3 -0
  77. package/_esm/utils/index.js.map +1 -1
  78. package/_esm/utils/rpc/http.js +2 -2
  79. package/_esm/utils/rpc/http.js.map +1 -1
  80. package/_esm/utils/signature/isErc8010Signature.js +6 -0
  81. package/_esm/utils/signature/isErc8010Signature.js.map +1 -0
  82. package/_esm/utils/signature/parseErc8010Signature.js +28 -0
  83. package/_esm/utils/signature/parseErc8010Signature.js.map +1 -0
  84. package/_esm/utils/signature/serializeErc8010Signature.js +28 -0
  85. package/_esm/utils/signature/serializeErc8010Signature.js.map +1 -0
  86. package/_types/actions/public/verifyHash.d.ts +56 -2
  87. package/_types/actions/public/verifyHash.d.ts.map +1 -1
  88. package/_types/chains/definitions/0g.d.ts +1 -1
  89. package/_types/chains/definitions/5ireChain.d.ts +1 -1
  90. package/_types/chains/definitions/abey.d.ts +1 -1
  91. package/_types/chains/definitions/abstract.d.ts +1 -1
  92. package/_types/chains/definitions/abstractTestnet.d.ts +1 -1
  93. package/_types/chains/definitions/acala.d.ts +1 -1
  94. package/_types/chains/definitions/acria.d.ts +1 -1
  95. package/_types/chains/definitions/adf.d.ts +1 -1
  96. package/_types/chains/definitions/agungTestnet.d.ts +1 -1
  97. package/_types/chains/definitions/aioz.d.ts +1 -1
  98. package/_types/chains/definitions/alienX.d.ts +1 -1
  99. package/_types/chains/definitions/alienXHalTestnet.d.ts +1 -1
  100. package/_types/chains/definitions/anvil.d.ts +1 -1
  101. package/_types/chains/definitions/arenaz.d.ts +1 -1
  102. package/_types/chains/definitions/areonNetworkTestnet.d.ts +1 -1
  103. package/_types/chains/definitions/auroraTestnet.d.ts +1 -1
  104. package/_types/chains/definitions/auroria.d.ts +1 -1
  105. package/_types/chains/definitions/autheoTestnet.d.ts +1 -1
  106. package/_types/chains/definitions/bahamut.d.ts +1 -1
  107. package/_types/chains/definitions/basecampTestnet.d.ts +1 -1
  108. package/_types/chains/definitions/bearNetworkChainMainnet.d.ts +1 -1
  109. package/_types/chains/definitions/bearNetworkChainTestnet.d.ts +1 -1
  110. package/_types/chains/definitions/bevmMainnet.d.ts +1 -1
  111. package/_types/chains/definitions/bifrost.d.ts +1 -1
  112. package/_types/chains/definitions/birdlayer.d.ts +1 -1
  113. package/_types/chains/definitions/bitTorrentTestnet.d.ts +1 -1
  114. package/_types/chains/definitions/bitkub.d.ts +1 -1
  115. package/_types/chains/definitions/bitkubTestnet.d.ts +1 -1
  116. package/_types/chains/definitions/bitrock.d.ts +1 -1
  117. package/_types/chains/definitions/bobaSepolia.d.ts +1 -1
  118. package/_types/chains/definitions/boolBetaMainnet.d.ts +1 -1
  119. package/_types/chains/definitions/botanixTestnet.d.ts +1 -1
  120. package/_types/chains/definitions/bounceBit.d.ts +1 -1
  121. package/_types/chains/definitions/bounceBitTestnet.d.ts +1 -1
  122. package/_types/chains/definitions/bronos.d.ts +1 -1
  123. package/_types/chains/definitions/bronosTestnet.d.ts +1 -1
  124. package/_types/chains/definitions/bscGreenfield.d.ts +1 -1
  125. package/_types/chains/definitions/bsquared.d.ts +1 -1
  126. package/_types/chains/definitions/bsquaredTestnet.d.ts +1 -1
  127. package/_types/chains/definitions/btr.d.ts +1 -1
  128. package/_types/chains/definitions/btrTestnet.d.ts +1 -1
  129. package/_types/chains/definitions/bxn.d.ts +1 -1
  130. package/_types/chains/definitions/bxnTestnet.d.ts +1 -1
  131. package/_types/chains/definitions/cannon.d.ts +1 -1
  132. package/_types/chains/definitions/chang.d.ts +1 -1
  133. package/_types/chains/definitions/chips.d.ts +1 -1
  134. package/_types/chains/definitions/citreaTestnet.d.ts +1 -1
  135. package/_types/chains/definitions/classic.d.ts +1 -1
  136. package/_types/chains/definitions/coinbit.d.ts +1 -1
  137. package/_types/chains/definitions/coinex.d.ts +1 -1
  138. package/_types/chains/definitions/creditCoin3Mainnet.d.ts +3 -3
  139. package/_types/chains/definitions/creditCoin3Testnet.d.ts +4 -4
  140. package/_types/chains/definitions/cronoszkEVMTestnet.d.ts +1 -1
  141. package/_types/chains/definitions/crossfi.d.ts +39 -0
  142. package/_types/chains/definitions/crossfi.d.ts.map +1 -0
  143. package/_types/chains/definitions/curtis.d.ts +1 -1
  144. package/_types/chains/definitions/dailyNetwork.d.ts +1 -1
  145. package/_types/chains/definitions/dailyNetworkTestnet.d.ts +1 -1
  146. package/_types/chains/definitions/dbkchain.d.ts +1 -1
  147. package/_types/chains/definitions/degen.d.ts +1 -1
  148. package/_types/chains/definitions/diode.d.ts +1 -1
  149. package/_types/chains/definitions/disChain.d.ts +1 -1
  150. package/_types/chains/definitions/dodochainTestnet.d.ts +1 -1
  151. package/_types/chains/definitions/dreyerxMainnet.d.ts +1 -1
  152. package/_types/chains/definitions/dreyerxTestnet.d.ts +1 -1
  153. package/_types/chains/definitions/dymension.d.ts +1 -1
  154. package/_types/chains/definitions/edexa.d.ts +1 -1
  155. package/_types/chains/definitions/edexaTestnet.d.ts +1 -1
  156. package/_types/chains/definitions/edgeless.d.ts +1 -1
  157. package/_types/chains/definitions/edgelessTestnet.d.ts +1 -1
  158. package/_types/chains/definitions/edgewareTestnet.d.ts +1 -1
  159. package/_types/chains/definitions/eduChain.d.ts +1 -1
  160. package/_types/chains/definitions/ekta.d.ts +1 -1
  161. package/_types/chains/definitions/ektaTestnet.d.ts +1 -1
  162. package/_types/chains/definitions/elastos.d.ts +1 -1
  163. package/_types/chains/definitions/elastosTestnet.d.ts +1 -1
  164. package/_types/chains/definitions/electroneum.d.ts +1 -1
  165. package/_types/chains/definitions/electroneumTestnet.d.ts +1 -1
  166. package/_types/chains/definitions/energy.d.ts +1 -1
  167. package/_types/chains/definitions/enuls.d.ts +1 -1
  168. package/_types/chains/definitions/etherlinkTestnet.d.ts +1 -1
  169. package/_types/chains/definitions/etp.d.ts +1 -1
  170. package/_types/chains/definitions/evmos.d.ts +1 -1
  171. package/_types/chains/definitions/evmosTestnet.d.ts +1 -1
  172. package/_types/chains/definitions/exSat.d.ts +1 -1
  173. package/_types/chains/definitions/exSatTestnet.d.ts +1 -1
  174. package/_types/chains/definitions/excelonMainnet.d.ts +1 -1
  175. package/_types/chains/definitions/expanse.d.ts +1 -1
  176. package/_types/chains/definitions/fantomSonicTestnet.d.ts +1 -1
  177. package/_types/chains/definitions/fibo.d.ts +1 -1
  178. package/_types/chains/definitions/filecoinCalibration.d.ts +1 -1
  179. package/_types/chains/definitions/filecoinHyperspace.d.ts +1 -1
  180. package/_types/chains/definitions/flareTestnet.d.ts +1 -1
  181. package/_types/chains/definitions/fluentTestnet.d.ts +1 -1
  182. package/_types/chains/definitions/forta.d.ts +1 -1
  183. package/_types/chains/definitions/foundry.d.ts +1 -1
  184. package/_types/chains/definitions/fuseSparknet.d.ts +1 -1
  185. package/_types/chains/definitions/genesys.d.ts +1 -1
  186. package/_types/chains/definitions/glideL1Protocol.d.ts +1 -1
  187. package/_types/chains/definitions/glideL2Protocol.d.ts +1 -1
  188. package/_types/chains/definitions/goChain.d.ts +1 -1
  189. package/_types/chains/definitions/graphite.d.ts +1 -1
  190. package/_types/chains/definitions/graphiteTestnet.d.ts +1 -1
  191. package/_types/chains/definitions/guruTestnet.d.ts +1 -1
  192. package/_types/chains/definitions/ham.d.ts +1 -1
  193. package/_types/chains/definitions/haqqMainnet.d.ts +1 -1
  194. package/_types/chains/definitions/haqqTestedge2.d.ts +1 -1
  195. package/_types/chains/definitions/hardhat.d.ts +1 -1
  196. package/_types/chains/definitions/hashkeyChainTestnet.d.ts +1 -1
  197. package/_types/chains/definitions/haustTestnet.d.ts +1 -1
  198. package/_types/chains/definitions/hedera.d.ts +1 -1
  199. package/_types/chains/definitions/hederaPreviewnet.d.ts +1 -1
  200. package/_types/chains/definitions/hederaTestnet.d.ts +1 -1
  201. package/_types/chains/definitions/hela.d.ts +1 -1
  202. package/_types/chains/definitions/hemi.d.ts +1 -1
  203. package/_types/chains/definitions/hemiSepolia.d.ts +1 -1
  204. package/_types/chains/definitions/hpb.d.ts +1 -1
  205. package/_types/chains/definitions/huddle01Mainnet.d.ts +1 -1
  206. package/_types/chains/definitions/huddle01Testnet.d.ts +1 -1
  207. package/_types/chains/definitions/humanity.d.ts +1 -1
  208. package/_types/chains/definitions/humanityTestnet.d.ts +1 -1
  209. package/_types/chains/definitions/hychain.d.ts +1 -1
  210. package/_types/chains/definitions/hychainTestnet.d.ts +1 -1
  211. package/_types/chains/definitions/hyperliquidEvmTestnet.d.ts +1 -1
  212. package/_types/chains/definitions/iSunCoin.d.ts +1 -1
  213. package/_types/chains/definitions/idchain.d.ts +1 -1
  214. package/_types/chains/definitions/iotaTestnet.d.ts +1 -1
  215. package/_types/chains/definitions/jocMainnet.d.ts +1 -1
  216. package/_types/chains/definitions/jocTestnet.d.ts +1 -1
  217. package/_types/chains/definitions/juneo.d.ts +1 -1
  218. package/_types/chains/definitions/juneoBCH1Chain.d.ts +1 -1
  219. package/_types/chains/definitions/juneoDAI1Chain.d.ts +1 -1
  220. package/_types/chains/definitions/juneoDOGE1Chain.d.ts +1 -1
  221. package/_types/chains/definitions/juneoEUR1Chain.d.ts +1 -1
  222. package/_types/chains/definitions/juneoGLD1Chain.d.ts +1 -1
  223. package/_types/chains/definitions/juneoLINK1Chain.d.ts +1 -1
  224. package/_types/chains/definitions/juneoLTC1Chain.d.ts +1 -1
  225. package/_types/chains/definitions/juneoSGD1Chain.d.ts +1 -1
  226. package/_types/chains/definitions/juneoSocotraTestnet.d.ts +1 -1
  227. package/_types/chains/definitions/juneoUSD1Chain.d.ts +1 -1
  228. package/_types/chains/definitions/juneoUSDT1Chain.d.ts +1 -1
  229. package/_types/chains/definitions/juneomBTC1Chain.d.ts +1 -1
  230. package/_types/chains/definitions/kakarotSepolia.d.ts +1 -1
  231. package/_types/chains/definitions/kakarotStarknetSepolia.d.ts +1 -1
  232. package/_types/chains/definitions/kardiaChain.d.ts +1 -1
  233. package/_types/chains/definitions/karura.d.ts +1 -1
  234. package/_types/chains/definitions/katana.d.ts +1 -1
  235. package/_types/chains/definitions/kinto.d.ts +1 -1
  236. package/_types/chains/definitions/l3x.d.ts +1 -1
  237. package/_types/chains/definitions/l3xTestnet.d.ts +1 -1
  238. package/_types/chains/definitions/lavita.d.ts +1 -1
  239. package/_types/chains/definitions/lens.d.ts +1 -1
  240. package/_types/chains/definitions/lensTestnet.d.ts +1 -1
  241. package/_types/chains/definitions/lestnet.d.ts +1 -1
  242. package/_types/chains/definitions/localhost.d.ts +1 -1
  243. package/_types/chains/definitions/loop.d.ts +1 -1
  244. package/_types/chains/definitions/lumoz.d.ts +1 -1
  245. package/_types/chains/definitions/lumozTestnet.d.ts +1 -1
  246. package/_types/chains/definitions/lycan.d.ts +1 -1
  247. package/_types/chains/definitions/mandala.d.ts +1 -1
  248. package/_types/chains/definitions/mantraDuKongEVMTestnet.d.ts +1 -1
  249. package/_types/chains/definitions/mapProtocol.d.ts +1 -1
  250. package/_types/chains/definitions/matchain.d.ts +1 -1
  251. package/_types/chains/definitions/matchainTestnet.d.ts +1 -1
  252. package/_types/chains/definitions/mchVerse.d.ts +1 -1
  253. package/_types/chains/definitions/mekong.d.ts +1 -1
  254. package/_types/chains/definitions/memecore.d.ts +1 -1
  255. package/_types/chains/definitions/memecoreFormicariumTestnet.d.ts +1 -1
  256. package/_types/chains/definitions/merlin.d.ts +1 -1
  257. package/_types/chains/definitions/merlinErigonTestnet.d.ts +1 -1
  258. package/_types/chains/definitions/metadium.d.ts +1 -1
  259. package/_types/chains/definitions/meter.d.ts +1 -1
  260. package/_types/chains/definitions/meterTestnet.d.ts +1 -1
  261. package/_types/chains/definitions/mint.d.ts +1 -1
  262. package/_types/chains/definitions/mintSepoliaTestnet.d.ts +1 -1
  263. package/_types/chains/definitions/mitosisTestnet.d.ts +1 -1
  264. package/_types/chains/definitions/moonbeamDev.d.ts +1 -1
  265. package/_types/chains/definitions/morphHolesky.d.ts +1 -1
  266. package/_types/chains/definitions/morphSepolia.d.ts +1 -1
  267. package/_types/chains/definitions/nahmii.d.ts +1 -1
  268. package/_types/chains/definitions/nautilus.d.ts +1 -1
  269. package/_types/chains/definitions/near.d.ts +1 -1
  270. package/_types/chains/definitions/nearTestnet.d.ts +1 -1
  271. package/_types/chains/definitions/neoxMainnet.d.ts +1 -1
  272. package/_types/chains/definitions/neoxT4.d.ts +1 -1
  273. package/_types/chains/definitions/newton.d.ts +1 -1
  274. package/_types/chains/definitions/oasisTestnet.d.ts +1 -1
  275. package/_types/chains/definitions/oasys.d.ts +1 -1
  276. package/_types/chains/definitions/odysseyTestnet.d.ts +1 -1
  277. package/_types/chains/definitions/omax.d.ts +1 -1
  278. package/_types/chains/definitions/omni.d.ts +1 -1
  279. package/_types/chains/definitions/omniOmega.d.ts +1 -1
  280. package/_types/chains/definitions/oneWorld.d.ts +1 -1
  281. package/_types/chains/definitions/oortmainnetDev.d.ts +1 -1
  282. package/_types/chains/definitions/openledger.d.ts +39 -0
  283. package/_types/chains/definitions/openledger.d.ts.map +1 -0
  284. package/_types/chains/definitions/optopia.d.ts +1 -1
  285. package/_types/chains/definitions/optopiaTestnet.d.ts +1 -1
  286. package/_types/chains/definitions/orderly.d.ts +1 -1
  287. package/_types/chains/definitions/orderlySepolia.d.ts +1 -1
  288. package/_types/chains/definitions/plasmaTestnet.d.ts +1 -1
  289. package/_types/chains/definitions/premiumBlock.d.ts +1 -1
  290. package/_types/chains/definitions/pumpfiTestnet.d.ts +1 -1
  291. package/_types/chains/definitions/qMainnet.d.ts +1 -1
  292. package/_types/chains/definitions/qTestnet.d.ts +1 -1
  293. package/_types/chains/definitions/redbellyMainnet.d.ts +1 -1
  294. package/_types/chains/definitions/redbellyTestnet.d.ts +1 -1
  295. package/_types/chains/definitions/reddioSepolia.d.ts +1 -1
  296. package/_types/chains/definitions/rei.d.ts +1 -1
  297. package/_types/chains/definitions/reyaNetwork.d.ts +1 -1
  298. package/_types/chains/definitions/rivalz.d.ts +1 -1
  299. package/_types/chains/definitions/saakuru.d.ts +1 -1
  300. package/_types/chains/definitions/sapphireTestnet.d.ts +1 -1
  301. package/_types/chains/definitions/satoshivm.d.ts +1 -1
  302. package/_types/chains/definitions/satoshivmTestnet.d.ts +1 -1
  303. package/_types/chains/definitions/seiDevnet.d.ts +1 -1
  304. package/_types/chains/definitions/seismicDevnet.d.ts +1 -1
  305. package/_types/chains/definitions/shardeum.d.ts +1 -1
  306. package/_types/chains/definitions/shardeumSphinx.d.ts +1 -1
  307. package/_types/chains/definitions/shiden.d.ts +1 -1
  308. package/_types/chains/definitions/shimmer.d.ts +1 -1
  309. package/_types/chains/definitions/shimmerTestnet.d.ts +1 -1
  310. package/_types/chains/definitions/sidra.d.ts +1 -1
  311. package/_types/chains/definitions/silicon.d.ts +1 -1
  312. package/_types/chains/definitions/siliconSepolia.d.ts +1 -1
  313. package/_types/chains/definitions/sixProtocol.d.ts +1 -1
  314. package/_types/chains/definitions/sketchpad.d.ts +1 -1
  315. package/_types/chains/definitions/songbirdTestnet.d.ts +1 -1
  316. package/_types/chains/definitions/sonicTestnet.d.ts +1 -1
  317. package/_types/chains/definitions/sovaSepolia.d.ts +1 -1
  318. package/_types/chains/definitions/spicy.d.ts +1 -1
  319. package/_types/chains/definitions/step.d.ts +1 -1
  320. package/_types/chains/definitions/storyOdyssey.d.ts +1 -1
  321. package/_types/chains/definitions/storyTestnet.d.ts +1 -1
  322. package/_types/chains/definitions/stratis.d.ts +1 -1
  323. package/_types/chains/definitions/superlumio.d.ts +1 -1
  324. package/_types/chains/definitions/swan.d.ts +1 -1
  325. package/_types/chains/definitions/swanProximaTestnet.d.ts +1 -1
  326. package/_types/chains/definitions/swanSaturnTestnet.d.ts +1 -1
  327. package/_types/chains/definitions/swissdlt.d.ts +1 -1
  328. package/_types/chains/definitions/taikoKatla.d.ts +1 -1
  329. package/_types/chains/definitions/taikoTestnetSepolia.d.ts +1 -1
  330. package/_types/chains/definitions/taraxa.d.ts +1 -1
  331. package/_types/chains/definitions/taraxaTestnet.d.ts +1 -1
  332. package/_types/chains/definitions/telcoinTestnet.d.ts +1 -1
  333. package/_types/chains/definitions/telosTestnet.d.ts +1 -1
  334. package/_types/chains/definitions/tenet.d.ts +1 -1
  335. package/_types/chains/definitions/ternoa.d.ts +1 -1
  336. package/_types/chains/definitions/that.d.ts +1 -1
  337. package/_types/chains/definitions/theta.d.ts +1 -1
  338. package/_types/chains/definitions/thetaTestnet.d.ts +1 -1
  339. package/_types/chains/definitions/thunderTestnet.d.ts +1 -1
  340. package/_types/chains/definitions/tiktrixTestnet.d.ts +1 -1
  341. package/_types/chains/definitions/tomb.d.ts +1 -1
  342. package/_types/chains/definitions/tron.d.ts +1 -1
  343. package/_types/chains/definitions/tronShasta.d.ts +1 -1
  344. package/_types/chains/definitions/ubiq.d.ts +1 -1
  345. package/_types/chains/definitions/ultra.d.ts +1 -1
  346. package/_types/chains/definitions/ultraTestnet.d.ts +1 -1
  347. package/_types/chains/definitions/ultron.d.ts +1 -1
  348. package/_types/chains/definitions/ultronTestnet.d.ts +1 -1
  349. package/_types/chains/definitions/unichain.d.ts +1 -1
  350. package/_types/chains/definitions/unichain.d.ts.map +1 -1
  351. package/_types/chains/definitions/unichainSepolia.d.ts +1 -1
  352. package/_types/chains/definitions/unichainSepolia.d.ts.map +1 -1
  353. package/_types/chains/definitions/unique.d.ts +1 -1
  354. package/_types/chains/definitions/uniqueOpal.d.ts +1 -1
  355. package/_types/chains/definitions/uniqueQuartz.d.ts +1 -1
  356. package/_types/chains/definitions/vanar.d.ts +1 -1
  357. package/_types/chains/definitions/vechain.d.ts +1 -1
  358. package/_types/chains/definitions/viction.d.ts +1 -1
  359. package/_types/chains/definitions/vision.d.ts +1 -1
  360. package/_types/chains/definitions/visionTestnet.d.ts +1 -1
  361. package/_types/chains/definitions/weavevmAlphanet.d.ts +1 -1
  362. package/_types/chains/definitions/wemix.d.ts +1 -1
  363. package/_types/chains/definitions/wemixTestnet.d.ts +1 -1
  364. package/_types/chains/definitions/westendAssetHub.d.ts +1 -1
  365. package/_types/chains/definitions/whitechainTestnet.d.ts +1 -1
  366. package/_types/chains/definitions/wmcTestnet.d.ts +1 -1
  367. package/_types/chains/definitions/worldLand.d.ts +1 -1
  368. package/_types/chains/definitions/xaiTestnet.d.ts +1 -1
  369. package/_types/chains/definitions/xphereMainnet.d.ts +1 -1
  370. package/_types/chains/definitions/xphereTestnet.d.ts +1 -1
  371. package/_types/chains/definitions/xrOne.d.ts +1 -1
  372. package/_types/chains/definitions/xrSepolia.d.ts +1 -1
  373. package/_types/chains/definitions/yooldoVerse.d.ts +1 -1
  374. package/_types/chains/definitions/yooldoVerseTestnet.d.ts +1 -1
  375. package/_types/chains/definitions/zeniq.d.ts +1 -1
  376. package/_types/chains/definitions/zeroNetwork.d.ts +1 -1
  377. package/_types/chains/definitions/zhejiang.d.ts +1 -1
  378. package/_types/chains/definitions/zilliqa.d.ts +1 -1
  379. package/_types/chains/definitions/zilliqaTestnet.d.ts +1 -1
  380. package/_types/chains/definitions/zkFairTestnet.d.ts +1 -1
  381. package/_types/chains/definitions/zkLinkNova.d.ts +1 -1
  382. package/_types/chains/definitions/zkLinkNovaSepoliaTestnet.d.ts +1 -1
  383. package/_types/chains/definitions/zksync.d.ts +1 -1
  384. package/_types/chains/definitions/zksyncInMemoryNode.d.ts +1 -1
  385. package/_types/chains/definitions/zksyncLocalCustomHyperchain.d.ts +1 -1
  386. package/_types/chains/definitions/zksyncLocalHyperchain.d.ts +1 -1
  387. package/_types/chains/definitions/zksyncLocalHyperchainL1.d.ts +1 -1
  388. package/_types/chains/definitions/zksyncLocalNode.d.ts +1 -1
  389. package/_types/chains/definitions/zksyncSepoliaTestnet.d.ts +1 -1
  390. package/_types/chains/index.d.ts +2 -0
  391. package/_types/chains/index.d.ts.map +1 -1
  392. package/_types/constants/abis.d.ts +2 -2
  393. package/_types/constants/abis.d.ts.map +1 -1
  394. package/_types/constants/contracts.d.ts +1 -1
  395. package/_types/constants/contracts.d.ts.map +1 -1
  396. package/_types/errors/version.d.ts +1 -1
  397. package/_types/errors/version.d.ts.map +1 -1
  398. package/_types/index.d.ts +9 -2
  399. package/_types/index.d.ts.map +1 -1
  400. package/_types/types/chain.d.ts +1 -1
  401. package/_types/types/chain.d.ts.map +1 -1
  402. package/_types/utils/index.d.ts +3 -0
  403. package/_types/utils/index.d.ts.map +1 -1
  404. package/_types/utils/rpc/http.d.ts +4 -0
  405. package/_types/utils/rpc/http.d.ts.map +1 -1
  406. package/_types/utils/signature/isErc8010Signature.d.ts +8 -0
  407. package/_types/utils/signature/isErc8010Signature.d.ts.map +1 -0
  408. package/_types/utils/signature/parseErc8010Signature.d.ts +30 -0
  409. package/_types/utils/signature/parseErc8010Signature.d.ts.map +1 -0
  410. package/_types/utils/signature/serializeErc8010Signature.d.ts +27 -0
  411. package/_types/utils/signature/serializeErc8010Signature.d.ts.map +1 -0
  412. package/actions/public/verifyHash.ts +297 -61
  413. package/chains/definitions/abstract.ts +1 -1
  414. package/chains/definitions/abstractTestnet.ts +1 -1
  415. package/chains/definitions/creditCoin3Mainnet.ts +2 -2
  416. package/chains/definitions/creditCoin3Testnet.ts +2 -2
  417. package/chains/definitions/crossfi.ts +21 -0
  418. package/chains/definitions/openledger.ts +17 -0
  419. package/chains/definitions/unichain.ts +1 -0
  420. package/chains/definitions/unichainSepolia.ts +1 -0
  421. package/chains/definitions/zksync.ts +1 -1
  422. package/chains/definitions/zksyncSepoliaTestnet.ts +1 -1
  423. package/chains/index.ts +2 -0
  424. package/constants/abis.ts +2 -2
  425. package/constants/contracts.ts +1 -1
  426. package/errors/version.ts +1 -1
  427. package/index.ts +24 -2
  428. package/package.json +3 -3
  429. package/types/chain.ts +1 -1
  430. package/utils/index.ts +18 -0
  431. package/utils/rpc/http.ts +8 -1
  432. package/utils/signature/isErc8010Signature.ts +14 -0
  433. package/utils/signature/parseErc8010Signature.ts +67 -0
  434. package/utils/signature/serializeErc8010Signature.ts +53 -0
@@ -1,10 +1,22 @@
1
1
  import type { Address } from 'abitype'
2
+ import * as SignatureErc6492 from 'ox/erc6492/SignatureErc6492'
3
+ import * as SignatureErc8010 from 'ox/erc8010/SignatureErc8010'
2
4
 
3
5
  import type { Client } from '../../clients/createClient.js'
4
6
  import type { Transport } from '../../clients/transports/createTransport.js'
5
- import { universalSignatureValidatorAbi } from '../../constants/abis.js'
6
- import { universalSignatureValidatorByteCode } from '../../constants/contracts.js'
7
- import { CallExecutionError } from '../../errors/contract.js'
7
+ import {
8
+ erc1271Abi,
9
+ erc6492SignatureValidatorAbi,
10
+ multicall3Abi,
11
+ } from '../../constants/abis.js'
12
+ import {
13
+ erc6492SignatureValidatorByteCode,
14
+ multicall3Bytecode,
15
+ } from '../../constants/contracts.js'
16
+ import {
17
+ CallExecutionError,
18
+ ContractFunctionExecutionError,
19
+ } from '../../errors/contract.js'
8
20
  import type { InvalidHexBooleanError } from '../../errors/encoding.js'
9
21
  import type { ErrorType } from '../../errors/utils.js'
10
22
  import type { Chain } from '../../types/chain.js'
@@ -14,17 +26,39 @@ import {
14
26
  type EncodeDeployDataErrorType,
15
27
  encodeDeployData,
16
28
  } from '../../utils/abi/encodeDeployData.js'
17
- import { getAddress } from '../../utils/address/getAddress.js'
18
- import { isAddressEqual } from '../../utils/address/isAddressEqual.js'
29
+ import {
30
+ type EncodeFunctionDataErrorType,
31
+ encodeFunctionData,
32
+ } from '../../utils/abi/encodeFunctionData.js'
33
+ import {
34
+ type GetAddressErrorType,
35
+ getAddress,
36
+ } from '../../utils/address/getAddress.js'
37
+ import {
38
+ type IsAddressEqualErrorType,
39
+ isAddressEqual,
40
+ } from '../../utils/address/isAddressEqual.js'
41
+ import { type ConcatHexErrorType, concatHex } from '../../utils/data/concat.js'
19
42
  import { type IsHexErrorType, isHex } from '../../utils/data/isHex.js'
20
- import { bytesToHex, type ToHexErrorType } from '../../utils/encoding/toHex.js'
43
+ import { hexToBool } from '../../utils/encoding/fromHex.js'
44
+ import {
45
+ type BytesToHexErrorType,
46
+ bytesToHex,
47
+ type NumberToHexErrorType,
48
+ numberToHex,
49
+ } from '../../utils/encoding/toHex.js'
21
50
  import { getAction } from '../../utils/getAction.js'
22
- import { encodeFunctionData, hexToBool } from '../../utils/index.js'
23
- import { isErc6492Signature } from '../../utils/signature/isErc6492Signature.js'
24
- import { recoverAddress } from '../../utils/signature/recoverAddress.js'
25
- import { serializeErc6492Signature } from '../../utils/signature/serializeErc6492Signature.js'
26
- import { serializeSignature } from '../../utils/signature/serializeSignature.js'
51
+ import {
52
+ type RecoverAddressErrorType,
53
+ recoverAddress,
54
+ } from '../../utils/signature/recoverAddress.js'
55
+ import {
56
+ type SerializeSignatureErrorType,
57
+ serializeSignature,
58
+ } from '../../utils/signature/serializeSignature.js'
27
59
  import { type CallErrorType, type CallParameters, call } from './call.js'
60
+ import { type GetCodeErrorType, getCode } from './getCode.js'
61
+ import { type ReadContractErrorType, readContract } from './readContract.js'
28
62
 
29
63
  export type VerifyHashParameters = Pick<
30
64
  CallParameters,
@@ -32,22 +66,36 @@ export type VerifyHashParameters = Pick<
32
66
  > & {
33
67
  /** The address that signed the original message. */
34
68
  address: Address
69
+ /** The address of the ERC-6492 signature verifier contract. */
70
+ erc6492VerifierAddress?: Address | undefined
35
71
  /** The hash to be verified. */
36
72
  hash: Hex
73
+ /** Multicall3 address for ERC-8010 verification. */
74
+ multicallAddress?: Address | undefined
37
75
  /** The signature that was generated by signing the message with the address's private key. */
38
76
  signature: Hex | ByteArray | Signature
77
+ /** @deprecated use `erc6492VerifierAddress` instead. */
39
78
  universalSignatureVerifierAddress?: Address | undefined
40
79
  } & OneOf<{ factory: Address; factoryData: Hex } | {}>
41
80
 
42
81
  export type VerifyHashReturnType = boolean
43
82
 
44
83
  export type VerifyHashErrorType =
84
+ | BytesToHexErrorType
45
85
  | CallErrorType
46
- | IsHexErrorType
47
- | ToHexErrorType
48
- | InvalidHexBooleanError
86
+ | ConcatHexErrorType
49
87
  | EncodeDeployDataErrorType
88
+ | EncodeFunctionDataErrorType
50
89
  | ErrorType
90
+ | GetAddressErrorType
91
+ | GetCodeErrorType
92
+ | InvalidHexBooleanError
93
+ | IsAddressEqualErrorType
94
+ | IsHexErrorType
95
+ | NumberToHexErrorType
96
+ | ReadContractErrorType
97
+ | RecoverAddressErrorType
98
+ | SerializeSignatureErrorType
51
99
 
52
100
  /**
53
101
  * Verifies a message hash onchain using ERC-6492.
@@ -62,62 +110,34 @@ export async function verifyHash<chain extends Chain | undefined>(
62
110
  ): Promise<VerifyHashReturnType> {
63
111
  const {
64
112
  address,
65
- factory,
66
- factoryData,
67
113
  hash,
68
- signature,
69
- universalSignatureVerifierAddress = client.chain?.contracts
70
- ?.universalSignatureVerifier?.address,
71
- ...rest
114
+ erc6492VerifierAddress:
115
+ verifierAddress = parameters.universalSignatureVerifierAddress ??
116
+ client.chain?.contracts?.erc6492Verifier?.address,
117
+ multicallAddress = parameters.multicallAddress ??
118
+ client.chain?.contracts?.multicall3?.address,
72
119
  } = parameters
73
120
 
74
- const signatureHex = (() => {
121
+ const signature = (() => {
122
+ const signature = parameters.signature
75
123
  if (isHex(signature)) return signature
76
124
  if (typeof signature === 'object' && 'r' in signature && 's' in signature)
77
125
  return serializeSignature(signature)
78
126
  return bytesToHex(signature)
79
127
  })()
80
128
 
81
- const wrappedSignature = await (async () => {
82
- // If no `factory` or `factoryData` is provided, it is assumed that the
83
- // address is not a Smart Account, or the Smart Account is already deployed.
84
- if (!factory && !factoryData) return signatureHex
85
-
86
- // If the signature is already wrapped, return the signature.
87
- if (isErc6492Signature(signatureHex)) return signatureHex
88
-
89
- // If the Smart Account is not deployed, wrap the signature with a 6492 wrapper
90
- // to perform counterfactual validation.
91
- return serializeErc6492Signature({
92
- address: factory!,
93
- data: factoryData!,
94
- signature: signatureHex,
95
- })
96
- })()
97
-
98
129
  try {
99
- const args = universalSignatureVerifierAddress
100
- ? ({
101
- to: universalSignatureVerifierAddress,
102
- data: encodeFunctionData({
103
- abi: universalSignatureValidatorAbi,
104
- functionName: 'isValidSig',
105
- args: [address, hash, wrappedSignature],
106
- }),
107
- ...rest,
108
- } as unknown as CallParameters)
109
- : ({
110
- data: encodeDeployData({
111
- abi: universalSignatureValidatorAbi,
112
- args: [address, hash, wrappedSignature],
113
- bytecode: universalSignatureValidatorByteCode,
114
- }),
115
- ...rest,
116
- } as unknown as CallParameters)
117
-
118
- const { data } = await getAction(client, call, 'call')(args)
119
-
120
- return hexToBool(data ?? '0x0')
130
+ if (SignatureErc8010.validate(signature))
131
+ return await verifyErc8010(client, {
132
+ ...parameters,
133
+ multicallAddress,
134
+ signature,
135
+ })
136
+ return await verifyErc6492(client, {
137
+ ...parameters,
138
+ verifierAddress,
139
+ signature,
140
+ })
121
141
  } catch (error) {
122
142
  // Fallback attempt to verify the signature via ECDSA recovery.
123
143
  try {
@@ -128,7 +148,7 @@ export async function verifyHash<chain extends Chain | undefined>(
128
148
  if (verified) return true
129
149
  } catch {}
130
150
 
131
- if (error instanceof CallExecutionError) {
151
+ if (error instanceof VerificationError) {
132
152
  // if the execution fails, the signature was not valid and an internal method inside of the validator reverted
133
153
  // this can happen for many reasons, for example if signer can not be recovered from the signature
134
154
  // or if the signature has no valid format
@@ -138,3 +158,219 @@ export async function verifyHash<chain extends Chain | undefined>(
138
158
  throw error
139
159
  }
140
160
  }
161
+
162
+ /** @internal */
163
+ export async function verifyErc8010(
164
+ client: Client,
165
+ parameters: verifyErc8010.Parameters,
166
+ ) {
167
+ const { address, blockNumber, blockTag, hash, multicallAddress } = parameters
168
+
169
+ const {
170
+ authorization,
171
+ data: initData,
172
+ signature,
173
+ to,
174
+ } = SignatureErc8010.unwrap(parameters.signature)
175
+
176
+ // Check if already delegated
177
+ const code = await getCode(client, {
178
+ address,
179
+ blockNumber,
180
+ blockTag,
181
+ } as never)
182
+
183
+ // If already delegated, perform standard ERC-1271 verification.
184
+ if (code === concatHex(['0xef0100', authorization.address]))
185
+ return await verifyErc1271(client, {
186
+ address,
187
+ blockNumber,
188
+ blockTag,
189
+ hash,
190
+ signature,
191
+ })
192
+
193
+ // Deployless verification.
194
+ const results = await getAction(
195
+ client,
196
+ readContract,
197
+ 'readContract',
198
+ )({
199
+ ...(multicallAddress
200
+ ? { address: multicallAddress }
201
+ : { code: multicall3Bytecode }),
202
+ authorizationList: [
203
+ {
204
+ address: authorization.address,
205
+ chainId: Number(authorization.chainId),
206
+ nonce: Number(authorization.nonce),
207
+ r: numberToHex(authorization.r, { size: 32 }),
208
+ s: numberToHex(authorization.s, { size: 32 }),
209
+ yParity: authorization.yParity,
210
+ },
211
+ ],
212
+ abi: multicall3Abi,
213
+ blockNumber,
214
+ blockTag: 'pending',
215
+ functionName: 'aggregate3',
216
+ args: [
217
+ [
218
+ ...(initData
219
+ ? [
220
+ {
221
+ allowFailure: true,
222
+ target: to ?? address,
223
+ callData: initData,
224
+ },
225
+ ]
226
+ : []),
227
+ {
228
+ allowFailure: true,
229
+ target: address,
230
+ callData: encodeFunctionData({
231
+ abi: erc1271Abi,
232
+ functionName: 'isValidSignature',
233
+ args: [hash, signature],
234
+ }),
235
+ },
236
+ ],
237
+ ],
238
+ })
239
+
240
+ const data = results[results.length - 1]?.returnData
241
+
242
+ if (data?.startsWith('0x1626ba7e')) return true
243
+ throw new VerificationError()
244
+ }
245
+
246
+ export namespace verifyErc8010 {
247
+ export type Parameters = Pick<CallParameters, 'blockNumber' | 'blockTag'> & {
248
+ /** The address that signed the original message. */
249
+ address: Address
250
+ /** The hash to be verified. */
251
+ hash: Hex
252
+ /** Multicall3 address for ERC-8010 verification. */
253
+ multicallAddress?: Address | undefined
254
+ /** The signature that was generated by signing the message with the address's private key. */
255
+ signature: Hex
256
+ }
257
+ }
258
+
259
+ /** @internal */
260
+ // biome-ignore lint/correctness/noUnusedVariables: _
261
+ async function verifyErc6492(
262
+ client: Client,
263
+ parameters: verifyErc6492.Parameters,
264
+ ) {
265
+ const {
266
+ address,
267
+ factory,
268
+ factoryData,
269
+ hash,
270
+ signature,
271
+ verifierAddress,
272
+ ...rest
273
+ } = parameters
274
+
275
+ const wrappedSignature = await (async () => {
276
+ // If no `factory` or `factoryData` is provided, it is assumed that the
277
+ // address is not a Smart Account, or the Smart Account is already deployed.
278
+ if (!factory && !factoryData) return signature
279
+
280
+ // If the signature is already wrapped, return the signature.
281
+ if (SignatureErc6492.validate(signature)) return signature
282
+
283
+ // If the Smart Account is not deployed, wrap the signature with a 6492 wrapper
284
+ // to perform counterfactual validation.
285
+ return SignatureErc6492.wrap({
286
+ data: factoryData!,
287
+ signature,
288
+ to: factory!,
289
+ })
290
+ })()
291
+
292
+ const args = verifierAddress
293
+ ? ({
294
+ to: verifierAddress,
295
+ data: encodeFunctionData({
296
+ abi: erc6492SignatureValidatorAbi,
297
+ functionName: 'isValidSig',
298
+ args: [address, hash, wrappedSignature],
299
+ }),
300
+ ...rest,
301
+ } as unknown as CallParameters)
302
+ : ({
303
+ data: encodeDeployData({
304
+ abi: erc6492SignatureValidatorAbi,
305
+ args: [address, hash, wrappedSignature],
306
+ bytecode: erc6492SignatureValidatorByteCode,
307
+ }),
308
+ ...rest,
309
+ } as unknown as CallParameters)
310
+
311
+ const { data } = await getAction(
312
+ client,
313
+ call,
314
+ 'call',
315
+ )(args).catch((error) => {
316
+ if (error instanceof CallExecutionError) throw new VerificationError()
317
+ throw error
318
+ })
319
+
320
+ if (hexToBool(data ?? '0x0')) return true
321
+ throw new VerificationError()
322
+ }
323
+
324
+ export namespace verifyErc6492 {
325
+ export type Parameters = Pick<CallParameters, 'blockNumber' | 'blockTag'> & {
326
+ /** The address that signed the original message. */
327
+ address: Address
328
+ /** The hash to be verified. */
329
+ hash: Hex
330
+ /** The signature that was generated by signing the message with the address's private key. */
331
+ signature: Hex
332
+ /** The address of the ERC-6492 signature verifier contract. */
333
+ verifierAddress?: Address | undefined
334
+ } & OneOf<{ factory: Address; factoryData: Hex } | {}>
335
+ }
336
+
337
+ /** @internal */
338
+ export async function verifyErc1271(
339
+ client: Client,
340
+ parameters: verifyErc1271.Parameters,
341
+ ) {
342
+ const { address, blockNumber, blockTag, hash, signature } = parameters
343
+
344
+ const result = await getAction(
345
+ client,
346
+ readContract,
347
+ 'readContract',
348
+ )({
349
+ address,
350
+ abi: erc1271Abi,
351
+ args: [hash, signature],
352
+ blockNumber,
353
+ blockTag,
354
+ functionName: 'isValidSignature',
355
+ }).catch((error) => {
356
+ if (error instanceof ContractFunctionExecutionError)
357
+ throw new VerificationError()
358
+ throw error
359
+ })
360
+
361
+ if (result.startsWith('0x1626ba7e')) return true
362
+ throw new VerificationError()
363
+ }
364
+
365
+ export namespace verifyErc1271 {
366
+ export type Parameters = Pick<CallParameters, 'blockNumber' | 'blockTag'> & {
367
+ /** The address that signed the original message. */
368
+ address: Address
369
+ /** The hash to be verified. */
370
+ hash: Hex
371
+ /** The signature that was generated by signing the message with the address's private key. */
372
+ signature: Hex
373
+ }
374
+ }
375
+
376
+ class VerificationError extends Error {}
@@ -31,7 +31,7 @@ export const abstract = /*#__PURE__*/ defineChain({
31
31
  address: '0xAa4De41dba0Ca5dCBb288b7cC6b708F3aaC759E7',
32
32
  blockCreated: 5288,
33
33
  },
34
- universalSignatureVerifier: {
34
+ erc6492Verifier: {
35
35
  address: '0xfB688330379976DA81eB64Fe4BF50d7401763B9C',
36
36
  blockCreated: 5263,
37
37
  },
@@ -29,7 +29,7 @@ export const abstractTestnet = /*#__PURE__*/ defineChain({
29
29
  address: '0xF9cda624FBC7e059355ce98a31693d299FACd963',
30
30
  blockCreated: 358349,
31
31
  },
32
- universalSignatureVerifier: {
32
+ erc6492Verifier: {
33
33
  address: '0xfB688330379976DA81eB64Fe4BF50d7401763B9C',
34
34
  blockCreated: 431682,
35
35
  },
@@ -2,8 +2,8 @@ import { defineChain } from '../../utils/chain/defineChain.js'
2
2
 
3
3
  export const creditCoin3Mainnet = /*#__PURE__*/ defineChain({
4
4
  id: 102030,
5
- name: 'Creditcoin3 Mainnet',
6
- nativeCurrency: { name: 'Creditcoin3 Mainnet', symbol: 'CTC', decimals: 18 },
5
+ name: 'Creditcoin',
6
+ nativeCurrency: { name: 'Creditcoin', symbol: 'CTC', decimals: 18 },
7
7
  rpcUrls: {
8
8
  default: {
9
9
  http: ['https://mainnet3.creditcoin.network'],
@@ -2,8 +2,8 @@ import { defineChain } from '../../utils/chain/defineChain.js'
2
2
 
3
3
  export const creditCoin3Testnet = /*#__PURE__*/ defineChain({
4
4
  id: 102031,
5
- name: 'Creditcoin3 Testnet',
6
- nativeCurrency: { name: 'Creditcoin3 Testnet', symbol: 'TCTC', decimals: 18 },
5
+ name: 'Creditcoin Testnet',
6
+ nativeCurrency: { name: 'Creditcoin Testnet', symbol: 'tCTC', decimals: 18 },
7
7
  rpcUrls: {
8
8
  default: {
9
9
  http: ['https://rpc.cc3-testnet.creditcoin.network'],
@@ -0,0 +1,21 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const crossfi = /*#__PURE__*/ defineChain({
4
+ id: 4_158,
5
+ name: 'CrossFi Mainnet',
6
+ nativeCurrency: {
7
+ decimals: 18,
8
+ name: 'CrossFi',
9
+ symbol: 'XFI',
10
+ },
11
+ rpcUrls: {
12
+ default: { http: ['https://rpc.mainnet.ms'] },
13
+ },
14
+ blockExplorers: {
15
+ default: {
16
+ name: 'CrossFi Blockchain Explorer',
17
+ url: 'https://xfiscan.com',
18
+ },
19
+ },
20
+ testnet: false,
21
+ })
@@ -0,0 +1,17 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const openledger = /*#__PURE__*/ defineChain({
4
+ id: 1612,
5
+ name: 'OpenLedger',
6
+ nativeCurrency: { name: 'Open', symbol: 'OPEN', decimals: 18 },
7
+ rpcUrls: {
8
+ default: { http: ['https://rpc.openledger.xyz'] },
9
+ },
10
+ blockExplorers: {
11
+ default: {
12
+ name: 'OpenLedger Explorer',
13
+ url: 'https://scan.openledger.xyz',
14
+ },
15
+ },
16
+ testnet: false,
17
+ })
@@ -8,6 +8,7 @@ export const unichain = /*#__PURE__*/ defineChain({
8
8
  id: 130,
9
9
  name: 'Unichain',
10
10
  nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
11
+ blockTime: 1_000,
11
12
  rpcUrls: {
12
13
  default: {
13
14
  http: ['https://mainnet.unichain.org/'],
@@ -12,6 +12,7 @@ export const unichainSepolia = /*#__PURE__*/ defineChain({
12
12
  symbol: 'ETH',
13
13
  decimals: 18,
14
14
  },
15
+ blockTime: 1_000,
15
16
  rpcUrls: {
16
17
  default: {
17
18
  http: ['https://sepolia.unichain.org'],
@@ -33,7 +33,7 @@ export const zksync = /*#__PURE__*/ defineChain({
33
33
  multicall3: {
34
34
  address: '0xF9cda624FBC7e059355ce98a31693d299FACd963',
35
35
  },
36
- universalSignatureVerifier: {
36
+ erc6492Verifier: {
37
37
  address: '0xfB688330379976DA81eB64Fe4BF50d7401763B9C',
38
38
  blockCreated: 45659388,
39
39
  },
@@ -29,7 +29,7 @@ export const zksyncSepoliaTestnet = /*#__PURE__*/ defineChain({
29
29
  multicall3: {
30
30
  address: '0xF9cda624FBC7e059355ce98a31693d299FACd963',
31
31
  },
32
- universalSignatureVerifier: {
32
+ erc6492Verifier: {
33
33
  address: '0xfB688330379976DA81eB64Fe4BF50d7401763B9C',
34
34
  blockCreated: 3855712,
35
35
  },
package/chains/index.ts CHANGED
@@ -119,6 +119,7 @@ export { cronosTestnet } from './definitions/cronosTestnet.js'
119
119
  export { cronoszkEVM } from './definitions/cronoszkEVM.js'
120
120
  export { cronoszkEVMTestnet } from './definitions/cronoszkEVMTestnet.js'
121
121
  export { crossbell } from './definitions/crossbell.js'
122
+ export { crossfi } from './definitions/crossfi.js'
122
123
  export { curtis } from './definitions/curtis.js'
123
124
  export { cyber } from './definitions/cyber.js'
124
125
  export { cyberTestnet } from './definitions/cyberTestnet.js'
@@ -394,6 +395,7 @@ export { oneWorld } from './definitions/oneWorld.js'
394
395
  export { oortMainnetDev } from './definitions/oortmainnetDev.js'
395
396
  export { opBNB } from './definitions/opBNB.js'
396
397
  export { opBNBTestnet } from './definitions/opBNBTestnet.js'
398
+ export { openledger } from './definitions/openledger.js'
397
399
  export { optimism } from './definitions/optimism.js'
398
400
  export { optimismGoerli } from './definitions/optimismGoerli.js'
399
401
  export { optimismSepolia } from './definitions/optimismSepolia.js'
package/constants/abis.ts CHANGED
@@ -274,7 +274,7 @@ export const addressResolverAbi = [
274
274
  // ERC-1271
275
275
  // isValidSignature(bytes32 hash, bytes signature) → bytes4 magicValue
276
276
  /** @internal */
277
- export const smartAccountAbi = [
277
+ export const erc1271Abi = [
278
278
  {
279
279
  name: 'isValidSignature',
280
280
  type: 'function',
@@ -290,7 +290,7 @@ export const smartAccountAbi = [
290
290
  // ERC-6492 - universal deployless signature validator contract
291
291
  // constructor(address _signer, bytes32 _hash, bytes _signature) → bytes4 returnValue
292
292
  // returnValue is either 0x1 (valid) or 0x0 (invalid)
293
- export const universalSignatureValidatorAbi = [
293
+ export const erc6492SignatureValidatorAbi = [
294
294
  {
295
295
  inputs: [
296
296
  {
@@ -4,7 +4,7 @@ export const deploylessCallViaBytecodeBytecode =
4
4
  export const deploylessCallViaFactoryBytecode =
5
5
  '0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe'
6
6
 
7
- export const universalSignatureValidatorByteCode =
7
+ export const erc6492SignatureValidatorByteCode =
8
8
  '0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572'
9
9
 
10
10
  export const multicall3Bytecode =
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.36.0'
1
+ export const version = '2.36.1-jxom-erc8010-20250901014739'
package/index.ts CHANGED
@@ -612,15 +612,19 @@ export {
612
612
  erc721Abi,
613
613
  erc1155Abi,
614
614
  erc4626Abi,
615
+ erc6492SignatureValidatorAbi,
616
+ /** @deprecated use `erc6492SignatureValidatorAbi` instead. */
617
+ erc6492SignatureValidatorAbi as universalSignatureValidatorAbi,
615
618
  multicall3Abi,
616
- universalSignatureValidatorAbi,
617
619
  } from './constants/abis.js'
618
620
  export { ethAddress, zeroAddress } from './constants/address.js'
619
621
  export { zeroHash } from './constants/bytes.js'
620
622
  export {
621
623
  deploylessCallViaBytecodeBytecode,
622
624
  deploylessCallViaFactoryBytecode,
623
- universalSignatureValidatorByteCode,
625
+ erc6492SignatureValidatorByteCode,
626
+ /** @deprecated use `erc6492SignatureValidatorByteCode` instead. */
627
+ erc6492SignatureValidatorByteCode as universalSignatureValidatorByteCode,
624
628
  } from './constants/contracts.js'
625
629
  export {
626
630
  maxInt8,
@@ -1689,6 +1693,12 @@ export {
1689
1693
  type IsErc6492SignatureReturnType,
1690
1694
  isErc6492Signature,
1691
1695
  } from './utils/signature/isErc6492Signature.js'
1696
+ export {
1697
+ type IsErc8010SignatureErrorType,
1698
+ type IsErc8010SignatureParameters,
1699
+ type IsErc8010SignatureReturnType,
1700
+ isErc8010Signature,
1701
+ } from './utils/signature/isErc8010Signature.js'
1692
1702
  export {
1693
1703
  /** @deprecated Use `ParseCompactSignatureErrorType`. */
1694
1704
  type ParseCompactSignatureErrorType as HexToCompactSignatureErrorType,
@@ -1703,6 +1713,12 @@ export {
1703
1713
  type ParseErc6492SignatureReturnType,
1704
1714
  parseErc6492Signature,
1705
1715
  } from './utils/signature/parseErc6492Signature.js'
1716
+ export {
1717
+ type ParseErc8010SignatureErrorType,
1718
+ type ParseErc8010SignatureParameters,
1719
+ type ParseErc8010SignatureReturnType,
1720
+ parseErc8010Signature,
1721
+ } from './utils/signature/parseErc8010Signature.js'
1706
1722
  export {
1707
1723
  /** @deprecated Use `ParseSignatureErrorType`. */
1708
1724
  type ParseSignatureErrorType as HexToSignatureErrorType,
@@ -1755,6 +1771,12 @@ export {
1755
1771
  type SerializeErc6492SignatureReturnType,
1756
1772
  serializeErc6492Signature,
1757
1773
  } from './utils/signature/serializeErc6492Signature.js'
1774
+ export {
1775
+ type SerializeErc8010SignatureErrorType,
1776
+ type SerializeErc8010SignatureParameters,
1777
+ type SerializeErc8010SignatureReturnType,
1778
+ serializeErc8010Signature,
1779
+ } from './utils/signature/serializeErc8010Signature.js'
1758
1780
  export {
1759
1781
  /** @deprecated Use `SignatureToHexErrorType` instead. */
1760
1782
  type SerializeSignatureErrorType as SignatureToHexErrorType,