mirror of
https://github.com/status-im/open-bounty.git
synced 2025-01-15 20:14:55 +00:00
Fix gas limit issues introduced by upgrade to geth 1.7.0
* add configurable factor for adjusting gas estimates given by json-rpc's eth_estimateGas. This will adjust all gas estimates by multiplying json-rpc estimate with the factor. * use fixed gas limit for deploying bounty contracts to avoid running out of gas with geth 1.7.0
This commit is contained in:
parent
97ca8a8690
commit
26d30ad91b
@ -11,6 +11,7 @@
|
|||||||
(defn eth-rpc-url [] (env :eth-rpc-url "http://localhost:8545"))
|
(defn eth-rpc-url [] (env :eth-rpc-url "http://localhost:8545"))
|
||||||
(defn eth-account [] (:eth-account env))
|
(defn eth-account [] (:eth-account env))
|
||||||
(defn eth-password [] (:eth-password env))
|
(defn eth-password [] (:eth-password env))
|
||||||
|
(defn gas-estimate-factor [] (env :gas-estimate-factor 1.0))
|
||||||
|
|
||||||
(defn gas-price
|
(defn gas-price
|
||||||
[]
|
[]
|
||||||
@ -39,12 +40,6 @@
|
|||||||
(when-let [error (:error result)]
|
(when-let [error (:error result)]
|
||||||
(log/error "Method: " method ", error: " error))))))
|
(log/error "Method: " method ", error: " error))))))
|
||||||
|
|
||||||
(defn estimate-gas
|
|
||||||
[from to value & [params]]
|
|
||||||
(eth-rpc "eth_estimateGas" [(merge params {:from from
|
|
||||||
:to to
|
|
||||||
:value value})]))
|
|
||||||
|
|
||||||
(defn hex->big-integer
|
(defn hex->big-integer
|
||||||
[hex]
|
[hex]
|
||||||
(new BigInteger (subs hex 2) 16))
|
(new BigInteger (subs hex 2) 16))
|
||||||
@ -54,6 +49,39 @@
|
|||||||
[n]
|
[n]
|
||||||
(str "0x" (.toString (BigInteger. (str n)) 16)))
|
(str "0x" (.toString (BigInteger. (str n)) 16)))
|
||||||
|
|
||||||
|
|
||||||
|
(defn strip-decimal
|
||||||
|
[s]
|
||||||
|
(str/replace s #"\..*" ""))
|
||||||
|
|
||||||
|
|
||||||
|
(defn adjust-gas-estimate
|
||||||
|
"Multiply given estimate by factor"
|
||||||
|
[gas]
|
||||||
|
(let [factor (gas-estimate-factor)]
|
||||||
|
(if (= 1.0 factor)
|
||||||
|
gas
|
||||||
|
(let [adjust (fn [x] (+ x (* factor x)))]
|
||||||
|
(-> gas
|
||||||
|
hex->big-integer
|
||||||
|
adjust
|
||||||
|
strip-decimal
|
||||||
|
read-string
|
||||||
|
integer->hex)))))
|
||||||
|
|
||||||
|
(defn estimate-gas
|
||||||
|
[from to value & [params]]
|
||||||
|
(let [geth-estimate (eth-rpc
|
||||||
|
"eth_estimateGas" [(merge params {:from from
|
||||||
|
:to to
|
||||||
|
:value value})])
|
||||||
|
adjusted-gas (adjust-gas-estimate geth-estimate)]
|
||||||
|
|
||||||
|
(log/debug "estimated gas (geth):" geth-estimate)
|
||||||
|
(log/debug "bumped estimate:" adjusted-gas)
|
||||||
|
adjusted-gas))
|
||||||
|
|
||||||
|
|
||||||
(defn from-wei
|
(defn from-wei
|
||||||
[wei]
|
[wei]
|
||||||
(/ wei 1000000000000000000))
|
(/ wei 1000000000000000000))
|
||||||
@ -138,10 +166,13 @@
|
|||||||
(eth-rpc "eth_call" [{:to contract :data data} "latest"])))
|
(eth-rpc "eth_call" [{:to contract :data data} "latest"])))
|
||||||
|
|
||||||
(defn execute
|
(defn execute
|
||||||
[from contract method-id & params]
|
[from contract method-id gas-limit & params]
|
||||||
(let [data (apply format-call-params method-id params)
|
(let [data (apply format-call-params method-id params)
|
||||||
value (format "0x%x" 0)]
|
value (format "0x%x" 0)]
|
||||||
(send-transaction from contract value {:data data})))
|
(send-transaction from contract value (merge
|
||||||
|
{:data data}
|
||||||
|
(when gas-limit
|
||||||
|
{:gas gas-limit})))))
|
||||||
|
|
||||||
(defn execute-using-addr
|
(defn execute-using-addr
|
||||||
[from-addr from-passphrase contract method-id & params]
|
[from-addr from-passphrase contract method-id & params]
|
||||||
@ -159,7 +190,6 @@
|
|||||||
(eth-rpc "personal_unlockAccount" [from-addr from-passphrase 30])
|
(eth-rpc "personal_unlockAccount" [from-addr from-passphrase 30])
|
||||||
(let [data "0x"
|
(let [data "0x"
|
||||||
value (integer->hex amount-wei)]
|
value (integer->hex amount-wei)]
|
||||||
(println "value" value)
|
|
||||||
(send-transaction-using-from-account from-addr
|
(send-transaction-using-from-account from-addr
|
||||||
to-addr
|
to-addr
|
||||||
value
|
value
|
||||||
|
@ -36,12 +36,14 @@
|
|||||||
(eth/execute (eth/eth-account)
|
(eth/execute (eth/eth-account)
|
||||||
(factory-contract-addr)
|
(factory-contract-addr)
|
||||||
(:create method-ids)
|
(:create method-ids)
|
||||||
|
(eth/integer->hex 827000) ;; gas-limit
|
||||||
0x40
|
0x40
|
||||||
0x2
|
0x2
|
||||||
required
|
required
|
||||||
owner1
|
owner1
|
||||||
owner2))
|
owner2))
|
||||||
|
|
||||||
|
|
||||||
(defn deploy-multisig
|
(defn deploy-multisig
|
||||||
"Deploy a new multisig contract to the blockchain with commiteth bot
|
"Deploy a new multisig contract to the blockchain with commiteth bot
|
||||||
and given owner as owners."
|
and given owner as owners."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user