Php 波场离线签名 Tron离线签名
php TRON交易离线签名
本次演示使用http json 格式的数据进行签名
此开发包 调用的c++ 需要用到动态链接库 需要下载的小伙伴 可以去github 下载
签名说明
步骤
- 取交易的rawdata,转成byte[]格式。
- 对rawdata进行sha256运算。
- 用交易每个合约中地址对应的私钥(现在一般就是一个合约,一个私钥),对sha256的结果进行签名。
- 把签名结果添加到交易中。
算法
ECDSA算法,SECP256K。
php 依赖
- php版本大于7.4
- 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离线签名相关推荐
- 从Tronbull引狂欢,看APENFT与波场带来的新可能
文|螳螂观察 作者| 青月 加密头像,又被体育娱乐明星"拱"上了C位. 先是NBA当家球星Stephen Curry花55以太坊,也就是18万美元购买猿猴游艇俱乐部头像,直接冲上了 ...
- Python Tron波场 离线交易签名
Python TRON交易离线签名 本次演示使用http json 格式的数据进行签名 ⚠️此开发包 需要用到动态链接库 需要下载的小伙伴 可以去github 下载 签名说明 步骤 取交易的rawda ...
- 聊一聊区块链-波场技术, 只聊技术
标题 聊一聊区块链-波场技术, 只聊技术 前言 背景 波场链 区块链是什么 共识 工作量证明 Pow 权益证明 Pos 节点 区块 代币 Trx Trc20-usdt 转账 写在最后 聊一聊区块链-波 ...
- iOS使用Security.framework进行RSA 加密解密签名和验证签名
iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...
- Android APK的签名--笔记版 V1 签名和V2签名总结
1. 工具介绍 jarsigner 是JDK提供的针对jar包签名的通用工具, 位于 JDK/bin/jarsigner apksigner 是Google官方提供的针对Android apk 签名验 ...
- 波场php转,波场TRC20 Token PHP交互
总结下 波场TRC20 Token与PHP交互. composer库iexbase/tron-api 只支持TRC10 Token,不支持TRC20,需要自己去实现. Token余额 使用TronGr ...
- java 1.8签名apk_给Android的APK程序签名和重新签名的方法
签名工具的使用Android源码编译出来的signapk.jar既可给apk签名,也可给rom签名的.使用格式: java –jar signapk.jar [-w] publickey.x509[. ...
- 群签名和环签名的区别_超级签名和TF签名使用个人开发者账号的区别是什么?...
了解过当前ios签名的朋友都知道,目前ios签名共分为企业签名.超级签名和TF签名,其中企业签名作为签名行业的"老大哥",深受各路开发者和App运营商的喜爱.而我们今天的主角却是其 ...
- 超级签名源码_企业签名和超级签名有哪些区别?
我们知道iOS系统对于非App Store中的应用是有安装限制的,而App Store严格的审核机制又将许多APP拒之门外,这令不少开发者们郁闷不已. 所以很多开发者们会选择苹果签名的方式,让自己的i ...
最新文章
- POPUP_TO_CONFIRM_STEP
- 交换机工作原理_什么是POE交换机,它有什么好处?
- ​如何实现简单高效的移动剪辑框架
- PHP异常与错误处理机制
- http:(5):http状态码
- 超高薪的机器学习工程师和现在的前后端们有什么不同?
- chromebook开发php,玩转chromebook
- 动态规划:leetcode 416 分割等和子集(背包问题应用)
- 在vue中使用axios发送post请求,参数方式
- LGOJP1941 飞扬的小鸟
- 一个比较有含金量的架构认证
- 三级等级保护之安全物理环境
- Free Pascal初次体验(有亮点哦)
- 华为android是什么文件夹,华为手机里的文件夹代表什么?哪些可以清除?看完秒懂!...
- GitLab CI/CD 配置指南 .gitlab-ci.yml文件的配置
- linux识别新显示器,Linux 显示器未正确识别 最佳分辨率 Ubuntu 10.10 X11
- mac安装texstudio+mactex(texlive)2022+中文字体
- 游戏c是什么网络语言,游戏cpdd网络用语是什么意思 王者荣耀里很常见
- oracle 11g安装包下载地址合集
- electron解决下载慢(亲测有效)