mirror of
https://github.com/ProvableHQ/leo.git
synced 2024-11-27 12:17:35 +03:00
d44457fc32
* bump snarkvm rev * update default gitignore * impl leo execute * bump snarkvm 0.14.5 * modify examples wip * update run.sh examples * impl env file * clippy warning * fix auction example * fix auction example env * generate new private key for new env - tests failing due to env not found err * commit error changes * Fix tests; clippy * Get examples working * leo build checks that build dir is well formed; clippy * Clean up * Update examples/README.md Co-authored-by: d0cd <pranavsaig@gmail.com> Signed-off-by: Collin Chin <16715212+collinc97@users.noreply.github.com> * do not commit .avm files * use snarkvm commands --------- Signed-off-by: Collin Chin <16715212+collinc97@users.noreply.github.com> Co-authored-by: Pranav Gaddamadugu <pranav@aleo.org> Co-authored-by: d0cd <pranavsaig@gmail.com>
65 lines
2.7 KiB
Markdown
65 lines
2.7 KiB
Markdown
<!-- # 🏛️ Blind Auction -->
|
|
<img alt="workshop/auction" width="1412" src="../.resources/auction.png">
|
|
|
|
A first-price sealed-bid auction in Leo.
|
|
|
|
## Summary
|
|
|
|
A first-price sealed-bid auction (or blind auction) is a type of auction in which each participant submits a bid without knowing the bids of the other participants.
|
|
The bidder with the highest bid wins the auction.
|
|
|
|
In this model, there are two parties: the auctioneer and the bidders.
|
|
- **Bidder**: A participant in the auction.
|
|
- **Auctioneer**: The party responsible for conducting the auction.
|
|
|
|
We make following assumptions about the auction:
|
|
- The auctioneer is honest. That is, the auctioneer will resolve **all** bids in the order they are received. The auctioneer will not tamper with the bids.
|
|
- There is no limit to the number of bids.
|
|
- The auctioneer knows the identity of all bidders, but bidders do not necessarily know the identity of other bidders.
|
|
|
|
Under this model, we require that:
|
|
- Bidders do not learn any information about the value of other bids.
|
|
|
|
### Auction Flow
|
|
The auction is conducted in a series of stages.
|
|
- **Bidding**: In the bidding stage, bidders submit bids to the auctioneer. They do so by invoking the `place_bid` function.
|
|
- **Resolution**: In the resolution stage, the auctioneer resolves the bids in the order they were received. The auctioneer does so by invoking the `resolve` function. The resolution process produces a single winning bid.
|
|
- **Finishing**: In this stage, the auctioneer finishes the auction by invoking the `finish` function. This function returns the winning bid to the bidder, which the bidder can then use to claim the item.
|
|
|
|
|
|
## Language Features and Concepts
|
|
- `record` declarations
|
|
- `assert_eq`
|
|
- record ownership
|
|
|
|
## Running the Program
|
|
|
|
Leo provides users with a command line interface for compiling and running Leo programs.
|
|
Users may either specify input values via the command line or provide an input file in `inputs/`.
|
|
|
|
### Configuring Accounts
|
|
The `.env` file contains a private key.
|
|
This is the account that will be used to sign transactions and is checked for record ownership.
|
|
When executing programs as different parties, be sure to set the `PRIVATE_KEY` field in `.env` to the appropriate values.
|
|
See `./run.sh` for an example of how to run the program as different parties.
|
|
|
|
|
|
The [Aleo SDK](https://github.com/AleoHQ/leo/tree/testnet3) provides an interface for generating new accounts.
|
|
To generate a new account, navigate to [aleo.tools](https://aleo.tools).
|
|
|
|
|
|
### Providing inputs via the command line.
|
|
1. Run
|
|
```bash
|
|
leo run <function_name> <input_1> <input_2> ...
|
|
```
|
|
See `./run.sh` for an example.
|
|
|
|
|
|
### Using an input file.
|
|
1. Modify `inputs/auction.in` with the desired inputs.
|
|
2. Run
|
|
```bash
|
|
leo run <function_name>
|
|
```
|