Bitcoin Forum
May 11, 2024, 01:10:54 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 »  All
  Print  
Author Topic: ANN: Announcing code availability of the bitsofproof supernode  (Read 35112 times)
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 02, 2012, 06:36:43 PM
 #21

Does it run on the testnet blockchain?
Only the bare minimum of testing is done until now, using the entire production chain and a few test cases.

It would be irresponsible to ship it with an installer ready to use by an end user, this is why I do not package,
but it is good enough convince developer to commit time to improve.

I promise to focus on testing and hardening from now on and as I said in a private e-mail will add some sort of peer testing feature.
1715433054
Hero Member
*
Offline Offline

Posts: 1715433054

View Profile Personal Message (Offline)

Ignore
1715433054
Reply with quote  #2

1715433054
Report to moderator
Once a transaction has 6 confirmations, it is extremely unlikely that an attacker without at least 50% of the network's computation power would be able to reverse it.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715433054
Hero Member
*
Offline Offline

Posts: 1715433054

View Profile Personal Message (Offline)

Ignore
1715433054
Reply with quote  #2

1715433054
Report to moderator
Sergio_Demian_Lerner
Hero Member
*****
expert
Offline Offline

Activity: 552
Merit: 629


View Profile WWW
November 04, 2012, 03:16:38 AM
Last edit: November 04, 2012, 03:39:47 AM by Sergio_Demian_Lerner
 #22

Grau, I've updated the https://en.bitcoin.it/wiki/Weaknesses wiki to reflect current Satoshi client protections against DoS.

Be sure you include at least the most important ones in bitsofproof supernode before it goes to production.

These are the current Bitcoin Satoshi client protections to deter DoS attacks, as of version 0.7.0:

  •    Does not forward orphan transactions/blocks
  •    Does not forward double-spend transactions
  •    Restrict the maximum number of signature checks a transaction input may request
  •    Continuous rate-limit of free transactions to mitigate 'penny-flooding'
  •    Keeping a DoS score of each connected peer and disconnects from a peer that send messages that fail to comply with the rules.
  •    Permanently ban IP addresses that misbehave for a time lapse (24 hours default)
  •    Limit the number of stored orphan transactions (10000 by default)
  •     Use a signature cache to prevent attacks that try to continuously trigger the re-verification of stored orphan transactions
  •    Limit the number of stored signature in the signature cache (50000 signatures by default)
  •    Tries to catch errors in transactions before the time consuming signature verifications.
  •    Penalize peers that send us lots of duplicate/expired/invalid-signature/whatever alerts, so they eventually get banned.
  •    In orphan/signature caches: when removing an item, evict a random entry.
  •    Data structures are specially chosen to avoid loops in which the number of iterations can be controller by an attacker that result in exponential complexity.
  •    Ignore big orphan transactions, to avoid a send-big-orphans memory exhaustion attack.
  •    In RPC: Only send a HTTP 403 response if it's not using SSL to prevent a DoS during the SSL handshake.
  •    In RPC: Sleep some time if authorization fails to deter brute-forcing short passwords.
  •    In GUI: Limit URI length to prevent a DoS against the QR-Code dialog

Best regards, Sergio.
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 04, 2012, 05:24:25 PM
Last edit: November 04, 2012, 06:04:03 PM by grau
 #23

Be sure you include at least the most important ones in bitsofproof supernode before it goes to production.

Thanks Sergio, I will definitely verify against the list.

Does it run on the testnet blockchain?
Testing against testnet3 is in good progress.

grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 06, 2012, 09:39:02 PM
 #24

Does it run on the testnet blockchain?

I proudly announce that the bitsofproof supernode just validated all testnet3 transactions.

That means it now supports all sorts of sigs and scripts.

For those skeptical of the normalized database: The node running on my laptop validated and stored the 6200+ transactions block on the test chain within a few minutes. My server reloads the entire production chain in a couple of hours.
Sergio_Demian_Lerner
Hero Member
*****
expert
Offline Offline

Activity: 552
Merit: 629


View Profile WWW
November 12, 2012, 07:53:47 PM
 #25

Minor (unconfirmed) DoS Security vulnerability: the "unconfirmed" table is implemented over a HashMap whose key is the hash of the transaction (as a string).

I'm unsure reading your code if the attacker can submit two unconfirmed transactions that spend the same inputs, but in that case it would be easy for an attacker to flood the unconfirmed HashMap with entries that map to the same hash bucket, degenerating to linear access complexity.

It would be better to switch to a TreeMap data structure.




grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 12, 2012, 08:27:38 PM
 #26

Hello Sergio,

great to see that you took a closer look.

I think that attack however would not work, as the attacker would have to create several otherwise valid spends with different hashes, since transaction validity is checked (and throws ValidationException exception if not) before caching the transaction.

Code:
			public Boolean doInTransaction (TransactionStatus status)
{
status.setRollbackOnly ();
try
{
store.validateTransaction (txm.getTx ());
cacheTransaction (txm.getTx ());
return true;
}
catch ( ValidationException e )
{
log.trace ("Rejeting transaction " + txm.getTx ().getHash () + " from " + peer.getAddress (), e);
}
return false;
}


I am currently working on BCCAPI implementation (at about 90%), thereafter I would want to go through systematically with a DoS hat on taking your criteria list.

Let me know if you would want to do a walk through via e.g. Skype.
Luke-Jr
Legendary
*
expert
Offline Offline

Activity: 2576
Merit: 1186



View Profile
November 12, 2012, 08:29:57 PM
 #27

Is there plans to support BIP 23 Block Proposal? I could probably run a node on Eligius verifying its templates against bitsofproof with this Smiley

apetersson
Hero Member
*****
Offline Offline

Activity: 668
Merit: 501



View Profile
November 12, 2012, 08:36:18 PM
 #28

looks like an interesting piece of work and so far the code looks very clean.

i somehow agree that implementing a wallet internally does not make a lot of sense.

my question is, since this is called a "supernode" are there plans to run such a node on a clustered environment, such as with Akka?
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 12, 2012, 08:45:25 PM
 #29

Is there plans to support BIP 23 Block Proposal? I could probably run a node on Eligius verifying its templates against bitsofproof with this Smiley

Yes, I build this for the server, for enterprises and miner. Bribe or inspire me and you'll get BIP 23.
Luke-Jr
Legendary
*
expert
Offline Offline

Activity: 2576
Merit: 1186



View Profile
November 12, 2012, 08:49:26 PM
 #30

Is there plans to support BIP 23 Block Proposal? I could probably run a node on Eligius verifying its templates against bitsofproof with this Smiley
Yes, I build this for the server, for enterprises and miner. Bribe or inspire me and you'll get BIP 23.
Not enough "bribe" to get more real-world mining testing? Proposals wouldn't be for Eligius's benefit, but for your own: your code will be tested for checking numerous possible blocks every day, and any failures will be reported to you for analysis/bugfixing. After it's proven to be reasonably reliable, I'd even make Eligius refuse to produce blocks your code rejects as a security measure - this way someone can't get Eligius to mine a block attacking bitsofproof users Wink

grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 12, 2012, 08:57:40 PM
 #31

looks like an interesting piece of work and so far the code looks very clean.

i somehow agree that implementing a wallet internally does not make a lot of sense.

my question is, since this is called a "supernode" are there plans to run such a node on a clustered environment, such as with Akka?

Thanks, I believe code that deals with money should be clean. It helps, that I am writing code for trading since decades.

I call it supernode since it is for the big server of near future, not for the kids, not for the mobiles. If we want the world, we need server that digests hundreds of transactions per second and deals with terabytes. To get there we need modularity and yes at some point clusters.
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 12, 2012, 09:06:08 PM
 #32

Not enough "bribe" to get more real-world mining testing? Proposals wouldn't be for Eligius's benefit, but for your own: your code will be tested for checking numerous possible blocks every day, and any failures will be reported to you for analysis/bugfixing. After it's proven to be reasonably reliable, I'd even make Eligius refuse to produce blocks your code rejects as a security measure - this way someone can't get Eligius to mine a block attacking bitsofproof users Wink
What you attempt is inspiration and are doing a good job. Let me read the proposal, in the meanwhile you think a bit longer about bribing Smiley
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 13, 2012, 11:16:31 PM
 #33

Is there plans to support BIP 23 Block Proposal? I could probably run a node on Eligius verifying its templates against bitsofproof with this Smiley
Yes, I build this for the server, for enterprises and miner. Bribe or inspire me and you'll get BIP 23.
Not enough "bribe" to get more real-world mining testing? Proposals wouldn't be for Eligius's benefit, but for your own: your code will be tested for checking numerous possible blocks every day, and any failures will be reported to you for analysis/bugfixing. After it's proven to be reasonably reliable, I'd even make Eligius refuse to produce blocks your code rejects as a security measure - this way someone can't get Eligius to mine a block attacking bitsofproof users Wink

Mining (just for fun and precise understanding), and BIP23 his is next on my list.
xblitz
Newbie
*
Offline Offline

Activity: 32
Merit: 0



View Profile
November 14, 2012, 06:05:27 PM
 #34

great work grau! I like the way you code, and your attitude!  keep it up Smiley
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 14, 2012, 06:25:08 PM
 #35

great work grau! I like the way you code, and your attitude!  keep it up Smiley
thanks! That's too much to handle Smiley

I invest most of my free time into this since months; comments like yours help to keep going.
It would however be canting not to admit that I do eye a profit at the end.
Mike Hearn
Legendary
*
expert
Offline Offline

Activity: 1526
Merit: 1129


View Profile
November 15, 2012, 10:38:50 AM
 #36

How do you plan to make a profit? Consulting?
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 15, 2012, 02:12:54 PM
 #37

Consulting is an option.
I also have end user facing ideas I will build on this fundation.
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 16, 2012, 08:30:38 PM
 #38

BCCAPI support is now implemented, that is an interface to lightweight clients (originally invented for BitcoinSpinner)

BCCAPI makes it easy to retrieve balances or account history for a public key. Create and send transactions whereby the server does not store private key.

The implementation is not tested enough for production use, but works for unit tests, so developer might want to look at it.
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 17, 2012, 10:16:26 AM
 #39

New feature of the day: Collects and stores and uses peer statistics (version, agent, traffic, response time, ban reason... ) in the database.
grau (OP)
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1021


bits of proof


View Profile WWW
November 17, 2012, 10:06:08 PM
 #40

New feature of the day: Implemented pruning of the chain to unspent output.

The pruning is on a logical level, add option -p <hash> to the startup and it will calculate and store the unspent txout upto that hash into a separate snapshot table.

The resolution of inputs uses the most resent snapshot plus what comes thereafter. You can delete the snapshots also, the since full data remains, it keeps working...
Pages: « 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!