USDT(也就是那个大家常说的Tether)是现在市场上流通量最大的那种稳定币,而它的代币精度这个事儿, 它直接决定了对链上进行转账操作以及和智能合约进行交互的时候, 最小的那个能操作的单位到底是啥。
你把搞懂这个参数这件事当成是前提条件, 因为在你想配置钱包或者是想去编写智能合约之前, 你必须先把这些底层的细节给弄清楚。
usdt精度是多少位
现在的人直接看懂的普通话书面语是这么说的, 就是在以太坊那个ERC20标准里面, 还有波场那个TRC20标准里面, USDT这个代币的精度统一被设置成了18位这一点是确定的, 然后在链上存储数字的时候, 每1个USDT会被存成1后面跟着18个零的那个大大的整数, 所以当你在区块浏览器上面看到任何一笔USDT的转账记录的时候, 实际看到的数值都是已经被放大了10的18次方的那个状态。
比如在进行那个0.5个USDT的转账操作的时候, 大家所看到的链上面记录的那个数值是500000000000000000, 而并不是直接显示的0.5。

在平常使用的时候, 取个6位小数也就足够了, 要知道1个USDT是等于1美元的, 至于第7位之后的数字, 在计价这块基本没啥意义。但是链上存储的内容始终是保留18位的, 所以在写合约的时候, 千万别把精度给它写死成6位, 不然会出现精度丢失的情况, 这样一来账目也对不上呢。
usdt精度为什么是18位
这18位这个数字, 它并不是由Tether这家公司单独拍板决定的, 它其实是Solidity这个编程语言里头, 对uint256这种数据类型给出的一个默认推荐的值。
你看那个ERC-20标准草案里面, 都白纸黑字写得明明白白是要用18位的, 然后呢这个TRC-20协议就把这个约定给原原本本地照搬过来了。这么做的目的是为了整条链条上的生态大家都共用同一套精度标准, 这样一来涉及到跨链桥、还有去中心化交易所这些地方在做数值换算的时候, 就不会乱套。
如果你进行涉及USDT的合约开发工作, 务必要通过调用decimals()这个方法动态读取精度, 不要硬编码数字18。虽然Tether这个公司几乎不会去改变这个数字, 但是在代码里面保留一定余地这种做法总是对的。
你要记住的是这个底层的基本事实, 也就是十八位这个数字在后面放着, 然后你再去看看前端界面上显示出来的六位小数, 这样的话,在进行链上去做交互操作的时候, 就不会出现掉进坑里面的情况了。
转载请注明出处:imToken官方网站,如有疑问,请联系(imtoken)。
本文地址:https://njztb.cn/imzxazb/10229.html
