[ANN] FLUX - FLUX Link Unit eXchange (runs on top of Kevlar's Link awesomeness)
-
[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.
-
Sketch of the final quarter.
[b]12. EXCHANGE REWARDS[/b]
Miners are rewarded for unique matches made.
RULES- Matches must be within a given window close to the exchange rate.
- Matches must be at least a certain amount different from other matches.
- Each unique match receives a signature.
- Reward is divided among miners.
[b]13. EXCHANGE CIRCUITS[/b]
Miners negotiate exchange of coins through stages.
RULES- A circuit is formed when multiple miners are locked into the same trades over a long period.
- When mining failed hashes the trading difficulty is averaged over the group.
- Miners broadcast hashrate and expected income with proof.
- Miners can accept or reject miner connections based on various details.
[b]14. PILOT TRADES[/b]
Miners trade FLUX tokens by relative difficulty.
RULES- Only the relative difficulty matters so CPUs can do it.
- Trades can go through miners more than once but not sequentially.
- Trades are proportional so it’s easy for amounts increase exponentially.
- Once trades reach near coin traders the pathways are set.
[b]15. FLUX TOKEN GENERATION[/b]
Tokens are generated for failed hashes which are equivalent to the difficulty.
RULES- Low difficulty unrotated hashes reward anchor tokens of the low difficulty.
- Hashes which are rotated X bits and are higher difficulty by 2X get rotated left by X/2 and lose half difficulty.
- Rotated hashes which become equivalent to winning unrotated hashes but are longer by 4X of the rotation become real coins.
- Low difficulty hashes which together are 2X longer than the average deficit from the minimum difficulty become 1 hash if there is an anchor hash.
-
[quote name=“zerodrama” post=“47477” timestamp=“1387966453”]
[quote author=Tuck Fheman link=topic=6185.msg47427#msg47427 date=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)
[/quote]I’m having a lot of trouble understanding this part.
I really feel like we need a very simple example. In the Link spec, I provided a breakdown of an actual link encoding, and broke it out by op code and function, denoting the purpose byte by byte. Can you put together an example Flux transaction, and break it down byte by byte as it would actually look in the blockchain?
-
@Kevlar: [url=http://forum.feathercoin.com/index.php/topic,6407.0.html]http://forum.feathercoin.com/index.php/topic,6407.0.html[/url] - Multistage barter example