{"id":17793003,"url":"https://github.com/evcu/crypto2017fall","last_synced_at":"2025-08-19T21:15:57.656Z","repository":{"id":79238374,"uuid":"109174073","full_name":"evcu/Crypto2017fall","owner":"evcu","description":null,"archived":false,"fork":false,"pushed_at":"2017-11-02T23:23:26.000Z","size":4042,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-07T17:17:19.568Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evcu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-01T19:25:02.000Z","updated_at":"2017-11-01T19:29:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"ebae83f2-9b62-42d6-880a-06eb5e43b517","html_url":"https://github.com/evcu/Crypto2017fall","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evcu%2FCrypto2017fall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evcu%2FCrypto2017fall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evcu%2FCrypto2017fall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evcu%2FCrypto2017fall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evcu","download_url":"https://codeload.github.com/evcu/Crypto2017fall/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246741117,"owners_count":20826067,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-27T11:03:41.642Z","updated_at":"2025-04-02T02:18:24.359Z","avatar_url":"https://github.com/evcu.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Crypto2017fall\nUtku Evci - ue225\n\nAndy Le - al4099\n\nRun proj3.ipynb\n\n\n1. Invalid blocks\n\t1. Block #11181 - Sum of outputs is greater than sum of inputs + 50btc block reward. The coinbase reward for this block is 5000000010. \n\t2. Block #12042 - Output #7998 has already been spent.\n\t3. Block #15567 - Tx # 5698 tries to spend transaction #15697, which does not exist yet since it is in the same block.\n\t4. Block #30223 - Two inputs are pointing to the same previous output.\n\t5. Block #52534 - Two coinbase transactions in this block. \n\t6. Block #56565 - Same output (#65403) is being used within the same block in two different transactions.\n\t7. Block #72902 - Sum of outputs is greater than sum of inputs + 50btc block reward. The coinbase reward for this block is 5000000010.\n\t8. Block #75047 - Transaction #105281 has a negative value. \n\t9. Block #88755 - Transaction #137237 has an output that is also an input.\n\t10. Block #97423 - Output #249860 has already been spent.\n\n\n2. After removing the above invalid blocks, there are 71,889 UTXOs that exist at of the last block in the data set. UTXO #170430 has the highest associated value, of 9000000000000. Note: we had 10 errors with finding inputs for some transactions, but if we tried invalidating those transactions, then many other transactions also became invalidated, so we left those 10 transactions in the UTXO set. \n\n3. Clustering addresses\n\n\ta. The lowest address of the entity controlling the greatest number of bitcoins is pk_id #172. The total value of all bitcoins it controls is 98346739827397.\n\t\n\tb. Transaction #93039 sends the entity above 4675300000000, which is the largest value that another entity sends to this one.\n\t\n\tc. False positives can exist in our clustering because we assumed that every N-to-1 transaction is owned by the same entity. In reality, maybe the N input transactions are owned by different individuals, who decided to purchase/send their btc to someone else. Moreover, for 1-to-1 transactions, we assumed that since there is no change address, that the same party owns both the input and output addresses. However, it is also possible that someone decided to send all of their btc (in the input address) to someone else, so there is no change address, but they are two different parties. \n\t\n\tFalse negatives may also exist in our clustering because it is possible one individual owns multiple addresses, but has simply never had any cross interactions between those separate addresses. In this case, it would be nearly impossible to ever associate these addresses together. Similarly, an individual could have sent themselves btc, while also including a change address that they control. For instance, if an individual wanted to have exactly 10btc in a new address, but only had 15btc in their current address, they may send 10btc to the new output address, and have 5btc return to a new change address. In this case, it is very hard to differentiate between this type of transaction and when the individual is simply sending 10btc to another unaffiliated party. \n\t\n\tYou could make the clustering more accurate by trying to analyze different patterns of popular Bitcoin applications. For instance, large mining pools may have frequent payouts to many different addresses of small amounts. Moreover, many of these inputs should be rooted from coinbase transactions. As such, we could potentially verify this by joining the mining pool ourself and trying to label that cluster as a mining pool. Similarly, popular applications such as Satoshi Dice would also have large quantities of incoming and outgoing transactions, also to many different addresses of its users. For each individual user, they may send the entire contents of one of their addresses to Satoshi Dice, and may later on receive a payment back from Satoshi Dice to the same address. However, this does not mean that the owner of the address also owns Satoshi Dice, and this would be a false positive. Depending on our goal of clustering addresses, we may either want to minimize the number of false positives, or minimize the number of false negatives. As such, we could also change our clustering guidelines with one of these two goals in mind.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevcu%2Fcrypto2017fall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevcu%2Fcrypto2017fall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevcu%2Fcrypto2017fall/lists"}