{"action":"created","issue":{"url":"https://api.github.com/repos/ethereum/go-ethereum/issues/3070","repository_url":"https://api.github.com/repos/ethereum/go-ethereum","labels_url":"https://api.github.com/repos/ethereum/go-ethereum/issues/3070/labels{/name}","comments_url":"https://api.github.com/repos/ethereum/go-ethereum/issues/3070/comments","events_url":"https://api.github.com/repos/ethereum/go-ethereum/issues/3070/events","html_url":"https://github.com/ethereum/go-ethereum/pull/3070","id":180539450,"number":3070,"title":"core/state: new state forking (reloaded)","user":{"login":"obscuren","id":6264126,"avatar_url":"https://avatars.githubusercontent.com/u/6264126?v=3","gravatar_id":"","url":"https://api.github.com/users/obscuren","html_url":"https://github.com/obscuren","followers_url":"https://api.github.com/users/obscuren/followers","following_url":"https://api.github.com/users/obscuren/following{/other_user}","gists_url":"https://api.github.com/users/obscuren/gists{/gist_id}","starred_url":"https://api.github.com/users/obscuren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/obscuren/subscriptions","organizations_url":"https://api.github.com/users/obscuren/orgs","repos_url":"https://api.github.com/users/obscuren/repos","events_url":"https://api.github.com/users/obscuren/events{/privacy}","received_events_url":"https://api.github.com/users/obscuren/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ethereum/go-ethereum/labels/core","name":"core","color":"fbca04"},{"url":"https://api.github.com/repos/ethereum/go-ethereum/labels/in%20progress","name":"in progress","color":"eb6420"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2016-10-02T22:23:14Z","updated_at":"2016-10-03T11:39:13Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ethereum/go-ethereum/pulls/3070","html_url":"https://github.com/ethereum/go-ethereum/pull/3070","diff_url":"https://github.com/ethereum/go-ethereum/pull/3070.diff","patch_url":"https://github.com/ethereum/go-ethereum/pull/3070.patch"},"body":"**`core/state: added state copy benchmark`**\r\n\r\nAdds a benchmark to measure the difference between the new state changes and the current\r\n\r\n**`core/state: improved state API and copying mechanism`**\r\n\r\nThe old state copy mechanism made deep copy for every object in state, most of them not required by the new state and therefor wasting a ton of resources. The copy of a state can be made using the `state.Fork` function, which will allocate a new State and return it. This new object holds a refernce to it's parent which can be used to query for any information not currently available. When an object can not be found it will recusively call the parent for the object until it reached the root\r\nstate and checks the state trie. Objects are now copied on demand and will never be copied during the `state.Fork` function call.\r\n\r\nState can also be flattened in to one single object, merging all the state from root to current, leaving a single state with all recent changes. State can be flattened using `state.Flatten`\r\n\r\nIn addition the following methods have changed to functions instead:\r\n\r\n* state.Commit\r\n* state.BatchCommit\r\n* state.IntermediateRoot"},"comment":{"url":"https://api.github.com/repos/ethereum/go-ethereum/issues/comments/251085667","html_url":"https://github.com/ethereum/go-ethereum/pull/3070#issuecomment-251085667","issue_url":"https://api.github.com/repos/ethereum/go-ethereum/issues/3070","id":251085667,"user":{"login":"GitCop","id":7943652,"avatar_url":"https://avatars.githubusercontent.com/u/7943652?v=3","gravatar_id":"","url":"https://api.github.com/users/GitCop","html_url":"https://github.com/GitCop","followers_url":"https://api.github.com/users/GitCop/followers","following_url":"https://api.github.com/users/GitCop/following{/other_user}","gists_url":"https://api.github.com/users/GitCop/gists{/gist_id}","starred_url":"https://api.github.com/users/GitCop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GitCop/subscriptions","organizations_url":"https://api.github.com/users/GitCop/orgs","repos_url":"https://api.github.com/users/GitCop/repos","events_url":"https://api.github.com/users/GitCop/events{/privacy}","received_events_url":"https://api.github.com/users/GitCop/received_events","type":"User","site_admin":false},"created_at":"2016-10-03T11:39:13Z","updated_at":"2016-10-03T11:39:13Z","body":"Thank you for your contribution! Your commits seem to not adhere to the repository coding standards\n\n * Commit: a0edffd0ee5eda3c333832e2d9a950734aa7b318\n  * Commits must be prefixed with the package(s) they modify\n\n * Commit: c66be719a809af4baf462d6ec035b42dc06aae35\n  * Commits must be prefixed with the package(s) they modify\n\nPlease check the [contribution guidelines](https://github.com/ethereum/go-ethereum#contribution) for more details.\n\n---\nThis message was auto-generated by https://gitcop.com\n"}}
{"actor":{"display_login":"GitCop"}}