No project description provided
Project description
OpenRank SDK
EigenTrust by OpenRank
EigenTrust SDk is a python wrapper for https://github.com/Karma3Labs/go-eigentrust
Demo
Video: https://www.loom.com/share/483a3a1fab244207924595d98c056c70?sid=3112f668-3970-474d-9a3f-ed925231eb6e
Input
You will need local trust and optionally pre-trust. If pre-trust is not specified, each peer will have an equal weight. Both can be specified
using a CSV or an array of a dict with i
, j
, and v
.
Sample local trust dict variable
localtrust = [{
"i": "ek",
"j": "sd",
"v": 100
}, {
"i": "vm",
"j": "sd",
"v": 100
}, {
"i": "ek",
"j": "sd",
"v": 75
}]
Sample local trust (lt.csv
):
from,to,value
ek,sd,100
vm,sd,100
ek,vm,75
Here we have 3 peers: EK, VM, and SD. Both EK and VM trust SD by 100. EK also trusts VM, by 3/4 of how much he trusts SD.
Sample pre trust dict variable
pre = [{
"i": "ek",
"v": 50
}, {
"i": "vm",
"v": 100
}]
Sample pre-trust (pt.csv
):
peer_id,value
ek,50
vm,100
Here, both EK and VM are pre-trusted by the network (a priori trust). VM is trusted twice as much as EK.
Running
To run EigenTrust using the above input:
from openrank_sdk import EigenTrust
api_key = 'your_api_key'
a = EigenTrust(api_key=api_key)
# Option A - Use local variable
a.run_eigentrust(localtrust)
## run with pretrust you've defined rather than the one distributed equally
a.run_eigentrust(localtrust, pretrust)
# Option B - Use CSV
a.run_eigentrust_from_csv("./lt.csv")
## run with pretrust you've defined rather than the one distributed equally
a.run_eigentrust_from_csv("./lt.csv", "./pt.csv")
Outputs:
[
{'i': 'vm', 'v': 0.485969387755102},
{'i': 'sd', 'v': 0.2933673469387755},
{'i': 'ek', 'v': 0.22066326530612243}
]
Here, the EigenTrust algorithm distributed the network's trust onto the 3 peers:
- EK gets 22.0%
- SD gets 29.3%
- VM gets 48.5%
Appendix
Tweaking Alpha
The pre-trust input defines the relative ratio by which the network distributes its a priori trust onto trustworthy peers, in this case EK and VM.
You can also tweak the overall absolute strength of the pre-trust. This parameter, named alpha, represents the portion of the EigenTrust output taken from the pre-trust. For example, with alpha of 0.2, the EigenTrust output is a blend of 20% pre-trust and 80% peer-to-peer trust.
The CLI default for alpha is 0.5 (50%). If you re-run EigenTrust using a lower alpha of only 0.01 (1%):
from openrank_sdk import EigenTrust
api_key = 'your_api_key'
a = EigenTrust(api_key=api_key, alpha=0.01)
a.run_eigentrust(localtrust, pretrust)
We get a different result:
[
{'address': 'vm', 'score': 0.39451931175281096},
{'address': 'sd', 'score': 0.4401132971693594},
{'address': 'ek', 'score': 0.16536739107782936}
]
EK and VM's trust shares got lower (EK 21.7% ⇒ 16.5%, VM 48.1% ⇒ 39.5%), whereas SD's trust share soared (30.2% ⇒ 44%) despite not being pre-trusted. This is because, with only 1% pre-trust level, the peer-to-peer trust opinions (where SD is trusted by both EK and VM) make up for a much larger portion of trust.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file openrank_sdk-0.0.7.tar.gz
.
File metadata
- Download URL: openrank_sdk-0.0.7.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.11 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff2d1829cc56d37355f12d5fbe8e907005e55ebbd0936c380bec7a753b62d91a |
|
MD5 | 813c2cef4369848deb0ca6f05a14a026 |
|
BLAKE2b-256 | d0dfb8353445f1205c04f4b25fc579590cb180b1bd7d42a3e8c6169378806d24 |
File details
Details for the file openrank_sdk-0.0.7-py3-none-any.whl
.
File metadata
- Download URL: openrank_sdk-0.0.7-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.11 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 295af1b96df76975dbe75734bfbce703fee6bac8ac29d5e0b0faf53b45f16ce4 |
|
MD5 | 19240d15fb6f7ea2d647ad8f2a34738e |
|
BLAKE2b-256 | 26f35861c36439920fa339d910b109ca721535c0514de177b76c4c16f7a28e0b |