Proof Of View: A Decentralized Advertising Platform.

SilentCiceroSilentCicero Toronto, CAMember Posts: 159 ✭✭✭
edited December 2014 in Projects
I've been toying around with a proof of view scheme now for some time. It's a toy-scheme. More fun than serious. Perhaps its possible, at this point I'm just structuring the idea.

The problem/question is this: How do we prove someone has viewed x Advert, and provide incentive for people who have viewed X advert?

With Swarm in development and Ethereum coming together, I've been thinking about ways to build an advertising platform with Ethereum using a sort of proof of view scheme.

You can, with some certainty, prove that someone has viewed an image by asking them a content related question about that image. So why not create an incentivised platform on Ethereum to do so (well there is many reasons, but lets continue anyways).

For sake of simplicity, there are two types of parties: Advertisers (those who post ads), and Users (those who post answers).

The Basic Idea:
- An Advertiser posts an Advert image (to say Swarm) and an Advert contract to Ethereum with a stake of X Ethers as incentive for users to view the Advert image and answer the Advert content question
- Users view the ad (based on incentive of stake, question difficulty and ramifications of the submission) and then answer a content related question about the Advert and submit a hash of the answer.
- Users who got the right answer are entered into a lottery to win a portion of the stake posted by the Advertiser

There are two ways (I know of) to prove that a user has submitted the right answer: (1) they submit the actual answer in a later block, or (2) they submit a hash which is cryptographically related to the answer hash posted with the Advert question. At this point, I don't know which one of these would work better, I just know they are both possibilities.

The posted data for an advertiser posting to the BC is something like this:
"magnet_link:" "image.jpg"
, "from": "1488Vsdf2XYJQnf6hkHTyJssaer3DwE6mo"
, "stake": 100
, "question_hash": "1Hsd3Ksdf7rHwKcqsdfkDvgjbg6x5g3TDD "
, "answer_hash": "21a226168bdec8a07bfbfd392ae0aa5456182fc528c7fda2a"
, "answer_length": 4
, "number_of_words": 1
, "question": "Who is in the photo top right of the photo?"
, "time_to_answer": 8
, "difficulty": 10
, "pow_hash": "64ac52facfbb7a33103acefa730af6863c39e894cefdb9e0"

Explanation of input data.
from: the Advertising Company address the Advert is from
stake: the amount the Advert Advertiser is willing to stake as incentive for good users viewing their advert
answer_hash: A hash of the actual answer to the question posted
answer_length: The actual character length of the answer
question: The content question related to the image (to prove someone actually viewed the ad)
time_to_answer: How many blocks until the answer will be posted
number_of_words: How many words are in the answer to the question posted
difficulty: The PoW hashing difficulty needed to submit an answer (used to mitigate spam)
pow_hash: A hash provided by the advertiser to prevent Ad spamming the BC

The initial user posted answer hash data would look something like this:
"question_hash": "1Hsd3Ksdf7rHwKcqsdfkDvgjbg6x5g3TDD"
, "answer_hash": "6eb892fae746c9ab35ed76045103abac5d574c249f0"
, "pow_hash": "3045022100d9bd656b5337d9b93e7e7125f33943d09849a17674cf4890"

The Advert posted answer would be posted like this:
"question_hash": "1Hsd3Ksdf7rHwKcqsdfkDvgjbg6x5g3TDD"
, "answer": "goat"

The user answer would look something like this:
"question_hash": "1Hsd3Ksdf7rHwKcqsdfkDvgjbg6x5g3TDD"
, "prev_answer_hash": "FSDkdsfkjsdfisdfFJSfdisdfjsdfljsdoijsdfijd"
, "answer": "seal"

This idea is influenced by the same concept discussed in many of Vitalik's talks regarding getting the weather in a certain city in a decentralized way. You post a question like "What is the weather in Toronto" and the median answers submitted are then chosen to be the most correct. Reward is them given to those that posted the most right answer. This proof of view scheme may have different ramifications than that talked about by Vitalik, but I thought I'd put the idea down regardless.

Some Technical Thoughts/Scheme Ramifications:
- There will be an answer and question POW hash required to mitigate spamming
- If the answer posted by the Advertiser is longer than the posted answer length by the question poster, the stake is lost and no one receives the stake
- If the answer is posted by the Advertiser before the time_to_answer, the stake is lost and no one receives the stake
- All answers submitted must provide their POW difficulty hash
- If the answer posted is not cryptographically provable to the answer hash posted previously by the ad poser, the stake is lost
- If the stake is too low, no one will attempt to answer the question (not enough incentive)
- If no answer is posted by advertiser, they loose their stake of Eth
- If the answer posted has more words than in the count posted, the stake is lost
- A dashboard interface could be designed to rate questions posted (given question ramifications), to make it easier for people who want to make Ether viewing adverts
- The dashboard could also allow users to choose advertisers that they have made money from in the past or who they trust will produce good solvable Adverts
- Advertising companies could publish their "from" addresses (to build a social following around their businesses Adverts)
- Advertisers who constantly produce bad Adverts will be ranked lower than those who post answerable Adverts with the User dashboard, and community
- The Eth cost for even posting an Ad or Ad answer will to mitigate Advert and user spamming
- All answers should be submitted within a specified protocol (e.g. all lower case, no dashes, no trailing spaces, UTF-8), any answers submitted outside the protocol are invalid
- All initial user answers would be posted as a hash in the allotted time
- All user answers would be posted after, their answer a key to their posted answer hash, related to their address

- Spamming: perhaps a malicious user party has a huge server farm, they could submit thousands of answer hashes from different addresses, thus spamming out other normal users
- Artificial Intelligence is getting really good at solving these sorts of problems, and may invalidate this whole scheme entirely (while this may not be a worry now, it will be in the future as Captcha's (or Reverse Turing Tests) are becoming less effective to discern humans from computers due to Captcha breaking software/AI/and algo's).
- The Malicious Advertiser: they answer their own adverts, upping their chances of getting some of their stake back. (POW could mitigate this)
-Guessing: Computers are getting really good at guessing answers, perhaps an algorithm could be developed to just guess the right answer to the question (Advertisers who want actual people to answer the question, should post a question that is solvable but hard to just guess out of the blue)

All Ideas are welcome, this scheme has holes and flaws, but I'd thought Id put it down in the forum anyways to further field ideas and concerns.

Cheers, hope you all liked my toy scheme/protocol idea,


  • SilentCiceroSilentCicero Toronto, CAMember Posts: 159 ✭✭✭
    Another problem is that this scheme only provides proof of some views, not a specific amount of views (as each vote does not always represent one view). This is another critical problem with the scheme. Why would an advertiser pay for individuals to view their ad if they don't know how many individuals have actually viewed the ad.

    Some metric could be drawn up to guess, based on the number of votes, how many actual individuals viewed the advert, but it would be very hard to determine a specific number.

    A solution to this would be to integrate this system with a reputation system, so that only individuals with good reputations will be entered into the lottery for a share of the stake. This way, you can determine with some certainty how many individuals actually viewed the advert.
Sign In or Register to comment.