{"action":"created","issue":{"url":"https://api.github.com/repos/dogecoin/dogecoin/issues/1291","labels_url":"https://api.github.com/repos/dogecoin/dogecoin/issues/1291/labels{/name}","comments_url":"https://api.github.com/repos/dogecoin/dogecoin/issues/1291/comments","events_url":"https://api.github.com/repos/dogecoin/dogecoin/issues/1291/events","html_url":"https://github.com/dogecoin/dogecoin/pull/1291","id":110046173,"number":1291,"title":"Make low-s verification mandatory for standard script verification","user":{"login":"patricklodder","id":1410115,"avatar_url":"https://avatars.githubusercontent.com/u/1410115?v=3","gravatar_id":"","url":"https://api.github.com/users/patricklodder","html_url":"https://github.com/patricklodder","followers_url":"https://api.github.com/users/patricklodder/followers","following_url":"https://api.github.com/users/patricklodder/following{/other_user}","gists_url":"https://api.github.com/users/patricklodder/gists{/gist_id}","starred_url":"https://api.github.com/users/patricklodder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/patricklodder/subscriptions","organizations_url":"https://api.github.com/users/patricklodder/orgs","repos_url":"https://api.github.com/users/patricklodder/repos","events_url":"https://api.github.com/users/patricklodder/events{/privacy}","received_events_url":"https://api.github.com/users/patricklodder/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-10-06T16:18:34Z","updated_at":"2015-10-07T10:18:34Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dogecoin/dogecoin/pulls/1291","html_url":"https://github.com/dogecoin/dogecoin/pull/1291","diff_url":"https://github.com/dogecoin/dogecoin/pull/1291.diff","patch_url":"https://github.com/dogecoin/dogecoin/pull/1291.patch"},"body":"This change makes a node only accept transactions with low-s signature encoding for relay and mining, but allows transactions with high-s signature encoding in mined blocks (no blocks will be rejected)\r\n\r\nI'm intending this to be applied against 1.10.0 as we have a soft-fork in there, so older (Dogecoin Core) clients will get reminders about being on an outdated version because of that anyway, which should result in better adoption. We could also consider doing the softfork now, together with BIP66, to not have to do a consensus fork every other release. Thoughts?\r\n\r\nPros:\r\n- If deployed by all miners, this will eliminate this particular malleability attack.\r\n- There is no impact on consensus\r\n\r\nCons:\r\n- Wallets that do not implement low-s signature encoding will see their transactions be rejected by growing numbers of peers and ultimately not be able to get any transaction mined.\r\n\r\nFollow ups:\r\n- Eventually, this verification needs to be confirmed through a consensus rule (enforcement of BIP62 for block validation) which will probably be another soft-fork\r\n\r\n---\r\nConstraints for hard implementation:\r\n- [x] Majority of \"standard\" libraries should implement low-s\r\n  - [x] bitcoinj (since 0.11)\r\n  - [x] bitcoinjs (since 1.0.0)\r\n  - [x] bitcoin-ruby (since 0.0.7)\r\n  - [x] python-bitcoinlib\r\n  - [ ] bitcoin-lib-php (unchecked)\r\n- [ ] Majority of wallets should implement low-s\r\n  - [x] Dogecoin Core (since 1.7)\r\n  - [ ] Multidoge\r\n  - [x] Android\r\n  - [x] Doughwallet (iOS)\r\n  - [ ] Web-wallets\r\n    - [x] dogechain.info\r\n    - [x] block.io\r\n    - [ ] redeempaper.com (unchecked)\r\n    - [ ] others?\r\n- [ ] *n*% of transactions over last *m* blocks must have low-s encoding"},"comment":{"url":"https://api.github.com/repos/dogecoin/dogecoin/issues/comments/146143461","html_url":"https://github.com/dogecoin/dogecoin/pull/1291#issuecomment-146143461","issue_url":"https://api.github.com/repos/dogecoin/dogecoin/issues/1291","id":146143461,"user":{"login":"patricklodder","id":1410115,"avatar_url":"https://avatars.githubusercontent.com/u/1410115?v=3","gravatar_id":"","url":"https://api.github.com/users/patricklodder","html_url":"https://github.com/patricklodder","followers_url":"https://api.github.com/users/patricklodder/followers","following_url":"https://api.github.com/users/patricklodder/following{/other_user}","gists_url":"https://api.github.com/users/patricklodder/gists{/gist_id}","starred_url":"https://api.github.com/users/patricklodder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/patricklodder/subscriptions","organizations_url":"https://api.github.com/users/patricklodder/orgs","repos_url":"https://api.github.com/users/patricklodder/repos","events_url":"https://api.github.com/users/patricklodder/events{/privacy}","received_events_url":"https://api.github.com/users/patricklodder/received_events","type":"User","site_admin":false},"created_at":"2015-10-07T10:18:34Z","updated_at":"2015-10-07T10:18:34Z","body":"I propose to set a manual constraint that n% of transactions over m blocks are using low-s encoded sigs is needed for us to merge this quickly, counting from block 907000 (`d9ea8cceed3356792dac20d0b8012d9726b90694ac6ecc1151aac14231a24f0a`) to prevent trolling.\r\n\r\nI had n = 95% and m = 100.000 in mind.\r\n\r\n"}}