Author

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

legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Ah, with namespace I was actually talking about the amount of user based currencies that could exist until the unique identifiers run out. If the creation is free you can just spam creations until you fill up the 4-bytes that are reserved for identifiers.

Ah. Using up all 4 billion identifiers would require 4 billion transactions and would cost hundreds of millions of dollars at today's prices, even with no extra fee attached. That's the sort of attack that only a government could contemplate. If we also destroy 0.0002 MasterCoins every time a currency is created, we'll run out of MasterCoins before we run out of currency IDs Smiley

I guess that would be a good minimum fee, since it guarantees we'll never run out!
hero member
Activity: 938
Merit: 1000
Ah, with namespace I was actually talking about the amount of user based currencies that could exist until the unique identifiers run out. If the creation is free you can just spam creations until you fill up the 4-bytes that are reserved for identifiers.
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Why base the price on name length?

Well, I was trying to address the concern you raised about someone hogging the namespace. How would you set the fee?
hero member
Activity: 938
Merit: 1000
So let's talk smart assets.

A few questions I had by reading the current specs.

Currently it looks like you don't have to spend any funds to create an asset. Wouldn't this indirectly mean that if I made a small script I could register all possible currency identifiers and break the system? Perhaps setting a required mining fee amount would fix this issue.

I expect most smart-properties to be some kind of dividend paying security. With his in mind it would be great if we could explicitly supply a bitcoin-address when using the "Purchasing a Currency Offered For Sale" method to buy shares, to keep it simple we could also define that when buying smart-properties the default dividend address is the Mastercoin address used for the payment.

 

I agree that smart property is more important than distributed e-commerce (which would effectively make a distributed silk road). Note that I've previously mentioned that I plan to add a "pay dividend" command to the spec. I agree with Tachikoma that we ought to add some friction to creating smart properties. Rather than pay the fee in bitcoins to the miner, I think we should destroy a small number of MasterCoins (increasing their value).

How about we set the minimum fee to:
Property Name LengthMinimum Fee
15000 MSC
22000 MSC
31000 MSC
4500 MSC
5200 MSC
6100 MSC
750 MSC
820 MSC
910 MSC
105 MSC
112 MSC
121 MSC
130.5 MSC
140.2 MSC
150.1 MSC
160.05 MSC
170.02 MSC
180.01 MSC
. . . and so on . . .

In this way, most people will register "Quantum Miner Shares Class B" rather than "QM", but if someone wants to burn a lot of money on a short name, they can Smiley

This is just one way we could do it - if you guys have suggestions, I'd like to hear them. My main goal is to keep it as simple as possible without creating a single hard-coded value that we'll have to change later.

Incidentally, if two people DID register "QM", the second one would be displayed as "QM[2]". There's no enforcement that names must be unique - only currency identifiers, which are assigned in the order currencies and properties are created.

Why base the price on name length?
hero member
Activity: 938
Merit: 1000
I've setup a VM to play around with masterchest-wallet but I think I might be missing a dependencies:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

Code:
************** Exception Text **************
System.IO.FileNotFoundException: Could not load file or assembly 'System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.
File name: 'System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'
   at Masterchest_Wallet.Form1.SQLGetSingleVal(Object sqlquery)
   at Masterchest_Wallet.Form1.lnkwcont_LinkClicked(Object sender, LinkLabelLinkClickedEventArgs e)
   at System.Windows.Forms.LinkLabel.OnLinkClicked(LinkLabelLinkClickedEventArgs e)
   at System.Windows.Forms.LinkLabel.OnMouseUp(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Label.WndProc(Message& m)
   at System.Windows.Forms.LinkLabel.WndProc(Message& msg)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].



************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18051 built by: FX45RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Masterchest_Wallet
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/Animazing/Documents/wallet/Masterchest_Wallet.exe
----------------------------------------
Microsoft.VisualBasic
    Assembly Version: 10.0.0.0
    Win32 Version: 11.0.50709.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18022 built by: FX45RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18037 built by: FX45RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18022 built by: FX45RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
Masterchest
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/Animazing/Documents/wallet/Masterchest.DLL
----------------------------------------
Microsoft.VisualBasic.PowerPacks.Vs
    Assembly Version: 10.0.0.0
    Win32 Version: 10.0.40219.1
    CodeBase: file:///C:/Users/Animazing/Documents/wallet/Microsoft.VisualBasic.PowerPacks.Vs.DLL
----------------------------------------
System.Data
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18058 built by: FX45RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Numerics
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:


   


When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.


Any idea what I need to install Zathras?
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
So let's talk smart assets.

A few questions I had by reading the current specs.

Currently it looks like you don't have to spend any funds to create an asset. Wouldn't this indirectly mean that if I made a small script I could register all possible currency identifiers and break the system? Perhaps setting a required mining fee amount would fix this issue.

I expect most smart-properties to be some kind of dividend paying security. With his in mind it would be great if we could explicitly supply a bitcoin-address when using the "Purchasing a Currency Offered For Sale" method to buy shares, to keep it simple we could also define that when buying smart-properties the default dividend address is the Mastercoin address used for the payment.

 

I agree that smart property is more important than distributed e-commerce (which would effectively make a distributed silk road). Note that I've previously mentioned that I plan to add a "pay dividend" command to the spec. I agree with Tachikoma that we ought to add some friction to creating smart properties. Rather than pay the fee in bitcoins to the miner, I think we should destroy a small number of MasterCoins (increasing their value).

How about we set the minimum fee to:
Property Name LengthMinimum Fee
15000 MSC
22000 MSC
31000 MSC
4500 MSC
5200 MSC
6100 MSC
750 MSC
820 MSC
910 MSC
105 MSC
112 MSC
121 MSC
130.5 MSC
140.2 MSC
150.1 MSC
160.05 MSC
170.02 MSC
180.01 MSC
. . . and so on . . .

In this way, most people will register "Quantum Miner Shares Class B" rather than "QM", but if someone wants to burn a lot of money on a short name, they can Smiley

This is just one way we could do it - if you guys have suggestions, I'd like to hear them. My main goal is to keep it as simple as possible without creating a single hard-coded value that we'll have to change later.

Incidentally, if two people DID register "QM", the second one would be displayed as "QM[2]". There's no enforcement that names must be unique - only currency identifiers, which are assigned in the order currencies and properties are created.
legendary
Activity: 1260
Merit: 1031
Rational Exuberance
Masterchest Wallet

Initial alpha release of the Masterchest desktop wallet.  

This is the first alpha release of the Masterchest desktop wallet.  Expect it to be littered with bugs, it's a 0.0.1 release.  It'll be quicker to find them if others participate in testing, so please post bad behaviour, errors, failures or crashes etc.

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.

With thanks to:  BouncyCastle, Newtonsoft, Tachikoma

Requirements: .NET 4, bitcoind/qt RPC server with transaction indexing enabled (disabled by default in 0.8+, add txindex=1 in bitcoin.conf and then start with -reindex to readd transaction index).

Disclaimer:  Please use it as you see fit, but remember this is very, very alpha.  You should not risk anything other than a small amount of coins (bitcoin or mastercoin) when testing.  To put some context around the risks involved - consider that as we build and broadcast transactions from scratch, if we grab a 100BTC input and miscalculate the change, then a miner somewhere is going to be very happy and you are going to lose out.  I'm encouraging any and all testers to spin up a VM, create a new bitcoin wallet, depsoit a fraction of a bitcoin to cover fees and then use Masterchest software with this new bitcoin wallet.

Usage I think is fairly self explanatory; configure the connection to bitcoind/qt and let it scan the blockchain.  It will automatically add addresses from your bitcoin wallet and enumerate their balances.  Sends should be debugged first and only signed/sent once you are sure you have checked the transaction and know what you are doing.  The only time your bitcoin wallet passphrase is required is to sign&send a transaction.

Transactions not in a block but detected from getblocktemplate (ie waiting to be included in a block) are interpreted as unconfirmed.

I have also included the option of a preseeded database which will reduce the amount of blocks needed to scan for transactions.  

Please feel free to ask any questions and I'll be happy to answer them Smiley

Some screenshots (@50%):




Hint: This runs contained in it's own folder (ensure you have write perms!).  If things go wrong just unzip again and start over (no keys are stored in this wallet, bitcoind/qt does the signing).  You can also add gettingstarted# to wallet.cfg to trigger the initial setup again after first run.

I cannot stress this strongly enough; 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.

Compiled binary and source : https://github.com/zathras-crypto/masterchest-wallet

Feedback/questions always of course welcome Smiley

This. Looks. AWESOME!!

I'd like to take this opportunity to remind everyone that testing and code-reviewing count towards the contest! If you test, provide feedback, find bugs, do code reviews, include that in your final summary and I'll consider that when payout time comes Smiley

Speaking of payout time, it's getting close! In order to make sure we don't delay too much, please make sure you are ready on October 15th to post your final list of everything you did, and links to all the source (so everybody can see it all in one place). I will ask each of you to carefully consider the other contestants and tell me (privately) how you would distribute the money among them if you were not participating in the contest. Every time I think about the payout, I get nervous - hurt feelings seem inevitable, and I want to make sure I'm not solely responsible for those hurt feelings Smiley


newbie
Activity: 42
Merit: 0
Masterchest Engine
Initial alpha release of the Masterchest engine.  
Feedback/questions always of course welcome Smiley
100% Awesome!!!  Good job.
sr. member
Activity: 449
Merit: 250
You can't connect it to a blockchain wallet directly. You can however export your blockchain wallet keys and put them into a normal bitcoind instance.

Thanks.  Will test masterchest with bitcoind.  

(I was hoping to use masterchest with blockchain api in order to create a "lightweight" mastercoin wallet.)
hero member
Activity: 938
Merit: 1000
So let's talk smart assets.

A few questions I had by reading the current specs.

Currently it looks like you don't have to spend any funds to create an asset. Wouldn't this indirectly mean that if I made a small script I could register all possible currency identifiers and break the system? Perhaps setting a required mining fee amount would fix this issue.

I expect most smart-properties to be some kind of dividend paying security. With his in mind it would be great if we could explicitly supply a bitcoin-address when using the "Purchasing a Currency Offered For Sale" method to buy shares, to keep it simple we could also define that when buying smart-properties the default dividend address is the Mastercoin address used for the payment.

 
hero member
Activity: 938
Merit: 1000
You can't connect it to a blockchain wallet directly. You can however export your blockchain wallet keys and put them into a normal bitcoind instance.
sr. member
Activity: 449
Merit: 250
Before you go; it looks like https://github.com/zathras-crypto/masterchest-wallet has no content. At least for me!
Git wasn't synced - should be all sorted now.  Please be careful and test with new wallets Smiley


Can masterchest  be configured to use blockchain wallet?   
sr. member
Activity: 266
Merit: 250
Before you go; it looks like https://github.com/zathras-crypto/masterchest-wallet has no content. At least for me!
Git wasn't synced - should be all sorted now.  Please be careful and test with new wallets Smiley
hero member
Activity: 700
Merit: 500
Before you go; it looks like https://github.com/zathras-crypto/masterchest-wallet has no content. At least for me!

Yes, nothing to download for me too Sad
Would love to give this a test run!
hero member
Activity: 938
Merit: 1000
Before you go; it looks like https://github.com/zathras-crypto/masterchest-wallet has no content. At least for me!
sr. member
Activity: 266
Merit: 250
And that's all folks - time for a bit of sleep, if anyone is thinking of trying any of this out I'll be back tomorrow Smiley
sr. member
Activity: 266
Merit: 250
Masterchest Wallet

Initial alpha release of the Masterchest desktop wallet.  

This is the first alpha release of the Masterchest desktop wallet.  Expect it to be littered with bugs, it's a 0.0.1 release.  It'll be quicker to find them if others participate in testing, so please post bad behaviour, errors, failures or crashes etc.

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.

With thanks to:  BouncyCastle, Newtonsoft, Tachikoma

Requirements: .NET 4, bitcoind/qt RPC server with transaction indexing enabled (disabled by default in 0.8+, add txindex=1 in bitcoin.conf and then start with -reindex to readd transaction index).

Disclaimer:  Please use it as you see fit, but remember this is very, very alpha.  You should not risk anything other than a small amount of coins (bitcoin or mastercoin) when testing.  To put some context around the risks involved - consider that as we build and broadcast transactions from scratch, if we grab a 100BTC input and miscalculate the change, then a miner somewhere is going to be very happy and you are going to lose out.  I'm encouraging any and all testers to spin up a VM, create a new bitcoin wallet, depsoit a fraction of a bitcoin to cover fees and then use Masterchest software with this new bitcoin wallet.

Usage I think is fairly self explanatory; configure the connection to bitcoind/qt and let it scan the blockchain.  It will automatically add addresses from your bitcoin wallet and enumerate their balances.  Sends should be debugged first and only signed/sent once you are sure you have checked the transaction and know what you are doing.  The only time your bitcoin wallet passphrase is required is to sign&send a transaction.

Transactions not in a block but detected from getblocktemplate (ie waiting to be included in a block) are interpreted as unconfirmed.

I have also included the option of a preseeded database which will reduce the amount of blocks needed to scan for transactions.  

Please feel free to ask any questions and I'll be happy to answer them Smiley

Some screenshots (@50%):




Hint: This runs contained in it's own folder (ensure you have write perms!).  If things go wrong just unzip again and start over (no keys are stored in this wallet, bitcoind/qt does the signing).  You can also add gettingstarted# to wallet.cfg to trigger the initial setup again after first run.

I cannot stress this strongly enough; 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.

Compiled binary and source : https://github.com/zathras-crypto/masterchest-wallet

Feedback/questions always of course welcome Smiley
sr. member
Activity: 266
Merit: 250
Masterchest Engine

Initial alpha release of the Masterchest engine.  

This is a blockchain scanner that will connect to a bitcoind/qt RPC server, scan the blockchain and decode any mastercoin transactions it finds into a database.
It will then run through the database and process the transactions assigning a valid/invalid status to each and calculating the balance for each address accordingly.

Masterchest.info uses this engine to get data on mastercoin transactions.

With thanks to:  BouncyCastle, Newtonsoft, Tachikoma

Requirements: .NET 4, SQL server, bitcoind/qt RPC server with transaction indexing enabled (disabled by default in 0.8+, add txindex=1 in bitcoin.conf and then start with -reindex to readd transaction index).

Disclaimer:  Please use it as you see fit, but remember this is very, very alpha.  You should not risk anything other than a small amount of coins (bitcoin or mastercoin) when testing.  To put some context around the risks involved - consider that as we build and broadcast transactions from scratch, if we grab a 100BTC input and miscalculate the change, then a miner somewhere is going to be very happy and you are going to lose out.  I'm encouraging any and all testers to spin up a VM, create a new bitcoin wallet, depsoit a fraction of a bitcoin to cover fees and then use Masterchest software with this new bitcoin wallet.

Please feel free to ask any questions and I'll be happy to answer them Smiley A quick readme I threw together:

Quote
This readme will be updated as time allows.  A quick run down of usage is as follows:

When running the engine will connect to an SQL server as specified and scan the blockchain for mastercoin transactions, adding them to the database and then processing them.

An SQL instance is required (can be easily rewritten to use sqlce).  Create a database with the following tables (can add create in code when I have time):

balances:
ADDRESS NVARCHAR(100) NOT NULL
CBALANCE BIGINT NOT NULL
CBALANCET BIGINT NOT NULL

processedblocks:
BLOCKNUM INT NOT NULL
BLOCKTIME BIGINT NOT NULL

transactions:
TXID NVARCHAR(100) NOT NULL
FROMADD NVARCHAR(100) NOT NULL
TOADD NVARCHAR(100) NOT NULL
VALUE BIGINT NOT NULL
TYPE NVARCHAR(100) NOT NULL
BLOCKTIME BIGINT NOT NULL
BLOCKNUM INT NOT NULL
VALID BIT NOT NULL
CURTYPE INT NOT NULL
ID INT NOT NULL (identity/auto-increment)

transactions_processed:
TXID NVARCHAR(100) NOT NULL
FROMADD NVARCHAR(100) NOT NULL
TOADD NVARCHAR(100) NOT NULL
VALUE BIGINT NOT NULL
TYPE NVARCHAR(100) NOT NULL
BLOCKTIME BIGINT NOT NULL
BLOCKNUM INT NOT NULL
VALID BIT NOT NULL
CURTYPE INT NOT NULL
ID INT NOT NULL (identity/auto-increment)

Then run masterchest_engine.exe with the following options:

-sqlserv=  'name of sql instance
-sqldata=  'name of database
-sqluser=  'sql username
-sqlpass=  'sql pass
-bitcoinrpcserv=  'self explanatory
-bitcoinrpcport=
-bitcoinrpcuser=
-bitcoinrpcpass=

For example you may run it is as a scheduled task every 5 minutes to continually update the database with transactions.
User interfaces for the information can then be built and transactions queried from the database easily, for example:

select * from transactions_processed where txid='txid'
select cbalance from balances where address='address'

Compiled binary and source : https://github.com/zathras-crypto/masterchest-engine/

Feedback/questions always of course welcome Smiley
sr. member
Activity: 266
Merit: 250
I also wanted to try and summarize the transaction processing rules the various Masterchest software uses.

Note the specification is not final and these rules are subject to change with no notice.

* All outputs must be in the same transaction, eg via sendmany

For an 'original' spec transaction:
* Output amounts are not evaluated and do not need to be the same, as long as they are above the dust threshold any value should be fine
* In the case of 3 outputs data and recipient addresses are evaluated by sequence number.  
* If a 4th output is present it is considered change if its sequence number is not in step with data & recipient sequence, otherwise the transaction is considered ambiguous (invalid).

For a multisig transaction:
* Output amounts are not evaluated and do not need to be the same, as long as they are above the dust threshold any value should be fine (note dust threshold is higher for multisig outputs)
* In the case of 3 outputs, multisig and exodus are easy to identify so the remaining address is the recipient address.
* If a 4th output is present it is considered change if its address matches the sending address, otherwise the transaction is considered ambiguous (invalid).

Again feedback more than welcome and my ability to articulate in a few sentences what I've coded may not be all that great Wink
sr. member
Activity: 266
Merit: 250
Cool, congrats to the release!

I don't have access to windows. Is there a way to try this out anyway?
Thanks Smiley

It's a library so really wouldn't be much use outside of developing mastercoin stuff in .NET.  I'm trying to get some other Masterchest stuff out tonight too though (if I can stop interrupting for work - pfft SAN upgrades & the real world).  Most of my contributions are going to be Windows (at least to begin with), though I do plan to test the wallet against wine on some popular distros and hopefully code around any incompatibilities I pickup.  Alternatively there's always virtualization and an eval version of Windows if you're so inclined Smiley

Jump to: