{"action":"created","comment":{"url":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/comments/197309745","pull_request_review_id":131031646,"id":197309745,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NzMwOTc0NQ==","diff_hunk":"@@ -0,0 +1,409 @@\n+package gov\n+\n+import (\n+\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n+\twire \"github.com/cosmos/cosmos-sdk/wire\"\n+\t\"github.com/cosmos/cosmos-sdk/x/bank\"\n+\n+\tstake \"github.com/cosmos/cosmos-sdk/x/stake\"\n+)\n+\n+// Governance Keeper\n+type Keeper struct {\n+\t// The reference to the CoinKeeper to modify balances\n+\tck bank.Keeper\n+\n+\t// The reference to the StakeMapper to get information about stakers\n+\tsk stake.Keeper\n+\n+\t// The (unexposed) keys used to access the stores from the Context.\n+\tstoreKey sdk.StoreKey\n+\n+\t// The wire codec for binary encoding/decoding.\n+\tcdc *wire.Codec\n+\n+\t// Reserved codespace\n+\tcodespace sdk.CodespaceType\n+}\n+\n+// NewGovernanceMapper returns a mapper that uses go-wire to (binary) encode and decode gov types.\n+func NewKeeper(cdc *wire.Codec, key sdk.StoreKey, ck bank.Keeper, sk stake.Keeper, codespace sdk.CodespaceType) Keeper {\n+\treturn Keeper{\n+\t\tstoreKey:  key,\n+\t\tck:        ck,\n+\t\tsk:        sk,\n+\t\tcdc:       cdc,\n+\t\tcodespace: codespace,\n+\t}\n+}\n+\n+// Returns the go-wire codec.\n+func (keeper Keeper) WireCodec() *wire.Codec {\n+\treturn keeper.cdc\n+}\n+\n+// =====================================================\n+// Proposals\n+\n+// Creates a NewProposal\n+func (keeper Keeper) NewTextProposal(ctx sdk.Context, title string, description string, proposalType byte) Proposal {\n+\tproposalID, err := keeper.getNewProposalID(ctx)\n+\tif err != nil {\n+\t\treturn nil\n+\t}\n+\tvar proposal Proposal = &TextProposal{\n+\t\tProposalID:       proposalID,\n+\t\tTitle:            title,\n+\t\tDescription:      description,\n+\t\tProposalType:     proposalType,\n+\t\tStatus:           StatusDepositPeriod,\n+\t\tTotalDeposit:     sdk.Coins{},\n+\t\tSubmitBlock:      ctx.BlockHeight(),\n+\t\tVotingStartBlock: -1, // TODO: Make Time\n+\t}\n+\tkeeper.SetProposal(ctx, proposal)\n+\tkeeper.InactiveProposalQueuePush(ctx, proposal)\n+\treturn proposal\n+}\n+\n+// Get Proposal from store by ProposalID\n+func (keeper Keeper) GetProposal(ctx sdk.Context, proposalID int64) Proposal {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tbz := store.Get(KeyProposal(proposalID))\n+\tif bz == nil {\n+\t\treturn nil\n+\t}\n+\n+\tvar proposal Proposal\n+\tkeeper.cdc.MustUnmarshalBinary(bz, &proposal)\n+\n+\treturn proposal\n+}\n+\n+// Implements sdk.AccountMapper.\n+func (keeper Keeper) SetProposal(ctx sdk.Context, proposal Proposal) {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tbz := keeper.cdc.MustMarshalBinary(proposal)\n+\tstore.Set(KeyProposal(proposal.GetProposalID()), bz)\n+}\n+\n+// Implements sdk.AccountMapper.\n+func (keeper Keeper) DeleteProposal(ctx sdk.Context, proposal Proposal) {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tstore.Delete(KeyProposal(proposal.GetProposalID()))\n+}\n+\n+func (keeper Keeper) setInitialProposalID(ctx sdk.Context, proposalID int64) sdk.Error {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tbz := store.Get(KeyNextProposalID)\n+\tif bz != nil {\n+\t\treturn ErrInvalidGenesis(keeper.codespace, \"Initial ProposalID already set\")\n+\t}\n+\tbz = keeper.cdc.MustMarshalBinary(proposalID) // TODO: switch to MarshalBinaryBare when new go-amino gets added\n+\tstore.Set(KeyNextProposalID, bz)\n+\treturn nil\n+}\n+\n+func (keeper Keeper) getNewProposalID(ctx sdk.Context) (proposalID int64, err sdk.Error) {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tbz := store.Get(KeyNextProposalID)\n+\tif bz == nil {\n+\t\treturn -1, ErrInvalidGenesis(keeper.codespace, \"InitialProposalID never set\")\n+\t}\n+\tkeeper.cdc.MustUnmarshalBinary(bz, &proposalID)   // TODO: switch to UnmarshalBinaryBare when new go-amino gets added\n+\tbz = keeper.cdc.MustMarshalBinary(proposalID + 1) // TODO: switch to MarshalBinaryBare when new go-amino gets added\n+\tstore.Set(KeyNextProposalID, bz)\n+\treturn proposalID, nil\n+}\n+\n+func (keeper Keeper) activateVotingPeriod(ctx sdk.Context, proposal Proposal) {\n+\tproposal.SetVotingStartBlock(ctx.BlockHeight())\n+\tproposal.SetStatus(StatusVotingPeriod)\n+\tkeeper.SetProposal(ctx, proposal)\n+\tkeeper.ActiveProposalQueuePush(ctx, proposal)\n+}\n+\n+// =====================================================\n+// Procedures\n+\n+// Gets procedure from store. TODO: move to global param store and allow for updating of this\n+func (keeper Keeper) GetDepositProcedure(ctx sdk.Context) DepositProcedure {\n+\treturn DepositProcedure{\n+\t\tMinDeposit:       sdk.Coins{sdk.NewCoin(\"steak\", 10)},\n+\t\tMaxDepositPeriod: 200,\n+\t}\n+}\n+\n+// Gets procedure from store. TODO: move to global param store and allow for updating of this\n+func (keeper Keeper) GetVotingProcedure(ctx sdk.Context) VotingProcedure {\n+\treturn VotingProcedure{\n+\t\tVotingPeriod: 200,\n+\t}\n+}\n+\n+// Gets procedure from store. TODO: move to global param store and allow for updating of this\n+func (keeper Keeper) GetTallyingProcedure(ctx sdk.Context) TallyingProcedure {\n+\treturn TallyingProcedure{\n+\t\tThreshold:         sdk.NewRat(1, 2),\n+\t\tVeto:              sdk.NewRat(1, 3),\n+\t\tGovernancePenalty: sdk.NewRat(1, 100),\n+\t}\n+}\n+\n+// =====================================================\n+// Votes\n+\n+// Adds a vote on a specific proposal\n+func (keeper Keeper) AddVote(ctx sdk.Context, proposalID int64, voterAddr sdk.Address, option VoteOption) sdk.Error {\n+\tproposal := keeper.GetProposal(ctx, proposalID)\n+\tif proposal == nil {\n+\t\treturn ErrUnknownProposal(keeper.codespace, proposalID)\n+\t}\n+\tif proposal.GetStatus() != StatusVotingPeriod {\n+\t\treturn ErrInactiveProposal(keeper.codespace, proposalID)\n+\t}\n+\n+\tif option != OptionYes && option != OptionAbstain && option != OptionNo && option != OptionNoWithVeto {\n+\t\treturn ErrInvalidVote(keeper.codespace, VoteOptionToString(option))\n+\t}\n+\n+\tvote := Vote{\n+\t\tProposalID: proposalID,\n+\t\tVoter:      voterAddr,\n+\t\tOption:     option,\n+\t}\n+\tkeeper.setVote(ctx, proposalID, voterAddr, vote)\n+\n+\treturn nil\n+}\n+\n+// Gets the vote of a specific voter on a specific proposal\n+func (keeper Keeper) GetVote(ctx sdk.Context, proposalID int64, voterAddr sdk.Address) (Vote, bool) {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tbz := store.Get(KeyVote(proposalID, voterAddr))\n+\tif bz == nil {\n+\t\treturn Vote{}, false\n+\t}\n+\tvar vote Vote\n+\tkeeper.cdc.MustUnmarshalBinary(bz, &vote)\n+\treturn vote, true\n+}\n+\n+func (keeper Keeper) setVote(ctx sdk.Context, proposalID int64, voterAddr sdk.Address, vote Vote) {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tbz := keeper.cdc.MustMarshalBinary(vote)\n+\tstore.Set(KeyVote(proposalID, voterAddr), bz)\n+}\n+\n+// Gets all the votes on a specific proposal\n+func (keeper Keeper) GetVotes(ctx sdk.Context, proposalID int64) sdk.Iterator {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\treturn sdk.KVStorePrefixIterator(store, KeyVotesSubspace(proposalID))\n+}\n+\n+func (keeper Keeper) deleteVote(ctx sdk.Context, proposalID int64, voterAddr sdk.Address) {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tstore.Delete(KeyVote(proposalID, voterAddr))\n+}\n+\n+// =====================================================\n+// Deposits\n+\n+// Gets the vote of a specific voter on a specific proposal\n+func (keeper Keeper) GetDeposit(ctx sdk.Context, proposalID int64, depositerAddr sdk.Address) (Deposit, bool) {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tbz := store.Get(KeyDeposit(proposalID, depositerAddr))\n+\tif bz == nil {\n+\t\treturn Deposit{}, false\n+\t}\n+\tvar deposit Deposit\n+\tkeeper.cdc.MustUnmarshalBinary(bz, &deposit)\n+\treturn deposit, true\n+}\n+\n+// Gets the vote of a specific voter on a specific proposal\n+func (keeper Keeper) setDeposit(ctx sdk.Context, proposalID int64, depositerAddr sdk.Address, deposit Deposit) {\n+\tstore := ctx.KVStore(keeper.storeKey)\n+\tbz := keeper.cdc.MustMarshalBinary(deposit)\n+\tstore.Set(KeyDeposit(proposalID, depositerAddr), bz)\n+}\n+\n+// Gets the vote of a specific voter on a specific proposal\n+func (keeper Keeper) AddDeposit(ctx sdk.Context, proposalID int64, depositerAddr sdk.Address, depositAmount sdk.Coins) (sdk.Error, bool) {\n+\t// Checks to see if proposal exists\n+\tproposal := keeper.GetProposal(ctx, proposalID)\n+\tif proposal == nil {\n+\t\treturn ErrUnknownProposal(keeper.codespace, proposalID), false\n+\t}\n+\n+\t// Check if proposal is still depositable\n+\tif (proposal.GetStatus() != StatusDepositPeriod) && (proposal.GetStatus() != StatusVotingPeriod) {","path":"x/gov/keeper.go","position":242,"original_position":240,"commit_id":"3243bdbfb617e16904c2b02be7ed5997438bb506","original_commit_id":"d1235121f8f9596bb1100a677b80585ed5b07177","user":{"login":"cwgoes","id":24760279,"node_id":"MDQ6VXNlcjI0NzYwMjc5","avatar_url":"https://avatars2.githubusercontent.com/u/24760279?v=4","gravatar_id":"","url":"https://api.github.com/users/cwgoes","html_url":"https://github.com/cwgoes","followers_url":"https://api.github.com/users/cwgoes/followers","following_url":"https://api.github.com/users/cwgoes/following{/other_user}","gists_url":"https://api.github.com/users/cwgoes/gists{/gist_id}","starred_url":"https://api.github.com/users/cwgoes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cwgoes/subscriptions","organizations_url":"https://api.github.com/users/cwgoes/orgs","repos_url":"https://api.github.com/users/cwgoes/repos","events_url":"https://api.github.com/users/cwgoes/events{/privacy}","received_events_url":"https://api.github.com/users/cwgoes/received_events","type":"User","site_admin":false},"body":"Ah sorry, indeed.","created_at":"2018-06-21T23:59:51Z","updated_at":"2018-06-21T23:59:51Z","html_url":"https://github.com/cosmos/cosmos-sdk/pull/1168#discussion_r197309745","pull_request_url":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/1168","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/comments/197309745"},"html":{"href":"https://github.com/cosmos/cosmos-sdk/pull/1168#discussion_r197309745"},"pull_request":{"href":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/1168"}},"in_reply_to_id":196961890},"pull_request":{"url":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/1168","id":193479638,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkzNDc5NjM4","html_url":"https://github.com/cosmos/cosmos-sdk/pull/1168","diff_url":"https://github.com/cosmos/cosmos-sdk/pull/1168.diff","patch_url":"https://github.com/cosmos/cosmos-sdk/pull/1168.patch","issue_url":"https://api.github.com/repos/cosmos/cosmos-sdk/issues/1168","number":1168,"state":"open","locked":false,"title":"Governance MVP","user":{"login":"sunnya97","id":979241,"node_id":"MDQ6VXNlcjk3OTI0MQ==","avatar_url":"https://avatars0.githubusercontent.com/u/979241?v=4","gravatar_id":"","url":"https://api.github.com/users/sunnya97","html_url":"https://github.com/sunnya97","followers_url":"https://api.github.com/users/sunnya97/followers","following_url":"https://api.github.com/users/sunnya97/following{/other_user}","gists_url":"https://api.github.com/users/sunnya97/gists{/gist_id}","starred_url":"https://api.github.com/users/sunnya97/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sunnya97/subscriptions","organizations_url":"https://api.github.com/users/sunnya97/orgs","repos_url":"https://api.github.com/users/sunnya97/repos","events_url":"https://api.github.com/users/sunnya97/events{/privacy}","received_events_url":"https://api.github.com/users/sunnya97/received_events","type":"User","site_admin":false},"body":"<!-- Thanks for filing a PR! Before hitting the button, please check the following items.-->\r\n\r\n* [x] Updated all relevant documentation in docs\r\n* [x] Updated all code comments where relevant\r\n* [x] Wrote tests\r\n* [ ] Updated CHANGELOG.md\r\n","created_at":"2018-06-08T00:16:36Z","updated_at":"2018-06-21T23:59:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6f902068290dbf2da2e5417f1f4224ce2ccfa698","assignee":null,"assignees":[],"requested_reviewers":[{"login":"ebuchman","id":2300911,"node_id":"MDQ6VXNlcjIzMDA5MTE=","avatar_url":"https://avatars3.githubusercontent.com/u/2300911?v=4","gravatar_id":"","url":"https://api.github.com/users/ebuchman","html_url":"https://github.com/ebuchman","followers_url":"https://api.github.com/users/ebuchman/followers","following_url":"https://api.github.com/users/ebuchman/following{/other_user}","gists_url":"https://api.github.com/users/ebuchman/gists{/gist_id}","starred_url":"https://api.github.com/users/ebuchman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ebuchman/subscriptions","organizations_url":"https://api.github.com/users/ebuchman/orgs","repos_url":"https://api.github.com/users/ebuchman/repos","events_url":"https://api.github.com/users/ebuchman/events{/privacy}","received_events_url":"https://api.github.com/users/ebuchman/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":965477209,"node_id":"MDU6TGFiZWw5NjU0NzcyMDk=","url":"https://api.github.com/repos/cosmos/cosmos-sdk/labels/ready-for-review","name":"ready-for-review","color":"e6fad2","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/1168/commits","review_comments_url":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/1168/comments","review_comment_url":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cosmos/cosmos-sdk/issues/1168/comments","statuses_url":"https://api.github.com/repos/cosmos/cosmos-sdk/statuses/3243bdbfb617e16904c2b02be7ed5997438bb506","head":{"label":"cosmos:sunny/governance2","ref":"sunny/governance2","sha":"3243bdbfb617e16904c2b02be7ed5997438bb506","user":{"login":"cosmos","id":228843,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyODg0Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/228843?v=4","gravatar_id":"","url":"https://api.github.com/users/cosmos","html_url":"https://github.com/cosmos","followers_url":"https://api.github.com/users/cosmos/followers","following_url":"https://api.github.com/users/cosmos/following{/other_user}","gists_url":"https://api.github.com/users/cosmos/gists{/gist_id}","starred_url":"https://api.github.com/users/cosmos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cosmos/subscriptions","organizations_url":"https://api.github.com/users/cosmos/orgs","repos_url":"https://api.github.com/users/cosmos/repos","events_url":"https://api.github.com/users/cosmos/events{/privacy}","received_events_url":"https://api.github.com/users/cosmos/received_events","type":"Organization","site_admin":false},"repo":{"id":51193526,"node_id":"MDEwOlJlcG9zaXRvcnk1MTE5MzUyNg==","name":"cosmos-sdk","full_name":"cosmos/cosmos-sdk","owner":{"login":"cosmos","id":228843,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyODg0Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/228843?v=4","gravatar_id":"","url":"https://api.github.com/users/cosmos","html_url":"https://github.com/cosmos","followers_url":"https://api.github.com/users/cosmos/followers","following_url":"https://api.github.com/users/cosmos/following{/other_user}","gists_url":"https://api.github.com/users/cosmos/gists{/gist_id}","starred_url":"https://api.github.com/users/cosmos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cosmos/subscriptions","organizations_url":"https://api.github.com/users/cosmos/orgs","repos_url":"https://api.github.com/users/cosmos/repos","events_url":"https://api.github.com/users/cosmos/events{/privacy}","received_events_url":"https://api.github.com/users/cosmos/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cosmos/cosmos-sdk","description":"Secure Blockchain Framework","fork":false,"url":"https://api.github.com/repos/cosmos/cosmos-sdk","forks_url":"https://api.github.com/repos/cosmos/cosmos-sdk/forks","keys_url":"https://api.github.com/repos/cosmos/cosmos-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cosmos/cosmos-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cosmos/cosmos-sdk/teams","hooks_url":"https://api.github.com/repos/cosmos/cosmos-sdk/hooks","issue_events_url":"https://api.github.com/repos/cosmos/cosmos-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/cosmos/cosmos-sdk/events","assignees_url":"https://api.github.com/repos/cosmos/cosmos-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/cosmos/cosmos-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/cosmos/cosmos-sdk/tags","blobs_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cosmos/cosmos-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/cosmos/cosmos-sdk/languages","stargazers_url":"https://api.github.com/repos/cosmos/cosmos-sdk/stargazers","contributors_url":"https://api.github.com/repos/cosmos/cosmos-sdk/contributors","subscribers_url":"https://api.github.com/repos/cosmos/cosmos-sdk/subscribers","subscription_url":"https://api.github.com/repos/cosmos/cosmos-sdk/subscription","commits_url":"https://api.github.com/repos/cosmos/cosmos-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/cosmos/cosmos-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/cosmos/cosmos-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/cosmos/cosmos-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/cosmos/cosmos-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cosmos/cosmos-sdk/merges","archive_url":"https://api.github.com/repos/cosmos/cosmos-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cosmos/cosmos-sdk/downloads","issues_url":"https://api.github.com/repos/cosmos/cosmos-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/cosmos/cosmos-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/cosmos/cosmos-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cosmos/cosmos-sdk/labels{/name}","releases_url":"https://api.github.com/repos/cosmos/cosmos-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/cosmos/cosmos-sdk/deployments","created_at":"2016-02-06T07:15:53Z","updated_at":"2018-06-21T22:53:22Z","pushed_at":"2018-06-21T23:57:41Z","git_url":"git://github.com/cosmos/cosmos-sdk.git","ssh_url":"git@github.com:cosmos/cosmos-sdk.git","clone_url":"https://github.com/cosmos/cosmos-sdk.git","svn_url":"https://github.com/cosmos/cosmos-sdk","homepage":"https://cosmos.network/","size":26312,"stargazers_count":434,"watchers_count":434,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":125,"mirror_url":null,"archived":false,"open_issues_count":232,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":125,"open_issues":232,"watchers":434,"default_branch":"develop"}},"base":{"label":"cosmos:develop","ref":"develop","sha":"d08b916f011fda0c0ac757dafcf913cc17323fea","user":{"login":"cosmos","id":228843,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyODg0Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/228843?v=4","gravatar_id":"","url":"https://api.github.com/users/cosmos","html_url":"https://github.com/cosmos","followers_url":"https://api.github.com/users/cosmos/followers","following_url":"https://api.github.com/users/cosmos/following{/other_user}","gists_url":"https://api.github.com/users/cosmos/gists{/gist_id}","starred_url":"https://api.github.com/users/cosmos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cosmos/subscriptions","organizations_url":"https://api.github.com/users/cosmos/orgs","repos_url":"https://api.github.com/users/cosmos/repos","events_url":"https://api.github.com/users/cosmos/events{/privacy}","received_events_url":"https://api.github.com/users/cosmos/received_events","type":"Organization","site_admin":false},"repo":{"id":51193526,"node_id":"MDEwOlJlcG9zaXRvcnk1MTE5MzUyNg==","name":"cosmos-sdk","full_name":"cosmos/cosmos-sdk","owner":{"login":"cosmos","id":228843,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyODg0Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/228843?v=4","gravatar_id":"","url":"https://api.github.com/users/cosmos","html_url":"https://github.com/cosmos","followers_url":"https://api.github.com/users/cosmos/followers","following_url":"https://api.github.com/users/cosmos/following{/other_user}","gists_url":"https://api.github.com/users/cosmos/gists{/gist_id}","starred_url":"https://api.github.com/users/cosmos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cosmos/subscriptions","organizations_url":"https://api.github.com/users/cosmos/orgs","repos_url":"https://api.github.com/users/cosmos/repos","events_url":"https://api.github.com/users/cosmos/events{/privacy}","received_events_url":"https://api.github.com/users/cosmos/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cosmos/cosmos-sdk","description":"Secure Blockchain Framework","fork":false,"url":"https://api.github.com/repos/cosmos/cosmos-sdk","forks_url":"https://api.github.com/repos/cosmos/cosmos-sdk/forks","keys_url":"https://api.github.com/repos/cosmos/cosmos-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cosmos/cosmos-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cosmos/cosmos-sdk/teams","hooks_url":"https://api.github.com/repos/cosmos/cosmos-sdk/hooks","issue_events_url":"https://api.github.com/repos/cosmos/cosmos-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/cosmos/cosmos-sdk/events","assignees_url":"https://api.github.com/repos/cosmos/cosmos-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/cosmos/cosmos-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/cosmos/cosmos-sdk/tags","blobs_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cosmos/cosmos-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/cosmos/cosmos-sdk/languages","stargazers_url":"https://api.github.com/repos/cosmos/cosmos-sdk/stargazers","contributors_url":"https://api.github.com/repos/cosmos/cosmos-sdk/contributors","subscribers_url":"https://api.github.com/repos/cosmos/cosmos-sdk/subscribers","subscription_url":"https://api.github.com/repos/cosmos/cosmos-sdk/subscription","commits_url":"https://api.github.com/repos/cosmos/cosmos-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/cosmos/cosmos-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/cosmos/cosmos-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/cosmos/cosmos-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/cosmos/cosmos-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/cosmos/cosmos-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cosmos/cosmos-sdk/merges","archive_url":"https://api.github.com/repos/cosmos/cosmos-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cosmos/cosmos-sdk/downloads","issues_url":"https://api.github.com/repos/cosmos/cosmos-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/cosmos/cosmos-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/cosmos/cosmos-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cosmos/cosmos-sdk/labels{/name}","releases_url":"https://api.github.com/repos/cosmos/cosmos-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/cosmos/cosmos-sdk/deployments","created_at":"2016-02-06T07:15:53Z","updated_at":"2018-06-21T22:53:22Z","pushed_at":"2018-06-21T23:57:41Z","git_url":"git://github.com/cosmos/cosmos-sdk.git","ssh_url":"git@github.com:cosmos/cosmos-sdk.git","clone_url":"https://github.com/cosmos/cosmos-sdk.git","svn_url":"https://github.com/cosmos/cosmos-sdk","homepage":"https://cosmos.network/","size":26312,"stargazers_count":434,"watchers_count":434,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":125,"mirror_url":null,"archived":false,"open_issues_count":232,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":125,"open_issues":232,"watchers":434,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/1168"},"html":{"href":"https://github.com/cosmos/cosmos-sdk/pull/1168"},"issue":{"href":"https://api.github.com/repos/cosmos/cosmos-sdk/issues/1168"},"comments":{"href":"https://api.github.com/repos/cosmos/cosmos-sdk/issues/1168/comments"},"review_comments":{"href":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/1168/comments"},"review_comment":{"href":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cosmos/cosmos-sdk/pulls/1168/commits"},"statuses":{"href":"https://api.github.com/repos/cosmos/cosmos-sdk/statuses/3243bdbfb617e16904c2b02be7ed5997438bb506"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"cwgoes"}}