{"action":"created","issue":{"url":"https://api.github.com/repos/ripple/rippled/issues/1170","labels_url":"https://api.github.com/repos/ripple/rippled/issues/1170/labels{/name}","comments_url":"https://api.github.com/repos/ripple/rippled/issues/1170/comments","events_url":"https://api.github.com/repos/ripple/rippled/issues/1170/events","html_url":"https://github.com/ripple/rippled/pull/1170","id":93881858,"number":1170,"title":"Optimize and cleanup SHAMap::iterator: ","user":{"login":"HowardHinnant","id":6708789,"avatar_url":"https://avatars.githubusercontent.com/u/6708789?v=3","gravatar_id":"","url":"https://api.github.com/users/HowardHinnant","html_url":"https://github.com/HowardHinnant","followers_url":"https://api.github.com/users/HowardHinnant/followers","following_url":"https://api.github.com/users/HowardHinnant/following{/other_user}","gists_url":"https://api.github.com/users/HowardHinnant/gists{/gist_id}","starred_url":"https://api.github.com/users/HowardHinnant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HowardHinnant/subscriptions","organizations_url":"https://api.github.com/users/HowardHinnant/orgs","repos_url":"https://api.github.com/users/HowardHinnant/repos","events_url":"https://api.github.com/users/HowardHinnant/events{/privacy}","received_events_url":"https://api.github.com/users/HowardHinnant/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ripple/rippled/labels/Nik","name":"Nik","color":"eeeeee"},{"url":"https://api.github.com/repos/ripple/rippled/labels/Passed","name":"Passed","color":"009800"},{"url":"https://api.github.com/repos/ripple/rippled/labels/Scott.S","name":"Scott.S","color":"eeeeee"},{"url":"https://api.github.com/repos/ripple/rippled/labels/Vinnie","name":"Vinnie","color":"eeeeee"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":13,"created_at":"2015-07-08T20:24:06Z","updated_at":"2015-07-12T14:49:35Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ripple/rippled/pulls/1170","html_url":"https://github.com/ripple/rippled/pull/1170","diff_url":"https://github.com/ripple/rippled/pull/1170.diff","patch_url":"https://github.com/ripple/rippled/pull/1170.patch"},"body":"* Remove dependence on boost::iterator_facade.\r\n* Rename iterator to const_iterator.\r\n* Change value_type from shared_ptr<SHAMapItem const> to SHAMapItem.\r\n* Install a stack-path to the current SHAMapItem in the const_iterator.\r\n\r\nThere should be a small performance gain associated with this change.\r\n\r\nI will squash after reviews, unless the reviewers prefer I squash first.\r\n\r\n@scottschurr @nbougalis "},"comment":{"url":"https://api.github.com/repos/ripple/rippled/issues/comments/120726253","html_url":"https://github.com/ripple/rippled/pull/1170#issuecomment-120726253","issue_url":"https://api.github.com/repos/ripple/rippled/issues/1170","id":120726253,"user":{"login":"vinniefalco","id":1503976,"avatar_url":"https://avatars.githubusercontent.com/u/1503976?v=3","gravatar_id":"","url":"https://api.github.com/users/vinniefalco","html_url":"https://github.com/vinniefalco","followers_url":"https://api.github.com/users/vinniefalco/followers","following_url":"https://api.github.com/users/vinniefalco/following{/other_user}","gists_url":"https://api.github.com/users/vinniefalco/gists{/gist_id}","starred_url":"https://api.github.com/users/vinniefalco/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vinniefalco/subscriptions","organizations_url":"https://api.github.com/users/vinniefalco/orgs","repos_url":"https://api.github.com/users/vinniefalco/repos","events_url":"https://api.github.com/users/vinniefalco/events{/privacy}","received_events_url":"https://api.github.com/users/vinniefalco/received_events","type":"User","site_admin":false},"created_at":"2015-07-12T14:49:35Z","updated_at":"2015-07-12T14:49:35Z","body":"@MarkusTeufelberger I don't think the attack that you described is possible. You can't just insert arbitrary data in a SHAMap, you have to do some very expensive mining. And only administrative commands let you iterate the ledger. Regular users can only access the SHAMaps in well defined ways. For example, traversing an order book during offer crossing. These implementations were designed with attacks in mind."}}