sequenceDiagram
title subscribe and rebalance
autonumber
actor trader as trader
webUI
wallet
box rgb(187, 45, 64) Agoric
participant manager as portfolio
manager
participant portfolio as trader
portfolio
end
participant EE
EE -->> manager: rpc.subscribe(all block events)
loop recover by polling balances
EE -->> portfolio: rpc.queryBalances(portfolio$N)
end
%% Notation: ->> for initial message, -->> for consequences
trader ->> manager: open($5000, default-goal)
par initial funds
manager -->> EE: vstorageAppend(portfolios, "portfolio1")
EE -->> portfolio: vstorageGet(portfolio1 address)
EE -->> EE: add portfolio1 address to event filter
manager ->> portfolio: bank.Send(portfolio1, $5000)
end
loop inbound funds on portfolio$N trigger rebalance
portfolio -->> EE: event(bank.Send, portfolio$N, $unknown)
EE -->> portfolio: rpc.queryBalances(portfolio$N)
EE -->> portfolio: vstorageGet(portfolio$N, goals)
EE -->> manager: rebalanceTx(portfolio$N, next-goal
[{src: portfolio$N, dst: LCAorch$N, amt: $5000},
...goal-steps])
manager -->> portfolio: rebalance(steps)
end
Node.js and yarn per agoric-sdk Prerequisites.
yarn install
yarn start:deps
yarn dev
This starts the development server with hot reloading.
yarn test
Environment variables:
AGORIC_NET
: agoric.net subdomain for requesting URL path /network-config
to identify chainName
/rpcAddrs
/etc. (main
)MNEMONIC
: For the private key used to sign transactionsSPECTRUM_API_URL
: URL for the Spectrum API (https://pools-api.spectrumnodes.com
)SPECTRUM_API_TIMEOUT
: Milliseconds to wait for each Spectrum request (10000
= 10 seconds)SPECTRUM_API_RETRIES
: Retry count for Spectrum requests (3
)DOTENV
: Path to environment file containing defaults of above (.env
)Apache-2.0