{"action":"created","issue":{"url":"https://api.github.com/repos/msgilligan/bitcoin-spock/issues/48","labels_url":"https://api.github.com/repos/msgilligan/bitcoin-spock/issues/48/labels{/name}","comments_url":"https://api.github.com/repos/msgilligan/bitcoin-spock/issues/48/comments","events_url":"https://api.github.com/repos/msgilligan/bitcoin-spock/issues/48/events","html_url":"https://github.com/msgilligan/bitcoin-spock/issues/48","id":57098176,"number":48,"title":"Add support for generating raw Omni Protocol transactions without RPC","user":{"login":"msgilligan","id":61612,"avatar_url":"https://avatars.githubusercontent.com/u/61612?v=3","gravatar_id":"","url":"https://api.github.com/users/msgilligan","html_url":"https://github.com/msgilligan","followers_url":"https://api.github.com/users/msgilligan/followers","following_url":"https://api.github.com/users/msgilligan/following{/other_user}","gists_url":"https://api.github.com/users/msgilligan/gists{/gist_id}","starred_url":"https://api.github.com/users/msgilligan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msgilligan/subscriptions","organizations_url":"https://api.github.com/users/msgilligan/orgs","repos_url":"https://api.github.com/users/msgilligan/repos","events_url":"https://api.github.com/users/msgilligan/events{/privacy}","received_events_url":"https://api.github.com/users/msgilligan/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/msgilligan/bitcoin-spock/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/msgilligan/bitcoin-spock/labels/help%20wanted","name":"help wanted","color":"159818"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/msgilligan/bitcoin-spock/milestones/2","html_url":"https://github.com/msgilligan/bitcoin-spock/milestones/0.4","labels_url":"https://api.github.com/repos/msgilligan/bitcoin-spock/milestones/2/labels","id":987829,"number":2,"title":"0.4","description":null,"creator":{"login":"msgilligan","id":61612,"avatar_url":"https://avatars.githubusercontent.com/u/61612?v=3","gravatar_id":"","url":"https://api.github.com/users/msgilligan","html_url":"https://github.com/msgilligan","followers_url":"https://api.github.com/users/msgilligan/followers","following_url":"https://api.github.com/users/msgilligan/following{/other_user}","gists_url":"https://api.github.com/users/msgilligan/gists{/gist_id}","starred_url":"https://api.github.com/users/msgilligan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msgilligan/subscriptions","organizations_url":"https://api.github.com/users/msgilligan/orgs","repos_url":"https://api.github.com/users/msgilligan/repos","events_url":"https://api.github.com/users/msgilligan/events{/privacy}","received_events_url":"https://api.github.com/users/msgilligan/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":0,"state":"open","created_at":"2015-02-20T04:24:15Z","updated_at":"2015-02-20T04:26:24Z","due_on":null,"closed_at":null},"comments":24,"created_at":"2015-02-09T22:13:13Z","updated_at":"2015-04-09T08:03:25Z","closed_at":null,"body":"Create library functions that can create raw Omni Protocol transactions that can be sent over the peer-to-peer network directly (e.g. via bitcoinj)\r\n\r\nWe currently have support for creating raw Bitcoin and Omni transactions using RPC calls designed for that purpose and some work towards creating raw Bitcoin transactions with bitcoinj, but do not have the capability to generate a complete Omni transaction in a client-only configuration.\r\n"},"comment":{"url":"https://api.github.com/repos/msgilligan/bitcoin-spock/issues/comments/91144743","html_url":"https://github.com/msgilligan/bitcoin-spock/issues/48#issuecomment-91144743","issue_url":"https://api.github.com/repos/msgilligan/bitcoin-spock/issues/48","id":91144743,"user":{"login":"dexX7","id":5836089,"avatar_url":"https://avatars.githubusercontent.com/u/5836089?v=3","gravatar_id":"","url":"https://api.github.com/users/dexX7","html_url":"https://github.com/dexX7","followers_url":"https://api.github.com/users/dexX7/followers","following_url":"https://api.github.com/users/dexX7/following{/other_user}","gists_url":"https://api.github.com/users/dexX7/gists{/gist_id}","starred_url":"https://api.github.com/users/dexX7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dexX7/subscriptions","organizations_url":"https://api.github.com/users/dexX7/orgs","repos_url":"https://api.github.com/users/dexX7/repos","events_url":"https://api.github.com/users/dexX7/events{/privacy}","received_events_url":"https://api.github.com/users/dexX7/received_events","type":"User","site_admin":false},"created_at":"2015-04-09T08:03:25Z","updated_at":"2015-04-09T08:03:25Z","body":"Are you also interested in decoding transactions? It's pretty straight forward for the most part, and simply a reveral of the encoding. The most complex part is probably the \"sender selection\" (which serves as seed for the deobfuscation), which I currently dislike due to it's complexity, it's unexpected bug-ish behavior and the need to fetch multiple transactions.\r\n\r\nThat aside, there are some further constraints, namely only some specific transaction output types are allowed as input, and others would invalidate the whole transaction, but I started with the core algorithm and have a bunch of unit tests ready:\r\n\r\nhttps://github.com/dexX7/bitcoin/blob/aecc38ce396bcd15abf71e6ed96f6d2fae90c669/src/extensions/core/transactions.cpp#L37-L129\r\nhttps://github.com/dexX7/bitcoin/blob/aecc38ce396bcd15abf71e6ed96f6d2fae90c669/src/extensions/test/sender_selection_tests.cpp"}}