如何在PHP中以编程方式验证Tether(TRC20)钱包地址?

vltsax25  于 2023-01-19  发布在  PHP
关注(0)|答案(4)|浏览(693)

我遇到了一个与验证加密货币钱包地址相关的问题,特别是USDT。
USDT可以作为BTC或ETH地址进行验证,具体取决于网络类型。
基本上是这样的:

  • 如果加密货币为USDT,链类型为ERC20,则根据ETH地址格式验证地址。
  • 如果加密货币为USDT,钱包类型为OMNI,则根据BTC地址格式验证地址。

我还没有找到USDT:TRC20地址的具体验证方法,也不知道如何验证它们。

sgtfey8w

sgtfey8w1#

匹配Tron地址的正则表达式:T[A-Za-z1-9]{33}

eoigrqb6

eoigrqb62#

最好不要自己验证地址,您应该使用类似Tron协议的API,不仅检查地址是否有效,还检查它是否是垃圾邮件
您需要查看文档
tronprotocol
也检查如何使http请求
here
也称为Shielded TRC-20
检查this网站作为参考

nbnkbykc

nbnkbykc3#

trc20地址特点:
编码的主网络地址以T开始,长度为34字节。

<?php
    function isTrc20($address){
       return substr($address,0,1)=="T" and strlen($address)==34;
    }
    if(isTrc20("TC74QG8tbtixG5Raa4fEifywgjrFs45fNz"))
       echo "yes";
    else
        echo "no";

资料来源:https://medium.com/tron-foundation/tron-developer-guide-account-2446633a750

sycxhyv7

sycxhyv74#

您可以根据tron whitepaper-第4.2节(关于从公钥创建地址)使用嵌入式校验和验证地址。
使用SHA 3 -256函数散列公钥(SHA 3采用的协议是KECCAK-256),提取结果的后20字节,字节数组的开头加上41,初始地址长度为21字节,使用SHA 3 -256函数对地址进行两次哈希,取前4字节作为验证码。在初始地址末尾加上验证码,通过base 58编码得到base 58 check格式的地址,编码后的主网地址以T开头,长度为34字节。
1.您需要使用base 58解码地址
1.最后四个字节是校验和(checkSum 1)
1.然后,您需要使用sha 256算法两次对解码地址本身(不带校验和)进行散列,并获取前4个字节
1.这些字节是实际校验和(checkSum 2)
1.如果checkSum 1和checkSum 2相同,则可将地址视为有效
如果你熟悉JS的话,你可以查看我的gist with JS实现

相关问题