Search content
Sort by

Showing 20 of 529 results by satoshi
Post
Topic
Board Development & Technical Discussion
Merits 634 from 79 users
Added some DoS limits, removed safe mode (0.3.19)
by
satoshi
on 12/12/2010, 18:22:33 UTC
⭐ Merited by EFS (100) ,fillippone (55) ,bumbacoin (50) ,OgNasty (50) ,cloverme (50) ,krogothmanhattan (47) ,sukamasoto (30) ,notaek (25) ,yahoo62278 (25) ,mindrust (20) ,Welsh (20) ,ETFbitcoin (11) ,dragonvslinux (11) ,legendster (10) ,harrymmmm (10) ,aTriz (7) ,Mrpumperitis (5) ,minorman (5) ,Betwrong (5) ,TMAN (5) ,Lauda (5) ,Steeley (5) ,MicroGuy (5) ,Antibit (5) ,FrueGreads (4) ,finist4x (3) ,Danslip (3) ,Ryu_Ar1 (3) ,BrianCryptoo (3) ,cinnamon_carter (2) ,Yaunfitda (2) ,edgycorner (2) ,Anon136 (2) ,casperBGD (2) ,Bthd (2)
There's more work to do on DoS, but I'm doing a quick build of what I have so far in case it's needed, before venturing into more complex ideas.  The build for this is version 0.3.19.

- Added some DoS controls
As Gavin and I have said clearly before, the software is not at all resistant to DoS attack.  This is one improvement, but there are still more ways to attack than I can count.  

I'm leaving the -limitfreerelay part as a switch for now and it's there if you need it.

- Removed "safe mode" alerts
"safe mode" alerts was a temporary measure after the 0.3.9 overflow bug.  We can say all we want that users can just run with "-disablesafemode", but it's better just not to have it for the sake of appearances.  It was never intended as a long term feature.  Safe mode can still be triggered by seeing a longer (greater total PoW) invalid block chain.

Builds:
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.19/
Post
Topic
Board Bitcoin Discussion
Merits 367 from 27 users
Re: PC World Article on Bitcoin
by
satoshi
on 11/12/2010, 23:39:16 UTC
⭐ Merited by EFS (100) ,BlackHatCoiner (51) ,OgNasty (50) ,fillippone (50) ,icey (25) ,vapourminer (25) ,mindrust (20) ,jojo69 (10) ,TheArchaeologist (10) ,o_solo_miner (6) ,Bitman86 (4) ,roslinpl (1) ,dawoodkhan97 (1) ,ETFbitcoin (1) ,frankenmint (1) ,johhnyUA (1) ,xtraelv (1) ,taserz (1) ,Husna QA (1) ,Jumperman4 (1) ,Eddyc (1) ,klarki (1) ,JayJuanGee (1) ,Ahli38 (1) ,goldkingcoiner (1) ,LighningCashDev (1) ,Bthd (1)
It would have been nice to get this attention in any other context.  WikiLeaks has kicked the hornet's nest, and the swarm is headed towards us.
Post
Topic
Board Development & Technical Discussion
Merits 108 from 5 users
Re: minimalistic bitcoin client on D language?
by
satoshi
on 11/12/2010, 22:07:04 UTC
⭐ Merited by OgNasty (50) ,EFS (50) ,fillippone (5) ,SwayStar123 (2) ,MagicByt3 (1)
I'd like to hear some specific criticisms of the code. To me it looks like an impressive job, although I'd wish for more comments. Now I've mostly studied the init, main, script and a bit of net modules. This is some powerful machinery.
That means a lot coming from you, Hal.  Thanks.
Post
Topic
Board Development & Technical Discussion
Merits 8 from 4 users
Re: Bitcoin and buffer overflow attacks
by
satoshi
on 11/12/2010, 13:32:37 UTC
⭐ Merited by EFS (4) ,ETFbitcoin (2) ,Phobosator32 (1) ,jjjfff (1)
direct to IP address transfers seems like a obvious surface area to attack.
If you ever find anyone who turned it on.  It's disabled by default.

There is no way to be absolutely sure that there are no buffer overflow attacks. Although it would help to implement the client in a language that doesn't have buffer overflows because it checks array indices (Python, Java, C#, ...).
It's all STL.  There are almost no buffers.
Post
Topic
Board Bitcoin Discussion
Merits 154 from 4 users
Re: BitDNS and Generalizing Bitcoin
by
satoshi
on 11/12/2010, 13:08:30 UTC
⭐ Merited by EFS (100) ,OgNasty (50) ,ABCbits (3) ,ETFbitcoin (1)
@dtvan: all 3 excellent points.
1) IP records don't need to be in the chain, just do registrar function not DNS.  And CA problem solved, neat.
2) Pick one TLD, .web +1.
3) Expiration and significant renewal costs, very important.

However, thinking more about this now I support inclusion of additional coinbases / tracking systems in the main network. The reason for doing this is so as not to water down CPU power into multiple networks. We want one strong network, so the network should be versatile.
Avoiding CPU power fragmentation is no longer a reason.  Independent networks/chains can share CPU power without sharing much else.  See: http://bitcointalk.org/index.php?topic=1790.msg28696#msg28696 and http://bitcointalk.org/index.php?topic=1790.msg28715#msg28715
Post
Topic
Board Bitcoin Discussion
Re: BitDNS and Generalizing Bitcoin
by
satoshi
on 10/12/2010, 20:19:39 UTC
I agree.  All transactions, IP changes, renewals, etc. should have some fee that goes to the miners.

You might consider a certain amount of work to generate a domain, instead of a fixed total circulation.  The work per domain could be on a schedule that grows with Moore's Law.  That way the number of domains would grow with demand and the number of people using it.
Post
Topic
Board Bitcoin Discussion
Merits 153 from 4 users
Re: BitDNS and Generalizing Bitcoin
by
satoshi
on 10/12/2010, 19:55:12 UTC
⭐ Merited by EFS (100) ,OgNasty (50) ,ETFbitcoin (2) ,Aveatrex (1)
additional block chains would each create their own flavor of coins, which would trade with bitcoins on exchanges? These chain-specific coins would be used to reward miners on those chains, and to purchase some kinds of rights or privileges within the domain of that chain?
Right, the exchange rate between domains and bitcoins would float.

A longer interval than 10 minutes would be appropriate for BitDNS.

So far in this discussion there's already a lot of housekeeping data required.  It will be much easier if you can freely use all the space you need without worrying about paying fees for expensive space in Bitcoin's chain.  Some transactions:

Changing the IP record.

Name change.  A domain object could entitle you to one domain, and you could change it at will to any name that isn't taken.  This would encourage users to free up names they don't want anymore.  Generated domains start out blank and the miner sells it to someone who changes it to what they want.  

Renewal.  Could be free, or maybe require consuming another domain object to renew.  In that case, domain objects (domaincoins?) could represent the right to own a domain for a year.  The spent fee goes to the miners in the next block fee.
Post
Topic
Board Development & Technical Discussion
Merits 4 from 4 users
Accounts example code
by
satoshi
on 10/12/2010, 19:21:03 UTC
⭐ Merited by roslinpl (1) ,ETFbitcoin (1) ,Zilon (1) ,goldkingcoiner (1)
Some sample pseudocode using the new Accounts based commands in 0.3.18.

print "send to " + getaccountaddress(username) + " to fund your account"
print "balance: " + getbalance(username, 0)
print "available balance: " + getbalance(username, 6)

// if you make a sale, move the money from their account to your "" account
if (move(username, "", amount, 6, "purchased item"))
    SendTheGoods()

// withdrawal
sendfrom(username, bitcoinaddress, amount, 6, "withdrawal by user")

You can use listtransactions(username) to show them a list of their recent transactions.
Post
Topic
Board Bitcoin Discussion
Merits 334 from 13 users
Re: BitDNS and Generalizing Bitcoin
by
satoshi
on 10/12/2010, 17:29:28 UTC
⭐ Merited by garlonicon (100) ,EFS (100) ,ETFbitcoin (59) ,OgNasty (50) ,pooya87 (10) ,vapourminer (5) ,BlackHatCoiner (4) ,BitcoinFX (1) ,darosior (1) ,MagicByt3 (1) ,DdmrDdmr (1) ,vjudeu (1) ,Vispilio (1)
Piling every proof-of-work quorum system in the world into one dataset doesn't scale.

Bitcoin and BitDNS can be used separately.  Users shouldn't have to download all of both to use one or the other.  BitDNS users may not want to download everything the next several unrelated networks decide to pile in either.

The networks need to have separate fates.  BitDNS users might be completely liberal about adding any large data features since relatively few domain registrars are needed, while Bitcoin users might get increasingly tyrannical about limiting the size of the chain so it's easy for lots of users and small devices.

Fears about securely buying domains with Bitcoins are a red herring.  It's easy to trade Bitcoins for other non-repudiable commodities.

If you're still worried about it, it's cryptographically possible to make a risk free trade.  The two parties would set up transactions on both sides such that when they both sign the transactions, the second signer's signature triggers the release of both.  The second signer can't release one without releasing the other.
Post
Topic
Board Development & Technical Discussion
Merits 56 from 7 users
Re: Fees in BitDNS confusion
by
satoshi
on 09/12/2010, 23:58:54 UTC
⭐ Merited by EFS (50) ,ETFbitcoin (1) ,vapourminer (1) ,fillippone (1) ,Krubster (1) ,cr1776 (1) ,DdmrDdmr (1)
Not locktime.

There's a possible design for far in the future:

You intentionally write a double-spend.  You write it with the same inputs and outputs, but this time with a fee.  When your double-spend gets into a block, the first spend becomes invalid.  The payee does not really notice, because at the moment the new transaction becomes valid, the old one becomes invalid, and the new transaction simply takes its place.

It's easier said than implemented.  There would be a fair amount of work to make a client that correctly writes the double-spend, manages the two versions in the wallet until one is chosen, handles all the corner cases.  Every assumption in the existing code is that you're not trying to write double-spends.

There would need to be some changes on the Bitcoin Miner side also, to make the possibility to accept a double-spend into the transaction pool, but only strictly if the inputs and outputs match and the transaction fee is higher.  Currently, double-spends are never accepted into the transaction pool, so every node bears witness to which transaction it saw first by working to put it into a block.
Post
Topic
Board Bitcoin Discussion
Merits 207 from 7 users
Re: BitDNS and Generalizing Bitcoin
by
satoshi
on 09/12/2010, 22:46:50 UTC
⭐ Merited by garlonicon (100) ,EFS (100) ,realdantreccia (3) ,ImHash (1) ,vjudeu (1) ,stwenhao (1) ,vapourminer (1)
seems that the miner would have to basically do "extra work". and if there's no reward from the bitdns mining from the extra work (which of course, slows down the main bitcoin work), what would be a miner's incentive to include bitdns (and whatever other side chains) ?
The incentive is to get the rewards from the extra side chains also for the same work.

While you are generating bitcoins, why not also get free domain names for the same work?

If you currently generate 50 BTC per week, now you could get 50 BTC and some domain names too.

You have one piece of work.  If you solve it, it will solve a block from both Bitcoin and BitDNS.  In concept, they're tied together by a Merkle Tree.  To hand it in to Bitcoin, you break off the BitDNS branch, and to hand it in to BitDNS, you break off the Bitcoin branch.

In practice, to retrofit it for Bitcoin, the BitDNS side would have to have maybe ~200 extra bytes, but that's not a big deal.  You've been talking about 50 domains per block, which would dwarf that little 200 bytes per block for backward compatibility.  We could potentially schedule a far in future block when Bitcoin would upgrade to a modernised arrangement with the Merkle Tree on top, if we care enough about saving a few bytes.

Note that the chains are below this new Merkle Tree.  That is, each of Bitcoin and BitDNS have their own chain links inside their blocks.  This is inverted from the common timestamp server arrangement, where the chain is on top and then the Merkle Tree, because that creates one common master chain.  This is two timestamp servers not sharing a chain.
Post
Topic
Board Bitcoin Discussion
Merits 114 from 8 users
Re: BitDNS and Generalizing Bitcoin
by
satoshi
on 09/12/2010, 21:02:42 UTC
⭐ Merited by garlonicon (100) ,o_e_l_e_o (4) ,realdantreccia (3) ,ETFbitcoin (3) ,Traxo (1) ,elianite (1) ,BitcoinFX (1) ,vapourminer (1)
I think it would be possible for BitDNS to be a completely separate network and separate block chain, yet share CPU power with Bitcoin.  The only overlap is to make it so miners can search for proof-of-work for both networks simultaneously.

The networks wouldn't need any coordination.  Miners would subscribe to both networks in parallel.  They would scan SHA such that if they get a hit, they potentially solve both at once.  A solution may be for just one of the networks if one network has a lower difficulty.

I think an external miner could call getwork on both programs and combine the work.  Maybe call Bitcoin, get work from it, hand it to BitDNS getwork to combine into a combined work.

Instead of fragmentation, networks share and augment each other's total CPU power.  This would solve the problem that if there are multiple networks, they are a danger to each other if the available CPU power gangs up on one.  Instead, all networks in the world would share combined CPU power, increasing the total strength.  It would make it easier for small networks to get started by tapping into a ready base of miners.
Post
Topic
Board Development & Technical Discussion
Re: Automated nightly builds
by
satoshi
on 09/12/2010, 18:28:45 UTC
Thanks for setting this up Cdecker. 

Is there any chance of getting it to build the GUI version also?  If this is Ubuntu, if you get wxWidgets 2.9.0 it should just be a matter of following the steps in build-unix.txt exactly.  Is this an environment where you can build wxWidgets once and leave it there and just keep using it?
Post
Topic
Board Development & Technical Discussion
Re: JSON-RPC method idea: list transactions newer than a given txid
by
satoshi
on 09/12/2010, 18:08:08 UTC
I agree with you and satoshi about "txs after ".  My listtransactions (now xlisttransactions) patch pointedly does not have that feature, and never has.
As long as the interface is designed for things like showing the user the last N transactions history, it's fine, now that we have the Accounts feature making it easier to do payment detection the right way.

Gavin, could listtransactions have an option to list transactions for all accounts?

I'm not sure what the interface could be, maybe:
listtransactions [count]

It would be hard to do that from the command line though.

I can't think of a good solution for the interface, that's the problem.  Maybe "*" special case like "" is.  Everyone would have to make sure no user can create account name "*".

Sure, and that's easy enough to track with transactions.
I don't get how that's "easy" to track with transactions.
Post
Topic
Board Development & Technical Discussion
Merits 1 from 1 user
Re: Version 0.3.18
by
satoshi
on 09/12/2010, 15:17:53 UTC
⭐ Merited by vjudeu (1)
I came to agree with Gavin about whitelisting when I realized how quickly new transaction types can be added.

why not make it easier on everyone and just allow say, 64 or 128 bytes of random data in a transaction?
That's already possible.  <pubkey> OP_CHECKSIG.  <pubkey> can be 33 to 120 bytes.

I also support a third transaction type for timestamp hash sized arbitrary data.  There's no point not having one since you can already do it anyway.  It would tell nodes they don't need to bother to index it.
Post
Topic
Board Development & Technical Discussion
Re: JSON-RPC method idea: list transactions newer than a given txid
by
satoshi
on 09/12/2010, 00:12:17 UTC
I'm not talking about the normal risk for a given minconf level, I'm talking about additional pitfalls from listtransactions when used this way.

2) When there's a block-chain reorg, it would be easy to double-count transactions when they get confirmed again.
The OP's example of listtransactions [count=10] [txid] seems to imply and it would be very easy for programmers to assume that if they pass in the last txid of the previous call to listtransactions, they will never see the same transaction more than once, which is not the case.  It would be very easy to double-count payments if you don't maintain your own persistent map or dictionary to track which txid's you've already accepted.

It doesn't seem right to have a function that seems tailor made to be used a certain obvious way, and that way is a non-obvious trap.

3) A transaction can be replaced by a double-spend with a different txid.  You would count both spends.
listtransactions does not add anything to this problem, beyond that which is already vulnerable through listreceivedbyaddress.
Suppose both spends are to the same address.  getreceivedbyaddress would always count only one or the other spend at any given time, never both.

Using listtransactions, it would be very easy to count both.  You see the first spend, you count it.  You see the second spend, you count it.  Total is double counted.
Post
Topic
Board Development & Technical Discussion
Merits 2 from 2 users
Version 0.3.18
by
satoshi
on 08/12/2010, 23:19:24 UTC
⭐ Merited by goldkingcoiner (1) ,vjudeu (1)
Changes:
- Fixed a wallet.dat compatibility problem if you downgraded from 0.3.17 and then upgraded again
- IsStandard() check to only include known transaction types in blocks
- Jgarzik's optimisation to speed up the initial block download a little

The main addition in this release is the Accounts-Based JSON-RPC commands that Gavin's been working on (more details at http://bitcointalk.org/index.php?topic=1886.0).  
- getaccountaddress
- sendfrom
- move
- getbalance
- listtransactions

Download:
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.18/
Post
Topic
Board Development & Technical Discussion
Re: JSON-RPC method idea: list transactions newer than a given txid
by
satoshi
on 08/12/2010, 22:36:45 UTC
Then how do you cope with the issues I listed in the message you quoted?
Post
Topic
Board Development & Technical Discussion
Merits 5 from 2 users
Re: JSON-RPC method idea: list transactions newer than a given txid
by
satoshi
on 08/12/2010, 20:21:49 UTC
⭐ Merited by ETFbitcoin (3) ,Husna QA (2)
It's not safe to use listtransactions this way.

I know I've been criticized for being reluctant about listtransactions.  Let me explain my reluctance.

Transactions are dynamic.  Past transactions can become unconfirmed, go away and come back, become invalid and disappear, or be replaced by a different double-spend.  Their date can change, their order can change.

Programmers are naturally inclined to want to use listtransactions like this: feed me the new transactions since I last asked, and I'll keep my own tally or static record of them.  This will seem to work in all regular use, but if you use the amounts for anything, it is highly exploitable:
1) How do you know if a past transaction becomes invalid and disappears?
2) When there's a block-chain reorg, it would be easy to double-count transactions when they get confirmed again.
3) A transaction can be replaced by a double-spend with a different txid.  You would count both spends.

The model where you assume you only need to see new transactions because you've already seen previous transactions is not true.  Old transactions can change at any time.

Any time you take an action based on payment amounts received, you always need to go back to bitcoin and ask for a current balance total (or use move or sendfrom), and be ready for the possibility that it can go down.

Now that we have the Accounts feature making it easier to do it the right way, we're better prepared to have listtransactions.
Post
Topic
Board Project Development
Merits 16 from 4 users
Re: Wikileaks contact info?
by
satoshi
on 05/12/2010, 09:08:08 UTC
⭐ Merited by paxmao (10) ,nutildah (3) ,ABCbits (2) ,elianite (1)
Basically, bring it on.  Let's encourage Wikileaks to use Bitcoins and I'm willing to face any risk or fallout from that act.
No, don't "bring it on".

The project needs to grow gradually so the software can be strengthened along the way.

I make this appeal to WikiLeaks not to try to use Bitcoin.  Bitcoin is a small beta community in its infancy.  You would not stand to get more than pocket change, and the heat you would bring would likely destroy us at this stage.