Compare commits

...

1 Commits

Author SHA1 Message Date
Jeff Emmett 1d5ff8687c Update attack_vector.ipynb 2021-03-02 21:23:18 -05:00
1 changed files with 20 additions and 20 deletions

View File

@ -5,22 +5,22 @@
"id": "continent-northeast", "id": "continent-northeast",
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Attack scenario implimentation in GitCoin Collusion Studies\n", "# Attack scenario implementation in Gitcoin Collusion Studies\n",
"This is a notebook with simple implimentation of different type of attack vectors. Detailed conceptual and math reasonsing can be found in [this presentation slides](https://drive.google.com/file/d/1Y68YnHIybMNLDUSgGc_Q_Um_6FbVbElh/view?usp=sharing)\n", "This is a notebook with a simple implementation of different type of attack vectors. Detailed conceptual and math reasoning can be found in [this presentation slides](https://drive.google.com/file/d/1Y68YnHIybMNLDUSgGc_Q_Um_6FbVbElh/view?usp=sharing)\n",
"*access is restricted to BlockScience Internal view only*\n", "*access is restricted to BlockScience Internal view only*\n",
"\n", "\n",
"## 1. Biref Introduction\n", "## 1. Brief Introduction\n",
"### Optimality Project Overview\n", "### Optimality Gap Mechanism Overview\n",
"Our current proposed solution in the GitCoin project is to: \n", "Our current proposed solution in the Gitcoin resarch collaboration project is to: \n",
"Define Community -> Find optimal funding scheme by changing the connectivity within the community to produce the maximum amount of matching fund -> Report/Flag Collusion\n", "Define community subgraph -> Find optimal funding scheme by changing the connectivity within the community to produce the maximum amount of matching funds -> Report/Flag Collusion if threshold for optimization is above a specified amount\n",
"\n", "\n",
"In QF funding collusion problem, the colluder's goal is to **attract as much matching fund as possible with limited original funding**, thus, our goal is to detect what group of users are attracting matching fund most efficiently by calculating the gap between maximun value of fund attracted and actual fund attracted.\n", "In QF funding collusion problem, the colluder's goal is to **attract as much matching fund as possible with limited original funding**, thus, our goal is to detect what group of users are attracting matching funds most efficiently by calculating the gap between maximun value of funds attracted and actual funds attracted.\n",
"\n", "\n",
"### Benchmarking \n", "### Benchmarking \n",
"\n", "\n",
"Thoeritically our solution can detect all efficient funding matching scheme, among which the effective collusion and some organically emerged high efficent coordination. To further illustrate our point, we want to show case how our algorithm can catch exisiting and hypothetical scenarios for collusion.\n", "Thoeretically our solution can detect all efficient funding matching schemes, among which might be effective illegal collusion, and likely some efficient organic community coordination. To further illustrate our point, we want to showcase how our algorithm can catch existing as well as hypothetical scenarios for collusion.\n",
"\n", "\n",
"Here we constructed several differnt collusion scenario **based on GitCoin Funding Report** and other mathematically possible ways to explot native QF and pairwise funding scheme. " "Here we constructed several different collusion scenarios **based on Gitcoin Funding Report** and other mathematically possible ways to exploit native QF and pairwise funding scheme. "
] ]
}, },
{ {
@ -29,15 +29,15 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"## 2.Basic generating function\n", "## 2.Basic generating function\n",
"This section is some hand-coded set up for agent-based simulation. \n", "This section is some hand-coded set up for agent-based simulation of attack vectors in the Gitcoin Grants system. \n",
"\n", "\n",
"This simulation have two types of agents, grants and users. Grants can receive fund and users can give fund to grants. The all have a variable \"fund\" to keep track of how much money they have as a state.\n", "This simulation has two types of agents: grants and contributors. Grants can receive funds and contributors can give fund to grants. They all have a variable \"fund\" to keep track of how much money they have as a system state.\n",
"\n", "\n",
"We then create a network with a set of users and grants, with rules specify how it should connect.\n", "We then create a network with a set of users and grants, with rules to specify how it should connect.\n",
"\n", "\n",
"Finally, for easy access, I use a dictionary to keep track of the users and grands by their index. The index start from 0, after it labels all grants it tehn label users. For example, in a network with 2 grand and 5 users, the grants index are 0 and 1, and the user index will be from 3 to 7.\n", "Finally, for easy access, I use a dictionary to keep track of the users and grants by their index. The index starts from 0, first labelling all grants and then contributors. For example, in a network with 2 grants and 5 contributors, the grants index are 0 and 1, and the user index will be from 3 to 7.\n",
"\n", "\n",
"This simple simulation **do not keep track of time**" "This simple simulation **does not keep track of time**."
] ]
}, },
{ {
@ -143,10 +143,10 @@
"id": "following-computer", "id": "following-computer",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## 3. Collusion with small fake account or friends\n", "## 3. Collusion with fake accounts or friends\n",
"This type of collusion is primarily having a lot of coordinated users dontate to the same big project. In practice, this can be creating a large number of fake account (tackled by sybil detection), coordinating a large group on telegram or other more advanced coordination mechaism that involves stake, or even spliting money among a large group of friends.\\\n", "This type of collusion is primarily having a lot of coordinated users donate to the same big project. In practice, this can be creating a large number of fake accounts (which is tackled by sybil detection), or coordinating a large group on telegram or other more advanced coordination mechanism that could involve stake, or even spliting money among a large group of friends.\n",
"\n", "\n",
"According to QF and pair-wise funding mechanism, this type of attact attrack largest amount of matching fund by spliting the money evenly and into smallest protion possible. Hypothetically, optimality gap shall allow calcualtion **based on changing numbers of total account with fixed amount of funding** on top of the current implimentation to be able to detect thsi type of collusion" "According to QF and pair-wise funding mechanism, this type of attack attracts the largest amount of matching funds by spliting the money evenly and into smallest portion possible. Hypothetically, optimality gap shall allow calcualtion **based on changing numbers of total account with fixed amount of funding** on top of the current implimentation to be able to detect thsi type of collusion."
] ]
}, },
{ {
@ -455,8 +455,8 @@
"id": "integrated-morocco", "id": "integrated-morocco",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## 5. Futhur Implication: two major type of collusion generation: connectivity and account numbers\n", "## 5. Futher Implication: two major type of collusion generation: connectivity and account numbers\n",
"As I explored earlier in this example, optimality gap can catch both secario" "As I explored earlier in this example, the Optimality Gap mechanism can catch both scenario"
] ]
}, },
{ {