Pages:
Author

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

hero member
Activity: 836
Merit: 1021
bits of proof
does an RPC interface like bitcoind ones exist?
This will offer synchronous remote invocation for a few functions and have an asynchronous message bus for notification and broadcast between known extensions or authenticated clients. The API (BCSAPI) is supposed to isolate components that need highest level of compatibility with bitcoind from the rest, where innovation should take place. The BCSAPI seeks to serve low level data, such as validated transactions and blocks chain events or outputs by address eliminating the need to hack into core components or interpret binary storage.

I do not plan to imitate bitcoind's RPC out-of-the-box but, make it possible to implement extensions/proxies connecting to above API that create a compatibility layer if you need.

This is a project in development, so interfaces or database schema will likely change. Keep watching this space for a ready to go before using it for real or committing serious development on top of the API.

Suggestions, wishes are welcome.
legendary
Activity: 1792
Merit: 1008
/dev/null
does an RPC interface like bitcoind ones exist?
staff
Activity: 4172
Merit: 8419
An update on testing progress.
The bitsofproof supernode now passes bitcoind´s script and transaction related unit tests as stored in the Satoshi code:
CONGRATULATIONS!  These updates fixed the first of the issues I saw in code review. You also fixed a later issue I found in review, and several issues I did not notice.

This is a big improvement, and even though I've been complaining that you're obligated to get all this right I don't at all mean to imply that its a small accomplishment.  However, some validity issues remain. I'm surprised the tests in the reference codebase got you as far as they did here (well, also because I think I previously though you'd already consulted them.  The next testing point would be Bluematt's blockchain tester.



hero member
Activity: 836
Merit: 1021
bits of proof
An update on testing progress.

The bitsofproof supernode now passes bitcoind´s script and transaction related unit tests as stored in the Satoshi code:

base58_encode_decode.json
script_invalid.json
script_valid.json
tx_invalid.json
tx_valid.json

I think this is a promising result of compatibility. May I honor the compiler of those tests, they really helped to pinpoint very subtle differences.

In 2013 I will write more complex tests for blocks an chain events.
hero member
Activity: 836
Merit: 1021
bits of proof
Thanks. I don't mind that it spews everything at TRACE level, but I do mind that I cannot redirect and grep/tee/tail through it (on Windows it would be findstr.exe and tailf.exe). If the "no stdout redirection" is not easily fixable then at least make the log file a complete log not "everything less than INFO" log. Thanks again and good night (or good morning.)
I updated so you can now redirect. Since it is a just a preview I will not invest more into it.
legendary
Activity: 2128
Merit: 1065
This is just a demo and it meant to demonstrate that it is doing a lot and fast.
I will let the log filtered to INFO at the console and write the rest into a file.
Thanks. I don't mind that it spews everything at TRACE level, but I do mind that I cannot redirect and grep/tee/tail through it (on Windows it would be findstr.exe and tailf.exe). If the "no stdout redirection" is not easily fixable then at least make the log file a complete log not "everything less than INFO" log. Thanks again and good night (or good morning.)
hero member
Activity: 836
Merit: 1021
bits of proof
"testnet3 memdb" failed 4 times in a row with the same IRC problem.

Attempting redirection of standard output gives 'Exception in thread "main" java.io.IOException: unable to obtain console' and exits.

May I also have one suggestion: configure the program to default to "-nolisten", because it pops up the firewall configuration dialog first time it is being run. I let it have the firewall exception enabled, but I would really prefer if the program didn't ask for it first time.

I will try to disable Ipv6 for IRC and not listen by default. The exception is because of the password at the beginning. I disable that too.

"production leveldb" starts, but spews too fast to really understand what's going on.

This is just a demo and it meant to demonstrate that it is doing a lot and fast.
I will let the log filtered to INFO at the console and write the rest into a file.
But its too late for me today...


legendary
Activity: 2128
Merit: 1065
I am not sure, since I saw this occasionally and could not yet find the reason. Try re-running, you might get an other IRC server assigned. IRC discovery sucks. I can not offer a quick fix there I am afraid. 

Did you try production leveldb that uses DNS discovery ?
"testnet3 memdb" failed 4 times in a row with the same IRC problem.

"production leveldb" starts, but spews too fast to really understand what's going on.

Attempting redirection of standard output gives 'Exception in thread "main" java.io.IOException: unable to obtain console' and exits.

May I also have one suggestion: configure the program to default to "-nolisten", because it pops up the firewall configuration dialog first time it is being run. I let it have the firewall exception enabled, but I would really prefer if the program didn't ask for it first time.
hero member
Activity: 836
Merit: 1021
bits of proof
Thanks. It seems safe enough to run. So I tried "testnet3 memdb". It cannot bootstrap itself off the IRC on a machine with a real dual stack IPv4 + IPv6.
I am not sure, since I saw this occasionally and could not yet find the reason. Try re-running, you might get an other IRC server assigned. IRC discovery sucks. I can not offer a quick fix there I am afraid. 

Did you try production leveldb that uses DNS discovery ?
legendary
Activity: 2128
Merit: 1065
I apologize that was not intentional. I uploaded a plain zip here:

ftp://bitsofproof.com/supernode.zip
Thanks. It seems safe enough to run. So I tried "testnet3 memdb". It cannot bootstrap itself off the IRC on a machine with a real dual stack IPv4 + IPv6. I think this bug exists in the Satoshi's code too, I just start Satoshi with -noirc. I killed it because the error that keeps scrolling is "Peer connector IRC receive ERROR :Trying to reconnect too fast.". I don't want to DoS anybody's IRC servers.
hero member
Activity: 836
Merit: 1021
bits of proof
It should not. Is it because of the location you try to install it ? If not I create an other one.
It clearly shows in the manifest: requestedExecutionLevel="requireAdministrator". Please post something that 7-zip could open before installation.

I apologize that was not intentional. I uploaded a plain zip here:

ftp://bitsofproof.com/supernode.zip
legendary
Activity: 2128
Merit: 1065
It should not. Is it because of the location you try to install it ? If not I create an other one.
It clearly shows in the manifest: requestedExecutionLevel="requireAdministrator". Please post something that 7-zip could open before installation.
hero member
Activity: 836
Merit: 1021
bits of proof
I am curious if the packaging works well on different machines and how you like it.
Why is it asking for Administrator privileges? Can you post a plain archive?
It should not. Is it because of the location you try to install it ? If not I create an other one.
legendary
Activity: 2128
Merit: 1065
I am curious if the packaging works well on different machines and how you like it.
Why is it asking for Administrator privileges? Can you post a plain archive?
hero member
Activity: 836
Merit: 1021
bits of proof
The version is superseded and the file mentioned below is no longer offered

I have an alpha quality preview for those curious of the supernode but do not like dealing with java.

You find a windows installer under ftp://bitsofproof.com/supernode-0.7-SNAPSHOT-setup.exe

You can download a plain zip of executable here
ftp://bitsofproof.com/supernode.zip

It is a compiled version of the original java code to native windows 32. It does not require you to install a java runtime.

The program does not do anything directly useful since it has no wallet. Should you figure it is still useful for some purpose, do not use it yet for real. It just downloads the chain and then validates and relays transactions. For production chain it validates and Merkle roots and proof of work until block 213900, therafter full validation of scripts. It does full validation from the beginning on testnet3.

Execute the installer and choose some empty new directory as target (without spaces in the path like "Program Files").
Once installed unzipped you may execute as:

1. production net with LevelDB. Data will be stored in a sub directory called data
Code:
supernode-0.7-SNAPSHOT.exe production leveldb

2. production net with embedded relational db (derby) - data will be stored in a sub directory called derby
Code:
supernode-0.7-SNAPSHOT.exe production derby 

3. testnet3 in memdb - data remains in memory and starts over at every execution
Code:
supernode-0.7-SNAPSHOT.exe testnet3 memdb

It will ask for BCSAPI password at start. Just hit enter.

I am curious if the packaging works well on different machines and how you like it.
hero member
Activity: 836
Merit: 1021
bits of proof
The bitsofproof supernode now features an asynchronous communication bus with corresponding API to subscribe to validated transactions, block chain events (extension, reorg) and block templates.

The bus allows submission of mined blocks and new transactions and is supported by a generic purpose JMS message broker, in my case Apollo MQ. The use of such message broker allows efficient message distribution to a large number of known counterparts, while taking care of authentication and authorization to publish or subscribe to different topics the messages are queued on.

Both server and evtl. clients connect to the bus using SSL sockets over the internet.

Also added documentation on configuration and database schema overview in:

https://github.com/bitsofproof/supernode/wiki
hero member
Activity: 836
Merit: 1021
bits of proof
Ok than you for clarification Smiley

So this node is for the big boys around here.

Also for those who wanna be big Smiley
hero member
Activity: 784
Merit: 500
Ok than you for clarification Smiley

So this node is for the big boys around here.

hero member
Activity: 836
Merit: 1021
bits of proof
May a bitcoin noob ask what's that node for (or where can i read something about that?). I always thought a bitcoin qt (bitcoind) was a node in the network?

Is this something the "Average Joe" should deal with? ie. run it on a server themselves?

bitcoind defines the network now as most nodes run it.

That one size will not fit all
  • Average Joe will be tired of gigabytes of data and traffic and will use e.g. MultiBit or move away from PC to smartphones to use bitcoin.
  • Merchants will want to explore new unique uses and connect bitcoin with their other other systems.

I build the bitsofproof supernode for the merchants, who need modularity, scalebility, connectivity.
hero member
Activity: 784
Merit: 500
May a bitcoin noob ask what's that node for (or where can i read something about that?). I always thought a bitcoin qt (bitcoind) was a node in the network?

Is this something the "Average Joe" should deal with? ie. run it on a server themselves?
Pages:
Jump to: