{"action":"created","comment":{"url":"https://api.github.com/repos/ethereum/EIPs/pulls/comments/167173152","pull_request_review_id":95353974,"id":167173152,"diff_hunk":"@@ -0,0 +1,195 @@\n+## Preamble\n+\n+    EIP: 867\n+    Title: Standardized Ethereum Recovery Proposals\n+    Author: Dan Phifer (dp@musiconomi.com), James Levy (james@taptrust.com), Reuben Youngblom (reuben@taptrust.com)\n+    Type: Meta\n+    Status: Draft\n+    Created: 2018-02-02\n+    Replaces: 156\n+\n+## Simple Summary\n+Provide a standardized format for Ethereum Recovery Proposals (ERPs), which relate to recovery of certain classes of lost funds.  Individual ERPs will follow the same process as any EIP, but will be formatted and evaluated in a standard way to ensure consistency and transparency. \n+\n+**This EIP does not advocate for or against the acceptance of any particular recovery proposals, nor would its acceptance alone result in any state changes to the blockchain.**  \n+\n+## Abstract\n+This proposal identifies a common solution method that can be used to address certain classes of lost funds on the Ethereum blockchain.  In particular, it is intended to address cases where there is no disagreement about the right outcome between directly affected parties, enabling timely and low-risk solutions to many issues that have already occurred or are likely to occur again as Ethereum grows.  \n+\n+The solution method is divided into three parts:\n+\n+1. Standards that will need to be met by any follow-on ERP in order to be considered for approval. \n+2. Recommendations for a common format for ERPs to use to specify a set of corrective actions that can be interpreted by clients. \n+3. Guidelines for client teams to implement code that can read, interpret, and apply the corrective actions at a specific block.  The set of possible corrective actions is intentionally limited to minimize risk associated with any ERP. \n+\n+\n+## Motivation\n+The issue of fund recovery on the Ethereum blockchain is often controversial. Frozen fund recovery proposals are almost never successful due to the relatively ad-hoc nature of such requests and the subjectivity that is often required to evaluate the merits. This EIP attempts to remove these barriers by providing both a standardized format for fund recovery EIPs and an objective standard by which to measure future proposals.\n+\n+## Specification\n+This EIP describes a common format to be used for a subclass of EIPs, referred to as ethereum recovery proposals (ERPs), that propose an irregular state change required to address a fund recovery scenario that cannot be addressed using the standard protocol.  Each ERP will reference this EIP will follow the guidelines set out here.  \n+\n+The purpose of each ERP is (a) to clearly describe the issue to be corrected, (b) to describe why an irregular state change is both necessary and justified, and (c) to demonstrate that the proposed actions will achieve the ERP's objectives.  \n+\n+Each ERP will be required to use a standard format to represent the set of proposed state changes and must include a verification script that can reliably generate those changes.  ERPs that do not meet (at least) these requirements will not be considered for approval.\n+\n+Each ERP should contain the following items:\n+\n+- **Preamble**: EIP (RFC 822) header containing metadata about the ERP, including the EIP number, a short title with a description of the issue (75 character maximum), and the real names (and optional contact information) for each author.\n+- **Simple Summary**: A simplified and layman-accessible explanation of the ERP.\n+- **Detailed description**: A human-readable description of the proposed corrective actions and the criteria used to determine the proposed actions.  \n+- **Justification**: A concise description of why the corrective actions are both reasonable and unlikely to be challenged by any directly affected party.   \n+- **Verification script**: A machine-readable script that outputs one State Change Object. The script should clearly implement the selection and action generating logic outlined in the description such that reviewers can independently re-generate an identical State Change Object.  \n+- **State Change Object**: The output of the verification script and the input to the ethereum clients.  Primarily, it specifies the complete set of proposed state change actions. \n+- **Appendix (optional)**: with supporting evidence. Attachments in the appendix may include documents verifying details specified as part of the recovery proposal description. \n+\n+ The following sections give more detailed descriptions of the expectations for the Justification, Verification Script, and the format of the State Change Object.\n+\n+### Justification\n+A concise description of why this action is both reasonable (cannot be accomplished without an irregular state change) and unlikely to be challenged by a *directly* affected party. \n+\n+**Considerable example** (concise, includes supporting evidence, no negative impact): \n+*A crowdsale run by XYZ incorrectly published the testnet address of their crowdsale contract to their public website at the start of their crowdsale on Jan 19, 2018.  501 ETH was sent by 328 users on the mainnet to the incorrect address between block 4,235,987 and 4,236,050.  See here for the testnet contract, and see here for the transactions to the same address on the mainnet.  See here for a statement made by XYZ on their website.  Because there is a contract at this address on the testnet, it is considered effectively impossible that anyone coincidentally holds the private key. We have verified that all transactions came from addresses with no associated code, so there should be no issue returning eth to the senders.*  ","path":"EIPS/eip-867.md","position":52,"original_position":52,"commit_id":"6eb81843c2571bacc31811cdc59a93688fb43c52","original_commit_id":"6eb81843c2571bacc31811cdc59a93688fb43c52","user":{"login":"phiferd","id":25631,"avatar_url":"https://avatars0.githubusercontent.com/u/25631?v=4","gravatar_id":"","url":"https://api.github.com/users/phiferd","html_url":"https://github.com/phiferd","followers_url":"https://api.github.com/users/phiferd/followers","following_url":"https://api.github.com/users/phiferd/following{/other_user}","gists_url":"https://api.github.com/users/phiferd/gists{/gist_id}","starred_url":"https://api.github.com/users/phiferd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phiferd/subscriptions","organizations_url":"https://api.github.com/users/phiferd/orgs","repos_url":"https://api.github.com/users/phiferd/repos","events_url":"https://api.github.com/users/phiferd/events{/privacy}","received_events_url":"https://api.github.com/users/phiferd/received_events","type":"User","site_admin":false},"body":"Right.  Good point.","created_at":"2018-02-09T09:11:12Z","updated_at":"2018-02-09T09:11:12Z","html_url":"https://github.com/ethereum/EIPs/pull/867#discussion_r167173152","pull_request_url":"https://api.github.com/repos/ethereum/EIPs/pulls/867","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/ethereum/EIPs/pulls/comments/167173152"},"html":{"href":"https://github.com/ethereum/EIPs/pull/867#discussion_r167173152"},"pull_request":{"href":"https://api.github.com/repos/ethereum/EIPs/pulls/867"}},"in_reply_to_id":167172264},"pull_request":{"url":"https://api.github.com/repos/ethereum/EIPs/pulls/867","id":166732729,"html_url":"https://github.com/ethereum/EIPs/pull/867","diff_url":"https://github.com/ethereum/EIPs/pull/867.diff","patch_url":"https://github.com/ethereum/EIPs/pull/867.patch","issue_url":"https://api.github.com/repos/ethereum/EIPs/issues/867","number":867,"state":"open","locked":false,"title":"Standardized Ethereum Recovery Proposals (ERPs)","user":{"login":"phiferd","id":25631,"avatar_url":"https://avatars0.githubusercontent.com/u/25631?v=4","gravatar_id":"","url":"https://api.github.com/users/phiferd","html_url":"https://github.com/phiferd","followers_url":"https://api.github.com/users/phiferd/followers","following_url":"https://api.github.com/users/phiferd/following{/other_user}","gists_url":"https://api.github.com/users/phiferd/gists{/gist_id}","starred_url":"https://api.github.com/users/phiferd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phiferd/subscriptions","organizations_url":"https://api.github.com/users/phiferd/orgs","repos_url":"https://api.github.com/users/phiferd/repos","events_url":"https://api.github.com/users/phiferd/events{/privacy}","received_events_url":"https://api.github.com/users/phiferd/received_events","type":"User","site_admin":false},"body":"Provide a standardized format for Ethereum Recovery Proposals (ERPs), which relate to recovery of certain classes of lost funds.  \r\n\r\nCloses https://github.com/ethereum/EIPs/issues/866","created_at":"2018-02-02T07:12:52Z","updated_at":"2018-02-09T09:11:12Z","closed_at":null,"merged_at":null,"merge_commit_sha":"54af88ba4aedb14b12b6bc4d093f792b7c1937d6","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"milestone":null,"commits_url":"https://api.github.com/repos/ethereum/EIPs/pulls/867/commits","review_comments_url":"https://api.github.com/repos/ethereum/EIPs/pulls/867/comments","review_comment_url":"https://api.github.com/repos/ethereum/EIPs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ethereum/EIPs/issues/867/comments","statuses_url":"https://api.github.com/repos/ethereum/EIPs/statuses/6eb81843c2571bacc31811cdc59a93688fb43c52","head":{"label":"Musiconomi:erp","ref":"erp","sha":"6eb81843c2571bacc31811cdc59a93688fb43c52","user":{"login":"Musiconomi","id":31685771,"avatar_url":"https://avatars1.githubusercontent.com/u/31685771?v=4","gravatar_id":"","url":"https://api.github.com/users/Musiconomi","html_url":"https://github.com/Musiconomi","followers_url":"https://api.github.com/users/Musiconomi/followers","following_url":"https://api.github.com/users/Musiconomi/following{/other_user}","gists_url":"https://api.github.com/users/Musiconomi/gists{/gist_id}","starred_url":"https://api.github.com/users/Musiconomi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Musiconomi/subscriptions","organizations_url":"https://api.github.com/users/Musiconomi/orgs","repos_url":"https://api.github.com/users/Musiconomi/repos","events_url":"https://api.github.com/users/Musiconomi/events{/privacy}","received_events_url":"https://api.github.com/users/Musiconomi/received_events","type":"Organization","site_admin":false},"repo":{"id":119932105,"name":"EIPs","full_name":"Musiconomi/EIPs","owner":{"login":"Musiconomi","id":31685771,"avatar_url":"https://avatars1.githubusercontent.com/u/31685771?v=4","gravatar_id":"","url":"https://api.github.com/users/Musiconomi","html_url":"https://github.com/Musiconomi","followers_url":"https://api.github.com/users/Musiconomi/followers","following_url":"https://api.github.com/users/Musiconomi/following{/other_user}","gists_url":"https://api.github.com/users/Musiconomi/gists{/gist_id}","starred_url":"https://api.github.com/users/Musiconomi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Musiconomi/subscriptions","organizations_url":"https://api.github.com/users/Musiconomi/orgs","repos_url":"https://api.github.com/users/Musiconomi/repos","events_url":"https://api.github.com/users/Musiconomi/events{/privacy}","received_events_url":"https://api.github.com/users/Musiconomi/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Musiconomi/EIPs","description":"The Ethereum Improvement Proposal","fork":true,"url":"https://api.github.com/repos/Musiconomi/EIPs","forks_url":"https://api.github.com/repos/Musiconomi/EIPs/forks","keys_url":"https://api.github.com/repos/Musiconomi/EIPs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Musiconomi/EIPs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Musiconomi/EIPs/teams","hooks_url":"https://api.github.com/repos/Musiconomi/EIPs/hooks","issue_events_url":"https://api.github.com/repos/Musiconomi/EIPs/issues/events{/number}","events_url":"https://api.github.com/repos/Musiconomi/EIPs/events","assignees_url":"https://api.github.com/repos/Musiconomi/EIPs/assignees{/user}","branches_url":"https://api.github.com/repos/Musiconomi/EIPs/branches{/branch}","tags_url":"https://api.github.com/repos/Musiconomi/EIPs/tags","blobs_url":"https://api.github.com/repos/Musiconomi/EIPs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Musiconomi/EIPs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Musiconomi/EIPs/git/refs{/sha}","trees_url":"https://api.github.com/repos/Musiconomi/EIPs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Musiconomi/EIPs/statuses/{sha}","languages_url":"https://api.github.com/repos/Musiconomi/EIPs/languages","stargazers_url":"https://api.github.com/repos/Musiconomi/EIPs/stargazers","contributors_url":"https://api.github.com/repos/Musiconomi/EIPs/contributors","subscribers_url":"https://api.github.com/repos/Musiconomi/EIPs/subscribers","subscription_url":"https://api.github.com/repos/Musiconomi/EIPs/subscription","commits_url":"https://api.github.com/repos/Musiconomi/EIPs/commits{/sha}","git_commits_url":"https://api.github.com/repos/Musiconomi/EIPs/git/commits{/sha}","comments_url":"https://api.github.com/repos/Musiconomi/EIPs/comments{/number}","issue_comment_url":"https://api.github.com/repos/Musiconomi/EIPs/issues/comments{/number}","contents_url":"https://api.github.com/repos/Musiconomi/EIPs/contents/{+path}","compare_url":"https://api.github.com/repos/Musiconomi/EIPs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Musiconomi/EIPs/merges","archive_url":"https://api.github.com/repos/Musiconomi/EIPs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Musiconomi/EIPs/downloads","issues_url":"https://api.github.com/repos/Musiconomi/EIPs/issues{/number}","pulls_url":"https://api.github.com/repos/Musiconomi/EIPs/pulls{/number}","milestones_url":"https://api.github.com/repos/Musiconomi/EIPs/milestones{/number}","notifications_url":"https://api.github.com/repos/Musiconomi/EIPs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Musiconomi/EIPs/labels{/name}","releases_url":"https://api.github.com/repos/Musiconomi/EIPs/releases{/id}","deployments_url":"https://api.github.com/repos/Musiconomi/EIPs/deployments","created_at":"2018-02-02T04:31:42Z","updated_at":"2018-02-01T23:56:42Z","pushed_at":"2018-02-09T03:55:34Z","git_url":"git://github.com/Musiconomi/EIPs.git","ssh_url":"git@github.com:Musiconomi/EIPs.git","clone_url":"https://github.com/Musiconomi/EIPs.git","svn_url":"https://github.com/Musiconomi/EIPs","homepage":"","size":760,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ethereum:master","ref":"master","sha":"317d8a7f598e9931f1a07369b2fafcfffd993203","user":{"login":"ethereum","id":6250754,"avatar_url":"https://avatars3.githubusercontent.com/u/6250754?v=4","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"repo":{"id":44971752,"name":"EIPs","full_name":"ethereum/EIPs","owner":{"login":"ethereum","id":6250754,"avatar_url":"https://avatars3.githubusercontent.com/u/6250754?v=4","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ethereum/EIPs","description":"The Ethereum Improvement Proposal","fork":false,"url":"https://api.github.com/repos/ethereum/EIPs","forks_url":"https://api.github.com/repos/ethereum/EIPs/forks","keys_url":"https://api.github.com/repos/ethereum/EIPs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ethereum/EIPs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ethereum/EIPs/teams","hooks_url":"https://api.github.com/repos/ethereum/EIPs/hooks","issue_events_url":"https://api.github.com/repos/ethereum/EIPs/issues/events{/number}","events_url":"https://api.github.com/repos/ethereum/EIPs/events","assignees_url":"https://api.github.com/repos/ethereum/EIPs/assignees{/user}","branches_url":"https://api.github.com/repos/ethereum/EIPs/branches{/branch}","tags_url":"https://api.github.com/repos/ethereum/EIPs/tags","blobs_url":"https://api.github.com/repos/ethereum/EIPs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ethereum/EIPs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ethereum/EIPs/git/refs{/sha}","trees_url":"https://api.github.com/repos/ethereum/EIPs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ethereum/EIPs/statuses/{sha}","languages_url":"https://api.github.com/repos/ethereum/EIPs/languages","stargazers_url":"https://api.github.com/repos/ethereum/EIPs/stargazers","contributors_url":"https://api.github.com/repos/ethereum/EIPs/contributors","subscribers_url":"https://api.github.com/repos/ethereum/EIPs/subscribers","subscription_url":"https://api.github.com/repos/ethereum/EIPs/subscription","commits_url":"https://api.github.com/repos/ethereum/EIPs/commits{/sha}","git_commits_url":"https://api.github.com/repos/ethereum/EIPs/git/commits{/sha}","comments_url":"https://api.github.com/repos/ethereum/EIPs/comments{/number}","issue_comment_url":"https://api.github.com/repos/ethereum/EIPs/issues/comments{/number}","contents_url":"https://api.github.com/repos/ethereum/EIPs/contents/{+path}","compare_url":"https://api.github.com/repos/ethereum/EIPs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ethereum/EIPs/merges","archive_url":"https://api.github.com/repos/ethereum/EIPs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ethereum/EIPs/downloads","issues_url":"https://api.github.com/repos/ethereum/EIPs/issues{/number}","pulls_url":"https://api.github.com/repos/ethereum/EIPs/pulls{/number}","milestones_url":"https://api.github.com/repos/ethereum/EIPs/milestones{/number}","notifications_url":"https://api.github.com/repos/ethereum/EIPs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ethereum/EIPs/labels{/name}","releases_url":"https://api.github.com/repos/ethereum/EIPs/releases{/id}","deployments_url":"https://api.github.com/repos/ethereum/EIPs/deployments","created_at":"2015-10-26T13:57:23Z","updated_at":"2018-02-09T04:29:15Z","pushed_at":"2018-02-09T03:55:37Z","git_url":"git://github.com/ethereum/EIPs.git","ssh_url":"git@github.com:ethereum/EIPs.git","clone_url":"https://github.com/ethereum/EIPs.git","svn_url":"https://github.com/ethereum/EIPs","homepage":"","size":752,"stargazers_count":2022,"watchers_count":2022,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":478,"mirror_url":null,"archived":false,"open_issues_count":239,"license":null,"forks":478,"open_issues":239,"watchers":2022,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ethereum/EIPs/pulls/867"},"html":{"href":"https://github.com/ethereum/EIPs/pull/867"},"issue":{"href":"https://api.github.com/repos/ethereum/EIPs/issues/867"},"comments":{"href":"https://api.github.com/repos/ethereum/EIPs/issues/867/comments"},"review_comments":{"href":"https://api.github.com/repos/ethereum/EIPs/pulls/867/comments"},"review_comment":{"href":"https://api.github.com/repos/ethereum/EIPs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ethereum/EIPs/pulls/867/commits"},"statuses":{"href":"https://api.github.com/repos/ethereum/EIPs/statuses/6eb81843c2571bacc31811cdc59a93688fb43c52"}},"author_association":"NONE"}}
{"actor":{"display_login":"phiferd"}}