Bitcoin Forum
May 29, 2024, 09:06:00 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1] 2 3 4 »
1  Bitcoin / Development & Technical Discussion / Re: [ANN] Armory Multi-Sig with Simulfunding [BOUNTY 0.03 per bug] on: June 01, 2014, 08:45:43 AM
I can "Delete private keys only, make watching-only," without entering in password for that wallet. Selecting the option to print a paper backup does not function, and makes the "Delete" button nonfunctional.

Restoring a watch only wallet via paper backup just temporarily removes the wallet from the UI. Closing and reopening brings it back as a watch only  wallet once again. Watch only wallet has to be deleted for restoration of that wallet with a paper backup.

Please request details if that would be helpful.
2  Bitcoin / Project Development / Re: ChromaWallet (colored coins): issue and trade private currencies/stocks/bonds/.. on: May 28, 2014, 01:17:52 AM
Version 0.0.7 (beta) is released: http://chromawallet.com/#download

This version implements SPV and fixes some bugs in p2ptrade.

There is still a number of smaller issues which we need to fix.

I'm getting the following error:

Code:
<urlopen error [Errno 185090050] _ssl.c:343: error:0B084002:x509 certificate rou
tines:X509_load_cert_crl_file:system lib>

The client is downloading the blockchain headers, however it fails to show a balance in bitcoin or any assets.
3  Bitcoin / Project Development / Re: [ANNOUNCEMENT] Tatiana Coin - the Artist Coin by singer/songwriter Tatiana Moroz on: May 20, 2014, 09:45:02 PM
Anybody know why she switched from Mastercoin to CounterParty?
4  Bitcoin / Project Development / Re: ChromaWallet (colored coins): issue and trade private currencies/stocks/bonds/.. on: May 18, 2014, 09:47:43 AM
The fact that the metadata is stored on a "central" server is not actually an issue.

Thanks for the response.

If we have immutable data storage available to us why not use it? The current methods of metadata storage are antiquated solutions to challenges posed by new technologies.
5  Bitcoin / Project Development / Re: ChromaWallet (colored coins): issue and trade private currencies/stocks/bonds/.. on: May 17, 2014, 11:40:57 PM
Use of contract hashes and Namecoin doesn't really solve the main issue, issue of identity and trustworthiness check, so I don't think it's worth the effort atm.

But it was mentioned more than once, so there is something in it, I guess. Still, PGP integration could be orders of magnitude more useful.

The goal I had in mind for contract hashes and Namecoin integration aims quite a bit lower than "issue of identity and trustworthiness check." The contract hash provides a mechanism to immutably define intent at asset issuance. Namecoin integration is simply data storage that is publicly and universally accessible. These two items together allow an individual to definitively determine what an asset represents.

You're right, that they don't inherently provide a means of proving identity or checking trustworthiness. However, they can provide a means by which an issuer can enable an investor to practice due diligence.

For Coinprism, this can also enable revision control - especially given the ability to reissue an asset.
6  Bitcoin / Project Development / Re: ChromaWallet (colored coins): issue and trade private currencies/stocks/bonds/.. on: May 17, 2014, 09:12:40 PM
What do you mean by broader definition options?

Coinprism includes a link in the transaction that issues an asset using an OP_RETURN output. The link can be user defined, however otherwise directs to a Coinprism hosted page that includes a "contract details" field. Of course, I can't speak for Bytas, though I think that this type of functionality could be valuable.

That said, I have significant problems with the way that Coinprism associates contract details with an asset. First, the definitions are centrally hosted, and can be changed at will. Second, an asset can't be verified to be legit if the URL becomes invalid at some point in time. Further, even if you select a custom URL, you're required to have the http:// and .com.

I think proper implementation of an asset definition at issuance should be the hash of the contract in the OP_RETURN output. Somebody really creative could even store the contract with Namecoin and indexed by the hash of the contract. This is probably just a pipedream of mine though.

I don't know how this is all directly applicable to ChromaWallet given the drastic differences in implementation.
7  Bitcoin / Project Development / Re: ChromaWallet (colored coins): issue and trade private currencies/stocks/bonds/.. on: May 17, 2014, 08:05:43 PM
I'm playing around with lol's coin
Code:
{"color_set": ["epobc:8243935d22411c86a3c6372367d84531821045a632a8728cf6b15fc3b24ce4f2:0:289962"], "monikers": ["lol"], "unit": 6000}

Posted an offer to buy one lol for 0.00001BTC (1000satoshi).
Can anyone see that one?

Try adding this instead:

Quote
{"color_set": ["epobc:a0ced925bc539c631ed9cc88a031ee75f5ecb9172d0cad405f3935b21803a206:0:301140"], "monikers": ["lol"], "unit": 60}
8  Alternate cryptocurrencies / Marketplace (Altcoins) / Re: 300 BTC Coding Contest: Distributed Exchange (MasterCoin Developer Thread) on: March 25, 2014, 05:13:39 AM
Hi again.

It's clear to me that there is significantly more emphasis placed on development of features and progress towards functional goals than there is on the fundamentals of the Mastercoin system (is Master Protocol applicable here?). What I mean by this is the development of, for example, the distributed exchange and smart property has been prioritized over providing 1.) comprehensive and accurate documentation, 2.) a method of proof of transaction validity, and 3.) a structure for responsible Master Protocol implementation. I feel like this is primarily a matter of responsibility of the Mastercoin Foundation rather than any particular issue in specific. The funds held by the Mastercoin Foundation place it in an interesting position of responsibility. By creating financial incentive, the Mastercoin Foundation acts like an authority, in certain ways, regarding development and direction. The ability to create (significant) financial incentive in an open source project can have huge benefits, however also appears to carry the implication that potentially critical items, for which incentive is not provided, may not be developed at a satisfactory pace. Thus, a state of fundamental financial security in Mastercoin is deferred to an indefinite point in time because the project has been driven by development, because the specification could not be used as a specification.

This lack of preparedness is now framed by the Mastercoin infrastructure, and all bitcoin used in Mastercoin transactions. The bitcoin developers have been said to be patching the bitcoin-plane in mid flight, if you'll allow me to paraphrase Andreas Antonopoulos. I don't think the state of Mastercoin is far off from this description - in fact may be far worse considering that there is no provable method of transaction validation. The application has far outpaced the fundamentals. As the Shepard to Mastercoin development, it should be the primary goal of the Mastercoin Foundation to establish a structure from which the various implementations and features can flourish. Instead, it seems as if the development of the current implementations was sponsored at the unintentional expense of the core framework.

I've made offers to contribute significant amounts of time towards core work on a structure that defines Mastercoin in a manner that is "hard enforceable." The offers have gone unrecognized, my requests for links to discussion unanswered, and my concerns largely blown off. I recognize that I'm not talking to any single entity that represents Mastercoin, however it stands that the community has largely not responded to any of my concerns in any meaningful fashion. I maintain that I would like to work on a structure that will enable the Mastercoin specification to be "hard enforceable." This is an open offer to enter that conversation with anybody who's interested, and to coordinate with any developers/the Mastercoin Foundation if they find that it may be beneficial.

I've put together the following list to address some items that I believe are currently misrepresenting the state of the project.

  • Purpose of the specification The purpose of the specification is not currently clear. There are sections that clearly identify supported/recognized functions, and sections that specify transaction types and requirements. There are also sections that are much more "fluffy," with the apparent intent of appealing to readers, or otherwise painting a picture outside the direct goal of defining the Mastercoin ecosystem. Though it may be nice to have an accessible "overview" of Mastercoin, the specification should be largely technical, with verbiage kept to a minimum so as to maintain a focus on the protocol instead of the opinions of the authors.
  • State of the specification With implementation largely driven by the results of coordinated development, the specification does not currently serve the purpose of defining either the various implementations, or determining the validity of a Mastercoin transaction. Despite this, the specification is maintained to a certain degree, however the arbiter appears to be consensus. It should be clearly noted what the intent of the specification is, and what purpose the specification currently serves (i.e. documentation trailing development; not to be confused with the previous bullet).
  • The term "specification" The word "specification" does not accurately describe the function of the specification. The document should be titled to fill the purpose it is defined as.
  • Definition of consensus Until the specification can fill the role of a specification, the factors that determine the validity of a Mastercoin transaction should be identified and detailed. As far as I understand, this is currently consensus between various implementations. Given the decision to discontinue support for the MyMastercoins Wallet, there may soon be one less entity to participate in this consensus. It may prove valuable to define consensus (including any circumstances in which the Mastercoin Foundation does not recognize that which has achieved consensus), and detail a plan to act on in the event of loss of consensus.
  • Specification vs. whitepaper Any item that is not recognized as "enabled" or will not be considered valid should be explored in a document more similar to a whitepaper. The specification should define the Mastercoin ecosystem, though that not currently being the case, should act as reference for that which is recognized as valid.
  • Risk given flux in specification Holding or transacting in or with Mastercoin can pose a financial risk, due to the fluid nature of that which is considered "valid." A statement should be made or included in documentation regarding the possibility that a transaction will retroactively change states of validity. This statement should also acknowledge the fact that if validity is determined by consensus, there may be circumstances in which the Mastercoin Foundation (or any other party) may not be able to "fix" actions which represent a financial loss in either that of Bitcoin or Mastercoin.

Thoughts and input are welcome.

EDIT:
@LOL: I'll appreciate your feedback very much and will respond soon! Smiley

Thanks dexX7. I appreciate your discussion and ideas.
9  Alternate cryptocurrencies / Marketplace (Altcoins) / Re: 300 BTC Coding Contest: Distributed Exchange (MasterCoin Developer Thread) on: March 22, 2014, 01:45:49 AM


Quote
1. Snapshots

After a specification change, a time span, a number of transactions or whatsoever the current state of the Mastercoin ecosystem should be stored in an agreed upon format. This should include all balances and may include open orders, if a snapshots is going to allow to restore a state. The correctness of a snapshot must be confirmed by several parties and finally sealed by some higher authority. The data provided by a sealed snapshot shall never be challenged and has the highest power of ruling. No user shall ever fear that a change affect the past. (note: this is always high priority and nothing new!)

Can you point me to discussions had on this subject? I'm interested to know if any discussed ideas allow a snapshot to be referenced without developer involvement.
   
Ideally a system could be implemented that only requires a single snapshot at the implementation of a specification revision control system, to validate transactions occurring before that point in time. Of course, more may be necessary if a disaster situation ever occurs in which consensus is violated, or a revision has unintended consequences etc. Regardless, I'd imagine that snapshots are far less manageable than a set of rules that could define validity of transactions in prior revisions, and I fear that snapshots may pose scalability issues.

Quote
2. Checkpoints

Snapshots should be explicitly used to verify an application.

I feel like this may be challenging in terms of upkeep, and scalability.

Quote
3. Reference documentation

The specification is great, but I'm not yet sure how it could be used as some kind of reference for different versions of specific transaction types and similar. Commit numbers may be used, but I think in the best case there were some additional isolated and very short formal definitions which precisely define the different transactions at a given version and the changes made to previous ones. If I'd like to lookup something of the past, I'd probably need to invest some time for extracting all details from different places. Pseudo code or isolated reference implementation snippets may be used. Use-case and goal: "I want to lookup the policies applied prior snapshot 123.. ah, input is defined as.., only Exodus output allowed, otherwise invalid, 1-of-3 multisig, second and third multisig output is encoded data, ...".

I was thinking about something similar as I was submitting my pull request. Maybe it's not necessary to revise the entire specification if only one or two small changes are made. If different sections are broken out one can submit pull requests for items that don't warrant an entire specification revision, and changes can be discussed in a context more relevant to the issue at hand.
   
If we consider the specification a dataset instead of a specific document, it may be reasonable to precisely define a type of transaction as a data point and discrete unit, and consequently revise that definition independently of any other definition. This also allows all changes to a specific definition to be queried, and a "timeline" built of changes relevant to a specific transaction type.
   
Maybe a crazy idea, but why not use Master Protocol itself to store the specification? For the sake of opening up a discussion on the subject, consider if a transaction definition could be stored in the blockchain. Not only is it universally publicly accessible and immutable, but a standardized dictionary could theoretically allow a client to programatically and dynamically verify the validity of a transaction based on the relevant definition at the time. I have experience designing and implementing relational databases and would be thrilled to contribute if others think that this may be worth pursuing. I'm not under the impression that it's an easy task, but then again, neither was a distributed exchange.


Quote
4. Define how changes are pushed

Process.md describes the process of making changes to the Mastercoin specification. This document may be expanded to a more detailed "step-by-step" process guide similar to Bitcoin's release-process.md but related to sealing snapshots and pushing updates.

I agree. The specification feels too easy to manipulate right now, IMO. The revision procedure should detail the steps taken to ensure that the implications of a change are known, and that there are no unforeseen consequences that could compromise funds or security. This would be a great place to discuss results of test cases which you discuss below.

Quote
5. Test cases

With clear implementation guidelines it may be easier to run wide scale tests. I'm not sure, if this is done at the moment, but I'm thinking about things like "scan the chain for all transactions with unordered data-packages to get an overview about what the implications were, if an order would be enforced". (I'm not good at making up examples - ) Rephrased: if a change is pushed, evaluate all consequences. Run different settings, create test-snapshots etc.

I think there's a lot of value in a program/script that could scan the blockchain and output a list of x based on parameters y, and z. For example, transactions with outputs to the Exodus address, or more complex, transactions with outputs to Exodus address with a multisignature output that is not definitively spendable by the sending address or 2nd key pair created from associated (hex) private key. A tool of this nature would allow one to determine how "ready" various implementations are to transition to a new transaction definition, for example.
   
If a functional and usable language could be used to write a query, a tool of this nature could be revolutionary for bitcoin protocol layers, let alone for blockchain data analysis.

Quote
6. Transaction archival

Instead of storing only a current state, historical transactions may be stored and sealed similar to snapshots, e.g.:

Code:
[{
  "basetx": "98419d8b3056ce50aa63d1f464555e038ae517996ac6ec13bfd8c26689f5bece",
  "input": "1NqkqJkGCA7HJkBQqJrRvJCDCLAnQndw7",
  "reference": "1MaStErt4XsYHPwfrN9TpgdURLhHTdMenH",
  "datahex": "0000000000000001000000012a05f200"
}, {
  "basetx": "cc70f686b1402d092da400f817133b07d774b3d9791564dc6efee8dbd0a54a1d",
  "input": "1Foh78nqSDzrAncvTCCqtFSzz143CsGdcz",
  "datahex": "00010014000000010000000023c346000000000005e69ec0020000000000003a9801"
}]


IMO, this is unnecessary. I don't see any reason why a properly formed transaction definition shouldn't be able to determine validity of all applicable transactions. Archival could imply more limitations than the benefit gained by ease of gathering examples. Maybe your concern here could be appeased with the ability to prove a transaction types definition at block x?
10  Bitcoin / Armory / Re: Please Help Test Armory 0.91-beta! on: March 21, 2014, 12:58:09 AM
But while we're on the subject of multisig, do you mind commenting on the feasibility of a wallet recognizing strange outputs as spendable? That's a pretty broad question, but I didn't want to narrow it down so far as to only be applicable to the multisig example I provided. The reason I ask is largely due to mastercoin. Mastercoin uses 1-of-n multisig outputs as a method of storing data in the blockchain without creating unspendable outputs. The catch is that there isn't a wallet that will recognize or spend those outputs. As far as I'm concerned, they are unspendable by the average user. Anyway, do you find reason or incentive to recognize and support fringe case outputs such as the one in the example? If so, would you consider pursuing a wallet model that aims to recognize and spend all outputs that can be spent? Please note, this isn't a request - I'm just curious what a developer's thoughts are.

The answer to your question is basically:  determining spendability of an arbitrary script is an intractible problem.  I'm sure it's related to the halting problem.  Either way, the only way to do this is to simply identify a set of scripts templates and conditions that we know are spendable, and code those directly into the app.  When we have a multi-sig solution in Armory, it would be easy to automatically recognize such 1-of-N scripts as spendable.   But tying that into the interface may be complex:  do we really show those tx as spendable money the same as all the regular single-sig money?  It's in a 1-of-N for a reason, maybe it should be identified separately, in which case we need to show that in a different interface or in a different way.  Etc.

On that note, do you have a watching-only wallet that I could use to test the multi-sig thing.  I went to go fix it, and then realized I don't have a good way to get multisig address into any of my wallets.  Once i have one, I can fix the display problem pretty fast.

Thanks for humoring my question.

I'll PM you.
11  Bitcoin / Armory / Re: Please Help Test Armory 0.91-beta! on: March 20, 2014, 06:24:13 AM
Figured it out!  It's because that's not actually P2SH, it's a plain multi-sig address.  P2SH is one way to execute multisig scripts, but it's not used in the transaction you linked.  I would totally believe that I broke multisig display because I didn't test that.  Whoops!

I'll see if I can get it back to the way it was before.

P.S. - Just posted an Ubuntu 64-bit installer for testing...

Sorry about that. I actually realized right after that post that I'd been using P2SH interchangeably with multisig in a multitude of places recently. I suppose I'll live with the embarrassment.

But while we're on the subject of multisig, do you mind commenting on the feasibility of a wallet recognizing strange outputs as spendable? That's a pretty broad question, but I didn't want to narrow it down so far as to only be applicable to the multisig example I provided. The reason I ask is largely due to mastercoin. Mastercoin uses 1-of-n multisig outputs as a method of storing data in the blockchain without creating unspendable outputs. The catch is that there isn't a wallet that will recognize or spend those outputs. As far as I'm concerned, they are unspendable by the average user. Anyway, do you find reason or incentive to recognize and support fringe case outputs such as the one in the example? If so, would you consider pursuing a wallet model that aims to recognize and spend all outputs that can be spent? Please note, this isn't a request - I'm just curious what a developer's thoughts are.

Thank you for the awesome work on Armory! I'm excited to use Armory over the coming months.
12  Bitcoin / Armory / Re: Please Help Test Armory 0.91-beta! on: March 20, 2014, 04:58:51 AM
Quick bug report:

It appears as if I'm unable to open the "Transaction Info" popup on transactions that have a P2SH output as is standard in mastercoin transactions. In previous releases, the P2SH output was just marked as (I believe it was) "strange." It's not a huge deal considering that no wallet recognizes or can spend those outputs anyway, but it would be nice if the popup worked.

Here's an example:

Code:
OP_1 <pubkey1> <pubkey2> OP_2 OP_CHECKMULTISIG 

https://blockchain.info/tx/cba042a1e4b4b072084c06e94f84843cdbd17a30f13dd038fabca67baeb20b53
13  Alternate cryptocurrencies / Marketplace (Altcoins) / Re: 300 BTC Coding Contest: Distributed Exchange (MasterCoin Developer Thread) on: March 20, 2014, 04:06:50 AM
Say the protocol would adapt a more strict output policy (e.g. only a valid pub key of the sender + data-packages are allowed)

Sorry for another post.

A few different things going on here. This is in response to Class B "output policy."

First of all, it's unclear to me which Class B transactions are valid because the mastercoin implementations do not follow the requirements of the specification. Second, it doesn't matter what the policy is regarding the validity of a Class B transaction, it's only necessary that implementations have consensus, and that consensus is modeled after the specification. Third, despite the overarching importance of that which is described in my previous point, policy regarding validity of Class B transactions should be specified in a manner which is beneficial to the user or minimizes the detrimental impact on the user.

Fourth, the flexibility of Class B transactions directly affects the ability to spend a P2SH output, and the likelihood that it will be spent. Fifth, policy regarding valid Class B transactions should be based on the balance struck between the Mastercoin Foundation's willingness to recognize transactions that are, or may be, directly detrimental to the blockchain, and whatever benefit is found in flexibility. Finally, however valid Class B transactions may be defined, a wallet should always create P2SH outputs that will be spent by the wallet from which it originated.

tl;dr Flexibility is okay. Wallets that create outputs that it cannot or will not spend are not okay.
14  Alternate cryptocurrencies / Marketplace (Altcoins) / Re: 300 BTC Coding Contest: Distributed Exchange (MasterCoin Developer Thread) on: March 20, 2014, 02:13:11 AM
I think the spec is accurate right now, but if you've found something that is out of date, we welcome pull requests Smiley

Thanks for weighing in.

I propose that if the specification is accurate then only transactions which are not invalidated (or otherwise specifically validated) by the specification are valid.

I'm going to use the same example as my previous post to demonstrate the effect of this. The specification states, "A single transaction must be constructed satisfying the following requirements:"

Quote
Has one or more 1-of-n OP_CHECKMULTISIG outputs each containing at least two compressed public keys, one of which must be the senders address

Excuse me for quoting myself, but this is what follows:

Quote
  • Only a compressed key pair can broadcast valid Class B transactions.
  • There is a mastercoin client that is actively broadcasting invalid Class B transactions.
  • Since no mastercoin implementation recognizes a Class B transaction with a P2SH output to an uncompressed public key as invalid, there is a growing chain of invalid transactions that is publicly and unanimously identified as valid.

If the specification is accurate it also follows that, because there is no implementation that recognizes Class B transactions with P2SH outputs to uncompressed public keys as invalid, no implementation can be trusted to display the correct mastercoin balance of an address.

Further, a significant sum of bitcoin has been unknowingly traded with parties which may not even know how much mastercoin they have. Given the possibility that this party has a mastercoin balance to cover the trade, there's no guarantee that it was actually sent to the buyer.

It's really tragic for mastercoin if the spec is accurate, because the loss of bitcoin in invalid mastercoin transactions cannot be recovered, and every single wallet/implementation is useless as a method of sending, receiving, trading, or otherwise interacting with the mastercoin network.

I would suggest against maintaining that the specification is accurate.

EDIT: Concerning the invitation to submit a pull request, it's not a matter of the spec simply being outdated. If it's reasonable to consider that the specification can be out of date, the public release of an updated specification can change the validity of mastercoin transactions confirmed in the blockchain prior to the time at which the revision is published. Bitcoin sets a very high standard on the ability to verify the validity of a transaction, and there's no reason that any entity should be able to retroactively change mastercoin balances.

I recognize the invitation as a suggestion to get involved and address items I may have issues with in a structured and accepted manner, however this isn't about redefining a valid Class B transaction. It's about the ability to know an addresses mastercoin balance, to trust that an addresses mastercoin are secure, to feel safe moving or trading mastercoin, and finally to minimize the impact of data storage on the blockchain.

But for the sake of argument, if I did submit a pull request and it was merged, this would just exacerbate the issue I have with my ability to trust the specification as a document that defines mastercoin, and my ability to trust mastercoin as valuable. If the specification does not or cannot define mastercoin (and consequently the security of mastercoin that one owns), I believe it follows that mastercoin is not valuable.

EDIT 2: I expanded my first edit, and clarified a poorly worded sentence.
15  Alternate cryptocurrencies / Marketplace (Altcoins) / Re: 300 BTC Coding Contest: Distributed Exchange (MasterCoin Developer Thread) on: March 20, 2014, 01:32:56 AM
...

Say the protocol would adapt a more strict output policy (e.g. only a valid pub key of the sender + data-packages are allowed), how would you deal with historical transactions that may be affected by such a change?

Easy.

First, define the purpose of the mastercoin specification. Revisions as necessary.

Second, add a section to the specification that details a system of revision control, and how a specification revision affects past and future mastercoin transactions. I'd start with the following bulletpoints:

A specification revision...

  • Does not change the validity of any mastercoin transaction prior to the public publication.
  • Will not impose changes that cannot or do not take place immediately upon public publication. e.g. define Class B transactions as only valid if OP_RETURN is used for data storage, because no implementation is prepared to make this transition.
  • Is considered to define mastercoin, the mastercoin protocol (etc.) until the point in time at which another valid revision is publicly published.
  • Is defined as valid when cryptographically signed by the entity that is granted the right to revise the specification.
  • Is defined as publicly published when the following has taken place: 1.) The revision and signature is announced and made publicly available, and 2.) The hash of the revision is stored in the blockchain and is signed by the same entity that signed the revision.

And thus established is a method by which an individual can independently prove the validity of a mastercoin transaction at any point in time. The only tricky revision is the first one included in the blockchain, which must establish which transactions up to that point are valid. I say, publicly publish the revision, and then take a "snapshot" of the balances of all mastercoin address greater than 0 as of the block height at which the revision hash transaction was first confirmed. Take a hash of that dataset, store the hash in the blockchain, and define that as proof of a transactions validity up to the point at which the first revision was confirmed.
16  Alternate cryptocurrencies / Marketplace (Altcoins) / Re: 300 BTC Coding Contest: Distributed Exchange (MasterCoin Developer Thread) on: March 19, 2014, 04:11:19 AM
I started a discussion with dexX7 over in the mastercoin announcement thread. He invited me over here due to the technical nature.

I've seen a bit of mastercoin history - I participated in the fundraiser, I attempted a few decentralized trades back in mid November here on this forum, and I was one of the first to complete a trade on the 15th. I consider myself pretty gung ho about mastercoin, however a few items have left me a bit disenfranchised recently. So, if you'll excuse some potentially blunt sentences I'd like to open up discussion on some issues that I feel fairly strongly about.

I'm going to preface this with a quick distinction. As demonstrated below, a private key produces two distinct key pairs. Both key pairs have the same private key, however as they are implemented in a wallet, the private key WIF of key pair #1 cannot spend outputs sent to address #2, and the compressed private key WIF of key pair #2 cannot spend outputs to address #1.

Code:
Private Key: d0d772f23d11b78aefdecc9c91715518381dffd995818772996168cc397b8254
Private Key WIF: 5KQGADurfnHLPnwRQ2myYztUYabnCLvErWAgEXy9rD3Z5d3xRbv
Private Key WIF Hex Encoded: d0d772f23d11b78aefdecc9c91715518381dffd995818772996168cc397b8254
Public Key: 0490871c4239585c8b879bdbb9f50c7f49258db450ac010a6c352ca60d674c968e5135abe7eabfb1cd11782fb54b4dde5f66c5ce4d670c693aa66bc250dbe23236
Address: 1F7Bp8NNPyGY8i1p3nw1vmTpUePQhScP72

Private Key: d0d772f23d11b78aefdecc9c91715518381dffd995818772996168cc397b8254
Compressed Private Key WIF: L4DfuhzJEAs6bbmCgeqWcEWCaPJWV4uz9VjiAjgr4CAGb59Yrn3K
Compressed Private Key WIF Hex Encoded: d0d772f23d11b78aefdecc9c91715518381dffd995818772996168cc397b825401
Public Key: 0290871c4239585c8b879bdbb9f50c7f49258db450ac010a6c352ca60d674c968e
Address: 1Pbme9p5J73P2FcBtADsBTaKhd8Gct6D19

Keep that in mind while I continue.

  • Currently different mastercoin implementations generate Class B transactions differently. One includes the sender's uncompressed public key in the P2SH, while another includes the sender's compressed public key in the P2SH.
  • I acknowledge that the outputs produced by both implementations are spendable, however I pose that it's not currently reasonable to expect a user to spend them.
  • There is not a mastercoin implementation that will always generate a P2SH output that can be spent by key pair associated with the sending address.
  • There is a likelihood that the P2SH output will not be able to be spent by a key pair in the sending addresses wallet.
  • P2SH outputs from Class B transactions are not recognized, and cannot be spent by any bitcoin or mastercoin wallet currently available(please correct if wrong)
  • If mastercoin clients send P2SH outputs to both compressed and uncompressed public keys originating from a single private key, the implication is that mastercoin recognizes a "unit of identity" as being defined by a private key, and thus two key pairs. This isn't compatible with any other client that I'm aware of, can be a privacy leak, and security risk if one of the WIF private keys is compromised. Further, I'd be inclined to think that mastercoin implementations would always need to display and identify both key pairs associated with a private key.
  • Class B transactions technically do not create unspendable outputs, however it's a cop out to say that Class B transactions address the concern of blockchain bloat due data storage. If outputs of a transaction are not recognized, cannot be spent, or are otherwise not used in transactions when reasonable, they will not be spent and are subject to loss due to perceived lack of value or understanding.

What I'm trying to point out is that the absence of standardization between mastercoin implementations creates a weird scenario in which it's significantly harder to spend P2SH outputs than it has to be. If a wallet could recognize and spend those P2SH outputs, another weird situation occurs in which the P2SH outputs cannot all be spent without the wallet generating the other key pair associated with a private key. IMO, that's funky and there's no graceful or secure way to handle it.

The next thing I want to bring up is the mastercoin specification. It's not my intent to be a stickler, however I believe it's critical to meticulously maintain the specification, because without the specification there is no mastercoin and there is no value. Yes, the disappearance of the mastercoin specification is an extreme case. So let me provide a lesser example. The mastercoin specification states that a Class B transaction must satisfy the following:

Quote
"Has one or more 1-of-n OP_CHECKMULTISIG outputs each containing at least two compressed public keys, one of which must be the senders address."

Logical conclusions that follow:

  • Only a compressed key pair can broadcast valid Class B transactions.
  • There is a mastercoin client that is actively broadcasting invalid Class B transactions.
  • Since no mastercoin implementation recognizes a Class B transaction with a P2SH output to an uncompressed public key as invalid, there is a growing chain of invalid transactions that is publicly and unanimously identified as valid.

That which is built to a specification should model that specification as closely as possible with a minimum of interpretation. It appears to me that the the specification is modeled after multiple different mastercoin implementations, is up to interpretation, and does not serve the purpose of defining mastercoin. As such, one could argue that a developer's implementation defines mastercoin and mastercoin is therefore subject to his whim. I am not stating this as my point of view. I say it to demonstrate the importance of the mastercoin specification. The value of mastercoin and the mastercoin protocol rely directly on a specification which defines mastercoin transactions and mastercoin implementation. Yes, it's a slippery slope - if the user can't rely on the specification to define x, when why should it be relied on to define y?


edit: I think we are close on usability. If we spend the next couple weeks fixing things that make the various wallets hard to use and trade with, I don't see any barrier to finishing the payout at the end of March.


Like I said previously, I've been enthusiastic about mastercoin. However, recently it feels esoteric, loose, and out of touch. I recognize that decentralized trading is groundbreaking, and I recognize that trades are being made.

But I do not think that it is by any means reasonable to think that a client is close to a "high bar for usability" if it doesn't recognize the outputs of a transaction it created, signed and broadcast, cannot spend unspent outputs which it is (cryptographically) capable, and creates multisig outputs that cannot be spent by a key pair in the wallet. Further, there are only native Windows clients, and other OSes have to use a web client and manually handle WIF private keys.

Also, the depth of knowledge required to spend P2SH outputs as they are currently generated is unreasonable to expect in a user. Like I said previously,

Quote
If outputs of a transaction are not recognized, cannot be spent, or are otherwise not used in transactions when reasonable, they will not be spent and are subject to loss due to perceived lack of value or understanding.

If a mastercoin client can't accommodate and expect this perceived lack of value and understanding in a user, it is irresponsible to taut the client as one that has a "high bar for usability."

Mastercoin,

  • uses irresponsible implementations of Class B transactions.
  • creates outputs that aren't spendable by any wallet.
  • greatly privileges Windows users.
  • and doesn't have a specification that describes current implementations.

I feel strongly enough about these items that I'd rather see some sort of resolution than sleep like a normal person. I don't feel like it's my place to offer unsolicited solutions to the problems I'm posing, however would be happy to discuss my ideas on the subjects.

And if consensus is that the items I bring up are not problems, take this as feedback from a "long time mastercoin user" that the project feels out of touch, lacks on the PR front, and has direction at the expense of overall quality.
17  Alternate cryptocurrencies / Altcoin Discussion / Re: MasterCoin: New Protocol Layer Starting From “The Exodus Address” on: March 18, 2014, 09:05:44 AM
(TL;TR:) There is no bloat and transactions are created in a way that dust outputs are spendable, but due to the general inability of Bitcoin clients to deal properly with multi signature outputs, the current Mastercoin wallets don't redeem them yet. This will change and thanks to posts like yours this may happen rather sooner than later. Smiley

I appreciate the response.

Quote
Masterchain.info doesn't compress the key; the Masterchest wallet does currently compress the public key - with the intention of saving space and creating smaller transactions. Zathras (Masterchest creator) recently mentioned he may drop the compression, because this may confuse the user. What do you think about this?

The "to sender" multisig output should be defined as one of the following in the mastercoin specification:

  • Spendable by the address with a compressed public key and a private key in common with the sending address.
  • Spendable by the address with an uncompressed public key and a private key in common with the sending address.
  • Spendable by the sending address.
  • Spendable by the address with a public key opposite that of the sending address (i.e. if sending address is compressed, uncompressed; if uncompressed, compressed), and a private key in common with the sending address.

It doesn't matter which, however it needs to specified and implemented. If the specification happens to make sense, user confusion should be reduced to a minimum. My vote is "Spendable by the sending address." It's a more difficult implementation, but it makes sense.

Quote
Compressed or uncompressed - both share the same private key and are both redeemable by the owner. In neither of those cases any coins will be lost, but ...

Share a private key, yes, however do not have same WIF private key, public key, or address. If some mastercoin outputs are spendable by a compressed address, and other outputs are spendable by the corresponding uncompressed address, then both should be represented in the wallet and identified as such.

The implication of a client automatically receiving/signing transactions for both the compressed and uncompressed versions of the key pair is that the mastercoin 'unit of identification' is a private key, and thus two key pairs. This isn't compatible with any other client that I'm aware of, can be a privacy leak, and security risk if one of the WIF private keys is compromised.

Quote
As mentioned, compressed or uncompressed doesn't really matter - both should be redeemable. I think the way to go in the future is to have an intelligent input selection that redeems some of that dust whenever there is some space left to the next fee level (currently 0.0001 BTC per 1 KB, up rounded).

I agree with intelligent input selection, however I'd not be inclined to use a wallet that treats two key pairs interchangeably, especially if both pairs were not represented and identified as such.

Quote
This will be addressed, that's for sure. At the same time I think this is something the user shouldn't care about, but rather a problem for the wallet to solve under the hood. What is your opinion about this? Would you prefer low-level control of inputs or maybe even a dedicated app to collect dust? Input on this is very welcome.

I agree, should be solved under the hood - provided that only one key pair from a given private key is used (unless of course the user imports the key pair of the other format, in which case they should still be treated as separate "entities"). Dust is a pain to deal with. The more obstacle there is to spending it the less likely it is to be spent.

Quote
With Bitcoin 0.9 OP_RETURN transactions will be considered as standard transactions, but very recently the allowed payload size was reduced to 40 byte (https://github.com/bitcoin/bitcoin/pull/3737). If this is final, the size won't be enough for all Mastercoin transaction types and I tend to favor the data encoding within multi signature outputs. - They are widely accepted, redeemable, don't consume much more size and also very important in my opinion: very, very long payloads are possible.

The depreciation of Class A transactions eliminates unspendable outputs. The implementation of Class B transactions is only marginally better, IMO, because the incentive to make multisig outputs spendable is not worth the time involved - especially for those less bitcoin/mastercoin savvy. I see Class B transactions as a great transition to Class C transactions - but if Class B transactions are not depreciated, and multisig output dust is not properly handled, the implementation of Class B transactions does little to address the intent behind eliminating unspendable outputs. Sure, it technically does not create unspendable outputs, however it's a cop out to say that Class B transactions address the concern of blockchain bloat due data storage. Others may disagree, but as far as I'm concerned if outputs of a transaction are not recognized, cannot be spent, or are otherwise not used in transactions when reasonable, they will not be spent and are subject to loss due to perceived lack of value or understanding.


J.R can comment his perspective on this. Here is mine:

We have a bit of a mixup here. On the one hand, I do believe that the "High bar for usability" goal has not been met, and doubt it will be met this month.
On the other hand, we moved to paying out monthly bounties in February, and .

I hope it is clear that the DEx bounties paid in Feb, and the March monthly bounty, count towards the 300 BTC bounty (out of which 150 BTC has been previously paid).
So after March I don't think that a lot of money will remain in the original 300 BTC money pool (J.R needs to reply with some numbers).
I expect the bulk of the money remaining from the DEx to be divided in March's monthly payout.

Perhaps if there is only a tiny amount left after that, we will decide to increase March's payout and pay out the full remainder of the 300 BTC bounty this month, in order to avoid the accounting/judging headache. We will wait for J.R's number regarding February's payout (due any day now), and see what makes sense.


Yup. February numbers are nearly ready. They are my top priority once I catch up on urgent emails.

edit: I think we are close on usability. If we spend the next couple weeks fixing things that make the various wallets hard to use and trade with, I don't see any barrier to finishing the payout at the end of March.

I do not think that it is by any means reasonable to think that a client is close to a "high bar for usability" if it doesn't recognize the outputs of a transaction it created, signed and broadcast, cannot spend unspent outputs which it is (cryptographically) capable, and creates multisig outputs that cannot be spent by a key pair in the wallet - let alone the fact that there are only native Windows clients, and those with other OSes must manually handle WIF private keys in order to use the web wallet.

I've been pretty jazzed about mastercoin, however recently it seems esoteric, loose, and out of touch with the user. I bought at exodus last year, I was one of the first to attempt decentralized trades back in mid November, and I was one of the first to succeed on the 15th. Yes, it's groundbreaking, and yes, trades can be made. But mastercoin doesn't have a specification that describes current implementation, the clients privilege Windows users, and the depth of understanding in bitcoin required to spend Class B outputs (i.e. not bloat the blockchain) is a great bar to entry.
18  Alternate cryptocurrencies / Altcoin Discussion / Re: MasterCoin: New Protocol Layer Starting From “The Exodus Address” on: March 18, 2014, 03:02:23 AM

Actually the multi sig output does include your public key, but in a compressed form, if I'm not mistaken?

See for example:

204e02988b1a7262d90168dfe4574a69b3ab6617dddfc3737e6a296ec4d17b8f:

Input:

Quote
30450221009040ffa1b6ad045d2e6392b53c13e2f10a1b3780a9d25605e20380631c8818b402203 8a03dea5ed01e5a27c27cacbcb2908861a8078293d10d7ed8d2704e95efda8801 04cb53028bef9d48860842d17e86174fd65c913494d148c335bb17a6551a4bcb14d56eccb4cd4ac184b60cd71d1cf83b70ddf5e23198325c6036e06033c5d1d594

Output:

Quote
OP_1 02cb53028bef9d48860842d17e86174fd65c913494d148c335bb17a6551a4bcb14 0225af43e566399b7429bb01463fb69666bb3b24609b6d736bb64327143d655805 OP_2 OP_CHECKMULTISIG

For the sake of clarification:

  • If the sending address has a compressed public key, will any mastercoin client broadcast a transaction with a multisig output that can be spent by the address with the corresponding uncompressed public key?
  • Do any bitcoin or mastercoin clients recognize a Class B transaction multisig output as one that can be spent? i.e. Do the outputs add to the displayed balance, and will the client spend that output?
  • The mastercoin spec says, "It is envisaged that in future Master Protocol clients will 'clean up' periodically by redeeming and consolidating unspent multisig outputs." If the sending address has an uncompressed public key, is it speculated that the mastercoin client will also 'clean up' multisig outputs sent to the address with the corresponding compressed public key and vice versa?
  • The mastercoin spec states that a Class B transaction must satisfy the following: "Has one or more 1-of-n OP_CHECKMULTISIG outputs each containing at least two compressed public keys, one of which must be the senders address." Does this imply that only addresses with compressed public keys can generate valid Class B transactions? A Class B transaction sent from an address with an uncompressed public key that has a multisig output to the associated compressed public key does not produce an output that can be spend by the senders address.
  • Is a Class B transaction valid if the multisig output is to an uncompressed public key?
  • Is a Class B transaction valid if the sending address has an uncompressed public key and the multisig output is the corresponding compressed public key? And vice versa?
  • Given that the multisig outputs are very small, is it generally understood and recognized that these outputs are not accounted for in (most??) clients, and will not be spent except by manually generating, signing and broadcasting the transaction?
  • With the understanding that Class A transactions have been depreciated because they produce unspendable outputs, is there a plan to educate and assist the mastercoin community in spending Class B multisig outputs that would have been unspendable if produced by a Class A transaction?
  • When mastercoin transitions to Class C transactions, using the script OP_RETURN for data storage, will there be an effort as a community to spend the multisig outputs from Class B transactions?

You'll have to forgive my questions. However it's not clear to me exactly what defines a valid Class B transaction given that my address has consensus across mastercoin implementations despite having broadcast Class B transactions that should not be valid according to the mastercoin specification.

I recognize that I may be very far out of the loop on this, however I feel that it's irresponsible to implement Class B transactions as a solution to the bloat caused by Class A transactions without an active effort to ensure that those multisig outputs are spent. The issue is exacerbated by the fact that the mastercoin clients are 1.) sending multisig outputs to a compressed public key while the sending address has an uncompressed public key, and 2.) sending multisig outputs to uncompressed public keys (which directly violates the mastercoin spec). I recognize that multisig outputs can be spent, but I don't think they will be spent unless people made aware of the problem, and encouraged to spend them.
19  Alternate cryptocurrencies / Altcoin Discussion / Re: MasterCoin: New Protocol Layer Starting From “The Exodus Address” on: March 17, 2014, 06:02:49 AM
I'm finding a couple Class B Mastercoin transactions I've made in which no public key in the multisig output script is that of the sender:


  • 204e02988b1a7262d90168dfe4574a69b3ab6617dddfc3737e6a296ec4d17b8f
  • 1d1b0f773eb639d13151743b5794914d371284123cf516c7598c7340ddf49716
  • 7ca6d02dc71e798919449e36708c1fa001797b1471e42928e2750cc03013283b


Am I missing something here, or are those now unspendable outputs?
20  Economy / Web Wallets / Re: [ANN] Unveiling Coinprism: the first colored coin web wallet - Win beta invites! on: March 15, 2014, 09:51:57 PM
I'd love to try it out.
Pages: [1] 2 3 4 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!