php TRON交易离线签名
本次演示使用http json 格式的数据进行签名

此开发包 调用的c++ 需要用到动态链接库 需要下载的小伙伴 可以去github 下载

签名说明

步骤

  1. 取交易的rawdata,转成byte[]格式。
  2. 对rawdata进行sha256运算。
  3. 用交易每个合约中地址对应的私钥(现在一般就是一个合约,一个私钥),对sha256的结果进行签名。
  4. 把签名结果添加到交易中。

算法

ECDSA算法,SECP256K。

php 依赖

  1. php版本大于7.4
  2. php 启用FFI模块

php代码 TronSign.php

<?php
class TronSignw z
{private static $instance;private static $lib;//防止外界实例化对象private function __construct(){}//防止外界clone实例private function __clone(){}public static function getInstance($lib_path){if (empty(self::$instance)) {if(!extension_loaded("ffi")) // Load the extensionthrow new Exception('Cound not load the FFI extension.');self::$lib = FFI::cdef("char* tron_transaction_sign_trc10(char* jsonstr, char* key);char* tron_transaction_sign_trc20(char* jsonstr, char* key);char* tron_easy_transfer_usdt(char* key,char* toAddress,long long int  amount);char* tron_easy_transfer(char* key,char* toAddress,long long int    amount);",$lib_path);self::$instance = new self;}return self::$instance;}public static function getInstances(){if(empty(self::$lib)&&empty(self::$instance)){self::$instance = new self;}return self::$instance;}public function tron_easy_transfer_usdt($key, $toAddress,$amount): string{return FFI::string(self::$lib->tron_easy_transfer_usdt($key,$toAddress,$amount));}public function tron_easy_transfer($key, $toAddress,$amount): string{return FFI::string(self::$lib->tron_easy_transfer($key,$toAddress,$amount));}public function tron_transaction_sign_trc10($json, $key): string{return FFI::string(self::$lib->tron_transaction_sign_trc10($json,$key));}public function tron_transaction_sign_trc20($json, $key): string{return FFI::string(self::$lib->tron_transaction_sign_trc20($json,$key));}
}

调用的代码 main.php

<?php
//设置库的位置
$lib_path = dirname(dirname(__FILE__)).'/library/libsigntron-amd64-linux.so';//将<PATH>替换为库的实际路径
include "TronSign.php";
$info=TronSign::getInstance($lib_path);
$json='{"result":{"result":true},"transaction":{"visible":true,"txID":"6b501aaae1d82a3d30fd1c5b50305bb0e24bd92d3589cf99ed458371781ceca9","raw_data":{"contract":[{"parameter":{"value":{"data":"a9059cbb0000000000000000000000003c2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dcd6500","owner_address":"TJigfkHs1QrbZbKwWd7CY7HSUKLX71FFFF","contract_address":"TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs"},"type_url":"type.googleapis.com/protocol.TriggerSmartContract"},"type":"TriggerSmartContract"}],"ref_block_bytes":"a2f1","ref_block_hash":"d22237be586463e3","expiration":1667042817000,"fee_limit":1000000000,"timestamp":1667042759371},"raw_data_hex":"0a02a2f12208d22237be586463e340e8e7fa9bc2305aae01081f12a9010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a15415ff9fce781452ce0a031472d8a58fae6c8cc70b612154142a1e39aefa49290f2b3f9ed688d7cecf86cd6e02244a9059cbb0000000000000000000000003c2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dcd650070cba5f79bc23090018094ebdc03"}}';$key="2d2c8062fa668ea168172d0926f391c033b4c3699c3b79afed028b027e05bb31";
$res=$info->tron_transaction_sign_trc20($json, $key);
echo $res;

运行:php main.php

输入的JSON 数据

{"result": {"result": true},"transaction": {"visible": true,"txID": "6b501aaae1d82a3d30fd1c5b50305bb0e24bd92d3589cf99ed458371781ceca9","raw_data": {"contract": [{"parameter": {"value": {"data": "a9059cbb0000000000000000000000003c2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dcd6500","owner_address": "TJigfkHs1QrbZbKwWd7CY7HSUKLX71FFFF","contract_address": "TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs"},"type_url": "type.googleapis.com/protocol.TriggerSmartContract"},"type": "TriggerSmartContract"}],"ref_block_bytes": "a2f1","ref_block_hash": "d22237be586463e3","expiration": 1667042817000,"fee_limit": 1000000000,"timestamp": 1667042759371},"raw_data_hex": "0a02a2f12208d22237be586463e340e8e7fa9bc2305aae01081f12a9010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a15415ff9fce781452ce0a031472d8a58fae6c8cc70b612154142a1e39aefa49290f2b3f9ed688d7cecf86cd6e02244a9059cbb0000000000000000000000003c2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dcd650070cba5f79bc23090018094ebdc03"}
}

输出结果

0ad4010a02a2f12208d22237be586463e340e8e7fa9bc2305aae01081f12a9010a31747970652e676f6f676c65617069732
e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a15415ff9fce781452ce0a031472d8a58fae6c8cc70b612154142a1e39aefa49290f2b3f9ed688d7cecf86cd6e02244a9059cbb0000000000000000000000003c
2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dc
d650070cba5f79bc23090018094ebdc03124108c3717d52ad49f2694ae74a411d08e9bbc3efc86e326d85ccdb1946cc12aa
ff269f476ce5fb8e29ae2a32fc4c7b6a1f04319c2ef1cbadfa59b724c10a4e9efe00

github telegram @shina_jin1

Php 波场离线签名 Tron离线签名相关推荐

  1. 从Tronbull引狂欢,看APENFT与波场带来的新可能

    文|螳螂观察 作者| 青月 加密头像,又被体育娱乐明星"拱"上了C位. 先是NBA当家球星Stephen Curry花55以太坊,也就是18万美元购买猿猴游艇俱乐部头像,直接冲上了 ...

  2. Python Tron波场 离线交易签名

    Python TRON交易离线签名 本次演示使用http json 格式的数据进行签名 ⚠️此开发包 需要用到动态链接库 需要下载的小伙伴 可以去github 下载 签名说明 步骤 取交易的rawda ...

  3. 聊一聊区块链-波场技术, 只聊技术

    标题 聊一聊区块链-波场技术, 只聊技术 前言 背景 波场链 区块链是什么 共识 工作量证明 Pow 权益证明 Pos 节点 区块 代币 Trx Trc20-usdt 转账 写在最后 聊一聊区块链-波 ...

  4. iOS使用Security.framework进行RSA 加密解密签名和验证签名

    iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...

  5. Android APK的签名--笔记版 V1 签名和V2签名总结

    1. 工具介绍 jarsigner 是JDK提供的针对jar包签名的通用工具, 位于 JDK/bin/jarsigner apksigner 是Google官方提供的针对Android apk 签名验 ...

  6. 波场php转,波场TRC20 Token PHP交互

    总结下 波场TRC20 Token与PHP交互. composer库iexbase/tron-api 只支持TRC10 Token,不支持TRC20,需要自己去实现. Token余额 使用TronGr ...

  7. java 1.8签名apk_给Android的APK程序签名和重新签名的方法

    签名工具的使用Android源码编译出来的signapk.jar既可给apk签名,也可给rom签名的.使用格式: java –jar signapk.jar [-w] publickey.x509[. ...

  8. 群签名和环签名的区别_超级签名和TF签名使用个人开发者账号的区别是什么?...

    了解过当前ios签名的朋友都知道,目前ios签名共分为企业签名.超级签名和TF签名,其中企业签名作为签名行业的"老大哥",深受各路开发者和App运营商的喜爱.而我们今天的主角却是其 ...

  9. 超级签名源码_企业签名和超级签名有哪些区别?

    我们知道iOS系统对于非App Store中的应用是有安装限制的,而App Store严格的审核机制又将许多APP拒之门外,这令不少开发者们郁闷不已. 所以很多开发者们会选择苹果签名的方式,让自己的i ...

最新文章

  1. POPUP_TO_CONFIRM_STEP
  2. 交换机工作原理_什么是POE交换机,它有什么好处?
  3. ​如何实现简单高效的移动剪辑框架
  4. PHP异常与错误处理机制
  5. http:(5):http状态码
  6. 超高薪的机器学习工程师和现在的前后端们有什么不同?
  7. chromebook开发php,玩转chromebook
  8. 动态规划:leetcode 416 分割等和子集(背包问题应用)
  9. 在vue中使用axios发送post请求,参数方式
  10. LGOJP1941 飞扬的小鸟
  11. 一个比较有含金量的架构认证
  12. 三级等级保护之安全物理环境
  13. Free Pascal初次体验(有亮点哦)
  14. 华为android是什么文件夹,华为手机里的文件夹代表什么?哪些可以清除?看完秒懂!...
  15. GitLab CI/CD 配置指南 .gitlab-ci.yml文件的配置
  16. linux识别新显示器,Linux 显示器未正确识别 最佳分辨率 Ubuntu 10.10 X11
  17. mac安装texstudio+mactex(texlive)2022+中文字体
  18. 游戏c是什么网络语言,游戏cpdd网络用语是什么意思 王者荣耀里很常见
  19. oracle 11g安装包下载地址合集
  20. electron解决下载慢(亲测有效)

热门文章

  1. HI3520DV200+GV7601采集1080P视频
  2. 计算机组成原理(5)CPU功能 控制器/运算器/寄存器/操作控制器、时序发生器 指令周期 方框图 微程序 流水CPU 三种相关性
  3. 刷题回顾(持续更新)
  4. Mac小技巧:强制退出程序的六种方法
  5. 宜信支付结算账户系统浅析
  6. 技术人的“灵魂三问”,阿里工程师如何解答?
  7. 教程:MySQL 8安装与配置及注意事项
  8. 香港服务器托管服务怎么样?
  9. 考研英语核心词汇辨析(黑魔方系列2007版之一)
  10. 面试 - 阿里华为资深HR面试套路全揭晓