For the complete documentation index, see llms.txt. This page is also available as Markdown.

Submit Bid

Once an auctionStarted event had been seen, searchers could submit bids.

The Bid with the highest bid_amount won, while paying exactly that amount.

Conditions for a Bid to be accepted

A Bid had to satisfy all conditions below in order to be accepted.

  • A Bid could be submitted before the given deadline (specified by deadlineTimestampMs). Since that window could be extremely short (usually 200-300ms), searchers were strongly recommended to host services in Frankfurt, Germany to avoid unnecessary round trips.

  • A Bid MUST have a lexicologically larger transaction digest compared to the opportunity transaction's. Comparison was done with the two digests' binary form (represented as 32-byte binaries), rather than base-58 encoded. This is because in the implementation of Soft Bundle (SIP-19), Shio chose the transaction with the smallest digest to determine submission order. One way to achieve this was to keep increasing gas budget by 1, until the digest of the transaction satisfied the condition.

  • A bid had to have the exact gas_price as the opportunity transaction's.

  • A bid had to avoid locking any object that had already been locked by the opportunity transaction.

  • A bid had to contain a MoveCall to the submit_bid method of the Shio package, paying exactly bid_amount, see Interact with Shio Contract.

  • A bid had to pass dry-run in the bundle of [opportunity transaction, bid].

Bid Submission

There were two ways to submit a bid:

  • A Bid could be submitted directly through the Feed WebSocket connection. This approach appeared to be simpler (by not having to maintain more than one client), however, in case of bid rejection, exact reason would not be returned.

  • Or alternatively, a bid could also be submitted through JSON-RPC method shio_submitBid. An error message would be returned directly, explaining why the bid had been rejected if that was the case.

Submission through WebSocket

Searchers sent a message in the following format through the Feed WebSocket connection:

  • bidAmount is in terms of MIST. This was the amount that needed to be paid on successful execution.

  • txData: Base64-encoded bcs-serialized TransactionData without signature.

  • sig: Base64-encoded signature. Shio only supported the ED25519 signature scheme.

Bids had to be sent within the given Auction Window.

Once sent, the bid would either be accepted or rejected; however, no response would be given.

For troubleshooting, please refer to Submission through JSON-RPC .

Submission through JSON-RPC

Historically, searchers sent a JSON-RPC request to https://rpc.getshio.com in the following format. This endpoint is no longer active.

A response would be returned, containing error message if any.

This approach was not recommended in production, as extra RTTs could be incurred due to HTTP/TLS handshake.

Last updated