{"action":"created","comment":{"url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/comments/212826431","pull_request_review_id":149537836,"id":212826431,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMjgyNjQzMQ==","diff_hunk":"@@ -0,0 +1,596 @@\n+pragma solidity 0.4.18;\n+\n+\n+import \"./Orders.sol\";\n+import \"./KyberReserveInterface.sol\";\n+import \"./FeeBurner.sol\";\n+\n+\n+contract PermissionLessReserve is Orders, KyberReserveInterface {\n+\n+    uint public minOrderValueWei = 10 ** 18;                 // below this value order will be removed.\n+    uint public minOrderMakeWeiValue = 2 * minOrderValueWei; // Below this value can't create new order.\n+    uint public makersBurnFeeBps = 25;              // knc burn fee per order that is taken. = 25 / 1000 = 0.25 %\n+\n+    ERC20 public reserveToken; // this reserve will serve buy / sell for this token.\n+    FeeBurner public feeBurnerContract;\n+    address public admin;\n+\n+    ERC20 public kncToken;  //can't be constant. to enable testing and test net usage\n+    uint public kncStakePerEtherBPS = 20000; //for validating orders\n+    uint32 public numOrdersToAllocate = 60;\n+\n+    // KNC stakes\n+    struct KncStakes {\n+        uint128 freeKnc;    // knc that can be used to validate funds\n+        uint128 kncOnStake; // per order some knc will move to be kncOnStake. part of it will be used for burning.\n+    }\n+    \n+    //funds data\n+    mapping(address => mapping(address => uint)) public makerFunds; // deposited maker funds,\n+            // where order added funds are subtracted here and added to order\n+    mapping(address => KncStakes) public makerKncStakes; // knc funds are required for validating deposited funds\n+\n+    //maker orders\n+    struct FreeOrders {\n+        uint32 firstOrderId;\n+        uint32 numOrders; //max is 256\n+        uint8 maxOrdersReached;\n+        uint256 takenBitmap;\n+    }\n+\n+    mapping(address => FreeOrders) makerOrders; //each maker will have orders that will be reused.\n+\n+    function PermissionLessReserve(FeeBurner burner, ERC20 knc, ERC20 token, address _admin) public {\n+\n+        require(knc != address(0));\n+        require(token != address(0));\n+        require(_admin != address(0));\n+        require(burner != address(0));\n+\n+        feeBurnerContract = burner;\n+        kncToken = knc;\n+        reserveToken = token;\n+        admin = _admin;\n+\n+        kncToken.approve(feeBurnerContract, (2**255));\n+\n+        //notice. if decimal API not supported this should revert\n+        setDecimals(reserveToken);\n+        require(getDecimals(reserveToken) <= MAX_DECIMALS);\n+    }\n+\n+    function getConversionRate(ERC20 src, ERC20 dest, uint totalSrcAmount, uint blockNumber) public view returns(uint) {\n+\n+        require((src == ETH_TOKEN_ADDRESS) || (dest == ETH_TOKEN_ADDRESS));\n+        require((src == reserveToken) || (dest == reserveToken));\n+        blockNumber; // in this reserve no order expiry == no use for blockNumber. here to avoid compiler warning.\n+\n+        uint32 orderId;\n+\n+        if (src == ETH_TOKEN_ADDRESS) {\n+            if (isNextOrderTail(BUY_HEAD_ID)) return 0;\n+            orderId = BUY_HEAD_ID;\n+        } else {\n+            if (isNextOrderTail(SELL_HEAD_ID)) return 0;\n+            orderId = SELL_HEAD_ID;\n+        }\n+\n+        uint128 remainingSrcAmount = uint128(totalSrcAmount);\n+        uint128 totalDstAmount = 0;\n+\n+        while (!isNextOrderTail(orderId)) {\n+\n+            orderId = getNextOrderId(orderId);\n+\n+            Order memory order = orders[orderId];\n+\n+            if (order.srcAmount < remainingSrcAmount) {\n+                totalDstAmount += order.dstAmount;\n+                remainingSrcAmount -= order.srcAmount;\n+            } else {\n+                totalDstAmount += order.dstAmount * remainingSrcAmount / order.srcAmount;\n+                remainingSrcAmount = 0;\n+                break;\n+            }\n+        }\n+\n+        if ((remainingSrcAmount != 0) || (totalDstAmount == 0)) return 0; //not enough tokens to exchange.\n+\n+        //check overflow\n+        if (uint(totalDstAmount) * PRECISION < uint(totalDstAmount)) return 0;\n+\n+        return calcRateFromQty(totalSrcAmount, totalDstAmount, getDecimals(src), getDecimals(dest));\n+    }\n+\n+    function trade(\n+        ERC20 srcToken,\n+        uint srcAmount,\n+        ERC20 destToken,\n+        address destAddress,\n+        uint conversionRate,\n+        bool validate\n+    )\n+        public\n+        payable\n+        returns(bool)\n+    {\n+        require((srcToken == ETH_TOKEN_ADDRESS) || (destToken == ETH_TOKEN_ADDRESS));\n+        require((srcToken == reserveToken) || (destToken == reserveToken));\n+\n+        if (validate) {\n+            require(conversionRate > 0);\n+        }\n+\n+        uint32 orderId;\n+\n+        if (srcToken == ETH_TOKEN_ADDRESS) {\n+            require(msg.value == srcAmount);\n+            orderId = BUY_HEAD_ID;\n+        } else {\n+            require(srcToken.transferFrom(msg.sender, this, srcAmount));\n+            require(msg.value == 0);\n+            orderId = SELL_HEAD_ID;\n+        }\n+\n+        uint128 remainingSrcAmount = uint128(srcAmount);\n+        uint128 totalDstAmount = 0;\n+\n+        while (!isNextOrderTail(orderId)) {\n+\n+            // start with next since head order is dummy order\n+            orderId = getNextOrderId(orderId);\n+\n+            Order memory order = orders[orderId];\n+\n+            if (order.srcAmount <= remainingSrcAmount) {\n+                totalDstAmount += order.dstAmount;\n+                remainingSrcAmount -= order.srcAmount;\n+                require(takeFullOrder(orderId, srcToken, destToken, order));\n+                if (remainingSrcAmount == 0) break;\n+            } else {\n+                uint128 partialDstQty = order.dstAmount * remainingSrcAmount / order.srcAmount;\n+                totalDstAmount += partialDstQty;\n+                require(takePartialOrder(orderId, srcToken, destToken, remainingSrcAmount, partialDstQty));\n+                remainingSrcAmount = 0;\n+                break;\n+            }\n+        }\n+\n+        //all orders were successfully taken. send to destAddress\n+        if (destToken == ETH_TOKEN_ADDRESS) {\n+            destAddress.transfer(totalDstAmount);\n+        } else {\n+            require(destToken.transfer(destAddress, totalDstAmount));\n+        }\n+\n+        return true;\n+    }\n+\n+    event NewMakeOrder(uint32 orderId, address indexed maker, bool isEthToToken, uint128 srcAmount, uint128 dstAmount);\n+\n+    function addMakeOrder(address maker, bool isEthToToken, uint128 srcAmount, uint128 dstAmount,\n+        uint32 hintPrevOrder) public returns(bool)\n+    {\n+        require(maker == msg.sender);\n+        require(validateOrder(maker, isEthToToken, srcAmount, dstAmount));\n+\n+        uint32 newID = takeOrderId(maker);\n+\n+        if (hintPrevOrder != 0) {\n+\n+            addAfterId(maker, newID, srcAmount, dstAmount, hintPrevOrder, isEthToToken? ETH_TO_TOKEN : TOKEN_TO_ETH);\n+        } else {\n+\n+            if (isEthToToken) {\n+                add(maker, newID, srcAmount, dstAmount, BUY_HEAD_ID, ETH_TO_TOKEN);\n+            } else {\n+                add(maker, newID, srcAmount, dstAmount, SELL_HEAD_ID, TOKEN_TO_ETH);\n+            }\n+        }\n+\n+        NewMakeOrder(newID, maker, isEthToToken, srcAmount, dstAmount);\n+\n+        return true;\n+    }\n+\n+    event MakerDepositedTokens(address indexed maker, uint amountTwei);\n+\n+    function makerDepositTokens(address maker, uint amountTwei) public {","path":"contracts/PermissionLessReserve.sol","position":199,"original_position":199,"commit_id":"b65caaf885669fd28fa3c3e6a5421abeec8e6f75","original_commit_id":"b65caaf885669fd28fa3c3e6a5421abeec8e6f75","user":{"login":"yaronvel","id":19823963,"node_id":"MDQ6VXNlcjE5ODIzOTYz","avatar_url":"https://avatars1.githubusercontent.com/u/19823963?v=4","gravatar_id":"","url":"https://api.github.com/users/yaronvel","html_url":"https://github.com/yaronvel","followers_url":"https://api.github.com/users/yaronvel/followers","following_url":"https://api.github.com/users/yaronvel/following{/other_user}","gists_url":"https://api.github.com/users/yaronvel/gists{/gist_id}","starred_url":"https://api.github.com/users/yaronvel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yaronvel/subscriptions","organizations_url":"https://api.github.com/users/yaronvel/orgs","repos_url":"https://api.github.com/users/yaronvel/repos","events_url":"https://api.github.com/users/yaronvel/events{/privacy}","received_events_url":"https://api.github.com/users/yaronvel/received_events","type":"User","site_admin":false},"body":"`Token` not `Tokens`.","created_at":"2018-08-26T13:32:41Z","updated_at":"2018-08-26T13:34:50Z","html_url":"https://github.com/KyberNetwork/smart-contracts/pull/287#discussion_r212826431","pull_request_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/287","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/comments/212826431"},"html":{"href":"https://github.com/KyberNetwork/smart-contracts/pull/287#discussion_r212826431"},"pull_request":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/287"}}},"pull_request":{"url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/287","id":210944095,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEwOTQ0MDk1","html_url":"https://github.com/KyberNetwork/smart-contracts/pull/287","diff_url":"https://github.com/KyberNetwork/smart-contracts/pull/287.diff","patch_url":"https://github.com/KyberNetwork/smart-contracts/pull/287.patch","issue_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/287","number":287,"state":"open","locked":false,"title":"Permission less reserve","user":{"login":"ilanDoron","id":10189189,"node_id":"MDQ6VXNlcjEwMTg5MTg5","avatar_url":"https://avatars2.githubusercontent.com/u/10189189?v=4","gravatar_id":"","url":"https://api.github.com/users/ilanDoron","html_url":"https://github.com/ilanDoron","followers_url":"https://api.github.com/users/ilanDoron/followers","following_url":"https://api.github.com/users/ilanDoron/following{/other_user}","gists_url":"https://api.github.com/users/ilanDoron/gists{/gist_id}","starred_url":"https://api.github.com/users/ilanDoron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ilanDoron/subscriptions","organizations_url":"https://api.github.com/users/ilanDoron/orgs","repos_url":"https://api.github.com/users/ilanDoron/repos","events_url":"https://api.github.com/users/ilanDoron/events{/privacy}","received_events_url":"https://api.github.com/users/ilanDoron/received_events","type":"User","site_admin":false},"body":"@yaronvel \r\nthis is not for pull. \r\n\r\nonly so u can view code.\r\n\r\nif u could do some short look...","created_at":"2018-08-26T10:11:40Z","updated_at":"2018-08-26T13:34:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b8bc1c2601a780fbb60b28b2e6a3793fe4a97552","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/287/commits","review_comments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/287/comments","review_comment_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/comments{/number}","comments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/287/comments","statuses_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/statuses/b65caaf885669fd28fa3c3e6a5421abeec8e6f75","head":{"label":"KyberNetwork:permissionLessReserve","ref":"permissionLessReserve","sha":"b65caaf885669fd28fa3c3e6a5421abeec8e6f75","user":{"login":"KyberNetwork","id":28812853,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4ODEyODUz","avatar_url":"https://avatars0.githubusercontent.com/u/28812853?v=4","gravatar_id":"","url":"https://api.github.com/users/KyberNetwork","html_url":"https://github.com/KyberNetwork","followers_url":"https://api.github.com/users/KyberNetwork/followers","following_url":"https://api.github.com/users/KyberNetwork/following{/other_user}","gists_url":"https://api.github.com/users/KyberNetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/KyberNetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KyberNetwork/subscriptions","organizations_url":"https://api.github.com/users/KyberNetwork/orgs","repos_url":"https://api.github.com/users/KyberNetwork/repos","events_url":"https://api.github.com/users/KyberNetwork/events{/privacy}","received_events_url":"https://api.github.com/users/KyberNetwork/received_events","type":"Organization","site_admin":false},"repo":{"id":96011647,"node_id":"MDEwOlJlcG9zaXRvcnk5NjAxMTY0Nw==","name":"smart-contracts","full_name":"KyberNetwork/smart-contracts","owner":{"login":"KyberNetwork","id":28812853,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4ODEyODUz","avatar_url":"https://avatars0.githubusercontent.com/u/28812853?v=4","gravatar_id":"","url":"https://api.github.com/users/KyberNetwork","html_url":"https://github.com/KyberNetwork","followers_url":"https://api.github.com/users/KyberNetwork/followers","following_url":"https://api.github.com/users/KyberNetwork/following{/other_user}","gists_url":"https://api.github.com/users/KyberNetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/KyberNetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KyberNetwork/subscriptions","organizations_url":"https://api.github.com/users/KyberNetwork/orgs","repos_url":"https://api.github.com/users/KyberNetwork/repos","events_url":"https://api.github.com/users/KyberNetwork/events{/privacy}","received_events_url":"https://api.github.com/users/KyberNetwork/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KyberNetwork/smart-contracts","description":"Main smart contracts for Kyber Network, including the main platform contract, reserve contracts etc.","fork":false,"url":"https://api.github.com/repos/KyberNetwork/smart-contracts","forks_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/forks","keys_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/teams","hooks_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/hooks","issue_events_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/events{/number}","events_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/events","assignees_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/assignees{/user}","branches_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/branches{/branch}","tags_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/tags","blobs_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/refs{/sha}","trees_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/statuses/{sha}","languages_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/languages","stargazers_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/stargazers","contributors_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/contributors","subscribers_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/subscribers","subscription_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/subscription","commits_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/commits{/sha}","git_commits_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/commits{/sha}","comments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/comments{/number}","issue_comment_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/comments{/number}","contents_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/contents/{+path}","compare_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/merges","archive_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/downloads","issues_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues{/number}","pulls_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls{/number}","milestones_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/milestones{/number}","notifications_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/labels{/name}","releases_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/releases{/id}","deployments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/deployments","created_at":"2017-07-02T08:39:01Z","updated_at":"2018-08-25T17:22:14Z","pushed_at":"2018-08-26T12:47:44Z","git_url":"git://github.com/KyberNetwork/smart-contracts.git","ssh_url":"git@github.com:KyberNetwork/smart-contracts.git","clone_url":"https://github.com/KyberNetwork/smart-contracts.git","svn_url":"https://github.com/KyberNetwork/smart-contracts","homepage":"https://kyber.network","size":3312,"stargazers_count":159,"watchers_count":159,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":67,"mirror_url":null,"archived":false,"open_issues_count":27,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":67,"open_issues":27,"watchers":159,"default_branch":"master"}},"base":{"label":"KyberNetwork:master","ref":"master","sha":"02094d33d8d552adf8b4e58fbf38a3aabf27d12d","user":{"login":"KyberNetwork","id":28812853,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4ODEyODUz","avatar_url":"https://avatars0.githubusercontent.com/u/28812853?v=4","gravatar_id":"","url":"https://api.github.com/users/KyberNetwork","html_url":"https://github.com/KyberNetwork","followers_url":"https://api.github.com/users/KyberNetwork/followers","following_url":"https://api.github.com/users/KyberNetwork/following{/other_user}","gists_url":"https://api.github.com/users/KyberNetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/KyberNetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KyberNetwork/subscriptions","organizations_url":"https://api.github.com/users/KyberNetwork/orgs","repos_url":"https://api.github.com/users/KyberNetwork/repos","events_url":"https://api.github.com/users/KyberNetwork/events{/privacy}","received_events_url":"https://api.github.com/users/KyberNetwork/received_events","type":"Organization","site_admin":false},"repo":{"id":96011647,"node_id":"MDEwOlJlcG9zaXRvcnk5NjAxMTY0Nw==","name":"smart-contracts","full_name":"KyberNetwork/smart-contracts","owner":{"login":"KyberNetwork","id":28812853,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4ODEyODUz","avatar_url":"https://avatars0.githubusercontent.com/u/28812853?v=4","gravatar_id":"","url":"https://api.github.com/users/KyberNetwork","html_url":"https://github.com/KyberNetwork","followers_url":"https://api.github.com/users/KyberNetwork/followers","following_url":"https://api.github.com/users/KyberNetwork/following{/other_user}","gists_url":"https://api.github.com/users/KyberNetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/KyberNetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KyberNetwork/subscriptions","organizations_url":"https://api.github.com/users/KyberNetwork/orgs","repos_url":"https://api.github.com/users/KyberNetwork/repos","events_url":"https://api.github.com/users/KyberNetwork/events{/privacy}","received_events_url":"https://api.github.com/users/KyberNetwork/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KyberNetwork/smart-contracts","description":"Main smart contracts for Kyber Network, including the main platform contract, reserve contracts etc.","fork":false,"url":"https://api.github.com/repos/KyberNetwork/smart-contracts","forks_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/forks","keys_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/teams","hooks_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/hooks","issue_events_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/events{/number}","events_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/events","assignees_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/assignees{/user}","branches_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/branches{/branch}","tags_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/tags","blobs_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/refs{/sha}","trees_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/statuses/{sha}","languages_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/languages","stargazers_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/stargazers","contributors_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/contributors","subscribers_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/subscribers","subscription_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/subscription","commits_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/commits{/sha}","git_commits_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/commits{/sha}","comments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/comments{/number}","issue_comment_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/comments{/number}","contents_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/contents/{+path}","compare_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/merges","archive_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/downloads","issues_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues{/number}","pulls_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls{/number}","milestones_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/milestones{/number}","notifications_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/labels{/name}","releases_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/releases{/id}","deployments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/deployments","created_at":"2017-07-02T08:39:01Z","updated_at":"2018-08-25T17:22:14Z","pushed_at":"2018-08-26T12:47:44Z","git_url":"git://github.com/KyberNetwork/smart-contracts.git","ssh_url":"git@github.com:KyberNetwork/smart-contracts.git","clone_url":"https://github.com/KyberNetwork/smart-contracts.git","svn_url":"https://github.com/KyberNetwork/smart-contracts","homepage":"https://kyber.network","size":3312,"stargazers_count":159,"watchers_count":159,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":67,"mirror_url":null,"archived":false,"open_issues_count":27,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":67,"open_issues":27,"watchers":159,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/287"},"html":{"href":"https://github.com/KyberNetwork/smart-contracts/pull/287"},"issue":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/287"},"comments":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/287/comments"},"review_comments":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/287/comments"},"review_comment":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/287/commits"},"statuses":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/statuses/b65caaf885669fd28fa3c3e6a5421abeec8e6f75"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"yaronvel"}}