------------------------------------------------------------------------------ Week #1: Introduction to kaPoW ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ Week #2-3: Code walkthrough of relevant kaPoW application ------------------------------------------------------------------------------ Setup Geobyte's GeoNetMap on leela.cs.pdx.edu using MySQL. o Distribution is located at ~gurkan/geobytes. o Ask me for the MySQL database password on leela o Test using a PHP script using leela's web server (/var/www/html). Create a PHP script that allows one to configure the web server's latitude and longitude and returns the geographic distance between client and server via a MySQL call into the GeoNetMap database. o Sample perl script for calculating distance between two coordinates is located at ~gurkan/great_circle_distance.pl ------------------------------------------------------------------------------ Week #4: ------------------------------------------------------------------------------ Create a PHP script that delivers a page with links whose difficulties are determined by the geographic distance between client and server. ------------------------------------------------------------------------------ Week #5: ------------------------------------------------------------------------------ Mock up a ticket-purchasing web-site with a configurable latitude and longitude. Create a purchasing page with a purchase link whose difficulty is determined based on geographic distance between client and server. ------------------------------------------------------------------------------ Week #8-9: ------------------------------------------------------------------------------ Develop an automated web client to experimentally validate the ticket system. Have the client supply its IP address as a URL parameter (e.g. http://leela.cs.pdx.edu/ticket.php?IPSRC=131.252.220.6). Modify your PHP script to use this parameter to determine the difficulty of the puzzle being issued. Upon receiving a puzzle from the server, emulate the solving of the puzzle via calls to a sleep function with a random time parameter determined by the puzzle difficulty that assumes each hash takes one microsecond. For example, if Dc=100, then the web client will draw a random number uniformly from 0 to 100 and then call call sleep/usleep based on that number. Additionally, the web client should have the following: o configurable client addresses o multiple threads to simultaneously emulate multiple clients o a mechanism for tracking which clients were able to get tickets ------------------------------------------------------------------------------ Week #10 and Finals Week: ------------------------------------------------------------------------------ Show results of experiments that show how different difficulty algorithms generate different ticket purchasing results for your clients.