@tonsdk/core
v0.9.4
Published
TVM arithmetic primitives and cell utilities for TON blockchain
Downloads
735
Maintainers
Readme
@tonsdk/core
TVM arithmetic primitives and cell utilities for TON blockchain. Replicates exact TVM integer arithmetic for off-chain verification.
Why?
@ton/core uses JavaScript BigInt which doesn't exactly match TVM's 257-bit integer semantics. When verifying on-chain calculations off-chain (fee estimation, DEX math, staking rewards), you need exact arithmetic matching.
Installation
npm install @tonsdk/coreArithmetic
import { muldiv, muldivfloor, muldivmod, TVMArithmetic } from '@tonsdk/core';
// TVM MULDIV - (x * y) / z with 514-bit intermediate precision
const result = muldiv(1000000000000000000n, 500n, 1000n);
// Floor division (toward negative infinity)
const floored = muldivfloor(amount, rate, 1000000000n);
// Quotient and remainder
const [quot, rem] = muldivmod(x, y, z);
// Stateful arithmetic with overflow checking
const tvm = new TVMArithmetic({ checkOverflow: true });
const safe = tvm.muldiv(a, b, c);Fee Calculation
Matches TVM GETGASFEE / GETFORWARDFEE / STORAGEFEES exactly:
import { computeGasFee, computeForwardFee, computeStorageFee } from '@tonsdk/core';
// Gas fee for transaction
const gasFee = computeGasFee(50000, { gasPrice: 1000n });
// Forward fee for internal message
const fwdFee = computeForwardFee(3, 1024, {
lumpPrice: 10000000n,
cellPrice: 100n,
bitPrice: 1n
});
// Storage fee
const storageFee = computeStorageFee(10, 8192, 86400);Cell Inspection
import { inspectCell } from '@tonsdk/core';
const tree = inspectCell(cell);
// { bits: 256, refs: 2, hash: '...', children: [...] }Use Cases
- DEX verification: Replicate AMM/stableswap math off-chain
- Fee estimation: Exact fee calculation before sending
- Testing: Verify contract arithmetic matches expectations
- Auditing: Check on-chain calculations in tooling
License
MIT
