Bitcoin Forum
April 23, 2024, 07:09:22 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 »
541  Bitcoin / Project Development / Re: [BOUNTY] 200 BTC for lightweight colored coin client(s) on: March 21, 2013, 12:02:29 AM
dfs vs bfs Huh i've obviously got a lot more reading to do

Actually link you posted has a good illustration: http://www.cs.sunysb.edu/~skiena/combinatorica/animations/search.html

Suppose what we are looking for is in the first pentagon. DFS will arrive there faster because it won't go to other pentagons before it scans the first one.

oh, i see. so i guess then a "proper" spv client is "required" to download all the block headers?

Yes.  But if you just link to one block header, it's still much better than nothing because it is hard to fake just one block header.

i think this is how the sd android app works. it takes a while to fully sync, but no where near as long as bitcoin-qt.

As far as I understand it downloads whole blocks because there is no way to download only headers, however it discards block contents unless it looks for wallet transactions.

and i think ultraprune in v0.8 is similar

No, ultraprune is a full verifying node implementation, it is just more efficient.

but then how would you classify an app like BitcoinSpinner? You just start it up and it WORKS without any syncing? or for that matter any app that uses the blockchain.info api or how about bitcoinjs-gui?

They trust that server protects them against double-spends. Also, they pull blockchain info from server instead of downloading it directly on Bitcoin network.

there are limits on the amount of data you can save in local storage. so even a spv client may have problems.

There is no need to store everything locally.

It is in fact theoretically possible to implement a full, verifying, mining node when you have only 32 bytes of local storage Smiley

But that's a fairly complex topic...
542  Bitcoin / Project Development / BOUNTIES for colored coin projects (275+ BTC total) on: March 20, 2013, 11:45:09 PM
1. ArmoryX overhaul (50 BTC): ArmoryX is a proof-of-concept colored coin wallet. Basically, it is the only one in existence (if you do not count bitpaint) and the only one which implements p2ptrade. However, the problem is that it is based on an outdated version of Armory. And I have very little interest to maintain it.

So, what's required: merge ArmoryX with changes in later versions of Armory. I'm not sure what is possible/feasible, but at very least we need support for bitcoind 0.8 blockchain format.

Required skills: C++, Python.

Bounty: 50 BTC is a total budget for overhaul, maintenance and further development. We don't want to spend that much on overhaul alone. But, say, 25 BTC can go into it... If you're interested, please contact me so we can discuss it further.

2. ArmoryX TerraCoin port (?? BTC) Once we do an overhaul, we can enable TerraCoin support in ArmoryX. It is easy to do, and it would be really great because Armory would require much less resources to run on TerraCoin network, so it would be feasible to run it on cheapo laptops and whatnot.

(Currently I cannot run ArmoryX for Bitcoin mainnet on my laptop, I kid you not.)

3. Standard development and research (25+ BTC). So far only a part of colored coin tech is properly documented. Other parts either exist in code without any documentation in English, or exist only in our imagination, with discussions scattered over dozens of forum posts. So we need to develop standards, and to solve all pending problems.

4. Bounties for thin clients (200+ BTC). See here: https://bitcointalk.org/index.php?topic=141858.0
100 BTC is allocated for development of JS-based web client, 12 BTC is already paid in bounties.
However, we want mobile and/or thin desktop clients too. Particularly, we consider Electrum, MultiBit and a wallet for Android. (However, only one or two will be implemented.)

543  Bitcoin / Project Development / Re: BTC400 pledged to develop USD/BTC rate prediction market on: March 20, 2013, 08:30:44 PM
Something like using smart contracts (https://en.bitcoin.it/wiki/Contracts) might be a really interesting way of doing business, on the other hand it might be too much for the average user. Also it might likely require a specialized client.
On the other hand this offers a good chance to build a better brand, if you have to load your "trading wallet" first. The upside for you and the users would be that you actually never have to keep bitcoins that aren't in use and users always have control over their keys.

Perhaps the easiest way to do it is blockchain.info-style web wallet provided by service... It doesn't make it any more complex for users, basically for them it looks like a page which shows how much money they have on account and which allows deposits/withdrawals. But it won't allow service to run away with the money.

Arbitrage between futures price and spot price is basically free money, but it isn't really risk-free when you use a third-party service. I think that's why futures prices on icbit.se differ so much from spot prices. Use of escrow removes a decent amount of risk. (Well, depending on how it is implemented... Quite likely it won't be perfect...) So this can encourage arbitrages to trade more, which is a good thing.
544  Alternate cryptocurrencies / Altcoin Discussion / Re: Use Devcoin Client or Devda Web Wallet for Receiving Generation Devcoins on: March 20, 2013, 06:37:47 PM
As far as I know, it is still the case that vircurex and cryptostock wallets can not receive devcoin bounties.

They definitely ask NOT to use their deposit addresses for mining.

I don't quite get why... Perhaps it is because mined coins need 120 blocks to mature and their software cannot handle that for some reason.
545  Bitcoin / Project Development / Re: BTC400 pledged to develop USD/BTC rate prediction market on: March 20, 2013, 05:40:26 PM
Have you thought about using an "escrow"?

Please check this: http://www.reddit.com/r/Bitcoin/comments/1a6ewu/ive_been_waiting_for_a_usable_blockchain_escrow/c8ui49g

And this: https://bitcointalk.org/index.php?topic=141536.msg1507614#msg1507614
546  Bitcoin / Project Development / Re: [BOUNTY] 200 BTC for lightweight colored coin client(s) on: March 20, 2013, 04:09:22 PM
Ah, I wasn't aware of this.

There are several other implementations. Particularly, bitcoinjs-server is a full, verifying Bitcoin node, so it obviously has all the necessary cryptography... I'm not sure whether it is possible to port it to browser env, though.

If you do this, then wouldn't it be simpler not to do backwards scan in the client at all? Instead, the client provides the server with the definition and the output he wants to test, the server then does a forward or backward scan and determines whether the output is colored, constructing a proof as it goes. Then it sends the proof to the client. Maybe this was your idea all along?

Yes, this was the original plan (more-or-less), and people started implementing it back in November 2012... But the only result is bitcoin-tx-spent-db, which is far from a complete coloring server.

So I thought it's better to start with something simpler and started investigating the possibility of doing coloring on client side, as it is fairly hard to do it on server-side.

The priority is to get something demonstrable. Security and performance are secondary targets for now.

547  Bitcoin / Project Development / Re: [BOUNTY] 200 BTC for lightweight colored coin client(s) on: March 20, 2013, 03:55:43 PM
seems simple enough, but just so that i'm clear, would that mean that bfs would go forward (oldest -> recent)?

No, choice of traversal order is orthogonal to choice of traversal direction.

In context of coloring, the difference between DFS and BFS is in how fast they detect uncolored outputs. There is no performance difference for colored outputs, they need to go through all transactions in history anyway.

DFS can detect uncolored outputs faster, basically it just goes to nearest coinbase transaction, which is by definition uncolored.

this may come from being a bitcoin n00b, but i'm 100% in favor of spv over full node. i just can't see how having the full blockchain is practical for "most" users and given the amount of complaining about latent SD "dust spam", i don't think it should be. my belief is that "most" users should find node(s) that they TRUST

When implemented properly SPV requires no trust. If it requires trust, it isn't SPV. See here: https://en.bitcoin.it/wiki/Thin_Client_Security

(like they would a traditional bank) and simply run a thin-client. given the strength of cloud-computing, SAAS and the like, heavy "client-side" processing (especially in the browser -- which is where i like to live)

We can use servers, but we don't need to trust them.

that's the problem i would have. i'm looking to distribute shares in batches (maybe 20+ over time). "genesis" would force everyone to update their definitions after each batch.  "issuing address" would mean that i can even have private offerings and everyone would still be able to easily track the outstanding distribution.

You can issue maximum authorized number of shares via single genesis, but park them on issuer's address and distribute as needed.

This way accounting is same as with "issuing address": number of outstanding shares = number of issued shares - number of shares held on issuer's address.

However, it is just easier to track shares back to one genesis transaction output... Also it limits maximal number of shares.

I think "issuing address" makes sense only if you absolutely cannot issue shares in one batch. For example, if shares have large "metal value" so issuing them costs money.

what do you mean by exotic transactions? unfortunately, my creative thinking seems stalled.

The usual Bitcoin output script (https://en.bitcoin.it/wiki/Script) pays to a single address.
But there are many other possibilities. Say, m-of-n multi-signature scripts. (They are standard now.)

Also, contracts: https://en.bitcoin.it/wiki/Contracts

When you have something other than simplest transaction you cannot associate a single address with it.

could you please elaborate on HOW you could provide that proof? (i'm guessing it has something to do with merkle trees???)

Yes, Merkle trees... Basically you send a bunch of hashes to prove that transaction is linked to a block. But the whole scheme is rather contrived.

this way, the burden then rests squarely on the server's implementation and capabilities.  i have this idea in my head that it would be ideal to have at least enough ram to hold the FULL blockchain. bitcoinjs is currently around 13GB (with my mods almost 20GB). so does a 32GB nodejs/event-driven server seem practical? too much? possibly not enough? (obviously load-balancing could also be used)

Yes, it is definitely doable, but blockchain will grow in future, so it isn't clear how it can work in future.

548  Bitcoin / Project Development / Re: [BOUNTY] 200 BTC for lightweight colored coin client(s) on: March 20, 2013, 02:11:12 PM

This is an updated version of code: https://github.com/bitcoinx/colored-coin-tools/blob/master/color.js
compute_colors() are much easier to follow in this version because validation was moved to separate functions.

i'll take some time to work through the code, however, just a quick question .. why is "mixed" a drop-down option? how can you have a "single" mixed input (wouldn't those colors have be destroyed)?

Yes, 'mixed' is same as uncolored, implementation in ArmoryX does not distinguish between mixed and uncolored. So just forget about them Smiley
549  Alternate cryptocurrencies / Altcoin Discussion / Re: Logo and Banner on: March 20, 2013, 09:13:01 AM
1 pixel white png image is a banner?

It looks like there is a problem with the site, it definitely was a banner.
550  Bitcoin / Project Development / Re: [BOUNTY] 200 BTC for lightweight colored coin client(s) on: March 20, 2013, 12:08:21 AM
This is a monster of a task - it equates to implementing most of the functionality of an SPV node in the browser.

Yes, that's the only way to make it secure.

The crypto is intimately tied to the binary representation of the transaction data, so you need to implement full parsing of the raw transaction and block header structures.

Well, all JS wallet implementations can do that... Kind of...

For example, Brainwallet can give you a signed raw transaction ( http://brainwallet.org/#tx ), and it is very simple.

So I don't think it is monstrous at all... Just glue some pieces together.

Also, without having the blockchain headers in the browser (say in local storage) and verifying them, the cryptographic proof is meaningless  - you don't have verification of the block header that the transactions are linked to.

Not quite... We can estimate how hard it is to make a fake block from this block alone. If we have some reasonable estimation of current difficulty, we can estimate opportunity cost of attack.

Note that one needs to mine a fake block after transaction was submitted... You cannot pre-mine some fake blocks and insert transactions there, it would change Merkle root.

So, all in all, if you know current difficulty, you can estimate that faking one block costs about 50 BTC.

So you additionally need to have a way for the server to provide a full header chain download and verification code in the browser.

I don't think it is a problem: server can collect all information needed by client in one blob. Client will then parse this blob to get block headers, Merkle branches, transactions etc. Size of this blob? Maybe a couple of megabytes... It isn't big by internet standards.

Anyway, I think if this is your plan, I can do this (assuming I have the time), but it's a lot of work, so can you break it down and assign individual bounties.

Yeah, I think we will leave juicy crypto parts for later Smiley
551  Bitcoin / Project Development / Re: [BOUNTY] 200 BTC for lightweight colored coin client(s) on: March 19, 2013, 11:39:20 PM
ok, i see. i don't know that much about dfs, but from what i've read it doesn't seem possible on a key-value db like leveldb

DFS is just a specific form of backward scan, i.e we go back in history.

color.js works perfect ... but ... it does a recursive query using http. to me that seems a bit ... insane. at the very least sockets would seem more efficient.

Well... We'll optimize it later Smiley The thing is that performance should be acceptable as long as coin's history is small.

but why not just do all the recursion work on the server-side?

Well, that creates far more problems than it solves.

One thing is that it is a fundamentally flawed model w.r.t. security: client cannot and shouldn't trust server to do coloring properly, it should check on its own.

Another thing is that opens server to DoS attacks because this scan can be very computationally expensive.

It makes sense to do recursion on server to send all the data in one batch, but it's just a performance optimization and it isn't a priority right now. We can do it later.

(is that the eventual goal?? -- plug the color.js module into bitcoinjs -- sorry if i missed this somewhere .. suffering from information overload)

I think if we do coloring on server, we should use database and whatnot.

also, i'm confused, because i'm pretty sure the color definitions are based on addressHash160. but your code seems to key on specific transactions. i assumed you would query back to each address' "first appearance" as the origin.

There are two models: "genesis" and "issuing address". "Genesis" is simpler, easier and more secure.

I'm not even sure we should do "issuing address", but the reference implementation, ArmoryX, does both.

mainly because then you can easily distribute more coins of the same color (how can this be done with tx origins?)

Yes, "issuing address" allows one to create more coins... Which is both a good and a bad thing.

In genesis model, it is possible to issue more coins by adding more genesis tx outputs, duh. However that would require color definition update protocol, which isn't implemented/standardized yet.

Quote
my biggest problem right now is multiple-color txs (using ordered ins and outs).  i'm sure i just need more time & understanding working with the bitcoin protocol (so this will come eventually).

Have you seen this: http://killerstorm.xen.prgmr.com/alex/color.html
It is a demo from colored-coin-tools.

i'm really-Really-REALLY hoping to be able to publish something within the next 2 weeks. i've been testing my current implementation with friends & family for about a week now ... so far so good Smiley

Thanks, that would be cool!
552  Bitcoin / Project Development / Re: [BOUNTY] 200 BTC for lightweight colored coin client(s) on: March 19, 2013, 07:30:19 PM
So that was a general plan (which might change). As for immediate target, I'm going to make sure that DFS coloring is indeed usable, and to look into how to integrate coloring into block explorer, brainwallet, bitcoinjs-gui etc.

If somebody wants to into it instead of me, that would be cool. :-)

Here is coloring code: https://github.com/Zeilap/colors/blob/master/color.js

You can just run test via node:
Code:
node color.js

Basically these things (block explorer, brainwallet, bitcoinjs-gui) can just call getColor function:

Code:
function getColor(txHash, outputIdx, callback) 

whenever for transaction outputs they see. Perhaps we'll modify this API later, but for now it's OK.

E.g. block explorer will just show color, other things can use it to filter outputs etc.
553  Bitcoin / Project Development / Re: [BOUNTY] 200 BTC for lightweight colored coin client(s) on: March 19, 2013, 07:16:47 PM
   (This is what I'm doing now, but there is a problem with dtocoinbase db, so I cannot proceed.)

what is "dtocoinbase db"?
what problem are you having?

DFS-based coloring will used distance-to-coinbase db built on server to make sure that scanning uncolored outputs does not take too much time. It's just not ready, requires a bit more work.
554  Bitcoin / Project Development / Re: ICBIT Derivatives Market (USD/BTC futures trading) - LIVE on: March 19, 2013, 04:06:01 PM
What's the rejection status stated? It should allow such orders, of course, I tested this scenario numerous of times.

It works now. Perhaps I just forgot about orders I already had...
555  Bitcoin / Project Development / Re: [BOUNTY] 200 BTC for lightweight colored coin client(s) on: March 19, 2013, 01:45:22 PM
Further development of web client:

Here is a preliminary list of tasks. It is preliminary because it lacks some details and might change a bit. (I'm going to test things a bit before finalizing it.)
So it is not actionable, but it gives you an idea, and whoever wants to work on these things can already 'book' a spot.

Improvements on server side:
1. Merge bitcoinjs-color, bitcoin-tx-spent-db and, later, node-bitcoin-exit. There is no reason to have them separate, I think.
2. tx data access API (called bitcoinjs-color) needs to be updated:
    * JSON API needs to return values correctly is satoshi, not in floating point values.
    * provide raw transaction data
    * provide cryptographic proof, i.e. Merkle branches which link transaction to block and block headers
    * support for batch queries
3. Make sure it continuously gets new data from blocks and can work with transactions in mempool.

Development on client side:
1. Coloring: Use distance-to-coinbase data to guide DFS to get optimal performance on uncolored outputs.)
    (This is what I'm doing now, but there is a problem with dtocoinbase db, so I cannot proceed.)
2. Make it so client verifies crypto stuff rather than simply trusts server
3. Hook coloring algo to front-ends:
    * block explorer
    * brainwallet
    * bitcoinjs-gui
4. Improve front-ends until they are usable

There is also an admin task: install all the crap on a powerful server, populate dbs etc.
Currently it runs on my VPS which is enough for testnet, but populating spent-db on mainnet will be really painful.

There is at least 50 BTC in bounties for this list of tasks.
556  Bitcoin / Project Development / Re: ICBIT Derivatives Market (USD/BTC futures trading) - LIVE on: March 19, 2013, 01:22:30 PM
and was assured that the "margin call" mechanism should prevent my account from going negative by closing the positions.

It doesn't. I currently have -0.05 BTC on account, and it was negative for a week or so.

As I have negative initial margin it doesn't allow me to send orders which would close my position.

So to close it I'll have to deposit some money.
557  Bitcoin / Project Development / Re: ICBIT Derivatives Market (USD/BTC futures trading) - LIVE on: March 19, 2013, 09:10:40 AM
Suppose I have negative amount of money on account on ICBIT.se...

Should I feel morally obligated to settle this debt, or can I just walk away from it?

What are possible consequences?

Can exchange operators go after people who owe to ICBIT.se and label them as scammers on forum, for example?

What's more worrying is that my position is still open while I have negative amount... So I'm getting more and more debt as Bitcoin goes up. But I can also get back into profit if exchange rate plummets =)



558  Bitcoin / Development & Technical Discussion / Re: UTXO set size does not increase storage costs, you just suck at computer science on: March 18, 2013, 05:15:31 PM
Which branch of computer science postulates that? Transactions arrive nearly randomly during the inter-block period, so the mean time available to verify transaction is about 5 minutes.

What is going on here with this "in-RAM database requirement"?

DoS attack: somebody sends you lots of fake transactions with non-existent inputs. To dismiss such transaction you need to confirm that input is indeed non-existent, and it requires one or more read operations.

If you store UTXO set on hard disk drives, it would be pretty much trivial to DoS attack you because one HDD can do something like 100 random reads per second.

This is why people think that there should be a limit on UTXO set. For example, via introduction of minimal viable transaction output value. (Say, if TXO value is 1 satoshi it might be seen as spam.)

Please understand me correctly, this is just what I saw in discussions here, it appears to be a prevalent opinion.

Of course, it is possible to design system in such a way that UTXO set size won't be a problem and won't affect costs, this is what I'm talking about here...
559  Alternate cryptocurrencies / Altcoin Discussion / Re: colored coins on Terracoin on: March 17, 2013, 08:02:13 PM
How much do you think we would need to pay someone to update Armoryx?

5 BTC is a typical bounty we give (at current exchange rate). I'm not sure how much effort is required. Also we can pay more for bigger overhaul and further development.
560  Bitcoin / Development & Technical Discussion / Re: UTXO set size does not increase storage costs, you just suck at computer science on: March 17, 2013, 05:13:20 PM
What you're describing is SPV UTXO security, and it's also been brought up many times before. Perhaps you should save for allegations of unimagniativeness for ideas that area actually original. Tongue

Again, the main topic of my post was bandwidth-storage trade-off which is independent of security model you use. Actually I've outlined very conservative approach which changes nothing about security model, i.e. you still scan whole blockchain, you just don't store UTXO set locally.

But, of course, it's also possible to use UTXO set referenced by blocks instead of computing your own.

I'm not sure that "SPV UTXO security" is the right term because what I'm talking about is applicable to miners, but SPV is used in context of client systems, no?

SPV UTXO security means that the reward for someone who can produce N blocks isn't just reversing the transactions they can make and replacing them, it's on the order of the value of the whole bitcoin economy, past and into the future.


This attack is possible right now, N equals current blockchain height.

What changes if we make N less than current blockchain height?

They could steal anyones coin,

Same thing happens if you mine starting from genesis.

If you do history-rewriting attack of a limited depth you can steal coins of some people.

they could freely inflate the supply, etc.

No, it is possible to verify supply having only UTXO set.

You have the Bitcoin security model wrong:

I think you get it wrong: history-rewriting attack is fundamentally not different from UTXO manipulation attack in terms of severity.

If you have enough computational power and checkpointing is not a problem, you can do either of attacks, with same consequences.

If you don't have enough computational power, you can't do either of attacks. If centralized checkpoints are present in clients, you can't do either of attacks.
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!