[ANN] FLUX - FLUX Link Unit eXchange (runs on top of Kevlar's Link awesomeness)
-
[quote name=“zerodrama” post=“46325” timestamp=“1387493769”]
[b]4. VIRTUAL ADDRESSES[/b]
We already use addresses in a creative way to store information in them. Normal exchanges involve two addresses: incoming address for currency A and outgoing address for currency B. The problem is people run off with coins without sending, don’t have the coins people want, aren’t online when the coins are sent, or aren’t ready to send coins. Instead we use virtual addresses.There is a key issue: how do we know someone will send us coins and how do they know we’ll send coins? The first thing we can do is guarantee that some small amount gets sent. Cryptocoin mining is essentially a zero-trust race between potential thieves. It’s simply more profitable to make an honest trade. Security breaches notwithstanding, it’s harder to cheat than it is to deal fairly. Nakamoto: real men of genius. So virtual addresses are a way to communicate small trades across cryptocoin networks.
A virtual address contains a balance of outgoing currency. The outgoing currency trade difficulty, the outgoing currency mining difficulty, the trickle rate, and amount remaining are encoded in the address. Now it might seem that we need to specify the incoming currency base. But that would be the case if we were transfering large amounts at a time. Here, we’re offering the exchange to the network. Once a trickle trade occurs the address is no longer valid. This effectively severs the trade from the trader.
[b]5. TRICKLE RATE[/b]
Since the network is doing the actual trading, we’ll want to make the exchange happen in small amounts. The trickle rate is the amount of outgoing coin we are willing to exchange through each trickle trade. Small trickle rates are good for high demand currencies because it ensures only a small amount is exchanged at a time. Large trickle rates are good for conducting exchanges in a few steps.[b]6. OUTGOING CURRENCY TRADE DIFFICULTY[/b]
Rather than try to reference exchange rates and get stuck in a dead end quest for matching to fiat rates, we use the trade difficulty to express the relative value of the coins. We reward exchange mining based on the trade difficulty and the trickle rate.[b]7. OUTGOING CURRENCY MINING DIFFICULTY[/b]
This is used to let the exchange miners know how difficult it normally is to acquire the coins. It doesn’t affect the exchange but it allows the miners to make an educated guess about how long the currency has been around and how much hashing power is backing the currency.Next: EXCHANGE MINING
[/quote]So it looks like you’re creating a blockchain in the blockchain, and although the blockchain doesn’t need to be contiguous, it’s still ordered and verified by the existing contiguous blockchain that it’s embedded into, giving rise to all the same properties. In this way people are basically creating mini-blockchains whenever they want to do a transaction, which then die off once the transaction is complete.
Very cool idea. Great use of the Link protocol! I’m looking forward to the rest of the explanation. :)
-
[quote name=“Kevlar” post=“46372” timestamp=“1387515026”]
[quote author=zerodrama link=topic=6185.msg46325#msg46325 date=1387493769]
[b]4. VIRTUAL ADDRESSES[/b]
We already use addresses in a creative way to store information in them. Normal exchanges involve two addresses: incoming address for currency A and outgoing address for currency B. The problem is people run off with coins without sending, don’t have the coins people want, aren’t online when the coins are sent, or aren’t ready to send coins. Instead we use virtual addresses.There is a key issue: how do we know someone will send us coins and how do they know we’ll send coins? The first thing we can do is guarantee that some small amount gets sent. Cryptocoin mining is essentially a zero-trust race between potential thieves. It’s simply more profitable to make an honest trade. Security breaches notwithstanding, it’s harder to cheat than it is to deal fairly. Nakamoto: real men of genius. So virtual addresses are a way to communicate small trades across cryptocoin networks.
A virtual address contains a balance of outgoing currency. The outgoing currency trade difficulty, the outgoing currency mining difficulty, the trickle rate, and amount remaining are encoded in the address. Now it might seem that we need to specify the incoming currency base. But that would be the case if we were transfering large amounts at a time. Here, we’re offering the exchange to the network. Once a trickle trade occurs the address is no longer valid. This effectively severs the trade from the trader.
[b]5. TRICKLE RATE[/b]
Since the network is doing the actual trading, we’ll want to make the exchange happen in small amounts. The trickle rate is the amount of outgoing coin we are willing to exchange through each trickle trade. Small trickle rates are good for high demand currencies because it ensures only a small amount is exchanged at a time. Large trickle rates are good for conducting exchanges in a few steps.[b]6. OUTGOING CURRENCY TRADE DIFFICULTY[/b]
Rather than try to reference exchange rates and get stuck in a dead end quest for matching to fiat rates, we use the trade difficulty to express the relative value of the coins. We reward exchange mining based on the trade difficulty and the trickle rate.[b]7. OUTGOING CURRENCY MINING DIFFICULTY[/b]
This is used to let the exchange miners know how difficult it normally is to acquire the coins. It doesn’t affect the exchange but it allows the miners to make an educated guess about how long the currency has been around and how much hashing power is backing the currency.Next: EXCHANGE MINING
[/quote]So it looks like you’re creating a blockchain in the blockchain, and although the blockchain doesn’t need to be contiguous, it’s still ordered and verified by the existing contiguous blockchain that it’s embedded into, giving rise to all the same properties. In this way people are basically creating mini-blockchains whenever they want to do a transaction, which then die off once the transaction is complete.
Very cool idea. Great use of the Link protocol! I’m looking forward to the rest of the explanation. :)
[/quote]Something to that effect. If this works, then we go meta with onchain book clubs, celebrity pet sitting exchanges, car pooling. Yeah, yeah, I hear ya. I’ll get back in the kitchen and finish this.
-
+1 zerodrama
-
[quote name=“Calem” post=“46811” timestamp=“1387697245”]
+1 zerodrama
[/quote]Still working on the secret santa part of the exchange mechanism.
-
I am not sure if this is the right place for this, but it will do.
If you could encode a litecoin/bitcoin private key in LINK, couldn’t that be a start to a decentralized crypto only exchange? But I don’t know how you could make a system like that which required zero trust… Any ideas? -
[quote name=“Vidicus” post=“47402” timestamp=“1387923397”]
I am not sure if this is the right place for this, but it will do.
If you could encode a litecoin/bitcoin private key in LINK, couldn’t that be a start to a decentralized crypto only exchange? But I don’t know how you could make a system like that which required zero trust… Any ideas?
[/quote]Yes!!! It absolutely is possible. I know ZD is thinking about the solution, and I’m anxiously awaiting his version of the secret sauce, and I’ve also been thinking about this problem, although I’m not ready to announce a solution yet. One project at a time! Link File sharing first, then Twitter tips… then maybe this?
-
[quote name=“Kevlar” post=“47403” timestamp=“1387923611”]
[quote author=Vidicus link=topic=6185.msg47402#msg47402 date=1387923397]
I am not sure if this is the right place for this, but it will do.
If you could encode a litecoin/bitcoin private key in LINK, couldn’t that be a start to a decentralized crypto only exchange? But I don’t know how you could make a system like that which required zero trust… Any ideas?
[/quote]Yes!!! It absolutely is possible. I know ZD is thinking about the solution, and I’m anxiously awaiting his version of the secret sauce, and I’ve also been thinking about this problem, although I’m not ready to announce a solution yet. One project at a time! Link File sharing first, then Twitter tips… then maybe this?
[/quote]Here’s where I’m getting stuck:
On the one hand Bitcoin is based on making a claim that you sent coins. Then the network verifies that 1 you sent coins, 2 you didn’t send them from an address with with less than the correct coins. Typically the client software will prevent you from sending coins you don’t have, but as I understand it even if the client didn’t prevent it, the network wouldn’t include it in a block. Even if rogue pools chose to allow this, they would have to control more than 50% of the network for the time it would take to encode the false blocks. A successful 51% attack also requires a period of time to control that network. Not as easy as it seems.One way of exchanging would be to pass the private key around and then have the receiver use the key. Now there’s a plethora (WARNING MAY BECOME ALTCOIN NAME LOL) of exchange schemes, and I’m trending toward a Merkle + Diffie-Hellman solution.
HOW TO CONFIRM:
A. that the exchange completed
B. without leaking identity so that people can make that choice themselvesBut my idea is to get rid of the endpoint altogether. You are not exchanging with another individual but rather the network, so there’s no one on the other end to steal from you (other than rogue miners of fluxtokens). I have been trying to avoid changing the main coin protocol, but that might not be possible or efficient.
I’m starting to get ideas again. Back in a couple hours.
-
[quote name=“zerodrama” post=“47407” timestamp=“1387926984”]
Here’s where I’m getting stuck:
On the one hand Bitcoin is based on making a claim that you sent coins. Then the network verifies that 1 you sent coins, 2 you didn’t send them from an address with with less than the correct coins. Typically the client software will prevent you from sending coins you don’t have, but as I understand it even if the client didn’t prevent it, the network wouldn’t include it in a block. Even if rogue pools chose to allow this, they would have to control more than 50% of the network for the time it would take to encode the false blocks. A successful 51% attack also requires a period of time to control that network. Not as easy as it seems.
[/quote]If this happened, it wouldn’t be Bitcoin any more. The block won’t confirm, because you didn’t generate the script to spend the output. So while a pool could go rogue and try this, no QT client in existence will accept the block without the proper sigs. You can broadcast these blocks with invalid transactions all you want, they’ll never be used. If you have 51% doing this, you’ve got a fork, not an attack. No danger here.
[quote]
One way of exchanging would be to pass the private key around and then have the receiver use the key. Now there’s a plethora (WARNING MAY BECOME ALTCOIN NAME LOL) of exchange schemes, and I’m trending toward a Merkle + Diffie-Hellman solution.
[/quote]A Diffie-Hellman-Merkel key exchange would only allow for users to exchange shared secrets if it was beneficial for both parties to do so. There’s no way to enforce trust of any kind in this transaction. I’ll wait for you to send me yours, and then not send you mine.
But I think you made a very invalid assumption with your model. Key exchange is the most obvious ways of doing this, but is it the most clever? I’d argue that the solution lies not in the mutual exchange of information, but in the protocol the clients enforce. If I can ensure miners will protect my coins from being spent under the wrong circumstances, I can in theory give away the private key and still have security through the protocol. All that’s needed is a new protocol, which is the opportunity Link offers.
You need to realize there is no spoon.
-
[quote name=“Kevlar” post=“47418” timestamp=“1387930650”]
You need to realize there is no spoon.
[/quote][img width=300]http://24.media.tumblr.com/519f2c76c3cdaaa4f2b7475d7dcab246/tumblr_myc6wq0FOd1rtef2wo1_500.gif[/img]
-
[quote name=“Kevlar” post=“47418” timestamp=“1387930650”]
You need to realize there is no spoon.
[/quote]I know, I know, I know. My instincts are being stubborn. I am trying to let go of the spoon. We want the moon not the spoon. OK. So for FLUX we’ll add some protocol sauce and the other coins can catch up, or not.
That was the big stumbling block. I kept trying to avoid introducing new protocol. But whatever, let’s kick ass.
I still think exchanging with the network is ideal. It makes coinvalidation look 100 years old, for one. It allows the network to organically develop exchange rates rather than being trolled by wall traders. And if we add a time parameter to the exchange then it’s not this panic market where everyone waits for the market to react. Global commodity values are bullshit. They might be valid within a certain location, but otherwise they’re just ADHD prices that have no meaning in the real world.
And lastly, this is not limited to coins. Anything that gets exchanged over Link and can be divided into portions is valid in FLUX. Think not only cryptoexchange, but options trading, subscriptions, automated donations, etc. If done right, something like FLUX might become the base protocol and cryptocoin on top. But that’s for 2015 lol. Then again, transporter beams. Cryptocoins + FLUX will give us Star Trek. All those atoms have to be accounted for.
Incidentally, while we wait for other coins to catch up, this effectively moves the market to the blockchain, which is again: MIND BLOWING.
Coming up in next post: VIRTUAL EXCHANGE
-
[quote name=“zerodrama” post=“47422” timestamp=“1387933075”]
It allows the network to organically develop exchange rates rather than being trolled by wall traders. And if we add a time parameter to the exchange then it’s not this panic market where everyone waits for the market to react.
[/quote]Go onnnn.
-
[quote name=“Tuck Fheman” post=“47427” timestamp=“1387937155”]
[quote author=zerodrama link=topic=6185.msg47422#msg47422 date=1387933075]
It allows the network to organically develop exchange rates rather than being trolled by wall traders. And if we add a time parameter to the exchange then it’s not this panic market where everyone waits for the market to react.
[/quote]Go onnnn.
[/quote]This will seem overdone, but it’s enough to cause headaches for rogues and eavesdroppers and it encourages lots of miners to negotiate with each other which will be enough support for even more wild exchange ideas.
[b]8. TRADE SETUP[/b]
Coin trader A moves complete amount they want to exchange to their outgoing address.
RULES:- They are still in possession of it.
Trader A locks their outgoing address.
RULES:- No exchanges may occur from addresses which have no locked address in their trade history.
- No locked address may be unlocked until the correct number of spends occurs on the virtual trickle address.
- No exchanges may occur which are not matched.
- During lock coins may only be sent to virtual trickle address.
Trader B does the same as above and Trader A as below
[b]9. TRADE CONTRACT[/b]
Trader B specifies a lock threshold.
RULES:- Trader A may unlock their address after the number of trades X trade difficulty is greater than the threshold
- Trader A may unlock their address after the confirmations for the last spend is more than the threshold.
Trader A moves portion from outgoing address to virtual trickle address.
RULES:- The virtual trickle address is only valid when:
- a. The amount remaining in the locked address is equal to the amount encoded in the virtual address.
- b. The relative diff rate (trade diff divided by the mining diff) is greater than the threshold times the trickle rate.
[b]10. PRIVATE KEY EXCHANGE[/b]
Keys and pads are exchanged randomly like this:
RULES:- Trader or Miner P sends pad A XOR pad B XOR pad C to Miner Q = A x B x C
- Trader or Miner P sends private key XOR pad A XOR pad B to Miner R = priv x A x B
- Trader or Miner P sends public key XOR pad B XOR pad C to Miner S = pub x B x C
- Trader or Miner P sends public key XOR private key XOR pad A to Miner T = pub x priv x A
Miners exchange secret combinations until they find both public and private keys with full trickle addresses.
RULES:-
Even if private key is found consider it failure if address is empty
-
Q x R = priv x C
-
Q x S = pub x A
-
Q x T = pub x priv x B x C
-
R x S = pub x priv x A x C
-
R x T = pub x B
-
S x T = priv x A x B x C
-
Q x R x S = pub x priv x B
-
Q x R x T = pub x A x C
-
Q x S x T = priv
-
R x S x T = C
-
Q x R x S x T = A x B
[b]11. MINER MATCHING[/b]
Miners search for trades to match.
RULES:- The thresholds are close to each other
- The trade diff divided by mining diff * trickle rate are close to each other
- They line up in round robin fashion by closest match.
- The number of miners is at least relative diff rate A / relative diff rate B and num of matches is at least square of num of miners
Miners exchange private keys with each other.
RULES:- Trades only occur in pairs:
- a. Two miners have exchanged FLUX tokens weights representing the relative worth of the currencies
- b. Coins have been sent to virtual trickle addresses.
- c. The weights closely match the relative diff * trickle rate.
- d. Trades involve not a lot more more nor less than the trickle rate.
Next: EXCHANGE CIRCUIT REWARDS (gotta reward the exchange miners)
-
Zero - can you explain this in layman’s terms?
Let’s say I have 500 LTC I want to trade for FTC. How do I do it? How do I set up a “sell” order? How is it verified? Is this even within these normal bounds of exchanges? Also - let me know if you need help with anything [logo + graphical].
Finally - Merry Christmas!
-
[quote name=“mnstrcck” post=“47563” timestamp=“1388009702”]
Zero - can you explain this in layman’s terms?Let’s say I have 500 LTC I want to trade for FTC. How do I do it? How do I set up a “sell” order? How is it verified? Is this even within these normal bounds of exchanges? Also - let me know if you need help with anything [logo + graphical].
Finally - Merry Christmas!
[/quote]I’ve got another section to go but yeah I can give you a description:
You have 1000 LTC.
You move 500 LTC to an outgoing address.
You announce a virtual address which like Link contains data about the transfer.
You send a portion of the 500 to the virtual address.
A few miners notice the announcement.
They try to find matches for your details based on what the other coin is worth.
The miners send each other FLUX tokens in that have similar worth (relatively).
They then start trading with other miners for tiny amounts of LTC and FTC until they accumulate the amount you expected.
As they move coins out of the virtual address, they send coins to your incoming address.The main idea is you are trading with the network rather than individuals.
But again this isn’t limited to coins. The amount of coin that is encoded in the address can instead be a file size. And you would purchase a file and the network would send it to you in pieces. Link + FLUX can be used for subscriptions, micropayments, and a whole lot of other things.
-
Shorter version:
You send coins.
The miners do a trial run using fluxtokens.
Then they do it for reals.
Only transactions already simulated are valid. -
[quote name=“zerodrama” post=“47572” timestamp=“1388014114”]
Shorter version:
You send coins.
The miners do a trial run using fluxtokens.
Then they do it for reals.
Only transactions already simulated are valid.
[/quote]+1 zerodrama
-
[quote name=“zerodrama” post=“47572” timestamp=“1388014114”]
Shorter version:
You send coins.
The miners do a trial run using fluxtokens.
Then they do it for reals.
Only transactions already simulated are valid.
[/quote]Thanks for this and the above longer explanation.
Two more questions:
1. Will I be able to set the price I want to buy/sell at? I guess it would be part of it - and miners match up buyers and sellers based on their price etc.
2. How is security handled [how are miners prevented from exploiting the system]? -
[quote name=“mnstrcck” post=“47733” timestamp=“1388101712”]
[quote author=zerodrama link=topic=6185.msg47572#msg47572 date=1388014114]
Shorter version:
You send coins.
The miners do a trial run using fluxtokens.
Then they do it for reals.
Only transactions already simulated are valid.
[/quote]Thanks for this and the above longer explanation.
Two more questions:
1. Will I be able to set the price I want to buy/sell at? I guess it would be part of it - and miners match up buyers and sellers based on their price etc.
2. How is security handled [how are miners prevented from exploiting the system]?
[/quote]You are not dealing with individuals, so prices don’t make sense. Instead you would set a kind of trading difficulty and you would get offers based on that. The real world is too slow and too panicky about prices. Global prices are bullshit. We’re not even going to interface with that. Instead your relative difficulty will say how much work you expect the exchange miners to do and prices will evolve around that eventually 'til they resemble traditional exchange prices.
Security comes from the same place as with the blockchain. The clients won’t accept trades that are not conforming to protocol. Also since miners are trading failed hash rewards, there is no incentive to sell the tokens.
All token transactions are exchanges, they always happen in pairs. I’ve thought about a way to upgrade those failed tokens to real coins, but it might not be wise to do that.
Incidentally, since we are talking about relative difficulties (the equivalent of exchange rates), this allows CPU miners to participate. The CPU coins out there are spending a lot of effort trying to restrict performance. I get the motivation, but with that much effort on one feature they won’t evolve fast enough to keep up with features people want.
A failed 4 token hash compared with a 1 token hash is 4:1. this is the same as an 8 token hash compared with a 2 token hash since the exchange is still 4:1.
-
So in layman’s, are we talking about trading with the network as opposed to users?
Instead of buying and selling crypto’s through exchanges or directly with other users, this will trade directly with the blockchain it self?
-
[quote name=“Calem” post=“47786” timestamp=“1388131150”]
So in layman’s, are we talking about trading with the network as opposed to users?Instead of buying and selling crypto’s through exchanges or directly with other users, this will trade directly with the blockchain it self?
[/quote]The network exchange miners will trade crumbs of the amounts you are putting on the market, so yes your BTC for FTC may come from many actual users.
This last bit of the concept is going to be vague and somewhat confusing, but in my head at least it’s done.
Actual protocol development is next.