Something needs a serious redesign.  freenet needs karma to be added
to it.  Nodes should try and collect karma to spend to get stuff
(content) out of other nodes when they really want it.  They need to
be absolute and reasonably non-forgable.  Nodes for example can tell
all their neighbors what keys they have (direct and indirectly, so
there is no revealing any data store information), calculated with a
karma bid to provide that information to others.  If others want a
key, they just see who bids the lowest for it contact them directly
and enter final negotiations for the information.  Then can then
settle on a price, move the content and then move the karma.  karma
from nodes with negative karma (nodes that have asked for more than
they have given) should wind up being worth less then karma from nodes
that have tons of it.

Also, karma could be sold and bought on a private basis.  For example,
someone has a connection at PAIX or MAE-East that they don't pay much
for might be able to offer content for $0.50/GB from a beefy server
with a 10TB datastore, but to make this worth while, they could sell
karma at whatever the going price is.  All players could bid the price
down, essentially competing with each other to provide the most to
others at the lowest impact on others.  They give content to others,
collect karma, then, turn around and sell karma to karma deficient
people to ensure that people with too much money can always get
content.  Further, if a node can get 5 karma for one 10KB chunk of
info, or 6 karma for one 10KB chuck to another node, the scheduling
algorithm would say, provide the later, collect 6.  Also, removing
data from the data store is easy, remove the data that we predict will
fetch the lowest karma points for providing the data, normalized for
size.  Thus, some sites, with large data stores can bid up providing
infrequent data, because no one else has the content anymore, thus
ensuring that important data that just isn't as popular can stick
around, and because all nodes negotiate karma for everything, we can
measure how interesting things are.  Also, by essentially flooding
{key, karma, ETA to serve, provider} information, all the DNF messages
go away as do QRs, everyone can find everything instantly, as nodes
will fall over themselves trying to collect karma (as best they can).
For example, I have 22K chunks of data in my datastore.  Assuming
20+4+4+20 bytes per key per neighbor, that's 50 MB, one time cost.  As
these costs rise, we flood this information only to nodes that
specialize in such information.  These will tend to be long lived,
high probability of having the relevant information nodes and always
willing to talk (karma).

Servers that have overloaded CPUs (like mine), could increase the
karma required for serving content based upon the amount of CPU
projected to be required for serving it so as to decrease CPU load.
Servers with tons of cheap disk, can be the low bidder for archival
things and hard to find things.  Clients won't disturb these for
highly popular content, as the karma bid would be too high, and they
would rather get it for 1 karma on the corner.  Need to inform fred
that routing out that interface (or to that address) costs money,
easy, just say 100 karma to use it, suddenly fred will grab content
off of more local servers instead of hitting the expensive pipe.  Have
really cheap BW, be the low bidder on karma for it.  Have a 20 MB
datastore, easy, grab hugely popular content and resell it for the
going price, over and over and over again.  As popularity drops off,
grab next new hot data and resell it.  Have a gige connection to 20
neighbors, tell fred IP costs to those people are 0.001 karma, but CPU
to serve it costs more depending upon how loaded the CPU is currently,
suddenly, you will observe that the nodes work together to keep all
the CPU utilization times very low, while serving on the gige link and
the person that has the TCP offload engine on their card and nice
centeral CPU manages to serve up 80% of the content that he can,
because, presto, he manages to low bid every one else, and he gains
karma for having bought the card (and the CPU)!

Want to be a sucker and just grab tons of content without serving any,
well, be alone in way negative karma territory, or pay for it.  Want to
provide a ton of content, gosh, look at how fast your web browser is
now, I have 15,000 karma to spend on this 10MB file, and low and below
100 people want to stream in at 200KB a second...  Do this everyday,
all day, eventually you run out of karma, and either, you buy a bigger
outbound pipe to buy more karma, or you buy karma on the open market
to anyone that wants to sell some.  Notice, that the person you buy
karma from doesn't need to be related to any content at all.

The open question is, is there is low overhead, non-forgable karma
system that can work?  Imagine that you settle micro karma from
trusted nodes every 2 (30 days, whatever) days using real karma, using
karma banks, which charge karma for settlements.  If 1000 nodes have a
100% perfect history over the course of 5 years dealing with a fully
anonymous karma bank that they've double checked every single
transaction that they've ever had with the bank and an independent
karma oversight authority also says the books look good, then that
bank gains trust.  If the bank screws one user, then the other party
involved will also know, and they report to the bank, to the oversight
auditor, and to all that will listen.  If the bank goes off the deep
end (and pulls an Enron) and screws 100s of people the complaints
flood in, the auditor insists on dual clearing all the banks data with
another bank, and can shut down the trust circle and revert all bad
karma from the auditing.  This way, zero harm can be engineered into
the system, and with that, there is little drive to try and game the
system.  And with that, micro karma works, because it has proven trust
worthy.  And micro karma can be as cheap as telling the person what
things currently cost on session startup, and transferring two 32 bit
values on connection tear down (one int in each direction with is
directly how much karma they are giving to the other side).
Connections that die can be restablished on node bring up and karma
settled.  People that deal in bad faith are reported.  Enough of
these, and your karma insurer starts charging you more to vouch for
you, until, they give up and no one will talk with you at all.
Settlements can happen in CPU intensive, you have to defeat RSA or
something else hard, both parties agreed to the transation (using RSA)
every once in a while.

Now, even though flooding information out like this seems to be a
violation of a principal (being anonymous), I think it would work, as
all nodes will be able to get all content, and will advertise they can
serve all content, because they can transfer all content.  Who wins,
the lowest bidder.  How many such bids do we really need?  5-10 from
the low bidders is fine.  Hard to find large content, ask a node that
specializes in content, and find 100 willing to stream it in now, in
unison, for peak rates that match your needs, in the order you need
it, when you need it.  Willing to suck on an all day sucker at 2KB a
second for a cheaper karma price, fine, buy it that way.

Invent a patch that will get you more efficient output to another node
with karma, presto, instant karma for you.  Why spend 10KB a second to
collect 10000 karma a day, when you can spend it (the 10KB/s) and get
20000/day.  Want to know how efficient a new patch is, release it in
the wild, everybody tracks karma, and can report back how much karma
they can earn with the patch...  Release a bad patch, and instead of a
vage, seems slower, doesn't work for me, can't insert type messages,
you get, we are loosing 34587335 karma every hour.  If you convert to
$, you can feel how important a bug is to fix, or how much of an
improvement a patch really is.

If starting up a connection takes time, and time is karma, 4s might be
2 karma.  Connect to me, instant 2 karma charge.  Don't pay, I tell
others you do this, do it to enough people, no one will play with you
because violate the karma rules, do that, and presto, no one will
speak to you.  Suddenly, 16000 connections an hour, will either get
you tons of karma, if people really want to do that and not have any
real data transfers, or, suddenly, fred notices it can buy the
information faster using rev 2 of the protocol with different
encryption protocol, or it can be cheap and get a bid from a direct
neighbor that has it, or is willing to get it for the right price.
Either way, fred can choose to give the most he can, using the
resources available to him, to collect the most karma he can, so that
when something important comes up, you can get all the information you
want, fast and that my friend, I think would improve the end users
experience much more than a pretty GUI configuration wizard.

Imagine, get the the 100KB in 0.5 s, karma bid 1000, in 0.6s 990, 0.9s
700, 2.0s 400, 5.0s, <10000s karma bid 5.  Suddenly, you find that
your large web page loads in 0.5s, never under, never more.  Want it
faster, karma bid 9000 baby. 0.08s, just hope you can suck that fast.
_______________________________________________
Devl mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to