CS 592 Project Block Diagram

Here is a block diagram of the current design.

 

Here's a brief description of each element:

client program written by the user; authenticates to market, uploads agent, provides UI and communicates with agent.
client library provides services to client program, handles networking and cryptography
messaging provides storage and sequencing of message being sent between the client, the agent, and the agent runtime; uses the database for stable storage
database PostgresSQL server; provides stable storage to the messaging module; stores information on the current status and history of all market-related values and statistics, including prices, trading volumes, and agent holdings
market engine standalone program; runs between "turns" of the market; determines which buy and sell orders are matched and at what price; determines dividends and interest payments due; maintains database information regarding market statistics, agent holdings, and history
ML runtime supports execution of the agent runtime (which is written in ML); provides a gateway from the agent runtime to external functions such as the messaging module, the database, and the market engine
agent runtime accepts and validates uploaded agents; provides an interpreter or compiler for the agent programming language; sequences the execution of the agent programs and the market engine; limits and accounts for resource usage by agents; written in ML
agent program behaves as an actor in the market, issuing buy and sell orders and executing strategies to maximize income; communicates with client program; written in the agent programming language