Various bugfixes:
* extra newline in contract data * insufficient gas * wrong headless image generation * stop scheduler threads on exit etc.
This commit is contained in:
parent
c0e4f51069
commit
bce7ef436a
File diff suppressed because one or more lines are too long
|
@ -141,7 +141,8 @@ SELECT
|
|||
issue_id,
|
||||
transaction_hash
|
||||
FROM issues
|
||||
WHERE contract_address IS NULL;
|
||||
WHERE contract_address IS NULL
|
||||
AND issues.transaction_hash IS NOT NULL;
|
||||
|
||||
-- Pull Requests -------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -24,6 +24,12 @@
|
|||
(log/error "Method: " method ", error: " error))
|
||||
(:result result)))
|
||||
|
||||
(defn estimate-gas
|
||||
[from to value & [params]]
|
||||
(eth-rpc "eth_estimateGas" [(merge params {:from from
|
||||
:to to
|
||||
:value value})]))
|
||||
|
||||
(defn hex->big-integer
|
||||
[hex]
|
||||
(new BigInteger (subs hex 2) 16))
|
||||
|
@ -50,10 +56,13 @@
|
|||
|
||||
(defn send-transaction
|
||||
[from to value & [params]]
|
||||
(eth-rpc "personal_signAndSendTransaction" [(merge params {:from from
|
||||
:to to
|
||||
:value value})
|
||||
(eth-password)]))
|
||||
;; todo: estimate gas instead of hardcoding
|
||||
(let [gas 1248650]
|
||||
(eth-rpc "personal_signAndSendTransaction" [(merge params {:from from
|
||||
:to to
|
||||
:value value
|
||||
:gas gas})
|
||||
(eth-password)])))
|
||||
|
||||
(defn get-transaction-receipt
|
||||
[hash]
|
||||
|
@ -62,9 +71,7 @@
|
|||
(defn deploy-contract
|
||||
[]
|
||||
(let [contract-code (-> "contracts/wallet.data" io/resource slurp)]
|
||||
(send-transaction (eth-account) nil 1
|
||||
{:gas 1248650
|
||||
:data contract-code})))
|
||||
(send-transaction (eth-account) nil 1 {:data contract-code})))
|
||||
|
||||
(defn- format-param
|
||||
[param]
|
||||
|
|
|
@ -120,13 +120,13 @@
|
|||
(defn post-comment
|
||||
[user repo issue-number balance]
|
||||
(let [comment (generate-comment user repo issue-number balance)]
|
||||
(log/debug "Posting comment to" (str user "/" repo) ":" comment)
|
||||
(log/debug "Posting comment to" (str user "/" repo "/" issue-number) ":" comment)
|
||||
(issues/create-comment user repo issue-number comment (self-auth-params))))
|
||||
|
||||
(defn update-comment
|
||||
[user repo comment-id issue-number balance]
|
||||
(let [comment (generate-comment user repo issue-number balance)]
|
||||
(log/debug (str "Updating " user "/" repo " comment #" comment-id " with contents: " comment))
|
||||
(log/debug (str "Updating " user "/" repo "/" issue-number " comment #" comment-id " with contents: " comment))
|
||||
(issues/edit-comment user repo comment-id comment (self-auth-params))))
|
||||
|
||||
(defn get-issue
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
[commiteth.db.issues :as issues]
|
||||
[commiteth.db.users :as users]
|
||||
[commiteth.db.bounties :as bounties]
|
||||
[overtone.at-at :refer [every mk-pool]]
|
||||
[overtone.at-at :refer [every mk-pool stop-and-reset-pool!]]
|
||||
[clojure.tools.logging :as log]
|
||||
[mount.core :as mount]))
|
||||
|
||||
|
@ -15,8 +15,9 @@
|
|||
"For each pending deployment:
|
||||
gets transasction receipt, updates db state, posts github comment and adds owners to the wallet"
|
||||
[]
|
||||
(for [{issue-id :issue_id
|
||||
transaction-hash :transaction_hash} (issues/list-pending-deployments)]
|
||||
(doseq [{issue-id :issue_id
|
||||
transaction-hash :transaction_hash} (issues/list-pending-deployments)]
|
||||
(log/debug "pending deployment:" transaction-hash)
|
||||
(when-let [receipt (eth/get-transaction-receipt transaction-hash)]
|
||||
(log/info "transaction receipt for issue #" issue-id ": " receipt)
|
||||
(when-let [contract-address (:contractAddress receipt)]
|
||||
|
@ -35,31 +36,34 @@
|
|||
(defn self-sign-bounty
|
||||
"Walks through all issues eligible for bounty payout and signs corresponding transaction"
|
||||
[]
|
||||
(for [{contract-address :contract_address
|
||||
issue-id :issue_id
|
||||
payout-address :payout_address} (bounties/pending-bounties-list)]
|
||||
(let [value (eth/get-balance-hex contract-address)]
|
||||
(->>
|
||||
(wallet/execute contract-address payout-address value)
|
||||
(bounties/update-confirm-hash issue-id)))))
|
||||
(doseq [{contract-address :contract_address
|
||||
issue-id :issue_id
|
||||
payout-address :payout_address} (bounties/pending-bounties-list)
|
||||
:let [value (eth/get-balance-hex contract-address)]]
|
||||
(->>
|
||||
(wallet/execute contract-address payout-address value)
|
||||
(bounties/update-confirm-hash issue-id))))
|
||||
|
||||
(defn update-balance
|
||||
[]
|
||||
(for [{contract-address :contract_address
|
||||
login :login
|
||||
repo :repo
|
||||
comment-id :comment_id
|
||||
issue-number :issue_number} (bounties/list-wallets)]
|
||||
(doseq [{contract-address :contract_address
|
||||
login :login
|
||||
repo :repo
|
||||
comment-id :comment_id
|
||||
issue-number :issue_number} (bounties/list-wallets)]
|
||||
(when comment-id
|
||||
(let [old-balance (issues/get-balance contract-address)
|
||||
(let [{old-balance :balance} (issues/get-balance contract-address)
|
||||
current-balance-hex (eth/get-balance-hex contract-address)
|
||||
current-balance-eth (eth/hex->eth current-balance-hex 8)]
|
||||
(when-not (= old-balance current-balance-hex)
|
||||
(issues/update-balance contract-address current-balance-hex)
|
||||
(github/update-comment login repo comment-id issue-number current-balance-eth))))))
|
||||
|
||||
(mount/defstate scheduler :start
|
||||
(do
|
||||
(every (* 5 60 1000) update-issue-contract-address pool)
|
||||
(every (* 60 1000) self-sign-bounty pool)
|
||||
(every (* 5 60 1000) update-balance pool)))
|
||||
(mount/defstate scheduler
|
||||
:start (do
|
||||
(every (* 1 60 1000) update-issue-contract-address pool)
|
||||
(every (* 1 60 1000) self-sign-bounty pool)
|
||||
(every (* 1 60 1000) update-balance pool))
|
||||
:stop (do
|
||||
(log/info "Stopping scheduler pool")
|
||||
(stop-and-reset-pool! pool)))
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
|
||||
(defn ^BufferedImage create-image
|
||||
[width height]
|
||||
(.. GraphicsEnvironment getLocalGraphicsEnvironment getDefaultScreenDevice getDefaultConfiguration
|
||||
(createCompatibleImage width height)))
|
||||
(new BufferedImage width height BufferedImage/TYPE_INT_ARGB))
|
||||
|
||||
(defn html->image
|
||||
[html width height]
|
||||
|
|
Loading…
Reference in New Issue