Pages:
Author

Topic: . - page 8. (Read 39124 times)

sr. member
Activity: 426
Merit: 250
July 18, 2012, 02:06:53 PM
#39
I am having trouble compiling.
http://pastebin.com/TrfSecqA
legendary
Activity: 1498
Merit: 1000
July 16, 2012, 07:18:30 PM
#38
Anyone managed to get this working on BSD or whatever it is that macs use?
if your on lion you need to use Xcode and inside of xcode install the command line tools to get it working
and also use homebrew to install dependencies macports doesn't work as well for me at least.

Great! Thanks for that. I'm on snow leopard and have installed compiling tools, so I'll give it a go.


actually I forgot you need to update your gcc to gcc 4.5
so do...
Code:
% brew tap homebrew/versions
% brew install gcc45
donator
Activity: 2058
Merit: 1007
Poor impulse control.
July 16, 2012, 07:17:37 PM
#37
Anyone managed to get this working on BSD or whatever it is that macs use?
if your on lion you need to use Xcode and inside of xcode install the command line tools to get it working
and also use homebrew to install dependencies macports doesn't work as well for me at least.

Great! Thanks for that. I'm on snow leopard and have installed compiling tools, so I'll give it a go.
legendary
Activity: 1498
Merit: 1000
July 16, 2012, 07:11:35 PM
#36
Anyone managed to get this working on BSD or whatever it is that macs use?
if your on lion you need to use Xcode and inside of xcode install the command line tools to get it working
and also use homebrew to install dependencies macports doesn't work as well for me at least.
donator
Activity: 2058
Merit: 1007
Poor impulse control.
July 16, 2012, 06:57:37 PM
#35
Anyone managed to get this working on BSD or whatever it is that macs use?
hero member
Activity: 566
Merit: 500
July 10, 2012, 05:52:38 AM
#34
I really need to play with this. My tool pings blockexplorer for its data... lol
newbie
Activity: 24
Merit: 0
July 10, 2012, 05:11:16 AM
#33
can't compile on linux-x86-32:

The fix is to remove the -m64 flag from the Makefile. Should I do a pull request?
newbie
Activity: 24
Merit: 0
July 10, 2012, 05:04:48 AM
#32
can't compile on linux-x86-32:

$ make
c++ -- cb/closure.cpp
c++ -- cb/simpleStats.cpp
c++ -- cb/taint.cpp
c++ -- cb/transactions.cpp
c++ -- cb/allBalances.cpp
c++ -- callback.cpp
c++ -- opcodes.cpp
c++ -- parser.cpp
cb/allBalances.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
opcodes.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
callback.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
cb/simpleStats.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
cb/transactions.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
parser.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
cb/closure.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
cb/taint.cpp:1:0: sorry, unimplemented: 64-bit mode not compiled in
make: *** [.objs/transactions.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [.objs/opcodes.o] Error 1
make: *** [.objs/simpleStats.o] Error 1
make: *** [.objs/taint.o] Error 1
make: *** [.objs/allBalances.o] Error 1
make: *** [.objs/callback.o] Error 1
make: *** [.objs/closure.o] Error 1
make: *** [.objs/parser.o] Error 1
donator
Activity: 266
Merit: 252
I'm actually a pineapple
July 06, 2012, 06:02:09 PM
#31
I'll probably try implementing that in a bit, but I need to finish decoding the scripts first Sad

I'll have to read your explanation about the algorithm you describe when my
mind is a little more alert than right now (4am here).

However, for the script decoding part, I would suggest looking at my code,
in file util.cpp, routing solveOutputScript and showScript. They're very simple
and pretty much self-contained (unlike the satoshi client code which has lots
of layers of abstraction and makes things a tad hard to follow linearly).



Cool, will do. I'm doing it in a completely different language (I dare not say which, lest people judge me! Huh), but having some nicely written code to look at will be a great help, thanks.
donator
Activity: 266
Merit: 252
I'm actually a pineapple
July 06, 2012, 05:55:21 PM
#30
I haven't had a chance to look at your code yet, but do you use Tarjan's union-find to compute the "wallet-sets"? I've been meaning to write a tool that does that for a while.

Edit: oh, you're using boost's connected_components. I think they use union-find for incremental_components.

Yes I do because I build the entire graph in the first place.

Not sure what algorithm they use in there.

Also, given that I build the whole graph, not sure why using
TUFA has any advantage over a dumb [D|B]FS mark and sweep ...

Yeah, it doesn't. I wasn't planning on maintaining the entire graph, so can get away with it.

Turns out that the graph will grow so fat at some point that it might
very well be necessary to move to some sort of incremental data
structure ... that being said, since there is no way to know that two
disjoin subsets will or won't merge until the very last tx in the chain,
I don't think it's possible to get away with _not_ building the whole
graph in the first place.

Well, I haven't tried implementing it yet, but my thinking was that the union-find structure represents just as much of the graph as we need. We basically have an equivalence of "has been used as an input in the same transaction as" and we're building equivalence classes.

So basically, you make a pass over the data building up an associative map structure from each address to something your union-find algorithm knows how to deal with (I'm language-agnostic Wink). As you process transactions in the block building these things up, you make sure to call union on your union-find structure to join classes together if you see them as inputs to the same transaction. This is linear in the number of inputs, not quadratic, because the structure knows what's already in the class. Once you've made your pass over the blockchain, you're left with a big map containing all input addresses ever seen and your union-find structure. Now all you need to do is traverse your map of addresses and look up (using find to find a representative element of your equivalence class) which set each element is in, and group on that. The resulting sets should be your connected components. You could then make your map from addresses point to the set it belongs to for easy lookups, or do whatever.

If I'm not spouting nonsense, that would allow us to run the set-building in O(n * alpha(n)) time, where n is the total number of inputs to all transactions. You'd use O(total unique input addresses) space for it, and it should have fairly low constant factors.

I'll probably try implementing that in a bit, but I need to finish decoding the scripts first Sad
donator
Activity: 266
Merit: 252
I'm actually a pineapple
July 06, 2012, 05:26:21 PM
#29
I haven't had a chance to look at your code yet, but do you use Tarjan's union-find to compute the "wallet-sets"? I've been meaning to write a tool that does that for a while.

Edit: oh, you're using boost's connected_components. I think they use union-find for incremental_components.

Yes I do because I build the entire graph in the first place.

Not sure what algorithm they use in there.

Also, given that I build the whole graph, not sure why using
TUFA has any advantage over a dumb [D|B]FS mark and sweep ...

Yeah, it doesn't. I wasn't planning on maintaining the entire graph, so can get away with it.
donator
Activity: 266
Merit: 252
I'm actually a pineapple
July 06, 2012, 03:32:34 PM
#28
I haven't had a chance to look at your code yet, but do you use Tarjan's union-find to compute the "wallet-sets"? I've been meaning to write a tool that does that for a while.

Edit: oh, you're using boost's connected_components. I think they use union-find for incremental_components.
jr. member
Activity: 42
Merit: 1000
July 03, 2012, 12:40:39 PM
#27
1) in cb/simpleStats.cpp i simply changed
Code:
typedef unsigned int uint128_t __attribute__((mode(TI)));
to
Code:
 typedef unsigned int uint128_t;

and 2)
in Makefile changed "-m64" to "-m32"
--------------------------------------------------------
my Slitaz Linux box has only 1280 Mb of RAM, so it's low performance is reasonable.
legendary
Activity: 1092
Merit: 1016
760930
July 06, 2012, 06:20:54 AM
#27
Is it possible to answer the following question with this tool?

Show all addresses currently containing coins from the (latest) Bitcoinica hack.
jr. member
Activity: 42
Merit: 1000
July 03, 2012, 11:26:47 AM
#26
after little dirty hack
i have managed to compile the parser on my i386 box,
although it runs very slowly  Smiley
legendary
Activity: 2618
Merit: 1007
July 05, 2012, 05:22:17 AM
#26
Also, want to run it on my public address?  I am curious what other addresses are correlated with it...  Wink  If not, that's fine, I'll download it and attempt to compile myself.

Here you go.
Even translated the result to the usual format.
I'd be curious to see if it worked. Let me know.

Code:
18TKNbSLTrd3a2W8mtoH5uNzFhWRWNcuHU
1HCPvWwBuUp7wqY69pgVeQZVv7KWj2foTC
15QeFbpe3o1rweuB4vHFG6FZHwZw6SKTe6
1EScB6WzkeDVUZwLSsAHxUNuRr8jN38MLm
17sUs5wQ9VrqxNwVg2ZGu2f77XW8QWzbAF
1MTvpvsZgjsWK588kgvm9RS35MQW46eyAW
1Ah5SFitc1zeWFck4CAdFaheAdU5RxiGq7
1M3z9w1tGaRKeGgoNCqXHLrfBRfyWh4WT6
14vWo67QCcWy6ET1Be7fsF4RW1QWNoJTwv
19yKfxN1xCcuk9nC6nDSV4PbpQifudjP4r
15mBZw6cjujDh61NBQu3pton78RAxdugmN
1MJ7EF8cDdkJY2YEYDJNFPiMg6oprMwb2K
1Ht1M1ndrRuKGWGuzBjxKfj6uWfrdVWQQr
1Q8mYsQhXREsHAmYWLqiD1iQjRns6pEE3v
13ViQh8GcaXHcSgwiM2szYfAHogdj2rjdu
17rgBsV5vhgFoXM67Xw9xLor5ZDG4Bbc5E
1LKbGSSZsBMixyLzKwt8k45VXY3Jxq6YBo
1Ce2FpRAgzqTPNVRE9oSTFtyHsjFQAeBwo
16jZP9v3RwoiVHYKTu89W2MvuHYHJjhV6n
1GVshgfm7dKWQaKnGfZpVfUgHMc667SSy2
16oGSr3q8H7m7mhFiRZgLZiBFPSLWxYJ6H
1MmRmJY9Kkepn98tUDw6mgRu8FDtqRv3Sq
1GcJTf4xWe8eNXmg37pJEYQz9zfynaWR1F
1EFwce8G1jEM384H4XAmgDg4oKS4CNYmjc
16EN1R3GUgTKPDbwYG8MuorjebKBqRfQQC
1L76oj8piiQjZTX81LvJTY8nqJCRQme24M
19YgjvW48TFLh7VDx4kqtoQdUntr6nbwvb
1M4Px4n2mudnCvMur56MgJmBoVmJBsUE1e
1BP5oZMunWkn4AumtVidxvSgdprMtc7TiS
14rh6vEzfpCz7KhiiMnBVFDPbSDtk5XhU8
11bUZzLby1Z1SAgS9UcHC3V2FXLTkJ5u73
1QBWU6Wzg7ER9ryiTqDsxsj452m7bMnGwK
13XPKVAR7AWzoiN1Pph7fGjcx7o1iMP6KK
16Fc6U3K9YBToqifj43jpiqynj7ug3MNye
1DwMrunRyaYPq94577j7Kj6zBf3uLhZDpW
18eWPzRWH12L4CmdeBc66eimdAKeyZWSi6
1N1VFUQLdQp6L2Z25H4zswoxc5L8NppSSJ
1K8F2dzKzvxixkMQhb8dq7LBCuKxCPFgW8
11Eqw5T99VsNtSzjBTrWGQHPsRrk4RmB2B
18LzGvrFokVvWZJAWw5wDsaErX5VrovGeQ
137DULuj5JhNc9V3Q4MEi1AJQX65QAG4xf
1EZp1rmPjBhZ5FvuAvfUqrZWM3uoF8p3h8
12pL3fwPGz9GsVE8L8v5agiQDpZhWYHGXV
1KxJd5v5orAoFuSkdUZSXc4UXmDa95bAND
1HjzgWVCkCXYW6LWX8THBtNwbKbYxUdpFe
1BfSfnbz7hbSgcXerakXuyf7FHRKcmpJcA
1GJFN1SN8Y9SJdSDK16uzGjV5wsGmEgMvn
1FAkUHN2rzf2PvLJ1E4NZ6r7zZsjw7Xa32
12LwQUq9HKsbaHmtPH46NgABYcp8A3sXWB
11FNssaGrVp9amTvi8sG6qb7mZB4d1VQYQ
1BrXK4M4c6xihr3gJj5mBht6xVoFzgtFvK
11D1dSTNJdhfpAf98USCJdUJp3917q3TJy
152SqwUX8R6PoEmJkxprU8Hr3GGbF5QpPn
1PRQk473DBQrdBhgAY6GcTXeezkyhPqvBx
1Hd3F12RoDQfHYShYBKPDC4NrxyPmk24Ne
1K5oHkRCZJeLB7p1E8yMEa4X7LAz3fbsCU
18Vv4whHTnGAe4f582trW4fLz3T3RUFhnC
1DP4bm1xBkKaRMcmZk996hsYSXcfmxH687
16TxHT4Par4xrKEoTYUDGGqcmZhBijTC2q
1CeADvshNvXVoxw1t1nqhwczYh5CefvuJB
1N5iVMVEEv6G2iSmJFPrPZ4mxkBCFdCmkA
14Z6Qa7Z1QNUTmEP5LkAjsXDzy151Jbwya
12ALSWvaVPekEkDWc5CrDDZvtSpDiWnWM8
1BG5Rbhc88VFLGCk5S3AmumgCa2ro1y1uz
17oFBQJau137iTPjkzyzayvTm7Wouu5DGn
1Ghu4ACM8UGtFxUmGx4BSJ3cA4hkB1iafy
1AcPdXqmJw67Mf6KvMo6d2iPZXoWLN2snM
18etxowpqFzYVbh2DwikcRvijfBZ6VWvjC
1D6FXvnELTfXSsZ8H5MSdfxFMofq1n4LBy
1JbkiKFGEqDHje1wSfHwiRbfxsbodmTK5s

Wow, that's quite a lot!  I can say that the below is my BitMinter payout address, so I know that that much worked.  Not at my wallet computer at the moment, but I'll check more of them out when I can.

1EScB6WzkeDVUZwLSsAHxUNuRr8jN38MLm

Working from tat bitminter address I got
Code:
1GVshgfm7dKWQaKnGfZpVfUgHMc667SSy2
17oFBQJau137iTPjkzyzayvTm7Wouu5DGn
1N5iVMVEEv6G2iSmJFPrPZ4mxkBCFdCmkA
1K5oHkRCZJeLB7p1E8yMEa4X7LAz3fbsCU
1BP5oZMunWkn4AumtVidxvSgdprMtc7TiS
19yKfxN1xCcuk9nC6nDSV4PbpQifudjP4r
1Eqw5T99VsNtSzjBTrWGQHPsRrk4RmB2B
1HCPvWwBuUp7wqY69pgVeQZVv7KWj2foTC
18TKNbSLTrd3a2W8mtoH5uNzFhWRWNcuHU
1Ce2FpRAgzqTPNVRE9oSTFtyHsjFQAeBwo
17rgBsV5vhgFoXM67Xw9xLor5ZDG4Bbc5E
15QeFbpe3o1rweuB4vHFG6FZHwZw6SKTe6
1PRQk473DBQrdBhgAY6GcTXeezkyhPqvBx
1N1VFUQLdQp6L2Z25H4zswoxc5L8NppSSJ
16jZP9v3RwoiVHYKTu89W2MvuHYHJjhV6n
1QBWU6Wzg7ER9ryiTqDsxsj452m7bMnGwK
16oGSr3q8H7m7mhFiRZgLZiBFPSLWxYJ6H
1GcJTf4xWe8eNXmg37pJEYQz9zfynaWR1F
1Q8mYsQhXREsHAmYWLqiD1iQjRns6pEE3v
1Ah5SFitc1zeWFck4CAdFaheAdU5RxiGq7
137DULuj5JhNc9V3Q4MEi1AJQX65QAG4xf
18Vv4whHTnGAe4f582trW4fLz3T3RUFhnC
1GJFN1SN8Y9SJdSDK16uzGjV5wsGmEgMvn
15mBZw6cjujDh61NBQu3pton78RAxdugmN
1BfSfnbz7hbSgcXerakXuyf7FHRKcmpJcA
1FNssaGrVp9amTvi8sG6qb7mZB4d1VQYQ
1EFwce8G1jEM384H4XAmgDg4oKS4CNYmjc
17sUs5wQ9VrqxNwVg2ZGu2f77XW8QWzbAF
18etxowpqFzYVbh2DwikcRvijfBZ6VWvjC
1BrXK4M4c6xihr3gJj5mBht6xVoFzgtFvK
1Hd3F12RoDQfHYShYBKPDC4NrxyPmk24Ne
12pL3fwPGz9GsVE8L8v5agiQDpZhWYHGXV
1Ghu4ACM8UGtFxUmGx4BSJ3cA4hkB1iafy
1MTvpvsZgjsWK588kgvm9RS35MQW46eyAW
1FAkUHN2rzf2PvLJ1E4NZ6r7zZsjw7Xa32
1M3z9w1tGaRKeGgoNCqXHLrfBRfyWh4WT6
12ALSWvaVPekEkDWc5CrDDZvtSpDiWnWM8
1EZp1rmPjBhZ5FvuAvfUqrZWM3uoF8p3h8
16EN1R3GUgTKPDbwYG8MuorjebKBqRfQQC
1M4Px4n2mudnCvMur56MgJmBoVmJBsUE1e
13XPKVAR7AWzoiN1Pph7fGjcx7o1iMP6KK
1MJ7EF8cDdkJY2YEYDJNFPiMg6oprMwb2K
1L76oj8piiQjZTX81LvJTY8nqJCRQme24M
1JbkiKFGEqDHje1wSfHwiRbfxsbodmTK5s
18LzGvrFokVvWZJAWw5wDsaErX5VrovGeQ
16Fc6U3K9YBToqifj43jpiqynj7ug3MNye
19YgjvW48TFLh7VDx4kqtoQdUntr6nbwvb
1D1dSTNJdhfpAf98USCJdUJp3917q3TJy
1EScB6WzkeDVUZwLSsAHxUNuRr8jN38MLm
12LwQUq9HKsbaHmtPH46NgABYcp8A3sXWB
152SqwUX8R6PoEmJkxprU8Hr3GGbF5QpPn
1MmRmJY9Kkepn98tUDw6mgRu8FDtqRv3Sq
13ViQh8GcaXHcSgwiM2szYfAHogdj2rjdu
1LKbGSSZsBMixyLzKwt8k45VXY3Jxq6YBo
1CeADvshNvXVoxw1t1nqhwczYh5CefvuJB
1BG5Rbhc88VFLGCk5S3AmumgCa2ro1y1uz
14Z6Qa7Z1QNUTmEP5LkAjsXDzy151Jbwya
16TxHT4Par4xrKEoTYUDGGqcmZhBijTC2q
1DP4bm1xBkKaRMcmZk996hsYSXcfmxH687
1DwMrunRyaYPq94577j7Kj6zBf3uLhZDpW
1KxJd5v5orAoFuSkdUZSXc4UXmDa95bAND
1AcPdXqmJw67Mf6KvMo6d2iPZXoWLN2snM
1K8F2dzKzvxixkMQhb8dq7LBCuKxCPFgW8
14rh6vEzfpCz7KhiiMnBVFDPbSDtk5XhU8
1D6FXvnELTfXSsZ8H5MSdfxFMofq1n4LBy
14vWo67QCcWy6ET1Be7fsF4RW1QWNoJTwv
18eWPzRWH12L4CmdeBc66eimdAKeyZWSi6
1HjzgWVCkCXYW6LWX8THBtNwbKbYxUdpFe
1Ht1M1ndrRuKGWGuzBjxKfj6uWfrdVWQQr
1bUZzLby1Z1SAgS9UcHC3V2FXLTkJ5u73
with a current balance of 10.46293721 BTC

I still need to change my own script to output hashes instead of addresses though, so I can compare with this (much faster but limited to linux) program.
donator
Activity: 980
Merit: 1000
July 02, 2012, 07:29:25 PM
#25
Looks good. Cheers.
full member
Activity: 210
Merit: 100
June 23, 2012, 03:21:35 PM
#24
Very nice!
full member
Activity: 196
Merit: 100
Web Dev, Db Admin, Computer Technician
June 21, 2012, 08:37:37 AM
#23
We'll see how far past 'hello world!' I get first.
full member
Activity: 196
Merit: 100
Web Dev, Db Admin, Computer Technician
June 21, 2012, 08:21:08 AM
#22
OK, now that's clear: what you want is a full dump of the blockchain in graph form.

So, as it is today, the code can't directly generate that, but it'd be a feature super simple
to add to the 'allBalances' callback since the code basically walks that exact graph to generate
the final balances.

That being said, this is going to be a *huge* dump. To get an idea, here's the current
blockchain stats gathered by blockparser:
     - 4.407 Million unique addresses received BTC
     - the blockchain contains 17.826 Million address spends

In other words, not even taking into account the complex kind of transactions
(send fromMany toMany) your graph would have on the order of 4.5M vertices
and on the order of 18M edges ...

Unless your graph software was optimized to handle very large graphs, you're not
going to get much out of it.
Hmm...I guess it might be better to dump as text and then crawl for the specific info needed. I certainly can't load the whole blockchain into the grapher, I don't have a Cray nearby.

Another way would be to somehow figure out a way to restrict the graph dump to
a nearby neighborhood of a given address (for example N hops).
This sounds a bit more reasonable.

Feel free to submit a patch.
That means it's somewhat difficult or tedious to implement.

Since when is graph theory taught during geometry classes ?
Neither had I computer science. Biology, tables yes, graphing no.
Pages:
Jump to: