registry-sdk/proto/cerc/auction/v1/auction.proto

172 lines
5.2 KiB
Protocol Buffer
Raw Normal View History

2022-03-31 10:00:02 +00:00
syntax = "proto3";
package cerc.auction.v1;
2022-03-31 10:00:02 +00:00
import "gogoproto/gogo.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
import "cosmos/base/v1beta1/coin.proto";
option go_package = "git.vdb.to/cerc-io/laconicd/x/auction";
2022-03-31 10:00:02 +00:00
// Params defines the auction module parameters
message Params {
// Write custom stringer method
2022-03-31 10:00:02 +00:00
option (gogoproto.goproto_stringer) = false;
// Duration of the commits phase in seconds
google.protobuf.Duration commits_duration = 1 [
(gogoproto.nullable) = false,
2022-03-31 10:00:02 +00:00
(gogoproto.stdduration) = true,
(gogoproto.moretags) = "json:\"commits_duration\" yaml:\"commits_duration\""
2022-03-31 10:00:02 +00:00
];
2022-03-31 10:00:02 +00:00
// Duration of the reveals phase in seconds
google.protobuf.Duration reveals_duration = 2 [
(gogoproto.nullable) = false,
2022-03-31 10:00:02 +00:00
(gogoproto.stdduration) = true,
(gogoproto.moretags) = "json:\"reveals_duration\" yaml:\"reveals_duration\""
2022-03-31 10:00:02 +00:00
];
2022-03-31 10:00:02 +00:00
// Commit fees
cosmos.base.v1beta1.Coin commit_fee = 3 [
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"commit_fee\" yaml:\"commit_fee\""
];
2022-03-31 10:00:02 +00:00
// Reveal fees
cosmos.base.v1beta1.Coin reveal_fee = 4 [
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"reveal_fee\" yaml:\"reveal_fee\""
];
2022-03-31 10:00:02 +00:00
// Minimum acceptable bid amount
cosmos.base.v1beta1.Coin minimum_bid = 5 [
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"minimum_bid\" yaml:\"minimum_bid\""
];
}
// Auction represents a sealed-bid on-chain auction
message Auction {
option (gogoproto.goproto_getters) = false;
string id = 1;
2024-09-16 05:45:44 +00:00
2024-09-17 08:29:31 +00:00
// Auction's kind (vickrey | provider)
2024-09-16 05:45:44 +00:00
string kind = 2 [
(gogoproto.moretags) = "json:\"kind\" yaml:\"kind\""
];
string status = 3;
2022-03-31 10:00:02 +00:00
// Address of the creator of the auction
2024-09-16 05:45:44 +00:00
string owner_address = 4;
2022-03-31 10:00:02 +00:00
// Timestamp at which the auction was created
2024-09-16 05:45:44 +00:00
google.protobuf.Timestamp create_time = 5 [
(gogoproto.stdtime) = true,
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"create_time\" yaml:\"create_time\""
];
2022-03-31 10:00:02 +00:00
// Timestamp at which the commits phase concluded
2024-09-16 05:45:44 +00:00
google.protobuf.Timestamp commits_end_time = 6 [
(gogoproto.stdtime) = true,
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"commits_end_time\" yaml:\"commits_end_time\""
];
2022-03-31 10:00:02 +00:00
// Timestamp at which the reveals phase concluded
2024-09-16 05:45:44 +00:00
google.protobuf.Timestamp reveals_end_time = 7 [
(gogoproto.stdtime) = true,
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"reveals_end_time\" yaml:\"reveals_end_time\""
];
2022-03-31 10:00:02 +00:00
// Commit and reveal fees must both be paid when committing a bid
// Reveal fee is returned only if the bid is revealed
2024-09-16 05:45:44 +00:00
cosmos.base.v1beta1.Coin commit_fee = 8 [
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"commit_fee\" yaml:\"commit_fee\""
];
2024-09-16 05:45:44 +00:00
cosmos.base.v1beta1.Coin reveal_fee = 9 [
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"reveal_fee\" yaml:\"reveal_fee\""
];
2022-03-31 10:00:02 +00:00
// Minimum acceptable bid amount for a valid commit
2024-09-16 05:45:44 +00:00
cosmos.base.v1beta1.Coin minimum_bid = 10 [
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"minimum_bid\" yaml:\"minimum_bid\""
];
2024-09-17 08:29:31 +00:00
// Addresses of the winners (one for vickrey auctions and can be multiple for provider auctions)
2024-09-16 05:45:44 +00:00
repeated string winner_addresses = 11;
2024-09-16 05:45:44 +00:00
// Winning bids, i.e., the best bids
repeated cosmos.base.v1beta1.Coin winning_bids = 12 [
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
2024-09-16 05:45:44 +00:00
(gogoproto.moretags) = "json:\"winning_bids\" yaml:\"winning_bids\""
2022-03-31 10:00:02 +00:00
];
2024-09-16 05:45:44 +00:00
// Amount the winner pays, i.e. the second best bid
cosmos.base.v1beta1.Coin winning_price = 13 [
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"winning_price\" yaml:\"winning_price\""
];
2024-09-16 05:45:44 +00:00
// Maximum acceptable bid amount for a valid commit for service provider auctions
cosmos.base.v1beta1.Coin max_price = 14 [
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"max_price\" yaml:\"max_price\""
];
// Number of providers to be selected
int32 num_providers = 15;
2022-03-31 10:00:02 +00:00
}
// Auctions represent all the auctions in the module
2022-03-31 10:00:02 +00:00
message Auctions {
option (gogoproto.goproto_getters) = false;
repeated Auction auctions = 1 [ (gogoproto.nullable) = false ];
2022-03-31 10:00:02 +00:00
}
// Bid represents a sealed bid (commit) made during the auction
message Bid {
option (gogoproto.goproto_getters) = false;
string auction_id = 1;
string bidder_address = 2;
string status = 3;
string commit_hash = 4;
google.protobuf.Timestamp commit_time = 5 [
(gogoproto.stdtime) = true,
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"commit_time\" yaml:\"commit_time\""
];
2022-03-31 10:00:02 +00:00
cosmos.base.v1beta1.Coin commit_fee = 6 [
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"commit_fee\" yaml:\"commit_fee\""
];
2022-03-31 10:00:02 +00:00
google.protobuf.Timestamp reveal_time = 7 [
(gogoproto.stdtime) = true,
2022-03-31 10:00:02 +00:00
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"reveal_time\" yaml:\"reveal_time\""
];
2022-03-31 10:00:02 +00:00
cosmos.base.v1beta1.Coin reveal_fee = 8 [
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"reveal_fee\" yaml:\"reveal_fee\""
];
2022-03-31 10:00:02 +00:00
cosmos.base.v1beta1.Coin bid_amount = 9 [
(gogoproto.nullable) = false,
(gogoproto.moretags) = "json:\"bid_amount\" yaml:\"bid_amount\""
];
2022-03-31 10:00:02 +00:00
}