Pages:
Author

Topic: ANN: Announcing code availability of the bitsofproof supernode - page 12. (Read 35169 times)

hero member
Activity: 836
Merit: 1030
bits of proof
I understand that you only spend time on a project if it is aligned with your goals, therefore let me give you my vision of it:

The vision is to create THE bitcoin implementation for the merchants and miner, similar to what apache is for the web.
You might think I suffer under delusion of grandeur, but hey, I would not sacrify my precious free time if it were for less.
Let me make the claim plausible by enumerating that the bitsofproof implementation already achieved:

- Complete implementation of the Bitcoin communication protocol with a high speed NIO IO that is able to deal with a large number of peers.
- Complete implementation of the Bitcoin script language, such that it verifies all sorts of sigs and multisigs on production and testnet3 chain
- Normalized store of the chain into a relational database that now allows auditing and arbitary querying of all transactions with the tool of your choice.
- Online calculation of unspent transaction output (UTXO aka. logical pruning)
- Multithreaded evaluation of transactions of a block and even inputs of the same transaction, that gives together with UTXO unparalelled processing power.
- Implementation of the BCCAPI that enables BitcoinSpinner compatible/like lightweight applications to retrieve balance and send transactions without server store of private keys.

I claim that the vast majority of implementation work is done, what remains on the roadmap is:

- Mining support
- Serious testing
- Packaging

I share the foundation with the community for our mutual benefit, thereafter I will focus on my own value added services and consulting.

Should you share the vision and would love to have a strong fundation for your business, then lets join efforts, show me your pull requests.

Let me also use the opportunity to THANK for the first donation onto the address below.
hero member
Activity: 836
Merit: 1030
bits of proof
I will mavenize the project in the course of serious testing soon.

The classes with Q at the begining are generated during the build, this is rather an indication that you were not using the build process as suggested.

Let me write on the vision of the projet in a next mail.
hero member
Activity: 668
Merit: 501
are you going to stick to the IVY  build system? i tried to get the environment running in intellij, but this provides no meaningful IVY support. if you had used maven or even just plain old  lib directory with all dependencies it would be much easier for me. currently i am butchering random jars together along with rewriting some code, which makes keeping up do date with your changes hard.

since you do have test cases you should consider running them automated on checkin with jenkins or teamcity. i just pulled in some changes which broke the build because of missing classes. (QKnownPeer is missing along with others)

thats not to be meant as criticism, i think the code looks interesting and i want to see where the project is going. my suggestion about ivy vs maven means that the code would get more accessible to other developers, plus i am lazy and do not want to spend a lot of time setting up my ide for this project Smiley
hero member
Activity: 836
Merit: 1030
bits of proof
Have you tested block chain reorg?  i.e. where a previous-best chain is overtaken by a stronger chain, causing transactions to be un-confirmed?
To also answer your question: No. I need to create test cases.

I think, best I create basic mining now, so I can mine my own chain creating the weirdest test cases.
hero member
Activity: 836
Merit: 1030
bits of proof
I know thats the tricky part.

The bitsofproof node logically "reorgs" by deciding which block is the trunk head (with the most cumulative work). The blocks are only linked backward to previous. Traversing from the trunk head block leads to genesis although there are alternate heads with partially different paths to root. When a block connects somewhere I decide if it has now more cumulative work than the trunk head, then it is the new trunk head. Thats the "logical reorg" since nothing really moves, just a trunk head is identified for the decision on spend-ability of an output:

The decision if an output is spendable is done by traversing back from trunk head using backward pointer of each block only taking into account transactions of blocks on that path.

Since I cache the linked chain (tree) of block hashes traversing to find the right path (that is list of block hashes) for the query is fast. In addition I now build a cache of spendable output (instead of pruning).
legendary
Activity: 1596
Merit: 1100
Have you tested block chain reorg?  i.e. where a previous-best chain is overtaken by a stronger chain, causing transactions to be un-confirmed?
hero member
Activity: 836
Merit: 1030
bits of proof
A step back: Pruning was not correct. Reverting and thinking...
hero member
Activity: 836
Merit: 1030
bits of proof
New feature of the day: Implemented pruning of the chain to unspent output.

The pruning is on a logical level, add option -p 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...
hero member
Activity: 836
Merit: 1030
bits of proof
New feature of the day: Collects and stores and uses peer statistics (version, agent, traffic, response time, ban reason... ) in the database.
hero member
Activity: 836
Merit: 1030
bits of proof
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.
hero member
Activity: 836
Merit: 1030
bits of proof
Consulting is an option.
I also have end user facing ideas I will build on this fundation.
legendary
Activity: 1526
Merit: 1134
How do you plan to make a profit? Consulting?
hero member
Activity: 836
Merit: 1030
bits of proof
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.
newbie
Activity: 32
Merit: 0
great work grau! I like the way you code, and your attitude!  keep it up Smiley
hero member
Activity: 836
Merit: 1030
bits of proof
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.
hero member
Activity: 836
Merit: 1030
bits of proof
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
hero member
Activity: 836
Merit: 1030
bits of proof
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.
legendary
Activity: 2576
Merit: 1186
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
hero member
Activity: 836
Merit: 1030
bits of proof
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.
hero member
Activity: 668
Merit: 501
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?
Pages:
Jump to: