{"action":"created","issue":{"url":"https://api.github.com/repos/mimblewimble/grin/issues/1982","repository_url":"https://api.github.com/repos/mimblewimble/grin","labels_url":"https://api.github.com/repos/mimblewimble/grin/issues/1982/labels{/name}","comments_url":"https://api.github.com/repos/mimblewimble/grin/issues/1982/comments","events_url":"https://api.github.com/repos/mimblewimble/grin/issues/1982/events","html_url":"https://github.com/mimblewimble/grin/issues/1982","id":380695997,"node_id":"MDU6SXNzdWUzODA2OTU5OTc=","number":1982,"title":"Dandelion: Reduce likelihood of a tx reaching the embargo threshold","user":{"login":"lehnberg","id":15728891,"node_id":"MDQ6VXNlcjE1NzI4ODkx","avatar_url":"https://avatars0.githubusercontent.com/u/15728891?v=4","gravatar_id":"","url":"https://api.github.com/users/lehnberg","html_url":"https://github.com/lehnberg","followers_url":"https://api.github.com/users/lehnberg/followers","following_url":"https://api.github.com/users/lehnberg/following{/other_user}","gists_url":"https://api.github.com/users/lehnberg/gists{/gist_id}","starred_url":"https://api.github.com/users/lehnberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lehnberg/subscriptions","organizations_url":"https://api.github.com/users/lehnberg/orgs","repos_url":"https://api.github.com/users/lehnberg/repos","events_url":"https://api.github.com/users/lehnberg/events{/privacy}","received_events_url":"https://api.github.com/users/lehnberg/received_events","type":"User","site_admin":false},"labels":[{"id":465821397,"node_id":"MDU6TGFiZWw0NjU4MjEzOTc=","url":"https://api.github.com/repos/mimblewimble/grin/labels/enhancement","name":"enhancement","color":"9eebcf","default":true},{"id":1090201315,"node_id":"MDU6TGFiZWwxMDkwMjAxMzE1","url":"https://api.github.com/repos/mimblewimble/grin/labels/needs%20more%20info","name":"needs more info","color":"fcc4c8","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-11-14T13:23:17Z","updated_at":"2018-11-21T17:10:43Z","closed_at":null,"author_association":"COLLABORATOR","body":"It appears that in the current dandelion config, 15% of all transactions can be expected not to fluff prior to the embargo timer. This means that these transactions would then be broadcasted the traditional way from the sender, making it straight forward to determine which IPs they originate from.\r\n\r\n15% seems like a high number for this likelihood, and it may make sense to find ways to reduce it.\r\n\r\n### Relevant [Gitter thread](https://gitter.im/grin_community/Lobby?at=5bec1ad762866f74739943a7): \r\n>Antioch Peverell @antiochp 14:53\r\nwe see the embargo timer expire pretty frequently\r\nwhat we do need to do is investigate this appears to expire more often than not\r\nspecifically - we see it expire on the originating node (say I send a stem tx, I see my node's embargo timer expire)\r\n>\r\n>lehnberg @lehnberg 14:55\r\nhttps://github.com/mimblewimble/grin/blob/fb3f967a860e184a87753b00b6281d10e1c2d4cc/pool/src/types.rs#L35\r\nSo with\r\n`patience = 10s`,\r\n`embargo = 180s`,\r\nit would mean that there’s a maximum of `180/10=18 hops` that could occur before embargo clocks out and the originating node broadcasts the transaction the traditional way.\r\nThen the question becomes: What’s the probability of hitting 18 stems in a row when `stem=90%`?\r\nWhich (I think) can be expressed as\r\n`0.9^18 ~ 0.15`, i.e. 15%\r\nAm I completely off base here?\r\n>\r\n> ...\r\n>\r\n>valdok @valdok 14:59\r\n@lehnberg you seem to be right. If you have a constant \"embargo\" timer, as well as constant \"patience\" timer, then it seems that it'll be activated in 15% of the cases. BTW, in the paper of Dandelion++ they tell that the \"embargo\" timer should be random, otherwise the origin of the transaction will always disclose itself.\r\n>\r\n> lehnberg @lehnberg 14:59\r\nBut if what I calculate above is correct, it would mean that you would expect 15% of all transactions to belong to the IP that broadcasts it, and that doesn’t sound right.\r\nOr good, at least."},"comment":{"url":"https://api.github.com/repos/mimblewimble/grin/issues/comments/440742514","html_url":"https://github.com/mimblewimble/grin/issues/1982#issuecomment-440742514","issue_url":"https://api.github.com/repos/mimblewimble/grin/issues/1982","id":440742514,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0MDc0MjUxNA==","user":{"login":"lehnberg","id":15728891,"node_id":"MDQ6VXNlcjE1NzI4ODkx","avatar_url":"https://avatars0.githubusercontent.com/u/15728891?v=4","gravatar_id":"","url":"https://api.github.com/users/lehnberg","html_url":"https://github.com/lehnberg","followers_url":"https://api.github.com/users/lehnberg/followers","following_url":"https://api.github.com/users/lehnberg/following{/other_user}","gists_url":"https://api.github.com/users/lehnberg/gists{/gist_id}","starred_url":"https://api.github.com/users/lehnberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lehnberg/subscriptions","organizations_url":"https://api.github.com/users/lehnberg/orgs","repos_url":"https://api.github.com/users/lehnberg/repos","events_url":"https://api.github.com/users/lehnberg/events{/privacy}","received_events_url":"https://api.github.com/users/lehnberg/received_events","type":"User","site_admin":false},"created_at":"2018-11-21T17:10:43Z","updated_at":"2018-11-21T17:10:43Z","author_association":"COLLABORATOR","body":"> the embargo timer is randomized by adding rand(0, 30) secs onto the configured time each run (so we look for any txs older than embargo + rand(0, 30) secs\r\n\r\n@antiochp where is this in the code?"}}
{"actor":{"display_login":"lehnberg"}}