The Rational Street Performer Protocol


(revised 25/11/02)


The Street Performer Protocol was proposed by Kelsey and Schneier as a way of generating private funding for public works. It is particularly relevant to the production of information goods.

One objection that can be made about the Street Performer Protocol is that contributors do not seem to gain a reward (in terms of production of the public work) in proportion to their contribution. This means that it makes sense to freeload, and just wait for other people to put up the money.

In this web-page I propose a variation on the Street Performer Protocol in which it is rational to contribute money towards the production of the public work, based on a system of conditional pledges. I call this the Rational Street Performer Protocol. This protocol evolved out of discussions in the Melbourne University Information Economics group.

It is useful to think of these kinds of protocols in terms of providing a service for money, rather than creating a public work with a certain value. It is hard to pin down the value of a good with zero production cost.

The protocol is designed as round that is repeated many times. After several rounds it gains the property that it makes rational sense to contribute, although even from the first round contibutors are guaranteed to get their money's worth. This means that it is more suitable for repeated works. Some things it would be useful for are:

  • Web comics
  • A musician producing songs
  • Software maintenance and documentation
  • A serialized book, or an author producing a series of books

    The Protocol

    The protocol consists of an on-going series of rounds. In each round, each person is aware of the outcomes of all the previous rounds.

    The people involved are the artist (or service provider) and contributors who contribute money towards the work.

    Each round proceeds as follows:

    1. The artist proposes:

  • a service they are offering
  • the amount of time they are willing to wait for promises of money

    2. The contributors give the artist pledges of money they are willing to pay for the service. These take the form

    I will dontate one dollar in every $____ raised over $____
    up to a maximum contribution of $____

    In other words, each person's pledge is a function of the total amount raised.

    Stage 2 continues until the time specified by the artist elapses. Then either

    3. The maximum amount that could be collected while abiding by each contributor's requirements is calculated. Money is collected from the contributors.

    Alternatively, money could be collected in stage 2 by a trusted third party, then forwarded to the artist or returned to the contributors as necessary after stage 3.

    4. The artist performs the service.

    Calculation of the result

    In stage 3 we want to find the largest possible total consistent with all pledges. This is non-trivial, as pledges are a function of the total raised, and the total raised is a function of the pledges.

    Suppose we assume a certain total s would be raised, then add up the total t that people would actually be willing to give given s. Then s is consistent if it is less than t.

    So one way to find the best possible total would be just to a examine a set of possible totals, then pick that largest that is consistent with the pledges. However, this might take a while if we want to be sure we chose the maximum possible.

    We can also test if there might be a consistent solution within some range [a,b]. If the total that would be raised if we assume b exceeds the value of a, then there is a possible solution in that range.

    So we can test a range, and if there is a possible solution in that range, split it in two and test each half, and so on. This can be used to find the largest possible total with some efficiency.


    Contributors might have more complex requirements. The round will have a solution so long as each pledge is a continuous function of the total amount collected.

    The artist may specify a minimum amount to be collected. If this amount is not reached, the round fails.

    The artist may specify a maximum amount to be collected. If this amount is exceeded, contributors pay proporionately to what they would have been willing to pay.

    Why it works

    To see why RSPP would work, let us look at the motivation of the contributors.

    The contributors, being rational people, want maximise their utility. Therefore, they want as much money as possible to go to the public work, but to pay as little as possible themselves.

    First, let us examine the motivation of someone who freeloaded in previous rounds. Assume there have been several rounds already, and bidding has stabalized. Then this new contributor can judge the effect of their pledge, based on the previous round. They can see that if they pledge such-and-such an amount, it will raise the total by a certain larger amount.

    So if they gain more utility from contributing than spending their money elswhere, they will contribute. There is still a chance that other contributors will revise their bids in this round, but they can ensure they don't actually lose out from contributing by setting conditions on their contribution. For example, they could require that each dollar they contribute is matched by some amount from other contributors, in excess of the amount raised in the previous round.

    We can apply similar logic to someone who contributed in previous rounds, and is revising their bid. Let us suppose they were happy with the outcome of the previous round (having put conditions on their pledge in the previous round to ensure this). So if the total raised was the same as the previous round, they will make the same contribution. They may also want to make a larger donation this time if it causes sufficiently more to be raised in total, or reduce their donation if doing so only reduces the total raised by a small amount. These kinds of decisions can be made part of their pledge for the current round.

    This logic applies once the pledges in each round have stabalised. In initial rounds, there is more risk for contributors, but they can at least make conditional pledges that ensure that they don't lose utility from donating.

    A more mathematical treatment of these decisions is given in Appendix A.


    The Rational Street Performer Protocol provides a way for rational people to cooperate to produce public works. No altruism is required, as people will simply gain more utility from contributing than freeloading. Furthermore, the dynamics of the system provides a way of working out the value of public goods.

    Appendix A - pledging while avoiding risk

    Suppose a person is considering what proportion of their resources to allocate to a public work. For example, say they have $100 that they could spend on CDs, or on funding a band to release music.

    Call the proportion of resources allocated to the public work x. Call the resulting funding for the public work R(x) (R for "Response Curve"). Let f be a function for the utility they gain from the public work and g be a function for applying their resources elsewhere.

    Then their utility for a given allocation of resources to the public work is

    U(x) = f(R(x)) + g(1-x)

    Assume R, f and g are monotonically increasing functions.

    We can specify the condition for a donation not detracting from the person's overall utility. This is an upper bound on their donation, one would expect their actual donation to be slightly less in order to profit from the donation.

       U(x) >= U(0)
    -> f(R(x)) + g(1-x) >= f(R(0)) + g(1)
    -> f(R(x)) >= f(R(0)) + g(1) - g(1-x)

    By the monotonicity of f

    -> R(x) >= f  ( f(R(0)) + g(1) - g(1-x) )

    And then by the monotonicity of R

             -1   -1
    -> x >= R  ( f  ( f(R(0)) + g(1) - g(1-x) ) )
    Let y = f  ( f(R(0)) + g(1) - g(1-x) )
    -> f(y) = f(R(0)) + g(1) - g(1-x)
    -> g(1-x) = f(R(0)) + g(1) - f(y)
    -> 1-x = g  ( f(R(0)) + g(1) - f(y) )
    -> x = 1 - g  ( f(R(0)) + g(1) - f(y) )

    By substitution

        -1            -1
    -> R  (y) <= 1 - g  ( f(R(0)) + g(1) - f(y) )

    So the person's donation should not exceed R-1(y) above if the total raised is R. Also, the donation must be between 0 and 1. This gives a pledge function that will ensure the person does not lose out by donating.

    If we use linear functions for the utility gained from allocating resources to the public work and elsewhere

      f(x) = ax
      g(x) = bx

    then this simplfies to

        -1       a
       R  (y) <= - ( y - R(0) )

    giving a curve of the same form as an RSPP pledge (assuming the donation must be between 0 and 1).

    The above requires that the person know R(0), the amount that would be raised if they did not donate. If it is a repeated round, they might assume R(0) to be the amount that would have been raised last time if they didn't contribute. If it is the first round, they can ensure that they do no worse than if the public work didn't exist at all by assuming R(0) = 0.

  • [æ]