Посмотри на что я отвечал, смысла не вижу. От этого ничего не измениться. Амаклик как троллил, так и будет троллить, хоть 30 контрактов ему напиши. Им уже скидывали ссылки на примеры и реализацию кучи разных контрактов. И? Они выбрали из них только даблеры, а остальные просто откинули за спины. К примеру http://etheropt.github.io/ сам контракт https://github.com/etheropt/etheropt.github.io/blob/master/etheropt.sol
ТЗ что написал Амаклик реализовать не сложно должно быть, напиши заткни неверующих.
Там по ссылке даже расписали функции контракта:
Market(uint expiration_, string underlying_, uint margin_, uint realityID_, bytes32 factHash_, address ethAddr_, int[] strikes_): This function initializes the smart contract with an expiration, underlying, margin amount, Reality Keys ID, Reality Keys fact hash, Reality Keys address, and list of strikes (use positive numbers for calls, negative numbers for puts). The limit on the number of strikes is 20.
addFunds(): This function adds the sent value to the user's account.
withdrawFunds(uint amount): This function withdraws the specified amount from the user's account and cancels all the user's outstanding orders. If the user doesn't have enough available funds to cover the withdrawal, then no withdrawal takes place.
getFunds(address user, bool onlyAvailable) constant returns(int): This function gets the total sum of all deposits less withdrawals in the user's account. If the onlyAvailable flag is true, it adds in the maximum possible loss so that it will return the total available funds.
getFundsAndAvailable(address user) constant returns(int, int): This function gets the funds and available funds in the user's account.
marketMaker(string server): This function can be called to establish the user as a market maker. Note that there can only be six market makers. If there are already six market makers, the new market maker must have a higher balance than the market maker with the lowest balance. In this case, the new market maker will replace the market maker with the lowest balance.
getMarketMakers() constant returns(string, string, string, string, string, string): This function returns the market makers.
getMarketMakerFunds() constant returns(int, int, int, int, int, int): This function returns the balances of the market makers. It can be used to determine the minimum balance required to become a market maker.
getOptionChain() constant returns (uint, string, uint, uint, bytes32, address): This function returns the expiration (timestamp), underlying, margin, Reality Keys ID, Reality Keys fact hash, and Reality Keys address.
expire(uint accountID, uint8 v, bytes32 r, bytes32 s, bytes32 value): This function expires the option chain if the provided signature is valid. If the accountID is 0, it expires all accounts. If the accountID is greater than zero, then it expires just the specified account (and marks it as expired). Expiration also returns funds to the users so that they don't have to manually withdraw after expiration.
getMoneyness(int strike, uint settlement, uint margin) constant returns(int): This function takes the strike (put is negative), settlement, and margin (all these values are scaled by 1000000000000000000) and returns the moneyness (also scaled by 1000000000000000000), taking into account the margin.
orderMatch(uint optionID, uint price, int size, uint orderID, uint blockExpires, address addr, uint8 v, bytes32 r, bytes32 s, int matchSize): This function matches an order. It will fail if there isn't enough size left in the order to match the trade, if either user doesn't have enough funds to cover the trade, if the order has expired, or if the signature is invalid. If the trade can cross, the users' positions will be updated to reflect the trade. Before attempting to match the trade, this function will add any sent value to the sender's account (so you can add funds and place an order at the same time). This value will be added to the user's account regardless of whether the order match succeeds.
orderMatchTest(uint optionID, uint price, int size, uint orderID, uint blockExpires, address addr, address sender, uint value, int matchSize) constant returns(bool): This function is a convenience function to test all of the failure conditions in the orderMatch function except for the signature check. The value represents the value that will be sent with the order match in order to fund the sender's account.
getMaxLossAfterTrade(address user, uint optionID, int positionChange, int cashChange) constant returns(int): This function returns the user's maximum possible loss after doing the specified trade.
min(uint a, uint b) constant returns(uint): This function returns the minimum of two numbers.
А по ссылке написано что это такое и для чего: