И ещё раз повторят, что было и не раз. Не больше! Идти на поводу у троллей, не царское это дело.
Может быть вы сами бы нашли, но так засрали ветку троллингом, что никто не хочет разгребать это ваше говно
Тебе предложили конкретную задачу и судя по ТЗ довольно легкую, не заметил троллинга в этом.
Посмотри на что я отвечал, смысла не вижу. От этого ничего не измениться. Амаклик как троллил, так и будет троллить, хоть 30 контрактов ему напиши. Им уже скидывали ссылки на примеры и реализацию кучи разных контрактов. И? Они выбрали из них только даблеры, а остальные просто откинули за спины. К примеру
http://etheropt.github.io/ сам контракт
https://github.com/etheropt/etheropt.github.io/blob/master/etheropt.sol Амаклик тут не причем, мне самому интересно, кучи, где эти кучи и что они делают? Что делает эта хрень что ты скинул?
ТЗ что написал Амаклик реализовать не сложно должно быть, напиши заткни неверующих.
Там по ссылке даже расписали функции контракта:
The Solidity code for the smart contract can be found in the GitHub repository at etheropt.sol. It has been compiled and deployed to the Ethereum network. You are encouraged to read and understand it yourself. You may even want to write your own code to generate transactions to send to the smart contract instead of using the GUI. The contract's functions are listed below.
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.
А по ссылке написано что это такое и для чего:
Etheropt is a decentralized options exchange built on Ethereum. The options are vanilla call and put options on the price of Ethereum in USD as reported by Poloniex and Coindesk and verified by Reality Keys. Etheropt has no owner. Its entire operation is described and executed by an Ethereum smart contract. Etheropt does not make any money as the smart contract does not charge any fees — not for trading, not for adding funds, not for withdrawing, not for anything.