All Projects → TaintChain → RustyTaintChain

TaintChain / RustyTaintChain

Licence: other
The simplest of implementations for FIFO (Clayton's case from 1816) money tracking algorithm.

Programming Languages

javascript
184084 projects - #8 most used programming language
rust
11053 projects
CSS
56736 projects
python
139335 projects - #7 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to RustyTaintChain

ngx-metrika
Angular Yandex Metrika (Модуль поддержки счетчиков Яндекс Метрика для Angular 6+)
Stars: ✭ 13 (-18.75%)
Mutual labels:  tracking
vue-plausible
Plausible Analytics Vue.js Plugin and NuxtJS Module
Stars: ✭ 107 (+568.75%)
Mutual labels:  tracking
VIAN
No description or website provided.
Stars: ✭ 18 (+12.5%)
Mutual labels:  tracking
mailbox
📨 簡易電子報發送系統,使用 #Golang 實作,send campaign mail with open, click tracker.
Stars: ✭ 26 (+62.5%)
Mutual labels:  tracking
icloud3
iCloud3 - An advanced device_tracker custom_component for iPhones, iPads, etc. It monitors zone & location updates triggered by the HA iOS App and supports Apple 2fa verification.
Stars: ✭ 304 (+1800%)
Mutual labels:  tracking
accomplist
ACCOMPLIST - List Compiler
Stars: ✭ 51 (+218.75%)
Mutual labels:  tracking
COVID-19-tracker
北航大数据高精尖中心研究团队进行数据来源的整理与获取,利用自然语言处理等技术从已公开全国4626确诊患者轨迹中抽取了基本信息(性别、年龄、常住地、工作、武汉/湖北接触史等)、轨迹(时间、地点、交通工具、事件)及病患关系形成结构化信息
Stars: ✭ 75 (+368.75%)
Mutual labels:  tracking
pytorch-mot-tracking
Demo the Kalman Filter on pedestrian tracking with YOLOv3.
Stars: ✭ 76 (+375%)
Mutual labels:  tracking
matomo-tracker
Stand alone library for using matamo tracking in frontend projects
Stars: ✭ 138 (+762.5%)
Mutual labels:  tracking
keeptrack.space
🌎📡 TypeScript Astrodynamics Software for Non-Engineers. 3D Visualization of satellite data and the sensors that track them.
Stars: ✭ 61 (+281.25%)
Mutual labels:  tracking
groucho
Know all your users. Scalable front-end (anon) personalization & attribution
Stars: ✭ 31 (+93.75%)
Mutual labels:  tracking
OpenTLD KCF
OpenTLD with KCF tracker
Stars: ✭ 20 (+25%)
Mutual labels:  tracking
flyxc
GPS track visualization, flight planning, live tracking, and more ...
Stars: ✭ 47 (+193.75%)
Mutual labels:  tracking
FIFO-Driver
Character device driver working as FIFO pipe, created with a Linux Kernel module (SMP-Safe). Works on Android's kernel.
Stars: ✭ 12 (-25%)
Mutual labels:  fifo
async fifo
A dual clock asynchronous FIFO written in verilog, tested with Icarus Verilog
Stars: ✭ 117 (+631.25%)
Mutual labels:  fifo
smashblock
📡 🛡️A self-updating extensive blocklist filter for AdGaurd. Be sure to 🌟 this repository for updates!
Stars: ✭ 66 (+312.5%)
Mutual labels:  tracking
VideoRecognitionTracking
Real time object or face detection recognition and tracking in video. The Full end-to-end project.
Stars: ✭ 36 (+125%)
Mutual labels:  tracking
3D-Tracking-MVS
3D position tracking for soccer players with multi-camera videos
Stars: ✭ 68 (+325%)
Mutual labels:  tracking
packages.unity.com
Tracking changes of few Unity packages
Stars: ✭ 24 (+50%)
Mutual labels:  tracking
VOT2019
The Winner and Runner-up Trackers for VOT-2019 Challenges
Stars: ✭ 49 (+206.25%)
Mutual labels:  tracking

RustyTaintChain

The current implementation is based on https://github.com/gcarq/rusty-blockparser . A BlockSci implementation will be coming out shortly.


A court in 1816 had to tackle the problem of good and bad funds mixing through an account after a bank went bust. Which deposits to an account were to be matched with which later withdrawals? The Master of the Rolls, one of the most senior judges in Engand, established a simple rule of first-in-first-out (FIFO): the withdrawals from an account are deemed to be drawn in order against the deposits first made to it.

FIFO is not just the legal way to track funds, but is also effective, as it is deterministic and lossless, leading to efficient implementation. Our software provides such an implementation of FIFO for the bitcoin blockchain.

Before getting into the details, it may be worth worth answering a few frequently asked question:

The order of transactions in the block is arbitrary, so why arbitrarily assign meaning to it?

A number of people have argued that there is no meaning in the ordering, but this is not really true. The coinbase transaction has to follow the block maturity rule, stopping it from being used in the same block, and the transaction outputs can be used by other transactions within the same block only so long as they appear before the place are used in the block. Thus there is indeed ordering and timing information within blocks.

What happens with fees in Bitcoin when FIFO is applied? Do miners get tainted fees?

In Bitcoin the mining fee gets paid out in the coinbase transaction, along with the block reward. There is also the issue of what happens when the miners burning the fees or the reward. Luckily, the law has a simple answer here: if someone steals your horse and kills it, he still owes you a horse. So the only reasonable interpretation that the transaction outputs get paid first, in the order in which the transactions are listed, and then the rest is given to the miners. Only a few hundred bitcoins of the rewards are burnt, and as of June 2018, there are no transactions in which the fee plus the reward fail to cover the fees.

What happens when coins reported stolen are already tainted?

The second victim did not own the coins, as there is no statute of limitations for theft. So when the taint comes as input and collides with another reported taint, the first taint is saved and any subsequent taint gets ignored.


How to run?

In order to run FIFO you need to register the callback from the repo with the rust parser in src/main.rs and add an import to src/callbacks/mod.rs. There are very nice instructions on how to do this in the original repo with the parser https://github.com/gcarq/rusty-blockparser.

The script expects a file to be passed to it, that contains the information about the initial taint values (currently uses --address-file flag) The transaction file currently has the following format:

tx, [taint type, taint value]

where the [..] corresponds to sequential appearence of taint for UTXOs!. E.g. if you have a transaction (txDEAD_BEEF) with 3 satoshi outputs: 1, 1, 1 and you want to say that first one is clean and two after are dirty you would write it as

txDEAD_BEEF, Clean, 1, Dirty, 2

It is often the case, that you have addresses and you want to track the money movement. In such cases we found it useful to generate the addresses file in such a way that original addresses become the taint type and every tx made by those addresses get trainted with the address type.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].