Algorithms

The Userfeeds Platform allows running custom algorithms on the top of data gathered from all supported sources such as Ethereum blockchain (mainnet, ropsten, rinkeby, kovan)

Algorithms can be referenced by their identifier which depends on how the author has decided to share them.

Note

The support is currently limited to built-in algorithms created by Userfeeds only. We will open custom algorithms for external developers in the near future.

Available built-in algorithms

Channel feed

Version: 0.1.0

Example:

curl -X POST \
    -d '{"flow":[{"algorithm":"experimental_channel_feed","params":{"id":"https://www.google.com"}}]}' \
    -H 'Content-Type: application/json' 'https://api.userfeeds.io/ranking/'

Json claim example:

{
    "type":["about"],
    "claim":{
        "target":"Cool website, bro!",
        "about":"https://www.google.com"
    }
}

ERC721 example:

ranking/experimental_channel_feed;id=ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d:593163

Json claim example:

{
    "type": ["about"],
    "claim": {
        "target": "New cool kitten on the block",
        "about": "ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d:593163"
    },
    "context": "ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d:608827"
}

Channels

Version: 0.1.0

Example:

curl -X POST \
    -d '{"flow":[{"algorithm":"experimental_channels","params":{"starts_with":"https://"}}]}' \
    -H 'Content-Type: application/json' 'https://api.userfeeds.io/ranking/'

Json claim example:

{
    "type":["about"],
    "claim":{
        "target":"Cool website, bro!",
        "about":"https://www.google.com"
    }
}

ERC721 example:

ranking/experimental_channels;starts_with=ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d

Json claim example:

{
    "type": ["about"],
    "claim": {
        "target": "New cool kitten on the block",
        "about": "ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d:593163"
    },
    "context": "ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d:608827"
}

Claims

Version: 0.1.0

All of above filters support filtering by multiple arguments:

Filters can be put in any combination:

JSON claim example:

{
    "author": "0x7195ebc1bdbcff1d8557541a2b186c6dfd01aef8",
    "created_at": 1522921352000,
    "family": "kovan",
    "id": "claim:0x98a873f7f2843a12fa76d3026ba30072ee21a70f34324e9ec7875c21cb8526e6:0",
    "sequence": 6727044,
    "target": "claim:0x1470ee0b001370a4e84272a117c94182c092f8e0bfb22b60909c754ce9dfd0d1:0"
}

Context feed

Version: 0.1.0

ERC721 example:

ranking/experimental_context_feed;id=ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d:587035

Json claim example:

{
    "claim":{
        "target": "I love catnip"
    },
    "context": "ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d:587035"
}

Contexts

Version: 0.1.0

ERC721 example:

ranking/experimental_contexts;starts_with=ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d

Json claim example:

{
    "claim":{
        "target": "I love catnip"
    },
    "context": "ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d:587035"
}

Feed

Algorithm used by https://userfeeds.github.io/cryptopurr/

Returns frontend specific structure of purrs.

Version: 0.1.1

Example:

ranking/cryptopurr_feed;context=ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d

Json claim example:

{
    "about": null,
    "abouted": [],
    "author": "0x460031ae4db5720d92a48fecf06a208c5099c186",
    "context": "ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d:593163",
    "created_at": 1523000940000,
    "family": "kovan",
    "id": "claim:0x464762e30e39458af1bfed2756adfdd3c673caefa4fb84544b21bbd90d03d262:0",
    "sequence": 6742075,
    "target": {
        "id": "Hurry up!"
    },
    "targeted": [],
    "type": "regular"
}

Filter claim hodl

Version: 0.1.0

For now it filters claims authored by identities which received at latest one transfer of given asset.

Possible root assets: ethereum, rinkeby, ropsten, kovan

Any ERC20: ethereum:0xe41d2489571d322189246dafa5ebde1f4699f498

Example:

ranking/experimental_claims;target=claim:0x49994…bf8e8:0/experimental_claim_hodl;asset=rinkeby

Filter by labels

It filters claims by those labeling target with given labels. Also adds info about those (filtered) labels to each claim.

Version: 0.1.0

Examples:

ranking/experimental_context_feed;id=ethereum:0x06012…a266d:341605/experimental_filter_labels;id=like ranking/experimental_context_feed;id=ethereum:0x06012…a266d:341605/experimental_filter_labels;id=follow;id=favourite

Valid erc721

It filters claims authored by an owner of context. It parses claim context to get collectible id and erc721 contract address. Then it verifies if claim author was an owner of this collectible at the time of creating claim.

Version: 0.1.0

Example:

ranking/experimental_context_feed;id=ethereum:0x06012…a266d:341605/experimental_valid_erc721

Tokens

Returns all erc721 tokens of given asset owned by given identity.

Version: 0.1.0

Example:

ranking/experimental_tokens;identity=0x157da…2bee3;asset=ethereum:0x06012…7a266d

Receivers

Version: 0.1.0

Returns receivers of given asset since given timestamp but not older than one day. Timestamp have to be in milliseconds.

Example:

curl -X POST \
    -d '{"flow":[{"algorithm":"experimental_receivers","params":{"timestamp":1523450030000,"asset":"ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d"}}]}' \
    -H 'Content-Type: application/json' 'https://api.userfeeds.io/ranking/'

Receivers

Version: 0.1.0

Returns all addresses which historically received given asset.

Example:

curl -X POST \
    -d '{"flow":[{"algorithm":"experimental_all_receivers","params":{"asset":"ethereum:0x06012c8cf97bead5deae237070f9587f8e7a266d"}}]}' \
    -H 'Content-Type: application/json' 'https://api.userfeeds.io/ranking/'

Airdrop receivers

Version: 0.1.0

Returns all addresses which historically received transfer connected with given airdrop id.

Example:

curl -X POST \
    -d '{"flow":[{"algorithm":"experimental_airdrop_receivers","params":{"id":"claim:0xb08b45fe956e1c0b31dfdf7d6f1007cb910799a77f4de2307a6a19a1f85a386c:0"}}]}' \
    -H 'Content-Type: application/json' 'https://api.userfeeds.io/ranking/'