Now some info about main Eth contract.
ApplicationInfo stores info about application: balance address of contract (not user!!!) which calculates reward. Each application is identified by uint16, so there could be at most 65536 applications which give coins to users. Cryptonfly application will have id=0.
User structure stores user balance and activity data for each application.
struct ApplicationInfo {
address owner;
uint64 balance;
}
struct ApplicationUserData {
uint32 activity_id;
uint24 last_10min;
int8 user_status;
}
struct User {
uint64 balance;
mapping (uint16 => ApplicationUserData) app_data;
}
mapping (uint16 => ApplicationInfo) apps;
mapping(address => User) users;
And here are some public methods.
function register_application(uint16 app_id, address app_contract);
function change_application_owner(uint16 app_id, address to_app_contract);
To register application you have to take any unused app_id and to burn some CRON coins. We require to burn some coins, because otherwise spammers will register all ids.
All applications can change their user status:
function change_user_status(address usr, uint16 app_id, int8 nstatus);
All users can move CRON coins without any fees and conditions. But they have to have some gas.

Your application can sell gas or give it for free.

// msg.sender tranfers some coins to "to_usr" address
function transfer(address to_usr, uint64 amount);
And the most important methods are these:
function send_reward(address to_usr, uint16 app_id, uint32 new_activity_id);
function get_reward(uint16 app_id, uint32 new_activity_id);
First (send_reward) is called by app_id owner, second one should be called by any user to claim reward himself.
Of course, these are not all methods of our contract. We will open source code soon.