diff --git a/pkg/arvo/app/aggregator.hoon b/pkg/arvo/app/aggregator.hoon index bccd23908b..cc062006b3 100644 --- a/pkg/arvo/app/aggregator.hoon +++ b/pkg/arvo/app/aggregator.hoon @@ -223,13 +223,13 @@ =+ !<([=term =tang] q.cage.sign) %- (slog leaf+"{(trip dap.bowl)} failed" leaf+<term> tang) =^ cards state - (on-thread-result:do (rash i.t.wire dem) %.n^term) + (on-thread-result:do (rash i.t.wire dem) %.n^'thread failed') [cards this] :: %thread-done ~& ['all submitted to' t.wire] :: is aggregator/send thread expected to maybe return an error? - =+ !<(result=(each @ud term) q.cage.sign) + =+ !<(result=(each @ud @t) q.cage.sign) =^ cards state (on-thread-result:do (rash i.t.wire dem) result) [cards this] @@ -420,7 +420,7 @@ :: +on-thread-result: await resend after thread success or failure :: ++ on-thread-result - |= [nonce=@ud result=(each @ud term)] + |= [nonce=@ud result=(each @ud @t)] ^- (quip card _state) :: update gas price for this tx in state :: diff --git a/pkg/arvo/ted/aggregator/send.hoon b/pkg/arvo/ted/aggregator/send.hoon index 76bc1a6764..4bb4e85dbc 100644 --- a/pkg/arvo/ted/aggregator/send.hoon +++ b/pkg/arvo/ted/aggregator/send.hoon @@ -67,14 +67,19 @@ :: ::NOTE this fails the thread if sending fails, which in the app gives us :: the "retry with same gas price" behavior we want -;< jon=json bind:m - %+ request-rpc:ethio endpoint - [`'sendRawTransaction' %eth-send-raw-transaction tx] -::TODO check that tx-hash in jon is non-zero? -::TODO enforce max here, or in app? -:: add five gwei to gas price of next attempt -:: -(pure:m !>(%.y^(add use-gas-price 5.000.000.000))) +;< =response:rpc bind:m (send-batch endpoint tx) +%- pure:m +!> ^- (each @ud @t) +?+ -.response %.n^'unexpected rpc response' + %error %.n^message.res + :: TODO: + :: check that tx-hash in +.response is non-zero? + :: log tx-hash to getTransactionReceipt(tx-hash)? + :: enforce max here, or in app? + :: add five gwei to gas price of next attempt + :: + %result %.y^(add use-gas-price 5.000.000.000) +== :: ::TODO should be distilled further, partially added to strandio? ++ fetch-gas-price @@ -106,4 +111,19 @@ %. u.jon =, dejs-soft:format (ot 'result'^(ot 'FastGasPrice'^ni ~) ~) +:: +++ send-batch + |= [endpoint=@ta batch=@ux] + =/ m (strand:strandio ,response:rpc) + ^- form:m + =/ req=[(unit @t) request:rpc:ethereum] + [`'sendRawTransaction' %eth-send-raw-transaction batch] + ;< res=(list response:rpc) bind:m + (request-batch-rpc-loose:ethio endpoint [req]~) + ?: ?=([* ~] res) + (pure:m i.res) + %+ strand-fail:strandio + %unexpected-multiple-results + [>(lent res)< ~] +:: --