学习如何使用Python代码创建TRON纸币钱包,并安全地发送和接收TRX或USDT(TRC-20代币),到您的钱包。
随着区块链技术的持续发展,越来越多的朋友加入了加密货币社区,经常来找我咨询诸如:如何确保创建一个安全的钱包,如何通过该钱包发送和接收加密货币,以及如何管理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(点击访问)
三立方感谢您加入我们的社区!在您离开前,请允许我们对您说: