我正在尝试创建一个USDT交易,在创建交易后,我很难签署交易,因为GetTransactionSign方法已被弃用。
他们建议离线做,但我不知道,我找不到一个解释的文件。你能给我看一个代码示例吗?
我是这样创建交易的:
public function createTransaction() {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.trongrid.io/wallet/createtransaction",
OTHER_OPTIONS,
CURLOPT_POSTFIELDS => json_encode([
'owner_address' => 'OWNER_ADDRESS',
'to_address' => 'TO_ADDRESS',
'amount' => 1,
'privateKey' => 'MY_PRIVATE_KEY',
'visible' => true
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"content-type: application/json"
],
]);
$transaction = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $transaction;
}
}
交易签名生成流程(来自单据)
1.计算交易的哈希值。
1.使用发送方的私钥对交易散列进行签名。
1.将生成的签名添加到事务示例。
1条答案
按热度按时间quhf5bfb1#
签署交易需要使用私钥。他们不希望您调用外部API来执行此操作,因为私钥本来就是私有的。这就是“离线执行”的意思,就像在您自己的代码中执行一样,这样您就仍然是唯一可以访问私钥的人。
您可能想看看iexbase/tron-api包。它是Tron API的基于PHP的实现。即使您不使用该包,也可以深入研究代码,看看它们是如何处理签名的。
您可以从这里开始,这是创建交易,签名,然后发送它的函数。