好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php签名交易以太坊 php 签名算法

很多站长朋友们都不太清楚php签名交易以太坊,今天小编就来给大家整理php签名交易以太坊,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 以太坊web3.sendRawTransaction离线签名交易 2、 以太坊交易(tx) 分析 3、 php如何调用以太坊JSON 4、 如何创建和签署以太坊交易? 以太坊web3.sendRawTransaction离线签名交易

工作中需要复现短地址攻击和thedao重入攻击,重入攻击可以直接通过eth.sendTransaction和remix来发送交易,但是短地址攻击由于钱包和remix这些都对input做了长度检测,无法通过这些方式来复现,只能通过发离线签名交易来实现。

1.环境依赖:nodejs , keythereum , ethereumjs-common , ethereumjs-tx 。

2.进入Node控制台,获取相应账户私钥。

3.签名交易,进入Node,这里注意nonce问题,需要Nonce是实际可执行的nonce,Nonce不对会发送交易失败,关于如何获取input data百度比较多就不详述了。

4.遇到的坑,百度出来的步骤是有问题的或者过时了,当时是参考的这篇文章,

,在控制台通过eth.sendRawTransaction发送签名好的交易,我遇到了这个错误 ** sendRawTransaction invalid sender **

以太坊交易(tx) 分析

更多请参考: Github:

其中 object 和 opcodes 是相对应的,比如 60 对应就是 operation PUSH1,合约编译后的字节码即为一组的 operation 。

合约部署其实就是实例化一个 contract 对象,并将 data 的值设给 Code属性 。

创建合约的tx中,input字段对应的是合约的字节码,即指令数组。

其中 input 字段对应所要调用的函数签名的前四个字节(771602f7)以及对应的参数(1,2)

其中 input 字段为所要调用的合约函数签名的前四个字节(72a099b7)

关于函数调用,Call会把对应的Code读出来,依次解析,Code中会把所有的public签名的函数标志(4字节)push到栈里。然后依据 input 中需要调用函数的签名标志(前4字节)来匹配 Code, 匹配之后跳转到对应的 opcode 。

php如何调用以太坊JSON

以太坊源码go-ethereum怎么运行

安装基于MIPS的linux头文件

$ cd $PRJROOT/kernel

$ tar -xjvf linux-2.6.38.tar.bz2

$ cd linux-2.6.38

在指定路径下创建include文件夹,用来存放相关头文件。

$ mkdir -p $TARGET_PREFIX/include

保证linux源码是干净的。

$ make mrproper

生成需要的头文件。

$ make ARCH=mips headers_check

$ make ARCH=mips INSTALL_HDR_PATH=dest headers_install

将dest文件夹下的所有文件复制到指定的include文件夹内。

$ cp -rv dest/include/* $TARGET_PREFIX/include

最后删除dest文件夹

$ rm -rf dest

$ ls -l $TARGET_PREFIX/include

如何创建和签署以太坊交易?

交易

区块链交易的行为遵循不同的规则集

由于公共区块链分布式和无需许可的性质,任何人都可以签署交易并将其广播到网络。

根据区块链的不同,交易者将被收取一定的交易费用,交易费用取决于用户的需求而不是交易中资产的价值。

区块链交易无需任何中央机构的验证。仅需使用与其区块链相对应的数字签名算法(DSA)使用私钥对其进行签名。

一旦一笔交易被签名,广播到网络中并被挖掘到网络中成功的区块中,就无法恢复交易。

以太坊交易结构

以太坊交易的数据结构:交易0.1个ETH

{

'nonce':'0x00',  // 十进制:0

'gasLimit': '0x5208', //十进制: 21000

'gasPrice': '0x3b9aca00', //十进制1,000,000,000

'to': '0x17A98d2b11Dfb784e63337d2170e21cf5DD04631' ,//发送地址

'value': '0x16345785d8a0000',//100000000000000000 ,10^17

'data': '0x', // 空数据的十进制表示

'chainId': 1 // 区块链网络ID

}

这些数据与交易内容无关,与交易的执行方式有关,这是由于在以太坊中发送交易中,您必须定义一些其他参数来告诉矿工如何处理您的交易。交易数据结构有2个属性设计"gas": "gasPrice","gasLimit"。

"gasPrice": 单位为Gwei, 为 1/1000个eth,表示交易费用

"gasLimit": 交易允许使用的最大gas费用。

这2个值通常由钱包提供商自动填写。

除此之外还需要指定在哪个以太坊网络上执行交易(chainId): 1表示以太坊主网。

在开发时,通常会在本地以及测试网络上进行测试,通过测试网络发放的测试ETH进行交易以避免经济损失。在测试完成后再进入主网交易。

另外,如果需要提交一些其它数据,可以用"data"和"nonce"作为事务的一部分附加。

A nonce(仅使用1次的数字)是以太坊网络用于跟踪交易的数值,有助于避免网络中的双重支出以及重放攻击。

以太坊交易签名

以太坊交易会涉及ECDSA算法,以Javascript代码为例,使用流行的ethers.js来调用ECDSA算法进行交易签名。

const ethers = require('ethers')

const signer = new ethers.Wallet('钱包地址')

signer.signTransaction({

 'nonce':'0x00',  // 十进制:0

   'gasLimit': '0x5208', //十进制: 21000

   'gasPrice': '0x3b9aca00', //十进制1,000,000,000

   'to': '0x17A98d2b11Dfb784e63337d2170e21cf5DD04631' ,//发送地址

   'value': '0x16345785d8a0000',//100000000000000000 ,10^17

   'data': '0x', // 空数据的十进制表示

   'chainId': 1 // 区块链网络ID

})

.then(console.log)

可以使用在线使用程序Composer将已签名的交易传递到以太坊网络。这种做法被称为”离线签名“。离线签名对于诸如状态通道之类的应用程序特别有用,这些通道是跟踪两个帐户之间余额的智能合约,并且在提交已签名的交易后就可以转移资金。脱机签名也是去中心化交易所(DEXes)中的一种常见做法。

也可以使用在线钱包通过以太坊账户创建签名验证和广播。

使用Portis,您可以签署交易以与加油站网络(GSN)进行交互。

链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。

关于php签名交易以太坊的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php签名交易以太坊 php 签名算法的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did224124
更新时间:2023-05-08   阅读:44次

上一篇: php过滤值为 php过滤字符

下一篇:php隐藏返回数据 php隐藏url参数

相关资讯

最新资料更新

  • 1.php消息通知实例的简单介绍
  • 2.php编程圆面积 编程实现圆的面积
  • 3.php微信推送提醒 php主动推送消息到安卓
  • 4.包含peintphp的词条
  • 5.php保存用户信息 php登录成功保存session
  • 6.phpajix的简单介绍
  • 7.phpcrc-itu的简单介绍
  • 8.php相除保留到分 php除法保留小数
  • 9.redis缓存类php php redis页面缓存
  • 10.php框架制作教程外包 怎么做php框架
  • 11.php压缩上传的图片 php上传图片文件
  • 12.php+引用swf php引用其他文件内的函数
  • 13.iisphpma的简单介绍
  • 14.包含phpautoconf的词条
  • 15.php登录网站 php网页登录
  • 16.php环境配置工具 phpstorm2021配置php环境
  • 17.php代码的缺点 php的缺点是什么
  • 18.php教程全局交流 phpunit教程
  • 19.php复杂语法 php基本语法
  • 20.php匹配尖括号 括号匹配python代码

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]