Author

Topic: MasterCoin: New Protocol Layer Starting From “The Exodus Address” - page 137. (Read 448462 times)

legendary
Activity: 1212
Merit: 1037
Just sent 2.6 BTC  Grin

688fe5ac60ed41d4f3bb9bb231b0552d3ba06f03114f0600b8eb84d8c108ce85
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
I'm getting somewhere with the ruby implementation (on testnet):

Building a data transaction.
Code:
1.9.3p286 :077> options = {receiving_address: "n3wLS8G69kD96Czw3xbUg17ipsb2W1NGvB", amount: 100000000, transaction_type: 1, currency_id: 2}
1.9.3p286 :078> Mastercoin::Address.new(options).encode_to_address
 => "mppHDcxP8tmLU44CN5jkVtTgutf34cSEFE"

Parsing a bitcoin transction via Mastercoin.
Code:
1.9.3p286 :079>Bitcoin.network = :testnet3
1.9.3p286 :080>Mastercoin::Transaction.new("e4ed08ec03ff42e40b9be85cea97b24232e471d1efec23022403a1fd8ed55516").to_s
=> "Simple send:: Send 1 'Test Mastercoin' to n3wLS8G69kD96Czw3xbUg17ipsb2W1NGvB"

However I'm having trouble generating the same sequence as the python script.

I was wondering if you could explain what base58_found.b58decode returns exactly; my terminal doesn't really know what it is suppose to be: http://cl.ly/image/0p343M1G3d0I.
My ruby version returns a pretty string (like 6ff5ef3b2e5adb597313a91ea898ae1314032bbbe4df3360d0) so I am not creating the same sequences as you are; which is pretty important ^^

Dang. I've been so busy managing the PR of this thing that you guys are in danger of getting ahead of my reference implementation!

base58_found is a base58 library I found online and blatantly stole for encoding and decoding bitcoin addresses. (I believe I included a comment in the source code with a link to where I found it).

I believe b58decode returns a byte array, so your console is probably trying to interpret each byte as a character.
hero member
Activity: 938
Merit: 1000
I'm getting somewhere with the ruby implementation (on testnet):

Building a data transaction.
Code:
1.9.3p286 :077> options = {receiving_address: "n3wLS8G69kD96Czw3xbUg17ipsb2W1NGvB", amount: 100000000, transaction_type: 1, currency_id: 2}
1.9.3p286 :078> Mastercoin::Address.new(options).encode_to_address
 => "mppHDcxP8tmLU44CN5jkVtTgutf34cSEFE"

Parsing a bitcoin transction via Mastercoin.
Code:
1.9.3p286 :079>Bitcoin.network = :testnet3
1.9.3p286 :080>Mastercoin::Transaction.new("e4ed08ec03ff42e40b9be85cea97b24232e471d1efec23022403a1fd8ed55516").to_s
=> "Simple send:: Send 1 'Test Mastercoin' to n3wLS8G69kD96Czw3xbUg17ipsb2W1NGvB"

However I'm having trouble generating the same sequence as the python script.

I was wondering if you could explain what base58_found.b58decode returns exactly; my terminal doesn't really know what it is suppose to be: http://cl.ly/image/0p343M1G3d0I.
My ruby version returns a pretty string (like 6ff5ef3b2e5adb597313a91ea898ae1314032bbbe4df3360d0) so I am not creating the same sequences as you are; which is pretty important ^^
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Hi dacoinminister! I read the paper and essentially read the whole thread here. Surprisingly, I didn't find the answers to the following questions:

1.) If a user registers a new currency, let's call it new_coin, is there an upper limit of new_coins that can be supplied?

2.) Who owns them initially? Is it the user who registered the currency or is it the escrow fund? Or is it the escrow fund generating them, as soon as there is demand?

3.) What real-life 'objects' can be made a new currency out of? 1oz of gold is obvious. But, can I make a currency out of a company share (company XYZ), called XYZ_coin, or can I make a currency being worth one gnome in my own garden, called MyGnome_coin? What are the rules?  Huh

4.) How does the escow fund determine the price of a Mastercoin? It must do that, in order to e.g. know the equilibrium value of a Gold_coin, etc to which it tries to couple. Obviously, it cannot look at the orderbook of a user currency, since this would be redundant. So, is the Mastercoin value determined by the Bitcoin/Mastercoin ratio?


1) Great question. Currency amounts are stored in a 64-bit unsigned integer divided by 100,000,000 for the 8-digit decimal precision which would give us a maximum of 184 billion units or so in a user currency, with each unit divisible to eight decimal places.

2) If a new currency is created, none of them exist until people buy them. MasterCoins used to purchase these currencies automatically go straight into the escrow fund where they will later be used to support the pegged value.

3) You can make a pegged currency for anything that has a value published as a data stream (for instance, the price of an ounce of gold). Shares of a company would be something different, called smart property. I plan to add smart property transactions to the next revision of the spec.

4) Since we are running a distributed exchange between bitcoins and MasterCoins, and between MasterCoins and the stabilized currencies, we have all the data we need to determine what the current price is of any asset. Data streams publish their prices in units of the currency held in escrow. Typically this will be MasterCoins, although it would be possible to hold a user currency in escrow too, so that USDCoins could be backed by GoldCoins held in escrow, for instance.



In fact, I thought that there was only one escrow fund in the whole protocol, while reading the paper and the whole thread. You should definitely make this clearer in the paper!

Moreover, can you explain 'One escrow fund for each stabilized currency'? What is a stabilized currency? Isn't there an escrow fund from the beginning on? In this case, where does the supply of coins come from?

See #2 above.

Thanks!
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Trying to wrap my head around everything so please bear with me.
  • I buy a few MasterCoins by sending a payment from 'mmFjJ4P1bC43yd7v7FNMHPtezn6re2HCrA' to the exodus address.
  • I want to send one of my MasterCoins to a friend so I fund mmFjJ4P1bC43yd7v7FNMHPtezn6re2HCrA again so I have some coins with which I can create transactions.
  • I create a transaction guided by the advisor and set up one payment of 0.00006 to the exodus address an other one of 0.00006 to the address of my friend n3wLS8G69kD96Czw3xbUg17ipsb2W1NGvB and the data packet n3fpVfk96uq3kiGMQBsTPdhFfhc3hF9cef.
  • I press send but I forgot that I send more then 0.00006 * 3 to that address so now there is also a change address involved.

How would MasterCoin interpret this transaction? Would it be invalid and reject? Would it assume the receiving address is is the address that had the 0.00006 payment and not the one with the change address? Would it divide the the amount send over the two outputs that were neither the exodus address nor data addresses?

Or am I misunderstanding everything all together?  Roll Eyes


It looks like you've got everything exactly right! I haven't addressed the issue of change addresses publicly (thanks for bringing that up), but it will be easy for the protocol to ignore them since they will typically be much larger in value and of a different amount than the other addresses. Still, there is a tiny possibility that if your change address happened to receive exactly 0.00006 BTC AND happened to have a sequence number which conflicted with the data address, you could have an invalid transaction that would have to be resent.

I usually send exactly 0.00028 BTC to the address I'm sending from so that there is exactly 0.00006 (x3) + 0.0001 transaction fee and no change, but I only do that because I think it looks prettier to not have a change address.

You might notice that the first transactions I did had a change address, and then subsequent ones did not. All of them are perfectly valid though.

Eventually we'll have pretty UI to hide these complexities from the user, so they can just pay X MasterCoins to Y address for cost Z, just like bitcoin does now.
newbie
Activity: 30
Merit: 0
From our subreddit comes a request to "explain it like I'm five": http://www.reddit.com/r/mastercoin/comments/1l68y1/request_explain_it_like_im_five_the_mastercoin/

Quote

    1. What type of users would benefit most from MasterCoin?

    2. Are there any similarities between the protocols of MasterCoin and, say, that of PayPal? If so, can you elaborate?

    3. Is there only one escrow fund throughout the MasterCoin protocol, or are there as many escrow funds as the market will bear? I'm referencing this image in particular.

    4. Can you dumb down what is meant by user currency? In dacoinminster's paper, he says, "The Most important feature of MasterCoins is the built-in support for users to create their own currencies out of existing MasterCoins." Could a user currency, if there was a market for it, be based on something as farfetched as bottle caps?

    5. Could a user currency be based not on goods but also on services? For instance, could there be a market for auto mechanics who could benefit from the ease of an online payment system and also the customers who could benefit from the system's ability to reverse disputed charges?

Excuse my naivety on this topic, I'm an English major by trade. Input is appreciated!

Feel free to chime in. Here's what I wrote:

Quote
Thanks for your interest in my project!

I did make an attempt to explain what I am up to using the most accessible form of communication known to man (memes): https://sites.google.com/site/2ndbtcwpaper/using-memes-to-explain-bitcoin

Here's my attempt to answer your five questions:

1) Criminals. Seriously. I'm really worried about this.

2) I guess they are similar in that one person can pay another. Other than that, they have almost nothing in common (which is good)

3) One escrow fund for each stabilized currency

4) Yes, we could have a currency that tracked the value of bottle caps, as long as we have a data source publishing the value of bottle caps

5) Reversibility of savings wallet transactions is not intended for merchant disputes, but to prevent theft. I think someone could build services-based currencies on top of MasterCoin, but that would probably involve features which haven't been added to the spec yet.

To point 3): In fact, I thought that there was only one escrow fund in the whole protocol, while reading the paper and the whole thread. You should definitely make this clearer in the paper!

Moreover, can you explain 'One escrow fund for each stabilized currency'? What is a stabilized currency? Isn't there an escrow fund from the beginning on? In this case, where does the supply of coins come from?
member
Activity: 83
Merit: 10
I like it,come on。

e667b5e8dd3d6f88fae52384a8ec21194cc0675054f8f21ef21d105b1dae2bbf


hero member
Activity: 938
Merit: 1000
Trying to wrap my head around everything so please bear with me.
  • I buy a few MasterCoins by sending a payment from 'mmFjJ4P1bC43yd7v7FNMHPtezn6re2HCrA' to the exodus address.
  • I want to send one of my MasterCoins to a friend so I fund mmFjJ4P1bC43yd7v7FNMHPtezn6re2HCrA again so I have some coins with which I can create transactions.
  • I create a transaction guided by the advisor and set up one payment of 0.00006 to the exodus address an other one of 0.00006 to the address of my friend n3wLS8G69kD96Czw3xbUg17ipsb2W1NGvB and the data packet n3fpVfk96uq3kiGMQBsTPdhFfhc3hF9cef.
  • I press send but I forgot that I send more then 0.00006 * 3 to that address so now there is also a change address involved.

How would MasterCoin interpret this transaction? Would it be invalid and reject? Would it assume the receiving address is is the address that had the 0.00006 payment and not the one with the change address? Would it divide the the amount send over the two outputs that were neither the exodus address nor data addresses?

Or am I misunderstanding everything all together?  Roll Eyes
newbie
Activity: 30
Merit: 0
Hi dacoinminister! I read the paper and essentially read the whole thread here. Surprisingly, I didn't find the answers to the following questions:

1.) If a user registers a new currency, let's call it new_coin, is there an upper limit of new_coins that can be supplied?

2.) Who owns them initially? Is it the user who registered the currency or is it the escrow fund? Or is it the escrow fund generating them, as soon as there is demand?

3.) What real-life 'objects' can be made a new currency out of? 1oz of gold is obvious. But, can I make a currency out of a company share (company XYZ), called XYZ_coin, or can I make a currency being worth one gnome in my own garden, called MyGnome_coin? What are the rules?  Huh

4.) How does the escow fund determine the price of a Mastercoin? It must do that, in order to e.g. know the equilibrium value of a Gold_coin, etc to which it tries to couple. Obviously, it cannot look at the orderbook of a user currency, since this would be redundant. So, is the Mastercoin value determined by the Bitcoin/Mastercoin ratio?
legendary
Activity: 2128
Merit: 1002
JR, I've just invested a small sum and loved your vid (I'm from the Bitangels group).
All the best.
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
From our subreddit comes a request to "explain it like I'm five": http://www.reddit.com/r/mastercoin/comments/1l68y1/request_explain_it_like_im_five_the_mastercoin/

Quote

    1. What type of users would benefit most from MasterCoin?

    2. Are there any similarities between the protocols of MasterCoin and, say, that of PayPal? If so, can you elaborate?

    3. Is there only one escrow fund throughout the MasterCoin protocol, or are there as many escrow funds as the market will bear? I'm referencing this image in particular.

    4. Can you dumb down what is meant by user currency? In dacoinminster's paper, he says, "The Most important feature of MasterCoins is the built-in support for users to create their own currencies out of existing MasterCoins." Could a user currency, if there was a market for it, be based on something as farfetched as bottle caps?

    5. Could a user currency be based not on goods but also on services? For instance, could there be a market for auto mechanics who could benefit from the ease of an online payment system and also the customers who could benefit from the system's ability to reverse disputed charges?

Excuse my naivety on this topic, I'm an English major by trade. Input is appreciated!

Feel free to chime in. Here's what I wrote:

Quote
Thanks for your interest in my project!

I did make an attempt to explain what I am up to using the most accessible form of communication known to man (memes): https://sites.google.com/site/2ndbtcwpaper/using-memes-to-explain-bitcoin

Here's my attempt to answer your five questions:

1) Criminals. Seriously. I'm really worried about this.

2) I guess they are similar in that one person can pay another. Other than that, they have almost nothing in common (which is good)

3) One escrow fund for each stabilized currency

4) Yes, we could have a currency that tracked the value of bottle caps, as long as we have a data source publishing the value of bottle caps

5) Reversibility of savings wallet transactions is not intended for merchant disputes, but to prevent theft. I think someone could build services-based currencies on top of MasterCoin, but that would probably involve features which haven't been added to the spec yet.
legendary
Activity: 1148
Merit: 1018
OP: I messed up and I just sent 3BTC which were not sent from a single address (e2a2ada035f096ddccd60925f6c051aac56be7ccfe0865453ff7b28fefc02de3), I see now that I should have used coin control with armory... How big is the problem? Any way to solve that?

No worries - the current plan is to write the code so that those MasterCoins are awarded to the address which paid the most bitcoins. The other option is to award them proportionally to the addresses which contributed, but that seems like it would make things needlessly complicated. I expect that your address 1C9RKyQ9X77iA6ARd182dRyGiacedGwYec owns them all.

Of course, if somebody contributes equally from two different addresses, I may be forced to add more logic to choose one . . .

Great - thanks for the prompt reply!
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
firstly...  amazing concept, well done to you

I will be sending my donation tomorrow, I hope it helps birth your idea and energises your creation

I say donate as that is how I see it, its a gamble, it could pay off, or not, but its only money, a string of numbers, really, its nothing more than you make it

If all goes well and we are blessed, we will see a return, if not financial then hopefully by it helping us to understand the limits of of our ideas and learning to expand on them, evolve them, into a greater model that will be stronger and more sound  ( the solution )

The control of our monies by faceless entities must come to an end

Some say it is impossible, it cant work, this or that cant happen, wont happen, or will happen and will bring down the whole system... they could be right...

We must strive to do whats good, and righteous, we must at least try to change things for the better, or life really would be pointless

Those who never try never fail, but they can also never succeed

My donation wont be particularly big, but if we succeed, it will have been worth it, and I will be able to say " I helped make that happen "



dacoinminster - my only advice to you - dont let the dollar blind you - remember whats really important - and make your dream come true



many people moan about you cutting the trolls posts...  I understand completely, this is a place for positive and useful debate, if you cant post with that in mind, this is not the place for your postings


sorry for going on for so long, all that is left to say is

GOOD LUCK BE WITH YOU





bones                                                - -- --- breaking boundaries and re-writing the rulebook --- -- -


I really appreciate your support! I'm definitely remembering what is important. You can probably tell from reading this thread that the single biggest risk to this project is my dogged determination to put my family first.
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
So I sent .42 btc... Now what?

same here.  was there supposed to be something coming back?

Nope - you have created MasterCoins via your transaction, and you own them until you publish a message sending them to somebody else.

So how do I access them?

Well, right now you can see how many you bought using the GreaseMonkey script, or you can send them to someone else using a standard bitcoin client. You'll need the MasterCoinAdviser software to tell you the proper format of your send transaction. Links to download the appropriate software can be found here: https://bitcointalksearch.org/topic/m.2841329
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
OP: I messed up and I just sent 3BTC which were not sent from a single address (e2a2ada035f096ddccd60925f6c051aac56be7ccfe0865453ff7b28fefc02de3), I see now that I should have used coin control with armory... How big is the problem? Any way to solve that?

No worries - the current plan is to write the code so that those MasterCoins are awarded to the address which paid the most bitcoins. The other option is to award them proportionally to the addresses which contributed, but that seems like it would make things needlessly complicated. I expect that your address 1C9RKyQ9X77iA6ARd182dRyGiacedGwYec owns them all.

Of course, if somebody contributes equally from two different addresses, I may be forced to add more logic to choose one . . .
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Check out the interview I did with bitangels:

https://docs.google.com/file/d/0B3nInaIJVqrtc3NqdkloLTZNOXM/edit?usp=sharing

In that video, I use screen-sharing to explain MasterCoin to potential investors and demonstrate what it can do so far.

I added this link to the OP too Smiley

Kudos on the interview (I didn't have time for it all, posted it on the Hebrew Facebook group).
One thing I did catch was at 27:10:

Quote
If at some point in the future it becomes clear that creating more (MasterCoin) would be in the benefit of people who currently own MasterCoin, we might explore that. It wouldn't be just me saying "here are some more MasterCoins", it would be some sort of vote.

This is a big no no. A big one.
See Prohibited Changes on the Bitcoin wiki.
Changing the number of MSC would similarly require the consent of every MasterCoin owner, not just 50% or 99% of them.
Such basic economic properties cannot ever be changed.

Precision, on the other hand, can be increased.


That's a very good point. If I or someone else tried to release more MasterCoins, that would create a hard fork (and rightly so) just like on bitcoin. I doubt that will ever happen, but I was trying to avoid the word "never" with that question, which can come back to bite you later Smiley
sr. member
Activity: 248
Merit: 250
firstly...  amazing concept, well done to you

I will be sending my donation tomorrow, I hope it helps birth your idea and energises your creation

I say donate as that is how I see it, its a gamble, it could pay off, or not, but its only money, a string of numbers, really, its nothing more than you make it

If all goes well and we are blessed, we will see a return, if not financial then hopefully by it helping us to understand the limits of of our ideas and learning to expand on them, evolve them, into a greater model that will be stronger and more sound  ( the solution )

The control of our monies by faceless entities must come to an end

Some say it is impossible, it cant work, this or that cant happen, wont happen, or will happen and will bring down the whole system... they could be right...

We must strive to do whats good, and righteous, we must at least try to change things for the better, or life really would be pointless

Those who never try never fail, but they can also never succeed

My donation wont be particularly big, but if we succeed, it will have been worth it, and I will be able to say " I helped make that happen "



dacoinminster - my only advice to you - dont let the dollar blind you - remember whats really important - and make your dream come true



many people moan about you cutting the trolls posts...  I understand completely, this is a place for positive and useful debate, if you cant post with that in mind, this is not the place for your postings


sorry for going on for so long, all that is left to say is

GOOD LUCK BE WITH YOU





bones                                                - -- --- breaking boundaries and re-writing the rulebook --- -- -
legendary
Activity: 1148
Merit: 1018
OP: I messed up and I just sent 3BTC which were not sent from a single address (e2a2ada035f096ddccd60925f6c051aac56be7ccfe0865453ff7b28fefc02de3), I see now that I should have used coin control with armory... How big is the problem? Any way to solve that?
legendary
Activity: 1358
Merit: 1003
Ron Gross
Check out the interview I did with bitangels:

https://docs.google.com/file/d/0B3nInaIJVqrtc3NqdkloLTZNOXM/edit?usp=sharing

In that video, I use screen-sharing to explain MasterCoin to potential investors and demonstrate what it can do so far.

I added this link to the OP too Smiley

Kudos on the interview (I didn't have time for it all, posted it on the Hebrew Facebook group).
One thing I did catch was at 27:10:

Quote
If at some point in the future it becomes clear that creating more (MasterCoin) would be in the benefit of people who currently own MasterCoin, we might explore that. It wouldn't be just me saying "here are some more MasterCoins", it would be some sort of vote.

This is a big no no. A big one.
See Prohibited Changes on the Bitcoin wiki.
Changing the number of MSC would similarly require the consent of every MasterCoin owner, not just 50% or 99% of them.
Such basic economic properties cannot ever be changed.

Precision, on the other hand, can be increased.
Jump to: