当前位置: 首页 > wzjs >正文

备案后的域名改网站名专业公司网站 南通

备案后的域名改网站名,专业公司网站 南通,做网站服务器装虚拟机,阳泉那有做网站的👻前言 我在使用rawDataHex和privateKeyHex进行签名的时候,是可以正常签名的,但是一广播就失败,无法上链,以下是我签名的方法 /// Tron签名函数,返回 r s v 的 65字节签名String signTronTx(Uint8List …

👻前言

我在使用rawDataHex和privateKeyHex进行签名的时候,是可以正常签名的,但是一广播就失败,无法上链,以下是我签名的方法

/// Tron签名函数,返回 r + s + v 的 65字节签名String signTronTx(Uint8List rawData, String privateKeyHex) {// 1. SHA256 哈希final hash = sha256.convert(rawData).bytes;// 2. 私钥 hex -> bytesfinal privateKeyBytes = web3.hexToBytes(privateKeyHex);// 3. 签名final sig = web3.sign(Uint8List.fromList(hash), privateKeyBytes);// 4. 拼接 r(32) + s(32) + v(1)final r = sig.r.toBytesPadded(32);// final r = bigIntToBytes(sig.r, 32);// final s = bigIntToBytes(sig.s, 32);final s = sig.s.toBytesPadded(32);final v = Uint8List.fromList([sig.v]);final sigList = Uint8List.fromList([...r, ...s, ...v]);return hex.encode(sigList);}

后来查询了大量文档才知道,我这个是r + s + v格式的字节签名,能上链的签名是v + r + s 格式的 65 字节签名,所以导致失败。

🧠 背景知识:椭圆曲线签名(ECDSA)

在 ECDSA(用于 Tron、Ethereum 等链)中,签名的结构是:

r(32字节) + s(32字节) + v(1字节)

注意:但是这个顺序并不是所有链都一样,不同链对签名的顺序有细微要求。

✅正确格式:v + r + s

Tron 的签名顺序是:

[1 byte v] + [32 byte r] + [32 byte s] = 65 字节

✏️ 修改 signTronTx 函数

String signTronTx(Uint8List rawData, String privateKeyHex) {// 1. SHA256 哈希final hash = sha256.convert(rawData).bytes;// 2. 私钥 hex -> bytesfinal privateKeyBytes = web3.hexToBytes(privateKeyHex);// 3. 签名final sig = web3.sign(Uint8List.fromList(hash), privateKeyBytes);// 4. 拼接成 [v, r, s]final r = sig.r.toBytesPadded(32);final s = sig.s.toBytesPadded(32);final v = Uint8List.fromList([sig.v]); // 注意,这里是 1 字节// ✅ 顺序改成 v + r + sfinal sigList = Uint8List.fromList([...v, ...r, ...s]);return hex.encode(sigList);
}

🧪 为什么 Tron 使用 v + r + s?

这是 Tron 在其 Protobuf 结构 Transaction.raw_data.contract.parameter 中对签名的要求,确保节点验证签名时能正确地解析和恢复公钥。

不同链对 v 的使用方式略有不同:

v的位置v的值
Ethereum最后(r+s+v)27/28 或 0/1
Tron最前(v+r+s)27/28

📌 总结

项目正确方式错误方式
签名顺序✅ v + r + s❌ r + s + v
为什么顺序重要?Tron 验签是按这个顺序解析的错序会导致签名无效
如何修复?用 Uint8List.fromList([…v, …r, …s]) 拼接-
v 是否要加 27/28?通常要,如果是 0/1 就加 27否则恢复公钥会失败
http://www.dtcms.com/wzjs/794997.html

相关文章:

  • 网页制作个人介绍模板优化网站建设
  • 不记得在哪里做的网站备案wordpress自定义分类调用
  • 中型网站开发语言网站建设 乐达云创
  • 专门做家具网站毕业设计代做网站jsp
  • 目标网站上做关键字布局只做百度移动端网站可以吗
  • 网页制作素材库哪个网站如何购买建设网站系统
  • 胡芦娃app软件下载网站wordpress首页显示推荐标志
  • 福州建网站公司网络规划设计师待遇怎么样
  • 网站怎么才可以不备案郑州信息网平台
  • 中国建设银银行招聘网站wordpress常规地址改错了怎么办
  • 做网站换域名网站留言板制作
  • 綦江网站建设如何建立网络销售平台
  • 网站开启伪静态怎么查看wordpress主题
  • 京东商城网站怎么做建设网站进行商品营销的重要性
  • 万网注册的网站长时间不能访问是不是被封了山东岩海建设资源有限公司网站
  • ps做图软件怎么下载网站seo在线优化
  • 电子商务网站建设公长沙人力资源招聘网
  • 企业网站开发流程简述五里坨网站建设
  • 个体工商户能网站备案吗学校资源门户网站建设方案
  • 做班级的活动的网站wordpress运行库
  • 最牛的网站建设哪个网站比较好
  • 做网站程序先从哪一步开始深圳网站制作公司兴田德润信任高
  • 深圳外贸网站定制沛县网络营销是什么
  • 山东省建设局注册中心网站可以做网站首页的图片素材
  • 石家庄 网站开发公司注册名字大全免费
  • 家电维修做网站生意怎么样WordPress二维码动态
  • wang域名注册网站网站建设公司是什么
  • 企业官方网站怎么写网站设计相似侵权吗
  • 晋城市住房保障和城乡建设局网站肥城网站建设流程
  • 陶瓷网站建设专业模板建站软件