[ANN] FLUX - FLUX Link Unit eXchange (runs on top of Kevlar's Link awesomeness)
-
All righty, then. I have been thinking for a while how to do this. It started with the pool mediated exchange idea, but my impulse for making things meta won over. With Kevlar’s Link backend it becomes possible to send and receive all sorts of content, although for obvious reasons, it’s supposed to be meta info; things like magnet links, domain names, geocaching hints, patent busting prior art references, or hell why not the dependency graph for the entire US legal decision record. Yes, I’ve been thinking about what this thing can do. It’s absolutely mind blowing.
That said, I’ve noticed that when a new technology is created, a too specific concept can over time bring back the mechanisms and structures that concept was trying to avoid. Cryptocoins get around megabanks and centralized money, but they introduce pools, exchanges, and mass hashing. On the one hand, cryptocoins get Glass-Steagall for free because retail (mining), personal (pool), and investment (exchanges) operations are separated by technology. Mining companies have to deal with hardware, exchanges deal with interfacing many different coins, and pools try to maintain vibrant communities. On the other hand, there is a point where many of the operations become entrenched, speculation breeds paralysis (like watching 10 o’clock news lottery never ending), and people who have social skills are more likely to own iPhones and Androids rather than Radeons.
An unfortunate segregation happens and everyone ends up waiting for everyone else to take things forward. Chinese finger trap. Rarely, in the case of Worldcoin, Feathercoin, and Dogecoin, some communities spring up with an openness and passion that helps create an ecosystem where ideas flourish, regardless if the market is ready yet. The community is the early market.
So I played with a few ideas, but I wanted to make it something that could be adapted to new uses. The FLUX Link Unit eXchange uses multiple Link messages to arrange a gradual exchange of content. The first example of this will be cryptocoin exchange. But this is a concept that I think is novel. You will not be exchanging with individuals. Instead you will be exchanging with the network. There I didn’t say cloud.
I’ll keep this post for updates. Technical design follows in posts below.
-
[b]THE MODULE SYSTEM
0. OPCODES[/b]
In the Link system we have opcodes. These opcodes specify a slot and a function. Each slot can be associated with up to 16 functions. These tell us what information is offered. Two are reserved and one is required. Slots assign modules to opcodes. The core, sequencing, and metadata module occupy one slot each. Link reserves 0 and F, for core info and sequencing. The metadata slot is 1. So opcodes 00 - 0F, 10 - 1F, and F0 - FF are set aside. FLUX uses 20 - 2F.[b]1. MODULES[/b]
While the opcodes for modules 0, 1, and F are more or less set in stone (with possible reinterpretations), 2 - E (20 - 2F, 30 - 3F, … E0 - EF) are fully modular. They can even mean different things. How this is done depends on the cryptocoin client somewhat, but the general idea is each module of 2 - E has a special opcode yF (2F, 3F, 4F, … EF). This tells the client what functions from its plug-ins it should use to process information. This makes makes the encoding in the blockchain very simple, while it allows the module system to support a lot of modules.[b]2. COLLECTIONS
[/b]Collections are groups of functions related to various features a module might support. A helper app or the client itself would read the yF instruction to find out what module to load in slot y. But it also needs to know which features it will need to access. So the first opcode we send might look like this before encoding: 2F FLUX Ver 0:MAIN:00. These are the module signature “FLUX Ver 0” and the collection “MAIN”. Optionally, a number from 00 - FF may be included to pass options to the module. This tells the client (or even a helper app) to load the FLUX module and to select the MAIN collection. A module can have many features. It may even respond to more than one signature. It can also span multiple slots. But the opcodes only support up to 16 functions per slot to keep blockchain data simple. So we use collections to access all the features a module offers.[b]3. ENCODING[/b]
Opcodes are encoded the usual way as in Link.Next: THE EXCHANGE SYSTEM
-
Has been set to Notify.
An extension to an all ready astounding project…
It’s going off here at Feathercoin HQ!
[i]edit[/i]
Oh yeah… +1
-
[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 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