{"action":"created","comment":{"url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/comments/88088795","pull_request_review_id":8667889,"id":88088795,"diff_hunk":"@@ -0,0 +1,222 @@\n+pragma solidity ^0.4.4;\n+\n+/**\n+*  Things still missing/needs fixing:\n+*   in withdraw() , add fee related logic\n+*   checkingContribution, check whether or not a member as contributed as least contributionSize at the end of Round\n+*/\n+contract ROSCA {\n+  address constant WETRUST = 0x0;\n+  uint constant MIN_CONTRIBUTION_SIZE = 1000000000000;  // 1e12\n+  uint constant MAX_FEE_IN_THOUSANDTHS = 200;\n+  address constant WETRUST_FEE_ADDRESS = 0x0;\n+  uint constant MINIMUM_TIME_BEFORE_ROSCA_START = 1 days;\n+  uint constant MINIMUM_PARTICIPANTS = 2;\n+  uint16 constant EPOCH_TO_RUN = 1;\n+  uint constant MIN_ROUND_PERIOD_IN_DAYS = 1;\n+  uint constant MAX_ROUND_PERIOD_IN_DAYS = 30;\n+  uint constant MIN_DISTRIBUTION_RATIO = 65;\n+\n+  event LogParticipantApplied(address user);\n+  event LogParticipantApproved(address user);\n+  event LogContributionMade(address user, uint amount);\n+  event LogNewLowestBid(uint bid,address winnerAddress);\n+  event LogRoundFundsReleased(address winnerAddress, uint amountInWei);\n+  event LogFundsWithdrawal(address user, uint amount,address destination);\n+  event LogStartOfPeriod(uint currentRound);\n+\n+  // state variables\n+  uint16 currentEpoch;\n+  uint16 numEpochs;     // number of Epochs this contract will run\n+  uint16 roundPeriodInDays;\n+  uint16 serviceFeeInThousandths;\n+  uint16 currentRound;  // currentRound will be set to 0 when ROSCA is created and will turn to one when the ROSCA actually starts\n+  uint8 minParticipants;\n+  address foreman;    // address of the foreman\n+  uint contributionSize;\n+  uint startTime;     // startTime must be in timestamp\n+\n+  struct User{\n+    uint contributed; // Total amount contributed\n+    uint paid; // number of times bid Won\n+    uint pendingWithdrawl; // how much they are allowed to withdraw, i.e if someone wins , their pendingWithdrawal will go up by the bid.\n+    bool alive; // needed to check if a member is indeed a member\n+  }\n+  mapping(address => User) members; // using struct User to keep track of contributions and paid, allowance and etc.\n+  address[] membersAddresses;    // this is the only way to iterate through all the member's address\n+\n+  mapping(address => bool) pendingJoinRequest; // this way , address can be used as index, if we use address[] , we'll have to go thru a whole array\n+\n+  // bidding related state variable\n+  uint lowestBid;\n+  address winnerAddress;\n+\n+\n+  modifier onlyForeman {\n+  if(msg.sender != foreman) throw;\n+  _;\n+  }\n+  modifier onlyBeforeStart {\n+  if(currentRound != 0) throw;\n+  _;\n+  }\n+\n+  /**\n+    * Creates a new ROSCA and initializes the necessary variables, ROSCA doesnt start until the specified startTime\n+    * Creator of the contract becomes foreman and also added as the first member of the ROSCA\n+    */\n+  function ROSCA(\n+    uint16 roundPeriodInDays_,\n+    uint contributionSize_,\n+    uint8 minParticipants_,\n+    uint startTime_,\n+    uint16 feeInThousandths_)\n+  {\n+    if (roundPeriodInDays < MIN_ROUND_PERIOD_IN_DAYS || roundPeriodInDays > MAX_ROUND_PERIOD_IN_DAYS) throw;\n+    roundPeriodInDays = roundPeriodInDays_;\n+    if (contributionSize_ < MIN_CONTRIBUTION_SIZE) throw;\n+    contributionSize = contributionSize_;\n+\n+    numEpochs = EPOCH_TO_RUN;\n+\n+    if (minParticipants_ < MINIMUM_PARTICIPANTS) throw;// there should be at least 2 people to make a group\n+    minParticipants = minParticipants_;\n+\n+    if (startTime_ < (now + MINIMUM_TIME_BEFORE_ROSCA_START)) throw;\n+    startTime = startTime_;\n+\n+    if (feeInThousandths_ > MAX_FEE_IN_THOUSANDTHS) throw;\n+    serviceFeeInThousandths = feeInThousandths_;\n+\n+\n+    // set foreman\n+    foreman = msg.sender;\n+\n+    // register foreman as a member of ROSCA and increment numRounds in a Epoch to 1\n+    members[msg.sender] = User({paid: 0 , contributed: 0, alive: true, pendingWithdrawl: 0});\n+    membersAddresses.push(msg.sender);\n+  }\n+\n+  /** startRound() check if the round has ended, if so, get the winner of the currentRound's pot\n+    * and add the amount to the winner's pending withdrawal\n+    * if there were no bid during the round, address at selected at semi-random\n+    *\n+    * if currentRound = 0(ROSCA hasnt started), no winner is declared\n+    */\n+\n+  function startRound()\n+  {\n+\n+    if (now < startTime + (uint(currentRound + (currentEpoch * membersAddresses.length))  * (uint(roundPeriodInDays) * 1 days)) || membersAddresses.length < minParticipants)\n+      throw;\n+\n+    if (currentRound != 0) {\n+      if (winnerAddress == 0) //only true when there is no bidder in this round\n+      {\n+        // there is no bid in this round so find an unpaid address for this epoch\n+        for (uint i = 0 ; i < membersAddresses.length; i++)\n+        {\n+          uint semi_random = now % membersAddresses.length;\n+          if(members[membersAddresses[(currentRound-1 + i) % membersAddresses.length]].paid < currentEpoch)\n+          winnerAddress = membersAddresses[currentRound-1 + i];\n+          break;\n+        }\n+      }\n+      if(members[winnerAddress].paid == currentEpoch) throw;\n+      members[winnerAddress].pendingWithdrawl += lowestBid;\n+      members[winnerAddress].paid++;\n+      LogRoundFundsReleased(winnerAddress, lowestBid);\n+    }\n+    if (currentRound < membersAddresses.length)  // reset variables related to bidding\n+    {\n+      lowestBid = contributionSize * membersAddresses.length;\n+      winnerAddress = 0;\n+\n+      currentRound++;\n+    }else if (currentEpoch < numEpochs) // end of Epoch reset rounds\n+    {\n+      currentEpoch++;\n+      currentRound = 1;\n+      lowestBid = contributionSize;\n+    }\n+  }\n+\n+  /**\n+   * Anyone not already a member of ROSCA can request to join and they'll be put into\n+   * pendingJoinRequest untill foreman accept request or ROSCA has started\n+   *","path":"contracts/ROSCA.sol","position":147,"original_position":147,"commit_id":"dd92f8a1242be36e0474cb21d1cfe1fb5be043c1","original_commit_id":"dd92f8a1242be36e0474cb21d1cfe1fb5be043c1","user":{"login":"rmerom","id":650968,"avatar_url":"https://avatars.githubusercontent.com/u/650968?v=3","gravatar_id":"","url":"https://api.github.com/users/rmerom","html_url":"https://github.com/rmerom","followers_url":"https://api.github.com/users/rmerom/followers","following_url":"https://api.github.com/users/rmerom/following{/other_user}","gists_url":"https://api.github.com/users/rmerom/gists{/gist_id}","starred_url":"https://api.github.com/users/rmerom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmerom/subscriptions","organizations_url":"https://api.github.com/users/rmerom/orgs","repos_url":"https://api.github.com/users/rmerom/repos","events_url":"https://api.github.com/users/rmerom/events{/privacy}","received_events_url":"https://api.github.com/users/rmerom/received_events","type":"User","site_admin":false},"body":"extra line","created_at":"2016-11-15T19:04:21Z","updated_at":"2016-11-15T19:04:21Z","html_url":"https://github.com/WeTrustPlatform/rosca-contracts/pull/2#discussion_r88088795","pull_request_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/2","_links":{"self":{"href":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/comments/88088795"},"html":{"href":"https://github.com/WeTrustPlatform/rosca-contracts/pull/2#discussion_r88088795"},"pull_request":{"href":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/2","id":93676154,"html_url":"https://github.com/WeTrustPlatform/rosca-contracts/pull/2","diff_url":"https://github.com/WeTrustPlatform/rosca-contracts/pull/2.diff","patch_url":"https://github.com/WeTrustPlatform/rosca-contracts/pull/2.patch","issue_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/issues/2","number":2,"state":"open","locked":false,"title":"Implement rosca interface","user":{"login":"shine2lay","id":5243508,"avatar_url":"https://avatars.githubusercontent.com/u/5243508?v=3","gravatar_id":"","url":"https://api.github.com/users/shine2lay","html_url":"https://github.com/shine2lay","followers_url":"https://api.github.com/users/shine2lay/followers","following_url":"https://api.github.com/users/shine2lay/following{/other_user}","gists_url":"https://api.github.com/users/shine2lay/gists{/gist_id}","starred_url":"https://api.github.com/users/shine2lay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shine2lay/subscriptions","organizations_url":"https://api.github.com/users/shine2lay/orgs","repos_url":"https://api.github.com/users/shine2lay/repos","events_url":"https://api.github.com/users/shine2lay/events{/privacy}","received_events_url":"https://api.github.com/users/shine2lay/received_events","type":"User","site_admin":false},"body":"i did the changes you requested, let me know if i missed somethings","created_at":"2016-11-15T00:20:20Z","updated_at":"2016-11-15T19:20:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"342e7eac199bd8b4acaf30528ee8a3d800d0d064","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/2/commits","review_comments_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/2/comments","review_comment_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/comments{/number}","comments_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/issues/2/comments","statuses_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/statuses/dd92f8a1242be36e0474cb21d1cfe1fb5be043c1","head":{"label":"shine2lay:implement_rosca_interface","ref":"implement_rosca_interface","sha":"dd92f8a1242be36e0474cb21d1cfe1fb5be043c1","user":{"login":"shine2lay","id":5243508,"avatar_url":"https://avatars.githubusercontent.com/u/5243508?v=3","gravatar_id":"","url":"https://api.github.com/users/shine2lay","html_url":"https://github.com/shine2lay","followers_url":"https://api.github.com/users/shine2lay/followers","following_url":"https://api.github.com/users/shine2lay/following{/other_user}","gists_url":"https://api.github.com/users/shine2lay/gists{/gist_id}","starred_url":"https://api.github.com/users/shine2lay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shine2lay/subscriptions","organizations_url":"https://api.github.com/users/shine2lay/orgs","repos_url":"https://api.github.com/users/shine2lay/repos","events_url":"https://api.github.com/users/shine2lay/events{/privacy}","received_events_url":"https://api.github.com/users/shine2lay/received_events","type":"User","site_admin":false},"repo":{"id":73576739,"name":"rosca-contracts","full_name":"shine2lay/rosca-contracts","owner":{"login":"shine2lay","id":5243508,"avatar_url":"https://avatars.githubusercontent.com/u/5243508?v=3","gravatar_id":"","url":"https://api.github.com/users/shine2lay","html_url":"https://github.com/shine2lay","followers_url":"https://api.github.com/users/shine2lay/followers","following_url":"https://api.github.com/users/shine2lay/following{/other_user}","gists_url":"https://api.github.com/users/shine2lay/gists{/gist_id}","starred_url":"https://api.github.com/users/shine2lay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shine2lay/subscriptions","organizations_url":"https://api.github.com/users/shine2lay/orgs","repos_url":"https://api.github.com/users/shine2lay/repos","events_url":"https://api.github.com/users/shine2lay/events{/privacy}","received_events_url":"https://api.github.com/users/shine2lay/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/shine2lay/rosca-contracts","description":"Ethereum Contracts for WeTrust ROSCA","fork":true,"url":"https://api.github.com/repos/shine2lay/rosca-contracts","forks_url":"https://api.github.com/repos/shine2lay/rosca-contracts/forks","keys_url":"https://api.github.com/repos/shine2lay/rosca-contracts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shine2lay/rosca-contracts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shine2lay/rosca-contracts/teams","hooks_url":"https://api.github.com/repos/shine2lay/rosca-contracts/hooks","issue_events_url":"https://api.github.com/repos/shine2lay/rosca-contracts/issues/events{/number}","events_url":"https://api.github.com/repos/shine2lay/rosca-contracts/events","assignees_url":"https://api.github.com/repos/shine2lay/rosca-contracts/assignees{/user}","branches_url":"https://api.github.com/repos/shine2lay/rosca-contracts/branches{/branch}","tags_url":"https://api.github.com/repos/shine2lay/rosca-contracts/tags","blobs_url":"https://api.github.com/repos/shine2lay/rosca-contracts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shine2lay/rosca-contracts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shine2lay/rosca-contracts/git/refs{/sha}","trees_url":"https://api.github.com/repos/shine2lay/rosca-contracts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shine2lay/rosca-contracts/statuses/{sha}","languages_url":"https://api.github.com/repos/shine2lay/rosca-contracts/languages","stargazers_url":"https://api.github.com/repos/shine2lay/rosca-contracts/stargazers","contributors_url":"https://api.github.com/repos/shine2lay/rosca-contracts/contributors","subscribers_url":"https://api.github.com/repos/shine2lay/rosca-contracts/subscribers","subscription_url":"https://api.github.com/repos/shine2lay/rosca-contracts/subscription","commits_url":"https://api.github.com/repos/shine2lay/rosca-contracts/commits{/sha}","git_commits_url":"https://api.github.com/repos/shine2lay/rosca-contracts/git/commits{/sha}","comments_url":"https://api.github.com/repos/shine2lay/rosca-contracts/comments{/number}","issue_comment_url":"https://api.github.com/repos/shine2lay/rosca-contracts/issues/comments{/number}","contents_url":"https://api.github.com/repos/shine2lay/rosca-contracts/contents/{+path}","compare_url":"https://api.github.com/repos/shine2lay/rosca-contracts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shine2lay/rosca-contracts/merges","archive_url":"https://api.github.com/repos/shine2lay/rosca-contracts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shine2lay/rosca-contracts/downloads","issues_url":"https://api.github.com/repos/shine2lay/rosca-contracts/issues{/number}","pulls_url":"https://api.github.com/repos/shine2lay/rosca-contracts/pulls{/number}","milestones_url":"https://api.github.com/repos/shine2lay/rosca-contracts/milestones{/number}","notifications_url":"https://api.github.com/repos/shine2lay/rosca-contracts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shine2lay/rosca-contracts/labels{/name}","releases_url":"https://api.github.com/repos/shine2lay/rosca-contracts/releases{/id}","deployments_url":"https://api.github.com/repos/shine2lay/rosca-contracts/deployments","created_at":"2016-11-12T20:29:28Z","updated_at":"2016-11-12T20:29:30Z","pushed_at":"2016-11-15T18:29:42Z","git_url":"git://github.com/shine2lay/rosca-contracts.git","ssh_url":"git@github.com:shine2lay/rosca-contracts.git","clone_url":"https://github.com/shine2lay/rosca-contracts.git","svn_url":"https://github.com/shine2lay/rosca-contracts","homepage":null,"size":334,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"WeTrustPlatform:develop","ref":"develop","sha":"64e273500985da4afe18f1df3469b6c445289593","user":{"login":"WeTrustPlatform","id":22733080,"avatar_url":"https://avatars.githubusercontent.com/u/22733080?v=3","gravatar_id":"","url":"https://api.github.com/users/WeTrustPlatform","html_url":"https://github.com/WeTrustPlatform","followers_url":"https://api.github.com/users/WeTrustPlatform/followers","following_url":"https://api.github.com/users/WeTrustPlatform/following{/other_user}","gists_url":"https://api.github.com/users/WeTrustPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/WeTrustPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WeTrustPlatform/subscriptions","organizations_url":"https://api.github.com/users/WeTrustPlatform/orgs","repos_url":"https://api.github.com/users/WeTrustPlatform/repos","events_url":"https://api.github.com/users/WeTrustPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/WeTrustPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":73515004,"name":"rosca-contracts","full_name":"WeTrustPlatform/rosca-contracts","owner":{"login":"WeTrustPlatform","id":22733080,"avatar_url":"https://avatars.githubusercontent.com/u/22733080?v=3","gravatar_id":"","url":"https://api.github.com/users/WeTrustPlatform","html_url":"https://github.com/WeTrustPlatform","followers_url":"https://api.github.com/users/WeTrustPlatform/followers","following_url":"https://api.github.com/users/WeTrustPlatform/following{/other_user}","gists_url":"https://api.github.com/users/WeTrustPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/WeTrustPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WeTrustPlatform/subscriptions","organizations_url":"https://api.github.com/users/WeTrustPlatform/orgs","repos_url":"https://api.github.com/users/WeTrustPlatform/repos","events_url":"https://api.github.com/users/WeTrustPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/WeTrustPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/WeTrustPlatform/rosca-contracts","description":"Ethereum Contracts for WeTrust ROSCA","fork":false,"url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts","forks_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/forks","keys_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/teams","hooks_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/hooks","issue_events_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/issues/events{/number}","events_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/events","assignees_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/assignees{/user}","branches_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/branches{/branch}","tags_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/tags","blobs_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/git/refs{/sha}","trees_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/statuses/{sha}","languages_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/languages","stargazers_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/stargazers","contributors_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/contributors","subscribers_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/subscribers","subscription_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/subscription","commits_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/commits{/sha}","git_commits_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/git/commits{/sha}","comments_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/comments{/number}","issue_comment_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/issues/comments{/number}","contents_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/contents/{+path}","compare_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/merges","archive_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/downloads","issues_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/issues{/number}","pulls_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls{/number}","milestones_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/milestones{/number}","notifications_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/labels{/name}","releases_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/releases{/id}","deployments_url":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/deployments","created_at":"2016-11-11T22:05:15Z","updated_at":"2016-11-11T22:08:13Z","pushed_at":"2016-11-15T18:29:43Z","git_url":"git://github.com/WeTrustPlatform/rosca-contracts.git","ssh_url":"git@github.com:WeTrustPlatform/rosca-contracts.git","clone_url":"https://github.com/WeTrustPlatform/rosca-contracts.git","svn_url":"https://github.com/WeTrustPlatform/rosca-contracts","homepage":null,"size":328,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":2,"forks":1,"open_issues":2,"watchers":0,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/2"},"html":{"href":"https://github.com/WeTrustPlatform/rosca-contracts/pull/2"},"issue":{"href":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/issues/2"},"comments":{"href":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/WeTrustPlatform/rosca-contracts/statuses/dd92f8a1242be36e0474cb21d1cfe1fb5be043c1"}}}}
{"actor":{"display_login":"rmerom"}}