@@ -30,7 +30,7 @@ module.exports = class txProviderUtils {
30
30
31
31
setBlockGasLimit ( txMeta , blockGasLimitHex , cb ) {
32
32
const blockGasLimitBN = hexToBn ( blockGasLimitHex )
33
- const saferGasLimitBN = blockGasLimitBN . muln ( 0.95 )
33
+ const saferGasLimitBN = BnMultiplyByFraction ( blockGasLimitBN , 19 , 20 )
34
34
txMeta . blockGasLimit = bnToHex ( saferGasLimitBN )
35
35
cb ( )
36
36
return
@@ -43,7 +43,7 @@ module.exports = class txProviderUtils {
43
43
// if not, fallback to block gasLimit
44
44
if ( ! txMeta . gasLimitSpecified ) {
45
45
const blockGasLimitBN = hexToBn ( blockGasLimitHex )
46
- const saferGasLimitBN = blockGasLimitBN . muln ( 0.95 )
46
+ const saferGasLimitBN = BnMultiplyByFraction ( blockGasLimitBN , 19 , 20 )
47
47
txParams . gas = bnToHex ( saferGasLimitBN )
48
48
}
49
49
// run tx, see if it will OOG
@@ -143,3 +143,9 @@ function bnToHex (inputBn) {
143
143
function hexToBn ( inputHex ) {
144
144
return new BN ( ethUtil . stripHexPrefix ( inputHex ) , 16 )
145
145
}
146
+
147
+ function BnMultiplyByFraction ( targetBN , numerator , denominator ) {
148
+ const numBN = new BN ( numerator )
149
+ const denomBN = new BN ( denominator )
150
+ return targetBN . mul ( numBN ) . div ( denomBN )
151
+ }
0 commit comments