

Realtime Bitcoin webGL globe – visualizing all transactions and blocks - askmike
http://blocks.wizb.it/

======
bbosh
This is awesome, but just a small comment about "Next block expected in 7
minutes". The next expected block is always due in 10 minutes, no matter when
the previous block was generated. Mining is a memoryless process.

~~~
kaoD
What do you mean? If blocks are 10min apart (actually less as the network
hashrate grows before the difficulty adjustment) and the last block was found
3 minutes ago, a new block is expected to be found after 7 more minutes.

~~~
askmike
The 10 minutes is only an average time at which the network can solve the
problem with random tries. You won't see a lot of blocks 10 minutes apart
because only when measured over longer timeframes it averages to 10 minutes.

Just like when you flip 10 coins they likely won't result in: head - tail -
head - tail - (...). Though on average you end up with 5 tails and 5 heads.

~~~
kaoD
> You won't see a lot of blocks 10 minutes apart because only when measured
> over longer timeframes it averages to 10 minutes.

That's why it says expected! To be 100% correct you could plot the cumulative
density function as time progresses, but I think just printing the expected
time is fine.

------
noir_lord
I'm watching a real time 3D visualisation of the generation of a distributed
unregulated worldwide crypto-currency using the largest network of computers
the world has ever seen.

Screw it I'm off to the Black Sun for a drink and a sword fight.

------
ionwake
A new competitor I see? ;)

I developed the same code base to do the same thing a month ago. It also front
paged on Hackernews ([http://www.earthbit.net](http://www.earthbit.net) ).

I guess the main difference is you're using your own proxy for the queries,
which is sturdier than a third party. A worthwhile improvement as mine crashed
under the load last time = )

~~~
askmike
Ah I knew I could not be the first one to come up with this idea. Nice to see
an alternative as well! I love the sounds you added.

I like the fact that I provide all data for the website myself, though I'm not
in a position to buy a lot of servers. So let's hope this one will hold :)

FYI: Your normal globe wasn't loading for me, I am seeing the same error that
bothered my version as well. That is until @mrdoob pointed me to the error:
[https://twitter.com/mrdoob/status/429292386611511296](https://twitter.com/mrdoob/status/429292386611511296)

------
mike_hearn
Other feedback: I suspect there aren't really tons of transactions being
relayed out of costa rica - is this possibly the origin point on your globe
model or something? Are you filtering out transactions with no geocodable IP?

Really cool visualisation anyway. Like it!

~~~
askmike
I am currently unable to host a big node myself so I am relying on
Bitcoincharts and the relay IP they detect. All transactions coming from
Bitcoincharts itself (the wallet service) have the localhost IP (127.0.0.1).
After being unable to find out where the company is based I've choosen to
translate that IP to their main website IP (which is hosted in Costa Rica).

If anybody knows where Blockchain.info is based please let me know and I'll
fix those transaction locations.

------
siculars
Right, so these are basically the ip addresses of the bitcoind nodes that are
the entry point into the bitcoin network. They are not the addresses of the
end users who are transacting in BTC. Correct?

~~~
mappum
You are partly correct. The IP is the node who first told Blockchain.info
(assuming that's what this is using) about the transaction. The "entry point"
to the network would be when the person sending first transmits it.

There is no way to be sure where a transaction came from, but if you have data
about how long it took to reach parts of the network, you can make an educated
guess (which becomes more accurate if you have more connections/nodes).

Some people specifically add Blockchain.info to their peer list, but that is
bad for anonymity since all your transactions will then list your real IP in
the "relayed by" field.

------
mike_hearn
Doesn't work for me unfortunately, I see no textures and a lot of errors like
this:

WebGL: INVALID_VALUE: texImage2D: width or height out of range

[.WebGLRenderingContext]RENDER WARNING: texture bound to texture unit 0 is not
renderable. It maybe non-power-of-2 and have incompatible texture filtering or
is not 'texture complete'

This is on a retina MacBook Pro. I guess there's some hw incompatibility
there.

~~~
Tmmrn
Works fine on intel and radeonsi in linux in firefox nightly and chromium.

In firefox the textures are noticeably darker for some reason.

~~~
askmike
On firefox I ran into the out_of_range error with the clear image used in
WebKit browser. So on Gecko browsers I load a smaller image (which is a bit
darker).

------
gluelogic
I believe there is a typo. In the top left corner, it says 'Block mined at
location: Unkown'. Shouldn't that be 'unknown'?

~~~
askmike
Thanks, fixed now!

------
arscan
Great stuff. Where do you get the data? I'm working on a geolocation-centric
visualization in webgl that would be a good fit for this kind of realtime(ish)
data.

~~~
askmike
Thanks!

All transaction and block data is from Blockchain.info
([https://blockchain.info/api/api_websocket](https://blockchain.info/api/api_websocket))
(you can also get that from the Bitcoin network itself pretty easily) and all
geo location data (ip to geo) is from freegeoip.net. All data is proxied
through my own server, so I'm not hammering those services.

------
gelutu
Don't make the cubes green.

~~~
jboggan
Orange or gold will complement against the blue/green background, especially
when you are popping/zooming out. They get lost in the background when the
view pulls out.

~~~
askmike
I've now turned them orange, which improves the visibility a ton. Though I
want to fix the lighting and color them based on variables instead of making
them so plain as they are now.

------
jyz
man I was going to start a visualization of blockchain but this is wayy
cooler. KUDOS Mike!

~~~
askmike
thanks!

