@@ -57,6 +57,7 @@ const blockchainData: { [ network: string ]: TestCases } = {
57
57
blockHash : "0x9653f180a5720f3634816eb945a6d722adee52cc47526f6357ac10adaf368135" ,
58
58
blockNumber : 4097745 ,
59
59
transactionIndex : 18 ,
60
+ type : 0 ,
60
61
from : "0x32DEF047DeFd076DB21A2D759aff2A591c972248" ,
61
62
gasPrice : bnify ( "0x4a817c800" ) ,
62
63
gasLimit : bnify ( "0x3d090" ) ,
@@ -76,6 +77,7 @@ const blockchainData: { [ network: string ]: TestCases } = {
76
77
{
77
78
blockHash : "0x36b4af7f0538559e581c8588f16477df0f676439ea67fe8d7a2ae4abb20e2566" ,
78
79
blockNumber : 0x3c92b5 ,
80
+ type : 0 ,
79
81
contractAddress : null ,
80
82
cumulativeGasUsed : 0x1cca2e ,
81
83
from : "0x18C6045651826824FEBBD39d8560584078d1b247" ,
@@ -122,6 +124,7 @@ const blockchainData: { [ network: string ]: TestCases } = {
122
124
byzantium : true ,
123
125
blockHash : "0x34e5a6cfbdbb84f7625df1de69d218ade4da72f4a2558064a156674e72e976c9" ,
124
126
blockNumber : 0x444f76 ,
127
+ type : 0 ,
125
128
contractAddress : null ,
126
129
cumulativeGasUsed : 0x15bfe7 ,
127
130
from : "0x18C6045651826824FEBBD39d8560584078d1b247" ,
@@ -247,7 +250,7 @@ const blockchainData: { [ network: string ]: TestCases } = {
247
250
} ,
248
251
] ,
249
252
transactions : [
250
- // Berlin tests
253
+ // Berlin tests (EIP-2930)
251
254
{
252
255
hash : "0x48bff7b0e603200118a672f7c622ab7d555a28f98938edb8318803eed7ea7395" ,
253
256
type : 1 ,
@@ -299,12 +302,36 @@ const blockchainData: { [ network: string ]: TestCases } = {
299
302
v : 0 ,
300
303
creates : null ,
301
304
chainId : 3
302
- }
305
+ } ,
306
+ // London Tests (EIP-1559)
307
+ {
308
+ hash : '0xb8c7871d9d8597ee8a50395d8b39dafa280c90337dc501d0db1321806c6ea98c' ,
309
+ blockHash : '0xfd824501af65b1d0f21ea9eb7ec83f45108fcd6fd1bca5d6414ba5923ad87b49' ,
310
+ blockNumber : 10512507 ,
311
+ transactionIndex : 5 ,
312
+ type : 2 ,
313
+ creates : null ,
314
+ from : '0xad252DD6C011E613610A36368f04aC84D5185b7c' ,
315
+ gasPrice : bnify ( "0x0268ab0ed6" ) ,
316
+ maxPriorityFeePerGas : bnify ( "0x0268ab0ed6" ) ,
317
+ maxFeePerGas : bnify ( "0x0268ab0ed6" ) ,
318
+ gasLimit : bnify ( "0x5208" ) ,
319
+ to : '0x8210357f377E901f18E45294e86a2A32215Cc3C9' ,
320
+ value : bnify ( "0x7b" ) ,
321
+ nonce : 0 ,
322
+ data : '0x' ,
323
+ r : '0x7426c348119eed4e9e0525b52aa77edbbf1107610702b4642fa9d2688dce6fa7' ,
324
+ s : '0x03f606ad1f12af5876280a34601a4eb3919b797cf3878161e2d24b61d2609846' ,
325
+ v : 1 ,
326
+ accessList : [ ] ,
327
+ chainId : 3 ,
328
+ } ,
303
329
] ,
304
330
transactionReceipts : [
305
331
{
306
332
blockHash : "0xc9235b8253fce455942147aa8b450d23081b867ffbb2a1e4dec934827cd80f8f" ,
307
333
blockNumber : 0x1564d8 ,
334
+ type : 0 ,
308
335
contractAddress : null ,
309
336
cumulativeGasUsed : bnify ( "0x80b9" ) ,
310
337
from : "0xb346D5019EeafC028CfC01A5f789399C2314ae8D" ,
@@ -356,6 +383,24 @@ const blockchainData: { [ network: string ]: TestCases } = {
356
383
transactionHash : "0xf724f1d6813f13fb523c5f6af6261d06d41138dd094fff723e09fb0f893f03e6" ,
357
384
transactionIndex : 0x2
358
385
} ,
386
+ // London Tests (EIP-1559)
387
+ {
388
+ blockNumber : 10512507 ,
389
+ blockHash : '0xfd824501af65b1d0f21ea9eb7ec83f45108fcd6fd1bca5d6414ba5923ad87b49' ,
390
+ transactionHash : '0xb8c7871d9d8597ee8a50395d8b39dafa280c90337dc501d0db1321806c6ea98c' ,
391
+ transactionIndex : 5 ,
392
+ byzantium : true ,
393
+ type : 2 ,
394
+ to : '0x8210357f377E901f18E45294e86a2A32215Cc3C9' ,
395
+ from : '0xad252DD6C011E613610A36368f04aC84D5185b7c' ,
396
+ contractAddress : null ,
397
+ gasUsed : bnify ( "0x5208" ) ,
398
+ logsBloom : '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' ,
399
+ logs : [ ] ,
400
+ cumulativeGasUsed : bnify ( "0x038f3e" ) ,
401
+ effectiveGasPrice : bnify ( "0x268ab0ed6" ) ,
402
+ status : 1 ,
403
+ }
359
404
] ,
360
405
} ,
361
406
goerli : {
@@ -406,6 +451,7 @@ const blockchainData: { [ network: string ]: TestCases } = {
406
451
blockHash : "0x2384e8e8bdcf6eb87ec7c138fa503ac34adb32cac817e4b35f14d4339eaa1993" ,
407
452
blockNumber : 47464 ,
408
453
byzantium : true ,
454
+ type : 0 ,
409
455
contractAddress : null ,
410
456
cumulativeGasUsed : bnify ( 21000 ) ,
411
457
from : "0x8c1e1e5b47980D214965f3bd8ea34C413E120ae4" ,
@@ -684,8 +730,9 @@ Object.keys(blockchainData).forEach((network) => {
684
730
} ) ;
685
731
686
732
tests . transactions . forEach ( ( test ) => {
687
- addObjectTest ( `fetches transaction ${ test . hash } ` , async ( provider : ethers . providers . Provider ) => {
688
- const tx = await provider . getTransaction ( test . hash ) ;
733
+ const hash = test . hash ;
734
+ addObjectTest ( `fetches transaction ${ hash } ` , async ( provider : ethers . providers . Provider ) => {
735
+ const tx = await provider . getTransaction ( hash ) ;
689
736
690
737
// This changes with every block
691
738
assert . equal ( typeof ( tx . confirmations ) , "number" , "confirmations is a number" ) ;
@@ -702,13 +749,19 @@ Object.keys(blockchainData).forEach((network) => {
702
749
return true ;
703
750
}
704
751
752
+ // @TODO : Remove once Etherscan supports EIP-1559
753
+ if ( hash === "0xb8c7871d9d8597ee8a50395d8b39dafa280c90337dc501d0db1321806c6ea98c" && provider === "EtherscanProvider" ) {
754
+ return true ;
755
+ }
756
+
705
757
return false ;
706
758
} ) ;
707
759
} ) ;
708
760
709
761
tests . transactionReceipts . forEach ( ( test ) => {
710
- addObjectTest ( `fetches transaction receipt ${ test . transactionHash } ` , async ( provider : ethers . providers . Provider ) => {
711
- const receipt = await provider . getTransactionReceipt ( test . transactionHash ) ;
762
+ const hash = test . transactionHash ;
763
+ addObjectTest ( `fetches transaction receipt ${ hash } ` , async ( provider : ethers . providers . Provider ) => {
764
+ const receipt = await provider . getTransactionReceipt ( hash ) ;
712
765
713
766
if ( test . status === null ) {
714
767
assert . ok ( receipt . status === undefined , "no status" ) ;
@@ -727,6 +780,11 @@ Object.keys(blockchainData).forEach((network) => {
727
780
return true ;
728
781
}
729
782
783
+ // @TODO : Remove once Etherscan supports EIP-1559
784
+ if ( hash === "0xb8c7871d9d8597ee8a50395d8b39dafa280c90337dc501d0db1321806c6ea98c" && provider === "EtherscanProvider" ) {
785
+ return true ;
786
+ }
787
+
730
788
return false ;
731
789
} ) ;
732
790
} ) ;
@@ -737,6 +795,11 @@ Object.keys(blockchainData).forEach((network) => {
737
795
testFunctions . push ( {
738
796
name : `throws correct ${ code } error` ,
739
797
networks : [ "ropsten" ] ,
798
+ checkSkip : ( provider : string , network : string , test : TestDescription ) => {
799
+ // @TODO : Remove once Etherscan supports EIP-1559
800
+ return ( code === ethers . utils . Logger . errors . UNPREDICTABLE_GAS_LIMIT && provider === "EtherscanProvider" ) ;
801
+ //return false;
802
+ } ,
740
803
execute : async ( provider : ethers . providers . Provider ) => {
741
804
try {
742
805
const value = await func ( provider ) ;
@@ -768,7 +831,7 @@ Object.keys(blockchainData).forEach((network) => {
768
831
gasPrice : 9000000000 ,
769
832
gasLimit : 21000 ,
770
833
chainId : 3 ,
771
- value : 1
834
+ value : 1 ,
772
835
} ;
773
836
774
837
const wallet = ethers . Wallet . createRandom ( ) ;
@@ -781,7 +844,10 @@ Object.keys(blockchainData).forEach((network) => {
781
844
to : "0x8ba1f109551bD432803012645Ac136ddd64DBA72" ,
782
845
gasPrice : 9000000000 ,
783
846
gasLimit : 21000 ,
784
- value : 1
847
+ value : 1 ,
848
+
849
+ // @TODO : Remove this once all providers are eip-1559 savvy
850
+ type : 0 ,
785
851
} ;
786
852
787
853
const wallet = ethers . Wallet . createRandom ( ) . connect ( provider ) ;
@@ -796,7 +862,7 @@ Object.keys(blockchainData).forEach((network) => {
796
862
} ) ( ) ;
797
863
798
864
testFunctions . push ( {
799
- name : "sends a transaction" ,
865
+ name : "sends a legacy transaction" ,
800
866
extras : [ "funding" ] , // We need funding to the fundWallet
801
867
timeout : 900 , // 15 minutes
802
868
networks : [ "ropsten" ] , // Only test on Ropsten
@@ -816,6 +882,7 @@ testFunctions.push({
816
882
assert . ok ( b0 . gt ( ethers . constants . Zero ) , "balance is non-zero" ) ;
817
883
818
884
const tx = await wallet . sendTransaction ( {
885
+ type : 0 ,
819
886
to : addr ,
820
887
value : 123 ,
821
888
gasPrice : gasPrice
@@ -872,6 +939,46 @@ testFunctions.push({
872
939
}
873
940
} ) ;
874
941
942
+ testFunctions . push ( {
943
+ name : "sends an EIP-1559 transaction" ,
944
+ extras : [ "funding" ] , // We need funding to the funWallet
945
+ timeout : 900 , // 15 minutes
946
+ networks : [ "ropsten" ] , // Only test on Ropsten
947
+ checkSkip : ( provider : string , network : string , test : TestDescription ) => {
948
+ // These don't support EIP-1559 yet for sending
949
+ return ( provider === "AlchemyProvider" || provider === "EtherscanProvider" ) ;
950
+ } ,
951
+ execute : async ( provider : ethers . providers . Provider ) => {
952
+ const wallet = fundWallet . connect ( provider ) ;
953
+
954
+ const addr = "0x8210357f377E901f18E45294e86a2A32215Cc3C9" ;
955
+
956
+ await waiter ( 3000 ) ;
957
+
958
+ const b0 = await provider . getBalance ( wallet . address ) ;
959
+ assert . ok ( b0 . gt ( ethers . constants . Zero ) , "balance is non-zero" ) ;
960
+
961
+ const tx = await wallet . sendTransaction ( {
962
+ type : 2 ,
963
+ accessList : {
964
+ "0x8ba1f109551bD432803012645Ac136ddd64DBA72" : [
965
+ "0x0000000000000000000000000000000000000000000000000000000000000000" ,
966
+ "0x0000000000000000000000000000000000000000000000000000000000000042" ,
967
+ ]
968
+ } ,
969
+ to : addr ,
970
+ value : 123 ,
971
+ } ) ;
972
+
973
+ await tx . wait ( ) ;
974
+
975
+ await waiter ( 3000 ) ;
976
+
977
+ const b1 = await provider . getBalance ( wallet . address ) ;
978
+ assert . ok ( b0 . gt ( b1 ) , "balance is decreased" ) ;
979
+ }
980
+ } ) ;
981
+
875
982
describe ( "Test Provider Methods" , function ( ) {
876
983
let fundReceipt : Promise < ethers . providers . TransactionReceipt > = null ;
877
984
const faucet = "0x8210357f377E901f18E45294e86a2A32215Cc3C9" ;
0 commit comments