@@ -2,6 +2,7 @@ var assert = require('assert');
2
2
var Basic = require ( './sources/Basic' ) ;
3
3
var utils = require ( './helpers/test.utils' ) ;
4
4
var Web3 = utils . getWeb3 ( ) ;
5
+ var { TransactionFactory} = require ( '@ethereumjs/tx' ) ;
5
6
6
7
describe ( 'transaction and message signing [ @E2E ]' , function ( ) {
7
8
let web3 ;
@@ -563,5 +564,43 @@ describe('transaction and message signing [ @E2E ]', function() {
563
564
done ( error )
564
565
}
565
566
} ) ;
566
- } ) ;
567
567
568
+ it ( 'accounts.signTransaction returning valid v r s values' , async function ( ) {
569
+
570
+ const source = wallet [ 0 ] . address ;
571
+ const destination = wallet [ 1 ] . address ;
572
+
573
+ const txCount = await web3 . eth . getTransactionCount ( source ) ;
574
+ const networkId = await web3 . eth . net . getId ( ) ;
575
+ const chainId = await web3 . eth . getChainId ( ) ;
576
+
577
+
578
+ const customCommon = {
579
+ baseChain : 'mainnet' ,
580
+ customChain : {
581
+ name : 'custom-network' ,
582
+ networkId : networkId ,
583
+ chainId : chainId ,
584
+ } ,
585
+ hardfork : 'petersburg' ,
586
+ } ;
587
+
588
+ const txObject = {
589
+ nonce : web3 . utils . toHex ( txCount ) ,
590
+ to : destination ,
591
+ value : web3 . utils . toHex ( web3 . utils . toWei ( '0.1' , 'ether' ) ) ,
592
+ gasLimit : web3 . utils . toHex ( 21000 ) ,
593
+ gasPrice : web3 . utils . toHex ( web3 . utils . toWei ( '10' , 'gwei' ) ) ,
594
+ common : customCommon
595
+ } ;
596
+
597
+ const signed = await web3 . eth . accounts . signTransaction ( txObject , wallet [ 0 ] . privateKey ) ;
598
+
599
+ const data = Buffer . from ( signed . rawTransaction . slice ( 2 ) , "hex" )
600
+ const tx = TransactionFactory . fromSerializedData ( data ) ;
601
+
602
+ assert ( signed . v === ( '0x' + tx . v . toString ( 'hex' ) ) ) ;
603
+ assert ( signed . r === ( '0x' + tx . r . toString ( 'hex' ) ) ) ;
604
+ assert ( signed . s === ( '0x' + tx . s . toString ( 'hex' ) ) ) ;
605
+ } ) ;
606
+ } ) ;
0 commit comments