Author

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

legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Pretty cool summary of everything so far in MasterCoin posted by David Johnston to the bitangels mailing list:

Quote
BitAngels,

I think a good update on Mastercoin is in order since I know many of you have jumped on board and are supporting the open source MSC protocol development.

Too Long Didn't Read: Funds Raised, First Coding Competition a Success, 3 Mastercoin Blockchain Explorers Launched, Mastercoin Clients / Wallets In Development, MSC to BTC Exchange Launched (http://www.buymastercoin.com/#what-is-it), Price of MSC More Than Doubled, Subreddit Launched (http://www.reddit.com/r/mastercoin/), Mastercoin Foundation Incorporated as Non Profit, and Mastercoin.org website launched (http://www.mastercoin.org/).   

Details:
1. As you know we raised 4,740 BTC ($600,000+ USD) as part of the 30 day funding effort for Mastercoin completed August 31st 2013.

2. First coding Competition for $25,000 USD in BTC and Mastercoins Launched (Complete Today October 15th 2013):
Bitcoin Talk Thread with tons of details on the coding done:
https://bitcointalksearch.org/topic/300-btc-coding-contest-distributed-exchange-mastercoin-developer-thread-292628
Github Repos:
https://github.com/maraoz/pymastercoin
https://github.com/maran/mastercoin-ruby
https://github.com/maran/mastercoin-wallet
https://github.com/grazcoin/mastercoin-tools

3. Blockchain Explorers and Mastercoin Exchange Launched (1,200 Mastercoin Transactions Already more every day):
http://mastercoin-explorer.com/
https://masterchest.info/
http://www.buymastercoin.com/

Mastercoin-ruby: A ruby library to parse MasterCoin data. Source: https://github.com/maran/mastercoin-ruby

    Decoda a Mastercoin data-address
    Decode a Mastercoin data-public key
    Encode data to an address
    Encode data to a public key
    Advise how to create a 'old school' transaction using sendmany
    Get the amount of coins bought via Exodus for a given Bitcoin address
    Get the amount of coins bought via Exodus for a given Bitcoin transaction-id
    Decode a Mastercoin transaction based on given Bitcoin transaction-id
    Create and relay a Mastercoin multisig transaction through Bitcoind


Mastercoin-explorer.com: A Ruby on Rails application to index all Mastercoin transactions and show other data. Source: https://github.com/maran/mastercoin-explorer

    Index all Mastercoin related transactions both Exodus payments and simple send transactions.
    Offer a public JSON API so others can easily parse this data without having to index everything themselves. Documentation here: http://mastercoin-explorer.com/api_docs
    Multi-currency support currently has real and test Mastercoins


Mastercoin-wallet: A (QT-based) Mastercoin thin-client implementation. Source: https://github.com/maran/mastercoin-wallet

    Uses the forementioned Mastercoin-explorer API to communicatie balance data.
    Only requires a private key with an existing Mastercoin balance to use.
    Saves keys encoded in config files.
    Does not require local Bitcoind/QT.
    Uses multisig approach.


4. Mastercoin White Paper Updated To Version 1.1
https://sites.google.com/site/2ndbtcwpaper/

5. The Mastercoin Foundation has been Incorporated and 7 Board Members Volunteered.

All in all its been a busy 45 days and the next coding bounty is coming up soon with a focus on the decentralized peer to peer exchanged using the Bitcoin Blockchain.

A big thanks to Ron, JR, Brock, Jonathan, Sam Yilmaz, Anthony and Mich for helping the project progress so quickly.

Best Regards,

David A. Johnston
BitAngels.co

I think this would make a great starting point for the first post for our new blog: http://blog.mastercoin.org/

Although we should probably use a more complete list of github repos:
    https://github.com/maraoz/pymastercoin
    https://github.com/maran/mastercoin-ruby
    https://github.com/maran/mastercoin-explorer
    https://github.com/maran/mastercoin-wallet
    https://github.com/grazcoin/mastercoin-tools
    https://github.com/zathras-crypto/masterchest-library
    https://github.com/zathras-crypto/masterchest-wallet
    https://github.com/zathras-crypto/masterchest-engine
    https://github.com/zathras-crypto/masterchest.info
    https://github.com/Bitoy88/BMX-2/tree/master
    https://github.com/dacoinminster/MasterCoin-Adviser/

(Did I miss any?)

Plus we'd need to add a bit more about MasterChest and MasterChain (since he was mostly highlighting Tachikoma's work), or just cut down section 3 to the three links.
sr. member
Activity: 266
Merit: 250
zathras:
What is the reason that this tx is invalid? (It is valid on the other 2 implementations).
https://masterchest.info/lookuptx.aspx?txid=9b7506074bab082a75943f3c67c353e27c4e2a926825aa08ebbf13e27eed1869
It seems that also your parsing says that there are enough funds:
https://masterchest.info/lookupadd.aspx?address=1GD6YyXnd7DKvfUKs22Fp3FSGuvK6n4F4j

Oops, good pickup.  Bug in transaction validity checking.

Code:
If returnval > txamount Then 'ok - sufficient funds

should be

Code:
If returnval >= txamount Then 'ok - sufficient funds

I'll correct it now.

Bug corrected, and I've rolled back the database for masterchest.info back to block 263850 and rescanned.  Looks OK now.

Bugfix applied to masterchest-engine and the wallet, commits on git.

Tachikoma, FYI while I was troubleshooting this tx I noticed it has the wrong block number in mastercoin-explorer, just FYI.

Thanks Smiley
sr. member
Activity: 266
Merit: 250
zathras:
What is the reason that this tx is invalid? (It is valid on the other 2 implementations).
https://masterchest.info/lookuptx.aspx?txid=9b7506074bab082a75943f3c67c353e27c4e2a926825aa08ebbf13e27eed1869
It seems that also your parsing says that there are enough funds:
https://masterchest.info/lookupadd.aspx?address=1GD6YyXnd7DKvfUKs22Fp3FSGuvK6n4F4j

Oops, good pickup.  Bug in transaction validity checking.

Code:
If returnval > txamount Then 'ok - sufficient funds

should be

Code:
If returnval >= txamount Then 'ok - sufficient funds

I'll correct it now.
hero member
Activity: 938
Merit: 1000
Not yet. But the protocol has a build in exchange option, as soon as it's coded up Smiley
full member
Activity: 140
Merit: 100

Great thanks! I see them

Are there any exchanges out there already?

Thanks
hero member
Activity: 938
Merit: 1000
I'm betting it's a float rounding error.
sr. member
Activity: 284
Merit: 250
zathras:
What is the reason that this tx is invalid? (It is valid on the other 2 implementations).
https://masterchest.info/lookuptx.aspx?txid=9b7506074bab082a75943f3c67c353e27c4e2a926825aa08ebbf13e27eed1869
It seems that also your parsing says that there are enough funds:
https://masterchest.info/lookupadd.aspx?address=1GD6YyXnd7DKvfUKs22Fp3FSGuvK6n4F4j

legendary
Activity: 1358
Merit: 1003
Ron Gross
Should MasterCoin do DNS?

I just noticed that NameCoin is having some serious problems: https://bitcointalksearch.org/topic/namecoin-was-stillborn-i-had-to-switch-off-life-support-310954

Obviously MasterCoin could do DNS. We'd just need a message for "name=IP address" to register a domain name (probably add a fee to discourage squatting), and the sending address would be authorized to rebroadcast with the same name and a different IP address as needed. Might as well support IPV6 while we're at it . . .

I would consider this feature low priority though, since my feature priority ordering is based on what will raise the price of MasterCoins the most, and this doesn't seem like a huge economic value to me . . .

+1

While it might be interesting if really needed in the future, it's low priority, and I think Namecoin can be fixed to address these issues (but I haven't dug deep enough into Namecoin code). We shouldn't focus on this.
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Should MasterCoin do DNS?

I just noticed that NameCoin is having some serious problems: https://bitcointalksearch.org/topic/namecoin-was-stillborn-i-had-to-switch-off-life-support-310954

Obviously MasterCoin could do DNS. We'd just need a message for "name=IP address" to register a domain name (probably add a fee to discourage squatting), and the sending address would be authorized to rebroadcast with the same name and a different IP address as needed. Might as well support IPV6 while we're at it . . .

I would consider this feature low priority though, since my feature priority ordering is based on what will raise the price of MasterCoins the most, and this doesn't seem like a huge economic value to me . . .
sr. member
Activity: 266
Merit: 250
Zathras, the insallation seems not so easy and I don't wanna spend time on it right now. Is it possible to do a brief tutorial/how-to install your software?

I'd be glad to beta-test it afterwhile !
Sure.  Installation should be pretty straight forward but I'm happy to detail it out here.

1] Ensure you have .NET4 installed
2] Ensure you have the transaction index enabled in your bitcoind/qt server.  This is disabled by default in 0.8.x, and can be enabled by adding txindex=1 to bitcoin.conf and starting bitcoind/qt with the -reindex option.
3] Download the file MasterChestWalletAlphaWin.zip from here (github)
4] Extract the contents to a folder somewhere
5] Open Masterchest_Wallet.exe
6] On the getting started panel, enter your bitcoin rpc server information and click test.  This will check the connection and test for the transaction index.
7] Once you get a successful connection and test, enter a new wallet passphrase and tick the box for preseeded database if you want to use it, then click finish.
    
    

8] You should be at the welcome screen where you can then enter your passphrase to access the wallet.

That should be it!  Let me know if I can help further.

Thanks! I am able to compile and build it now.

Great, let me know if I you have any other questions, happy to answer them in the morning Smiley
newbie
Activity: 12
Merit: 0
Yeah I can see there are some source resources like icons missing from the git repo.  I've done a commit which should resolve it.

Thanks! I am able to compile and build it now.
legendary
Activity: 2478
Merit: 1362
Zathras, the insallation seems not so easy and I don't wanna spend time on it right now. Is it possible to do a brief tutorial/how-to install your software?

I'd be glad to beta-test it afterwhile !
sr. member
Activity: 266
Merit: 250
Yeah I can see there are some source resources like icons missing from the git repo.  I've done a commit which should resolve it.
newbie
Activity: 12
Merit: 0
As always please feel free to ask any questions & let me have any feedback, thanks! Smiley

Hi, I do not manage to compile and build the project with msbuild. Some source and resource files seem to be missing. e.g. My Project\Resources.resx, invalid.png and so on. Am I missing something?

Error:

http://s12.postimg.org/ij3varq1p/masterchest_error.png
sr. member
Activity: 266
Merit: 250
  • Sequences for multisig public keys need to start with 01 instead of 00. If you don't do this more often then not the public key won't be a valid ECDSA point.
Tachikoma:

I was trying to understand the compressed public key issue you described, and I checked your code:
https://github.com/maran/mastercoin-ruby/blob/master/lib/mastercoin-ruby/simple_send.rb#L29
It seems you always add '02' at the beginning, and you never use the '03' option.
Choosing '02' or '03' depends on odd/even characteristics of the data, and you could find an example here:
https://github.com/salfter/fillet/blob/master/hex2wifaddr.py#L193
I am not sure that this is the reason, but maybe it eliminates your voodoo rule.
Hey Grazcoin,

In a nutshell a compressed public key is simply the uncompressed key cut in half and the 02 or 03 prefixed is derived from the last digit of the second half of the uncompressed key (whether odd or even).  Since the first half of the uncompressed key is used for the compressed key, a bitcoin node seeing the transaction has no way to know what the last digit of the second half of the uncompressed key was (as they don't have that half), hence they have no way to verify if it should start with a 02 or an 03.  Thus we don't need to do any evaluation of our data pubkey and can just prefix using a known value (02).

As to using 01 instead of 00 for sequence numbers and ECDSA point validity, to be honest that's above me at the moment (I'm trying to get my head around elliptic curve cryptography in general but it's a slow process!).  All I can say is I have 100% tx acceptance with 0201, but not much joy with 0200 (if I recall correctly, so much has happened this month!).

sr. member
Activity: 284
Merit: 250
  • Sequences for multisig public keys need to start with 01 instead of 00. If you don't do this more often then not the public key won't be a valid ECDSA point.

Tachikoma:

I was trying to understand the compressed public key issue you described, and I checked your code:
https://github.com/maran/mastercoin-ruby/blob/master/lib/mastercoin-ruby/simple_send.rb#L29
It seems you always add '02' at the beginning, and you never use the '03' option.
Choosing '02' or '03' depends on odd/even characteristics of the data, and you could find an example here:
https://github.com/salfter/fillet/blob/master/hex2wifaddr.py#L193
I am not sure that this is the reason, but maybe it eliminates your voodoo rule.

sr. member
Activity: 266
Merit: 250
One last update before the contest ends Smiley

I felt I was perhaps being a little eager in calling my wallet 'multi-currency' when it only supports transacting Mastercoin & Test Mastercoin.  The wallet has always supported working with Bitcoin balances, but offers no way to actually send Bitcoin.  As such I've now added initial send support (just sendtoaddress via RPC at this stage) for Bitcoin.

Note. to address the inevitable "what's the point when you already have a bitcoin wallet running anyway?" - I'm of the impression that a full-featured Mastercoin wallet should be able to transact in Bitcoin in addition to Mastercoin & the various Mastercoin-backed currencies/derivatives and this just adds the initial round of code.  There is of course no requirement to use this functionality over your local bitcoin wallet.

Unconfirmed transaction support is now included for Bitcoin also.

Additionally I've spun up some extra test machines which has allowed me to locate and resolve some more bugs in the wallet & library - this release should hopefully be less buggy to get running:

Code:
# FIXED: broken dependencies on sqlce libs
# FIXED: getting started finish button empty field check not working
# FIXED: getting started panel may incorrectly fail bitcoind test using finish button while test button shows success
# FIXED: getting started panel transaction index check performed with test button but not finish button
# FIXED: wallet fails to syncronize leaving just two 'thread exited' messages in debug panel
# FIXED: error conditions not examined on blockchain scanning thread exit
# FIXED: address enumeration & BTC balance gathering during startup thread no longer working
# FIXED: getting started finish button not disabled after click so repeated clicks can run setup code multiple times
# FIXED: send address list only populated after full sync, not in startup thread
# FIXED: available balance for bitcoin in send panel incorrectly displays unconfirmed instead of confirmed balance
# FIXED: change of currency does not reset available balance
# FIXED: border paint sometimes does not occur until after first background thread has returned
# FIXED: welcome panel enter key on wallet passphrase does not submit and continue
# FIXED: focus is not on passphrase entry when welcome panel is shown requiring tabs before passphrase entry
# FIXED: default radio button for mastercoin currency type not working

This is a testing release only and is not fit for real usage - do not under any circumstances plug it into a bitcoin wallet with any sizable amount of bitcoins/mastercoins.  Test only with an almost empty wallet.

Source & Binary : GitHub

Note download & extract MasterChestWalletAlphaWin.zip for binary and please remember a transaction index is required to use this software (txindex=1 in bitcoin.conf and next bitcoin run add -reindex switch).

Test safely!

As always please feel free to ask any questions & let me have any feedback, thanks! Smiley
hero member
Activity: 672
Merit: 500
Quote
I don't like this.  It discourages newcomers.  Tomorrow may bring a fourth brilliant coder who would like to get it a try.  However, she will be disinclined to try if grazcoin, zathras and tachi are all warm and fuzzy in bed together with solid jobs.  It is better to have the door wide open to people who want to enter and make it very easy for them to come in.
I didn't mean guaranteed solid jobs, I meant result-based fund allocated part time jobs for these guys. And of course doors should be open with new contests, so the project be able to attract new talents.
Quote
I am not saying the early guys don't deserve a great reward for their efforts - they do.  Also, they deserve whatever it takes to keep them going in the future.  But, lets don't put them on easy street while blocking out the path for others to join.  
Dude, It is not about who deserves the cake or reward, it's about give this proved talents a guaranteed modest piece of cake for them to continue their efforts in the same direction, still it will be result based and their works will be continually monitored.

Quote
Let's run another contest.  Make it independent of the features those three have conquered.  Those three continue their efforts (with pay) to complete them.  Those three are excluded from the new contest.  This assures that at the end of the contest, we have three new stars on the team.  
Well you say the same thing as me, but with the opposition mark?! After all this is btt forum Wink

Quote
Giving these guys steady jobs now assures a high barrier to entry for newcomers and pushes them off to work on other projects.  We've got about 479 tasks to complete.  Let's form new contests which attract new talent while locking up that great talent we found last time.
Not steady but rather result based fully monitored modest salary packed jobs. One or two new contests will be healthy as well. But I am sure nobody wants it to continue forever, spending money to create contests again and again ad infinitum, mastercoin is not a high school league!
After one or two more contests and when we got a stable team, talent hunting can be continued per se, necessity and applied based, driven by the foundation.

newbie
Activity: 42
Merit: 0
While contest-form of development is good and healthy at early stages, I hope the foundation get convinced that the current developers are doing pretty well, so decide to allocate a fund to hire them (at least part time) to push things more effectively and more collective based.
By the way I should thank you all for the excellent effort, Tachikoma, zathras and grazcoin, very good work!
And my especial thanks to grazcoin team for their sensational new approach, wonderful Smiley

I don't like this.  It discourages newcomers.  Tomorrow may bring a fourth brilliant coder who would like to get it a try.  However, she will be disinclined to try if grazcoin, zathras and tachi are all warm and fuzzy in bed together with solid jobs.  It is better to have the door wide open to people who want to enter and make it very easy for them to come in. 

I am not saying the early guys don't deserve a great reward for their efforts - they do.  Also, they deserve whatever it takes to keep them going in the future.  But, lets don't put them on easy street while blocking out the path for others to join. 

Let's run another contest.  Make it independent of the features those three have conquered.  Those three continue their efforts (with pay) to complete them.  Those three are excluded from the new contest.  This assures that at the end of the contest, we have three new stars on the team. 

Giving these guys steady jobs now assures a high barrier to entry for newcomers and pushes them off to work on other projects.  We've got about 479 tasks to complete.  Let's form new contests which attract new talent while locking up that great talent we found last time.

hero member
Activity: 672
Merit: 500
While contest-form of development is good and healthy at early stages, I hope the foundation get convinced that the current developers are doing pretty well, so decide to allocate a fund to hire them (at least part time) to push things more effectively and more collective based.
By the way I should thank you all for the excellent effort, Tachikoma, zathras and grazcoin, very good work!
And my especial thanks to grazcoin team for their sensational new approach, wonderful Smiley
Jump to: