Bidding for Liquidated Collateral
As of Vaults launch - bidders will be able to bid on liquidated vaults collateral via a CLI (Command Line Interface) tool. Bidding UIs may be built by the community or in the future by the Inter Protocol team.
The first thing you'll need to do is install and configure the CLI tool. Follow instructions at Inter Protocol Liquidation Bidding Test Tool installation/setup readme.
TLDR: CLI Commands for Bidding
The following commands will clone the Agoric SDK, install tooling, and place a bid. You will need to modify them for your bidding details. If you are not using a Ledger to sign, you'll need to do key management differently. See below for additional details.
Set-up and Configuration
Add account (Ledger)
Note: "bid-acct" is a name for the account and is used below in examples. However, feel free to name the account however you wish. This key command will use the derivation path for account 0 with that ledger seed phrase.
If you want to bid on a non-ledger account, you will need to handle key management in the CLI differently. Be careful of which options display seed phrases or store them in the clear on your machine. Use the --help command on "agd keys add" for details.
Place a bid (by Price)
Modify the bid details above to match what you desire. The example places a bid of 50 IST for ATOM (maximum of 10000) at a price of $9.
If you are not using a Ledger, the second command should not include the --sign-mode amino-json modifier
Place a bid (by Discount)
Modify the bid details above to match what you desire. The example places a bid of 50 IST for ATOM (maximum of 10000) at a 5% discount to the oracle price. Note that "oracle price" refers to the oracle price at the start of the auction.
If you are not using a Ledger, the second command should not include the --sign-mode amino-json modifier
Liquidation Bidding Discussion & Details
Things to Know
Important: to support some critical bidding capabilities, bids for Inter Protocol do not benefit from Zoe offer-safety
You must specify if you are bidding for a particular collateral type by using the '--maxBuy' argument i.e. '--maxBuy 5000stATOM' infers you are a) bidding for stATOM and b) for a maximum of 5000 stATOM. For ATOM it would be '--maxBuy 5000ATOM' etc.
You can bid at specific prices or at discounts to the oracle price. The oracle price is locked at the start of the auction and discounts calculate off of that price (i.e., they do not update in real time as the market shifts during the course of the auction)
You can place liquidation bids even when there is no active liquidation happening. The bid will remain in the auction order book until it is filled or cancelled
Once a bid is placed, the IST amount you are bidding with is removed from your wallet balance.
If your bid is successful, you will receive the collateral as payout as per your bid terms.
If you cancel an active/existing bid, your IST will be returned to your wallet balance.
Your bid may also be partially filled if it is the concluding bid of the auction. Partially filled bids will remain in the order book to be fully filled in future auctions unless they are exited
Check Auction Status
While you can place liquidation bids even when there is no active liquidation happening, it may be useful in your bidding strategy to know whether a liquidation is taking place and where the auction is at that point in time amongst others.
You can check the status as well as other important liquidation-specific pieces of information such as:
nextStartTime -> This is when the next auction is scheduled to take place. Time is in UTC.
startPrice -> Starting price of the auction. This is the current market price as per oracle.
currentPriceLevel -> Once the auction has started, this indicates the step price the auction is currently at.
startProceedsGoal -> This is the target IST debt amount based on liquidated vaults. The auction will keep ticking forward to sell enough collateral to satisfy this amount.
startCollateral -> The amount of collateral that has been liquidated and sent for auction.
collateralAvailable -> The amount of collateral remaining at that point in time of the auction. If the auction sells enough collateral to satisfy outstanding IST debt, the auction may end with unsold collateral which will be distributed back to vault holders (minus penalty fee).
DiscountStep -> This is the price step change size (in %) the auction will follow
ClockStep -> This is how long each price step last before proceeding to next downward price step change.
LowestRate -> This is the lowest discount rate the auction will reach before stopping. I.e. the auction will not sell collateral beyond this discount rate.
To check this run inter auction status --book 0
in your terminal window after you've installed the CLI bidding tool to check ATOM auction status or inter auction status --book 1
to check stATOM auction status. Sample output:
The liquidation auctions will continue until enough IST has been raised to satisfy the liquidating debt, after which the liquidation will be complete. After each successful auction, liquidation status will update to reflect progress with liquidating collateral and debt reducing over time.
Placing Bids
When placing a bid you’ll need to specify the amount of IST you are bidding with and the collateral price you are willing to accept/have your bid filled at.
You can specify the price in one of two ways:
specific price ($) -> (inter bid by-price --price X.XX --give XIST --maxBuy XATOM --from bid-acct)
as a % discount to the oracle price (%) -> (inter bid by-discount --discount X --give XIST --maxBuy XATOM --from bid-acct)
How To Bid
By discount -> You’ll do this by entering the
inter bid by-discount
command. Example: Let’s say you want to place an 50 IST bid for ATOM (maximum of 10000) at a 10% discount price from the oracle price. When submitting a bid, use--generate-only
to first output it to json:e.g.
inter bid by-discount --discount 10 --give 50IST --maxBuy 10000ATOM --generate-only --from bid-acct >spend-action.json
. (Note: it doesn't matter which address you use here, but the tool requires a well-formatted address or a name in your keyring)Then use
agd
to sign and broadcast the offer (including chain ID and fee amount); for example:Example operation (using a ledger):
% agd --node=https://main.rpc.agoric.net:443 tx swingset wallet-action --allow-spend "$(cat spend-action.json)" --chain-id=agoric-3 --fees=5000ubld --from bid-acct --sign-mode amino-json
Example output (using a ledger):
{"body":{"messages":[{"@type":"/agoric.swingset.MsgWalletSpendAction","owner":"agoric1...","spend_action":"{"body":"#{\"method\":\"executeOffer\",\"offer\":{\"id\":\"bid-1688150122262\",\"invitationSpec\":{\"callPipe\":[[\"makeBidInvitation\",[\"$0.Alleged: BoardRemoteATOM brand\"]]],\"instancePath\":[\"auctioneer\"],\"source\":\"agoricContract\"},\"offerArgs\":{\"maxBuy\":{\"brand\":\"$0\",\"value\":\"+1000000000000\"},\"offerBidScaling\":{\"denominator\":{\"brand\":\"$1.Alleged: BoardRemoteIST brand\",\"value\":\"+100\"},\"numerator\":{\"brand\":\"$1\",\"value\":\"+70\"}}},\"proposal\":{\"give\":{\"Bid\":{\"brand\":\"$1\",\"value\":\"+50000000\"}}}}}","slots":["board05557","board0257"]}"}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[{"denom":"ubld","amount":"5000"}],"gas_limit":"200000","payer":"","granter":""}},"signatures":[]}
confirm transaction before signing and broadcasting [y/N]: y code: 0 codespace: "" data: "" events: [] gas_used: "0" gas_wanted: "0" height: "0" info: "" logs: [] raw_log: '[]' timestamp: "" tx: null txhash: 119D16E9F9A050FCDB4C450F3A3312E097C5BAFBA39871F2D30095878FED4D78
You'll then need to confirm 'Y' to sign and broadcast - (you may have to approve in ledger if you're using one).
The output should include a tx hash such as 38E782E5A70D0704BC76323A7032B3C7FD4940B4EA4AE4CB64AFC9D203AF82A8
which you can look up in an explorer.
You can also confirm with inter bid list
(operation more details on this further below):
By Price
You may also bid by a specific price rather than a calculated discount to the oracle price i.e. '-by-price --price 9.3' (to place a bid bid to buy ATOM for a price of $9.3) instead of '-by-discount --discount 10'.
List all of your bids
Once your bid is successful it will no longer appear in the above list. In order to see all bids (including those that were successful with payouts), you’ll need to append command with ‘–all’. Example:
inter bid list –from bid-acct –all
Output:
$ inter bid list --from bid-acct --all
Cancel bid
Once a bid is placed, the IST amount you are bidding with is removed from your wallet balance until the bid is successful (after which you receive your collateral payout) or you cancel your bid (after which your IST is refunded (reflected as a payout in output)).
The current design of our liquidation system constrains the ability to change an existing open bid. Instead, you will need to cancel the open bid and resubmit a new updated bid instead. To cancel a bid you’ll need to use the ‘inter bid cancel’ command then specify the bidID which you can grab from the bid list described above. Example:
Output:
Then check bid list, inter bid list --all --from test-acct --keyring-backend=test
to confirm your IST has been refunded under ‘payouts’:
Last updated