Ethers.js

將wei值傳遞給EIP712 _signTypedData時出現溢出錯誤

  • April 30, 2022
   const domainSeparator = {
       chainId: 5
   };
   
   const TestInfo = [
       { name: 'contractAddress', type: 'address' },
       { name: 'fee', type: 'uint256' }
     ];

   const data = {
       contractAddress: '.....',     
       airdropFee: 52009946125155410 // wei value
   };
   
   const signature = await signer._signTypedData(domainSeparator, { TestInfo }, data);

原因:‘溢出’,程式碼:‘NUMERIC_FAULT’,故障:‘溢出’,操作:‘BigNumber.from’,值:52009946125155410

solidity 函式將uint256weth 數量的 wei 值作為參數,所以我發送該數字但出現溢出錯誤。我該如何解決?

您的值高於JavaScript52009946125155410 中可安全表示為類型的最大整數:因此 ethers.js 拋出錯誤Number``9007199254740991

只需將其作為字元串傳遞:

airdropFee: "52009946125155410" // wei value

它應該沒問題。

引用自:https://ethereum.stackexchange.com/questions/127222