Skip to content
An Alloy Verification Model for Consensus-Based Auction Protocols
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
MCA-model.als
README.md
releaseOutbidModule.als
utilityModule.als
valueModule.als

README.md

OVERVIEW

This package presents a model for Consensus-based Auction (MCA) protocols Using Alloy language.

MCA protocols are an elegant approach to establish conflict-free distributed allocations for a wide range of distributed system applications. As a case study, we use a virtual network embedding application

In our MCA-model module, physical nodes (agents) have been modeled using the Alloy signature "pnode" and virtual nodes have been modeled by the "vnodes" signature. Each physical node has a set of capacitated connection with other physical nodes modeled using binary relation "pconnections" in the "pnode" signature.

The Module "utilityModule" can be used to add different MCA policies. In our model we assume the utility function that agents (physical node) use to bid on items (virtual nodes) to be submodularity, and we use model it using two signatures "utility_submodular" and "utility_non_submodular".

With minor changes, new policies can be added to the current model. The existing Alloy "facts" that we provide as examples model the correct behaviour of a distributed auction system in the MCA protocol.

The state of the auction system is modelled using the "netState" signature, which captures different properties of the system such as the physical nodes' bidding vectors, the number of floating messages in the physical network of agents, and the generation time of the state. In order to test different properties of the MCA protocols, users can add additional Alloy assertions in order to check the corresponding properties. For instance, the following assertion is used to check the existence of a consensus state for the distributed auction, i.e., all the agents (physical nodes) agree on the winners of the items (virtual nodes):

assert consensus{
	1(#(netState) >= 10) implies (consensusPred[])
}

This assertion is checked in the scope of four agents/physical nodes and one service/virtual nodes using the following Alloy command:

check consensus for 10 but exactly 4 pnode, exactly 1 vnode

INSTALLATION AND RUNNING INSTRUCTIONS

To run any Alloy model, JRE and the Alloy model checker need to be installed.

The Alloy model checker can be downloaded from: http://alloy.mit.edu/alloy

Running

Step1: Start with executing the Alloy model checker and 
open the model's base module MCA-model.als. Make sure that
all the required modules (releaseOutbidModule, utilityModule and valueModule) 
are in the same directory as the MCA-model.als file.

Step2: In order to check a specific assertion select
from the "Execute" menu, the corresponding assertion name (e.g., "consensus").

Step3: If an assertion finds a counter example, this can be
seen using the "Show" button. In case that such counter example does
not exist the user will be notified that "No counter example exists" on the message
panel on the right.

PUBLICATIONS

Mirzaei, Saber; Esposito, Flavio. An Alloy Verification Model for Consensus-Based Auction Protocols, July 15, 2014. Tecnical Report BU-CS-TR-2014-004 (under submission) [PDF] [PS] [[Abstract]] (http://www.cs.bu.edu/techreports/abstracts/2014-004)

[References] Boston University Alloy Project. http://csr.bu.edu/alloy MIT Alloy Project. http://alloy.mit.edu/alloy/

You can’t perform that action at this time.