为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用TRON纸钱包进行安全的TRX和USDT交易操作

标签:
区块链 安全
区块链技术开发

学习如何使用Python代码创建TRON纸币钱包,并安全地发送和接收TRX或USDT(TRC-20代币),到您的钱包。

照片由 Traxer 拍摄,来自 Unsplash

随着区块链技术的持续发展,越来越多的朋友加入了加密货币社区,经常来找我咨询诸如:如何确保创建一个安全的钱包,如何通过该钱包发送和接收加密货币,以及如何管理USDT(泰达币)交易等类似的问题。

我选择了TRON网络作为例子,来说明如何在区块链世界中确保安全并保持自信地行事。所以,让我们开始。

前提条件

在我们能够用_Python_编写代码之前,我们必须安装先决条件,这仅包括一个外部库,**tronpy**。要安装它,请在您的bash控制台中执行以下命令:

    pip install tronpy

根据其官方网页,此包不仅足够安全,并且还有一个Snyk报告,该报告中该包被标记为没有“已知的安全漏洞”,这令人感到满意。

如何制作您的安全纸质钱包(纸钱包):

首先,让我们澄清一下:一个 纸钱包 是包含一套 公钥和私钥 的纸质文件,用于离线加密货币存储的纸质文件。公钥 用于接收资金,而 私钥 则用于访问和花费这些资金。

本质上,你只需要将你的密钥对(公钥和私钥)写在纸上。在许多情况下,仅仅写下你的_私钥_或_种子_就允许你从中提取你的公钥地址,从而可以通过一段简单的Python代码或将私钥导出到TRON区块链官方应用之一(如这里)来管理和转移账户中的加密资产。

如果你使用来自该仓库的文件,只需执行以下命令:

python create_wallet.py

以下代码名为'_createwallet.py'的文件生成新的钱包并将其保存至文件secret_key.txt中。

    from tronpy.keys import PrivateKey  # 从tronpy.keys导入PrivateKey  

    wallet = PrivateKey.random()  # 钱包 = 随机生成的私钥  

    with open("secret_key.txt", "w") as secret_key_file:  
        secret_key_file.write(f'{wallet}')  # secret_key_file.write(f'{钱包}')  

    print("纸钱包创建完成,私钥已保存到文件。")  # print("纸钱包创建完成,私钥已保存。")

当运行代码时,打开文件secret_key.txt,并将您的_私钥_抄写在纸上以妥善保存。

重要的是一张纸上的密钥(私钥)应妥善保存,

如上图所示,生成后您将拥有您的私钥绝不要将此密钥透露给任何人,因为它可以访问您的加密货币资产。我仅为了演示才暴露了我的密钥,因为我不会将任何资产存放在该账户里。然而,您应该安全保存您的密钥,并仅在需要发送资金或向他人提供公钥以接收资金时使用它。就是这样。

如何将资金转入您的纸钱包

当你创建了纸钱包并将其保存在纸上时,你可能需要接收一些资金(USDT或TRX)到与你的密钥相关联的公共地址。要提取与你的私钥相关联的公共地址,你需要运行以下命令。

运行获取公共地址的Python脚本:python get_public_address.py

此命令使用以下代码来读取secret_key.txt文件,然后提取并展示公钥,该公钥是您在TRON网络中的钱包的公钥。

    从tronpy导入Tron, keys  

    secret_key = ''  
    with open("secret_key.txt", "r") as secret_key_file:  
        secret_key = secret_key_file.read().strip()  

    if secret_key:  
        wallet = keys.PrivateKey(bytes.fromhex(secret_key))  
        public_address = wallet.public_key.to_base58check_address()  
        print("Public TRON address:", public_address)

执行此代码之后,您将看到一个代码清单,如下所示,与以下内容非常相似:

以下为公开的TRON地址:TGGFcR1AHg96qMtoJcSYAe7Xmuyg4bqh1W

这是您在TRON网络中的公钥地址。您可以将此地址提供给想要向您发送资产的人。

从你创建钱包的那一刻起,当你刚刚创建钱包并且从未使用过它时,它将是不活跃的。在收到第一次交易后,它将在收到第一次交易后变为活跃状态。因此,通常来说,你需要接收任何资产到你的钱包中来激活它。

你的钱包位于TRONSCAN(特币扫描)中。

如上图所示的转账,我的朋友们已将TRX(11.99)代币和USDT(1.2)代币转入该账户。因此,此账户现已激活,这意味着您现在可以自由地进行任何转账或接收任何资金。

发送TRX的步骤

TRON 是手续费最低的区块链之一。这使得 TRON 对于用户来说非常有吸引力,希望在交易中最小化成本,不仅在转移 TRX,还包括 USDT 时。然而,这些费用取决于不同的因素,例如能耗、钱包是否有资产等。

在转移资产时,您必须确保不仅有足够的资产来完成转移,而且还足以支付相关费用。

    从tronpy导入Tron, keys  
    从tronpy.providers导入HTTPProvider  

    def trx_to_sun(trx_amount):  
        return int(trx_amount * 1000000)  

    api_key="[TRONGRID_API_KEY]" # 从 https://www.trongrid.io/dashboard 获取  
    to_address = "TNuTtmTdmdGWKQSnySroeXjyzGh1ZsRau2" # 您想要发送TRX的目标地址  
    amount = trx_to_sun(1.19)  # 您要发送的TRX金额  

    secret_key = ''  
    with open("secret_key.txt", "r") as secret_key_file:  
        secret_key = secret_key_file.read().strip()  

    tron = Tron(HTTPProvider(api_key=api_key))  

    if secret_key:  
        try:  
            wallet = keys.PrivateKey(bytes.fromhex(secret_key))  
            from_address = wallet.public_key.to_base58check_address()  
            txn = (  
                tron.trx.transfer(from_address, to_address, amount)  
                .备注("发送TRX")  
                .build()  
                .inspect()  
                .sign(wallet)  
                .broadcast()  
            )  

            txn.wait()  

            print(txn)  
        except Exception as e:  
            exit(f"提交失败: {e}")

如上文所示,在继续执行之前,您需要将 api_key 变量修改为您自己的密钥,您可以在 TRON Grid 门户 获取此密钥。此密钥使您能够与 TRON 节点 ,该节点位于 主网 上进行交互。

此外,您还需要将 to_address 变量改为你要转移 TRX 的地址。向你想要转账的人索要该地址。

在我的示例中,当您运行以下脚本时,将更改要发送的TRX数量为1.19 TRX,并将其发送到地址TNuTtmTdmdGWKQSnySroeXjyzGh1ZsRau2

    python send_trx.py

注:此命令用于执行发送交易的Python脚本。

当你修改了我刚才提到的变量后,保存更改,并使用上述命令运行脚本。你将在bash控制台中看到交易标识符(txid)。使用它来观察交易及其结果情况。

TRONSCAN中,TRX交易详情及其结果可查看

根据提供的图像,可以看到,我在TRON网络上定位到了交易ID为_3cd8b8d79805c237f6935751598ac9896f440817d809b87a7f6e1ce403fd5d0f_的交易,这是从脚本输出中得到的。我们的交易既成功确认成功。而且,我们只花费了1 TRX的手续费

如何发送USDT

在TRON网络上,转账USDT仍然是最受欢迎的活动,由于其相比其他方式手续费较低。例如,从Binance通过TRC-20代币在TRON网络上转移USDT仅需支付1 USDT

然而,从个人账户转账时情况会有所不同。转账费用根据因素如转账类型或接收钱包的不同而变化,从13.74 TRX(如果目标账户持有USDT余额)到最高27.6 TRX(如果目标账户没有USDT余额)。

请务必在运行脚本之前确认你有足够的TRX来付费。

    从tronpy导入Tron,keys  
    从tronpy.providers导入HTTPProvider  

    def usdt_to_sun(usdt_amount):  
        return int(usdt_amount * 1000000)  

    api_key="[TRONGRID_API_KEY]" # 请从 https://www.trongrid.io/dashboard 获取  
    to_address = "TNuTtmTdmdGWKQSnySroeXjyzGh1ZsRau2" # 您想要发送USDT的地址  
    amount = usdt_to_sun(7.8)  # 您想要发送的USDT数量  

    secret_key = ''  
    with open("secret_key.txt", "r") as secret_key_file:  
        secret_key = secret_key_file.read().strip()  

    tron = Tron(HTTPProvider(api_key=api_key))  

    contract_address = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' # 主网上的USDT代币地址  

    abi = [{  
         "outputs":[  
            {  
               "type":"bool"  
            }  
         ],  
         "inputs":[  
            {  
               "name":"_to",  
               "type":"address"  
            },  
            {  
               "name":"_value",  
               "type":"uint256"  
            }  
         ],  
         "name":"transfer",  
         "stateMutability":"Nonpayable",  
         "type":"Function"  
      }]  

    contract = tron.get_contract(contract_address)  
    contract.abi = abi  

    if secret_key:  
        try:  
            wallet = keys.PrivateKey(bytes.fromhex(secret_key))  
            from_address = wallet.public_key.to_base58check_address()  
            txn = (  
                contract.functions.transfer(to_address, amount)  
                .with_owner(from_address)  
                .fee_limit(50_000_000)  
                .build()  
                .inspect()  
                .sign(wallet)  
                .broadcast()  
            )  

            txn.wait()  

            print(txn)  
        except Exception as e:  
            exit(f"提交失败: {e}")

在TRON网络上转移USDT稍微复杂一点,因为它在运行USDT代币合约(TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t.)在主网上。

在运行上述脚本之前,请更改_目的地址_和要转移的_USDT币_数量。不要忘记输入您的API_KEY,该API密钥用于TRON节点,并保存更改。

准备好后,只需运行接下来的命令。

    python 运行发送usdt.py

如通常,您将收到一个交易ID(TxID),您可以使用它来跟踪交易的结果。

USDT交易及其交易结果在TRONSCAN

如上图所示,我们已成功转移7.8 USDT,并支付了27.6 TRX交易费,因为当时目的地地址的账户上尚无任何USDT。

下一步会是什么?

通过生成钱包、接收和转移不同类型的资产(包括TRX和USDT),使用各种方法(例如Python代码和官方钱包)来开展自己的实验。这将帮助你获得真实的体验,并能更好地以多种方式管理资产。

记住:千万不要泄露你的私钥,否则可能会导致你丢失加密货币。

要获取有关TRON网络开发功能的更多信息,请访问官方开发者官网

GitHub存储库

本文中解释的完整源代码,以及其他示例,均可在GitHub上找到。

联系我们

如果你对区块链开发或本文中提到的任何内容有疑问,可以在 Twitter 平台上向我提问。

推特账号:https://twitter.com/dmytro_sazonov(点击访问)

三立方

感谢您加入我们的社区!在您离开前,请允许我们对您说:

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消