如何使用PHP在Tron API上签署交易?

qv7cva1a  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(329)

我正在尝试创建一个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.将生成的签名添加到事务示例。

quhf5bfb

quhf5bfb1#

签署交易需要使用私钥。他们不希望您调用外部API来执行此操作,因为私钥本来就是私有的。这就是“离线执行”的意思,就像在您自己的代码中执行一样,这样您就仍然是唯一可以访问私钥的人。
您可能想看看iexbase/tron-api包。它是Tron API的基于PHP的实现。即使您不使用该包,也可以深入研究代码,看看它们是如何处理签名的。
您可以从这里开始,这是创建交易,签名,然后发送它的函数。

相关问题