Compare commits

...

4725 Commits

Author SHA1 Message Date
obscuren
ad7b0efbd3 cmd/geth: hotfix bump 2015-05-16 13:02:30 +02:00
obscuren
d98a6f85fc core: further improved uncle error messages 2015-05-16 13:02:30 +02:00
obscuren
c2ef8682fe eth/downloader: moved start event
Start event has moved because it could possibly could stall the miner
2015-05-16 13:02:30 +02:00
Vitalik Buterin
fe64a13cea Adjust miner coinbase and not just miner worker coinbase 2015-05-16 12:56:06 +02:00
obscuren
741fa8ca9c miner: mutex locks on cpu agent. Closes #1007 2015-05-16 12:55:56 +02:00
obscuren
1564f1a020 Merge branch 'release/0.9.21' 2015-05-16 00:27:13 +02:00
obscuren
7ea76fcf99 core, cmd/geth, cmd/mist: cleanup. bump version 0.9.21 2015-05-16 00:26:36 +02:00
obscuren
79fa05867f xeth: set balance max balance to from in call. Closes #951 2015-05-16 00:03:08 +02:00
Jeffrey Wilcke
d116b9595c Merge pull request #989 from obscuren/develop
core, miner: fork resolving and restart miner after sync op
2015-05-15 15:02:22 -07:00
obscuren
55d85d60fd eth, cmd/geth: start mining from console respects CLI flag 2015-05-15 20:26:15 +02:00
obscuren
d3e84cc8b4 miner: properly check for mining operation on Register 2015-05-15 20:26:15 +02:00
obscuren
5cec1aad15 core, miner: fork resolving and restart miner after sync op
Fork resolving fixes #940
2015-05-15 20:26:15 +02:00
Jeffrey Wilcke
82c0780f81 Merge pull request #996 from karalabe/fix-potential-crosscheck-race
eth/downloader: circumvent download race between crosscheck and hashes
2015-05-15 11:23:44 -07:00
Jeffrey Wilcke
cea1723c68 Merge pull request #997 from karalabe/fix-shitty-test-server-issue
eth/downloader: fix #992, where tests may time out on a slow machine
2015-05-15 11:22:51 -07:00
Péter Szilágyi
412cf98bbc eth/downloader: fix #992, where tests may time out on a slow machine 2015-05-15 21:16:42 +03:00
Péter Szilágyi
f3ae8f50a5 eth/downloader: circumvent download race between crosscheck and hashes 2015-05-15 20:54:10 +03:00
Jeffrey Wilcke
98998534cb Merge pull request #995 from Gustav-Simonsson/update_state_tests_and_vm_create_return
Update state tests and vm create return
2015-05-15 10:31:41 -07:00
Gustav Simonsson
619e8a4f03 Add StateTests/RandomTests but skip for now 2015-05-15 19:17:40 +02:00
Jeffrey Wilcke
164ba56a60 Merge pull request #994 from karalabe/fix-cancel-double-close
eth/downloader: fix cancel channel double close
2015-05-15 10:15:35 -07:00
Gustav Simonsson
32276e8b01 Update StateTests and nil create return on failed code deposit 2015-05-15 18:49:31 +02:00
Péter Szilágyi
4f0d88cb02 eth/downloader: fix cancel channel double close 2015-05-15 19:43:42 +03:00
Gustav Simonsson
830bdb1cfd Update Ethereum JSON tests 2015-05-15 16:08:00 +02:00
Gustav Simonsson
dadf01de60 unskip StateTests/stTransactionTest and use test tx nonce 2015-05-15 16:05:11 +02:00
Jeffrey Wilcke
7d71a75d77 Merge pull request #988 from karalabe/fix-downloader-vulnerabilities
Fix downloader vulnerabilities
2015-05-15 06:38:12 -07:00
Péter Szilágyi
5c1a7b965c eth/downloader: circumvent a fake blockchain attack 2015-05-15 15:04:15 +03:00
Péter Szilágyi
b517967f86 eth/downloader: don't penalize for stale cross checks 2015-05-15 15:03:08 +03:00
Péter Szilágyi
83226762c2 eth, eth/downloader: detect and handle madeup hash attacks 2015-05-15 15:01:58 +03:00
Péter Szilágyi
9ad515d2dc eth: drop a sync peer if it sends an invalid hash chain 2015-05-15 15:01:58 +03:00
Péter Szilágyi
72411eb24c eth/downloader: circumvent hash reordering attacks 2015-05-15 15:01:58 +03:00
Péter Szilágyi
bcc2980179 eth/downloader: check sync after failed attacks 2015-05-15 15:01:58 +03:00
Péter Szilágyi
366e9627e8 eth/downloader: add a test for detecting missing blocks 2015-05-15 15:01:58 +03:00
Péter Szilágyi
cd2fb09051 eth, eth/downloader: prevent hash repeater attack 2015-05-15 15:01:58 +03:00
Jeffrey Wilcke
c1f0d40e34 Merge pull request #987 from obscuren/develop
Miner updates and downloader events
2015-05-15 04:12:46 -07:00
Jeffrey Wilcke
158efbaa45 Merge pull request #984 from tgerring/issue924
Omit replies for RPC notification requests
2015-05-15 04:12:40 -07:00
obscuren
cfb2b51b74 eth/downloader: fixed test 2015-05-15 12:47:32 +02:00
obscuren
f6669db001 core: fixed mining strategy 2015-05-15 12:24:29 +02:00
obscuren
b71091e337 eth, eth/downloader, miner: use download events to check miner start 2015-05-15 00:43:10 +02:00
obscuren
0f76a1c6df core: changed how head events are checked 2015-05-15 00:42:06 +02:00
obscuren
580bae0a86 core: improved uncle messages 2015-05-15 00:40:07 +02:00
Taylor Gerring
44a7f997c3 Unreverse ordering 2015-05-14 15:50:39 -05:00
Taylor Gerring
5c6540452a Omit replies for notification requests
When Id is missing, the client does not want a response
2015-05-14 12:39:57 -05:00
Jeffrey Wilcke
3ac34ee3c4 Merge pull request #975 from obscuren/develop
core: changed log message for forks. closes #952
2015-05-14 10:38:10 -07:00
Jeffrey Wilcke
69c78ddbb4 Merge pull request #983 from tgerring/issue958
Format contract code as hexdata
2015-05-14 10:38:01 -07:00
Jeffrey Wilcke
007bced276 Merge pull request #982 from tgerring/issue962
Check for error on DB fetch of tx
2015-05-14 10:37:30 -07:00
Jeffrey Wilcke
6bc8dec7ac Merge pull request #980 from fjl/geth-test-no-scrypt
cmd/geth: use plain keystore for JS tests
2015-05-14 10:36:56 -07:00
Taylor Gerring
4ad8f1035b Format contract code as hexdata 2015-05-14 12:17:19 -05:00
Taylor Gerring
12f82ab2ff Check for error on DB fetch of tx 2015-05-14 11:57:29 -05:00
Felix Lange
559cc02313 cmd/geth: use plain keystore for JS tests
This reduces the time it takes to run the tests back to 3 seconds.
2015-05-14 17:51:05 +02:00
obscuren
b19bf3ec78 core: changed log message for forks. closes #952 2015-05-14 17:16:46 +02:00
Jeffrey Wilcke
060a07cf69 Merge pull request #974 from karalabe/downloader-fix-unknown-parent-attack
eth, eth/downloader: handle a potential unknown parent attack
2015-05-14 08:16:30 -07:00
Jeffrey Wilcke
90b94e64fc Merge pull request #971 from fjl/p2p-limit-tweaks
p2p: tweak connection limits
2015-05-14 08:15:51 -07:00
Felix Lange
d2f119cf9b p2p/discover: limit open files for node database 2015-05-14 15:01:13 +02:00
Felix Lange
206fe25971 p2p: remove testlog 2015-05-14 14:56:34 +02:00
Felix Lange
7fa2607bd1 p2p/discover: bump maxBondingPingPongs to 16
This should increase the speed a bit because all findnode
results (up to 16) can be verified at the same time.
2015-05-14 14:53:29 +02:00
Felix Lange
691cb90284 p2p: log remote reason when disconnect is requested
The returned reason is currently not used except for the log
message. This change makes the log messages a bit more useful.
The handshake code also returns the remote reason.
2015-05-14 14:53:29 +02:00
Jeffrey Wilcke
ff87c241a7 Merge pull request #973 from bas-vk/issue972
Introduced default unlock duration when an account is unlocked from t…
2015-05-14 05:48:31 -07:00
Péter Szilágyi
fe87feccb1 eth/downloader: add a small additional check to the test 2015-05-14 15:44:54 +03:00
Péter Szilágyi
ebf1eb9359 eth/downloader: remove a previous leftover 2015-05-14 15:40:28 +03:00
Péter Szilágyi
3eda70c64c eth, eth/downloader: remove parent verification from the downlaoder 2015-05-14 15:38:49 +03:00
Bas van Kervel
1fa48bc5e7 Introduced default unlock duration when an account is unlocked from the console 2015-05-14 14:25:48 +02:00
Péter Szilágyi
a4246c2da6 eth, eth/downloader: handle a potential unknown parent attack 2015-05-14 15:24:18 +03:00
Jeffrey Wilcke
7fa740996c Merge pull request #960 from fjl/nat-fixes
p2p/nat: fix UPnP auto discovery
2015-05-14 04:06:13 -07:00
Jeffrey Wilcke
c7a13c9be8 Merge pull request #969 from Gustav-Simonsson/ethash_improve_hashrate_update2
Make read of ethash hashrate atomic and update ethash godep
2015-05-14 04:05:27 -07:00
Jeffrey Wilcke
2b06fe3eff Merge pull request #950 from karalabe/downloader-cancel-sync
eth/downloader: fix deliveries to check for sync cancels
2015-05-14 04:05:13 -07:00
Jeffrey Wilcke
cdeae22356 Merge pull request #949 from bas-vk/issue944
removed invalid filename characters
2015-05-14 04:04:43 -07:00
Felix Lange
5f706cd7f5 cmd/utils: print messages from package log through glog
Some of the dependencies use package log. This change ensures that the
log output looks uniform and respects glog flags.
2015-05-14 12:56:37 +02:00
Felix Lange
c14de2e973 p2p/nat: tweak port mapping log messages and levels
People stil get confused about the messages. This commit changes
the levels so that the only thing printed at the default level (info)
is a successful mapping.
2015-05-14 12:54:59 +02:00
Jeffrey Wilcke
e4aa011d23 Merge pull request #970 from ethereum/vitalik_quick_test
Created separate family and ancestors environment objects
2015-05-14 03:53:04 -07:00
Felix Lange
e7c7b54b82 Godeps: bump github.com/huin/goupnp to c57ae84 2015-05-14 12:29:41 +02:00
Felix Lange
663d4e0aff p2p/nat: add test for UPnP auto discovery via SSDP
The test listens for multicast UDP packets on the default interface
because I couldn't get it to work reliably on loopback without massive
changes to goupnp. This means that the test might fail when there is a
UPnP-enabled router attached on that interface. I checked that locally
by looping the test and it passes reliably because the local SSDP server
always responds faster.
2015-05-14 12:13:19 +02:00
Vitalik Buterin
bdec8c3e41 Combined two loops 2015-05-14 05:02:15 -04:00
Gustav Simonsson
b24f16fa53 Make read of ethash hashrate atomic and update ethash godep 2015-05-14 04:05:49 +02:00
Felix Lange
983f5a717a p2p/nat: fix concurrent access to autodisc Interface
Concurrent calls to Interface methods on autodisc could return a "not
discovered" error if the discovery did not finish before the call.
autodisc.wait expected the done channel to carry the found Interface
but it was closed instead.

The fix is to use sync.Once for now, which is easier to get right.
And there is a test. Finally.

This will have to change again when we introduce re-discovery.
2015-05-14 03:53:11 +02:00
Felix Lange
7efeb4bd96 p2p: bump maxAcceptConns and defaultDialTimout
On the test network, we've seen that it becomes harder to connect
if the queues are so short.
2015-05-14 03:48:28 +02:00
Vitalik Buterin
fca3333f7f Created separate family and ancestors environment objects 2015-05-13 20:46:23 -04:00
Vitalik Buterin
bc83761996 Fixed max uncle count error message 2015-05-13 20:29:57 -04:00
Felix Lange
f7fdb4dfbe Merge pull request #966 from fjl/fixup-discover-chunked-neighbors
p2p/discover: fix out-of-bounds slicing for chunked neighbors packets
2015-05-13 21:52:58 +02:00
Felix Lange
251846d65a p2p/discover: fix out-of-bounds slicing for chunked neighbors packets
The code assumed that Table.closest always returns at least 13 nodes.
This is not true for small tables (e.g. during bootstrap).
2015-05-13 21:49:04 +02:00
Jeffrey Wilcke
fad21fb4a5 Merge pull request #963 from Gustav-Simonsson/fix_keystore_crypto_comments
Update keystore code comments
2015-05-13 11:51:02 -07:00
Felix Lange
b2119d8931 Merge pull request #965 from subtly/patch-1
Better UDP & interop. Limit all received datagrams to 1280bytes.
2015-05-13 20:34:10 +02:00
subtly
8eef2b765a fix test. 2015-05-13 20:15:01 +02:00
subtly
a32693770c Manual send of multiple neighbours packets. Test receiving multiple neighbours packets. 2015-05-13 20:03:17 +02:00
subtly
7473c93668 UDP Interop. Limit datagrams to 1280bytes.
We don't have a UDP which specifies any messages that will be 4KB. Aside from being implemented for months and a necessity for encryption and piggy-backing packets, 1280bytes is ideal, and, means this TODO can be completed!

Why 1280 bytes?
* It's less than the default MTU for most WAN/LAN networks. That means fewer fragmented datagrams (esp on well-connected networks).
* Fragmented datagrams and dropped packets suck and add latency while OS waits for a dropped fragment to never arrive (blocking readLoop())
* Most of our packets are < 1280 bytes.
* 1280 bytes is minimum datagram size and MTU for IPv6 -- on IPv6, a datagram < 1280bytes will *never* be fragmented.

UDP datagrams are dropped. A lot! And fragmented datagrams are worse. If a datagram has a 30% chance of being dropped, then a fragmented datagram has a 60% chance of being dropped. More importantly, we have signed packets and can't do anything with a packet unless we receive the entire datagram because the signature can't be verified. The same is true when we have encrypted packets.

So the solution here to picking an ideal buffer size for receiving datagrams is a number under 1400bytes. And the lower-bound value for IPv6 of 1280 bytes make's it a non-decision. On IPv4 most ISPs and 3g/4g/let networks have an MTU just over 1400 -- and *never* over 1500. Never -- that means packets over 1500 (in reality: ~1450) bytes are fragmented. And probably dropped a lot.

Just to prove the point, here are pings sending non-fragmented packets over wifi/ISP, and a second set of pings via cell-phone tethering. It's important to note that, if *any* router between my system and the EC2 node has a lower MTU, the message would not go through:

On wifi w/normal ISP:
localhost:Debug $ ping -D -s 1450 52.6.250.242
PING 52.6.250.242 (52.6.250.242): 1450 data bytes
1458 bytes from 52.6.250.242: icmp_seq=0 ttl=42 time=104.831 ms
1458 bytes from 52.6.250.242: icmp_seq=1 ttl=42 time=119.004 ms
^C
--- 52.6.250.242 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 104.831/111.918/119.004/7.087 ms
localhost:Debug $ ping -D -s 1480 52.6.250.242
PING 52.6.250.242 (52.6.250.242): 1480 data bytes
ping: sendto: Message too long
ping: sendto: Message too long
Request timeout for icmp_seq 0
ping: sendto: Message too long
Request timeout for icmp_seq 1


Tethering to O2:
localhost:Debug $ ping -D -s 1480 52.6.250.242
PING 52.6.250.242 (52.6.250.242): 1480 data bytes
ping: sendto: Message too long
ping: sendto: Message too long
Request timeout for icmp_seq 0
^C
--- 52.6.250.242 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
localhost:Debug $ ping -D -s 1450 52.6.250.242
PING 52.6.250.242 (52.6.250.242): 1450 data bytes
1458 bytes from 52.6.250.242: icmp_seq=0 ttl=42 time=107.844 ms
1458 bytes from 52.6.250.242: icmp_seq=1 ttl=42 time=105.127 ms
1458 bytes from 52.6.250.242: icmp_seq=2 ttl=42 time=120.483 ms
1458 bytes from 52.6.250.242: icmp_seq=3 ttl=42 time=102.136 ms
2015-05-13 19:03:00 +02:00
Gustav Simonsson
56a5592ea0 Update keystore code comments 2015-05-13 18:33:31 +02:00
Péter Szilágyi
3edc4698fe Merge pull request #954 from karalabe/fix-downloader-nil-panic
eth/downloader: fix nil panic caused by wrong variable use
2015-05-13 18:15:18 +02:00
Péter Szilágyi
910a6d4e46 eth/downloader: fix nil panic caused by wrong variable use 2015-05-13 17:25:01 +03:00
Péter Szilágyi
de3a71cafd eth/downloader: remove a redundant sync progress check 2015-05-13 16:56:01 +03:00
Péter Szilágyi
48ee0777a5 eth/downloader: add a user sync notificaton 2015-05-13 16:03:05 +03:00
Péter Szilágyi
ec57aa64cd eth/downloader: sync the cancel channel during cancel too 2015-05-13 14:01:08 +03:00
Péter Szilágyi
ee0c892303 eth/downloader: fix deliveries to check for sync cancels 2015-05-13 13:47:21 +03:00
Jeffrey Wilcke
7cb0e24245 Merge pull request #948 from karalabe/fix-downlaoder-activepeer-shadow
eth/downloader: fix active peer shadowing, polish func names
2015-05-13 03:46:29 -07:00
Bas van Kervel
e30e9fe979 removed invalid filename characters 2015-05-13 12:38:12 +02:00
Péter Szilágyi
d2d5dbc6fb eth/downloader: fix active peer shadowing, polish func names 2015-05-13 13:13:43 +03:00
Jeffrey Wilcke
6dec90464d Merge pull request #946 from Gustav-Simonsson/fix_geth_unlock_account
Fix hex conversion in --unlock and log when successful
2015-05-13 01:58:32 -07:00
Gustav Simonsson
b5b53d8b32 Fix hex conversion in --unlock and log when successful 2015-05-13 01:11:17 +02:00
obscuren
28d6b30c0f Merge branch 'release/0.9.20' into develop 2015-05-12 19:05:51 +02:00
obscuren
8e24378cc1 Merge branch 'release/0.9.20' 2015-05-12 19:05:33 +02:00
obscuren
8fe01b4bfa eth: 100% tx propagation 2015-05-12 19:01:01 +02:00
obscuren
36ce54e5dc cmd/geth: bump version to 0.9.20 2015-05-12 19:01:01 +02:00
Jeffrey Wilcke
d6357aa616 Merge pull request #631 from Gustav-Simonsson/improve_key_store_crypto
Improve key store crypto
2015-05-12 10:00:35 -07:00
Gustav Simonsson
e389585f1f Change default keystore dir 2015-05-12 18:33:04 +02:00
Gustav Simonsson
231fe04f03 Fix address type in js test 2015-05-12 17:48:21 +02:00
Jeffrey Wilcke
58d6ec689f Merge pull request #933 from bas-vk/issue928
replaced path with platform aware filepath module
2015-05-12 08:23:46 -07:00
Gustav Simonsson
037772fc07 fix hex conversion bug in RPC for byte slices 2015-05-12 17:22:17 +02:00
Gustav Simonsson
8001e48115 Fix natspec test (again x2) types 2015-05-12 17:22:17 +02:00
Gustav Simonsson
2c1b0ff17e Update key store to new spec but keep address field for now
* Also fix address types post-rebase
2015-05-12 17:22:17 +02:00
Gustav Simonsson
fe9e95a3fd Fix natspec e2e test accounts type (again) 2015-05-12 17:22:17 +02:00
Gustav Simonsson
940952f757 Fix HEX hack in xeth accounts() 2015-05-12 17:22:17 +02:00
Gustav Simonsson
f98e002d98 Address pull request comments; key header and hex encoding
* Remove key header from unencrypted key file format and replace
  it with a version field
* Change encoding of bytes in key files from base64 to hex
2015-05-12 17:22:17 +02:00
Gustav Simonsson
313eec33ad Revert "Add key header to unencrypted key file"
This reverts commit a94d4ba0b53c4558ab838aaed635a2ff66ddfa53.
2015-05-12 17:19:39 +02:00
Gustav Simonsson
8754f2b768 Fix common.Address / []byte type conversions 2015-05-12 17:19:39 +02:00
Gustav Simonsson
cd88295f5a Add key header to unencrypted key file 2015-05-12 17:19:39 +02:00
Gustav Simonsson
29a5a92d13 Add key header to encrypted keys
* Add key header containing key version, kdf and kdf params
* Store key header as JSON in the key file
* Read in KDF params from key header
* Include key header in MAC calculation and MAC verification
2015-05-12 17:19:39 +02:00
Gustav Simonsson
ac3371bcb6 Correct accounts hex in XETH API 2015-05-12 17:19:39 +02:00
Gustav Simonsson
da9fe951da Use common.Address type for accounts.Address 2015-05-12 17:19:39 +02:00
Gustav Simonsson
6b23094cff Improve key store passphrase crypto
* Change MAC-then-Encrypt to Encrypt-then-MAC
* Change AES256 to AES128
* Use first 16 bytes of KDF derived key for AES and
  remaining 16 for MAC
2015-05-12 17:18:30 +02:00
Gustav Simonsson
9918b6c84e Remove the awesome, ever misunderstood entropy mixing 2015-05-12 17:18:30 +02:00
Jeffrey Wilcke
f87094b660 Merge pull request #932 from obscuren/develop
xeth, rpc: implement eth_estimateGas. Closes #930
2015-05-12 07:26:38 -07:00
obscuren
dca290d525 sol: skipped source checking step 2015-05-12 16:19:14 +02:00
obscuren
ff99752ddd xeth: use same semantics as block processer for transient calls 2015-05-12 15:53:00 +02:00
Bas van Kervel
899df30c24 fixed identing 2015-05-12 15:23:19 +02:00
Bas van Kervel
95773b9673 removed redundant newlines in import block 2015-05-12 15:20:53 +02:00
obscuren
260536a729 rpc: hexData => hexNum 2015-05-12 15:02:44 +02:00
Bas van Kervel
b79dd188d9 replaced several path.* with filepath.* which is platform independent 2015-05-12 14:24:11 +02:00
obscuren
66de3f0aa8 xeth, rpc: implement eth_estimateGas. Closes #930 2015-05-12 14:21:43 +02:00
obscuren
96d4a7d087 eth, ethdb: lower the amount of open files & improve err messages for db
Closes #880
2015-05-12 14:14:56 +02:00
Jeffrey Wilcke
d82caa5ce3 Merge pull request #899 from ethersphere/solc-test-fix
compiler, cli/js: fix solidity compiler tests
2015-05-12 04:16:49 -07:00
zelig
03bf902b92 compiler, cli/js: fix solidity compiler tests failing when a different version of solc installed 2015-05-12 12:36:54 +02:00
Jeffrey Wilcke
e8d701a3b2 Merge pull request #929 from obscuren/develop
eth, ethdb: lower the amount of open files & improve err messages for db
2015-05-12 03:29:07 -07:00
obscuren
13f8f65a58 eth, ethdb: lower the amount of open files & improve err messages for db
Closes #880
2015-05-12 11:28:55 +02:00
Jeffrey Wilcke
76215ca9f3 Merge pull request #925 from obscuren/worker_owned_accounts
miner, cmd/geth: miner will not ignored owned account transactions
2015-05-11 14:23:51 -07:00
obscuren
97dd4551ef miner, cmd/geth: miner will not ignored owned account transactions
Miner does not ignore low gas txs from accounts that are owned.
2015-05-11 21:47:34 +02:00
Jeffrey Wilcke
0bedf1c376 Merge pull request #918 from obscuren/cpu_miner_fixes
cmd/geth, miner, backend, xeth: Fixed miner threads to be settable
2015-05-11 12:11:27 -07:00
obscuren
48bd48876c eth, eth/downloader: moved pending queue error message to debug 2015-05-11 17:27:34 +02:00
obscuren
21e52efdfe cmd/geth, miner, backend, xeth: Fixed miner threads to be settable
Miner threads are now settable through the admin interface (closes #897)
and specify 0 CPU worker threads when eth_getWork is called (closes #916)
2015-05-11 17:21:22 +02:00
Péter Szilágyi
064cf16099 eth/downloader: use count instead of peers, clearer 2015-05-11 17:21:22 +02:00
Péter Szilágyi
d37a2559b9 eth/downloader: revert to demotion, use harsher penalty 2015-05-11 17:21:22 +02:00
Péter Szilágyi
70c65835f4 eth/downloader: fix #910, thread safe peers & polishes 2015-05-11 17:21:22 +02:00
Jeffrey Wilcke
59bc541232 Merge pull request #915 from karalabe/downloader-threading-fixes
eth/downloader: fix #910, thread safe peers & polishes
2015-05-11 08:16:37 -07:00
Jeffrey Wilcke
fe7e284709 Merge pull request #920 from tgerring/issue917
Return 32-byte hashes from GetWork
2015-05-11 07:43:56 -07:00
Jeffrey Wilcke
0329e05823 Merge pull request #914 from ethersphere/develop
Signature on arbitrary data using the private keys of an account
2015-05-11 07:43:43 -07:00
Taylor Gerring
8e77f81586 Return 32-byte hashes from GetWork
Ensures that the Get Work results are a consistent length. Closes #917
2015-05-11 10:11:33 -04:00
Péter Szilágyi
fa53c5e074 eth/downloader: use count instead of peers, clearer 2015-05-11 17:10:00 +03:00
Daniel A. Nagy
51d4566cbf Only allow doSign to sign hashes, enforced by using the type common.Hash 2015-05-11 15:54:19 +02:00
Péter Szilágyi
ebbd8b0743 eth/downloader: revert to demotion, use harsher penalty 2015-05-11 16:47:58 +03:00
Daniel A. Nagy
49559e6d5e Interactive signature creation refactored into separate doSign function. 2015-05-11 15:46:18 +02:00
Péter Szilágyi
685862d2ce eth/downloader: fix #910, thread safe peers & polishes 2015-05-11 14:26:20 +03:00
Daniel A. Nagy
a9e1d38612 Merge branch 'develop' of github.com:ethereum/go-ethereum into develop
Conflicts:
	rpc/jeth.go
2015-05-11 12:47:14 +02:00
Jeffrey Wilcke
5176fbc6fa Merge pull request #908 from obscuren/develop
core, eth, miner: improved tx removal & fatal error on db sync err
2015-05-11 02:59:35 -07:00
obscuren
6ecba12650 miner: added log message for mining operation. #912 2015-05-11 11:39:33 +02:00
obscuren
3c6c891680 core: optimise pending transaction processing 2015-05-11 11:39:33 +02:00
obscuren
df323cdb4e rpc: display error message to stdout 2015-05-11 11:39:33 +02:00
obscuren
a2919b5e17 core, eth, miner: improved tx removal & fatal error on db sync err
* core: Added GasPriceChange event
* eth: When one of the DB flush methods error a fatal error log message
  is given. Hopefully this will prevent corrupted databases from
  occuring.
* miner: remove transactions with low gas price. Closes #906, #903
2015-05-11 11:39:33 +02:00
Jeffrey Wilcke
6674ea8d67 Merge pull request #911 from karalabe/whisper-graceful-fail
rpc, xeth: fix #881, gracefully handle offline whisper
2015-05-11 02:29:27 -07:00
Péter Szilágyi
0ad5898c0f rpc, xeth: fix #881, gracefully handle offline whisper 2015-05-11 11:53:53 +03:00
obscuren
00280e62e3 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-05-10 03:39:47 +02:00
obscuren
7d69679935 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum 2015-05-10 03:39:23 +02:00
obscuren
7551264fa6 cmd/geth, cmd/mist: version 0.9.19 2015-05-10 03:38:46 +02:00
Jeffrey Wilcke
3874f02f1b Merge pull request #894 from obscuren/develop
ethdb: set open file limit to 128 for all leveldbs
2015-05-09 18:36:50 -07:00
obscuren
0e211ae203 ethdb: set open file limit to 128 for all leveldbs 2015-05-10 01:55:39 +02:00
Jeffrey Wilcke
bd95871a89 Merge pull request #893 from obscuren/develop
eth: added a cancel method for the downloader
2015-05-09 16:54:06 -07:00
obscuren
05715f27cf eth: added a cancel method for the downloader
Added a cancel method to the downloader which gracefully shuts down any
active syncing process (hash fetching or block downloading) and resets
the queue and remove any pending blocks.

Issue with the downloader which would stall because of an active ongoing
process when an invalid block was found.
2015-05-10 00:34:07 +02:00
obscuren
45dc690947 cmd/mist: version bump 2015-05-09 13:37:22 +02:00
Jeffrey Wilcke
e289b0a1c1 Merge pull request #888 from obscuren/develop
miner, flags: Configurable gas price & log flag change
2015-05-09 04:13:16 -07:00
obscuren
658ac3c257 cmd/geth: bump version 0.9.18 2015-05-09 12:54:27 +02:00
obscuren
7eed47fad5 miner, tests: fixed block test 2015-05-09 12:51:40 +02:00
obscuren
e3a08875f6 miner: start/stop mutex locked. Closes #887 2015-05-09 12:32:36 +02:00
obscuren
a7705fc203 miner: moved gasprice to non-method 2015-05-09 12:13:46 +02:00
obscuren
13ddf20bd2 miner, cmd/geth: settable gas price from flags and console
* --gasprice "<num>" flag
* admin.miner.setGasPrice( <num> )
2015-05-09 12:04:00 +02:00
obscuren
cb1fa523e4 cmd/geth, cmd/mist, eth, flags: renamed loglevel to verbosity 2015-05-09 12:00:51 +02:00
Daniel A. Nagy
1fe70a66ba Signature test. 2015-05-08 19:37:35 +02:00
Daniel A. Nagy
62dd9833ec Merge branch 'develop' of github.com:ethereum/go-ethereum into develop 2015-05-08 17:55:53 +02:00
Daniel A. Nagy
3a01e3e39b Signing (almost) works. 2015-05-08 17:52:44 +02:00
obscuren
c8fc4cebe6 version 0.9.17 2015-05-08 17:24:41 +02:00
Jeffrey Wilcke
0214cbe0fb Merge pull request #863 from karalabe/ordered-block-download
eth/downloader: prioritize block fetch based on chain position, cap memo...
2015-05-08 08:19:53 -07:00
Jeffrey Wilcke
7c678554b5 Merge pull request #885 from fjl/p2p-fixes
p2p: more last-minute fixes
2015-05-08 07:47:56 -07:00
Péter Szilágyi
edad47bf0e eth/downloader: fix leftover state between syncs 2015-05-08 17:39:03 +03:00
Daniel A. Nagy
a487396b76 eth_sign added to API for signing arbitrary data. 2015-05-08 16:36:13 +02:00
Daniel A. Nagy
e94aa421c6 New API call for signatures. 2015-05-08 16:17:19 +02:00
Felix Lange
d4f0a67323 p2p: drop connections with no matching protocols 2015-05-08 16:09:55 +02:00
Felix Lange
e45d9bb29d cmd/utils: bump default maxpeers to 25
This should improve ethereum block propagation times since
we're not not broadcasting blocks to 100% of peers.
2015-05-08 16:09:55 +02:00
Felix Lange
9c0f36c46d p2p: use maxDialingConns instead of maxAcceptConns as dial limit 2015-05-08 16:09:55 +02:00
Felix Lange
914e57e49b p2p: fix disconnect at capacity
With the introduction of static/trusted nodes, the peer count
can go above MaxPeers. Update the capacity check to handle this.
While here, decouple the trusted nodes check from the handshake
by passing a function instead.
2015-05-08 16:09:54 +02:00
Jeffrey Wilcke
23454dcfcb Merge pull request #840 from karalabe/throttled-dialing
p2p: throttled handshakes
2015-05-08 06:53:40 -07:00
Péter Szilágyi
bd5720f480 eth, eth/downloader: handle sync errors a bit more gracefully 2015-05-08 15:22:48 +03:00
Jeffrey Wilcke
f819ac7158 Merge pull request #882 from zsfelfoldi/develop
Otto.ToValue concurrency error fixed
2015-05-08 04:54:22 -07:00
Jeffrey Wilcke
15bfae52d2 Merge pull request #876 from obscuren/jsre_fixes
jsre, cmd/geth: updated web3.js and altered settimeout
2015-05-08 04:39:33 -07:00
zsfelfoldi
d7dabce732 ToVal serialization fix 2015-05-08 13:29:48 +02:00
obscuren
f6e71b5749 updated ethereum.js 2015-05-08 13:05:20 +02:00
obscuren
351d6b0d44 jsre, cmd/geth: updated web3.js and altered settimeout 2015-05-08 13:05:20 +02:00
Jeffrey Wilcke
03473d48c1 Merge pull request #875 from Gustav-Simonsson/test_updates
Test updates
2015-05-08 03:50:14 -07:00
Jeffrey Wilcke
45c070fc8b Merge pull request #833 from ethersphere/frontier/solidity
solidity compiler and contract metadocs integration
2015-05-08 03:43:31 -07:00
zsfelfoldi
1de1359e3b Otto.ToValue concurrency error fixed 2015-05-08 12:27:35 +02:00
Jeffrey Wilcke
637b2415d9 Merge pull request #864 from obscuren/filter_changes
xeth, core, event/filter, rpc: new block and transaction filters
2015-05-08 02:56:55 -07:00
Jeffrey Wilcke
69aac4d531 Merge pull request #877 from Gustav-Simonsson/update_ethash_godep
Update ethash deps (more build fixes, tests)
2015-05-08 02:19:50 -07:00
Péter Szilágyi
9d188f73b5 eth, eth/downloader: make synchronize thread safe 2015-05-07 21:07:20 +03:00
Gustav Simonsson
3593662b0c Update ethash deps (more build fixes, tests) 2015-05-07 19:39:55 +02:00
obscuren
60b5a94428 xeth: getTransactionByHash, try pool if db fails 2015-05-07 18:23:24 +02:00
obscuren
dcfecebe1f core: get transaction by hash from transaction pool 2015-05-07 18:22:57 +02:00
obscuren
258a7b9a93 xeth: check proper queue for pending transaction filter 2015-05-07 17:20:57 +02:00
obscuren
b3c9b66f29 rpc: eth_transactionFilter => eth_newPendingTransactionFilter 2015-05-07 14:44:32 +02:00
obscuren
7e160a677d xeth, core, event/filter, rpc: new block and transaction filters 2015-05-07 14:44:32 +02:00
Péter Szilágyi
8735e5addd p2p: increase the handshake timeout in the tests 2015-05-07 15:30:56 +03:00
Péter Szilágyi
4d5a719f25 cmd, eth, p2p: introduce pending peer cli arg, add tests 2015-05-07 15:30:56 +03:00
Péter Szilágyi
af93217775 p2p: reduce the concurrent handshakes to 10/10 in/out 2015-05-07 15:22:09 +03:00
Péter Szilágyi
2060bc8bac p2p: fix dial throttling race condition 2015-05-07 15:22:08 +03:00
Péter Szilágyi
29fef349ef p2p: fix a dialing race in the throttler 2015-05-07 15:22:08 +03:00
Péter Szilágyi
3953bf0031 p2p: limit the outbound dialing too 2015-05-07 15:22:08 +03:00
Péter Szilágyi
43901c9282 eth/downloader: fix priority queue reset, add throttling test 2015-05-07 14:40:50 +03:00
Gustav Simonsson
79eb40fc9f Add bcTotalDifficultyTest and unskip now working tx tests 2015-05-07 13:03:22 +02:00
zelig
009b221692 solidity compiler and contract metadocs integration
* common/compiler: solidity compiler + tests
* rpc: eth_compilers, eth_compileSolidity + tests
* fix natspec test using keystore API, notice exp dynamically changes addr, cleanup
* resolver implements registrars and needs to create reg contract (temp)
* xeth: solidity compiler. expose getter Solc() and paths setter SetSolc(solcPath)
* ethereumApi: implement compiler related RPC calls using XEth - json struct tests
* admin: make use of XEth.SetSolc to allow runtime setting of compiler paths
* cli: command line flags solc to set custom solc bin path
* js admin api with new features debug and contractInfo modules
* wiki is the doc https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions
2015-05-07 12:58:21 +02:00
Gustav Simonsson
2b716aec54 Update JSON test files 2015-05-07 12:44:29 +02:00
Péter Szilágyi
45f8304f3c eth/downloader: fix expiration not running while fetching 2015-05-07 12:59:19 +03:00
Péter Szilágyi
4800c94392 eth/downloader: prioritize block fetch based on chain position, cap memory use 2015-05-07 10:57:34 +03:00
obscuren
97c37356fd updated ignore 2015-05-07 00:03:11 +02:00
Jeffrey Wilcke
82ac4712f1 Merge pull request #867 from Gustav-Simonsson/fix_block_tests_genesis_block_total_difficulty
Fix block tests genesis block total difficulty
2015-05-06 14:52:55 -07:00
Jeffrey Wilcke
a0cb1945ae Merge pull request #866 from fjl/p2p-last-minute
Last minute p2p fixes
2015-05-06 14:49:52 -07:00
Felix Lange
3e2a928caa p2p: stop dialing at half the maximum peer count 2015-05-06 23:44:51 +02:00
Gustav Simonsson
7bc1f487b8 Unskip now working tests, remove debug print 2015-05-06 23:25:44 +02:00
Gustav Simonsson
2808409fbd Add genesis block total difficulty in tests 2015-05-06 23:22:49 +02:00
Felix Lange
6a2fec5309 p2p, whisper: use glog for peer-level logging 2015-05-06 23:19:14 +02:00
obscuren
b719801db0 cmd/geth: gofmt screwup fix 2015-05-06 23:10:46 +02:00
obscuren
458d891c63 cmd/geth: version bump 2015-05-06 23:04:49 +02:00
Felix Lange
bcfd788661 p2p/discover: bump packet timeouts to 500ms 2015-05-06 22:59:00 +02:00
Felix Lange
fd4b75cfa8 p2p/nat: less confusing error logging 2015-05-06 22:58:03 +02:00
obscuren
090f593bc0 Merge branch 'karalabe-cherry-trusted-peers' into develop 2015-05-06 22:54:33 +02:00
obscuren
062fa049d0 fixed merge issue 2015-05-06 22:54:21 +02:00
Jeffrey Wilcke
24d44f35f2 Merge pull request #791 from fjl/discover-sha3-distance
p2p/discover: sha3-based node distance
2015-05-06 13:48:57 -07:00
Jeffrey Wilcke
323216ed85 Merge pull request #861 from obscuren/transaction_pool_fixes
core: transaction pool fixes & resending transactions
2015-05-06 11:23:58 -07:00
Jeffrey Wilcke
1f26a1b863 Merge pull request #859 from Gustav-Simonsson/ethash_reloaded
Ethash reloaded
2015-05-06 11:20:54 -07:00
obscuren
05ac1209c7 cmd/geth: limit pendingTransactions to owned accounts. 2015-05-06 18:30:56 +02:00
obscuren
eb4029257a cmd/mist: updated xeth transact 2015-05-06 18:30:56 +02:00
obscuren
5ebc22807c cmd/geth: admin, switched price with limit in arguments 2015-05-06 18:30:56 +02:00
obscuren
7fed424435 cmd/geth: implemented resending transaction with different gas settings 2015-05-06 18:30:55 +02:00
obscuren
92f998c7ef core: use removeTx instead of delete 2015-05-06 18:30:55 +02:00
obscuren
03bb88dec0 xeth, rpc: added nonce setting through RPC and xeth transact 2015-05-06 18:30:55 +02:00
Gustav Simonsson
054947def7 Add ethash linux & windows build fixes 2015-05-06 17:38:28 +02:00
Jeffrey Wilcke
aa884c052d Merge pull request #771 from zsfelfoldi/develop
jsre: support for setTimeout, sendAsync
2015-05-06 07:27:24 -07:00
Felix Lange
2adcc31bb4 p2p/discover: new distance metric based on sha3(id)
The previous metric was pubkey1^pubkey2, as specified in the Kademlia
paper. We missed that EC public keys are not uniformly distributed.
Using the hash of the public keys addresses that. It also makes it
a bit harder to generate node IDs that are close to a particular node.
2015-05-06 16:10:41 +02:00
zsfelfoldi
c54d123b31 setTimeout and sendAsync implemented
added and eval queue for serializing JSRE vm execution
2015-05-06 15:58:27 +02:00
Jeffrey Wilcke
2e9ed6f7aa Merge pull request #856 from karalabe/windows-console-color-fix
cmd/geth: colorize console output in windows
2015-05-05 04:50:48 -07:00
Péter Szilágyi
c750ef09e1 cmd/geth: fix #853 colorize console output in windows 2015-05-05 14:44:39 +03:00
Gustav Simonsson
f4341c7b7f Unskip working blocktests following ethash cache reusage 2015-05-05 08:34:29 +02:00
Gustav Simonsson
b1cc9cdc74 Integrate new ethash API and change geth makedag cmd 2015-05-05 08:24:15 +02:00
Gustav Simonsson
50659f4b48 Update ethash Godeps files 2015-05-05 07:50:04 +02:00
Péter Szilágyi
4accc187d5 eth, p2p: add trusted node list beside static list 2015-05-04 13:59:51 +03:00
Péter Szilágyi
2382da4179 cmd/mist: fix a stale error message 2015-05-04 13:11:43 +03:00
Péter Szilágyi
54db54931e p2p: add static node dialing test 2015-05-04 13:08:42 +03:00
Jeffrey Wilcke
ac85fdc75e Merge pull request #835 from obscuren/handler_errors
eth, eth/downloader: error handlers and td checks
2015-05-04 02:00:54 -07:00
obscuren
37770ed0d3 core: added unix timestamp to debug output for block proc 2015-05-03 21:49:19 +02:00
obscuren
1470b22e90 downloader: hash downloading recovery
If a peer fails to respond (disconnect, etc) during hash downloading
switch to a different peer which has it's current_hash in the queue's
peer set.
2015-05-03 16:27:03 +02:00
obscuren
ba2236fa51 cmd/geth, eth: bump version & tmp fix for incorrect TD peers 2015-05-03 14:11:47 +02:00
obscuren
f2a2b2ac70 eth/downloader: put back hashes on block overflow error 2015-05-03 14:11:00 +02:00
obscuren
493181ea09 eth/downloader: changed has to blockHashes for chain linking 2015-05-03 14:10:31 +02:00
obscuren
c5b8acbaf0 core: print ignored blocks 2015-05-03 14:09:50 +02:00
obscuren
25bc88113f eth/downloader: added additional tests 2015-05-03 14:09:33 +02:00
obscuren
c6ad3aec05 eth,core: changed NewTicker to Tick 2015-05-03 13:27:37 +02:00
obscuren
b298928c49 core: added 'ignored' status 2015-05-01 16:00:30 +02:00
obscuren
016f152b36 eth, eth/downloader: Moved block processing & graceful shutdown
The downloader is no longer responsible for processing blocks. The
eth-protocol handler now takes care of this instead.

Added graceful shutdown during block processing. Closes #846
2015-05-01 15:58:44 +02:00
Péter Szilágyi
e82ddd9198 p2p: correct a leftover trusted -> static 2015-04-30 19:34:33 +03:00
Péter Szilágyi
413ace37d3 eth, p2p: rename trusted nodes to static, drop inbound extra slots 2015-04-30 19:32:48 +03:00
obscuren
8595198c1b eth/downloader: delete blocks from queue 2015-04-30 17:51:47 +02:00
obscuren
15873fafc0 core: added a wait group to chain manager for graceful shutdown 2015-04-30 17:50:47 +02:00
Péter Szilágyi
701591b403 cmd, eth, p2p: fix review issues enumerated by Felix 2015-04-30 16:15:29 +03:00
Péter Szilágyi
1528dbc171 p2p: add trust check to handshake, test privileged connectivity
Conflicts:
	p2p/server_test.go
2015-04-30 16:06:47 +03:00
Péter Szilágyi
14f32a0c3a p2p: reduce the severity of a debug log 2015-04-30 16:04:09 +03:00
Péter Szilágyi
679c90b873 cmd/geth, cmd/utils, eth: internalize trusted node config file 2015-04-30 16:03:47 +03:00
Péter Szilágyi
de0549fabb cmd/geth, cmd/mist, cmd/utils, eth, p2p: support trusted peers 2015-04-30 16:03:10 +03:00
Felix Lange
d457a1187d common: add Hash.Generate 2015-04-30 15:02:23 +02:00
Felix Lange
72ab6d3255 p2p/discover: track sha3(ID) in Node 2015-04-30 15:02:23 +02:00
Felix Lange
b34a8ef624 p2p, p2p/discover: protocol version 4 2015-04-30 14:57:34 +02:00
Felix Lange
fc747ef4a6 p2p/discover: new endpoint format
This commit changes the discovery protocol to use the new "v4" endpoint
format, which allows for separate UDP and TCP ports and makes it
possible to discover the UDP address after NAT.
2015-04-30 14:57:33 +02:00
obscuren
e4dba36892 core: check for parent in calc TD. TD = (N != 0 == parent.TD) || (== D) 2015-04-30 14:55:21 +02:00
obscuren
28b39267d9 core, eth: verify td of received blocks 2015-04-30 13:50:59 +02:00
obscuren
9b6e8f6195 eth, eth/downloader: remove bad peers from peer set
Peers in the eth protocol handler are now being ignored for catch up.
2015-04-30 12:38:16 +02:00
Jeffrey Wilcke
3fef601903 Merge pull request #830 from obscuren/downloader-missing-parent
eth/downloader: missing parent improvement
2015-04-29 15:52:25 -07:00
obscuren
30b921ef46 cmd/geth: bump version to 0.9.14 2015-04-30 00:40:14 +02:00
obscuren
88292f35db core: remove txs from queue in addition to removal of pending 2015-04-30 00:20:59 +02:00
obscuren
2590a7dabb core: added some additional chain tests for shortest chain 2015-04-30 00:14:41 +02:00
obscuren
04c209980b eth: rely on p2p to determine block propagation 2015-04-29 22:50:58 +02:00
obscuren
01e3d694a6 p2p: added received at to peer message
p2p.Msg.ReceivedAt can be used for determining block propagation from
begining to end.
2015-04-29 22:49:58 +02:00
obscuren
9e63798d03 core/types, eth: meassure and display propagation times 2015-04-29 19:55:30 +02:00
obscuren
f8c27d7159 eth/downloader: drop block 2015-04-29 19:55:04 +02:00
obscuren
c930045834 core: fixed tetst to reflect (int, error) return by insertChain 2015-04-29 15:27:04 +02:00
obscuren
dfbf580354 eth/downloader: ignore orphan blocks in the downloader.
When blocks have been sorted and are being processed, orphan blocks
should be ignored and thrown out. The protocol handler is responsible
for downloading blocks which have missing parents.
2015-04-29 14:49:37 +02:00
obscuren
735b029db9 core: return the index of the block that failed when inserting a chain 2015-04-29 14:00:24 +02:00
Jeffrey Wilcke
764e81bf12 Merge pull request #825 from obscuren/develop
core: chain fork fix
2015-04-29 04:47:26 -07:00
Jeffrey Wilcke
bac4440e17 Merge pull request #822 from fjl/makefile-improvements
Makefile improvements
2015-04-29 04:43:38 -07:00
obscuren
13364a2dcf eth/downloader: reset the chain when parent is missing during processing 2015-04-29 13:40:39 +02:00
obscuren
745c368987 cmd/geth: bump version number 2015-04-29 12:54:41 +02:00
obscuren
4e07967711 core: fixed chain reorg during splits
Chain reorgs weren't properly handled when a chain was further ahead.
Previously we'd end up with mixed chains in our canonical numbering
sequence. Added test for this type of forking.

```
     /-o-o-o   A
o-C-+
     \-o-o-o-o B
```

Ends up with with C A1, A2, A3, B4
2015-04-29 12:51:05 +02:00
obscuren
af73d1d682 core/types: added fake parent hash / hash to String() output 2015-04-29 12:51:05 +02:00
obscuren
4b7bdc3766 eth: check if downloader is busy before showing log message 2015-04-29 12:51:05 +02:00
obscuren
7ac24d551b core: seperated proccing mutex and getting mutex 2015-04-29 12:51:04 +02:00
obscuren
9f32117457 core: bump database version 2015-04-29 12:51:04 +02:00
obscuren
a4b79f1dac core: moved mutex locks in insert blocks to start of function
Insert blocks will no longer allow processing of multiple chains at the
same time. The block lock has been moved to start of the function.
2015-04-29 12:51:04 +02:00
obscuren
04a09b7e2d core: set min gas price at startup 2015-04-29 12:51:04 +02:00
Jeffrey Wilcke
32373e3837 Merge pull request #828 from tgerring/pathfixes
Remove path separator literals
2015-04-29 01:54:47 -07:00
Taylor Gerring
f8cdff9a5d Remove path separator literals 2015-04-29 00:30:25 -05:00
Felix Lange
aa03e53ca8 Use Makefile for Travis tests 2015-04-29 02:13:37 +02:00
Felix Lange
c6b983e449 Makefile: add test target 2015-04-29 02:13:37 +02:00
Felix Lange
72d8878084 cmd/mist: always enable whisper
The default value of the Shh option is true, but cli can't
see it because it is not part of the mist options.
2015-04-29 02:13:36 +02:00
Felix Lange
eb5e43022e cmd/geth, cmd/mist: use gitCommit in node name 2015-04-29 02:13:36 +02:00
Felix Lange
71c28cfb0c Makefile: set main.gitCommit when building 2015-04-29 02:13:36 +02:00
Felix Lange
f4e5675303 cmd/mist: add blockchain version flag
This is necessary because cli doesn't see the default
value unless the flag is included.
2015-04-29 02:13:35 +02:00
Felix Lange
26fbea5cb7 README: simplify build instructions 2015-04-29 02:13:35 +02:00
Felix Lange
8fcd71920a Makefile: clean should also delete Godeps/_workspace/pkg 2015-04-29 01:28:35 +02:00
Felix Lange
12df8565cf build: run build commands from the fake workspace root
This ensures that compiler error messages contain the correct path.
2015-04-29 01:28:35 +02:00
Jeffrey Wilcke
a6a49ccbf7 Merge pull request #821 from karalabe/nodedb-fix
p2p/discover: fix api issues caused by leveldb update
2015-04-28 04:07:14 -07:00
Jeffrey Wilcke
a7d894611e Merge pull request #820 from fjl/rlp-readkind-overflow
rlp: fix list bounds check overflow (found by go-fuzz)
2015-04-28 04:04:32 -07:00
Péter Szilágyi
b569550a39 p2p/discover: fix api issues caused by leveldb update 2015-04-28 13:57:57 +03:00
Jeffrey Wilcke
91cb8cdd2a Merge pull request #793 from karalabe/discovery-node-cache
p2p/discover: persistent node database
2015-04-28 03:40:10 -07:00
Jeffrey Wilcke
e88b410b4d Merge pull request #819 from karalabe/leveldb-update
godeps: refresh leveldb, clean up stale dependencies
2015-04-28 02:40:49 -07:00
Péter Szilágyi
7e3b080f85 godeps: update leveldb and snappy, dump serpent-go 2015-04-28 12:18:01 +03:00
obscuren
99027c79fe Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
Conflicts:
	rpc/api.go
2015-04-28 11:17:41 +02:00
obscuren
bac455c011 Merge branch 'kobigurk-develop' into develop 2015-04-28 11:16:22 +02:00
obscuren
459d898705 eth, rpc, xeth: ext_hanhrate => eth_hashrate 2015-04-28 11:16:03 +02:00
obscuren
46f63ef04f Merge branch 'develop' of https://github.com/kobigurk/go-ethereum into kobigurk-develop 2015-04-28 11:10:44 +02:00
Jeffrey Wilcke
a05c420371 Merge pull request #738 from karalabe/whisper-cleanup
Whisper cleanup, part 3
2015-04-28 01:54:05 -07:00
Felix Lange
dd49c8e43d rlp: fix list bounds check overflow (found by go-fuzz)
The list size checking overflowed if the size information
for a value was bigger than the list. This is resolved by
always performing the check before reading.
2015-04-28 10:28:15 +02:00
Péter Szilágyi
978ffd3097 rpc, xeth: finish cleaning up xeth 2015-04-28 10:49:05 +03:00
Péter Szilágyi
2b9fd6b40a whisper: add full filter test suite 2015-04-28 10:49:05 +03:00
Péter Szilágyi
406e74e2af whisper: fix a small data race duirng peer connection 2015-04-28 10:49:05 +03:00
Péter Szilágyi
70ded4cbf0 xeth: fix un-decoded whisper RPC topic string bug 2015-04-28 10:49:04 +03:00
Péter Szilágyi
e252dae499 rpc: use nil topic wildcards instead of "" 2015-04-28 10:49:04 +03:00
Péter Szilágyi
db615a85ec ui/qt/qwhisper, whisper, xeth: polish topic filter, fix wildcards 2015-04-28 10:49:04 +03:00
Péter Szilágyi
ae4bfc3cfb rpc, ui/qt/qwhisper, whisper, xeth: introduce complex topic filters 2015-04-28 10:49:04 +03:00
Péter Szilágyi
15586368e5 whisper: fix spurious From identity with untargeted messages 2015-04-28 10:49:04 +03:00
Péter Szilágyi
87447f9f3f whisper: fix payload loss in case of plaintext decrypt 2015-04-28 10:49:04 +03:00
Péter Szilágyi
7f48eb8737 whisper, xeth/whisper: surface TTL and hash to the API 2015-04-28 10:49:04 +03:00
Péter Szilágyi
19bc4624ea eth: pull in a lost merge change
Ref: 21c4c155ee
2015-04-28 10:49:04 +03:00
Péter Szilágyi
7948cc0029 rpc, whisper, xeth: fix RPC message retrieval data race 2015-04-28 10:47:35 +03:00
Péter Szilágyi
5aa523e32b whisper: fix send timestamp omission during envelope opening 2015-04-28 10:47:35 +03:00
Péter Szilágyi
3563c59b12 rpc, whisper, xeth: polish whisper RPC interface 2015-04-28 10:47:35 +03:00
Péter Szilágyi
4992765032 p2p/discover: fix goroutine leak due to blocking on sync.Once 2015-04-28 10:28:04 +03:00
Jeffrey Wilcke
182d484aa7 Merge pull request #817 from tgerring/rpcglog
Remove old logger from RPC pkg
2015-04-27 14:51:00 -07:00
Jeffrey Wilcke
f54c2e75c8 Merge pull request #818 from Gustav-Simonsson/add_privkey_loading_to_block_tests
Add privkey loading to block tests
2015-04-27 14:48:49 -07:00
Taylor Gerring
3ad5243b18 Return Gas Price not Gas
And output as quantity, not data
2015-04-27 13:58:32 -05:00
Gustav Simonsson
34c94d5fcd Add loading of block test privkey if present 2015-04-27 20:30:26 +02:00
Gustav Simonsson
2a61611c4f Update JSON tests 2015-04-27 19:09:20 +02:00
Péter Szilágyi
437cf4b3ac p2p/discover: add node expirer and related tests 2015-04-27 17:38:28 +03:00
Taylor Gerring
9a17dd91a4 Add link to Windows 64-bit geth dev build 2015-04-27 09:24:25 -05:00
Taylor Gerring
b071e7f4db Remove old logger from RPC pkg 2015-04-27 09:18:55 -05:00
Péter Szilágyi
a136e2bb22 p2p/discover: parametrize nodedb version, add persistency tests 2015-04-27 15:28:17 +03:00
Péter Szilágyi
75fd738dea p2p/discover: drop a superfluous warning 2015-04-27 15:06:31 +03:00
Péter Szilágyi
706da56f75 p2p/discover: wrap the pinger to update the node db too 2015-04-27 14:56:42 +03:00
Péter Szilágyi
85b4b44235 p2p/discover: use iterator based seeding, drop old protocol test 2015-04-27 14:45:35 +03:00
Péter Szilágyi
8de8f61d36 p2p/discover: write the basic tests, catch RLP bug 2015-04-27 12:33:06 +03:00
Péter Szilágyi
0201c04b95 p2p/discovery: fix issues raised in the nodeDb PR 2015-04-27 10:19:16 +03:00
Jeffrey Wilcke
aa4c25778f Merge pull request #813 from obscuren/general_fixes
General fixes
2015-04-26 03:12:30 -07:00
obscuren
7fd368c586 geth/main: removed crazy welcome message :-( 2015-04-26 11:30:33 +02:00
obscuren
a237ff65ea web3: updated 2015-04-26 11:21:15 +02:00
obscuren
145e02fc54 core, miner: added value check on tx validation
* Changed CalcGasLimit to no longer need current block
* Added a gas * price + value on tx validation
* Transactions in the pool are now re-validated once every X
2015-04-26 11:19:40 +02:00
Jeffrey Wilcke
8d09f95bc7 Merge pull request #805 from obscuren/download_improvements
eth, eth/downloader: improve downloader and remove asynchronousness
2015-04-24 15:56:17 -07:00
obscuren
ed036a2ce7 cmd/geth: bump version number 0.9.12 2015-04-24 23:57:05 +02:00
Jeffrey Wilcke
7afbd0f20d Merge pull request #796 from Gustav-Simonsson/fix_ignoring_of_unexpected_files_in_key_dir
Fix ignore of unexpected files in key dir
2015-04-24 14:37:42 -07:00
Gustav Simonsson
b0bf12ec87 Remove unneeded allocation 2015-04-24 19:40:28 +02:00
obscuren
7ce3d06402 eth/downloader: removed update loop and synch channel 2015-04-24 18:28:46 +02:00
obscuren
405720b218 xeth, core, cmd/utils: Transaction can not be over block gas limit
Transactions will be invalidated when the tx.gas_limit > block.gas_limit
2015-04-24 17:48:13 +02:00
obscuren
3bb6da9bd3 natspec: disabled natspec test 2015-04-24 17:44:22 +02:00
Gustav Simonsson
4d1887093d Use make instead of new for allocation 2015-04-24 17:41:38 +02:00
Péter Szilágyi
8646365b42 cmd/bootnode, eth, p2p, p2p/discover: use a fancier db design 2015-04-24 18:04:41 +03:00
obscuren
1681ee9883 eth: added a few informative messages regarding downloading 2015-04-24 17:03:09 +02:00
Jeffrey Wilcke
c8e21a4d17 Merge pull request #803 from obscuren/log_filter_fixes
core: fixed wildcard topic filters. Closes #725
2015-04-24 07:43:01 -07:00
Jeffrey Wilcke
168ff36676 Merge pull request #773 from ethersphere/frontier/cli
CLI and JS admin changes
2015-04-24 06:58:31 -07:00
obscuren
a9e4b96573 eth/downloader: fixed tests 2015-04-24 15:56:18 +02:00
obscuren
d84c2202e7 eth, eth/downloader: simplified synchronisation process 2015-04-24 15:38:10 +02:00
obscuren
bd9c76097d eth/downloader: removed peer td management and best peer selection 2015-04-24 15:37:07 +02:00
obscuren
31f82eb334 eth, eth/downloader: don't require td on downloader. Fixed tests 2015-04-24 15:04:58 +02:00
obscuren
b86e7526e1 eth, eth/downloader: moved peer selection to protocol handler 2015-04-24 14:40:32 +02:00
Jeffrey Wilcke
81379cbc7b Merge pull request #804 from alexvandesande/avsa-geth
Simpler "welcome"
2015-04-24 04:57:05 -07:00
Alexandre Van de Sande
f229dc8f42 Merge branch 'avsa-geth' of https://github.com/alexvandesande/go-ethereum into avsa-geth 2015-04-24 13:51:29 +02:00
Alexandre Van de Sande
8716278ca8 Smaller frontier cover art 2015-04-24 13:50:23 +02:00
zelig
c5e9a0a71c cli: correct bootnodes flag usage help line 2015-04-24 12:46:53 +01:00
Alexandre Van de Sande
f1126dbb87 Smaller frontier cover art 2015-04-24 13:46:41 +02:00
obscuren
cd2782f59c core: fixed wildcard topic filters. Closes #725 2015-04-24 13:45:21 +02:00
zelig
6b1b5a4a2a cli/js console: if corsDomain is not given to startRpc, we fall back to value set on command line with -corsDomain 2015-04-24 12:45:11 +01:00
zelig
1b7c017076 cli: fatal error if no etherbase for mining 2015-04-24 12:45:11 +01:00
zelig
be843959cb backend: start miner in its go routine (no wait to generate DAG) 2015-04-24 12:45:11 +01:00
zelig
6512b23b98 cli: fatal error if rpc could not be started 2015-04-24 12:45:11 +01:00
zelig
7b2f25b578 cli: clean up flag descriptions, usage docs, account list uses primary and indexes, add help line to account subcnd usage 2015-04-24 12:45:11 +01:00
zelig
22450c069b js console: add cors domain optional argument to startRpc 2015-04-24 12:45:11 +01:00
zelig
a3fb41981e cmd/admin: rename debug.block to debug.processBlock; move backtrace under debug 2015-04-24 12:45:11 +01:00
Jeffrey Wilcke
9caf880ff9 Update README.md 2015-04-24 13:40:20 +02:00
Jeffrey Wilcke
31811365e0 Merge pull request #800 from obscuren/ethereum_js_update
Ethereum js update
2015-04-24 04:34:51 -07:00
obscuren
dc62fb2ee9 web3: updated 2015-04-24 11:39:43 +02:00
obscuren
92c6327593 cmd/geth, jsre: updated ethereum.js => web3.js 2015-04-24 11:37:58 +02:00
Péter Szilágyi
6def110c37 cmd/bootnode, eth, p2p, p2p/discover: clean up the seeder and mesh into eth. 2015-04-24 11:33:55 +03:00
Péter Szilágyi
971702e7a1 p2p/discovery: fix broken tests due to API update 2015-04-24 11:23:20 +03:00
Péter Szilágyi
af923c965f p2p/discovery: use the seed table for finding nodes, auto drop stale ones 2015-04-24 11:23:20 +03:00
Péter Szilágyi
5f735d6fce cmd, eth, p2p, p2p/discover: init and clean up the seed cache 2015-04-24 11:23:20 +03:00
Felix Lange
936c8e19ff p2p/discover: store nodes in leveldb 2015-04-24 11:23:20 +03:00
obscuren
516f49c812 eth: cleanup 2015-04-23 23:30:25 +02:00
Jeffrey Wilcke
b6ec1c720f Merge pull request #797 from tgerring/bootnodes
Bootnodes update
2015-04-23 11:53:18 -07:00
Jeffrey Wilcke
f5e0388f62 Merge pull request #778 from bas-vk/issue764
Moved database update loop to eth/backend
2015-04-23 11:46:27 -07:00
Jeffrey Wilcke
abe08d7be3 Merge pull request #794 from Gustav-Simonsson/block_tests_more_validations
Add block header validations for block tests
2015-04-23 11:41:57 -07:00
Taylor Gerring
24995f9ab7 Updated bootnodes
Update pub key for EU node and add new SA node
2015-04-23 13:06:07 -05:00
Taylor Gerring
154570ebd3 Cleanup README developer info 2015-04-23 13:05:37 -05:00
Bas van Kervel
c12180d005 Merge branch 'issue764' of https://github.com/bas-vk/go-ethereum into issue764 2015-04-23 18:01:15 +02:00
Bas van Kervel
c273ed7d82 Moved leveldb update loop to eth/backend
change order of block insert and update LastBlock

bugfix, wrong hash stored in blockDb
2015-04-23 17:58:58 +02:00
Bas van Kervel
5cfa0e9187 bugfix, wrong hash stored in blockDb 2015-04-23 17:35:05 +02:00
Jeffrey Wilcke
94f2adb80a Merge pull request #792 from veox/doc-crypto-secp256k1
doc: crypto/secp256k1 GMP dependency package name.
2015-04-23 08:11:11 -07:00
Noel Maersk
958c04e79a doc: crypto/secp256k1 GMP dependency package name.
Linux build documentation is mostly geared towards Ubuntu 14.04 (LTS).
Appropriate package is called `libgmp-dev` there.

Note that on pristine installations building `geth` with godep will
fail because this header is missing. This is not documented in the
top-level README, but is on the wiki:

https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu#building-geth-command-line-client

That page recommends `libgmp3-dev`, which ATM provides same version
as `libgmp-dev`.
2015-04-23 17:33:48 +03:00
Jeffrey Wilcke
2f8809df40 Merge pull request #769 from obscuren/develop
core: transaction queue
2015-04-23 02:59:56 -07:00
obscuren
7f14fbd579 core: pending txs now re-validated once every second 2015-04-23 11:50:12 +02:00
obscuren
48135657c4 miner: show error message for gas limit per account 2015-04-23 11:50:12 +02:00
obscuren
d7bab21681 natspec: fixed test to work with new queued transactions 2015-04-23 11:50:12 +02:00
obscuren
fba40e18d9 core: added accessor for queued transactions 2015-04-23 11:50:12 +02:00
obscuren
d3be1a2719 eth: moved mined, tx events to protocol-hnd and improved tx propagation
Transactions are now propagated to peers from which we have not yet
received the transaction. This will significantly reduce the chatter on
the network.

Moved new mined block handler to the protocol handler and moved
transaction handling to protocol handler.
2015-04-23 11:50:12 +02:00
obscuren
888ece0cb2 core: fixed test 2015-04-23 11:50:12 +02:00
obscuren
7edbb0110f core: set the state for the managed tx state
Set the state for the managed tx state instead of creating a new
managed state.
2015-04-23 11:50:12 +02:00
obscuren
1506e00a23 core: improved error message for invalid nonce txs 2015-04-23 11:50:11 +02:00
obscuren
7138404cb0 core: only post event once per tx & fixed test 2015-04-23 11:50:11 +02:00
obscuren
4feb5f6f9c xeth, miner: updated some logging 2015-04-23 11:50:11 +02:00
obscuren
5cb5df003d eth: start tx pool in a goroutine 2015-04-23 11:50:11 +02:00
obscuren
498b24270a core: implemented a queued approach processing transactions
Implemented a new transaction queue. Transactions with a holes in their
nonce sequence are also not propagated over the network.

N: 0,1,2,5,6,7 = propagate 0..2 -- 5..N is kept in the tx pool
2015-04-23 11:50:11 +02:00
Jeffrey Wilcke
2fe54ab233 Merge pull request #779 from Gustav-Simonsson/block_tests_reloaded
Block tests reloaded
2015-04-23 02:49:51 -07:00
Jeffrey Wilcke
0071fbed8c Merge pull request #780 from maran/arm_build
Adding flags to facilitate cross compiling to ARM
2015-04-23 02:22:39 -07:00
Jeffrey Wilcke
67cc80ba66 Merge pull request #786 from tgerring/issue739
Empty Call response should return 0x instead of 0x00. Closes #739
2015-04-23 02:22:35 -07:00
Jeffrey Wilcke
8eefcb8493 Merge pull request #782 from alexvandesande/develop
Changed "Welcome to the Frontier" to something more geeky
2015-04-23 02:11:32 -07:00
Jeffrey Wilcke
359a9773a1 Merge pull request #783 from tgerring/issue777
Issue 777
2015-04-23 02:11:20 -07:00
Jeffrey Wilcke
69788cb973 Merge pull request #784 from tgerring/issue737
Rename eth_Version to eth_protocolVersion. Closes #737
2015-04-23 02:05:20 -07:00
Gustav Simonsson
9d2a156453 Fix ignore of unexpected files in key dir 2015-04-23 05:52:41 +02:00
Gustav Simonsson
7a223721a5 Add block header validations for block tests 2015-04-23 05:32:56 +02:00
Gustav Simonsson
49da462e92 Include ZeroByteAtTheEnd and RandomByteAtTheEnd tests 2015-04-22 23:16:19 +02:00
Gustav Simonsson
4e0a2c8e8c Validate block header UncleHash against calculated hash 2015-04-22 23:16:19 +02:00
Gustav Simonsson
ec6acacc53 Unskip BlockTests/bcInvalidHeaderTest.json wrongUncleHash 2015-04-22 23:16:19 +02:00
Gustav Simonsson
9834f855fa Finally, glorious HEX 2015-04-22 23:16:19 +02:00
Gustav Simonsson
24de35ef09 Add StateTests/stMemoryStressTest.json but skip for now 2015-04-22 23:16:19 +02:00
Gustav Simonsson
5c70333a12 Exclude TransactionWithSvalue0 as it expects invalid s value to be valid 2015-04-22 23:16:18 +02:00
Gustav Simonsson
8ec8bff11c Update github.com/ethereum/tests files 2015-04-22 23:16:18 +02:00
Gustav Simonsson
573bc3e05e Explicitly skip TransactionTests/tt10mbDataField.json 2015-04-22 23:16:17 +02:00
Gustav Simonsson
7254278c09 Add test wrapper for VMTests/vmInputLimits1.json 2015-04-22 23:16:17 +02:00
Felix Lange
c745831118 Merge pull request #787 from ethereum/revert-785-revert-781-develop
Revert "Revert "refactor Dockerfile""
2015-04-22 21:36:01 +02:00
Felix Lange
33083e6f6c Revert "Revert "refactor Dockerfile"" 2015-04-22 21:35:46 +02:00
Taylor Gerring
73b3f2837f Handle bug in parent call response 2015-04-22 14:14:10 -05:00
Felix Lange
95f172d4dc Merge pull request #785 from ethereum/revert-781-develop
Revert "refactor Dockerfile"
2015-04-22 20:52:47 +02:00
Felix Lange
1a0b3d8c84 Revert "refactor Dockerfile" 2015-04-22 20:52:21 +02:00
Taylor Gerring
41e3d01e63 Rename eth_Version to eth_protocolVersion. Closes #737 2015-04-22 13:42:09 -05:00
Taylor Gerring
20bae2b8f6 Tests for magic words 2015-04-22 13:24:29 -05:00
Taylor Gerring
2ea2261156 Accept num or hex as index 2015-04-22 13:24:10 -05:00
Taylor Gerring
35ad9febce Update eth_getBlockByNumber to accept words 2015-04-22 13:14:10 -05:00
caktux
5f6c8832af Merge pull request #781 from caktux/develop
refactor Dockerfile
2015-04-22 13:46:04 -04:00
Alexandre Van de Sande
d2fab43abc Changed "Welcome to the Frontier" to something more geeky 2015-04-22 18:33:33 +02:00
caktux
39047d7d8b refactor Dockerfile 2015-04-22 11:38:54 -04:00
Maran
04e216319e Adding flags to facilitate cross compiling to ARM 2015-04-22 17:04:46 +02:00
Jeffrey Wilcke
35595560f0 Merge pull request #776 from fjl/win32-build-fixes
Win32 build fixes
2015-04-22 06:50:50 -07:00
Bas van Kervel
c9e22976f5 change order of block insert and update LastBlock 2015-04-22 12:50:33 +02:00
Bas van Kervel
07e85d8e14 Moved leveldb update loop to eth/backend 2015-04-22 12:46:41 +02:00
Felix Lange
e1f616fadf cmd/geth: improve the JS tests
These changes ensure that the JS tests run without networking
and fixes the block chain export and its associated test.
2015-04-22 12:31:19 +02:00
Felix Lange
635b66acdc p2p: return zero node from Self if the server is not running
This helps with fixing the tests for cmd/geth to run without networking.
2015-04-22 12:31:19 +02:00
Felix Lange
96e2b6bc07 miner: use 32bit atomic operations
64bit atomic operations are not available on all 32bit platforms.
2015-04-22 12:31:19 +02:00
Felix Lange
9d152d6191 common: delete BinaryLength
The test is failing the 32bit build and the function
is not used anywhere.
2015-04-22 12:31:19 +02:00
Felix Lange
2f4cc72119 Merge pull request #765 from Gustav-Simonsson/more_block_test_improvements
Further fixes to block test wrapper
2015-04-22 11:53:02 +02:00
Jeffrey Wilcke
15550dc8c5 Merge pull request #766 from tgerring/issue762
Treat hexnums as big.Int instead of int64. Closes #762
2015-04-22 02:42:16 -07:00
Taylor Gerring
13dc8627b5 Treat hexnums as big.Int instead of int64 2015-04-21 08:48:57 -05:00
Kobi Gurkan
9e03c48d43 move eth_hashrate to ext 2015-04-21 16:44:08 +03:00
Kobi Gurkan
63c5c7fb2d uses newHexNum for eth_hashrate 2015-04-21 16:44:08 +03:00
Kobi Gurkan
41b83fe1cd adds eth_hashrate RPC method 2015-04-21 16:44:08 +03:00
Jeffrey Wilcke
4ddbf81e74 Updated README to include windows builds 2015-04-21 12:38:01 +02:00
Jeffrey Wilcke
4ad8b28794 Merge pull request #760 from obscuren/develop
core: transaction fixes
2015-04-21 03:14:38 -07:00
obscuren
6c2b703c58 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-21 12:14:07 +02:00
Jeffrey Wilcke
1dc91975ad Merge pull request #756 from Gustav-Simonsson/block_test_improvements
Block test improvements
2015-04-21 03:09:35 -07:00
obscuren
f4cd66dc00 blockpool: deleted 2015-04-21 12:03:02 +02:00
obscuren
ed0817c55d core/rpc: fix for null entries in log filters. Closes #725
You can now specify `null` as a way of saying "not interested in this
topic, match all". core.Filter assumes the zero'd address to be the
wildcard. JSON rpc assumes empty strings to be wildcards.
2015-04-21 12:00:57 +02:00
Jeffrey Wilcke
8fce55b4c2 Merge pull request #763 from aboreum/develop
Remove "minGasPrice" field from JSON responses. Closes. #754
2015-04-21 02:30:40 -07:00
obscuren
093d6d5074 core: removed nonce resetting from the block processor.
All nonce error handling has been moved to the worker
2015-04-21 11:27:12 +02:00
obscuren
1d6d42919e miner: ignore a tx's transactor after a gas limit has been returned
When worker encounters a gas limit error, subsequent txs should be
ignored from that particular account. This will prevent:

1. Nonce errors been thrown all around
2. The "Known tx" error. Closes #719
3. Repeated contract address. Closes #731
2015-04-21 11:26:04 +02:00
Andy
64e8aa6260 syncing to mainline ethereum 2015-04-20 22:19:49 -06:00
Andy
3ef1cd43f6 fix for: Please remove the "minGasPrice" from block returns #754 2015-04-20 22:08:50 -06:00
Gustav Simonsson
b448390889 Further fixes to block test wrapper
* Move go test wrapper for block tests from cmd/geth to tests
* Fix logic for when tests are valid or not, by adding correct
  validations for expected valid/invalid blocks
* Change block insertion helper to work on single blocks
* Add one test case for each file in BlockTests and comment out
  the tests which are currently failing
* Add Skip call in all block tests in lieu of performance fixes
  around ethash cache which are needed before it will be fast enough
  to start / stop the node between each test
2015-04-21 05:23:10 +02:00
Jeffrey Wilcke
4a240608d4 Merge pull request #761 from aboreum/develop
trivial fix for: Broken link for detailed go build instructions #661
2015-04-20 16:04:44 -07:00
Andy
8d85e45c7d syncing to develop 2015-04-20 15:05:13 -06:00
Andy
59a7405a80 Broken link for detailed go build instructions #661 2015-04-20 14:47:12 -06:00
Andy
4494cba489 Merge branch 'develop' of https://github.com/aboreum/go-ethereum into develop
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2015-04-20 14:43:12 -06:00
Andy
859187931b fix for: Broken link for detailed go build instructions #661 2015-04-20 14:31:26 -06:00
obscuren
79bef9eb16 Merge branch 'develop' of github.com-obscure:obscuren/go-ethereum into develop 2015-04-20 21:57:00 +02:00
obscuren
b8160cc6d4 core: shuffled some code 2015-04-20 20:37:40 +02:00
Jeffrey Wilcke
99e825ad96 Merge pull request #734 from bas-vk/issue-729
admin.StopRPC added to console
2015-04-20 10:34:50 -07:00
Jeffrey Wilcke
3d7c1b8194 Merge pull request #755 from karalabe/command-flags-cleanup
cmd/geth, cmd/utils: add cli flags for pprof and whisper
2015-04-20 09:17:04 -07:00
Péter Szilágyi
3b008723db cmd/geth, cmd/utils: invert --pprof once more 2015-04-20 19:14:49 +03:00
obscuren
f28b2bb6ed core: upgraded block chain version 2015-04-20 18:12:05 +02:00
obscuren
3b45fedb81 Merge branch 'ethersphere-frontier/natspec' into develop 2015-04-20 18:09:10 +02:00
obscuren
36ec42e50c Merge branch 'frontier/natspec' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/natspec 2015-04-20 18:08:14 +02:00
Péter Szilágyi
c8e2b3710c cmd/geth, cmd/utils: use pprof disable flag, start globally 2015-04-20 18:59:41 +03:00
Gustav Simonsson
805345d135 Add block tests wrapper and fixes for tx tests
* Add fixes to parsing and converting of fields in tx tests
* Correct logic in tx tests; validation of fields and correct
  logic for when RLP decoding works/fails and when this is
  expected or not
* Rename files for consistency
* Add block tests wrapper to run block tests with go test
2015-04-20 17:46:35 +02:00
Péter Szilágyi
8830403acf cmd/geth, cmd/utils: add cli flags for pprof and whisper. 2015-04-20 18:45:37 +03:00
obscuren
76025cc424 geth: added a admin.debug.block command which reprocess the block 2015-04-20 16:03:19 +02:00
obscuren
72d065d491 core: force block process & fixed chain manager test 2015-04-20 16:02:50 +02:00
obscuren
97a9753f87 core: added chain reset mechanism on bad blocks 2015-04-20 12:58:17 +02:00
obscuren
45da3e17e2 core: added chain head reset to known block 2015-04-20 12:29:02 +02:00
obscuren
52584596d4 geth: bump version number 2015-04-20 12:01:39 +02:00
obscuren
97b0c4b697 core: moved TD calculation from proc to chain 2015-04-20 12:01:20 +02:00
obscuren
fa729a0c55 miner: go fmt 2015-04-20 00:41:50 +02:00
Vitalik Buterin
5caf1aa1a9 Switched getWork third output from difficulty to target 2015-04-19 17:42:21 -04:00
zelig
093a9106b0 contract addresses include hex prefix
- simplify resolver and tests
- added missing test for KeyToUrl
- fix notice error message and its test with !%x(MISSING)
- natspec test: insertTx modified - does not prepend 0x to contract address
- disable networking in e2e test
2015-04-19 21:09:30 +01:00
obscuren
2cc9211269 miner: fixed remote miner current work 2015-04-19 21:58:58 +02:00
zelig
71c974f3eb fix end to end test import cycle 2015-04-19 20:57:50 +01:00
zsfelfoldi
e9874cbcc1 fixed resolver test 2015-04-19 20:57:50 +01:00
zsfelfoldi
929428d602 URLhint support for URLs longer than 32 bytes 2015-04-19 20:57:49 +01:00
zsfelfoldi
b6fe9e0c83 added missing source file 2015-04-19 20:57:49 +01:00
zsfelfoldi
bb793c829f fixed incomplete merge 2015-04-19 20:57:49 +01:00
zsfelfoldi
d8fb834386 test account is no longer permanently in genesis block, only put there when testing 2015-04-19 20:57:49 +01:00
zsfelfoldi
dba2367157 NatSpec contracts are now not in the genesis block but added by the test 2015-04-19 20:57:49 +01:00
zsfelfoldi
f255336c2c utils linked to natspec notice eval, test notice now using utils.toHex() 2015-04-19 20:57:49 +01:00
zsfelfoldi
c4b7d4d3f7 NatSpec cli option, resolver tests passing 2015-04-19 20:57:49 +01:00
zsfelfoldi
b46e152171 default fallback NatSpec messages 2015-04-19 20:57:49 +01:00
zsfelfoldi
8e6a068d2d natspec test bugfix 2015-04-19 20:57:49 +01:00
zsfelfoldi
b635cad9fe NatSpec passing end to end test 2015-04-19 20:57:49 +01:00
zsfelfoldi
94489b2269 s 2015-04-19 20:57:49 +01:00
zsfelfoldi
e2d333d209 NatSpec contracts in genesis block, end to end test (unfinished) 2015-04-19 20:57:49 +01:00
zelig
ac0e5e8b6d resolver tests
- add resolver tests and fix resolver to pass
- statereg constructor fixed
- comments added to natspec plus docserver integration for natspec userdoc fetching
2015-04-19 20:57:49 +01:00
zelig
3a540425a3 reorg:
- statereg methods move to natspec/resolver/docserver
- fix failing test on invalid js input
2015-04-19 20:57:48 +01:00
zelig
5b0ea1044a add docserver using net/http Transport/Roundtrip 2015-04-19 20:57:48 +01:00
zsfelfoldi
3136bae4a5 NatSpec, URL register storage retrieval
fixed 2/3 tests
2015-04-19 20:57:48 +01:00
zelig
97a602864a add common/resolver skeleton 2015-04-19 20:57:48 +01:00
zelig
45676382b6 natspec integrated to console frontend confirmTransaction 2015-04-19 20:57:48 +01:00
zelig
d0b3536593 new natspec
- constructor takes abidoc, userdoc
- json parsing of userdoc
- method found by abi data
- notice found from method
2015-04-19 20:57:48 +01:00
obscuren
ea11dba00b Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-19 21:46:41 +02:00
obscuren
5dd56bb474 geth: admin download status 2015-04-19 21:46:19 +02:00
obscuren
2c1a6a349b miner: removed default timer & update dag when threads > 0 2015-04-19 21:45:40 +02:00
Jeffrey Wilcke
e6d36fe356 Merge pull request #748 from fjl/build-script-unix
Makefile: for non-gophers
2015-04-19 17:58:42 +02:00
obscuren
ed07ffcde5 downloader: fixed tests with low ttl 2015-04-19 17:37:01 +02:00
obscuren
dcf1a1988a moved 2015-04-19 17:14:15 +02:00
obscuren
8eff550e8b Merge branch 'fjl-rlp-size-validation' into develop 2015-04-19 17:07:59 +02:00
obscuren
8f3a7e41de Merge branch 'rlp-size-validation' of https://github.com/fjl/go-ethereum into fjl-rlp-size-validation
Conflicts:
	eth/protocol.go
2015-04-19 17:07:40 +02:00
obscuren
4683f9c0a7 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-19 13:33:39 +02:00
obscuren
cce4158cfc Removed debug println 2015-04-19 13:33:14 +02:00
obscuren
3d497be9bd eth: drop blocks with low TD 2015-04-19 13:31:37 +02:00
obscuren
6e1aa91aaf geth: added getBlockRlp for dumping block in rlp format 2015-04-19 13:30:55 +02:00
obscuren
c58918c84a downloader: moved chunk ignoring. Fixes issue with catching up 2015-04-19 13:30:34 +02:00
Bas van Kervel
61885aa965 Don't export types/functions 2015-04-19 10:01:50 +02:00
Bas van Kervel
2c229bac00 Replaced channel pointer field with non pointer channel 2015-04-19 09:55:41 +02:00
Jeffrey Wilcke
9ec56637f9 Merge pull request #749 from fjl/fix-nodekey-persistence
Fix p2p node key persistence
2015-04-19 01:56:56 +02:00
obscuren
4340996572 eth: temp 100% block propagation because of the current state of the net 2015-04-19 01:40:01 +02:00
obscuren
5c59d95532 downloader: defer peer reset after download 2015-04-19 01:39:37 +02:00
Felix Lange
4907d28967 crypto: update {Load,Save}ECDSA comments to mention hex encoding 2015-04-19 01:33:00 +02:00
Felix Lange
da4a0e0555 eth: fix node key persistence
crypto.LoadECDSA has been modified to expect hex data.
The key was being saved as raw bytes, causing the file
to be rewritten on every start.
2015-04-19 01:28:41 +02:00
Felix Lange
48f23746f0 Makefile: for non-gophers
Many people need or want to build go-ethereum from the git repository,
mostly to stay up to date with recent changes. We cannot expect that
people without Go experience grok the Go workspace concept.

With the Makefile, building from github requires only
three steps (provided that a Go toolchain is installed):

    - git clone https://github.com/ethereum/go-ethereum
    - ... install C libraries (libgmp, etc.) ...
    - make
2015-04-19 00:42:34 +02:00
obscuren
86ecdcd5ff downloader: reset hashTtl on receive 2015-04-19 00:15:05 +02:00
obscuren
71aa5fe8a3 Merge branch 'downloader-proto' into develop 2015-04-19 00:09:12 +02:00
obscuren
164b878854 cleanup 2015-04-19 00:08:57 +02:00
Felix Lange
c453f1f370 tests: hopefully improve test conversion helpers
(cherry picked from commit 035a30acbefb5eeadc1fc8dbd567775d5688f8a9)
2015-04-19 00:07:09 +02:00
Felix Lange
235ed7ecb9 cmd/geth, tests: enable running multiple tests from a single file
This commit also changes the block test loading so tests containing
invalid RLP blocks can be loaded and return an error only when they are
run.

(cherry picked from commit 898ba87984791249586b97c9ce340dd087b79d67)
2015-04-19 00:06:52 +02:00
obscuren
434dea3caf eth: removed debug messages to stdout 2015-04-19 00:03:26 +02:00
Felix Lange
2ce21cefdc eth: use NewDB hook also for extra DB
(cherry picked from commit d5083033f15bb815a6212eddae16a7125db58738)
2015-04-18 23:59:31 +02:00
obscuren
50e096e627 downloader: don't remove peers. keep them around 2015-04-18 23:56:08 +02:00
obscuren
03b4cf74a2 geth: added identity flag which allows to set a custom node name 2015-04-18 23:53:30 +02:00
obscuren
d34e4dc5ac Merge branch 'develop' into downloader-proto 2015-04-18 21:26:43 +02:00
obscuren
84f1af6413 core: merge using equal block numbers rather than the current block 2015-04-18 21:23:42 +02:00
obscuren
c8cc523d4d miner: reverted back to old event 2015-04-18 20:51:05 +02:00
obscuren
a1d97ea4db typo 2015-04-18 20:35:49 +02:00
obscuren
c6c22301fa miner: changed listener 2015-04-18 20:26:17 +02:00
obscuren
6830ddb659 downloader: free up peers from work when the downloader resets 2015-04-18 20:25:55 +02:00
obscuren
7c5d50f627 downloader: throw an error if there are no peers available for download
If all peers have been tried during the block download process and some
hashes are unfetchable (available peers > 0 and fetching == 0) throw an
error so the process can be aborted.
2015-04-18 19:30:29 +02:00
obscuren
78e37e98e7 downloader: fixed a race condition for download status 2015-04-18 19:14:25 +02:00
obscuren
0d536734fe eth: adapted to new synchronous api of downloader's AddBlock 2015-04-18 18:57:59 +02:00
obscuren
c2c24b3bb4 downloader: improved downloading and synchronisation
* Downloader's peers keeps track of peer's previously requested hashes
  so that we don't have to re-request
* Changed `AddBlock` to be fully synchronous
2015-04-18 18:55:13 +02:00
obscuren
60613b57d1 downloader: make sure that hashes are only accepted from the active peer 2015-04-18 17:35:03 +02:00
obscuren
ff67fbf964 Merge branch 'develop' into downloader-proto 2015-04-18 15:14:56 +02:00
obscuren
525cefa37a updated ethash 2015-04-18 15:14:44 +02:00
obscuren
8244825bbf downloader: reset the queue if a peer response with an empty hash set 2015-04-18 15:14:12 +02:00
obscuren
eef4776b5b eth: ignore NewBlockMsg with lower td 2015-04-18 14:25:22 +02:00
obscuren
1bc2d83b6f core: improved uncle validation error message 2015-04-18 14:24:44 +02:00
obscuren
8f873b762b downloader: all handlers check for isBusy 2015-04-18 03:15:26 +02:00
obscuren
a6c0a75f9a eth: fixed proper BroadcastBlock for mined blocks 2015-04-18 02:38:13 +02:00
obscuren
c39a7b5c0d Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-18 02:33:04 +02:00
obscuren
89fd752659 rpc: set from. Closes #742 2015-04-18 02:32:55 +02:00
obscuren
f1ae3dc4aa geth: bump version number 2015-04-18 02:27:50 +02:00
obscuren
12e8d9c4dd eth: listen for mined blocks and propagate using the protocol manager 2015-04-18 02:27:37 +02:00
obscuren
ecc74d76cc eth: drop blocks that are known 2015-04-18 02:24:24 +02:00
obscuren
cc436c4b28 eth: additional cleanups to the subprotocol, improved block propagation
* Improved block propagation by sending blocks only to peers to which, as
  far as we know, the peer does not know about.
* Made sub protocol its own manager
* SubProtocol now contains the p2p.Protocol which is used instead of
  a function-returning-protocol thing.
2015-04-18 02:21:07 +02:00
obscuren
c2f410214c eth: began split up of peers and protocol manager 2015-04-18 01:11:09 +02:00
obscuren
2339ee9910 Merge branch 'develop' into downloader-proto
Conflicts:
	eth/downloader/downloader.go
2015-04-18 01:10:32 +02:00
Felix Lange
7dc6c33873 Merge pull request #736 from frozeman/develop
add extra space to miner icon
2015-04-17 22:17:50 +02:00
Fabian Vogelsteller
576393550d add extra space to miner icon 2015-04-17 15:00:37 +02:00
Felix Lange
7180699d40 rlp: require declared number of input elements for array types 2015-04-17 14:45:10 +02:00
Felix Lange
9c7281c17e p2p: make DiscReason bigger than byte
We decode into [1]DiscReason in a few places. That doesn't work anymore
because package rlp no longer accepts RLP lists for byte arrays.
2015-04-17 14:45:10 +02:00
Felix Lange
4d5a518a0b rlp: stop accepting lists for byte slices and byte arrays 2015-04-17 14:45:10 +02:00
Felix Lange
574d5d6ae6 core/types: add rlp tag "nil" for Transaction.Recipient 2015-04-17 14:45:10 +02:00
Felix Lange
cad64fb911 rlp: stricter rules for structs and pointers
The rules have changed as follows:

* When decoding into pointers, empty values no longer produce
  a nil pointer. This can be overriden for struct fields using the
  struct tag "nil".
* When decoding into structs, the input list must contain an element
  for each field.
2015-04-17 14:45:09 +02:00
Felix Lange
1e2c93aa2d rlp: reject non-minimal input strings
Input strings of length 1 containing a byte < 56 are non-minimal and
should be encoded as a single byte instead. Reject such strings.
2015-04-17 14:45:09 +02:00
Felix Lange
6e9f8035a1 rlp: stricter validation of canonical integer format
All integers (including size information in type tags) need to be
encoded using the smallest possible encoding. This commit expands the
stricter validation introduced for *big.Int in commit 59597d23a5
to all integer types and size tags.
2015-04-17 14:45:09 +02:00
Felix Lange
6788f955c2 rlp: fix handling of single byte zero when decoding into a pointer
A single zero byte carries information and should not set the pointer
to nil. This is arguably a corner case. While here, fix the comment
to explain pointer reuse.
2015-04-17 14:45:09 +02:00
Felix Lange
509d0a8d78 whisper: fix comment for rlpenv 2015-04-17 14:45:09 +02:00
Felix Lange
eedbb1ee9a p2p/discover: use rlp.DecodeBytes 2015-04-17 14:45:09 +02:00
Felix Lange
2750ec47b7 rlp: fix integer overflow in list element size validation
It is not safe to add anything to s.size.
2015-04-17 14:45:09 +02:00
Felix Lange
56a48101dc cmd/rlpdump, cmd/utils, eth, p2p, whisper: use rlp input limit 2015-04-17 14:45:09 +02:00
Felix Lange
c35f4fd0bd rlp: check top-level value sizes against input limit
This is a preliminary fix for #420 (SEC-18 RLP decoder unsafe
allocation). If a sane input limit is set on the rlp.Stream,
it should no longer be possible to cause huge []byte allocations.
2015-04-17 14:42:41 +02:00
Felix Lange
4020258801 Merge pull request #718 from karalabe/whisper-cleanup
Whisper cleanup, part 2
2015-04-17 14:10:55 +02:00
obscuren
73eb8e8c20 eth: basic implementation of the downloader 2015-04-17 13:54:18 +02:00
Péter Szilágyi
4afc22ba6e whisper: cleanup lefover scoping 2015-04-17 14:11:46 +03:00
Péter Szilágyi
bd14bd6c5b whisper: hide some internal types 2015-04-17 13:25:18 +03:00
Jeffrey Wilcke
d3ed3285e9 Merge pull request #733 from fjl/p2p-dial-timer
p2p: fix the dial timer
2015-04-17 11:32:55 +02:00
Felix Lange
5528abc795 p2p: fix the dial timer
The dial timer was not reset properly when the peer count reached
MaxPeers.
2015-04-17 08:17:01 +02:00
Jeffrey Wilcke
545ff1e3f3 Merge pull request #728 from tgerring/issue727
Fix RPC Call output when empty
2015-04-17 00:17:40 +02:00
obscuren
2c2ddcbf88 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-17 00:11:58 +02:00
obscuren
eac2df02d1 downloader: fixed a typo 2015-04-17 00:11:45 +02:00
Jeffrey Wilcke
b6d1724dd9 Merge pull request #730 from Gustav-Simonsson/update_transaction_tests
Update transaction tests
2015-04-17 00:09:10 +02:00
Bas van Kervel
ead3dd9759 Stop accepted and alive connections (http keep-alive) when the rpc service is stopped 2015-04-16 19:23:57 +02:00
Péter Szilágyi
e5a03eb066 whisper: don't issue signature warning if none present 2015-04-16 18:24:39 +03:00
Bas van Kervel
57f93d25bd admin.stopRPC support added which stops the RPC HTTP listener 2015-04-16 12:56:51 +02:00
Péter Szilágyi
e5e91e9eb3 whisper: track active peers, add peer cache expiry test 2015-04-16 13:05:35 +03:00
Péter Szilágyi
ee6531c5ff whisper: remove dead code, rename a few constants 2015-04-16 11:20:01 +03:00
obscuren
205378016f downloader: added demotion / promotion in prep. for rep. system 2015-04-16 02:16:33 +02:00
obscuren
eda10c7317 downloader: updated downloader and fixed issues with catch up
Properly ignore blocks coming from peers not in our peer list (blocked)
and do never request anything from bad peers. Added some checks to
account for blocks known when requesting hashes (missing parents).
2015-04-16 01:29:32 +02:00
obscuren
3a51c3b584 Merge branch 'develop' into downloader-proto 2015-04-16 01:28:24 +02:00
obscuren
c4678ffd77 downloader: updated downloader and fixed issues with catch up
Properly ignore blocks coming from peers not in our peer list (blocked)
and do never request anything from bad peers. Added some checks to
account for blocks known when requesting hashes (missing parents).
2015-04-16 00:14:31 +02:00
obscuren
dff39553d4 core: changed split detection to also account for number less than 2015-04-16 00:11:40 +02:00
Gustav Simonsson
c617a6ec79 Fixes for TransactionTests
* Include tests which now has consistent HEX encodings
* Comment out two failing tests: "
  "TransactionWithHihghNonce" due to wrong nonce size
  "TransactionWithSvalueHigh" due to wrong ECDSA s range
* Cleanup conversion functions and fix expected encodings for
  tests validation fields
2015-04-15 22:37:16 +02:00
Gustav Simonsson
2d8a2d0c99 Update JSON tests 2015-04-15 22:36:33 +02:00
Taylor Gerring
6388767df0 Fix call output when empty 2015-04-15 12:45:20 -05:00
obscuren
ec6cbb914b miner: start a newly registered agent if the miner is running. Closes #681 2015-04-15 17:04:22 +02:00
obscuren
52c874a609 common: Added debug reporter
NOTE: For known, non-consensus, hard to reproduce bugs consider the
following method `common.Report("extra", stuff, "you need logged")` will
give you a stack trace and a friendly request to submit it as an issue
on our issue tracker.
2015-04-15 16:39:44 +02:00
obscuren
eaf73b55bc miner: moved bad uncle logging to ridiculous log level. Closes #720 2015-04-15 12:12:20 +02:00
Péter Szilágyi
6ceb253f74 whisper: use async handshakes to handle blocking peers 2015-04-15 13:01:22 +03:00
obscuren
5d2138a2b2 core: fixed issue for logs filter. Closes #629
Log filter `Address` field was cast to a Hash which causes it to always
fail.
2015-04-15 11:59:41 +02:00
obscuren
ccb4722a59 core/types: Changed bloom lookup to take anything bytes backed 2015-04-15 11:58:45 +02:00
Péter Szilágyi
46ea193a49 whisper: remove some unneeded testing complexity 2015-04-15 12:50:10 +03:00
Péter Szilágyi
bcf41797ca whisper: global message expiration tests, polishes 2015-04-15 10:50:31 +03:00
obscuren
d82aaf617c rpc: changed logging to use glog 2015-04-15 00:09:13 +02:00
obscuren
f46af4508b geth: fixed failing cli tests 2015-04-14 21:26:28 +02:00
obscuren
8db7b2374c rpc: change eth_protocolVersion to eth_version. Closes #714 2015-04-14 20:47:21 +02:00
Péter Szilágyi
4fb7ab5d09 whisper: mock tests to use simulated peers 2015-04-14 19:00:57 +03:00
Péter Szilágyi
86372b20c0 whisper: add basic tests for the whiper peers 2015-04-14 18:21:56 +03:00
Péter Szilágyi
f6efdd8aad whisper: shorten constants to TTL and PoW 2015-04-14 15:16:02 +03:00
Péter Szilágyi
1a4cfc173e whisper, xeth/whisper, ui/qt/qwhispe: fix API polish breakages 2015-04-14 15:02:31 +03:00
Péter Szilágyi
e2b7498c9d whisper: add known message expiration to peers, cleanup 2015-04-14 14:28:59 +03:00
obscuren
13eb46ea94 geth: added print block to admin 2015-04-14 12:49:30 +02:00
obscuren
9800c84348 eth: limit the amount of peers that will receive Block/Tx messages
All transaction and block messages are now limited using `sqrt(peers)`
2015-04-14 12:49:15 +02:00
obscuren
8310bcda61 state: fixed mutex lockes 2015-04-14 12:47:54 +02:00
obscuren
474aa924ca p2p: added limiter function to limit package broadcasting 2015-04-14 12:47:31 +02:00
Péter Szilágyi
59bff46505 whisper: general cleanups, documentation 2015-04-14 13:24:43 +03:00
Péter Szilágyi
5205b2f19b whisper: fix anonymous broadcast drop, add broadcast tests 2015-04-14 12:12:47 +03:00
Péter Szilágyi
4af7743663 whisper: add utility functions for creating topics 2015-04-14 11:12:09 +03:00
obscuren
b7e1b686aa Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-14 00:38:53 +02:00
Jeffrey Wilcke
2ea98d9b74 Merge pull request #704 from fjl/p2p-concurrency-fixups
p2p: more concurrency fixups
2015-04-14 00:38:47 +02:00
obscuren
07eebc38b2 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-14 00:38:11 +02:00
obscuren
333d4e0f27 core: during split properly insert parent blocks
During a split parent and grand parent were included in the database but
not in the canonical chain (numbered chain). Added a `merge` function
which finds the common ancestor of the chains and reinserts the missing
blocks.
2015-04-14 00:20:29 +02:00
Felix Lange
f6f9a0d515 Merge pull request #709 from ligi/patch-1
Fix links
2015-04-13 23:46:17 +02:00
ligi
3a33428578 Fix links
Where 404s before - now linking to the path that they stay valid a little longer ;-)
2015-04-13 23:09:23 +02:00
obscuren
4f3c169b4e miner: don't break loop when encountering gas limit reach err
Processing transactions should continue when a transaction throws a gas
limit reached error. Other transactions may actually succeed.
2015-04-13 22:58:53 +02:00
obscuren
d423305f07 state: fixed nonce issue in managed state
Rlock => Lock when creating a new nonce
2015-04-13 22:57:03 +02:00
obscuren
d61ec9ca76 rpc: removed hash from LogRes. Closes #701 2015-04-13 21:28:05 +02:00
Felix Lange
0217652d1b p2p/discover: improve timer handling for reply timeouts 2015-04-13 18:08:11 +02:00
Felix Lange
b8aeb04f6f p2p/discover: remove unused field Node.activeStamp 2015-04-13 17:44:14 +02:00
Felix Lange
b9929d289d p2p: fix unsynchronized map access during Server shutdown
removePeer can be called even after listenLoop and dialLoop have returned.
2015-04-13 17:37:32 +02:00
obscuren
333e539ce2 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-13 17:35:46 +02:00
Jeffrey Wilcke
1fa844aaf5 Merge pull request #702 from ethersphere/frontier/blockpool
blockpool stability fixes:
2015-04-13 17:35:25 +02:00
Jeffrey Wilcke
5f9346bc7a Merge pull request #700 from bas-vk/issue_650
Added blockchain DB versioning support, closes #650
2015-04-13 17:34:34 +02:00
Felix Lange
995fab2ebc p2p: fix yet another disconnect hang
Peer.readLoop will only terminate if the connection is closed. Fix the
hang by closing the connection before waiting for readLoop to terminate.

This also removes the british disconnect procedure where we're waiting
for the remote end to close the connection. I have confirmed with
@subtly that cpp-ethereum doesn't adhere to it either.
2015-04-13 17:34:08 +02:00
obscuren
97d2954e22 eth: added downloader for syncing up the chain 2015-04-13 17:22:32 +02:00
Felix Lange
79a6782c1c p2p: fix goroutine leak when handshake read fails
This regression was introduced in b3c058a9e4.
2015-04-13 17:06:19 +02:00
Jeffrey Wilcke
ad4891a09a Merge pull request #689 from Gustav-Simonsson/add_transaction_tests
Add transaction tests
2015-04-13 16:55:21 +02:00
obscuren
a8a2b2a488 downloader: added missing blocks catchup functionality
When a parent is missing in the block list an attempt should be made to
fetch the missing parent and grandparents.
2015-04-13 16:38:32 +02:00
Péter Szilágyi
cb707ba50c whisper: push work in progress for bug report 2015-04-13 16:19:34 +03:00
zelig
3d57e377a4 blockpool stability fixes:
- follow up locks and fix them
- chainManager: call SetQueued for parentErr future blocks, uncomment TD checks, unskip test
- make ErrIncorrectTD non-fatal to be forgiving to genuine mistaken nodes (temp) but demote them to guard against stuck best peers.
- add purging to bounded nodeCache (config nodeCacheSize)
- use nodeCache when creating blockpool entries and let non-best peers add blocks (performance boost)
- minor error in addError
- reduce idleBestPeerTimeout to 1 minute
- correct status counts and unskip status passing status test
- glogified logging
2015-04-13 13:13:55 +01:00
Felix Lange
faa2747809 Merge pull request #690 from karalabe/whisper-cleanup
Whisper cleanup, part 1
2015-04-13 13:39:59 +02:00
Péter Szilágyi
89358d25a4 whisper: start adding integration tests 2015-04-13 13:15:01 +03:00
Péter Szilágyi
9a53390f49 whisper: clean up and integrate topics 2015-04-13 12:16:51 +03:00
Péter Szilágyi
7b501906db whisper: separate out magic number from the code 2015-04-13 11:31:51 +03:00
Bas van Kervel
49a513bdeb Added blockchain DB versioning support, closes #650 2015-04-13 10:13:52 +02:00
obscuren
7dcb9825c3 downloader: return an error for peer.fetch and return chunk to queue
If a peer was somehow already fetching and somehow managed to end up in
the `available` pool it should return it's work.
2015-04-12 13:36:01 +02:00
Péter Szilágyi
5467e7b312 whisper: fix comment entity capitalizations 2015-04-12 14:34:53 +03:00
obscuren
6efa8db888 downloader: renamed chunks to queue 2015-04-12 13:24:38 +02:00
obscuren
acf8452c33 downloader: implemented new downloader 2015-04-12 12:38:25 +02:00
Jeffrey Wilcke
61db7a71dd Merge pull request #695 from ethersphere/frontier/blockpool
bugfixes for headsection deadlocks
2015-04-11 10:46:34 +02:00
zelig
406feee570 bugfixes for headsection deadlocks
- switchC initialised as closed
- move select in setChainInfoFromBlock out of peer lock
2015-04-11 04:58:53 +01:00
obscuren
f047699afb Updated glog 2015-04-10 19:59:07 +02:00
obscuren
3aa5437a10 Set input to nil for create 2015-04-10 19:59:01 +02:00
obscuren
36fe11378c Bump 2015-04-10 18:21:27 +02:00
obscuren
eb75a77151 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 18:21:09 +02:00
Jeffrey Wilcke
6107b53de0 Merge pull request #692 from ethersphere/frontier/blockpool
td update from node + bugfix
2015-04-10 18:20:23 +02:00
obscuren
5d4f69f483 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 17:59:38 +02:00
Jeffrey Wilcke
92fbb61625 Merge pull request #691 from fjl/discovery-fixes
p2p: a bunch of fixes
2015-04-10 17:59:32 +02:00
obscuren
3d29805322 Added pprof 2015-04-10 17:38:06 +02:00
zelig
da7332a731 td update from node
- reorg and simplify AddBlock
- introduce nodeCache
- TestPeerPromotionByTdOnBlock unskipped and passes
- move switchC/idleC channel creation around: solves deadlock (now respects the contract with section process: either can activate or complete at any one time)
2015-04-10 16:36:40 +01:00
Felix Lange
c5332537f5 p2p: limit number of lingering inbound pre-handshake connections
This is supposed to apply some back pressure so Server is not accepting
more connections than it can actually handle. The current limit is 50.
This doesn't really need to be configurable, but we'll see how it
behaves in our test nodes and adjust accordingly.
2015-04-10 17:24:41 +02:00
Felix Lange
56977c225e p2p: use RLock instead of Lock for pre-dial checks 2015-04-10 17:23:09 +02:00
Felix Lange
b3c058a9e4 p2p: improve disconnect signaling at handshake time
As of this commit, p2p will disconnect nodes directly after the
encryption handshake if too many peer connections are active.
Errors in the protocol handshake packet are now handled more politely
by sending a disconnect packet before closing the connection.
2015-04-10 16:57:56 +02:00
Péter Szilágyi
f8a4cd7ec1 xeth/whisper, ui/qt/qwhisper: fix API update breaks. 2015-04-10 17:03:08 +03:00
Péter Szilágyi
0e4f21fc37 whisper: polish the Envelope a bit, prep for tests. 2015-04-10 16:52:01 +03:00
Péter Szilágyi
7d8ce53eca whisper: polish the messages, fix some bugs, tests
Bugs fixed:
  - Use randomly generated flags as the spec required.
  - During envelope opening check the first bit only for signature.
2015-04-10 15:53:21 +03:00
Felix Lange
99a1db2d40 p2p: don't mess with the socket deadline in Peer.readLoop
netWrapper already sets a read deadline in ReadMsg.
2015-04-10 13:26:28 +02:00
Felix Lange
145330fdf2 p2p: properly decrement peer wait group counter for setup errors 2015-04-10 13:26:27 +02:00
Felix Lange
f1d710af00 p2p: fix Peer shutdown deadlocks
There were multiple synchronization issues in the disconnect handling,
all caused by the odd special-casing of Peer.readLoop errors. Remove the
special handling of read errors and make readLoop part of the Peer
WaitGroup.

Thanks to @Gustav-Simonsson for pointing at arrows in a diagram
and playing rubber-duck.
2015-04-10 13:26:27 +02:00
Felix Lange
22d1f0faf1 p2p: improve peer selection logic
This commit introduces a new (temporary) peer selection
strategy based on random lookups.

While we're here, also implement the TODOs in dialLoop.
2015-04-10 13:26:27 +02:00
Felix Lange
7be05b4b9d p2p/discover: don't log packet content 2015-04-10 13:26:27 +02:00
Felix Lange
9cd8c96157 p2p/discover: make packet processing less concurrent 2015-04-10 13:26:27 +02:00
Péter Szilágyi
7e54a9c07f whisper: rename test file according to Go style 2015-04-10 13:46:08 +03:00
Péter Szilágyi
a4c8e947b0 whisper: make the test app runnable & do something inside 2015-04-10 13:42:49 +03:00
Gustav Simonsson
6d20d634ca Enable more tx tests by expecting most common encoding of values 2015-04-10 12:34:55 +02:00
Gustav Simonsson
6dc2146ed7 Remove unneeded map assignments for working tx RLP tests 2015-04-10 12:03:46 +02:00
Gustav Simonsson
9ac5671c18 Add TransactionTests wrapped as Go tests
* Add initial go wrapping for TransactionTests with some tests
  disabled in lieu of consistent HEX encodings and a few other
  pending bugfixes
* TODO: Consider better way of perhaps modelling each test in
  the JSON files as a single Go test, instead of one Go test per
  JSON file
2015-04-10 11:55:31 +02:00
Gustav Simonsson
1e18f4544b Update JSON test files 2015-04-10 11:52:31 +02:00
obscuren
fc1d1f9afd Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 11:03:46 +02:00
obscuren
3755cfccb3 Skipped td test 2015-04-10 11:03:36 +02:00
Jeffrey Wilcke
20fd60902b Merge pull request #687 from karalabe/develop
xeth: fix #640, panic converting nil recipient to hex.
2015-04-10 11:02:25 +02:00
Péter Szilágyi
d1729acd2b cmd/mist: fix another nil recipient address panic. 2015-04-10 11:43:08 +03:00
Péter Szilágyi
b2b1241dd7 cmd/mist: fix #640, panic converting nil recipient to hex.
Fetching the recipient address from a transaction was changed to return nil
instead of a zero-address, but this code path was not updated, so whenever
a contract was created, a nil panic occured.
2015-04-10 11:20:04 +03:00
Jeffrey Wilcke
4de1e1609a Merge pull request #682 from bas-vk/issue_567
bugfix as a result of PR 671
2015-04-09 23:42:17 +02:00
Bas van Kervel
dc2b9fd458 bugfix as a result of PR 671 2015-04-09 20:06:27 +02:00
obscuren
ec9fbf09aa Added some quotes .... 2015-04-09 18:24:22 +02:00
obscuren
9f5d24be31 glog 2015-04-09 18:16:22 +02:00
obscuren
b0f40beea6 Added proper contract for registrar 2015-04-09 17:59:05 +02:00
obscuren
ab015959e1 bump 2015-04-09 17:54:20 +02:00
obscuren
2747df3df1 added contracts 2015-04-09 17:42:43 +02:00
obscuren
01ee012197 Merge branch 'ethersphere-frontier/blockpool' into develop 2015-04-09 17:40:28 +02:00
obscuren
764a802eaa Disabled TD check
@zelig: Temporarily commented out TD check untill the rest of the network has
been fixed.
2015-04-09 17:39:02 +02:00
obscuren
663fd8f849 Moved log to debug 2015-04-09 17:19:05 +02:00
obscuren
46898f1e55 Merge branch 'frontier/blockpool' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/blockpool 2015-04-09 16:54:32 +02:00
obscuren
0636e17dbe Added default registrar 2015-04-09 16:37:04 +02:00
zelig
be25396340 separate lock for blacklist 2015-04-09 13:58:35 +01:00
zelig
a009132c24 oops peer unlocked before return - fixes deadlock 2015-04-09 13:58:35 +01:00
zelig
0e2bc23148 uncomment future block TD check, add test for skipping TD check on future block 2015-04-09 13:58:35 +01:00
zelig
e55747a074 fix deadlock issue in AddBlock
- add peer switch channel arg to activateChain - no peer locking within
- proper locking in AddBlock - fixes deadlock issue
- comment out TD check and skip incorrect TD test again for hotfix
2015-04-09 13:58:35 +01:00
zelig
262714fc6c future queued block support
- queued       bool // flag for blockpool to skip TD check
- set to true when future block queued
- in checkTD: skip check if queued
- TODO: add test (insertchain sets future block)
2015-04-09 13:58:35 +01:00
zelig
cbd0b42060 put back checkTD and unskip incorrectTD test 2015-04-09 13:58:35 +01:00
zelig
f546b486bf introduce peers registry on nodes
- TestPeerPromotionByTdOnBlock renamed and skipped for now test should pass iff
  if TD is updated based on an agreement
- senders register in AddBlock, flag records if they are coming from newblock
  message (and therefore advertise their TD with the block) or block message
  (TODO: latter are stored on the cache and updated by checkTD call;
  protocol should also call AddBlock on newblock messages by non-best peers)
- remove TD update from optional TD field in addBlock: this is no longer part of
  the eth protocol spec -> TODO: reflect in wiki
- only initialise peer map if at least two
2015-04-09 13:58:35 +01:00
zelig
42fb9652f5 fix blockpool deadlock
- do not break from headsection on error
[remove peer after protocol quit will close switchC, until then head block can arrive and block on channel while keeping peers lock causing a deadlock.]
- more careful locking in AddBlock
2015-04-09 13:58:35 +01:00
zelig
30830652ae fix TestPoolStatus test crashing, skip tests failing (due to @obscuren hotfixes) 2015-04-09 13:58:35 +01:00
obscuren
c6b25a4046 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-09 13:24:08 +02:00
obscuren
8d059e54f1 Updated xeth logger 2015-04-09 11:49:14 +02:00
Jeffrey Wilcke
558683d10c Merge pull request #678 from bas-vk/feature_635
Support for import/export hex encoded keys
2015-04-09 11:31:44 +02:00
Jeffrey Wilcke
79cc3cc98e Merge pull request #671 from bas-vk/issue_567
Add path expansion support for command line arguments, closes 567
2015-04-09 11:31:04 +02:00
Bas van Kervel
ef393da933 removed utility function and implemented hex conversation in crypto functions 2015-04-09 10:59:37 +02:00
Bas van Kervel
6da5b2fc5f reformat code with goimports 2015-04-09 10:26:26 +02:00
obscuren
a9959805e5 Removed from as a requirement and changed
Removed the from as a requiremet from the RPC eth_call. Xeth#Call now
also default values to:

1. Supplied account
2. First account if any
3. No managed account => 000000..00
2015-04-09 00:44:20 +02:00
obscuren
204ac81188 Moved handling of nonces to the managed state 2015-04-08 23:30:07 +02:00
Bas van Kervel
b3a3fdf9a4 Support for import/export hex encoded keys, closes #635 2015-04-08 23:03:47 +02:00
obscuren
6e2f78ebdd Default log to stderr 2015-04-08 22:18:16 +02:00
obscuren
2e2860e4df Make sure mist runs ... :-) 2015-04-08 22:17:49 +02:00
obscuren
6184781b49 Improved transaction pool
The transaction pool will now some easily be able to pre determine the
validity of a transaction by checking the following:

* Account existst
* gas limit higher than the instrinsic gas
* enough funds to pay upfront costs
* nonce check
2015-04-08 20:47:32 +02:00
obscuren
a7750c929b Fixed tests to reflect log changes 2015-04-08 20:45:39 +02:00
obscuren
f08e9cbe42 ignore invalid txs right after being added if they prove incorrect 2015-04-08 18:08:21 +02:00
obscuren
1c872ddf4b Changed how logs are being recorded
Logs are now recorded per transactions instead of tossing them out after
each transaction. This should also fix an issue with
`eth_getFilterLogs` (#629) Also now implemented are the `transactionHash,
blockHash, transactionIndex, logIndex` on logs. Closes #654.
2015-04-08 17:15:45 +02:00
Bas van Kervel
5304f43067 Add path expansion support for command line arguments, closes 567 2015-04-08 15:43:55 +02:00
obscuren
6284604b52 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-08 13:07:30 +02:00
obscuren
a953f3ec97 Sync managed accounts to the network 2015-04-08 13:07:21 +02:00
obscuren
31b086f511 Added additional methods to the managed state
* GetNonce Returns the canonical nonce
* SetNonce Set the managed account's nonce
2015-04-08 13:06:56 +02:00
Jeffrey Wilcke
7c0a18edb5 Merge pull request #658 from Gustav-Simonsson/add_ec_point_on_curve_check
Add IsOnCurve check to EC unmarshalling in ECIES decryption
2015-04-08 00:51:12 +02:00
obscuren
09147a50ed Improved tx pool to ignore invalid transactions
Transaction pool will attempt to ignore invalid transactions it had
previously encountered.
2015-04-08 00:31:23 +02:00
obscuren
d09d2b96fc fixed stop of miner 2015-04-08 00:30:23 +02:00
Gustav Simonsson
aa4ff52d84 Add IsOnCurve check to EC unmarshalling in ECIES decryption 2015-04-07 23:50:04 +02:00
obscuren
7f32a08b60 Queued level db writes and batch writes. Closes #647 2015-04-07 22:19:01 +02:00
Jeffrey Wilcke
758205b187 Merge pull request #648 from Gustav-Simonsson/forward_ecrecover_err_and_remove_dup_checks
Forward and log EC recover err and remove dup pubkey len check
2015-04-07 20:48:56 +02:00
Jeffrey Wilcke
f597863927 Merge pull request #657 from Gustav-Simonsson/disable_libsecp256k1_debug_check
libsecp256k1 #define NDEBUG
2015-04-07 20:39:05 +02:00
Gustav Simonsson
941f051358 libsecp256k1 #define NDEBUG 2015-04-07 18:09:58 +02:00
obscuren
3ddc109778 Merge branch 'Gustav-Simonsson-update_bitcoin_secp256k1_lib2' into develop 2015-04-07 15:20:51 +02:00
obscuren
50bbdfe582 Link GMP 2015-04-07 15:20:24 +02:00
obscuren
ce9a28d7bb Merge branch 'update_bitcoin_secp256k1_lib2' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-update_bitcoin_secp256k1_lib2 2015-04-07 15:10:31 +02:00
obscuren
0196a97319 Merge branch 'tgerring-rpcfabian' into develop 2015-04-07 15:04:45 +02:00
obscuren
3063aad7db merge conflict 2015-04-07 15:04:29 +02:00
obscuren
50aa1f178c updated logging 2015-04-07 14:57:16 +02:00
obscuren
688d118c7e Updated logging 2015-04-07 14:57:04 +02:00
Taylor Gerring
d0c3f127ee More type fixes 2015-04-07 06:49:31 -05:00
obscuren
01b2c90179 Updated ethash 2015-04-07 13:17:27 +02:00
obscuren
c756633fb7 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-07 13:10:21 +02:00
obscuren
43454053b0 Fixed tests 2015-04-07 13:10:12 +02:00
Taylor Gerring
1aaeae292d Output format and nil fixes 2015-04-07 06:10:00 -05:00
Gustav Simonsson
2591883a18 Use logger.Error instead of 0 with glog 2015-04-07 12:48:19 +02:00
Gustav Simonsson
3f306f63d4 Forward and log EC recover err and remove dup pubkey len check 2015-04-07 12:48:19 +02:00
Gustav Simonsson
d9b37b6da7 Update Go wrapper around libbsecp256k1 2015-04-07 12:40:31 +02:00
Jeffrey Wilcke
7c583f8222 Merge pull request #653 from debris/circular_structure
fixed printing circular structures
2015-04-07 12:36:11 +02:00
obscuren
99907f94dc Updated ethereum.js 2015-04-07 12:33:05 +02:00
obscuren
7b6a8cc9ae Fixed pending states 2015-04-07 12:32:55 +02:00
Gustav Simonsson
f4d4f1ccb2 Update bitcoin secp256k1 lib 2015-04-07 12:14:05 +02:00
Marek Kotewicz
b09d62bac7 fixed printing circular structures 2015-04-07 05:27:47 +02:00
obscuren
9c55576c7b Block header changed & console miner control
* miner control moved to `admin.miner`
* miner option to set extra data
* block extra now bytes
2015-04-05 18:59:18 +02:00
obscuren
3040296beb updated ethash. closes 646 2015-04-05 18:00:22 +02:00
obscuren
736aefe9b5 time lapse 2015-04-05 17:59:38 +02:00
obscuren
69ece747d3 v bump 2015-04-05 15:15:19 +02:00
obscuren
01e1b49831 reflect ethash changes 2015-04-05 15:15:05 +02:00
obscuren
09d3f2cf2a Update ethash 2015-04-05 15:14:55 +02:00
obscuren
5b9a0e7118 Disabled PoW check
@zelig we need to discuss this
2015-04-05 15:14:06 +02:00
obscuren
50edd4243e removed hash rate from info log. Added hashrate js func 2015-04-05 13:05:10 +02:00
obscuren
ac473a8623 Remove debug log 2015-04-04 23:27:23 +02:00
obscuren
053d5552ab Updated logging 2015-04-04 23:04:19 +02:00
obscuren
5dc5e66986 set backtrace during runtime 2015-04-04 22:16:29 +02:00
obscuren
d651ff968a Temp removed unrequested block error
@zelig look in to this please
2015-04-04 22:06:50 +02:00
obscuren
f4af9e95c2 Skipping test
@zelig this will need updating with the TD checking
2015-04-04 21:41:42 +02:00
obscuren
eb1c26746d Changed R S to big int and fixed tests 2015-04-04 21:41:24 +02:00
obscuren
eb8f0b85f7 Changed R & S to *big.Int 2015-04-04 21:32:24 +02:00
obscuren
59597d23a5 Reject integers w/ appended zero's 2015-04-04 21:29:23 +02:00
obscuren
c39484bc4b Added thread safe each 2015-04-04 20:34:10 +02:00
Taylor Gerring
5c988c8ea0 Increased test coverage for args 2015-04-04 11:58:23 -05:00
obscuren
eff6a43419 Removed debugging 2015-04-04 18:29:11 +02:00
obscuren
7a18a39351 prevent deadlock 2015-04-04 18:23:51 +02:00
obscuren
f9488cb763 bumped version number 2015-04-04 16:41:12 +02:00
obscuren
e1ed8c33bd Improved chain manager, improved block processor, fixed tests
* ChainManager allows cached future blocks for later processing
* BlockProcessor allows a 4 second window on future blocks
* Fixed tests
2015-04-04 16:35:23 +02:00
obscuren
29f120206e Added block cache delete method 2015-04-04 16:33:12 +02:00
obscuren
0d1a9ce648 Disabled peer TD check to support suspended blocks (Future blocks)
@zelig When blocks are in the future they'll be cached and processed at
a later time. Because of this the returned TD will be much lower than
the broadcasted TD.
2015-04-04 16:24:44 +02:00
Taylor Gerring
435378e953 Improved test coverage for rpc types 2015-04-04 15:09:30 +02:00
Taylor Gerring
71e62eb620 More test coverage for responses 2015-04-04 14:08:35 +02:00
obscuren
c985ce4d78 Changed log to new logging 2015-04-04 13:41:58 +02:00
obscuren
2683aac9b0 Make sure we're not mining on an invalid TS 2015-04-04 13:27:17 +02:00
Taylor Gerring
2b9b9e7704 Allow "earliest" block height 2015-04-04 13:25:47 +02:00
Taylor Gerring
4729826466 Merge branch 'develop' into rpcfabian 2015-04-04 13:24:21 +02:00
obscuren
c20d04ca67 added verbosity to js admin 2015-04-04 13:24:19 +02:00
obscuren
1889727144 Moved logging to logger.Core 2015-04-04 13:24:01 +02:00
obscuren
218bfeb60e check for nil block (tmp).
@zelig this needs to be addressed in the block pool.
2015-04-04 12:40:48 +02:00
obscuren
a0e44e3281 basic glog 2015-04-04 12:40:11 +02:00
obscuren
60e097a5f4 Merge branch 'develop' into glog 2015-04-04 12:24:59 +02:00
obscuren
bc5528b165 version bump 2015-04-03 17:49:33 +02:00
obscuren
ec8a6e0a2b Merge branch 'develop' into glog 2015-04-03 17:19:22 +02:00
obscuren
f9d94c7462 do not include BlockEqualTS as valid uncles 2015-04-03 17:19:09 +02:00
obscuren
11d90d9b22 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-03 17:09:21 +02:00
obscuren
36452afd4e glog wip 2015-04-03 17:09:11 +02:00
Jeffrey Wilcke
47feff3611 Merge pull request #627 from ethersphere/frontier/blockpool
Frontier/blockpool BUGFIX
2015-04-03 13:56:39 +02:00
obscuren
4558e04c0d Merge commit 'f6bd4b16e38f9cacd57b57befdeeaed789a473c4' into develop 2015-04-03 12:29:13 +02:00
obscuren
f6bd4b16e3 Squashed 'tests/files/' changes from d6fe94a..3ebf646
3ebf646 Merge remote-tracking branch 'origin/develop' into develop
0ecbe27 uncle with same block number as current block

git-subtree-dir: tests/files
git-subtree-split: 3ebf64619911a7cbdec3b70491284c4cd5f4c3a3
2015-04-03 12:29:13 +02:00
obscuren
f49e398ebe bool => int 2015-04-03 12:28:55 +02:00
Jeffrey Wilcke
a6ca3d0261 Merge pull request #626 from tgerring/rpcfabian
RPC Tests updates
2015-04-03 11:58:18 +02:00
obscuren
29a9c6bedd Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-03 11:28:32 +02:00
obscuren
c59c826ab4 fixed stack level 2015-04-03 11:27:56 +02:00
obscuren
812cbff1a2 Squashed 'tests/files/' changes from ab81bf2..d6fe94a
d6fe94a Merge branch 'develop' of https://github.com/ethereum/tests into develop
cae0693 more fuzz test failures
2110806 fix mem test
049c4d3 Merge remote-tracking branch 'origin' into develop
6025e7b stack size 1024 fix
97655c7 add JS fails
90fe120 JS fails
e8a6964 JS fail

git-subtree-dir: tests/files
git-subtree-split: d6fe94ad047557531c83b551eb78a7a5838feaa4
2015-04-03 10:50:18 +02:00
obscuren
fd5c5b2969 Merge commit '812cbff1a28d89b44a0c8c5a210ac61c7e19da35' into develop 2015-04-03 10:50:18 +02:00
obscuren
4415a5bc68 updated coin 2015-04-03 10:50:07 +02:00
Jeffrey Wilcke
ea606733eb Merge pull request #636 from debris/prototype_functions
do not print Plain Object prototype fields in geth console
2015-04-03 01:53:55 +02:00
Marek Kotewicz
24c8fdc1d0 do not print Plain Object prototype fields in geth console 2015-04-03 01:47:05 +02:00
Jeffrey Wilcke
97d6b0bab8 Merge pull request #633 from debris/prototype_functions
printing object prototype functions in geth console
2015-04-03 01:29:53 +02:00
Marek Kotewicz
1f122626be printing object prototype functions in geth console 2015-04-03 00:49:18 +02:00
Taylor Gerring
3e042317ad Return nil if block does not exist 2015-04-02 20:37:51 +02:00
Taylor Gerring
1d74086b42 New UncleRes type 2015-04-02 17:55:42 +02:00
zelig
5cb1b41440 proper locking to prevent "parent unknown" INVALID blocks due to race in peer head info update 2015-04-02 16:30:48 +01:00
zelig
dd1791c9fd proper locking to prevent close of closed channel crash when multiple mining peers compete 2015-04-02 15:32:41 +01:00
Taylor Gerring
9bdf0b655d Fix RLP decoding of tx metadata 2015-04-02 16:28:42 +02:00
Taylor Gerring
537e2cfeb6 Return nil when requested uncle index is not valid 2015-04-02 16:12:19 +02:00
Taylor Gerring
e882ba0c29 Return nil when requested index does not exist
Instead of error
2015-04-02 16:11:00 +02:00
Taylor Gerring
aa71e27a3b Detect non-valid strings for blockheight 2015-04-02 15:53:04 +02:00
Taylor Gerring
3908590578 Make "To" field optional in whisper filter 2015-04-02 15:37:35 +02:00
Jeffrey Wilcke
607fc788e3 Merge pull request #619 from tgerring/rpcfabian
RPC Fabian fixes
2015-04-02 15:13:30 +02:00
Taylor Gerring
876ce0fb12 More nil checks 2015-04-02 14:54:28 +02:00
Taylor Gerring
172b34351a HashArgs fix + tests 2015-04-02 14:49:33 +02:00
Taylor Gerring
b9c9d6d798 Use HashArgs for eth_getTransactionByHash 2015-04-02 14:37:11 +02:00
Taylor Gerring
b4eef59b6f No longer require gas & gas price in transactions
Defaults to 0, which is then set to default values in XEth
2015-04-02 14:05:14 +02:00
obscuren
1e28b424e7 Default gas 2015-04-02 14:00:49 +02:00
Taylor Gerring
015453f5b3 Default Value to 0 for NewTxArgs 2015-04-02 13:55:53 +02:00
obscuren
55b1c1546b Moved to function 2015-04-02 13:55:35 +02:00
Taylor Gerring
118ad22ee5 Merge branch 'develop' into rpcfabian 2015-04-02 13:39:46 +02:00
Taylor Gerring
81de8ed091 Format code as hexdata 2015-04-02 13:38:12 +02:00
Taylor Gerring
b86450aaae Guard from nil pointers 2015-04-02 13:27:58 +02:00
Taylor Gerring
e402e1dc2e New args types with stricter checking 2015-04-02 13:17:55 +02:00
obscuren
79828531b1 updated ethereum.js 2015-04-02 13:13:11 +02:00
Taylor Gerring
14c14fd61f Output empty block as nil 2015-04-02 13:05:13 +02:00
Taylor Gerring
2efb89d544 Guard for nil *big.Int 2015-04-02 13:04:58 +02:00
obscuren
60da9a1289 Put the old hammer back in <3 2015-04-02 13:03:33 +02:00
obscuren
3f4c1aaf01 info => debug 2015-04-02 12:58:17 +02:00
obscuren
0f3bf7ef4d Fixes for balance 2015-04-02 12:57:04 +02:00
Taylor Gerring
585aec127c Don't ignore user-specified "include tx" param 2015-04-02 12:56:36 +02:00
Taylor Gerring
edfd2757d9 Better decoding of uint* 2015-04-02 12:52:25 +02:00
Taylor Gerring
b10e33c040 More types supported 2015-04-02 12:31:10 +02:00
Taylor Gerring
cc45b4d8b5 Trim left only, not right 2015-04-02 12:30:42 +02:00
Taylor Gerring
f89baa73e5 transactionRoot -> transactionsRoot 2015-04-02 12:30:22 +02:00
Taylor Gerring
85ebbc9aa5 Default BlockNumber to -1 when missing 2015-04-02 11:57:26 +02:00
Jeffrey Wilcke
7e13ee602e Merge pull request #625 from debris/nonenumerable
print nonenumerable properties of object in geth console && proper printing BigNumbers
2015-04-02 11:35:01 +02:00
Taylor Gerring
c71ca1a089 Better nil handling 2015-04-02 11:32:50 +02:00
Marek Kotewicz
f960fc066e fixed printing BigNumbers 2015-04-02 11:02:39 +02:00
Marek Kotewicz
bb3ae3026e print nonenumerable properties of object in geth console 2015-04-02 01:53:33 +02:00
obscuren
b8124ec791 Removed old (unused) argument 2015-04-01 23:58:26 +02:00
Jeffrey Wilcke
219d94c1dd Merge pull request #623 from Gustav-Simonsson/read_protocol_values_from_common_params
Read most protocol params from common/params.json
2015-04-01 23:37:17 +02:00
Gustav Simonsson
c26c8d3a44 Read most protocol params from common/params.json
* Add params package with exported variables generated from
  github.com/ethereum/common/blob/master/params.json
* Use params package variables in applicable places
* Add check for minimum gas limit in validation of block's gas limit
* Remove common/params.json from go-ethereum to avoid
  outdated version of it
2015-04-02 06:22:32 +02:00
obscuren
ab5c007376 Updated ethereum.js 2015-04-01 23:28:45 +02:00
obscuren
4391c38215 Changed getters on account objects. Closes #610
* GetCode
* GetNonce
* GetStorage
* GetBalance
2015-04-01 23:22:16 +02:00
Taylor Gerring
5d8be9c30d Fixed decoding for uint64 into bytes 2015-04-01 23:08:00 +02:00
obscuren
344b3556eb Fixed uncle rewards in miner
The uncle rewards were changed in the block processor. This change will
reflect those changes in the miner as well.
2015-04-01 21:18:41 +02:00
obscuren
516ec28544 sha3 stack check 2015-04-01 17:51:22 +02:00
obscuren
4e3ffbcf9b Squashed 'tests/files/' changes from 5f8a010..ab81bf2
ab81bf2 go fail

git-subtree-dir: tests/files
git-subtree-split: ab81bf28d6157657b0a1c0d598785f1ed23fdbb1
2015-04-01 17:50:19 +02:00
obscuren
109b27b552 Merge commit '4e3ffbcf9bae7e44e45fd1b6e504b3645040d73c' into develop 2015-04-01 17:50:19 +02:00
Taylor Gerring
eac4d582d7 Patches 2015-04-01 17:49:22 +02:00
Taylor Gerring
1045015a3c Update nonce field 2015-04-01 17:48:53 +02:00
obscuren
96cf776f81 Check stack for BALANCE. Closes #622 2015-04-01 17:45:38 +02:00
obscuren
f801183b8b Squashed 'tests/files/' changes from 29da5ea..5f8a010
5f8a010 go fials
6f7924a add cppjit fail
c21f368 update genesis test
de7266b update js example test

git-subtree-dir: tests/files
git-subtree-split: 5f8a0103c0456f9467b402fde3db4bcde345d53b
2015-04-01 17:41:58 +02:00
obscuren
516423cdac Merge commit 'f801183b8bea24ce9988fbd06c2f17fedfc3587f' into develop 2015-04-01 17:41:58 +02:00
obscuren
216ea425e4 corrected 2015-04-01 17:36:56 +02:00
obscuren
8e961df283 bumped network protocol 2015-04-01 17:10:42 +02:00
Jeffrey Wilcke
fd171eff7f Merge pull request #592 from fjl/disco-ping-pong
Discovery bonding protocol
2015-04-01 17:10:10 +02:00
Felix Lange
76218959ab eth: update cpp bootnode address 2015-04-01 17:00:12 +02:00
Felix Lange
a77c431e37 p2p/discover: fix off by one error causing buckets to contain duplicates 2015-04-01 17:00:12 +02:00
Felix Lange
de7af720d6 p2p/discover: implement node bonding
This a fix for an attack vector where the discovery protocol could be
used to amplify traffic in a DDOS attack. A malicious actor would send a
findnode request with the IP address and UDP port of the target as the
source address. The recipient of the findnode packet would then send a
neighbors packet (which is 16x the size of findnode) to the victim.

Our solution is to require a 'bond' with the sender of findnode. If no
bond exists, the findnode packet is not processed. A bond between nodes
α and β is created when α replies to a ping from β.

This (initial) version of the bonding implementation might still be
vulnerable against replay attacks during the expiration time window.
We will add stricter source address validation later.
2015-04-01 17:00:12 +02:00
Taylor Gerring
b6f0b40037 Respect fullTx option #614 2015-04-01 16:49:07 +02:00
Taylor Gerring
55b9689950 rename messages to types 2015-04-01 15:53:48 +02:00
Felix Lange
92928309b2 p2p/discover: add version number to ping packet
The primary motivation for doing this right now is that old PoC 8
nodes and newer PoC 9 nodes keep discovering each other, causing
handshake failures.
2015-04-01 15:53:04 +02:00
Taylor Gerring
bea3879d6f If nil, type doesn't matter 2015-04-01 15:45:56 +02:00
Taylor Gerring
ac03ff6f05 Fix block size output #613 2015-04-01 15:44:09 +02:00
Taylor Gerring
6e8ff578f1 Block nonce as data 2015-04-01 15:28:06 +02:00
Taylor Gerring
93f832a1a7 Make block context optional nulls 2015-04-01 15:27:37 +02:00
Taylor Gerring
0ce971d9d3 Add new formatting regex 2015-04-01 15:27:14 +02:00
Taylor Gerring
101ea1a1e8 Make inner size before assinging. Closes #615 2015-04-01 14:15:20 +02:00
Jeffrey Wilcke
c8e5d53a39 Merge pull request #618 from tgerring/issue613
Issue #613
2015-04-01 13:57:35 +02:00
Jeffrey Wilcke
4a4da9a24e Merge pull request #588 from ethersphere/frontier/SEC-29
Frontier/sec 29
2015-04-01 13:55:42 +02:00
zelig
f56fc9cd9d change StatusMsgData.TD back to pointer type *big.Int 2015-04-01 12:36:49 +01:00
zelig
6ffea34d8b check TxMsg
- add validation on TxMsg checking for nil
- add test for nil transaction
- add test for zero value transaction (no extra validation needed)
2015-04-01 12:32:42 +01:00
zelig
82da6bf4d2 test for invalid rlp encoding of block in BlocksMsg
- rename Validate -> ValidateFields not to confure consensus block validation
- add nil transaction and nil uncle header validation
- remove bigint field checks: rlp already decodes *big.Int to big.NewInt(0)
- add test for nil header, nil transaction
2015-04-01 12:32:42 +01:00
zelig
d677190f39 add tests for valid blocks msg handling 2015-04-01 12:32:42 +01:00
zelig
e1be34bce1 eth: SEC-29 eth wire protocol decoding invalid message data crashes client
- add validate method to types.Block
- validate after Decode -> error
- add tests for NewBlockMsg
2015-04-01 12:32:42 +01:00
Jeffrey Wilcke
936ddf2ad1 Merge pull request #616 from bas-vk/develop
Frontier/513
2015-04-01 13:25:15 +02:00
Taylor Gerring
dbf17105f6 Build transaction context in BlockRes 2015-04-01 13:18:51 +02:00
Taylor Gerring
88f2a96ca3 Set fullTx option in constructor 2015-04-01 13:18:30 +02:00
Bas van Kervel
1559bd9e1b changed big.Int instantiation 2015-04-01 13:15:21 +02:00
obscuren
dba9b83aa0 Merge branch 'tgerring-hexify' into develop 2015-04-01 12:51:44 +02:00
obscuren
b0e09ec827 merge conflict 2015-04-01 12:51:39 +02:00
obscuren
6afc5e762a Merge branch 'hexify' of https://github.com/tgerring/go-ethereum into tgerring-hexify 2015-04-01 12:49:10 +02:00
Jeffrey Wilcke
720d978e35 Merge pull request #589 from tgerring/corssetting
Configurable CORS domain
2015-04-01 12:38:29 +02:00
Bas van Kervel
6605d00d92 Frontier/513 2015-04-01 12:33:12 +02:00
Taylor Gerring
02fb83782e #612 rename eth_protocol method 2015-04-01 12:28:48 +02:00
Taylor Gerring
86ba7432a9 txMeta storage as struct 2015-04-01 12:14:35 +02:00
obscuren
4e8f8cfab7 ethereum.js update 2015-04-01 11:51:05 +02:00
obscuren
f2c6a937f3 Protocol bump 2015-04-01 11:50:19 +02:00
Taylor Gerring
b860b67693 Remove extra type assetion 2015-04-01 11:45:29 +02:00
obscuren
f468364e4d fixed tests 2015-04-01 11:42:02 +02:00
Taylor Gerring
7b7392826d Improved response tests
Actually verifies output as by regex
2015-04-01 11:38:06 +02:00
obscuren
0a554a1f27 Blocktest fixed, Execution fixed
* Added new CreateAccount method which properly overwrites previous
  accounts (excluding balance)
* Fixed block tests (100% success)
2015-04-01 10:53:32 +02:00
obscuren
d3e86f9208 Added gas generator defaults 2015-04-01 10:51:46 +02:00
Taylor Gerring
25998cfc45 Re-enabled response tests (needs improvement) 2015-04-01 09:11:23 +02:00
Taylor Gerring
bbca6250ff Merge branch 'rpccall' into hexify 2015-03-31 22:40:52 +02:00
Taylor Gerring
40ea466200 Store and retrieve tx context metadata #608
Improving this in the future will allow for cleaning up a bit of legacy
code.
2015-03-31 22:40:12 +02:00
Taylor Gerring
7e3875b527 Remove custom MarshalJSON methods
Now formats based on underlying hexdata or hexnum type. Fields directly
with respective constructors that cover from native types
2015-03-31 19:04:02 +02:00
Taylor Gerring
a2501ecfcd Make new types Stringers 2015-03-31 19:02:46 +02:00
Taylor Gerring
8f0e095f4c Index is zero-based #607 2015-03-31 17:56:06 +02:00
Taylor Gerring
81aeb78976 Update output types to use hexnum or hexdata
Benefits from automatic output formatting differences between
quantities and data
2015-03-31 17:40:35 +02:00
Taylor Gerring
3a948b2dba Add hexdata and hexnum types 2015-03-31 17:39:58 +02:00
obscuren
ec181b308a Squashed 'tests/files/' changes from c6d9629..29da5ea
29da5ea add JS block test example as state test
04108e0 Merge remote-tracking branch 'origin' into develop
6da7f35 JS failures
22b5dfc stQuadraticComplexity Refill with latest develop
c97bf26 Memory / Solidity Test Update

git-subtree-dir: tests/files
git-subtree-split: 29da5ea53ab36d74bd3c0712337168086cabfb8d
2015-03-31 16:25:22 +02:00
obscuren
2ef0bc03ec Merge commit 'ec181b308addc30c04973e9058960d579c84eef5' into develop 2015-03-31 16:25:22 +02:00
obscuren
8b51582b53 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-31 15:31:32 +02:00
obscuren
3453f8c5d2 Added Code field 2015-03-31 15:30:55 +02:00
Felix Lange
653c3deaa5 Merge pull request #606 from tgerring/bootnode
Update Go bootnode address
2015-03-31 14:41:17 +02:00
Taylor Gerring
6daa455243 Update Go bootnode address 2015-03-31 14:14:29 +02:00
Jeffrey Wilcke
485dcf90cd Merge pull request #594 from Gustav-Simonsson/fix_block_header_gas_limit_validation
Correct gas limit validation according to new algorithm
2015-03-31 12:41:05 +02:00
Taylor Gerring
2f3a968136 New CallArgs
Requirements for calls differ from transactions
2015-03-30 16:20:30 +02:00
Gustav Simonsson
9feed3f61e Correct gas limit validation according to new algorithm
* Use absolute value of (block's gas limit) - (parent's gas limit)
  in comparison with diff limit.
* Ensure the diff is strictly smaller than the allowed size.
2015-03-30 16:07:24 +02:00
Taylor Gerring
f23529c5cd General repo cleanup 2015-03-30 09:18:22 +02:00
Taylor Gerring
35d00e00c5 Update Godeps 2015-03-29 22:19:38 +02:00
Taylor Gerring
b6fde73ef1 Add settable domain to CORS handler #331 2015-03-29 21:56:04 +02:00
Taylor Gerring
04a7c4ae1e Abstract http into rpc package
New RpcConfig object to pass growing config
2015-03-29 21:26:47 +02:00
Taylor Gerring
24fc1f073d Add flag to control CORS header #394
* Disabled on CLI
* http://localhost on Mist
2015-03-29 21:21:14 +02:00
obscuren
e1c6c01b4d Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-29 15:03:39 +02:00
obscuren
b7a0bc7031 Merge branch 'ebuchman-fix_ecrecover' into develop 2015-03-29 15:03:30 +02:00
obscuren
61c5edcb57 Cleanup. 2015-03-29 15:02:49 +02:00
obscuren
af153e7884 Merge branch 'fix_ecrecover' of https://github.com/ebuchman/go-ethereum into ebuchman-fix_ecrecover 2015-03-29 13:34:41 +02:00
Taylor Gerring
391d79ef44 Add ExtraData field to RPC output 2015-03-29 12:08:52 +02:00
Taylor Gerring
eb79938060 Docker rename ethereum to geth 2015-03-28 22:17:08 +01:00
Taylor Gerring
2ca6a800ad Remove old go cover location 2015-03-28 22:16:04 +01:00
Taylor Gerring
82eeb5e02a Added Coveralls badges 2015-03-28 22:04:36 +01:00
Taylor Gerring
129fabddb2 Prefer hex prefixed with 0x 2015-03-28 21:47:16 +01:00
Taylor Gerring
d9f8b1e0c1 Report InvalidTypeError as -32602 to JSON RPC 2015-03-28 21:42:44 +01:00
Taylor Gerring
e80ef9ff34 Cleanup 2015-03-28 21:41:34 +01:00
Taylor Gerring
29930da522 eth_getStorageAt output hex should begin with 0x 2015-03-28 21:27:50 +01:00
Taylor Gerring
3b20603eb1 Merge branch 'kobigurk-develop' into develop 2015-03-28 21:06:39 +01:00
Taylor Gerring
779a51c047 Merge branch 'develop' of https://github.com/kobigurk/go-ethereum into kobigurk-develop
Conflicts:
	rpc/api.go
2015-03-28 21:05:32 +01:00
Jeffrey Wilcke
b9ca5eef58 Merge pull request #579 from tgerring/rpcargs
RPC Args
2015-03-28 20:42:45 +01:00
obscuren
696ff43db3 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-28 20:34:12 +01:00
obscuren
368ebe63a9 Cleanup VM.
* CALLDATA use getData
* removed old context get range value
* removed casting big => int for some cases
* pc now big int #457
2015-03-28 20:30:38 +01:00
obscuren
3b7e4173ce Cleanup VM 2015-03-28 20:03:25 +01:00
Jeffrey Wilcke
2455e0bd18 Merge pull request #585 from aperseghin/patch-2
Minor fix
2015-03-28 11:54:20 +01:00
Jeffrey Wilcke
ed6ca5d007 Merge pull request #586 from aperseghin/patch-3
Update README.md
2015-03-28 11:54:10 +01:00
Taylor Gerring
a4cbd1c7be ethereum -> geth 2015-03-28 00:32:23 +01:00
Kobi Gurkan
47af2f02cb eth_getTransactionCount now returns a hex string 2015-03-27 22:22:13 +03:00
obscuren
3ea8c7301e PUSH gas fix 2015-03-27 16:53:05 +01:00
Taylor Gerring
43d521e90e Decouple core from rpc 2015-03-27 16:36:01 +01:00
obscuren
df648cbc60 Removed comments 2015-03-27 16:11:19 +01:00
obscuren
8a22cd5e6c Removed defer/panic. #503 2015-03-27 16:09:57 +01:00
Taylor Gerring
0ac346f707 Merge branch 'develop' into rpcargs 2015-03-27 16:03:49 +01:00
Taylor Gerring
9f84c78eb5 BlockFilterArgs 2015-03-27 15:54:54 +01:00
aperseghin
db1c52918f Update README.md 2015-03-27 09:29:35 -04:00
obscuren
00f8319faf Explicitly check memory's data store. #515 2015-03-27 14:22:38 +01:00
aperseghin
8e7549db0b Minor fix 2015-03-27 08:38:20 -04:00
obscuren
eb102bf4bb Etherbase => etherbase 2015-03-27 12:14:00 +01:00
Jeffrey Wilcke
86c43d97bc Merge pull request #581 from aperseghin/patch-1
Update README.md
2015-03-27 12:12:38 +01:00
Jeffrey Wilcke
0b4b2b81f9 Merge pull request #580 from ethersphere/frontier/cli-key
settable etherbase
2015-03-27 12:12:05 +01:00
Jeffrey Wilcke
54a14d5c9d Merge pull request #584 from tgerring/issue577
Use ExtraDB for RPC storage. Fixes #577
2015-03-27 11:48:03 +01:00
Jeffrey Wilcke
09280c5f11 Merge pull request #565 from tgerring/responsetypes
Update response types + tests
2015-03-27 11:44:13 +01:00
Taylor Gerring
2788fb4ce5 More explicit formatting for protocol version 2015-03-27 11:43:14 +01:00
Taylor Gerring
e29396b691 Use ExtraDB for storage. Fixes #577 2015-03-27 09:36:18 +01:00
Taylor Gerring
c38630af23 Test blockHeightFromJsonInvalid 2015-03-27 00:13:03 +01:00
Taylor Gerring
e0781c2548 NewTxArgs accept numbers or strings for value/gas/gasprice 2015-03-27 00:07:28 +01:00
Taylor Gerring
3fcef54f9b tidy 2015-03-26 22:58:12 +01:00
zelig
b375bbee5f settable etherbase
- etherbase flag for block reward destination
- coinbase => etherbase
- CLI- eth Config -> eth, xeth -> RPC / Miner
- use primary instead of coinbase as the unlock magic wildcard
- accounts: firstAddr/Coinbase -> Primary
2015-03-26 21:52:22 +00:00
aperseghin
5838847a9a Update README.md
Rename ethereum executable to geth
2015-03-26 17:48:24 -04:00
Taylor Gerring
6bd1f6cc49 Merge remote-tracking branch 'origin' into rpcargs
Conflicts:
	rpc/args.go
2015-03-26 22:42:46 +01:00
Taylor Gerring
bb12dbe233 Prefer args as strings not objects 2015-03-26 22:35:42 +01:00
Taylor Gerring
7eed7e1d96 Merge branch 'rpcargs' of github.com:tgerring/go-ethereum into rpcargs 2015-03-26 22:27:06 +01:00
Taylor Gerring
2c5a32ebbc Undo XEth changes 2015-03-26 22:24:48 +01:00
Taylor Gerring
49a912ce33 Undo xeth changes 2015-03-26 22:14:31 +01:00
obscuren
b0b0939879 renamed ethereum => geth 2015-03-26 21:27:52 +01:00
Jeffrey Wilcke
829240c325 Merge pull request #550 from ethersphere/frontier/cli-key
import/export accounts
2015-03-26 21:08:15 +01:00
Taylor Gerring
1f3814141b WhisperMessageArgs 2015-03-26 21:07:50 +01:00
Taylor Gerring
9ca87afd0b WhisperFilterArgs 2015-03-26 20:52:09 +01:00
Taylor Gerring
81f36df910 CompileArgs 2015-03-26 20:31:00 +01:00
Taylor Gerring
ddcc8e1673 SubmitWorkArgs tests 2015-03-26 20:25:30 +01:00
Taylor Gerring
b414a1303f WhisperIdentityArgs 2015-03-26 20:20:43 +01:00
Taylor Gerring
1f1e98f96b FilterIdArgs 2015-03-26 20:10:31 +01:00
Taylor Gerring
62ebf999bf FilterStringArgs tests 2015-03-26 20:04:03 +01:00
zelig
7577d12614 max paranoia mode to UNsupport unencrypted keys entirely
- remove account export functionality from CLI
- remove accountExport method,
- remove unencrypted-keys flag from everywhere
- improve documentation
2015-03-26 19:00:18 +00:00
zelig
abbdf41560 output error message if unlock address is invalid (fixes the wierd "read /path: is a directory") msg 2015-03-26 19:00:18 +00:00
zelig
11d2ebc06f unlocking coinbase without knowing address
- accounts: remove Manager.getKey
- cli: for -unlock coinbase, use account manager Coinbase()
2015-03-26 19:00:18 +00:00
zelig
4ec38e3932 common: remove WriteFile and ReadAllFile (use ioutil instead) 2015-03-26 19:00:18 +00:00
zelig
23e41a57ad Applying: fix adming js test regression (maybe otto update?) 2015-03-26 19:00:18 +00:00
zelig
fee224f075 cli test: fix test newJSRE interactive argument 2015-03-26 19:00:18 +00:00
zelig
d1b52efdb5 cli: implement ethereum presale wallet import via cli 2015-03-26 19:00:18 +00:00
zelig
34d5a6c156 cli: help formatting 2015-03-26 19:00:18 +00:00
zelig
1c4c71dcff cli: fix liner not closing (spuriously opened) in noninteractive jsre 2015-03-26 19:00:18 +00:00
zelig
fd8d18ec28 unlocking coinbase
- extract accounts.getKey method - if given empty address it retrieves coinbase (first account)
- cli -unlock coinbase will unlock coinbase
2015-03-26 19:00:18 +00:00
zelig
859f1f08ca blockpool: wrap intermittent status test in a loop 2015-03-26 19:00:18 +00:00
zelig
c4ea921876 import/export accounts
- cli: add passwordfile flag
- cli: change unlock flag only takes account
- cli: with unlock you are prompted for password or use passfile with password flag
- cli: unlockAccount used in normal client start (run) and accountExport
- cli: getPassword used in accountCreate and accountImport
- accounts: Manager.Import, Manager.Export
- crypto: SaveECDSA (to complement LoadECDSA) to save to file
- crypto: NewKeyFromECDSA added (used in accountImport and New = generated constructor)
2015-03-26 19:00:18 +00:00
Taylor Gerring
e21ce9a9b4 DbHexArgs tests 2015-03-26 19:39:40 +01:00
Taylor Gerring
f68ca2b6e6 DbArgs tests 2015-03-26 19:34:32 +01:00
Taylor Gerring
3ab9f26943 Accept number or string for BlockFilterArgs limit/offset 2015-03-26 19:17:25 +01:00
obscuren
658204bafc bump 2015-03-26 17:55:30 +01:00
obscuren
c32bca45ad Stack limit 2015-03-26 17:45:09 +01:00
obscuren
d36501a6e5 Fixed miner
* Miners could stall because the worker wasn't aware the miner was done
2015-03-26 17:45:03 +01:00
Taylor Gerring
6661bc35ef Accept number or string for BlockFilterArgs to/fromBlock 2015-03-26 17:27:29 +01:00
Taylor Gerring
745dd5b7a5 Sha3Args 2015-03-26 16:19:33 +01:00
Taylor Gerring
f695d01354 Convert error checks to Expect functions 2015-03-26 16:16:17 +01:00
Taylor Gerring
3472823be9 HashIndexArgs 2015-03-26 14:17:32 +01:00
Taylor Gerring
cb103c089a BlockNumIndexArgs 2015-03-26 13:57:41 +01:00
Taylor Gerring
cd6b3fd28a GetDataArgs 2015-03-26 13:50:22 +01:00
Taylor Gerring
a49c81547c DecodeParamError -> InvalidTypeError for unexpected input type 2015-03-26 13:45:06 +01:00
Taylor Gerring
ca03e97697 Add InvalidTypeError 2015-03-26 13:33:44 +01:00
obscuren
a718515b3d Squashed 'tests/files/' changes from a7081bc..c6d9629
c6d9629 added another test

git-subtree-dir: tests/files
git-subtree-split: c6d96293710a37489fa3b074a9fc228e0393f152
2015-03-26 13:14:24 +01:00
obscuren
d0fa0a234d Merge commit 'a718515b3d43f00497231f981b5ea757b71d55ff' into develop 2015-03-26 13:14:24 +01:00
Taylor Gerring
c139af5826 GetBalanceArgs 2015-03-26 13:10:31 +01:00
Taylor Gerring
4523a00b91 GetTxCountArgs 2015-03-26 12:47:00 +01:00
obscuren
c33dc3e328 moved helper 2015-03-26 12:40:09 +01:00
obscuren
83b0cad766 fixed block filter args 2015-03-26 12:34:59 +01:00
obscuren
b8a667deed debug log 2015-03-26 12:15:25 +01:00
obscuren
4ba850639e updated web3.js light for console 2015-03-26 12:15:12 +01:00
Taylor Gerring
9c4504dc41 GetStorageAtArgs 2015-03-26 12:11:28 +01:00
obscuren
ace5b5a1bf updated web3.js 2015-03-26 12:06:45 +01:00
obscuren
507830eb81 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-26 12:06:23 +01:00
obscuren
eb433731aa Fixed filter and refactored code 2015-03-26 12:06:14 +01:00
Taylor Gerring
300d36b864 improved NewTxArgs tests 2015-03-26 11:59:35 +01:00
Taylor Gerring
ad2089b0a3 Add blockHeightFromJson convenience function 2015-03-26 11:59:16 +01:00
Taylor Gerring
493e0d7be8 improved GetBlockByNumber tests 2015-03-26 11:07:14 +01:00
Taylor Gerring
93af30a6f6 improved GetBlockByHashArgs tests 2015-03-26 11:06:45 +01:00
Taylor Gerring
bd1a54f076 GetStorageArgs 2015-03-26 10:52:32 +01:00
Taylor Gerring
966cfa4bdd NewTxArgs 2015-03-26 10:34:21 +01:00
Taylor Gerring
c7dc379da5 GetBlockByHashArgs 2015-03-26 10:14:52 +01:00
Taylor Gerring
7e1e264375 Don't return empty block for "pending" #568 2015-03-26 09:24:07 +01:00
obscuren
98f970ba59 Updated example for new ethereum.js 2015-03-26 01:03:14 +01:00
obscuren
88b9bc40d7 Godep issue? 2015-03-26 01:03:03 +01:00
obscuren
e5a0a0ef48 Moved output to debug 2015-03-26 01:02:51 +01:00
obscuren
7e4c488717 Fixed storage. Closes #516 2015-03-26 00:42:35 +01:00
obscuren
505f1fbcbb added tx tests and fixed block tests 2015-03-25 17:05:29 +01:00
Jeffrey Wilcke
65ea55bccd Merge pull request #564 from fjl/rlp-nil-array
rlp: encode nil array pointers as empty list or string
2015-03-25 17:00:25 +01:00
Taylor Gerring
e22bcb78a5 Update response types + tests
To coincide with recent type conversion
2015-03-25 16:50:30 +01:00
Felix Lange
181a21c67c rlp: encode nil array pointers as empty list or string 2015-03-25 16:46:29 +01:00
obscuren
ff5578fc71 updated ethash 2015-03-25 14:58:12 +01:00
obscuren
a2e3bf6f30 removed big num from pp 2015-03-25 14:51:10 +01:00
Jeffrey Wilcke
aa1eae67ec Merge pull request #560 from tgerring/xethcleanup
XEth cleanup
2015-03-25 13:55:46 +01:00
Felix Lange
7f0c2545a9 Merge pull request #561 from ethersphere/frontier/blockpool
bugfix with idle too long triggered after peer switch
2015-03-25 13:55:05 +01:00
obscuren
221f30c3aa updated ethereum.js 2015-03-25 13:52:45 +01:00
obscuren
8b32f79445 Removed full path 2015-03-25 13:52:23 +01:00
obscuren
950b4a68c8 Improved miner recovery
* In case of uncle mining (e.g. same TS) the miner would stop if all
  threads happened to mine a potential uncle
2015-03-25 13:51:12 +01:00
zelig
18d1569ce5 header check for test 2015-03-25 12:11:29 +00:00
zelig
9d592c0445 bugfix with idle too long triggered after peer switch
- reset bestIdleTimer when launching head section process
- log chain head events
- common.Hash key in activateChain map
2015-03-25 12:11:29 +00:00
obscuren
a1cae93d78 Improved pretty printer for console 2015-03-25 12:44:41 +01:00
Taylor Gerring
2b93843d86 Improve protocol version reporting 2015-03-25 12:09:55 +01:00
Taylor Gerring
c956bcb13c Move version to const and expose via Version() 2015-03-25 12:08:48 +01:00
obscuren
6431d088ad bump 2015-03-25 11:54:11 +01:00
obscuren
ff44347ea1 fixed test 2015-03-25 10:31:58 +01:00
obscuren
dda1d60556 Store protocol version in the block db **NOT** extra db 2015-03-25 09:58:46 +01:00
obscuren
3301f6ecef back to debug log 2015-03-24 23:55:48 +01:00
obscuren
97bf9f1521 Temp fix for console output 2015-03-24 23:50:27 +01:00
obscuren
3d5f48a160 updated deps 2015-03-24 21:25:11 +01:00
obscuren
a6e659f74b Merge branch 'master' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-24 19:22:32 +01:00
Jeffrey Wilcke
a33a325ac1 Merge pull request #559 from Gustav-Simonsson/blocktests_update_ethash
Update ethash lib
2015-03-24 19:14:20 +01:00
Taylor Gerring
d41341f77d WithState -> withState 2015-03-24 17:58:16 +01:00
Taylor Gerring
82b5a8af49 DRY up height logic 2015-03-24 17:49:37 +01:00
obscuren
c38a3b4cc7 Better error reporting in the console. Updated ethereum.js 2015-03-24 17:49:28 +01:00
Taylor Gerring
865f31018b Shuffle 2015-03-24 17:45:31 +01:00
Taylor Gerring
2106a63d60 Move Frontend interface to separate file 2015-03-24 16:42:33 +01:00
Taylor Gerring
65d553d367 Update internal calls to use CurrentBlock() 2015-03-24 16:34:28 +01:00
Taylor Gerring
59b6b619a2 Don't expose backend directly 2015-03-24 16:33:37 +01:00
Taylor Gerring
b9b7442b74 Remove redundant fields 2015-03-24 16:08:18 +01:00
Taylor Gerring
ad420d099a rename eth to backend 2015-03-24 16:01:44 +01:00
Gustav Simonsson
b0c4dc8df8 Update ethash lib 2015-03-24 15:51:51 +01:00
Taylor Gerring
6d41402dce Backend no longer needed to resolve import cycle 2015-03-24 15:36:39 +01:00
obscuren
9de1ad6546 fixed tests 2015-03-24 15:27:05 +01:00
obscuren
ff9d66e096 Cleaned up changes 2015-03-24 15:23:16 +01:00
obscuren
23bccbbc58 Modified according to poc 9 changes
* Refund of value
2015-03-24 15:15:17 +01:00
obscuren
bbe795455a Secure trie shakey / key matching 2015-03-24 15:14:03 +01:00
obscuren
24066dca46 Squashed 'tests/files/' changes from 8f3fbe6..a7081bc
a7081bc update tests
d2678cb update random tests
ca0401b update tests

git-subtree-dir: tests/files
git-subtree-split: a7081bc54e9d72cc480218cb4b218dbb04c7cde7
2015-03-24 13:39:49 +01:00
obscuren
d6da533345 Merge commit '24066dca4646c8a376aa5dfbceec0a4b3f872c11' into develop 2015-03-24 13:39:49 +01:00
obscuren
0ec171ccdf Copy fix 2015-03-24 13:38:16 +01:00
obscuren
eab8f7355d Event fixes for miner 2015-03-24 13:37:38 +01:00
obscuren
576df064e5 Updated for PV59
* Value XFER are refunded back to the sender if the execution fails
2015-03-24 11:49:30 +01:00
obscuren
58c6cc8fd7 Squashed 'tests/files/' changes from 559268b..8f3fbe6
8f3fbe6 Pv59 changes
2633cce JS fails
748f803 Merge remote-tracking branch 'origin' into develop
2e60a20 JS failure
2673f14 Incorrect Test deletion
345261d More Transaction Tests
300998f add blockchain tests - uncle gen 0 - in-chain-uncle
7e8585a gas counter overflow
5af1002 check overflow of v value in tx tests
53ee775 memory stress tests 28
46045b7 add 1024 stack size tests
4678ee8 add 1024 stack size limit tests
3b870f6 rm test
7c51854 fix test
74f1e91 cpp fail
ce9535a add cppjit fail
2e17a2e SDIV tests
cd38e05 first JS failures
d5e80d5 Delete st201503181858GO.json

git-subtree-dir: tests/files
git-subtree-split: 8f3fbe63f92c413fda1fc68cf27a9dbb69681168
2015-03-24 11:22:58 +01:00
obscuren
4877e52c15 Merge commit '58c6cc8fd7ff8a27004ed62d912e0a61ae1b73bb' into develop 2015-03-24 11:22:58 +01:00
obscuren
118b79eca7 Added gitter integration for travis 2015-03-24 10:41:04 +01:00
obscuren
a59ea7ce29 Changed miner
* Instead of delivering `Work` to the `Worker`, push a complete Block to
  the `Worker` so that each agent can work on their own block.
2015-03-24 10:34:06 +01:00
obscuren
d8e21b39b3 Added copy function 2015-03-24 10:33:00 +01:00
obscuren
0ee0094cc0 better block propagation 2015-03-23 22:59:19 +01:00
obscuren
7b8a47f484 removed legacy code 2015-03-23 22:05:12 +01:00
obscuren
0eaa023ffa Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 21:48:50 +01:00
obscuren
bfb9ed881d Gas validation and clean up of legacy code 2015-03-23 21:48:45 +01:00
obscuren
ebf4408d73 Decrement depth 2015-03-23 21:48:31 +01:00
Taylor Gerring
e88a29ad02 Merge pull request #553 from ethersphere/jsonlog
natspec: minor fix in test
2015-03-23 18:57:57 +01:00
zelig
53af810851 natspec: minor fix in test 2015-03-23 17:36:04 +00:00
obscuren
f2f65c1a65 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 18:30:11 +01:00
Taylor Gerring
90c710fd26 Merge pull request #552 from ethersphere/jsonlog
Jsonlog
2015-03-23 18:27:06 +01:00
obscuren
c8e9ca0483 fixed bad uncles 2015-03-23 18:27:05 +01:00
zelig
a983a215dc fix ethtest logging 2015-03-23 17:08:49 +00:00
Taylor Gerring
e954c24af0 Implement RPC net_version 2015-03-23 18:06:05 +01:00
Taylor Gerring
60020add74 Merge pull request #551 from ethersphere/frontier/eth-version-exports
eth: fix protocol version/network id copied from config to Ethereum field
2015-03-23 18:00:54 +01:00
Taylor Gerring
1cf6ca8f10 Add Close() method to EthereumApi
To close the handler for LDB
2015-03-23 17:41:50 +01:00
zelig
9880f99ccb fix p2p/testlog_test 2015-03-23 16:41:41 +00:00
Taylor Gerring
1e61b75cbf tests + fixes 2015-03-23 17:33:01 +01:00
zelig
03cc5df9b7 eth: fix protocol version/network id copied from config to Ethereum field 2015-03-23 16:23:06 +00:00
obscuren
0330077d76 moved state and vm to core 2015-03-23 16:59:09 +01:00
obscuren
d7eaa97a29 moved to error 2015-03-23 16:55:40 +01:00
obscuren
211cb03f83 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 16:47:05 +01:00
Jeffrey Wilcke
9562a9840f Merge pull request #537 from Gustav-Simonsson/blocktests2
Add post state validation to block tests and disable network, add RPC
2015-03-23 16:39:26 +01:00
Taylor Gerring
5707912e2f "pending" convention should be -2 instead of 0 2015-03-23 16:36:12 +01:00
obscuren
253ecdc8bb Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 16:35:49 +01:00
obscuren
9be7853e34 Fixed issues with stalled remote miner 2015-03-23 16:35:44 +01:00
Taylor Gerring
2f8601ef38 Rename blockAge to blockHeight 2015-03-23 16:34:50 +01:00
Gustav Simonsson
becc503230 Correct difficulty calculation to use new difficulty minimum 2015-03-23 16:32:20 +01:00
Gustav Simonsson
5d31a475e9 Fix new types for blocktests and comment out non-working log level setter 2015-03-23 16:32:20 +01:00
Gustav Simonsson
60de4d6dd1 gofmt 2015-03-23 16:32:20 +01:00
Gustav Simonsson
08bb472c91 Add validation of post state accounts to block tests 2015-03-23 16:32:20 +01:00
Gustav Simonsson
33c5186fd0 In blocktest cmd, disable network and add RPC flag 2015-03-23 16:32:20 +01:00
obscuren
dc3a9379f5 logging for possible uncles 2015-03-23 16:14:33 +01:00
Taylor Gerring
3f6e1b2fd3 db_putHex/db_getHex + tests 2015-03-23 16:04:21 +01:00
obscuren
524f8199bf added some nil checks for cache (testing specific) 2015-03-23 12:22:58 +01:00
obscuren
6657d544db Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-23 12:12:53 +01:00
obscuren
0be6d34048 finally merged *the missing* 2015-03-23 12:12:49 +01:00
Jeffrey Wilcke
dbb2af6016 Merge pull request #548 from tgerring/typescleanup
Fix Mist types build errors
2015-03-23 12:12:29 +01:00
Taylor Gerring
91a2275ad3 Move RemoteAgent to miner pkg 2015-03-23 11:21:41 +01:00
Taylor Gerring
439481d177 Rename Agent to RemoteAgent 2015-03-23 11:14:42 +01:00
Taylor Gerring
01c0ba22ae Add DAG seed hash and difficulty to GetWork 2015-03-23 11:09:48 +01:00
Taylor Gerring
0846e15667 go away! 2015-03-23 09:36:28 +01:00
Taylor Gerring
ab6311c1bd Move remote mining agent to XEth 2015-03-23 09:35:42 +01:00
Taylor Gerring
d76e8cb1f1 Consistent var names 2015-03-23 09:24:52 +01:00
Taylor Gerring
16a58f8f2a Always return 3 strings 2015-03-23 08:55:06 +01:00
Taylor Gerring
31879eca8c Stub corrected getWork response 2015-03-23 08:45:09 +01:00
Taylor Gerring
3772f02569 Rename for filename typo 2015-03-23 08:29:41 +01:00
Taylor Gerring
372e1cad5b Cleanup get/submitWork
getWork needs to return additional values
2015-03-23 08:28:54 +01:00
Ethan Buchman
d2fa6e7753 vm: explicit error checks in ecrecover. closes #505 2015-03-22 14:54:40 -07:00
Jeffrey Wilcke
8affdf96e2 Merge pull request #547 from tgerring/commoncleanup
common/common.go cleanup
2015-03-22 21:46:46 +01:00
Jeffrey Wilcke
3133372a6a Merge pull request #536 from zsfelfoldi/develop
using robertkrimen/otto, godeps updated
2015-03-22 21:45:56 +01:00
obscuren
59eab49cb8 Merge branch 'ethersphere-jsonlog' into develop 2015-03-22 21:43:58 +01:00
obscuren
8b1b9fc99d Merge branch 'jsonlog' of https://github.com/ethersphere/go-ethereum into ethersphere-jsonlog
Conflicts:
	eth/backend.go
2015-03-22 21:43:36 +01:00
obscuren
8ed4f226d1 check for nil ptrs 2015-03-22 15:44:00 +01:00
obscuren
82956df523 Get work / submit work partially implemented.
* WIP missing arguments for submitting new work
* GetWork **done**
2015-03-22 15:38:01 +01:00
Taylor Gerring
d186bf0dfe Fix Mist types build errors 2015-03-22 14:25:33 +01:00
Taylor Gerring
bf73f02fe0 Remove common.go 2015-03-22 13:48:07 +01:00
Taylor Gerring
360c66c65d Move Big* vars to big.go 2015-03-22 13:46:38 +01:00
Taylor Gerring
2477d10aa0 Move MakeName to path 2015-03-22 13:46:21 +01:00
Taylor Gerring
c0741edc34 Move OS-specific funcs to path.go 2015-03-22 13:44:17 +01:00
Taylor Gerring
82a41a198e Move CurrencyToString to size 2015-03-22 13:35:13 +01:00
Taylor Gerring
08b21acff1 Move ToHex/FromHex into bytes 2015-03-22 13:32:52 +01:00
Jeffrey Wilcke
9682a3ef3e Merge pull request #526 from ethersphere/frontier/blockpool
Frontier/blockpool
2015-03-22 13:11:16 +01:00
obscuren
e349fb9350 bump 2015-03-22 12:20:27 +01:00
obscuren
13781b922a converted to proper types 2015-03-22 12:12:29 +01:00
zelig
0edb33566f fix blockpool test logger 2015-03-22 02:18:07 +00:00
zelig
78cff9e3a4 independent flag for json structured logging
- logjson flag remove logformat flag
- passed to eth Config
- logsystem not a field of Ethereum
- LogSystem does not need to expose GetLogLevel/SetLogLevel
- message struct just implements more generic LogMsg interface
- LogMsg is a fmt.Stringer with Level()
- jsonMsg ([]byte) implements LogMsg
- remove "raw" systems
- move level logic inside StdLogSystem
- logsystems only print their kind of msg: jsonLogSystem prints jsonMsg, StdLogSystem prints stdMsg
2015-03-22 02:16:54 +00:00
zelig
95038fc62d Idle too long error incorrectly triggered even when peer sending new blocks
- fix status chain map uses common.Hash as key
- add badPeers increment to IncorrectTD errors (forgotten)
- signal head info update to head section process even if parent hash is not in pool (inserted), so that idle timer can be set to nil
- suicideC -> peer.headInfoTimer
- quit -> peer.bestIdleTimer
- and they are properly set from within getBlockHashes and handleSection
2015-03-22 02:02:24 +00:00
obscuren
7f85608f30 Merge branch 'conversion' into develop 2015-03-21 18:18:19 +01:00
Jeffrey Wilcke
09766d1729 Merge pull request #535 from maran/fixReadmeLink
Fix link to build instructions in the readme
2015-03-21 18:16:55 +01:00
obscuren
fcacfabe19 Added new ethereum.js 2015-03-21 15:09:03 +01:00
obscuren
83728e4b64 Merge branch 'develop' into conversion
Conflicts:
	rpc/responses.go
2015-03-21 14:54:25 +01:00
obscuren
004f5008ff Merge branch 'rpcfrontier' into develop 2015-03-21 14:53:12 +01:00
obscuren
a7ad9c309b Merge branch 'develop' into conversion 2015-03-21 14:52:42 +01:00
obscuren
38c7c589e4 Merge branch 'rpcfrontier' into develop 2015-03-21 14:52:31 +01:00
obscuren
ce862ee758 Removed some comments 2015-03-21 14:51:45 +01:00
obscuren
4300f2a0fa Fixed state tests 2015-03-21 14:47:50 +01:00
obscuren
c28116cb3b Fixed incorrect recipient derived 2015-03-21 14:46:50 +01:00
obscuren
06697775d1 Merge branch 'conversion' of github.com-obscure:ethereum/go-ethereum into conversion 2015-03-21 14:36:20 +01:00
Taylor Gerring
9edb9a21bc Add json LogSystem #538 2015-03-21 07:26:44 +01:00
Taylor Gerring
670021da15 Rename topic to topics #544 2015-03-21 07:08:33 +01:00
Felix Lange
069c87b960 whisper: use common.Hash 2015-03-21 00:57:18 +01:00
Felix Lange
7c4ff3abb4 eth: enable whisper again 2015-03-21 00:50:20 +01:00
Felix Lange
483d43a15a whisper: use package rlp 2015-03-21 00:49:58 +01:00
Felix Lange
a829a56587 rlp: add Stream.Raw 2015-03-21 00:49:31 +01:00
Felix Lange
81800ca39e Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-20 22:47:27 +01:00
Felix Lange
b95ff54632 cmd/blocktest: delete package
Blocktests are now integrated in cmd/ethereum.
2015-03-20 22:46:41 +01:00
Felix Lange
b41185a68f rlp: fix nil pointer decoding
The generic pointer decoder did not advance the input position
for empty values. This can lead to strange issues and even
infinite loops.
2015-03-20 22:33:40 +01:00
obscuren
abce6804a0 Right pad bytes to prevent future programmers making bugs 2015-03-20 20:37:56 +01:00
obscuren
f4e9638867 Merge branch 'ethersphere-frontier/blockpool' into conversion 2015-03-20 18:01:05 +01:00
obscuren
ecd10d2cf7 iterator returned wrong value 2015-03-20 18:00:54 +01:00
obscuren
1821d1af48 Merge branch 'frontier/blockpool' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/blockpool 2015-03-20 17:42:25 +01:00
obscuren
54dac59285 wip 2015-03-20 17:42:09 +01:00
obscuren
a59bb053f4 merge 2015-03-20 16:02:01 +01:00
obscuren
deee9cb170 Added caching for block chain. Currently set to 10k 2015-03-20 15:54:42 +01:00
Taylor Gerring
28e1971272 Merge branch 'rpcxeth' into rpcfrontier
Conflicts:
	rpc/api.go
2015-03-20 15:25:43 +01:00
Taylor Gerring
0cde7a4d46 Add xethAtStateNum convenience method 2015-03-20 14:56:55 +01:00
Taylor Gerring
efcc93e7da Move Account register to xeth 2015-03-20 14:12:07 +01:00
Felix Lange
28ddc16a9b Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-20 14:01:35 +01:00
Felix Lange
c161d73d42 common: drop accessors for Value.Val
I don't see why we would need two different accessors for a public field.
2015-03-20 14:00:26 +01:00
Felix Lange
dcb9614dfe common: drop unused kind field from Value
This makes Value 24 bytes smaller on 64bit systems.
2015-03-20 14:00:26 +01:00
Felix Lange
f7d1d601e9 common: make Value encodable with package rlp
Value.{Encode,Decode} are gone. It implements rlp.Encoder and rlp.Decoder
instead, so Value can be decoded into directly.
2015-03-20 14:00:26 +01:00
Felix Lange
c388e7eac0 crypto: remove use of common.Value.Encode
This seems to be the last remaining use of it.
2015-03-20 14:00:26 +01:00
zsfelfoldi
85acdadcfa fixed jsre test 2015-03-20 13:48:23 +01:00
Taylor Gerring
739c36ad4d inline GetStorageAt 2015-03-20 13:45:07 +01:00
Taylor Gerring
28e5fc8352 Make pretty 2015-03-20 13:37:56 +01:00
zsfelfoldi
8324b683b4 using robertkrimen/otto, godeps updated 2015-03-20 13:22:01 +01:00
Maran
7690285cbe Fix link to build instructions in the readme 2015-03-20 13:19:26 +01:00
zelig
66b29899c4 use common.Hash as pool key, no string conversion needed 2015-03-20 11:57:47 +00:00
obscuren
4f5b362bda %#x => %x 2015-03-20 12:52:03 +01:00
obscuren
91f9f355b2 test 2015-03-20 12:17:57 +01:00
obscuren
41c493ace9 Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-20 12:07:19 +01:00
obscuren
55fdf3e462 Listen to tx pre event and trigger 'pending' 2015-03-20 12:07:06 +01:00
zelig
d7564a9a25 fix common.Hash conversion 2015-03-20 10:41:41 +00:00
zelig
8987750a36 fix import in reorganised test 2015-03-20 10:41:41 +00:00
zelig
0578df9467 remove eth/wallet.go (only commented out content) 2015-03-20 10:41:41 +00:00
zelig
a578db5dae improve documentation and move one test 2015-03-20 10:41:41 +00:00
zelig
8767179d74 reduce logging output 2015-03-20 10:41:41 +00:00
zelig
63cae9b9ac uncomment status test, hack: skip the 2 unreliable fields 2015-03-20 10:41:41 +00:00
zelig
137a9c9365 check and penalise td misreporting
- add ErrIncorrectTD
- checkTD called after insertChain successful
- fix tests, use blockPoolTester.tds to map block index to TD
2015-03-20 10:41:41 +00:00
zelig
a9926a289d fix missing hexification on IdleTooLong error log 2015-03-20 10:41:40 +00:00
zelig
391e89d70a use own total difficulty to limit best peer
- update blockpool td by subscribing to ChainHeadEvent
- if ahead of best peer, demote it
- addPeer now take own td as current td
- removePeer now take own td as current td
- add relevant tests to peers_test
- eth: backend now calls blockpool with eth.eventMux and chainManager.Td
2015-03-20 10:41:40 +00:00
zelig
50661f0e68 peer suspension to disallow reconnect after disconnect on fatal error for set period (PeerSuspensionInterval) 2015-03-20 10:41:40 +00:00
obscuren
01ff0b3176 fixed ethash 2015-03-20 11:40:46 +01:00
obscuren
d8fe8f60e8 updated ethash 2015-03-20 11:19:12 +01:00
Taylor Gerring
b3329bc698 inline Transact 2015-03-20 07:15:34 +01:00
Taylor Gerring
aa3918efa7 Move transact gas check to XEth 2015-03-20 07:13:29 +01:00
Taylor Gerring
e038a42d7a inline Call 2015-03-20 06:58:53 +01:00
Taylor Gerring
1d6451f5c3 inline GetBlockByNumber 2015-03-20 06:57:23 +01:00
Taylor Gerring
bde161382a inline GetBlockByHash 2015-03-20 06:53:24 +01:00
Taylor Gerring
eb45211501 Merge branch 'rpcfrontier' of github.com:ethereum/go-ethereum into rpcfrontier 2015-03-20 06:45:44 +01:00
Taylor Gerring
b56e20be27 Reorg for clarity 2015-03-20 00:24:23 -04:00
Taylor Gerring
754160afea Move gas defaults to XEth 2015-03-20 00:23:48 -04:00
Taylor Gerring
c3a3d38735 Add tests for errors 2015-03-20 00:08:29 -04:00
Taylor Gerring
3cea7d87c1 Rename FilterOptions to BlockFilterArgs 2015-03-19 23:55:17 -04:00
Taylor Gerring
d791fe4975 Remove unnecessary event mux 2015-03-19 23:34:35 -04:00
Taylor Gerring
19360c0079 Move stateAt func to XEth 2015-03-19 23:28:45 -04:00
Taylor Gerring
6669ef5b70 Rename for clarity 2015-03-19 23:20:54 -04:00
Taylor Gerring
7b45f3377f inline MessagesChanged 2015-03-19 23:14:55 -04:00
Taylor Gerring
2ef2b9f2e0 inline UninstallWhisperFilter 2015-03-19 23:13:52 -04:00
Taylor Gerring
1f9b93647b inline NewWhisperFilter 2015-03-19 23:11:52 -04:00
Taylor Gerring
4b5e592656 inline AllLogs 2015-03-19 23:10:23 -04:00
Taylor Gerring
0bda63eb76 inline Logs 2015-03-19 23:08:26 -04:00
Taylor Gerring
d2e7414230 inline FilterChanged 2015-03-19 23:07:25 -04:00
Taylor Gerring
3e9632e256 inline NewFilterString 2015-03-19 23:06:32 -04:00
Taylor Gerring
84b19971fa inline UninstallFilter 2015-03-19 23:05:23 -04:00
Taylor Gerring
4663a55f12 inline NewFilter 2015-03-19 23:03:53 -04:00
Taylor Gerring
7c30716828 Merge branch 'rpcinline' into rpcxeth
Conflicts:
	rpc/api.go
2015-03-19 23:01:10 -04:00
Taylor Gerring
6c04c19eb4 Reorg filter logic to XEth 2015-03-19 22:58:07 -04:00
Taylor Gerring
12d87226a7 Merge branch 'rpcutil' into rpcfrontier 2015-03-19 20:52:36 -04:00
Taylor Gerring
cdfc03dc8e inline WhisperPost 2015-03-19 20:40:50 -04:00
Taylor Gerring
0895190b64 inline GetBlockTransactionCountByHash 2015-03-19 20:31:40 -04:00
Taylor Gerring
ff657edbb6 inline GetBlockTransactionCountByNumber 2015-03-19 20:30:42 -04:00
Taylor Gerring
c57eb286d6 inline GetBlockUncleCountByHash 2015-03-19 20:29:46 -04:00
Taylor Gerring
216175c265 inline GetBlockUncleCountByNumber 2015-03-19 20:28:25 -04:00
Taylor Gerring
7e6c8a411d fixes 2015-03-19 20:26:09 -04:00
Taylor Gerring
22546dcb55 inline UninstallWhisperFilter 2015-03-19 20:14:27 -04:00
Taylor Gerring
b28e6d8306 inline WhisperMessages 2015-03-19 20:12:52 -04:00
Taylor Gerring
cc91ba0add inline GetTransactionByHash 2015-03-19 20:12:12 -04:00
Taylor Gerring
0eb9572d64 inline RemoveWhisperIdentity 2015-03-19 20:10:05 -04:00
Taylor Gerring
85e03217de inline NewWhisperIdentity 2015-03-19 20:09:54 -04:00
Taylor Gerring
57f6a3b5c0 inline DbGet 2015-03-19 20:06:35 -04:00
Taylor Gerring
6fef616870 inline DbPut 2015-03-19 20:05:48 -04:00
Taylor Gerring
d28cd0f040 inline GetCompilers 2015-03-19 20:04:40 -04:00
Taylor Gerring
152b37ee11 inline GetData 2015-03-19 20:04:02 -04:00
Taylor Gerring
e530c960a4 inline GetTxCountAt 2015-03-19 20:03:27 -04:00
Taylor Gerring
3aea645106 inline GetStorage 2015-03-19 20:02:31 -04:00
Taylor Gerring
7562bc1dbc inline GetBalance 2015-03-19 20:00:41 -04:00
Taylor Gerring
b7745c6835 inline HasWhisperIdentity 2015-03-19 20:00:18 -04:00
Taylor Gerring
6cc02aadbf Inline getStateWithNum 2015-03-19 19:58:59 -04:00
obscuren
62236dd95e copy over loop 2015-03-19 23:20:41 +01:00
Taylor Gerring
abc3d8d50a Make send internal 2015-03-19 18:06:26 -04:00
obscuren
df5901fdc5 Removed more casts 2015-03-19 22:45:03 +01:00
obscuren
013427bde2 Merge branch 'develop' into conversion 2015-03-19 21:18:29 +01:00
obscuren
f144a95940 Squashed 'tests/files/' changes from e558aa4..559268b
559268b go failure
473f67f BlockTests More Invalid RLPs updated to latest develop
296c653 Fixed test to 15 header items
d011a67 Merge branch 'develop' of git://github.com/ethereum/tests into develop
44a3664 Updated to 16mb size

git-subtree-dir: tests/files
git-subtree-split: 559268ba4b454152c17b343db33d617877f30a3a
2015-03-19 21:14:51 +01:00
obscuren
b4a51de602 Merge commit 'f144a95940a5df0809bb028eef7b337125423602' into develop 2015-03-19 21:14:51 +01:00
Taylor Gerring
c7b616ac14 Remove util 2015-03-19 14:28:31 -04:00
Taylor Gerring
1f2de6ecd5 Remove extra logger 2015-03-19 14:21:42 -04:00
Taylor Gerring
d670c861d7 Move Log to LogRes 2015-03-19 14:19:52 -04:00
obscuren
29eb220910 :-) 2015-03-19 17:18:55 +01:00
obscuren
e861bbe0c1 Merge branch 'rpcfrontier' into develop 2015-03-19 17:00:01 +01:00
obscuren
463491f8cd moved back to debug 2015-03-19 16:59:54 +01:00
obscuren
b5a71d955c merge 2015-03-19 16:59:13 +01:00
obscuren
e540a75030 re-enabled json logging 2015-03-19 16:30:01 +01:00
obscuren
03b8ddd19c Merge branch 'rpcfrontier' into develop 2015-03-19 16:29:32 +01:00
obscuren
14a2f42f37 fixed chain event. Closes #529 2015-03-19 16:19:54 +01:00
obscuren
93ba3df4ff Removed frontier from version :-( 2015-03-19 15:36:38 +01:00
obscuren
b52807f0c0 Removed frontier in version :-( 2015-03-19 15:36:00 +01:00
Felix Lange
ce063e8d9c Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-19 15:21:49 +01:00
Felix Lange
e80dda6051 eth, whisper: adapt for RLP encoder switch in package p2p
I have rewritten the protocol test to use p2p.MsgPipe because
p2p.NewMsg is gone.
2015-03-19 15:18:31 +01:00
Felix Lange
b9e0b11e7d p2p: interrupt MsgPipe payload read/write
This is better because protocols might not actually read the payload for
some errors (msg too big, etc.) which can be a pain to test with the old
behaviour.
2015-03-19 15:16:06 +01:00
Felix Lange
a7bced779a p2p: log disconnect requests
This helps a lot with debugging.
2015-03-19 15:15:07 +01:00
Felix Lange
5ba51594c7 p2p: use package rlp to encode messages
Message encoding functions have been renamed to catch any uses.
The switch to the new encoder can cause subtle incompatibilities.
If there are any users outside of our tree, they will at least be
alerted that there was a change.

NewMsg no longer exists. The replacements for EncodeMsg are called
Send and SendItems.
2015-03-19 15:11:02 +01:00
Felix Lange
4811f460e7 p2p: export ExpectMsg (for eth protocol testing) 2015-03-19 15:08:04 +01:00
obscuren
797bbce15e Merge branch 'develop' into conversion 2015-03-19 15:07:47 +01:00
obscuren
554f20930a Merge branch 'develop' into rpcfrontier 2015-03-19 15:07:33 +01:00
obscuren
a756dbeb7b Removed uint casts 2015-03-19 15:06:56 +01:00
obscuren
ad7e491214 improved test output 2015-03-19 15:04:29 +01:00
obscuren
d4e5747d04 Merge branch 'develop' into conversion 2015-03-19 14:31:41 +01:00
obscuren
cf45b939a0 fixed tests 2015-03-19 14:31:14 +01:00
Felix Lange
e13c673980 Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-19 12:17:43 +01:00
Felix Lange
965c9babe3 rlp: fix encoding of one element strings and byte slices
The encoder was missing a special case for one element strings whose
element is below 0x7f. Such strings must be encoded as a single byte
without a string header.
2015-03-19 12:15:43 +01:00
obscuren
d7ab716eea Fixed mkdnode & added some tests 2015-03-19 10:57:02 +01:00
Taylor Gerring
8b20c3cc97 Validate NewTx From field is not blank 2015-03-18 20:30:09 -04:00
obscuren
85fa3790ac Squashed 'tests/files/' changes from 641ebaa..e558aa4
e558aa4 clean up
47096f8 remove corrupted files
47e73ea even more failures
18506ee add tests
a9729da merge
bc09d2e merge
3c89576 new tests
650ac93 Merge remote-tracking branch 'origin/develop' into develop
ee7ea6a update blockChainTests
46484ae fuzz tests
eb8f8fb fuzz testing
1c74972 fuzz testing results
8f06b8f Block Tests +make RLP header larger than rlp +all block fields  +1)Prefixed000  +2)Larger size  +3)Less Size  +4)rlp element list when shouldnt  +5)given as array +random byte at the end +transaction fields +random byte in RLP
fdf6c3e BlokTests Invalid Block Header RLPs (0000prefix, tooLarge, tooShort)
c81751d update gasLimit

git-subtree-dir: tests/files
git-subtree-split: e558aa49d425eb43b8ee2f71f52b6312ab092520
2015-03-18 22:13:08 +01:00
obscuren
e67d32b467 Merge commit '85fa3790ac9f67232f0e31e7f861c66ef0e0047e' into develop 2015-03-18 22:13:08 +01:00
Taylor Gerring
da427e8843 Merge branch 'rpcutil' into rpcfrontier 2015-03-18 15:57:06 -04:00
Taylor Gerring
0685810ec6 Tests 2015-03-18 15:48:40 -04:00
Taylor Gerring
e02eedb43e BlockNumber as int fix 2015-03-18 15:48:34 -04:00
Taylor Gerring
7cbcd81ddc Remove UnmarshalRawMessages 2015-03-18 15:42:57 -04:00
obscuren
5f35e6778f Merge branch 'rpcfrontier' into conversion 2015-03-18 18:42:30 +01:00
obscuren
af9da83ce2 Merge branch 'develop' into rpcfrontier 2015-03-18 18:42:21 +01:00
obscuren
f0bb136099 Merge branch 'develop' into conversion 2015-03-18 18:42:01 +01:00
obscuren
c12046d6bf Merge branch 'ethersphere-frontier/cli-private-network' into develop 2015-03-18 18:39:56 +01:00
obscuren
79f90bf7c1 added frontier to version 2015-03-18 18:39:24 +01:00
obscuren
bc5ae94384 Merge branch 'frontier/cli-private-network' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/cli-private-network 2015-03-18 18:37:20 +01:00
obscuren
f9a6038f5b merge 2015-03-18 18:23:37 +01:00
Taylor Gerring
baca0c2251 Merge pull request #523 from fjl/docker-fast
Dockerfile: use fast™ build steps
2015-03-18 12:09:20 -04:00
Felix Lange
3e52c9439a Merge pull request #522 from fjl/makedag
cmd/ethereum: add makedag command for testing
2015-03-18 16:40:50 +01:00
Taylor Gerring
60c43d1952 Remove i2hex 2015-03-18 11:10:08 -04:00
Taylor Gerring
7c9bc8517d Remove RpcServer 2015-03-18 11:08:49 -04:00
obscuren
4d0ae8b0cb Merge branch 'conversion' of github.com-obscure:ethereum/go-ethereum into conversion 2015-03-18 14:16:07 +01:00
obscuren
48dd601de0 prep template for fixed size hashes 2015-03-18 14:15:58 +01:00
Felix Lange
064279c0ec cmd/ethereum, cmd/utils: partial fix for chain import 2015-03-18 14:04:44 +01:00
Taylor Gerring
e30c323391 merge develop 2015-03-18 08:46:55 -04:00
Felix Lange
d15f90645d Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-18 13:39:01 +01:00
Felix Lange
a59dd393e7 core: fix tests 2015-03-18 13:38:47 +01:00
Felix Lange
b5b83db450 core: use package rlp to encode blocks
This also changes the chain export format so there is no
enclosing list around the blocks, which enables streaming export.
2015-03-18 13:36:48 +01:00
Felix Lange
c298148a7f core/types: use package rlp instead of common.Decode 2015-03-18 13:24:34 +01:00
Felix Lange
b94a6a0193 rlp: add DecodeBytes
Über-convenience.
2015-03-18 13:17:39 +01:00
obscuren
0a1eeca41e conversions. -compilable- 2015-03-18 13:00:01 +01:00
obscuren
942980609f conversions 2015-03-18 11:44:25 +01:00
obscuren
cd52ef315c Added Hex methods 2015-03-18 11:44:17 +01:00
zelig
ca8d184173 fix eth tests 2015-03-18 16:31:49 +07:00
zelig
b6aa88c099 private network support
- protocolversion, networkid global int flags to cli and mist
- fix bug with protocolversion check using wrong db
- log protocolversion & networkid in backend
2015-03-18 14:44:58 +07:00
Taylor Gerring
67c9d9c2fa Remove JsonWrapper 2015-03-17 20:14:19 -04:00
Felix Lange
cb009a5c4d rlp: don't panic for nil *big.Int
All other pointer types can handle nil just fine.
2015-03-17 23:49:49 +01:00
Taylor Gerring
c6f84325b1 Support JSON RPC batch requests 2015-03-17 17:46:22 -04:00
Taylor Gerring
8fd243ee23 Add JSON RPC batch support
http://www.jsonrpc.org/specification#batch
2015-03-17 17:38:05 -04:00
zelig
7dbbe1bedc eth/backend: remove spurious and incorrent PeerInfo() 2015-03-18 04:01:47 +07:00
zelig
1872418316 eth: remove disused peer_util.go 2015-03-18 03:59:21 +07:00
obscuren
142e81258c Merge branch 'develop' into conversion 2015-03-17 21:40:05 +01:00
Jeffrey Wilcke
3ea99f989f Merge pull request #498 from maran/feature/drytoHex
DRY up the use of toHex in the project and move it to common
2015-03-17 21:31:42 +01:00
obscuren
048d4ec5be Merge branch 'rpcfrontier' into develop 2015-03-17 21:30:29 +01:00
obscuren
917050dc30 Merge branch 'develop' into rpcfrontier 2015-03-17 21:27:34 +01:00
obscuren
53104b09fa bump 2015-03-17 21:23:05 +01:00
Felix Lange
786a58d8b0 Merge pull request #485 from ethersphere/frontier/nodeadmin.js
Frontier console node admin interface
2015-03-17 21:15:23 +01:00
obscuren
86661de077 Fixed tests and bloom 2015-03-17 18:00:03 +01:00
obscuren
c21293cd91 bloom 2015-03-17 16:05:17 +01:00
Felix Lange
1513413412 Dockerfile: use fast™ build steps 2015-03-17 14:49:37 +01:00
Felix Lange
b422835a59 cmd/ethereum: add makedag command for testing 2015-03-17 14:12:34 +01:00
Taylor Gerring
fe819f3b9f Comment out whisper remove identity stubs 2015-03-17 09:11:01 -04:00
obscuren
0fa7859b94 Fixed VM & Tests w/ conversion 2015-03-17 13:24:25 +01:00
obscuren
ff55c6f5ba Merge branch 'develop' into conversion
Conflicts:
	common/types.go
2015-03-17 13:09:22 +01:00
obscuren
b0ebccb31e fixed to 2015-03-17 12:56:29 +01:00
Felix Lange
17c5ba2b6b core: actually convert transaction pool 2015-03-17 12:16:21 +01:00
obscuren
9663493ba0 Merge commit 'dffaa678f966f87dcd011671a16b554b29a37549' into develop 2015-03-17 12:02:50 +01:00
obscuren
dffaa678f9 Squashed 'tests/files/' changes from 0749546..641ebaa
641ebaa Merge branch 'develop' of https://github.com/ethereum/tests into develop
8e44fd4 possibility to launch more than one machine
5498fd5 2 more python fails
99268f3 update random test simulation files
170485e Merge remote-tracking branch 'origin/develop' into develop
4fcdf8f new python fails
e67b68a Merge branch 'develop' of https://github.com/ethereum/tests into develop
3f45f18 BlockRLPTests block fields prefixed with 0000
9fa9bbd Merge pull request #78 from wanderer/develop
222c2b4 update block tests
9d844dd python fails
05233a4 update blockchaintests
7dc0aa2 update JS_API_Test blockchain
6daf1cc added JS_API_test blockchain
e878f7e consitant address format
0e246ce python fail
57ea9a0 random failures
95934e0 add test for callcode to 0
13b8cd2 new python failures
9e60453 remove empty tests
ca6dfa9 uncle older than 6 generation test
cf7e950 some random failures
282090e update gas limits + uncle generation test
bb4c1f4 cppjit failure
cda9d4c more random failures
31ac17a add calldataload big offset test
f6b8e28 remove seedhash and update blockchain tests
ad69f9d add addmod test in order toc check that nothing get downcasted inbetween
38b7db2 a failing test
b9149b5 Merge remote-tracking branch 'origin/develop' into develop
5bea708 more failing tests
478a07d fix missing comma
6d82797 Merge remote-tracking branch 'origin/develop' into develop
2f380e2 random fails
3cd0ce7 Merge pull request #75 from romanman/develop
afa0a43 Update crypto.json
1b9b7b8 Introduce ECIES crypto test

git-subtree-dir: tests/files
git-subtree-split: 641ebaa3cf257c08838c707bebb481d61e708f95
2015-03-17 12:02:49 +01:00
Felix Lange
ee7202fa00 Merge remote-tracking branch 'ethereum/conversion' into conversion 2015-03-17 12:01:40 +01:00
Felix Lange
65eee2006d pow/ezp: use common.Hash 2015-03-17 12:01:21 +01:00
Felix Lange
27f7aa0163 core: adapt Message for new Transaction.From signature 2015-03-17 12:00:29 +01:00
Felix Lange
b95387a0dc core: convert transaction pool to common.{Address,Hash} 2015-03-17 11:59:26 +01:00
Felix Lange
e91ab84dbe core/types: don't use Address zero value for invalid addresses 2015-03-17 11:58:31 +01:00
obscuren
515d9432fc converted vm 2015-03-17 11:19:23 +01:00
Felix Lange
d5de6489d7 core/types: fix Transaction.Hash and add support for encoding with package rlp 2015-03-17 01:34:18 +01:00
Felix Lange
ad78db4d62 crypto: fix Sha3Hash and add a test for it 2015-03-17 01:32:35 +01:00
obscuren
8ce6a36478 converted chain manager 2015-03-16 23:48:18 +01:00
obscuren
94505146a2 updated vm env 2015-03-16 23:17:28 +01:00
obscuren
843db4978e updated blockpool 2015-03-16 23:10:26 +01:00
Taylor Gerring
176115e22e More empty param tests 2015-03-16 16:49:51 -04:00
obscuren
4e181c5764 Moved gas 2015-03-16 21:46:47 +01:00
Taylor Gerring
0339a13862 RPC empty args tests 2015-03-16 16:21:51 -04:00
Taylor Gerring
719effa7ec Return error when filter params are not strings 2015-03-16 15:30:31 -04:00
Taylor Gerring
03ac0f18ae Initial support to remove Whisper identities per #491 2015-03-16 14:46:46 -04:00
obscuren
6aa390abfb Merge branch 'conversion' of github.com-obscure:ethereum/go-ethereum into conversion 2015-03-16 18:43:09 +01:00
obscuren
91b0b14845 converted vm 2015-03-16 18:42:18 +01:00
Taylor Gerring
e5e265d024 Merge branch 'develop' into rpcfrontier 2015-03-16 13:02:41 -04:00
Felix Lange
16df850af2 core/types: use common.{Hash,Address} in for transactions 2015-03-16 17:43:42 +01:00
Felix Lange
13ade2ed60 Merge branch 'conversion' of https://github.com/ethereum/go-ethereum 2015-03-16 17:29:08 +01:00
Felix Lange
64490897f3 crypto: add Sha3Hash 2015-03-16 17:27:24 +01:00
obscuren
bfcd2cf132 block conversion 2015-03-16 17:27:23 +01:00
obscuren
e620bde405 conversion state 2015-03-16 17:09:08 +01:00
Maran
7330c97b5b DRY up the use of toHex in the project and move it to common 2015-03-16 16:56:11 +01:00
zelig
17cd7a5817 remove long-running mining test, ethutil -> common 2015-03-16 22:56:05 +07:00
zelig
b3e133dd15 Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-16 22:50:29 +07:00
zelig
73af0302be we do not use the name Frontier Console 2015-03-16 22:49:39 +07:00
zelig
b4060da9eb ethutil -> common 2015-03-16 22:48:54 +07:00
zelig
5e7702fd05 Merge remote-tracking branch 'upstream/develop' into frontier/js
Conflicts:
	cmd/ethereum/js.go
	javascript/types.go
2015-03-16 22:46:29 +07:00
obscuren
76f215b0fe Getters shouldn't need to be pointer receiver 2015-03-16 16:44:27 +01:00
obscuren
0dd9ac375b undo 2015-03-16 16:36:58 +01:00
obscuren
22893b7ac9 removed compile 2015-03-16 16:31:16 +01:00
obscuren
d338650089 compilable trie (tests fail) 2015-03-16 16:28:16 +01:00
Taylor Gerring
5757f547a6 Allow latest/pending in filter options 2015-03-16 10:38:57 -04:00
obscuren
20b7162a62 Added functions to Hash & Address
* Set, SetString, SetBytes
* StringTo*, BytesTo*
2015-03-16 13:23:06 +01:00
obscuren
dc864ee3a5 Added ToString methods 2015-03-16 12:20:17 +01:00
obscuren
3cf51d5479 tmp 2015-03-16 12:03:52 +01:00
obscuren
f486c0ae56 new type + additional methods 2015-03-16 11:59:52 +01:00
obscuren
b523441361 Moved ethutil => common 2015-03-16 11:27:38 +01:00
zelig
8139d444f8 Merge remote-tracking branch 'upstream/develop' into frontier/nodeadmin.js 2015-03-16 15:19:09 +07:00
obscuren
0b8f66ed9e updated godep ethash 2015-03-15 21:47:59 +01:00
obscuren
22fa59f131 moved to detail 2015-03-15 21:47:35 +01:00
zelig
ece5c2aade Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-15 22:29:50 +07:00
zelig
8393dab470 menubar back to mist main.qml 2015-03-15 22:29:10 +07:00
obscuren
d2e75cc957 cleaning up unused code 2015-03-15 15:25:09 +01:00
zelig
ff86d7d52a Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-15 18:43:03 +07:00
zelig
7bc40aa963 jsre: remove assetpath using GOPATH from test 2015-03-15 18:42:17 +07:00
obscuren
c87cc59bdf Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
Conflicts:
	README.md
2015-03-15 12:20:58 +01:00
obscuren
8f84ddbbec Linux build links 2015-03-15 12:20:07 +01:00
obscuren
0f26a62334 Linux build links 2015-03-15 12:19:26 +01:00
zelig
132e87a707 node admin interface for Frontier Console, see spec https://github.com/ethereum/go-ethereum/wiki/Frontier-Console 2015-03-15 13:43:48 +07:00
zelig
8ad0f1b8a3 eth:
- NodeInfo, PeerInfo types, PeersInfo(), NodeInfo() in eth/backend to support node admin IF
- start net only if MaxPeers > 0, close extraDb in Stop()
- defer s.extraDb.Close()
2015-03-15 13:39:52 +07:00
zelig
e150832734 p2p: server>discover table Self=Node exported 2015-03-15 13:38:41 +07:00
zelig
7279a485c2 CLI:
- js subcommand for vm
- console for Frontier console interactive REPL
- jspath in cli
- integrate jeth apiBindings
2015-03-15 13:31:40 +07:00
zelig
16ecb1e2ea rpc
- camelcase fields dont play nice with otto value magic: JsonRpc -> Jsonrpc, ID -> Id
- jeth: ethereum.js rpc transport provider direct bridge between js and ethereumApi via otto jsre
2015-03-15 13:21:54 +07:00
zelig
31ffca6d8a remove jsre from mist 2015-03-15 13:18:58 +07:00
zelig
da44097800 jsre:
- require became loadScript(), no require is supplied
- bignumber_js.go: heredoc v2.0.3 minified fixed for otto Regexp incompatibility https://github.com/robertkrimen/otto#regular-expression-incompatibility
- bignumber.min.js also updated in mist/assets/ext
- ethereum_js.go: latest master minified
- assetPath in constructor
- Eval/Exec/Handle/ToVal nice API
- jsre tests
2015-03-15 13:13:39 +07:00
obscuren
2a5fbced7f removed seed hash 2015-03-14 23:39:45 +01:00
obscuren
282d8c20fd Merge branch 'fjl-block-tests' into develop 2015-03-14 23:37:37 +01:00
obscuren
d9966d6158 merge 2015-03-14 23:37:21 +01:00
obscuren
12cee1377f Increased filter ticker time to 5 minutes 2015-03-14 18:57:12 +01:00
obscuren
95711bc2dd Updated ethash 2015-03-14 16:42:05 +01:00
obscuren
387f6bba3e POW fixes 2015-03-14 16:37:57 +01:00
obscuren
44636e5b82 typo 2015-03-14 13:21:20 +01:00
obscuren
35bc7b0d8a Merge branch 'rpcfrontier' into develop 2015-03-14 12:44:24 +01:00
obscuren
532a74f50e Improved errors. Closes #475 2015-03-14 12:43:10 +01:00
Jeffrey Wilcke
51df765e38 Merge pull request #481 from maran/feature/fromHexDry
DRY-up the use of fromHex in the project
2015-03-14 11:46:32 +01:00
Maran
9754e7aca7 Support for addresses with or without 0x. Fixes #472 2015-03-14 11:40:13 +01:00
Maran
991993357c DRY up the use of fromHex and put it in ethutil 2015-03-14 11:39:35 +01:00
Taylor Gerring
f49e17eb39 Return null coinbase when accounts not created
Was previously returning nonsensical “0x”
2015-03-13 14:32:11 -04:00
Felix Lange
67f8f83a1b cmd/ethereum: add blocktest command 2015-03-13 18:41:09 +01:00
Felix Lange
e463479b6c eth: add ResetWithGenesisBlock
This depends on a change in ethash which exposes UpdateCache.
2015-03-13 18:41:09 +01:00
Felix Lange
6f8a2d6b84 eth: add hook for database creation 2015-03-13 18:41:09 +01:00
Felix Lange
58d9d98daf cmd/utils: GetEthereum -> MakeEthConfig
This allows changing the config before starting Ethereum
with it.
2015-03-13 18:41:09 +01:00
Felix Lange
a80be98f31 tests: add helper functions for block tests 2015-03-13 18:41:09 +01:00
Felix Lange
9326541820 core/types: make Block.{ParentHash,SeedHash,MixDigest} []byte
There is no reason to keep them as ethutil.Bytes.
2015-03-13 18:41:09 +01:00
obscuren
b927c29469 GetBlockByNumber now properly looks for a number in the database 2015-03-13 18:29:42 +01:00
obscuren
fee9aecfb2 more tests for remote update 2015-03-13 17:53:53 +01:00
obscuren
ccda1aacb4 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-13 17:49:05 +01:00
obscuren
03403399fc Return proper error 2015-03-13 17:47:11 +01:00
obscuren
a0266489b4 Make remote dominant 2015-03-13 17:47:00 +01:00
Jeffrey Wilcke
a76d55c83a Merge pull request #467 from ethersphere/frontier/natspec
NatSpec integration
2015-03-13 16:47:16 +01:00
obscuren
b663e8b29a Merge branch 'rpcfrontier' into develop 2015-03-13 16:36:27 +01:00
obscuren
f1fcda4f2f Implemented managed state
* Reimplemented nonce management for known accounts.
2015-03-13 16:29:04 +01:00
Taylor Gerring
e3b64d70c2 Rename db_put db_get 2015-03-13 10:56:41 -04:00
Taylor Gerring
d3f96dc720 Consolidate error type switch 2015-03-13 10:03:48 -04:00
Taylor Gerring
0932f84383 Fix eth_newBlockFilter 2015-03-13 10:03:19 -04:00
obscuren
cda88ce31a Implemented a manage state for keeping track of nonces 2015-03-13 14:37:54 +01:00
obscuren
aa9f981d5f Bump protocol version 58 2015-03-13 13:52:57 +01:00
obscuren
e69d5b32e8 Increased genesis gas & gas floor limit to 3141592 2015-03-13 13:52:23 +01:00
obscuren
f76cc6699e Changed context and ADDMOD, MULMOD
* Cleaned up VM execution. VM run now takes a context
* ADDMOD/MULMOD - removed incorrect cast
2015-03-13 13:44:15 +01:00
Taylor Gerring
d4ed66c83d Add web3_clientVersion 2015-03-12 19:20:46 -05:00
Taylor Gerring
094f921e50 Convert to proper errors
Allow returning different JSON RPC error codes depending on error type
2015-03-12 19:07:03 -05:00
obscuren
80592f244d more obvious failure for ethtest 2015-03-12 23:26:58 +01:00
obscuren
6051345bc9 Squashed 'tests/files/' changes from d6c987f..0749546
0749546 random fails
a153865 random fails

git-subtree-dir: tests/files
git-subtree-split: 074954630f43e97f0769997d175511a00a47cc9d
2015-03-12 22:32:05 +01:00
obscuren
3a88da578f Merge commit '6051345bc9ab8ccf74a49c43342771e0c2cba588' into develop 2015-03-12 22:32:05 +01:00
obscuren
fa917387e4 Merge branch 'rpcfrontier' into develop 2015-03-12 22:31:13 +01:00
obscuren
310ca62285 Removed some of that gas pre pay magic 2015-03-12 22:29:10 +01:00
obscuren
3ff7a627d1 Squashed 'tests/files/' changes from 9e19ff9..d6c987f
d6c987f go failure

git-subtree-dir: tests/files
git-subtree-split: d6c987feed635976ce26b14b9be88289d0ef50d4
2015-03-12 20:01:46 +01:00
obscuren
2ae90e1eba Merge commit '3ff7a627d1921be0aeacdd8eb2853ba4537487eb' into develop 2015-03-12 20:01:46 +01:00
obscuren
11390a986a run all test 2015-03-12 19:43:20 +01:00
obscuren
347cb272be fixed ethtest 2015-03-12 19:41:56 +01:00
obscuren
412e8b0e37 Squashed 'tests/files/' changes from dbdd0f8..9e19ff9
9e19ff9 random state tests failures
7060dc7 dejavu issues
5a89a4b python fail
2470051 python fails - may be just wrong return value

git-subtree-dir: tests/files
git-subtree-split: 9e19ff93918597bbf53a2f127202a70704646d82
2015-03-12 19:15:12 +01:00
obscuren
d1c872bace Merge commit '412e8b0e377bd89fc8fc858bd09c89deee805c1e' into develop 2015-03-12 19:15:12 +01:00
obscuren
fb71c9f6ee Return 1 on fail 2015-03-12 18:22:56 +01:00
obscuren
83cc08f670 Changed to big.Int.Not 2015-03-12 18:22:35 +01:00
Taylor Gerring
14bdcd2c05 Fix arg names in tests 2015-03-12 11:50:03 -05:00
Taylor Gerring
7235e84c75 #469 2015-03-12 11:09:25 -05:00
Taylor Gerring
d11fabd2ef Update path to web3 library 2015-03-12 10:08:01 -05:00
Taylor Gerring
f7c3c7eda4 Update ethereum.js
Added to git modules
2015-03-12 10:03:35 -05:00
obscuren
b97c17f4ee Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-12 15:59:16 +01:00
obscuren
2273155e7e Get transaction implemented
* Added a GetTransaction to XEth
* Implemented the `eth_getTransactionByHash` RPC method
2015-03-12 15:59:07 +01:00
Taylor Gerring
b006b67768 Merge branch 'develop' into rpcfrontier 2015-03-12 09:24:34 -05:00
obscuren
26a5636424 Merge branch 'develop' into rpcfrontier 2015-03-12 14:51:05 +01:00
obscuren
3b3843e158 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-12 14:50:48 +01:00
obscuren
ef6706696c Add additional extra database for non-protocol related data
* Add transaction to extra database after a successful block process
2015-03-12 14:50:35 +01:00
Felix Lange
2a0e5888fd Merge pull request #460 from tgerring/ethutil
Move MakeName to ethutil
2015-03-12 14:45:31 +01:00
Taylor Gerring
4418e4ea6a Should on empty params #466 2015-03-12 08:42:31 -05:00
Taylor Gerring
21fca93852 Output filter ID as hex 2015-03-12 08:20:07 -05:00
zelig
4342fe0f22 include new minified natspec with RE fix; fix test for the improved error messages 2015-03-12 19:08:30 +07:00
Taylor Gerring
704914be08 Check for existance of key before delete 2015-03-12 00:01:18 -05:00
obscuren
31a95151c9 updated rnd vm test => state test 2015-03-12 01:12:28 +01:00
obscuren
92c6150199 Squashed 'tests/files/' changes from e390be4..dbdd0f8
dbdd0f8 update test script for python
29dced2 add failing python test
5b7ebb9 OOG or 1024 depth level fail
3f58fd8 run OOG at tx level with to high value for call
39d8595 run OOG and too high value for call/callcode
55fbf95 run OOG and too high value for call/callcode
8856bfb add callCreateCallCode test file
d2da29e check value when doing callcode
129a464 suicide and storage refund tests with and without storage
6aa5e29 suicide and storage refund tests
fff323d python fails
963648b python callcode fail
31ce83a python big memory fail
531bc36 add memory stress test using return
b7021c7 renaming
959ff59 vm input limit tests
1c3741f update blockchain tests with new uncle reward rule

git-subtree-dir: tests/files
git-subtree-split: dbdd0f829dea8aa053159707caf353d83bf5be0f
2015-03-12 00:57:28 +01:00
obscuren
96496888ed Merge commit '92c6150199395eea6c9893b631cc990e3ff72a33' into develop 2015-03-12 00:57:28 +01:00
obscuren
7ee5cb0a81 Merge branch 'develop' into rpcfrontier 2015-03-12 00:26:40 +01:00
obscuren
9fb52c517b Changed V to byte. Closes #456 2015-03-12 00:18:03 +01:00
Jeffrey Wilcke
6af078bd8c Merge pull request #462 from fjl/miner-coinbase
miner: provide coinbase when starting the miner
2015-03-11 23:56:48 +01:00
Felix Lange
d5aaf413e0 cmd/ethereum: remove extra check for 'no accounts' error
This error can no longer be returned from eth.New.
2015-03-11 23:43:27 +01:00
Felix Lange
d7b5a87b3b miner: provide coinbase when starting the miner
This avoids having to query the coinbase when creating the miner, which
in turn eliminates the dreaded startup error when no accounts are set
up. Later, this will also allow us to simply restart the miner when the
user picks a different coinbase.

This causes a lot of changes in other packages. These are included in
this commit because they're impossible to separate.
2015-03-11 23:43:27 +01:00
Taylor Gerring
70f6f2af07 shh_uninstallFilter 2015-03-11 15:49:21 -05:00
Taylor Gerring
c2181fdbf2 block&index args unmarshal plus test 2015-03-11 15:26:28 -05:00
Taylor Gerring
5a9f712144 Comment out broken test (return type does not exist) 2015-03-11 14:43:39 -05:00
Taylor Gerring
485e37e889 Move MakeName to ethutil 2015-03-11 14:29:07 -05:00
obscuren
587f748d92 Merge branch 'fjl-unencrypted-keys' into develop 2015-03-11 17:47:17 +01:00
obscuren
629f4b1d3c merge 2015-03-11 17:46:58 +01:00
obscuren
239e17de12 Merge branch 'rpcfrontier' into develop 2015-03-11 17:37:17 +01:00
obscuren
c01d4c2f4c Lowered default gas price and increased default gas limit 2015-03-11 17:36:35 +01:00
obscuren
2da7af4ba0 Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-11 17:00:30 +01:00
obscuren
e8d1b622d9 Default block number changes 2015-03-11 17:00:20 +01:00
Taylor Gerring
90f34ed40a Rename Topic to Topics 2015-03-11 10:56:44 -05:00
Taylor Gerring
61bf29be36 Check length of timestring before taking slice 2015-03-11 10:43:52 -05:00
obscuren
08b1154033 Changed logging to use internal logger 2015-03-11 16:36:10 +01:00
obscuren
477815c044 Improved error reporting and removed commented code 2015-03-11 16:33:39 +01:00
obscuren
6b63759ded Reverted global 2015-03-11 16:33:04 +01:00
obscuren
7add66c8bb Use the state to up the balance of the coinbase 2015-03-11 16:32:37 +01:00
Taylor Gerring
9e89c803f1 Get Uncles 2015-03-11 10:27:32 -05:00
Taylor Gerring
53ac85cfd3 BlockHash must be a string 2015-03-11 10:27:24 -05:00
Taylor Gerring
d465e410ef TxIndex -> Index 2015-03-11 10:25:15 -05:00
Felix Lange
99bc44cf52 cmd/ethereum: add a flag to switch to unencrytped keystore
This is mostly for automated tests. The tests can use the following
commands to start the node:

    ethereum --unencrypted-keys account new
    ...
    ethereum --unencrypted-keys
2015-03-11 13:58:01 +01:00
Taylor Gerring
6bca40274f Merge branch 'rpcfrontier' of github.com:ethereum/go-ethereum into rpcfrontier 2015-03-10 22:25:32 -05:00
Taylor Gerring
9ce5229ddf Get transaction via block & index 2015-03-10 22:25:07 -05:00
Taylor Gerring
ece29c5d8d Nil check block 2015-03-10 19:34:07 -05:00
obscuren
074ee19fe5 Merge branch 'develop' into rpcfrontier 2015-03-11 01:11:20 +01:00
obscuren
64933321fb Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier 2015-03-11 01:10:58 +01:00
obscuren
58909117be Use ECDSA instead of elliptic 2015-03-11 01:10:25 +01:00
Taylor Gerring
499f816e30 Output hex should be prepended with 0x 2015-03-10 19:10:02 -05:00
obscuren
7e0ccc9de5 Merge branch 'develop' into rpcfrontier
Conflicts:
	rpc/api.go
	rpc/args.go
2015-03-11 01:08:42 +01:00
Taylor Gerring
fda4d02f94 Left-pad odd length hex inputs and tests 2015-03-10 18:08:31 -05:00
obscuren
eba4f389a6 don't log whisper start ups 2015-03-10 22:43:07 +01:00
obscuren
7d77a2ffc3 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-03-10 22:42:24 +01:00
Jeffrey Wilcke
73171d18b9 Merge pull request #447 from fjl/accounts-integration
Accounts integration
2015-03-10 22:42:03 +01:00
obscuren
eb1b4c8ffe Merge branch 'fjl-accounts-integration' into develop 2015-03-10 20:37:23 +01:00
obscuren
ce595b9266 fallback 2015-03-10 20:28:20 +01:00
obscuren
35841e5190 id to hex 2015-03-10 20:16:53 +01:00
obscuren
d9f96293be Merge branch 'rpcfrontier' of github.com-obscure:ethereum/go-ethereum into rpcfrontier
Conflicts:
	rpc/args.go
2015-03-10 20:16:08 +01:00
obscuren
f22684439a Updated RPC
* Added a generic RawMessage deserialiser
* Updated ethereum.js
* Updated coin test app
2015-03-10 20:14:38 +01:00
Taylor Gerring
3d6519e45b Update response types 2015-03-10 12:52:45 -05:00
Taylor Gerring
617804c327 Merge branch 'rpcfrontier' of github.com:ethereum/go-ethereum into rpcfrontier 2015-03-10 12:50:13 -05:00
Felix Lange
269cfbb8ac Merge branch origin/develop into accounts-integration
Conflicts:
	cmd/blocktest/main.go
	cmd/mist/debugger.go
	cmd/utils/cmd.go
2015-03-10 17:14:31 +01:00
Felix Lange
972e2c1e31 cmd/utils: improve CLI help templates
Help for a specific command now shows available subcommands.
2015-03-10 16:44:48 +01:00
Felix Lange
221fae4112 cmd/ethereum: show some help before prompting for encryption passphrase 2015-03-10 16:44:22 +01:00
Felix Lange
2407f006ad Godeps: bump github.com/codegangsta/cli 2015-03-10 16:41:33 +01:00
Felix Lange
0bb7377ebe cmd/ethereum: show more helpful message if no accounts exist 2015-03-10 15:44:05 +01:00
Felix Lange
9d4e1e8f8b eth: return account errors directly 2015-03-10 15:42:58 +01:00
Felix Lange
c3f94a4341 cmd/utils: remove extra space in fatal error message 2015-03-10 15:42:25 +01:00
Felix Lange
4ba7871374 accounts: return ErrNoKeys if key directory does not exist 2015-03-10 15:41:08 +01:00
Felix Lange
0f67f1e9de xeth: fix signing transaction after unlock 2015-03-10 14:55:00 +01:00
Felix Lange
0395c174ca cmd/ethereum: fix line editing setup and history 2015-03-10 14:31:54 +01:00
obscuren
bbe8b18660 Added unmarshalState 2015-03-10 13:40:49 +01:00
obscuren
53f8f29744 Merge branch 'develop' into rpcfrontier 2015-03-10 12:39:59 +01:00
Jeffrey Wilcke
0542df941f Merge pull request #449 from Gustav-Simonsson/add_blockchain_tests2
Add empty total difficulty to test blocks and clean up stopping the node
2015-03-10 12:07:34 +01:00
obscuren
56524d13b5 removed debugger 2015-03-10 12:06:16 +01:00
obscuren
b87442a9f7 Fixed error message. Closes #448 2015-03-10 11:29:22 +01:00
obscuren
c0a8e3cd34 Merge branch 'poc-9' into develop 2015-03-10 11:25:32 +01:00
Jeffrey Wilcke
c9b6d268b4 Merge pull request #438 from ethersphere/poc9/cli
Poc9/cli (exportchain)
2015-03-10 11:24:47 +01:00
Jeffrey Wilcke
08d396fdba Merge pull request #437 from ethersphere/poc9/natspec
[WIP] Poc9/natspec
2015-03-10 11:24:30 +01:00
obscuren
05c9351659 Merge branch 'accounts-integration' of https://github.com/fjl/go-ethereum into fjl-accounts-integration 2015-03-10 11:04:11 +01:00
Felix Lange
80985f97da cmd/evm, core, ethdb, state, tests/helper: remove ReadConfig calls 2015-03-10 02:39:53 +01:00
Taylor Gerring
3de51f76ee Allow integers for BlockNumber
If parsing fails, fall back to hex decoding
2015-03-09 20:38:37 -05:00
Felix Lange
e6118f2d79 state: fix tests 2015-03-10 02:35:21 +01:00
Felix Lange
9b3ae1fdb7 eth: fix tests 2015-03-10 02:34:52 +01:00
Felix Lange
ae38871a54 cmd/ethereum: remove "prompter" in identifiers 2015-03-10 02:33:59 +01:00
Felix Lange
62ebce304e crypto: delete old key management stuff 2015-03-10 02:12:55 +01:00
Felix Lange
9f0e3bd286 cmd/ethereum: unlock accounts on JS REPL 2015-03-10 02:00:57 +01:00
Felix Lange
395da0e7c1 xeth: use Frontend interface to unlock accounts
The interface has moved to package xeth because that's where it is
actually used.
2015-03-10 02:00:06 +01:00
obscuren
0db4a0e898 Merge branch 'poc-9' into develop 2015-03-10 01:22:38 +01:00
obscuren
0d64163fea Right pad zeros. Closes #446 2015-03-10 01:13:06 +01:00
obscuren
9007f2bbdc reworked stack 2015-03-10 00:25:27 +01:00
Felix Lange
d1e04f7388 cmd/ethereum: allow multiple js files 2015-03-10 00:24:11 +01:00
Felix Lange
487f68ec48 accounts: add {Timed,}Unlock, remove SignLocked 2015-03-10 00:19:01 +01:00
obscuren
0795fd2701 wip 2015-03-09 23:34:31 +01:00
Felix Lange
9bf513e993 Merge ethereum/poc-9 into accounts-integration
Conflicts:
	cmd/utils/cmd.go
	cmd/utils/flags.go
	core/manager.go
	eth/backend.go
	rpc/http/server.go
	xeth/xeth.go
2015-03-09 23:25:46 +01:00
Felix Lange
cd51860bf0 cmd/utils: delete InitConfig, KeyTasks 2015-03-09 23:08:47 +01:00
Felix Lange
697f6748b8 cmd/mist: use cli library and package accounts 2015-03-09 23:08:47 +01:00
Felix Lange
c2e5dacf55 accounts: add Manager.HasAccount, delete Manager.Default 2015-03-09 23:08:46 +01:00
Felix Lange
63758db379 eth: delete unused RpcServer field 2015-03-09 23:08:46 +01:00
Felix Lange
6a7e02fc9f rpc/http: delete package 2015-03-09 23:08:46 +01:00
Felix Lange
a11f1d6a7e rpc: add dataDir parameter and JSON-RPC handler 2015-03-09 23:08:46 +01:00
Felix Lange
73d1ebe244 cmd/utils: add NewApp 2015-03-09 23:08:46 +01:00
Felix Lange
b4fa94c4b1 xeth: don't sign transactions for tx call
This should make calls faster and removes interaction
with account manager.
2015-03-09 23:08:46 +01:00
Felix Lange
2ee88a220a core: remove Hash method from Message interface
This will simplify the next commmit. Hash was only used for logging.
2015-03-09 23:08:41 +01:00
Felix Lange
2dacb51fb0 cmd/blocktest: simplify to fix build
block tests only need the chain, not all of ethereum.
2015-03-09 23:07:24 +01:00
obscuren
a7538d0020 merge 2015-03-09 18:19:35 +01:00
Gustav Simonsson
27c42ea934 Add empty total difficulty to test blocks and clean up stopping the node 2015-03-09 18:03:35 +01:00
obscuren
8560004f38 wip 2015-03-09 17:55:01 +01:00
obscuren
676a0de58d Max size JSON data. Closes #418 2015-03-09 17:28:12 +01:00
Taylor Gerring
9723191b19 Undo client_version changes 2015-03-09 11:04:38 -05:00
Taylor Gerring
fb23a0cfe0 Remove support for compiling serpent 2015-03-09 10:55:18 -05:00
obscuren
20741a96ac Updated xeth instances to take extra param for ui.Interface
Please be aware that if any of the instances on xeth.frontend are called
the program will crash due to the default, temporarily, frontend
interface.
2015-03-09 13:50:05 +01:00
obscuren
738d6e20f2 Added ui.Interface to xeth 2015-03-09 13:49:14 +01:00
obscuren
3deb470b2d Squashed 'tests/files/' changes from b9e4e74..e390be4
e390be4 remove deprecated tests
e9e8e7b update blockchain tests - correct genesis hash
a70dd35 fix genesis hash
35964c9 update uncle tests
82c108f update blocktests - fix LLL in pre state
66f0003 update transactionTests

git-subtree-dir: tests/files
git-subtree-split: e390be4fb8421fdabea041b7bdaea3b582224f7d
2015-03-09 11:43:46 +01:00
obscuren
21fd722abc Merge commit '3deb470b2d07d28040a381722022cdf8867a829a' into poc-9 2015-03-09 11:43:46 +01:00
obscuren
19efebe91e Updated tests and fixed suicide 2015-03-09 11:28:35 +01:00
obscuren
c1cafb56d5 Squashed 'tests/files/' changes from 05fe945..b9e4e74
b9e4e74 adjust gas prices
6a41300 add dajavi memory tests - OOG because of quadratic memory costs
71d80bd update genesis
72b1b52 add randomTest
4b2a090 Merge branch 'PoC9' into develop
fdf7ce0 updated basic blochain test
25c065a Merge pull request #70 from faizkhan00/patch-1
c7e1dac Rename 201501150842LARGE_DATA_IN_CALLCREATE_GOjson to 201501150842LARGE_DATA_IN_CALLCREATE_GO.json
REVERT: 05fe945 Added another pow test

git-subtree-dir: tests/files
git-subtree-split: b9e4e747f01a7b91863ffaa45fd377c251de45aa
2015-03-09 01:02:12 +01:00
obscuren
93cdffca3a Merge commit 'c1cafb56d5da57a44f1d766c5299f11664b93921' into poc-9 2015-03-09 01:02:12 +01:00
zelig
41a89e18f6 version output
- make version output more verbose
- include NetworkId
- go version and os not displayed like env vars (confusing)
2015-03-08 22:50:27 +07:00
zelig
51eed7964e add export blockchain subcommand, remove BlockDo 2015-03-08 22:44:48 +07:00
obscuren
e2c75b0fa1 Squashed 'tests/files/' changes from 15ce2ab..05fe945
05fe945 Added another pow test
7cf2f6b uncle header with block number = 1
d65c7a3 Merge remote-tracking branch 'origin/PoC9' into PoC9
8e05ce5 uncle tests
7c8f2b4 Merge branch 'PoC9' of github.com:ethereum/tests into PoC9
83d1f4d fixed

git-subtree-dir: tests/files
git-subtree-split: 05fe94507b92dbfbfe8c198df33160eaaf9e87fc
2015-03-08 15:29:27 +01:00
obscuren
30584c7cfb Merge commit 'e2c75b0fa17394553b93fe7ddd62c0f6a6441119' into poc-9 2015-03-08 15:29:27 +01:00
obscuren
5dfc67efbd ignore 2015-03-08 15:29:23 +01:00
zelig
0743d68d4c rename constructor New 2015-03-08 20:17:20 +07:00
zelig
97dc4edb45 natspec for poc-9
- put natspec.js in a heredoc string (to help binary)
- constructor takes no args, just sets up js vm
- API: only exports Notice(transaction, abi, method, expression string) (string, error)
- effort to turn natspec.js error strings to proper go errors
- test errors
2015-03-08 20:09:13 +07:00
Felix Lange
6684ef201a accounts: don't store address in unlocked and add commentary
This was suggested during review.
2015-03-08 02:47:05 +01:00
Felix Lange
fb53a9362e accounts: AccountManager -> Manager 2015-03-08 01:58:35 +01:00
Felix Lange
3750ec7b7d accounts: prevent early drops and zero keys in memory when dropping
Private keys would be locked early if SignLocked was called more than
once because the unlockLater was still running. Terminate it properly.
2015-03-08 01:44:15 +01:00
obscuren
f6df3740a8 ignore 2015-03-08 01:31:19 +01:00
obscuren
07955b3041 merge 2015-03-08 01:09:34 +01:00
obscuren
405c0ca4b0 removed 2015-03-08 01:06:59 +01:00
obscuren
e189758d55 Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-08 01:02:46 +01:00
obscuren
8ea0444655 updated ethash 2015-03-08 01:02:39 +01:00
obscuren
69920c735a Bump v 2015-03-08 00:59:26 +01:00
obscuren
e26ebc3110 Updated ethereum.js 2015-03-08 00:54:18 +01:00
Felix Lange
d6a7332993 accounts: fix uses of sync.RWMutex
RWMutexes must be write-locked when writing in order
to actually protect the writes.
2015-03-08 00:36:06 +01:00
Felix Lange
afc530ea41 accounts: use time.Duration correctly
There is no point to using time.Duration if the value is interpreted as
milliseconds. Callers should use the standard multiplication idiom to
choose the unit. In fact, the only caller outside of the tests already
does so.
2015-03-08 00:35:23 +01:00
Felix Lange
fda7b4c79d accounts: use pointers consistently
Account is now always a non-pointer. This will be important once
the manager starts remembering accounts.

AccountManager is now always a pointer because it contains locks
and locks cannot be copied.
2015-03-08 00:18:13 +01:00
Taylor Gerring
fca652eeea Fix logger import path 2015-03-07 10:48:38 -06:00
obscuren
70cbfb199d Added deploy scripts from go-build 2015-03-07 13:16:13 +01:00
Felix Lange
a2810c06d7 cmd/ethereum: add account commands 2015-03-07 12:39:52 +01:00
Felix Lange
d66f93cecd accounts, core, eth, xeth: use account manager for everything
The account manager is now responsible for picking the
default account and the coinbase.
2015-03-07 12:38:33 +01:00
Jeffrey Wilcke
c27c2be584 Merge pull request #435 from zsfelfoldi/poc-9
Natspec + test
2015-03-06 20:11:43 +01:00
obscuren
22b493a6ff Fixed tests 2015-03-06 20:10:59 +01:00
Fefe
e157147253 Now using github.com/obscuren/otto, no need for an Ethereum object
(got rid of some messy code in test)
2015-03-06 18:54:26 +01:00
obscuren
cd856cb213 Separated block db from state db. Partial fix for #416 2015-03-06 18:26:16 +01:00
obscuren
ed84b58af5 Debug option for VM & command line flag 2015-03-06 16:58:52 +01:00
Taylor Gerring
dc7022cd61 Increased args test coverage 2015-03-06 09:54:08 -06:00
obscuren
548e104171 Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-06 16:40:21 +01:00
obscuren
8d9be18b29 Queued approach to delivering chain events 2015-03-06 15:50:44 +01:00
Gustav Simonsson
bc45e5c6de Integrate eth_accounts and eth_transact to use new account manager
* Add from to eth_transact / xeth.Transact and add static pass in lieu
  of integrating with native Mist window for user passphrase entry
* Make eth_accounts return AccountManager.Accounts()
* Add a Generate Key menu item in Mist
2015-03-06 13:10:42 +00:00
Felix Lange
e64f727529 Merge pull request #433 from fjl/newcli
Improved CLI
2015-03-06 14:02:16 +01:00
Felix Lange
a91bf01429 Merge pull request #434 from fjl/poc-9
Godeps: bump github.com/ethereum/ethash
2015-03-06 13:31:41 +01:00
Felix Lange
71e510540e Godeps: bump github.com/ethereum/ethash
This fixes the build.
2015-03-06 12:28:00 +00:00
Felix Lange
de86403f33 cmd/ethereum: fix JS REPL exit and add support for dumb terminals
It is now possible to exit the REPL using Ctrl-C, Ctrl-D or by typing "exit".
2015-03-06 13:08:11 +01:00
obscuren
b72ca57775 Merge branch 'ethersphere-blockpool3' into poc-9 2015-03-06 12:10:23 +01:00
Felix Lange
2393de5d6b Godeps: add github.com/peterh/liner 2015-03-06 10:39:31 +01:00
obscuren
23ad2f02c0 debug comments & pow handling 2015-03-06 10:22:40 +01:00
Taylor Gerring
5da3d911cf Initial args tests 2015-03-06 00:03:22 -06:00
Taylor Gerring
18b076861e Add web3_sha3 test 2015-03-05 22:41:55 -06:00
Taylor Gerring
03dc760ca0 Tidy 2015-03-05 21:48:03 -06:00
Taylor Gerring
ef9d825cfa Refactor & cleanup 2015-03-05 21:37:45 -06:00
Felix Lange
38f6d60e6e cmd/ethereum: new JS repl with cross-platform line editing 2015-03-06 03:57:13 +01:00
Felix Lange
bae7e93a9c cmd/ethereum: improve command line interface
The ethereum command line interface is now structured using subcommands.
These separate the different tasks it can perform.

Almost all flag names are backwards compatible.

The key tasks have not been ported to subcommands since they will be
replaced by the new accounts infrastructure very soon.
2015-03-06 03:57:13 +01:00
Fefe
b67ded9f27 Natspec + test 2015-03-06 03:43:34 +01:00
Felix Lange
f9c6bc63df Godeps: delete golang.org/x/net/websocket
It is no longer imported by any package in our tree.
2015-03-06 02:54:57 +01:00
Felix Lange
bdba044a80 ethutil: remove Config variable
Various functions throughout the codebase used it to grab settings. This
has to stop because I want to use them without reading the config file.

These functions can now be used without reading the config first:

* ethdb.NewLDBDatabase
* ethrepl.NewJSRepl
* vm.New
2015-03-06 02:46:56 +01:00
obscuren
5f4a6069c5 Merge branch 'blockpool3' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool3 2015-03-05 21:53:42 +01:00
Taylor Gerring
94e543bc39 Merge pull request #431 from tgerring/jsonlogs
Structured logging updates
2015-03-05 14:32:41 -06:00
obscuren
580d09084d Merge branch 'ethersphere-blockpool2' into poc-9 2015-03-05 20:38:36 +01:00
obscuren
e089478a1c Merge branch 'blockpool2' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool2 2015-03-05 20:38:19 +01:00
obscuren
88ff13c241 Spec changes.
* All errors during state transition result in an invalid tx
2015-03-05 19:51:25 +01:00
zelig
9067b2848a fix wonky head section loop; correct status counts 2015-03-06 01:33:57 +07:00
Taylor Gerring
9f5e9eb38d Resolve storage/storageat 2015-03-05 12:26:21 -06:00
Taylor Gerring
a6599404e4 Revert to hex response 2015-03-05 11:14:47 -06:00
Taylor Gerring
0d8d51084f Final name changes 2015-03-05 11:07:05 -06:00
Taylor Gerring
5948adfa10 Added eth.chain.received.new_block 2015-03-05 10:58:36 -06:00
Taylor Gerring
fbb307cca0 Added eth.chain.new_head 2015-03-05 10:58:13 -06:00
obscuren
4e8a9a1cd4 Squashed 'tests/files/' changes from 9e3fe72..15ce2ab
15ce2ab Merge remote-tracking branch 'origin/PoC9' into PoC9
5970b09 add quadratic complexity and performance test
163fa03 more info
560b844 more info
a885549 more change
5fed708 one more tiny change
213a2b8 changed test format
c20e88b Merge branch 'PoC9' of github.com:ethereum/tests into PoC9
715ed17 Added first ethash test
e26a39f update blockchain tests to latest protocol changes
34baee5 poc9 vm tests
20550d9 update block chain test due to difficulty change
597b2b3 increase gasLimit on stateTests
8f573d3 update blockchain tests - 2048 bit logs bloom
06c90e6 typo
ef935fc extra data is hex now, for real
81ab5ad extra data is hex now
b0aeba8 update blockchain tests
f862faf add tx tests
618d724 update state tests
4a989f0 update blockchainII tests
ed56e82 add more vm tests
0417655 Merge remote-tracking branch 'origin/PoC9' into PoC9
1f1cf5d update block tests
76b5a8b Fix trie formats.
325dd6d Merge branch 'PoC9' of git://github.com/ethereum/tests into PoC9
a261c5b test3
1d3ab36 again

git-subtree-dir: tests/files
git-subtree-split: 15ce2ab8e22275e7aa93742cb5f8bc63e4e50db5
2015-03-05 17:51:26 +01:00
obscuren
ca1093f848 Merge commit '4e8a9a1cd4a10370fc4a888af0fb2def6f1b961b' into poc-9 2015-03-05 17:51:26 +01:00
obscuren
a7181bd304 merge 2015-03-05 17:49:29 +01:00
obscuren
76e4e233ad Merge branch 'poc-9' of github.com-obscure:ethereum/go-ethereum into poc-9 2015-03-05 17:48:46 +01:00
Jeffrey Wilcke
f01d745d70 Merge pull request #429 from chfast/pr/fix_vm_tests
Fix VM tests
2015-03-05 17:46:57 +01:00
obscuren
d44fe4ec62 Merge branch 'develop' into poc-9 2015-03-05 17:46:40 +01:00
obscuren
72bf02bf15 Merge branch 'tendermint-develop_pull_request' into develop 2015-03-05 17:46:11 +01:00
obscuren
357d17ae58 Start at 0 2015-03-05 17:46:00 +01:00
obscuren
1d1ba40965 Merge branch 'develop_pull_request' of https://github.com/tendermint/ethermint into tendermint-develop_pull_request 2015-03-05 17:44:18 +01:00
Jeffrey Wilcke
3b30765378 Merge pull request #426 from Gustav-Simonsson/add_blockchain_tests
Add initial implementation of block tests
2015-03-05 17:43:56 +01:00
obscuren
377c8a13de Merge branch 'develop' into poc-9 2015-03-05 17:37:18 +01:00
obscuren
201b09f99a Merge branch 'alexvandesande-ui' into develop 2015-03-05 17:37:09 +01:00
obscuren
44b83c6ea6 Removed unused variables 2015-03-05 17:37:00 +01:00
obscuren
12ca70537f Merge branch 'fjl-p2p-handshake-2' into poc-9 2015-03-05 17:26:41 +01:00
obscuren
ba0c41436c Merge branch 'p2p-handshake-2' of https://github.com/fjl/go-ethereum into fjl-p2p-handshake-2 2015-03-05 17:21:32 +01:00
obscuren
fabaf4f1f0 wip math 2015-03-05 17:21:16 +01:00
Taylor Gerring
90ceb5218c Update RPC methods
Re-order to match spec and explicitly list unimplemented methods
2015-03-05 08:58:46 -06:00
zelig
9329e175d8 fix wonky head section loop; correct status counts 2015-03-05 20:38:23 +07:00
Paweł Bylica
0af08eca1f Fix VM tests not checked 2015-03-05 14:35:27 +01:00
zelig
45afbe5d9c Merge remote-tracking branch 'upstream/poc-9' into blockpool3 2015-03-05 16:55:11 +07:00
obscuren
c47866d251 Miner fixes and updates (including miner) 2015-03-05 09:14:58 +01:00
zelig
7315962880 use ethash.Verify in blockpool 2015-03-05 11:22:36 +07:00
=
a6fe92194f Fixed iterator bug which skips the 0x000...000 key 2015-03-05 01:47:49 +00:00
Taylor Gerring
1576551741 Output 0x0 instead of 0x 2015-03-04 14:13:31 -06:00
Alexandre Van de Sande
178798ef87 network back to local files 2015-03-04 16:31:48 -03:00
Gustav Simonsson
871dfd399b Add initial implementation of block tests
* Add blocktest cmd and support for block tests files in
  tests/BlockTests , the launched node does not connect to
  network, resets state with a genesis block from the test file
  and starts the RPC API
2015-03-04 20:27:09 +01:00
Alexandre Van de Sande
671e38fb65 Fixed Average Return calculation 2015-03-04 15:13:57 -03:00
Alexandre Van de Sande
e1bae3771e updated network app to latest build 2015-03-04 12:59:17 -03:00
Felix Lange
215c763d53 eth, p2p: delete p2p.Blacklist
It is unused and untested right now. We can
bring it back later if required.
2015-03-04 16:54:36 +01:00
Felix Lange
429828cd92 p2p: reject messages that cannot be written as simple RLPx frames
Until chunked frames are implemented we cannot send messages
with a size overflowing uint24.
2015-03-04 16:42:01 +01:00
Felix Lange
22659a7fea p2p: restore read/write timeouts
They got lost in the transition to rlpxFrameRW.
2015-03-04 16:42:00 +01:00
Taylor Gerring
9b0f00baf3 Output net_peerCount as hex 2015-03-04 08:41:13 -06:00
Taylor Gerring
93141f4b6d Return block number as hex 2015-03-04 08:27:34 -06:00
Taylor Gerring
c3deafabda Update NewTXArgs to accept hex 2015-03-04 08:22:59 -06:00
Taylor Gerring
c92e48ce3f Add client_version RPC message 2015-03-04 07:54:10 -06:00
Alexandre Van de Sande
5f25c117eb Merge branch 'develop' into ui 2015-03-04 10:04:07 -03:00
Alexandre Van de Sande
cf880f78d5 network dashboard is now a local file 2015-03-04 10:02:11 -03:00
Felix Lange
6e7e5d5fd5 eth, whisper: fix msg.Payload reads 2015-03-04 13:25:01 +01:00
Felix Lange
7964f30dcb p2p: msg.Payload contains list data
With RLPx frames, the message code is contained in the
frame and is no longer part of the encoded data.

EncodeMsg, Msg.Decode have been updated to match.
Code that decodes RLP directly from Msg.Payload will need
to change.
2015-03-04 12:27:24 +01:00
Felix Lange
21649100b1 p2p: verify protocol handshake node ID 2015-03-04 12:27:24 +01:00
Felix Lange
7d39fd6678 p2p: make encryption handshake code easier to follow
This mostly changes how information is passed around.
Instead of using many function parameters and return values,
put the entire state in a struct and pass that.

This also adds back derivation of ecdhe-shared-secret. I deleted
it by accident in a previous refactoring.
2015-03-04 12:27:24 +01:00
Felix Lange
2c505efd1e p2p/discover: add NodeID.Pubkey 2015-03-04 12:27:24 +01:00
Felix Lange
d344054e5a p2p: make RLPx frame MAC 16 bytes as defined in the spec 2015-03-04 12:27:24 +01:00
Felix Lange
d084aed5e9 p2p: delete frameRW 2015-03-04 12:27:24 +01:00
Felix Lange
736e632215 p2p: use RLPx frames for messaging 2015-03-04 12:27:23 +01:00
Felix Lange
51e01cceca p2p: encrypted and authenticated RLPx frame I/O 2015-03-04 12:27:23 +01:00
Felix Lange
936dd0f3bc p2p: add basic RLPx frame I/O 2015-03-04 12:27:23 +01:00
obscuren
15f491e500 Clean up REPL 2015-03-04 12:18:26 +01:00
obscuren
5817dab89e Merge branch 'develop' into poc-9 2015-03-04 10:51:44 +01:00
obscuren
a56243075a removed double flag. Closes #421 2015-03-04 10:51:17 +01:00
obscuren
84a4f761f3 uncle validation 2015-03-04 10:49:56 +01:00
obscuren
d4d505c868 Fixed genesis 2015-03-03 21:48:05 +01:00
obscuren
08fd0715f9 updated genesis 2015-03-03 21:09:29 +01:00
obscuren
26de12d9bf Changed nonce to a uint64 2015-03-03 21:04:31 +01:00
Jeffrey Wilcke
2b3c55f20d Merge pull request #413 from chfast/pr/jit_build_fixes
JIT build fixes
2015-03-03 20:39:51 +01:00
obscuren
e9f1e868e2 Merge branch 'develop' into poc-9 2015-03-03 20:38:46 +01:00
obscuren
827ea43478 removed all old filters 2015-03-03 20:38:28 +01:00
obscuren
bb152612e0 Merge branch 'develop' into poc-9
Conflicts:
	cmd/utils/cmd.go
2015-03-03 20:34:48 +01:00
obscuren
cfe3af099c Merge branch 'ethersphere-jsonlogs' into poc-9 2015-03-03 20:31:12 +01:00
obscuren
f0b2ea64fc Merge branch 'jsonlogs' of https://github.com/ethersphere/go-ethereum into ethersphere-jsonlogs
Conflicts:
	eth/block_pool.go
	eth/block_pool_test.go
	eth/protocol_test.go
	miner/worker.go
2015-03-03 20:30:05 +01:00
obscuren
2707891966 Merge branch 'ethersphere-blockpool2' into poc-9 2015-03-03 20:27:15 +01:00
obscuren
d8a68dc0f1 Merge branch 'blockpool2' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool2 2015-03-03 20:26:59 +01:00
Jeffrey Wilcke
253eb778d1 Merge pull request #411 from ethersphere/readme
[WIP] Update Readme
2015-03-03 20:17:51 +01:00
Jeffrey Wilcke
988391fc37 Merge pull request #409 from tgerring/jsonlogs
Updated JSON log events
2015-03-03 20:16:55 +01:00
Jeffrey Wilcke
b1603f166e Merge pull request #408 from tgerring/removews
Remove Websockets RPC transport
2015-03-03 20:16:16 +01:00
obscuren
8e995b97cc Fixes and debug added 2015-03-03 20:13:11 +01:00
zelig
2c616bd279 partial fix to idle best peer issue
- best peer cannot be idle for more than idleBestPeerTimeout
- introduce ErrIdleTooLong fatal error
- modify default values
2015-03-04 02:06:15 +07:00
Alexandre Van de Sande
8c2940a98b updating to new network health page 2015-03-03 15:00:34 -03:00
obscuren
40ff3cac39 merge 2015-03-03 17:56:36 +01:00
obscuren
53b5a45856 Merge branch 'xcthulhu-publictests' into poc-9 2015-03-03 17:55:29 +01:00
obscuren
313fe3861b fixed pow stuff 2015-03-03 17:55:23 +01:00
obscuren
22b132e28f Merge branch 'publictests' of https://github.com/xcthulhu/go-ethereum into xcthulhu-publictests 2015-03-03 17:20:34 +01:00
obscuren
b0aaa77f02 changed message 2015-03-03 17:20:10 +01:00
obscuren
ee0a1bec6c GasLimit check updated 2015-03-03 17:05:51 +01:00
obscuren
c74c07eed1 Fixed error for invalid transaction 2015-03-03 16:20:38 +01:00
obscuren
6518da7c01 Merge commit 'a6e04ab05150d1b5aa4adb297f3e5146b1559b02' into poc-9 2015-03-03 15:39:34 +01:00
obscuren
a6e04ab051 Squashed 'tests/files/' changes from 13be3e3..9e3fe72
9e3fe72 update state root hash

git-subtree-dir: tests/files
git-subtree-split: 9e3fe720e3d46f046e06a91e45c881e79557f721
2015-03-03 15:39:33 +01:00
obscuren
651b2158ba Merge commit '42a210b571b9358df16da148d9724c2ef9abbca5' into poc-9 2015-03-03 15:16:52 +01:00
obscuren
42a210b571 Squashed 'tests/files/' changes from 402e748..13be3e3
13be3e3 update

git-subtree-dir: tests/files
git-subtree-split: 13be3e33afa8d708786f82b63bf874138f05bb02
2015-03-03 15:16:52 +01:00
obscuren
9f359dfffa Merge commit 'd9d40888ce9498b25925ccbf1447b1f62597aa2f' into poc-9 2015-03-03 13:56:59 +01:00
obscuren
d9d40888ce Squashed 'tests/files/' changes from 2bfb7db..402e748
402e748 Merge branch 'PoC9' of github.com:/ethereum/tests into PoC9
13b6a99 State test refill.

git-subtree-dir: tests/files
git-subtree-split: 402e7482f9283e08869b3412329e24ef6287d8c7
2015-03-03 13:56:59 +01:00
obscuren
2a50931684 Merge commit '0867e4fae96c0b0d234f1710119a129f8b0d96f7' into poc-9 2015-03-03 13:29:59 +01:00
obscuren
0867e4fae9 Squashed 'tests/files/' changes from 6f75ca3..2bfb7db
2bfb7db update memory test
88f32fa Merge remote-tracking branch 'origin/PoC9' into PoC9
a1f73f9 update gas costs
e16b5d3 Move over to key value rather than array of arrays since they're unordered and no duplicates.
ac11bbc Merge branch 'PoC9' of github.com:/ethereum/tests into PoC9
93ae304 Move to non-repeated.
fd9e406 Added test 2

git-subtree-dir: tests/files
git-subtree-split: 2bfb7dbe09c62319b28a2c2873caf7e7e99bf32a
2015-03-03 13:29:59 +01:00
obscuren
fa831206c6 Updated gast costs 2015-03-03 13:29:52 +01:00
Paweł Bylica
e72173dc43 Fix JitVm build 2015-03-03 12:31:26 +01:00
obscuren
4659b51b50 Squashed 'tests/files/' changes from 998e275..6f75ca3
6f75ca3 Merge remote-tracking branch 'origin/PoC9' into PoC9
8d22687 update state root - DEBUG

git-subtree-dir: tests/files
git-subtree-split: 6f75ca354f239fa30f4e07754ede575aed24bbc2
2015-03-03 12:31:09 +01:00
obscuren
ffa6b99ab6 Merge commit '4659b51b50394c596f0548eb53390c80ba96e392' into poc-9 2015-03-03 12:31:09 +01:00
obscuren
524bf9e858 wup 2015-03-03 12:30:57 +01:00
obscuren
b7ec9fbb0e Squashed 'tests/files/' changes from a3d44ca..998e275
998e275 renamed
089e346 Added hex encoded securetrie test
cdefad8 Update VM tests.
ec0a309 update state root
b3d223e update state root hash
171a945 update memory teste

git-subtree-dir: tests/files
git-subtree-split: 998e2756b5491c760f6624c62ebc09e86197c31f
2015-03-03 12:26:24 +01:00
obscuren
e73d7725df Merge commit 'b7ec9fbb0e49e345a8a2566226a76d50b48266a7' into poc-9 2015-03-03 12:26:24 +01:00
obscuren
b909a5ec18 Trie => SecureTrie 2015-03-03 12:25:44 +01:00
obscuren
1650b59cd9 Delet => Delete 2015-03-03 12:21:27 +01:00
obscuren
bf5365b317 Delet => Delete 2015-03-03 12:15:58 +01:00
obscuren
ba0a758d8c Quad mem & log changes 2015-03-03 11:56:43 +01:00
obscuren
49da6a8d80 Fixed test helper 2015-03-03 11:56:28 +01:00
obscuren
34ee5ab9a8 Bloom expanded by 4 2015-03-03 11:56:12 +01:00
obscuren
fa910966ed Redone rlp 2015-03-03 11:18:50 +01:00
obscuren
d0354b8440 Squashed 'tests/files/' changes from c6111e6..a3d44ca
a3d44ca update state tests to PoC9
709d6a7 update stSystemOperationsTest.json
3188f77 fix jumpdest requirements
202b69a remove memory test
41b4e1d add memory tests
2597bdf Merge remote-tracking branch 'origin/PoC9' into PoC9
0de34b2 add stateRoot to state tests
10b4ced Remove unneeded tests.
88eb6bf Fix for tests.
9010f17 Test updates.

git-subtree-dir: tests/files
git-subtree-split: a3d44caae83dd48db7df176dc784c529945e90a1
2015-03-03 11:11:24 +01:00
obscuren
2f647c443a Merge commit 'd0354b844028220b31f55c2cdbe9d4cc546d4b52' into poc-9 2015-03-03 11:11:24 +01:00
obscuren
c1ef19bef9 quad mem 2015-03-03 11:11:11 +01:00
zelig
6c2856df23 add eth.chain.new_head log to core/chain_manager 2015-03-03 15:44:41 +07:00
zelig
fc47f0f27b add eth.chain.received.new_block log to eth protocol 2015-03-03 15:43:05 +07:00
zelig
76af536d0d block number is *big.Int, remoteID is string 2015-03-03 15:37:20 +07:00
zelig
34be795bc1 Merge remote-tracking branch 'tgerring/jsonlogs' into jsonlogs 2015-03-03 13:52:20 +07:00
zelig
7e224b6834 db name database -> blockchain in backend error message 2015-03-03 13:22:19 +07:00
Matthew Wampler-Doty
de9f79133f Introducing ethash 2015-03-02 22:29:34 -05:00
Matthew Wampler-Doty
080823bdee Only one uncle 2015-03-02 18:56:11 -05:00
Alexandre Van de Sande
21c373b55d Network Health Panel with mining 2015-03-02 18:39:07 -03:00
zelig
47278a6e4e log when added peer is behind (hash found in blockchain) 2015-03-03 03:39:21 +07:00
Taylor Gerring
e7b33e9ae7 Move p2p.MakeName to ethutil.MakeVersion 2015-03-02 13:21:57 -06:00
zelig
af6971f823 Merge remote-tracking branch 'upstream/develop' into blockpool2 2015-03-03 02:13:41 +07:00
zelig
2dc1b7282a remove threatening coding standards section from README 2015-03-03 01:51:00 +07:00
zelig
1d8a427753 remove obsolete install script 2015-03-03 01:46:25 +07:00
zelig
deb2e50296 minor cleanup 2015-03-03 01:45:50 +07:00
zelig
c1bae04203 update README
- TLDR for godep install
- update executable section
- cleanup
- add several links to wiki
2015-03-03 01:44:29 +07:00
Paweł Bylica
24003c76d1 Merge remote-tracking branch 'upstream/develop' into evmjit 2015-03-02 18:46:55 +01:00
zelig
a60a18b080 - fix peer disconnect by adding severity function to errs
- improve logging
- suicide -> removeChain
- improved status BlocksInPool calculation
2015-03-03 00:43:12 +07:00
Paweł Bylica
9c6d9dfc5c Add required block number 2015-03-02 18:43:01 +01:00
obscuren
41c9dc973d Squashed 'tests/files/' changes from ce7204f..c6111e6
c6111e6 New tests.

git-subtree-dir: tests/files
git-subtree-split: c6111e6b5d23766743d004707475e84848ff0ddb
2015-03-02 18:00:10 +01:00
obscuren
fe7ab662f0 Merge commit '41c9dc973d2dc8614db6c1e3dbb2ec5564935368' into poc-9 2015-03-02 18:00:10 +01:00
obscuren
200f66537c updated tests 2015-03-02 17:55:45 +01:00
obscuren
0823254c3b Add 'tests/files/' from commit 'ce7204fa17560f6a76c7592bf5f23d29f22042d6'
git-subtree-dir: tests/files
git-subtree-mainline: 4f3f881c9b
git-subtree-split: ce7204fa17
2015-03-02 16:43:12 +01:00
Taylor Gerring
fb2488235a Remove defunct calls 2015-03-02 09:36:48 -06:00
obscuren
4f3f881c9b removed tests 2015-03-02 16:36:34 +01:00
Taylor Gerring
540c79e6ad Rename "net" methods 2015-03-02 09:36:14 -06:00
obscuren
b13735b400 updated tests 2015-03-02 16:34:03 +01:00
obscuren
b383ff0b96 New gas prices model 2015-03-02 16:32:02 +01:00
CJentzsch
ce7204fa17 rm failing tests 2015-03-02 16:20:38 +01:00
CJentzsch
d9ea240122 rm failing random tests 2015-03-02 15:59:39 +01:00
CJentzsch
67f3f4c1d8 vmGasCostchanges 2015-03-02 15:50:12 +01:00
Taylor Gerring
a75af474f7 Fix logger import in tests 2015-03-02 08:27:26 -06:00
Taylor Gerring
e31ec57f88 Add event eth.tx.received 2015-03-02 08:17:09 -06:00
Taylor Gerring
0976c3024f Don't import logger as ethlogger 2015-03-02 08:15:28 -06:00
CJentzsch
cb868a604c add secure trie tests 2015-03-02 14:32:29 +01:00
Taylor Gerring
4cb0bfe939 Merge branch 'develop' of github.com:ethereum/go-ethereum into removews
Conflicts:
	cmd/ethereum/flags.go
	cmd/mist/flags.go
2015-03-02 07:06:08 -06:00
CJentzsch
bc1d97b2a7 refine memory stress test 2015-03-02 11:45:29 +01:00
obscuren
6e50a1e9f5 Filter accepts multiple topics per entry. Fixes #403 2015-03-01 19:08:26 +01:00
obscuren
ac88ae86a3 GetOrNew for accessors. Fixes #404 2015-03-01 19:07:38 +01:00
Taylor Gerring
cfe0370280 Remove Websockets RPC transport 2015-03-01 16:19:06 +01:00
Taylor Gerring
60a2704b04 Implement eth.miner.new_block event 2015-03-01 16:09:59 +01:00
obscuren
65cad14f9b Report debug hash rate 2015-02-28 23:09:49 +01:00
obscuren
fdf939a6f9 Fixed miner threads for ethereum CLI 2015-02-28 23:01:41 +01:00
CJentzsch
2dbdcf3636 move extrem memory test to stMemoryStressTest.json 2015-02-28 22:03:38 +01:00
Christoph Jentzsch
5375dd6756 Merge pull request #69 from winsvega/develop
Fork block tests
2015-02-28 21:19:48 +01:00
Jeffrey Wilcke
cdb77f0ecd Merge pull request #402 from tgerring/rpcupdates
Set RPC listening address via param
2015-02-28 21:07:46 +01:00
Jeffrey Wilcke
43b5777709 Merge pull request #398 from tgerring/assetpath
Check source directory for assets as last resort
2015-02-28 21:06:57 +01:00
CJentzsch
35f53abc78 more memmory hard quadratic complexity tests 2015-02-28 20:57:55 +01:00
obscuren
73c52d1677 Merge branch 'ethersphere-blockpool2' into poc-9 2015-02-28 20:52:57 +01:00
obscuren
ae45a39dc1 Secure trie 2015-02-28 20:52:29 +01:00
obscuren
7ab13e0f17 Unused variable 2015-02-28 20:24:20 +01:00
obscuren
6c0b194382 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-28 20:14:10 +01:00
obscuren
7adf065b10 Simple effective VM optimisation
Added a debug flag to the VM which determines if VM output is shown
regardless of the log level set.
2015-02-28 20:14:01 +01:00
obscuren
6ea7aae29c Removed some methods from the JS REPL 2015-02-28 19:15:57 +01:00
winsvega
11fbc41e4b Fork block tests 2015-02-28 20:54:09 +03:00
Matthew Wampler-Doty
ba1f4bbe91 Exposing stuff for ethash 2015-02-27 20:56:24 -05:00
Taylor Gerring
ea0517b539 Report RPC listening address in logs 2015-02-28 01:04:54 +01:00
Taylor Gerring
f6e821fd33 Add flag to set RPC port 2015-02-28 01:00:42 +01:00
Matthew Wampler-Doty
3820a65299 Merge branch 'publictests' of github.com:ebuchman/go-ethereum into ethash_pow 2015-02-27 16:13:31 -05:00
Ethan Buchman
0efd6a881a public functions for making chains on the fly 2015-02-27 16:05:03 -05:00
Matthew Wampler-Doty
8653db6df0 Introducign MixDigest and SeedHash 2015-02-27 15:59:33 -05:00
CJentzsch
cb8d0fa874 more jump tests 2015-02-27 14:16:25 +01:00
CJentzsch
fc3c7760a5 add more addmod mulmod overflow tests 2015-02-27 13:28:44 +01:00
CJentzsch
b6155375ae add refund tests with CALL 2015-02-27 12:41:58 +01:00
Taylor Gerring
ad3a21f260 Bump to latest versions for Docker 2015-02-27 00:52:01 +01:00
Ethan Buchman
5a827417d9 Merge branch 'develop' of https://github.com/ethereum/go-ethereum into develop 2015-02-26 17:54:57 -05:00
Taylor Gerring
a39c73672e bump last resort check out of ifelse 2015-02-26 21:04:26 +01:00
Taylor Gerring
d90b71bc55 Check source directroy for assets as last resort 2015-02-26 21:01:40 +01:00
obscuren
cc5c8a444d Report proper database directory. Closes #397 2015-02-26 20:36:54 +01:00
obscuren
3a7c8d7ae4 Merge branch 'hotfix/0.8.5-2' into develop 2015-02-26 20:27:16 +01:00
obscuren
0fd6a22a86 Merge branch 'hotfix/0.8.5-2' 2015-02-26 20:26:49 +01:00
obscuren
3ab05ddd25 Bump 2015-02-26 20:26:37 +01:00
obscuren
76f6d75ef8 Merge branch 'master' into hotfix/0.8.5-2 2015-02-26 20:21:41 +01:00
obscuren
fa7deb10f6 Merge branch 'develop' 2015-02-26 20:21:16 +01:00
obscuren
e235b57234 Fixed consensus issue for refunding
* Refund should _always_ go to the origin
2015-02-26 20:08:35 +01:00
obscuren
c18ea4de14 Merge branch 'blockpool2' of https://github.com/ethersphere/go-ethereum into ethersphere-blockpool2 2015-02-26 18:39:38 +01:00
obscuren
37e6870f64 wip 2015-02-26 18:39:05 +01:00
CJentzsch
a622eccecb more mem tests - calldatacopy and return 2015-02-26 17:33:34 +01:00
CJentzsch
a3b3d19d80 adjust test for new mem rule 2015-02-26 14:22:16 +01:00
CJentzsch
d09cbfcf84 update to new quadratic memory cost rule 2015-02-26 13:52:05 +01:00
CJentzsch
88913ec89b Merge remote-tracking branch 'origin' into develop 2015-02-26 12:38:57 +01:00
CJentzsch
8058f2fdf0 low limit for difficulty is 1024 2015-02-26 12:38:32 +01:00
Christoph Jentzsch
48276be277 Merge pull request #68 from winsvega/develop
Transaction WrongRLP tests
2015-02-26 12:26:59 +01:00
winsvega
1e07358ac2 Transaction WrongRLP tests
more rlps with first zeros
2015-02-26 14:25:13 +03:00
obscuren
a1c830cd3c Defautl block 2015-02-26 12:06:10 +01:00
obscuren
49ded3aa77 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
Conflicts:
	accounts/account_manager.go
2015-02-26 12:06:01 +01:00
obscuren
5ab0eaa06d wip 2015-02-26 11:14:54 +01:00
Jeffrey Wilcke
9884eed0cf Merge pull request #392 from tgerring/rpcdefaultblock
Stub defaultBlock RPC methods
2015-02-26 11:14:33 +01:00
Jeffrey Wilcke
5b202a158a Merge pull request #391 from tgerring/osext
Cleanup DefaultAssetPath
2015-02-26 10:59:07 +01:00
CJentzsch
a0cfe0d123 tests for mem at 32,64 KB +- 1, 31,32,33 for mstore and mstore8 2015-02-26 08:46:13 +01:00
Taylor Gerring
57cea0c623 Update godeps 2015-02-26 02:48:55 +01:00
Taylor Gerring
739b7cc2ac Cleanup imports 2015-02-26 02:36:06 +01:00
Taylor Gerring
d5aed82b11 DRY DefaultAssetPath() 2015-02-26 02:32:27 +01:00
Taylor Gerring
8eeab7ea3f Update osext import path 2015-02-26 02:24:20 +01:00
Jeffrey Wilcke
46ce66a829 Merge pull request #385 from Gustav-Simonsson/account_manager_key_locking
Add automatic locking / unlocking of accounts
2015-02-25 23:58:30 +01:00
Jeffrey Wilcke
b155b9d80b Merge pull request #388 from Gustav-Simonsson/validate_block_header_gas_limit
Validate block header gas limit
2015-02-25 23:58:01 +01:00
Gustav Simonsson
260ab73969 Validate block header gas limit
* Add block header gas limit validation in ValidateBlock function,
  see eq 39 and 45 in yellow paper. Before it was calculated _for_
  the block instead of validated.
* Use the block header gas limit when setting the gas pool instead
  of calculating the value for the block.
2015-02-25 20:00:32 +01:00
Gustav Simonsson
23f2658091 Remove unneeded initialisation of mutex 2015-02-25 19:30:57 +01:00
Gustav Simonsson
d1311c53ee Address pull request comments
* Use RWMutex instead of Mutex
* Use time.Duration instead of int for unlock time
* Use time.After with select instead of time.Sleep
2015-02-25 18:40:59 +01:00
Christoph Jentzsch
a431c4a665 Merge pull request #67 from winsvega/develop
Transaction RLP Tests
2015-02-25 18:26:21 +01:00
Gustav Simonsson
b296b36d2b Add automatic locking / unlocking of accounts
* Change account signing API to two sign functions;
  Sign without passphrase - works if account is unlocked
  Sign with passphrase - always works and unlocks the account
* Account stays unlocked for X ms and is then automatically locked
2015-02-25 17:37:12 +01:00
winsvega
667cafc13e Transaction RLP Tests
wrong transaction RLPs correction
2015-02-25 19:28:22 +03:00
Christoph Jentzsch
9f3cee021e Merge pull request #66 from winsvega/develop
Block Tests
2015-02-25 15:44:19 +01:00
winsvega
6016b942d6 Block Tests
Encoded transaction comment
2015-02-25 17:37:25 +03:00
winsvega
afb72dc795 Block Tests
Block Rlps with invalid transactions
2015-02-25 16:53:57 +03:00
zelig
16ecda951b integrate blockpool into eth
- remove blockpool code
- remove blockpool integration test (kinda embarrassing)
- remove errors.go
2015-02-25 20:38:37 +07:00
zelig
cdc86965cb export Sendln/Sendf in logger 2015-02-25 20:04:51 +07:00
zelig
422490d75c major rewrite, reorg of blockpool + new features
- blockpool moves to its own package
- uses errs pkg for its own coded errors
- publicly settable config of params (time intervals and batchsizes)
- test helpers in subpackage
- optional TD in blocks used now to update peers chain info
- major improvement in algorithm
- fix fragility and sync/parallelisation bugs
- implement status for reporting on sync status (peers/hashes/blocks etc)
- several tests added and further corner cases covered
2015-02-25 19:34:12 +07:00
zelig
d46c7bcaf9 errs pkg for error code based errors 2015-02-25 19:21:59 +07:00
CJentzsch
cfb120d179 more Pawel tests 2015-02-25 13:08:47 +01:00
Taylor Gerring
fe73023940 Merge pull request #382 from ethereum/travis
Update Go and Qt versions in Travis
2015-02-25 13:00:35 +01:00
CJentzsch
86b14058fd add memory tests 2015-02-25 12:50:24 +01:00
Taylor Gerring
ce2b2422d6 Update Go and Qt versions 2015-02-25 11:40:52 +01:00
Taylor Gerring
9e0ab22dd0 Stub defaultBlock methods 2015-02-25 09:57:49 +01:00
CJentzsch
978a29ab72 use 50000 bytes for CALLDATACOPY 2015-02-24 23:05:39 +01:00
CJentzsch
36e862c989 add Pawels tests 2015-02-24 22:48:19 +01:00
CJentzsch
33c8c2bd7e add quadratic complexity tests 2015-02-24 22:46:56 +01:00
Jeffrey Wilcke
52ccaa605e Merge pull request #379 from tgerring/rpcupdates
RPC cleanup
2015-02-24 22:00:39 +01:00
Jeffrey Wilcke
ed90efb05b Merge pull request #378 from Gustav-Simonsson/fix_account_manager_tests
Fix key store address hex decoding and accounts test
2015-02-24 21:58:42 +01:00
Taylor Gerring
2e3a6e2559 Consolidate related items 2015-02-24 19:54:18 +01:00
Taylor Gerring
c8e9abff53 Remove errParseRequest 2015-02-24 19:22:08 +01:00
Taylor Gerring
43acad81b3 Rename files 2015-02-24 19:11:01 +01:00
Taylor Gerring
21becb0feb Cleanup RPC packcage 2015-02-24 19:05:03 +01:00
Gustav Simonsson
923950ccaa Fix key store address hex decoding and accounts test
Thanks to https://github.com/jaekwon for original fix!
2015-02-24 18:05:10 +01:00
Taylor Gerring
5a43173e55 Merge pull request #373 from tgerring/issue370
Convert gas values to integers
2015-02-24 17:49:14 +01:00
Taylor Gerring
1e919a5e97 Move amounts to global vars 2015-02-24 17:32:11 +01:00
Jeffrey Wilcke
91a8c08f03 Merge pull request #368 from maran/feature/changeDataDir
Implement OS sensitive dataDirs
2015-02-24 17:30:44 +01:00
Jeffrey Wilcke
0b757ad12f Merge pull request #369 from tgerring/issue367
Allow zero and negative block numbers
2015-02-24 17:29:08 +01:00
Jeffrey Wilcke
0adff214c3 Merge pull request #376 from frozeman/topicsFix
topics fix
2015-02-24 17:27:14 +01:00
Taylor Gerring
2a7ca69a82 Fix duplicate leading 0x 2015-02-24 16:46:43 +01:00
Fabian Vogelsteller
3fcdafebc2 topics fix 2015-02-24 16:18:27 +01:00
Paweł Bylica
85f765a533 Merge remote-tracking branch 'upstream/develop' into evmjit 2015-02-24 11:27:22 +01:00
CJentzsch
e8c84bdf56 Merge remote-tracking branch 'origin/develop' into develop 2015-02-24 10:15:10 +01:00
CJentzsch
e48576ada3 remove impossible tests, add create hash collision test 2015-02-24 10:14:36 +01:00
Taylor Gerring
4142708d9d Convert gas values to integers
Fixes #370
2015-02-24 08:51:58 +01:00
wanderer
6e2d856d85 spelling error 2015-02-24 01:52:33 -05:00
wanderer
9315ad3d2c spelling error 2015-02-24 01:46:06 -05:00
wanderer
13b4ab10ae added genesis info 2015-02-24 01:36:54 -05:00
martin becze
c72e2588f3 Update crypto.json 2015-02-23 18:40:06 -05:00
obscuren
7c510109cd skipping test 2015-02-23 20:27:00 +01:00
obscuren
359677b673 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-23 19:25:59 +01:00
obscuren
747647e02a Merge branch 'master' into develop 2015-02-23 19:25:50 +01:00
obscuren
0b57bad2de removed log 2015-02-23 19:25:41 +01:00
Paweł Bylica
114c3b4efe Merge remote-tracking branch 'upstream/develop' into evmjit 2015-02-23 18:39:05 +01:00
Christoph Jentzsch
e4f44139a1 Merge pull request #65 from romanman/develop
Introduce cryptography testing
2015-02-23 16:25:06 +01:00
romanman
f23aeb44e2 Introduce cryptography testing
+ First test case will check the interoperability
   for all clients to decrypt the cipher with AES in
   CTR mode.
2015-02-23 17:14:00 +02:00
obscuren
b2a225a52e Properly uninstall filters. Mining issue fixed #closes #365
* Added an additional tx state which is used to get the current nonce
* Refresh transient state each time a new canonical block is found
* Properly uninstall filters. Fixes a possible crash in RPC
2015-02-23 15:43:41 +01:00
Alexandre Van de Sande
dea6584018 Merge branch 'develop' into ui 2015-02-23 09:05:15 -03:00
Alexandre Van de Sande
bb3338df63 changes to sidebar sizes 2015-02-23 08:52:50 -03:00
Taylor Gerring
6fd894aae0 Allow zero and negative block numbers
0 is genesis block. Xeth recognises -1 as current
2015-02-23 11:54:23 +01:00
CJentzsch
cb52754e6c Merge remote-tracking branch 'origin/develop' into develop 2015-02-23 11:31:29 +01:00
Maran
40adb7feb6 Implement OS sensitive dataDirs 2015-02-23 11:28:20 +01:00
CJentzsch
48606e05c1 fix transaction tests 2015-02-23 11:28:06 +01:00
Christoph Jentzsch
8b79ae6695 Update trieanyorder.json
In correct anyorder trie tests, where all permuations should have the same root, one can not have 2 keys with the same value.
2015-02-23 09:51:44 +01:00
martin becze
94f1ca2e09 Format clean up 2015-02-22 14:10:28 -05:00
Jeffrey Wilcke
dd086791ac Merge pull request #360 from Gustav-Simonsson/add_stack_size_checks
Correct stack size validation for MUL, CALLDATACOPY, EXTCODESIZE, BLOCKH...
2015-02-22 13:28:50 +01:00
obscuren
20aa6dde06 Merge branch 'develop' 2015-02-22 13:28:24 +01:00
obscuren
eec4345a7c Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-22 13:27:57 +01:00
Jeffrey Wilcke
59a86d3171 Merge pull request #359 from fjl/p2p-identity
Persistent Node Key
2015-02-22 13:27:53 +01:00
obscuren
98202e626c Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-22 13:27:13 +01:00
obscuren
1be7e5048c Merge branch 'release/0.8.5' into develop 2015-02-22 13:27:03 +01:00
obscuren
8cc6647ebf Merge branch 'release/0.8.5' 2015-02-22 13:26:18 +01:00
obscuren
321dce1f47 Bump 2015-02-22 13:26:10 +01:00
obscuren
bba85a2074 Added Number to logs 2015-02-22 13:24:26 +01:00
obscuren
483d96a89d Added eth_logs & fixed issue with manual log filtering
* Implemented `eth_logs`
* Fixed issue with `filter.Find()` where logs were appended to an
  incorrect, non-returned slice resulting in no logs found
2015-02-22 13:12:01 +01:00
martin becze
168ab2b065 consistent values please 2015-02-21 17:33:44 -05:00
wanderer
b131b37451 added unpaded R value test 2015-02-21 14:43:06 -05:00
Taylor Gerring
8620dc05de Merge pull request #364 from ethereum/travis
Don't print per-function testing results
2015-02-21 13:59:34 +01:00
Taylor Gerring
d8f7cb2f55 Don't print per-function testing results 2015-02-21 13:48:09 +01:00
Gustav Simonsson
fd3793b8cf Correct stack size validation for MUL, CALLDATACOPY, EXTCODESIZE, BLOCKHASH 2015-02-21 05:34:02 +01:00
obscuren
bba7ccb07f Merge branch 'hotfix/0.8.4-1' into develop 2015-02-21 00:53:47 +01:00
obscuren
5912f0a849 Merge branch 'hotfix/0.8.4-1' 2015-02-21 00:53:39 +01:00
obscuren
cb7cd03919 unlock mutex 2015-02-21 00:53:27 +01:00
obscuren
bc541b918c Merge branch 'release/0.8.4' into develop 2015-02-21 00:43:31 +01:00
obscuren
3c14902649 Merge branch 'release/0.8.4' 2015-02-21 00:43:04 +01:00
obscuren
92337baa5a reverted back to proper version number 2015-02-21 00:42:57 +01:00
Taylor Gerring
f9663b8f4f Fix test for Finney 2015-02-20 20:57:45 +01:00
Taylor Gerring
113cf4208b Update build status links to https 2015-02-20 20:52:03 +01:00
CJentzsch
18216a6e33 undo gasMemCostChange, add some state tests 2015-02-20 20:50:32 +01:00
obscuren
703dc8299c Merge branch 'release/0.9.0' into develop 2015-02-20 18:14:53 +01:00
obscuren
bd7ebbcd5b Merge branch 'release/0.9.0' 2015-02-20 18:13:46 +01:00
obscuren
d586a633ff Updated readme 2015-02-20 18:13:39 +01:00
obscuren
9feb657763 Turbo off 2015-02-20 18:06:45 +01:00
obscuren
cc43ab9a81 Minor updates for release 2015-02-20 18:05:46 +01:00
obscuren
66d5559866 Fixed chain event issue 2015-02-20 16:59:08 +01:00
Felix Lange
e968928613 eth: persist node key between sessions (#304) 2015-02-20 15:26:50 +01:00
Felix Lange
e282ad25a8 eth: add poc-8.ethdev.com as second default bootstrap node 2015-02-20 15:24:43 +01:00
obscuren
82cae27737 Merge branch 'tgerring-rpcupdates' into develop 2015-02-20 15:18:32 +01:00
obscuren
75625801f5 fixed merge 2015-02-20 15:18:07 +01:00
CJentzsch
b392afac3c memGasCost checks 2015-02-20 15:05:11 +01:00
Gav Wood
672f6c44b8 Remove initial allocs - it tests nothing additional and is difficult to maintain, especially with genesis contracts. See https://github.com/ethereum/tests/blob/develop/BasicTests/genesishashestest.json for that information. 2015-02-20 14:46:35 +01:00
obscuren
ea9a549bbd Removed exported fields from state object and added proper set/getters 2015-02-20 14:19:34 +01:00
obscuren
5c975dd4ed Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-20 14:01:34 +01:00
obscuren
d8ac267f41 dirty tracking for state objects fixed 2015-02-20 14:01:30 +01:00
Jeffrey Wilcke
63031f571a Merge pull request #355 from fjl/test-fixes
Fix failing tests and speed up Travis builds
2015-02-20 13:00:10 +01:00
obscuren
982f73fa6d Added timeout for filter & removed clipboard. Closes #350 2015-02-20 12:59:54 +01:00
Felix Lange
3b12a9293c .travis.yml: don't run gofmt, goimports, golint
This should yield another 30-second speed up. Nobody looks
at the output of those anyway. We might want bring back gofmt later
and actually fail the build if source is not formatted.
2015-02-20 12:21:05 +01:00
Felix Lange
654f7f707c .travis.yml: speed up tests on Travis
This should decrease test runtime to about 30 seconds.
2015-02-20 12:18:29 +01:00
Felix Lange
66abe2e3d4 gocoverage.sh: skip .
This is an attempt to get Travis working again.
2015-02-20 11:55:26 +01:00
Felix Lange
b3b6210886 tests/vm: add non-test Go file
This removes the annoying warning printed by "go install ./...".
2015-02-20 11:40:58 +01:00
Felix Lange
01ce066d43 state: improve TestDump 2015-02-20 11:40:58 +01:00
Felix Lange
4ab7a290cd accounts: use crypto/randentropy in test 2015-02-20 11:40:58 +01:00
Felix Lange
81dea2d8e7 update-license.go: add blank line after build tag
This silences "go install ./...". For some reason it started
complaining with go 1.4.2.
2015-02-20 11:40:20 +01:00
obscuren
0006585391 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-19 22:46:15 +01:00
Jeffrey Wilcke
639ac5c3da Merge pull request #352 from fjl/no-enc-handshake
p2p: disable encryption handshake, enable log events
2015-02-19 22:46:07 +01:00
Jeffrey Wilcke
765740b829 Merge pull request #345 from maran/feature/minerthreads
Implement command line argument to set the amount miner threads
2015-02-19 22:37:13 +01:00
Jeffrey Wilcke
07c34751da Merge pull request #335 from alexvandesande/ui
Cut, Copy, Undo and Redo working in webview
2015-02-19 22:36:35 +01:00
obscuren
fa4cbad315 Optimisations and fixed a couple of DDOS issues in the miner 2015-02-19 22:33:22 +01:00
Taylor Gerring
a59cd94625 Add setMining RPC method 2015-02-19 18:58:15 +01:00
Taylor Gerring
605dd3a982 Add serpent compilation to RPC 2015-02-19 18:41:50 +01:00
Felix Lange
3719db352a p2p: emit JSON connect/disconnect events 2015-02-19 17:09:33 +01:00
Felix Lange
fa15854a54 logger: add P2P disconnected event 2015-02-19 17:09:13 +01:00
Felix Lange
dd871e791c p2p: initialize Server.ourHandshake before accepting connections 2015-02-19 17:08:18 +01:00
Felix Lange
3dbd32093c p2p: enable devp2p ping
This should prevent connection drops.
2015-02-19 16:54:54 +01:00
Felix Lange
1ec6190e86 cmd/mist: show peer names in peers window 2015-02-19 16:54:53 +01:00
Felix Lange
73f94f3755 p2p: disable encryption handshake
The diff is a bit bigger than expected because the protocol handshake
logic has moved out of Peer. This is necessary because the protocol
handshake will have custom framing in the final protocol.
2015-02-19 16:54:53 +01:00
obscuren
c14071df9d Reset storage cache after sync 2015-02-19 13:34:27 +01:00
Taylor Gerring
dba4f3122e Added uninstall filter methods 2015-02-19 13:21:37 +01:00
Taylor Gerring
4322632c59 Merge pull request #339 from tgerring/jsonlog
JSON log updates
2015-02-19 12:25:45 +01:00
obscuren
0057bb4ef6 WIP QT Clipboard 2015-02-19 11:51:38 +01:00
obscuren
03b8c6841b Topics => Topic. Closes #343 2015-02-19 11:49:58 +01:00
obscuren
fdecc11128 Temp fix for #342 2015-02-19 11:09:46 +01:00
Maran
5aff8bfb59 Implement command line argument to set the amount of agents created by the miner
Defaults to the amount of cores available on the CPU
2015-02-19 10:38:36 +01:00
obscuren
487c5cc294 Added WIP number package 2015-02-18 17:18:07 +01:00
obscuren
ee9df32dba Added errors 2015-02-18 16:08:51 +01:00
obscuren
655e942597 Added GetBlock GetUncle with OOB guard 2015-02-18 13:14:21 +01:00
obscuren
be90ad89a8 Disable turbo 2015-02-18 12:01:20 +01:00
obscuren
05b1ec008b Disabled ability to disable whisper. Closes #334 2015-02-18 11:42:01 +01:00
Taylor Gerring
07bdba687f Re-add LogFormat to Config 2015-02-18 10:52:36 +01:00
Taylor Gerring
f499f343ba Update JSON Log types 2015-02-18 10:52:23 +01:00
Alexandre Van de Sande
acd93c2971 Removed console logs from mist.js
also fixed an issue where it would force reloads unnecessarily
2015-02-18 10:25:40 +01:00
Ethan Buchman
9446489cf3 core: chain manager forking tests 2015-02-17 22:02:15 -05:00
Ethan Buchman
2ba65f4fba Merge branch 'develop' of https://github.com/ethereum/go-ethereum into develop 2015-02-17 19:25:18 -05:00
obscuren
60318c96d0 removed old wallet 2015-02-17 23:22:42 +01:00
Jeffrey Wilcke
c1d0693cb1 Merge pull request #325 from fjl/deps-cleanup
Cleanup imports
2015-02-17 23:19:45 +01:00
obscuren
5ec8c5f71b added bootnode back in 2015-02-17 23:14:10 +01:00
obscuren
c1474e1877 Removed mined transactions from pending view. Closes #321 2015-02-17 23:10:37 +01:00
obscuren
26d58e0446 Forgot to add the case for logs. Closes #336 2015-02-17 22:46:30 +01:00
obscuren
7fc9b5b3f9 Changed to ChainEvent and fixed a nil pointer in transact 2015-02-17 22:20:47 +01:00
Alexandre Van de Sande
0e2f6691bf Cut, Copy, Undo and Redo working in webview 2015-02-17 17:37:26 +01:00
obscuren
11e12680eb Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-17 16:55:20 +01:00
obscuren
13c00afc68 Implement register and watchTx 2015-02-17 16:54:52 +01:00
Jeffrey Wilcke
5022b618aa Merge pull request #327 from fjl/udp-out-of-range
p2p/discover: fix pending replies iteration
2015-02-17 16:22:41 +01:00
obscuren
5238b9439e Merge branch 'alexvandesande-ui' into develop 2015-02-17 16:18:40 +01:00
obscuren
9a2be227a6 commented peer count out 2015-02-17 16:18:29 +01:00
obscuren
fe94622ea3 Merge branch 'ui' of https://github.com/alexvandesande/go-ethereum into develop 2015-02-17 16:13:06 +01:00
obscuren
567428fb34 Filter and mutex locks added 2015-02-17 16:12:55 +01:00
obscuren
815ead7107 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-17 16:09:25 +01:00
Felix Lange
7ea131d4ff p2p/discover: fix pending replies iteration
Range expressions capture the length of the slice once before the first
iteration. A range expression cannot be used here since the loop
modifies the slice variable (including length changes).
2015-02-17 15:21:39 +01:00
obscuren
547788b1b0 Added optional address slice. Closes #326 2015-02-17 14:19:05 +01:00
Taylor Gerring
417f018498 Updated P2PConnected log fields 2015-02-17 13:30:25 +01:00
obscuren
2c454863f2 Use new rlp (TODO requires some refactoring) 2015-02-17 13:26:21 +01:00
Felix Lange
f965f41b6e p2p/nat: switch to github.com/huin/goupnp
My temporary fix was merged upstream.
2015-02-17 13:10:11 +01:00
Felix Lange
119bea22aa crypto: switch to golang.org/x/crypto
code.google.com/p/go.crypto is deprecated and will cause
problems in future versions of Go.
2015-02-17 13:05:58 +01:00
Felix Lange
bb346a3ae1 rpc/ws: switch to golang.org/x/net
code.google.com/p/go.net is deprecated and will cause
problems in future versions of Go.
2015-02-17 12:37:09 +01:00
Alexandre Van de Sande
abb9b7f46f Merge branch 'develop' into ui 2015-02-17 12:29:10 +01:00
obscuren
c934222a80 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-17 12:25:25 +01:00
obscuren
8135752a32 "centralised" mining to backend. Closes #323 2015-02-17 12:24:58 +01:00
Felix Lange
34d0e1b2c3 p2p: fix ecies dependency in tests
We forgot to update this reference when moving ecies into the
go-ethereum repo.
2015-02-17 12:04:20 +01:00
Alexandre Van de Sande
fbd5e4d5af Updated icons 2015-02-17 11:52:22 +01:00
Alexandre Van de Sande
0de1d1dd58 removed status bar code 2015-02-17 11:23:28 +01:00
Alexandre Van de Sande
a22711a7b5 badge support 2015-02-17 11:22:52 +01:00
Alexandre Van de Sande
c4b8c11529 side icons 2015-02-17 00:52:40 +01:00
Alexandre Van de Sande
666ef48239 SideIcons work. Copy paste still doesn't. 2015-02-16 20:55:14 +01:00
CJentzsch
7ec1b7e90a Merge remote-tracking branch 'origin/develop' into develop 2015-02-16 20:20:50 +01:00
CJentzsch
a8c4de17da python fail 2015-02-16 20:20:15 +01:00
Taylor Gerring
643eda5c2d Update obscuren/qml revision 2015-02-16 19:43:27 +01:00
winsvega
4b81a98e4a Merge pull request #60 from winsvega/develop
ttWrongRLPTransaction
2015-02-16 20:11:33 +03:00
winsvega
beff83ecd2 Merge branch 'develop' of https://github.com/ethereum/tests into develop 2015-02-16 20:09:49 +03:00
winsvega
5797752572 new transaction wrong rlp test 2015-02-16 20:08:44 +03:00
Taylor Gerring
cb34502728 Add godep usage information 2015-02-16 17:59:54 +01:00
Taylor Gerring
9796feccb7 Add Docker Hub link to automated builds 2015-02-16 17:51:33 +01:00
Taylor Gerring
c0ce323092 Use explicit branch and godep 2015-02-16 17:00:57 +01:00
Paweł Bylica
b9894c1d09 Update JIT interface to ABI 0.2: code hash added to input data, gas counter passed as int64 2015-02-16 16:27:11 +01:00
CJentzsch
5718f96934 cppjit fails 2015-02-16 15:56:10 +01:00
CJentzsch
ea509a6d72 more performance tests 2015-02-16 15:47:52 +01:00
Alexandre Van de Sande
3068e2688d merge conflicts 2015-02-16 14:43:30 +01:00
Taylor Gerring
68f6ddc5aa Update Travis to use godep 2015-02-16 14:34:50 +01:00
Alexandre Van de Sande
1878630b59 Solved Issue #318 and added states to back button 2015-02-16 14:34:47 +01:00
Taylor Gerring
702218008e Add versioned dependencies from godep 2015-02-16 14:28:33 +01:00
Taylor Gerring
202362d925 Merge branch 'develop' of github.com:ethereum/go-ethereum into develop 2015-02-16 14:20:54 +01:00
Taylor Gerring
393267489c Use Go binary instead of building from source 2015-02-16 13:40:51 +01:00
Taylor Gerring
a92bcbb795 Use latest Trusty version 2015-02-16 13:37:29 +01:00
obscuren
164de5e22b Changed default denominators 2015-02-16 13:20:16 +01:00
obscuren
8f69b5c7a2 Added invalid sec key test 2015-02-16 13:19:57 +01:00
CJentzsch
dda2eb84f7 add creation txs in block tests 2015-02-16 13:02:57 +01:00
CJentzsch
957f334012 more transaction tests 2015-02-16 13:00:21 +01:00
CJentzsch
94af56789a first block tests 2015-02-16 12:59:44 +01:00
Taylor Gerring
d68e607aa5 Group Qt dependencies together 2015-02-16 12:12:14 +01:00
obscuren
d2a4bc4d73 Removed reference to lastBlockNumber & LastBlockNumber 2015-02-16 12:03:27 +01:00
Taylor Gerring
f63c4a9bcb Ignore locally built binaries 2015-02-16 11:42:33 +01:00
Alexandre Van de Sande
05f2808849 Add http when not present on browser 2015-02-16 11:17:31 +01:00
obscuren
2c3a014f03 Resolved some bugs in the miner
* TODO nonce error sometimes persists
* Fixed mining on wrong blocks
* Fixed state error & receipt fail
2015-02-15 16:16:27 +01:00
obscuren
c924a841c7 Merge branch 'develop' into bounty 2015-02-15 02:29:52 +01:00
obscuren
7299eb72e0 HTTP RPC only listen on localhost 2015-02-15 02:26:30 +01:00
obscuren
238f39a42e Validate seckey when generating pub key 2015-02-15 02:20:31 +01:00
obscuren
09e53367a2 Use a mutex write-lock for a write operation 2015-02-15 02:13:24 +01:00
obscuren
b143dad596 Reference pointer to block instead of pointer to function 2015-02-15 02:09:57 +01:00
obscuren
16ae675107 Unmarshal in to pointer to string 2015-02-15 02:08:08 +01:00
obscuren
12fc590b34 removed some old menu items 2015-02-15 01:58:15 +01:00
obscuren
c29b01ce75 Reset URL bar 2015-02-14 17:18:28 +01:00
obscuren
befb4bc1c1 Fixed a few errors in the browser special meta tags objects 2015-02-14 17:13:21 +01:00
obscuren
32c7ebc51d Fixed mining & limited hash power 2015-02-14 16:52:14 +01:00
obscuren
65159d65c8 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-14 00:27:46 +01:00
Jeffrey Wilcke
3ff6c9bb79 Merge pull request #309 from fjl/peer-window
Fix Mist Peers Window
2015-02-14 00:27:40 +01:00
obscuren
84f7c966f7 Moved ECIES to repo & added secondary title for webview
* ECIES moved from obscuren to ethereum
* Added html META[name=badge] to reflect menuItem.secondaryTitle
2015-02-14 00:25:47 +01:00
Felix Lange
8464e43eaf cmd/mist: fix peer window 2015-02-14 00:12:37 +01:00
Felix Lange
4bef3ce284 p2p: print Cap as name/version 2015-02-13 23:54:34 +01:00
obscuren
396f1a0a33 Add 'crypto/ecies/' from commit '7c0f4a9b18d992166452d8cd32caaefd92b26386'
git-subtree-dir: crypto/ecies
git-subtree-mainline: 49a739c8d6
git-subtree-split: 7c0f4a9b18
2015-02-13 23:45:38 +01:00
Jeffrey Wilcke
7c0f4a9b18 Merge pull request #3 from Gustav-Simonsson/fix_ecies_params_init_bug
Fix ECIES params nil bug
2015-02-13 23:42:33 +01:00
obscuren
49a739c8d6 Merge branch 'Gustav-Simonsson-align_key_and_ecdsa_nonce_entropy' into develop 2015-02-13 23:35:21 +01:00
obscuren
12b2d57629 Merge branch 'align_key_and_ecdsa_nonce_entropy' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-align_key_and_ecdsa_nonce_entropy 2015-02-13 23:31:20 +01:00
obscuren
95cfaa1b37 disabled test 2015-02-13 23:26:41 +01:00
Jeffrey Wilcke
acc7c0f706 Merge pull request #308 from fjl/default-bootnodes
eth: add default bootnode
2015-02-13 21:51:51 +01:00
Felix Lange
1c1a3033be eth: add default bootnode 2015-02-13 21:41:13 +01:00
obscuren
384305f4aa Fixed QML errors 2015-02-13 18:33:08 +01:00
Alexandre Van de Sande
7aef0fed29 changed url bar behaviour. Failed attempt at icon 2015-02-13 18:32:15 +01:00
obscuren
4d49d7b5a6 Reset hash rate to 0 when mining is stopped 2015-02-13 18:30:06 +01:00
Gustav Simonsson
f35d62b759 Remove secp256_rand.go and update tests 2015-02-13 18:25:25 +01:00
obscuren
6a7b0ef904 Updated coin.js abi 2015-02-13 18:17:17 +01:00
obscuren
ce239333d5 Update balance label when mining 2015-02-13 18:15:23 +01:00
obscuren
0f3c25b265 Propagate blocks 2015-02-13 18:03:16 +01:00
obscuren
790de35e7f Fixed issue in peer window
* Fixed issues where new peer window could cause a crash when entering
  an empty string
2015-02-13 17:57:46 +01:00
obscuren
218f437b0c Updated window 2015-02-13 17:30:37 +01:00
obscuren
7336dfad02 Merge branch 'develop' into poc8 2015-02-13 17:23:48 +01:00
obscuren
00fca40939 Merge branch 'miner' into develop 2015-02-13 17:23:18 +01:00
obscuren
8a0f23915e Fixed a few issues in the miner and updated hash rate title
* Sometimes old nonces were set by "old" agents
* Added the hash rate to the miner
2015-02-13 17:23:09 +01:00
obscuren
8305d409d2 Merge branch 'develop' into miner 2015-02-13 17:00:15 +01:00
obscuren
5c251b6928 Merge branch 'fjl-poc8-net-integration' into develop 2015-02-13 16:08:30 +01:00
obscuren
bde3ff16ad merge 2015-02-13 16:02:37 +01:00
Gustav Simonsson
39434e383b Unexport randEntropy type and use exported Reader instead 2015-02-13 15:38:26 +01:00
obscuren
76fa75b394 wip 2015-02-13 15:35:54 +01:00
Felix Lange
32a9c0ca80 p2p: bump devp2p protcol version to 3
For compatibility with cpp-ethereum
2015-02-13 15:08:40 +01:00
Felix Lange
fd3e1061e0 p2p: handle disconnect before protocol handshake 2015-02-13 15:06:47 +01:00
Felix Lange
cf754b9483 p2p/discover: fix race in ListenUDP
udp.Table was assigned after the readLoop started, so
packets could arrive and be processed before the Table was there.
2015-02-13 15:06:47 +01:00
Felix Lange
5cc1256fd6 p2p: ensure we don't dial ourself
addPeer doesn't allow self connects, but we can avoid opening
connections in the first place.
2015-02-13 15:06:47 +01:00
Felix Lange
7101f44998 p2p: add I/O timeout for encrytion handshake 2015-02-13 15:06:47 +01:00
Felix Lange
22ee366ed6 p2p: fix goroutine leak for invalid peers
The deflect logic called Disconnect on the peer, but the peer never ran
and wouldn't process the disconnect request.
2015-02-13 15:06:46 +01:00
obscuren
75d164037f Merge branch 'logjson' into develop 2015-02-13 15:06:32 +01:00
obscuren
a5ea21cd85 merge 2015-02-13 15:05:56 +01:00
Felix Lange
5110f80bba p2p: improve read deadlines
There are now two deadlines, frameReadTimeout and payloadReadTimeout.

The frame timeout is longer and allows for connections that are idle.
The message timeout is still short and ensures that we don't get stuck
in the middle of a message.
2015-02-13 14:44:00 +01:00
Christoph Jentzsch
4ee0f90b46 Merge pull request #59 from winsvega/develop
new solidity tests, manual altered transaction tests
2015-02-13 12:47:02 +01:00
winsvega
ddc830be5c new tests
solidity test
wrong transaction rlp (manual)
2015-02-13 14:20:47 +03:00
Felix Lange
170eb3ac68 p2p/discover: map listening port using configured mechanism 2015-02-13 11:39:32 +01:00
Felix Lange
82f0bd9009 p2p/discover: code review fixes 2015-02-13 11:39:31 +01:00
Felix Lange
d0a2e655c9 cmd/ethereum, cmd/mist, eth, p2p: use package p2p/nat
This deletes the old NAT implementation.
2015-02-13 11:39:31 +01:00
Felix Lange
1543833ca0 p2p/nat: new package for port mapping stuff
I have verified that UPnP and NAT-PMP work against an older version of
the MiniUPnP daemon running on pfSense. This code is kind of hard to
test automatically.
2015-02-13 11:39:31 +01:00
CJentzsch
4e3377333f Merge remote-tracking branch 'origin/develop' into develop 2015-02-13 09:10:27 +01:00
CJentzsch
a681d1ec02 performance test 2015-02-13 09:09:11 +01:00
obscuren
38faf2c51a removed messages 2015-02-12 17:06:15 +01:00
obscuren
31fdc645ed cmd + t switches to new dapp window 2015-02-12 15:03:53 +01:00
wanderer
1000b02b18 bump 2015-02-12 00:56:22 -05:00
Gustav Simonsson
5136fc9ab7 Fix ECIES params nil bug
* Change ECIES params init function to static var as it does not have
  state; fixes TestMarshalencryption.
2015-02-12 02:35:35 +01:00
Jeffrey Wilcke
04c1a81509 Merge pull request #2 from Gustav-Simonsson/correct_ecies_shared_key_generation
Correct ECIES shared key length check
2015-02-12 00:10:00 +01:00
obscuren
b64ad7a2a6 Merge branch 'develop' into miner 2015-02-11 23:46:54 +01:00
obscuren
3f6baa45a7 Documented methods & removed old manifest 2015-02-11 23:46:45 +01:00
Gustav Simonsson
52a46e61f9 Correct ECIES shared key length check
* Ensure the ECIES shared key is padded with zero bytes if it's
  smaller than the requested key length.
* Split the ECIES shared key error into two;
  one for when the generated key is too big for the params
  and one for when it's nil (point of infinity returned by the
  curve scalar multiplication).
2015-02-11 20:28:42 +01:00
obscuren
558c67d392 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-11 20:22:19 +01:00
Jeffrey Wilcke
d73dff4d5b Merge pull request #303 from fjl/rlp-flat
rlp: add Flat
2015-02-11 20:22:04 +01:00
Felix Lange
b94f85de22 rlp: add Flat 2015-02-11 19:28:56 +01:00
obscuren
1fc3524e40 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-11 19:22:38 +01:00
Jeffrey Wilcke
ebc506dae8 Merge pull request #302 from alexvandesande/UI
Catalog Page Behaviour
2015-02-11 19:22:23 +01:00
Alexandre Van de Sande
6221b282d4 Catalog Page Behaviour 2015-02-11 19:16:35 +01:00
Taylor Gerring
db24fb792c Move standard fields to LogEvent 2015-02-11 18:49:00 +01:00
Taylor Gerring
d311b1b9b7 Merge pull request #301 from ethereum/travis
Updates to Travis config
2015-02-11 14:25:44 +01:00
Taylor Gerring
3c40eb9e5a Temporarily skip broken TestVerifyPoW 2015-02-11 13:47:03 +01:00
obscuren
df49c609a0 updated coin 2015-02-11 13:26:44 +01:00
Taylor Gerring
3d6fd601c5 Move event names within each object 2015-02-11 12:45:41 +01:00
Taylor Gerring
ef6c7bd726 Merge pull request #300 from tgerring/jsonrpc
Allow RPC ID to be string or null
2015-02-11 11:59:51 +01:00
Taylor Gerring
d613bf69bf #295 Allow RPC ID to be string 2015-02-11 11:56:29 +01:00
Taylor Gerring
cfddb7f3cd Merge branch 'develop' into jsonrpc
Conflicts:
	rpc/ws/server.go
2015-02-11 11:40:12 +01:00
Taylor Gerring
c6af5f0a27 No longer switch branches for go-qml dep 2015-02-11 11:30:36 +01:00
Taylor Gerring
e433525f51 Merge branch 'sveneh-origin_develop' into develop 2015-02-11 11:28:39 +01:00
Taylor Gerring
ab66a3d0d3 Merge branch 'origin_develop' of https://github.com/sveneh/go-ethereum into sveneh-origin_develop 2015-02-11 11:03:40 +01:00
CJentzsch
d0a2eca19b add more transaction tests 2015-02-11 09:00:25 +01:00
CJentzsch
ec8404c375 Merge remote-tracking branch 'origin/develop' into develop 2015-02-11 08:40:42 +01:00
CJentzsch
766ee65328 cppjit fails 2015-02-11 08:39:55 +01:00
martin becze
bf2abc3b68 Update ttTransactionTest.json 2015-02-10 21:04:04 -05:00
martin becze
5a89c6f803 Update ttTransactionTest.json
updated signature
2015-02-10 20:53:43 -05:00
martin becze
74e1320a0b Update ttTransactionTest.json
updated RLP
2015-02-10 20:36:27 -05:00
martin becze
eaec21f199 Update ttTransactionTest.json 2015-02-10 20:29:08 -05:00
Gustav Simonsson
8c056aebe1 Set both key generation and ECDSA nonce to use mixed entropy
* Move random entropy functions to new package randentropy
* Add function to get n bytes entropy where up to first 32
  bytes are mixed with OS entropy sources
2015-02-10 22:49:28 +01:00
wanderer
d1a31850ce added transaction tests to index.js 2015-02-10 14:38:48 -05:00
Taylor Gerring
d53e5646ec Use strongly-typed objects 2015-02-10 19:21:13 +01:00
Jeffrey Wilcke
5fe2916ee1 Merge pull request #298 from alexvandesande/UI
UI changes to Mist
2015-02-10 17:21:29 +01:00
Felix Lange
acc667fbef Merge pull request #296 from frewsxcv/patch-1
Fix broken link in README
2015-02-10 16:41:32 +01:00
Alexandre Van de Sande
80890cd9dd removed icomoon 2015-02-10 16:16:17 +01:00
Alexandre Van de Sande
6b5f4ed244 Recreated the changes on a new branch 2015-02-10 16:14:07 +01:00
Felix Lange
4242b05462 cmd/bootnode: new command (replaces cmd/peerserver) 2015-02-10 14:26:54 +01:00
Felix Lange
a21b30c901 eth: remove unused Ethereum sync fields 2015-02-10 13:30:07 +01:00
obscuren
ddccea75e8 Fixed "to" field 2015-02-10 13:20:06 +01:00
obscuren
da2fae0e43 Basic structure miner 2015-02-10 13:04:38 +01:00
Felix Lange
a3cd218719 cmd/mist, cmd/ethereum: add CLI arguments for node key 2015-02-10 12:30:09 +01:00
Felix Lange
0c7df37351 crypto: add key loading functions 2015-02-10 12:29:50 +01:00
CJentzsch
cf002a4611 undo changed due to memory gas cost rule 2015-02-10 11:22:50 +01:00
CJentzsch
be4f40741f cppjit fail 2015-02-10 10:43:36 +01:00
sveneh
70e2df3904 Dockerfile creation speed-up by not running go tests, added a workaround
so that docker's cache is invalidated whenever th git repo is updated.
2015-02-09 16:27:49 +01:00
Felix Lange
f1ebad2508 eth: don't warn if no BootNodes are specified 2015-02-09 16:17:07 +01:00
CJentzsch
348d3af0fc more memory cost tests 2015-02-09 11:20:14 +01:00
Felix Lange
9915d3c3be p2p/discover: deflake UDP tests 2015-02-09 11:02:32 +01:00
CJentzsch
907f229757 update memory rule 2015-02-09 10:29:47 +01:00
obscuren
58ba290a9f moved manager 2015-02-09 00:08:28 +01:00
obscuren
b22f0f2ef5 merged 2015-02-09 00:06:24 +01:00
CJentzsch
bcc5c51630 gas failure cppjit 2015-02-07 18:09:22 +01:00
obscuren
16a04e64f2 Updated coin 2015-02-07 17:04:19 +01:00
obscuren
c8147fb7b9 Compare regardless of length 2015-02-07 17:04:04 +01:00
obscuren
0fa6927171 Moved log message to detail output 2015-02-07 17:03:33 +01:00
obscuren
99ebb869bf Fixed iterator 2015-02-07 17:03:22 +01:00
obscuren
44eafb15e0 Renamed filter 2015-02-07 17:03:12 +01:00
CJentzsch
cb877734f0 cppjit fails 2015-02-07 09:56:24 +01:00
Corey Farwell
792cd0aa10 Fix broken link in README 2015-02-06 22:36:22 -05:00
Felix Lange
028775a086 cmd/ethereum, cmd/mist: add flag for discovery bootstrap nodes 2015-02-07 00:52:49 +01:00
Felix Lange
2cf4fed11b cmd/mist, eth, javascript, p2p: use Node URLs for peer suggestions 2015-02-07 00:46:56 +01:00
Felix Lange
e34d134102 p2p: fixes for actual connections
The unit test hooks were turned on 'in production'.
2015-02-07 00:43:52 +01:00
Felix Lange
8564eb9f7e p2p/discover: add node URL functions, distinguish TCP/UDP ports
The discovery RPC protocol does not yet distinguish TCP and UDP ports.
But it can't hurt to do so in our internal model.
2015-02-07 00:12:23 +01:00
CJentzsch
9f52408e70 sha3 performance test 2015-02-06 17:43:35 +01:00
CJentzsch
a3780032bf failing tests from random simulation as state tests and transaction tests 2015-02-06 15:38:55 +01:00
Taylor Gerring
e4bb419707 Add go check to prefetched test dependencies 2015-02-05 18:11:31 -06:00
Taylor Gerring
5e0b2b260c Updated go list command 2015-02-05 17:49:44 -06:00
Taylor Gerring
b58b6b9bac Use after_success build step 2015-02-05 17:23:22 -06:00
Taylor Gerring
f3ac378ca4 No long use v1 branch of qml repo 2015-02-05 17:13:51 -06:00
Felix Lange
56f777b2fc cmd/ethereum, cmd/mist, core, eth, javascript, xeth: fixes for new p2p API 2015-02-06 00:03:59 +01:00
obscuren
e40c1c62ce API changed to use Pubkey only. Reflected that change in the rest of the api 2015-02-05 15:00:59 -08:00
Felix Lange
8e8ec8f5f8 cmd/peerserver: is gone
Will be back soon. Maybe.
2015-02-06 00:00:36 +01:00
Felix Lange
5bdc115943 p2p: integrate p2p/discover
Overview of changes:

- ClientIdentity has been removed, use discover.NodeID
- Server now requires a private key to be set (instead of public key)
- Server performs the encryption handshake before launching Peer
- Dial logic takes peers from discover table
- Encryption handshake code has been cleaned up a bit
- baseProtocol is gone because we don't exchange peers anymore
- Some parts of baseProtocol have moved into Peer instead
2015-02-06 00:00:36 +01:00
Felix Lange
739066ec56 p2p/discover: add some helper functions 2015-02-06 00:00:36 +01:00
Felix Lange
12224c7f59 p2p/discover: new package implementing the Node Discovery Protocol 2015-02-06 00:00:36 +01:00
Felix Lange
8c3095faf0 rlp: fix encoding of arrays with byte element type 2015-02-06 00:00:36 +01:00
Felix Lange
410b35e913 crypto: make it easier to run Sha3 on multiple inputs
crypto.Sha3(append(foo, bar)) --> crypto.Sha3(foo, bar)
crypto.Sha3([]byte{}) --> crypto.Sha3()
2015-02-06 00:00:36 +01:00
zelig
2e48d39fc7 key generation abstracted out, for testing with deterministic keys 2015-02-06 00:00:36 +01:00
zelig
488a042736 fix clientidentity test after privkey removed 2015-02-06 00:00:36 +01:00
zelig
71765957e4 get rid of Private Key in ClientIdentity 2015-02-06 00:00:36 +01:00
zelig
68205dec9f make crypto handshake calls package level, store privateKey on peer + tests ok 2015-02-06 00:00:36 +01:00
zelig
4499743522 apply handshake related improvements from p2p.crypto branch 2015-02-06 00:00:35 +01:00
zelig
54252ede31 add temporary forced session token generation 2015-02-06 00:00:35 +01:00
zelig
faa069a126 peer-level integration test for crypto handshake
- add const length params for handshake messages
- add length check to fail early
- add debug logs to help interop testing (!ABSOLUTELY SHOULD BE DELETED LATER)
- wrap connection read/writes in error check
- add cryptoReady channel in peer to signal when secure session setup is finished
- wait for cryptoReady or timeout in TestPeersHandshake
2015-02-06 00:00:35 +01:00
zelig
20aade56c3 chop first byte when cryptoid.PubKeyS is set from identity.Pubkey() since this is directly copied in the auth message 2015-02-06 00:00:35 +01:00
zelig
1f2adb05b5 add initial peer level test (failing) 2015-02-06 00:00:35 +01:00
zelig
4afde4e738 add code documentation 2015-02-06 00:00:35 +01:00
zelig
364b783281 changes that fix it all:
- set proper public key serialisation length in pubLen = 64
- reset all sizes and offsets
- rename from DER to S (we are not using DER encoding)
- add remoteInitRandomPubKey as return value to respondToHandshake
- add ImportPublicKey with error return to read both EC golang.elliptic style 65 byte encoding and 64 byte one
- add ExportPublicKey falling back to go-ethereum/crypto.FromECDSAPub() chopping off the first byte
- add Import - Export tests
- all tests pass
2015-02-06 00:00:35 +01:00
zelig
58fc2c679b important fix for peer pubkey. when taken from identity, chop first format byte! 2015-02-06 00:00:35 +01:00
zelig
923504ce3d add equality check for nonce and remote nonce 2015-02-06 00:00:35 +01:00
zelig
2e868566d7 add minor comments to the test 2015-02-06 00:00:35 +01:00
zelig
e252c634cb first stab at integrating crypto in our p2p
- abstract the entire handshake logic in cryptoId.Run() taking session-relevant parameters
- changes in peer to accomodate how the encryption layer would be switched on
- modify arguments of handshake components
- fixed test getting the wrong pubkey but it till crashes on DH in newSession()
2015-02-06 00:00:35 +01:00
zelig
1803c65e40 integrate cryptoId into peer and connection lifecycle 2015-02-06 00:00:35 +01:00
zelig
489d956283 completed the test. FAIL now. it crashes at diffie-hellman. ECIES -> secp256k1-go panics 2015-02-06 00:00:35 +01:00
zelig
076c382a74 handshake test to crypto 2015-02-06 00:00:35 +01:00
zelig
3b6385b146 handshake test to crypto 2015-02-06 00:00:34 +01:00
zelig
714b955d6e fix crash
- add session token check and fallback to shared secret in responder call too
- use explicit length for the types of new messages
- fix typo resp[resLen-1] = tokenFlag
2015-02-06 00:00:34 +01:00
zelig
b855f671a5 rewrite to comply with latest spec
- correct sizes for the blocks : sec signature 65, ecies sklen 16, keylength 32
- added allocation to Xor (should be optimized later)
- no pubkey reader needed, just do with copy
- restructuring now into INITIATE, RESPOND, COMPLETE -> newSession initialises the encryption/authentication layer
- crypto identity can be part of client identity, some initialisation when server created
2015-02-06 00:00:34 +01:00
zelig
4e52adb84a add crypto auth logic to p2p 2015-02-06 00:00:34 +01:00
zelig
d227f6184e fix protocol to accomodate privkey 2015-02-06 00:00:34 +01:00
zelig
88167f39a6 add privkey to clientIdentity + tests 2015-02-06 00:00:34 +01:00
zelig
c8a8aa0d43 initial hook for crypto handshake (void, off by default) 2015-02-06 00:00:34 +01:00
obscuren
6b5f25802e Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-05 14:42:22 -08:00
obscuren
f8c1eb157d Undone fix. Will re-enable once chain resets 2015-02-05 14:42:12 -08:00
Taylor Gerring
59665ade85 Pin Travis go version to 1.4.1 2015-02-05 16:27:54 -06:00
Taylor Gerring
c1f6e259a9 Only submit on coverage report success 2015-02-05 16:04:42 -06:00
Taylor Gerring
03b89ab712 Only download missing deps, not build 2015-02-05 16:03:29 -06:00
Taylor Gerring
ae3e9d4881 Don't reference by $GOROOT 2015-02-05 16:02:15 -06:00
obscuren
cad53fa191 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
Conflicts:
	README.md
2015-02-05 12:36:30 -08:00
obscuren
0e682d936d Updated readme 2015-02-05 12:35:46 -08:00
obscuren
cec30e23b2 Updated readme 2015-02-05 12:34:47 -08:00
Jeffrey Wilcke
47129428fe Merge pull request #290 from Gustav-Simonsson/correct_block_parent_timestamp_check
Correct block parent timestamp check and typos
2015-02-05 12:23:56 -08:00
obscuren
2f30a27b2b Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-05 12:22:44 -08:00
obscuren
8be1d134aa updated home 2015-02-05 12:22:35 -08:00
obscuren
7e0799ff21 Merge commit '9d84609b3faf797f4a611587abdda3d6b3b07917' into develop 2015-02-05 12:07:36 -08:00
Marek Kotewicz
9d84609b3f Merge branch 'master' of https://github.com/ethereum/ethereum.js 2015-02-05 21:06:50 +01:00
obscuren
c64852dbcc pending / chain event 2015-02-05 11:55:03 -08:00
obscuren
bcacaaa4f4 Merge branch 'tgerring-develop' into develop 2015-02-05 11:44:45 -08:00
obscuren
d00e2731e5 Merge branch 'develop' of https://github.com/tgerring/go-ethereum into tgerring-develop
Conflicts:
	rpc/http/server.go
2015-02-05 11:44:30 -08:00
Jeffrey Wilcke
99a1551b20 Merge pull request #287 from ethereum/system-testing
Seednode CLI param updates
2015-02-05 11:09:13 -08:00
obscuren
ac69538707 Merge branch 'develop' into miner 2015-02-05 10:58:43 -08:00
CJentzsch
16ab949110 cppjit wrong cmake config fail 2015-02-05 18:40:37 +01:00
Marek Kotewicz
82cc5f63ae bring back jsonrpc single method calls in polling 2015-02-05 18:20:43 +01:00
obscuren
9d2166a964 wip 2015-02-05 09:13:02 -08:00
CJentzsch
0c29650bfa debug version for cppjit in dockerfile 2015-02-05 17:01:24 +01:00
sveneh
af21a32cef enabled tests 2015-02-05 12:31:49 +01:00
sveneh
5235124460 enabled python in tests 2015-02-05 12:09:35 +01:00
sveneh
2e2e36cc72 updated python and go to new build requirement. added script to create
dockers locally
2015-02-05 12:07:12 +01:00
obscuren
db7c34a9df Default gas price and default gas for rpc 2015-02-04 18:34:29 -08:00
obscuren
a1b4547a53 set uncles regardless of empty uncle list. Fixes invalid blocks being mined 2015-02-04 18:26:23 -08:00
obscuren
57f95c1dc7 fixed test 2015-02-04 17:35:49 -08:00
obscuren
1d519854e2 Propagate known transactions to new peers on connect 2015-02-04 17:28:54 -08:00
obscuren
292f7ada8e Merge branch 'develop' into miner 2015-02-04 15:05:49 -08:00
obscuren
65158d39b0 Filtering 2015-02-04 15:05:47 -08:00
obscuren
7c278d6ac2 updated tests 2015-02-04 12:52:34 -08:00
Taylor Gerring
429077a5a0 Merge branch 'develop' of github.com:tgerring/go-ethereum into develop 2015-02-04 10:58:18 -06:00
Taylor Gerring
2656a2d038 Use different default RPC port per #186 2015-02-04 10:57:47 -06:00
obscuren
3f03197dae Updated tests 2015-02-04 07:39:02 -08:00
CJentzsch
83258456d3 remove false tests 2015-02-04 16:23:54 +01:00
CJentzsch
936a8c0e3b python fail 2015-02-04 16:21:06 +01:00
obscuren
b1870631a4 WIP miner 2015-02-04 05:53:22 -08:00
Marek Kotewicz
859a1999cb Merge pull request #55 from ethereum/develop
fixed jsonrpc result field 0 not handled properly
2015-02-04 11:26:19 +01:00
Marek Kotewicz
f3e1797153 fixed jsonrpc response 0 not handled properly 2015-02-04 11:23:23 +01:00
CJentzsch
7bfa609f38 Merge remote-tracking branch 'origin' into develop 2015-02-04 09:48:31 +01:00
CJentzsch
822b05106d goFail 2015-02-04 09:48:16 +01:00
Taylor Gerring
55ed0ff07c Update RPC message format 2015-02-03 17:29:29 -06:00
Taylor Gerring
07590196a5 Merge branch 'develop' of github.com:tgerring/go-ethereum into develop 2015-02-03 17:18:20 -06:00
wanderer
c37ea26dc7 updated blockchain require 2015-02-03 17:35:36 -05:00
Gustav Simonsson
697c2b5dc1 Correct block parent timestamp check and typos 2015-02-03 23:09:39 +01:00
Marek Kotewicz
a0cfa3ca21 version upgrade 2015-02-03 23:02:24 +01:00
Marek Kotewicz
e58e2f5ee4 jsonrpc.js tests && jsonrpc response validation is more strict 2015-02-03 23:00:02 +01:00
Marek Kotewicz
45134de740 jsonrpc.js file && batch polling 2015-02-03 22:24:17 +01:00
Marek Kotewicz
f3ce1f07c4 simplified polling && jsonrpc payload creation 2015-02-03 21:43:39 +01:00
Marek Kotewicz
ddc17196da tests && fixes for utils methods 2015-02-03 20:12:56 +01:00
Marek Kotewicz
fdcc1af4e2 clearing tests 2015-02-03 19:48:51 +01:00
wanderer
901ddf7737 moved blockchain tests 2015-02-03 12:45:23 -05:00
Marek Kotewicz
4a54b8c451 version upgrade 0.0.12 2015-02-03 16:58:49 +01:00
obscuren
4dc283c0fb Removed minimum height. Closes #282 2015-02-03 07:54:50 -08:00
Marek Kotewicz
f1a5cf9128 Merge branch 'develop' into cpp
Conflicts:
	dist/ethereum.js.map
	dist/ethereum.min.js
2015-02-03 16:20:26 +01:00
Marek Kotewicz
a5909d82eb parsing events output 2015-02-03 16:16:38 +01:00
obscuren
59b7386abb Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-02-03 07:16:14 -08:00
obscuren
7bd2fbe2b1 Fixed whisper "to" filtering. Closes #283 2015-02-03 07:16:05 -08:00
obscuren
623469cb6c Added missing whisper timestamp. Closes #284 2015-02-03 06:56:19 -08:00
obscuren
663d725026 Added a different default home page 2015-02-03 06:54:41 -08:00
Marek Kotewicz
1860b3dff9 gulp 2015-02-03 15:08:36 +01:00
Marek Kotewicz
03faec9d41 event outputParser && tests 2015-02-03 15:08:19 +01:00
CJentzsch
2b3ea9770b cppjit fail 2015-02-03 13:13:10 +01:00
obscuren
30fa30bd4a Docs & old code removed 2015-02-02 20:02:00 -08:00
obscuren
faa54e59c1 Make sure that CALL addr is always 20 bytes 2015-02-02 20:01:10 -08:00
obscuren
93ae7bb0d2 Raw data for existing blocks 2015-02-02 19:58:58 -08:00
obscuren
3c7181d28f Fixed a copy issue in the trie which could cause a consensus failure 2015-02-02 19:58:34 -08:00
obscuren
6fecb150d6 Updated tests 2015-02-02 19:55:38 -08:00
CJentzsch
56559162d3 RefundOverflowTest 2015-02-03 01:00:32 +01:00
Taylor Gerring
1f4ed49b4c Move hardcoded seed node address to app flag
Replaces functionality `-seed=true` with `-seed="ip:port"`
2015-02-02 13:04:00 -06:00
Taylor Gerring
57c6caf146 Separate Coveralls submission from coverage script 2015-02-02 12:14:04 -06:00
arkpar
4bb5ba78b0 reverted ethereum.js 2015-02-02 18:20:43 +01:00
Marek Kotewicz
9d9c23e315 common cleanup 2015-02-02 17:40:05 +01:00
arkpar
1a6b7de0af removed splitter.qml 2015-02-02 16:47:18 +01:00
Taylor Gerring
b2b42f759c Update signature for rpc websockets 2015-02-02 07:37:44 -06:00
Taylor Gerring
7139c1aff7 Decrease log level for Sending RPC payload 2015-02-02 07:30:22 -06:00
Taylor Gerring
1e60919d47 Merge pull request #3 from ethereum/develop
Update to develop
2015-02-02 07:22:20 -06:00
Marek Kotewicz
011fdd91df event_inc example 2015-02-02 11:52:56 +01:00
Gav Wood
0994efa66f Better HTML template in Mix.
Use happened in JS.
Debugging QML enabled.
2015-02-01 22:51:14 -08:00
obscuren
8ccde784f9 Added (disabled) Jit validation 2015-02-01 15:30:29 +01:00
obscuren
d52878c744 Removed some VMEnv & Added VmType() to vm.Environment 2015-02-01 15:29:57 +01:00
martin becze
ca19e52266 Create badBlockChain.json 2015-01-31 18:40:02 -05:00
wanderer
e76af886bf updated test loader 2015-01-31 18:26:29 -05:00
wanderer
b4b280c4ff removed old folder 2015-01-31 17:51:22 -05:00
wanderer
764ed01688 move folder 2015-01-31 17:48:45 -05:00
martin becze
d1c8fa6bbd Rename basicBlockChain.js to basicBlockChain.json 2015-01-31 17:47:39 -05:00
martin becze
8ce498ee53 Create basicBlockChain.js 2015-01-31 17:46:24 -05:00
Marek Kotewicz
d5166918e9 fixed event signatures 2015-01-31 19:07:59 +01:00
obscuren
0d97c3ce13 Merge branch 'bounty' into develop 2015-01-31 17:50:43 +01:00
obscuren
19cff8ecca Fixed n 2015-01-31 17:50:28 +01:00
obscuren
bb2e847363 Merge branch 'bounty' into develop 2015-01-31 17:44:42 +01:00
obscuren
a008c21cf0 Fixed Sign nonce 2015-01-31 17:44:34 +01:00
obscuren
9016ce8dd8 Merge branch 'bounty' into develop 2015-01-31 17:23:50 +01:00
obscuren
79cd58bdf3 removed old code 2015-01-31 17:23:46 +01:00
obscuren
d1e5d92191 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-31 17:23:37 +01:00
obscuren
cb382fa76b Validate transactions sender before adding to pool. Closes #272 2015-01-31 17:22:17 +01:00
Marek Kotewicz
e6c0ec7278 version upgrade 2015-01-31 16:02:51 +01:00
Marek Kotewicz
3cdf108057 Merge branch 'develop' 2015-01-31 16:02:16 +01:00
Marek Kotewicz
688030ecb6 eth.filter next param optional 2015-01-31 16:01:41 +01:00
Marek Kotewicz
589c4fb30f formatInput && formatOutput simplified 2015-01-31 15:48:49 +01:00
Marek Kotewicz
b20e972bec few methods moved to utils 2015-01-31 15:22:05 +01:00
Marek Kotewicz
a8a2e3231c constants separated to const.js file 2015-01-31 14:05:48 +01:00
Marek Kotewicz
4bdf52fc1e toAscii && fromAscii moved to utils 2015-01-31 13:54:39 +01:00
Marek Kotewicz
0b82a05a75 events 2015-01-31 04:09:48 +01:00
Marek Kotewicz
80c97ca21b events 2015-01-31 03:42:13 +01:00
Marek Kotewicz
2491c99b37 abi.js cleanup && new types.js, utils.js 2015-01-31 02:54:17 +01:00
Marek Kotewicz
cf534d4726 gulp 2015-01-31 01:54:46 +01:00
Marek Kotewicz
5689086202 formatters separated 2015-01-31 01:52:36 +01:00
Taylor Gerring
bd64ed1e93 Update coveralls badge to develop branch 2015-01-30 18:47:25 -06:00
Marek Kotewicz
995861de4d event options 2015-01-31 01:30:19 +01:00
Taylor Gerring
56a0131778 Travis fixes for Qt5.4 2015-01-30 17:24:51 -06:00
wanderer
e125e70fa0 bump 2015-01-30 16:07:55 -05:00
martin becze
5f10d982ac Update genesishashestest.json
fixed initial_alloc
2015-01-30 16:09:25 -05:00
Taylor Gerring
0bb3943698 Updated for Qt5.4 2015-01-30 11:49:52 -06:00
obscuren
2d9b3aa537 Removed debug log 2015-01-30 17:00:33 +01:00
obscuren
8e14545282 added new default favicon 2015-01-30 15:54:43 +01:00
Marek Kotewicz
2eedc330bf contract with array example 2015-01-30 15:45:00 +01:00
obscuren
0ed3edc99e "fixed" transaction view 2015-01-30 14:49:45 +01:00
obscuren
0c0708076e added disasm 2015-01-30 14:41:14 +01:00
obscuren
3847e248df Bumped version number 2015-01-30 14:37:07 +01:00
obscuren
af927ffdaf Added whisper messages
* have identity & get messages
2015-01-30 13:47:18 +01:00
obscuren
c03d403437 Added whisper interface for xeth, added examples, updated RPC
* Added RPC methods for whisper
* Added whisper example
2015-01-30 13:25:12 +01:00
obscuren
c48644490f Fixed whisper pub key bug
* Unrecoverable messages would cause segfault when recovering invalid
  pub key
2015-01-30 13:24:20 +01:00
obscuren
54927dc0e0 Fixed issue with Storage()
* Storage() returned encoded values. They are now decode prior to hexing
* Removed old code from state object
* Updated coin
2015-01-29 23:58:43 +01:00
obscuren
705cf6113d debug err removed 2015-01-29 23:18:46 +01:00
obscuren
9022f5034f default values removed 2015-01-29 23:17:43 +01:00
CJentzsch
e8e8d12168 update genesis block 2015-01-29 23:05:42 +01:00
CJentzsch
fad4ddbcaf delete wrong tests 2015-01-29 22:50:38 +01:00
obscuren
bd992e7baf Merge branch 'qt5.4' of github.com-obscure:ethereum/go-ethereum into qt5.4
Conflicts:
	rpc/message.go
2015-01-29 20:41:10 +01:00
obscuren
0031f388ac More dapp samples
* Info DApp, coin DApp
* Additional rpc methods
2015-01-29 20:39:26 +01:00
Taylor Gerring
447bad9dbd Travis fix
Satisfy dependency for obscuren/qml fork
2015-01-29 12:12:19 -06:00
Taylor Gerring
89a48e365c Cleanup 2015-01-29 11:39:59 -06:00
Taylor Gerring
1cfea1113a Merge branch 'qt5.4' of github.com:ethereum/go-ethereum into qt5.4 2015-01-29 11:28:55 -06:00
obscuren
6488a392a3 Reimplemented message filters for rpc calls 2015-01-29 16:52:00 +01:00
Marek Kotewicz
600c9dd27d topics are deprecated 2015-01-29 15:45:04 +01:00
Marek Kotewicz
e380462532 topic for backwards compatibility 2015-01-29 15:36:13 +01:00
Marek Kotewicz
94e0e5ab7d Merge branch 'cpp' into cpp2
Conflicts:
	example/balance.html
2015-01-29 15:22:55 +01:00
Marek Kotewicz
8613382869 moved comment 2015-01-29 15:17:32 +01:00
Marek Kotewicz
df17c33898 event example 2015-01-29 15:05:43 +01:00
obscuren
ddf17d93ac Samples and disams cmd for evm code 2015-01-29 14:46:59 +01:00
Marek Kotewicz
c8ee08c24b contract.js simplified 2015-01-29 13:32:32 +01:00
obscuren
84adf77bf3 Added RPC "Call" for JS calls to contracts 2015-01-29 13:10:34 +01:00
obscuren
f75dcc7f4c Added abi example 2015-01-29 13:10:04 +01:00
Marek Kotewicz
842b8cf323 event.js 2015-01-29 12:35:21 +01:00
obscuren
b5918a1faa removed create 2015-01-29 12:06:47 +01:00
obscuren
d0c6559204 Merge branch 'develop' into qt5.4 2015-01-29 12:02:45 +01:00
obscuren
6d012f628b implement transact 2015-01-29 12:01:51 +01:00
Taylor Gerring
726852e3d3 Remove old websocket implementation 2015-01-28 21:39:49 -06:00
Taylor Gerring
83b385a290 Separate golang source dir from GOPATH dir 2015-01-28 21:28:32 -06:00
obscuren
ec85458612 updated ethereum.js and moved to subfolder
* Previous subtree caused a lot of trouble
* Implemented sha3 in our shiny new http JSON RPC
2015-01-29 00:24:18 +01:00
obscuren
73dcbf7ba2 Add 'cmd/mist/assets/ext/ethereum.js/' from commit '63d9c070ef7637a3d570a5a45ea931c1680ebc02'
git-subtree-dir: cmd/mist/assets/ext/ethereum.js
git-subtree-mainline: f80fe97763
git-subtree-split: 63d9c070ef
2015-01-28 23:33:24 +01:00
obscuren
f80fe97763 removed old js yet again 2015-01-28 23:33:20 +01:00
obscuren
cbf1d07073 default http rpc on 2015-01-28 23:23:33 +01:00
obscuren
8284bef072 Merge branch 'develop' into qt5.4 2015-01-28 22:21:26 +01:00
obscuren
fd5d061d49 Merge branch 'develop' into Gustav-Simonsson-key_store_and_accounts_integration 2015-01-28 21:50:10 +01:00
obscuren
32fbc0d334 Merge branch 'develop' into qt5.4 2015-01-28 21:36:53 +01:00
obscuren
1337a8dfb1 upped pv 2015-01-28 21:34:08 +01:00
obscuren
3440a8a0bf changed lost key 2015-01-28 21:12:26 +01:00
obscuren
5e891ea981 Merge branch 'key_store_and_accounts_integration' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-key_store_and_accounts_integration 2015-01-28 20:55:55 +01:00
obscuren
adda54ac55 Added webengine initializer 2015-01-28 20:50:20 +01:00
obscuren
cebb149f5c removed key while in the process of moving to the new key storage 2015-01-28 20:50:09 +01:00
Gav Wood
e1c0862658 Fix for API. 2015-01-28 10:19:49 -08:00
Taylor Gerring
21fd31dad8 Merge branch 'jsonrpc' of github.com:ethereum/go-ethereum into jsonrpc 2015-01-28 12:01:15 -06:00
obscuren
957f80c623 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-28 18:37:04 +01:00
obscuren
1c51e12c18 Merge branch 'jsonrpc' into qt5.4 2015-01-28 18:36:41 +01:00
obscuren
872b249711 further cleaned up xeth interface 2015-01-28 18:36:23 +01:00
obscuren
1146f25015 clean up of xeth 2015-01-28 18:25:50 +01:00
obscuren
45e15f62f5 merge jsonrpc 2015-01-28 18:22:53 +01:00
obscuren
7f638f0b2d moving to a better xeth 2015-01-28 18:14:28 +01:00
Taylor Gerring
5a52e86546 Update go to latest version
Now using git instead of mercurial
2015-01-28 11:10:16 -06:00
Taylor Gerring
a88f609b8a Use custom Send methods 2015-01-28 10:22:37 -06:00
Marek Kotewicz
61e8ae2f7b events init 2015-01-28 14:55:39 +01:00
obscuren
b46e1ca97e Merge branch 'jsonrpc' of github.com-obscure:ethereum/go-ethereum into jsonrpc 2015-01-28 14:52:09 +01:00
obscuren
fb7c03ff4d switched to obscuren/qml 2015-01-28 14:51:54 +01:00
Marek Kotewicz
2544d2c952 tests for abi.filters 2015-01-28 14:39:10 +01:00
Marek Kotewicz
ea7c2fc673 abi function type 2015-01-28 14:20:36 +01:00
obscuren
9a11a94894 Updated assets & moved messages 2015-01-28 14:02:36 +01:00
obscuren
cbf162ca64 Allow CORS * 2015-01-28 14:02:18 +01:00
obscuren
85d20cd61b Added big numbers 2015-01-28 14:02:03 +01:00
obscuren
94976d63ca Merge branch 'develop' into qt5.4 2015-01-28 10:58:56 +01:00
obscuren
cb47a9e97f new ethereum.js 2015-01-28 10:58:43 +01:00
obscuren
ad5894e486 removed old ethereum.js 2015-01-28 10:54:06 +01:00
Marek Kotewicz
63d9c070ef fixed incoming messages 2015-01-28 10:50:24 +01:00
obscuren
f15d23b496 updated messages 2015-01-28 10:47:17 +01:00
obscuren
4c5968097d Merge branch 'jsonrpc' into qt5.4 2015-01-28 10:29:29 +01:00
obscuren
159c4d56cd Merge branch 'develop' into jsonrpc 2015-01-28 10:23:58 +01:00
obscuren
f3e78c8f3c reworking messages => log 2015-01-28 10:23:18 +01:00
Christoph Jentzsch
a20a5b437d Merge pull request #50 from winsvega/develop
Transaction Tests
2015-01-28 06:28:45 +01:00
Gustav Simonsson
8d9752a557 Address pull request comments
* Use crypto.Sign instead of directly calling secp256k1 lib
* Rename UserAccount to Account and Addr to Address (for consistency)
* Change AccountManager.Sign to take ptr to Account instead of
  address byte array
* Simplify copying of Accounts in Accounts()
* PubkeyToAddress and GetEntropyCSPRNG now exported
2015-01-28 05:12:57 +01:00
Marek Kotewicz
1345a8c67c log error on console, if api returns an error 2015-01-28 00:07:03 +01:00
Marek Kotewicz
83fad0fb59 removed fromFixed, toFixed && offset from tests 2015-01-27 23:03:57 +01:00
Taylor Gerring
e9d017ba08 Rename api var for clarity 2015-01-27 14:34:01 -06:00
Taylor Gerring
d8c6168d11 Return a websocker.Handler of the function 2015-01-27 14:26:42 -06:00
Taylor Gerring
dd3f38fe5b Rename transport to ws
Cleanup object naming for clarity
2015-01-27 14:16:34 -06:00
Taylor Gerring
a38bca3438 Add wsport flag to Mist 2015-01-27 12:40:52 -06:00
Taylor Gerring
5f50fe7a4a Update CLI to use new Websocket RPC
Use “wsport” flag to change default port
2015-01-27 12:29:08 -06:00
Taylor Gerring
b8e7b8e2e1 New simplified Websocket transport
Uses rpc.EthereumApi abstraction
2015-01-27 12:29:08 -06:00
Taylor Gerring
2f0166b945 Indicate port in startup log message 2015-01-27 12:29:08 -06:00
Taylor Gerring
d790229a33 Move HTTP transport to sub package of RPC 2015-01-27 12:29:07 -06:00
obscuren
8c99a87aa8 Merge branch 'chfast-pr/evmjit' into develop 2015-01-27 16:31:29 +01:00
obscuren
fe14b0b82e Merge branch 'pr/evmjit' of https://github.com/chfast/go-ethereum into chfast-pr/evmjit 2015-01-27 16:30:38 +01:00
obscuren
aa5b29e2f2 Implemented contract ABI 2015-01-27 16:19:21 +01:00
obscuren
382726fde4 Merge branch 'key_store_and_accounts_integration' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-key_store_and_accounts_integration 2015-01-27 16:18:40 +01:00
Marek Kotewicz
c2cb2bef96 removed web3.eth.account, fixed #37 2015-01-27 16:02:42 +01:00
Marek Kotewicz
09f633596d fixed #23 2015-01-27 15:20:22 +01:00
Marek Kotewicz
42a25f2f26 evaluating solidity method input params 2015-01-27 14:31:50 +01:00
Marek Kotewicz
6d59047c5f contract method name 2015-01-27 14:14:02 +01:00
Marek Kotewicz
ad7c05778f getMethodWithName 2015-01-27 14:05:30 +01:00
Marek Kotewicz
f02368141f fixed contract example 2015-01-27 11:53:34 +01:00
Marek Kotewicz
649b9cc195 fixed natspec example 2015-01-27 09:40:31 +01:00
Marek Kotewicz
1f5a6f1341 Merge branch 'develop' into cpp
Conflicts:
	dist/ethereum.js.map
	dist/ethereum.min.js
2015-01-27 09:36:39 +01:00
Marek Kotewicz
da4c2d530d removed promise dependency, updated readme, fixed node.js version of lib 2015-01-27 00:54:21 +01:00
Ethan Buchman
2da367a2be fix unchecked slice index on tx.From() 2015-01-26 10:57:23 -08:00
Paweł Bylica
079c59b929 Update JitVm to new EVM JIT ABI (C interface) 2015-01-26 18:02:09 +01:00
Marek Kotewicz
5b701962dc upgraded version to 0.0.9 2015-01-26 16:47:05 +01:00
Marek Kotewicz
c595632b92 gulp 2015-01-26 16:45:35 +01:00
Marek Kotewicz
c5610398d5 Merge branch 'master' into sync
Conflicts:
	lib/websocket.js
2015-01-26 16:45:12 +01:00
Marek Kotewicz
a7f4448f34 Merge branch 'develop' into sync 2015-01-26 16:43:21 +01:00
Marek Kotewicz
7807a4f738 polling every second 2015-01-26 16:42:43 +01:00
Marek Kotewicz
e5d294df32 return null instead of undefined, if not provider is set 2015-01-26 16:41:00 +01:00
Marek Kotewicz
d0b6f3663b watches are calling callback with a single result object, not a full jsonrpc response 2015-01-26 16:22:40 +01:00
Paweł Bylica
c71aff99db Update EVM JIT runtime data layout 2015-01-26 16:13:55 +01:00
Paweł Bylica
5d33d5a7d9 Merge remote-tracking branch 'upstream/develop' into evmjit 2015-01-26 15:46:10 +01:00
Gustav Simonsson
512ffa2bf4 Add accounts package and refactor key stores
* Add initial UserAccount and AccountManager structs
* Add NewAccount, Sign and Accounts functions
* Refactor key stores to use key address as main identifier
  while keeping the UUID.
* Use key address as file/dir names instead of UUID
2015-01-26 04:30:17 +01:00
sveneh
d0440eef25 fixes 2015-01-25 23:28:47 +01:00
sveneh
5deca66a7d fixes 2015-01-25 23:15:41 +01:00
sveneh
58ec49a34d added EC2 provisioning, optimised docker for EC2, added python and
cppjit client (python not yet working)
2015-01-25 22:52:38 +01:00
Gav Wood
d223ac0379 Additional work on the JS stuff to make it more similar to Solidity. 2015-01-25 13:43:36 -08:00
Gav Wood
113a3809ab Fix string outputs.
Auto collapse for < 2 returns.
2015-01-24 18:23:39 -08:00
Gav Wood
fb34c6c7b9 Auto select call or transact depending on constness. 2015-01-24 18:09:35 -08:00
Gav Wood
7869294a26 Fixes to ethereum.js and standard.js. 2015-01-24 17:42:49 -08:00
Gav Wood
61a0158877 Vanity addresses in AZ.
Fixes to ethereum.js
eth.flush()
2015-01-24 16:46:46 -08:00
wanderer
fa93480d9a added addressbook 2015-01-24 19:45:53 -05:00
wanderer
063f69d51d added local 2015-01-24 19:32:26 -05:00
obscuren
c54a85ee64 Reworking browser 2015-01-25 00:55:33 +01:00
obscuren
48083608b5 Updated readme with badges 2015-01-24 19:09:29 +01:00
obscuren
393a6c5edf Gitter link 2015-01-24 18:48:19 +01:00
obscuren
0d96528d2f Skip for travis 2015-01-24 18:46:35 +01:00
obscuren
2ba54a69be skipping for travis 2015-01-24 18:40:03 +01:00
winsvega
382694f593 Transaction Tests
New State Tests
2015-01-23 20:27:51 +03:00
Paweł Bylica
94106cc41f JitVm code cleanups & refactoring. Some memory copies eliminated (i.e. in SHA3 calculation) 2015-01-23 16:45:22 +01:00
Paweł Bylica
3aa0410f6e Merge remote-tracking branch 'upstream/develop' into pr/evmjit 2015-01-23 15:37:37 +01:00
CJentzsch
52e174b1f7 make money with transaction gas overflow 2015-01-23 15:23:56 +01:00
obscuren
7a894e3738 Merge branch 'develop' into jsonrpc 2015-01-23 14:29:01 +01:00
CJentzsch
fd450b7f9a python fail 2015-01-23 12:04:39 +01:00
CJentzsch
04b611df1c python fails 2015-01-23 09:57:49 +01:00
CJentzsch
64fc464e03 add python fail 2015-01-22 23:14:12 +01:00
obscuren
d792e95c21 Merge branch 'Gustav-Simonsson-import_presale_keys' into develop 2015-01-22 22:42:52 +01:00
obscuren
a125b0fbc3 Merge branch 'import_presale_keys' of https://github.com/Gustav-Simonsson/go-ethereum into Gustav-Simonsson-import_presale_keys
Conflicts:
	crypto/crypto.go
2015-01-22 22:42:39 +01:00
obscuren
a216225827 Merge branch 'pr/evmjit' of https://github.com/chfast/go-ethereum into chfast-pr/evmjit 2015-01-22 21:47:36 +01:00
obscuren
0dfe511370 Use curve params instead of hardcoded 32 bytes 2015-01-22 18:15:11 +01:00
obscuren
d4cc2d3503 Pad private key when signing & length check for hashes in sign 2015-01-22 18:12:05 +01:00
Paweł Bylica
d5f38f5690 JitVM: the EVM JIT bridge 2015-01-22 18:00:15 +01:00
Marek Kotewicz
c01f0ae825 Merge commit 'b1971f46cce7d21be5f6277c9f8c406a0d195f78' into natspec 2015-01-22 17:57:53 +01:00
Marek Kotewicz
81bbe8c93b simplified synchronous polling 2015-01-22 17:57:26 +01:00
CJentzsch
26e84de180 cppjit fail 2015-01-22 17:27:02 +01:00
CJentzsch
b4e7a5b1c6 python fail 2015-01-22 17:14:50 +01:00
CJentzsch
7f1d2b28c1 cppjit failure 2015-01-22 16:36:43 +01:00
Marek Kotewicz
29fa57e9b3 natspec.js updated to use sync api 2015-01-22 15:38:48 +01:00
Marek Kotewicz
13f39afbdd Merge commit '93fa6855afad7a7eb86e49efe384372a6060da35' into natspec 2015-01-22 15:33:47 +01:00
Marek Kotewicz
3073511e30 not parsing transaction output 2015-01-22 15:32:52 +01:00
Marek Kotewicz
6c4432d417 Merge commit 'b32dedc5b54f853cf63bb2663c8bca6aa4272b0b' into natspec 2015-01-22 15:18:59 +01:00
Marek Kotewicz
e45db42e94 fixed contract.js 2015-01-22 15:18:21 +01:00
Marek Kotewicz
375ca542ab Merge commit '8e3ba3a4285cc7e902a018196b3849df56944dd0' into natspec 2015-01-22 14:38:04 +01:00
Marek Kotewicz
0202b05a5d implicit solidity method call 2015-01-22 14:37:34 +01:00
CJentzsch
ab0473ef93 failing python test 2015-01-22 14:12:46 +01:00
Marek Kotewicz
d6a92b18d4 fixed natspec example 2015-01-22 13:39:32 +01:00
Marek Kotewicz
5e623f14f3 Merge commit 'cdd7af2a6e87363d0ff7d2528f9d9b521bf2ef20' into natspec 2015-01-22 13:06:11 +01:00
Marek Kotewicz
22c77c607e qt sync provider 2015-01-22 13:04:28 +01:00
obscuren
b777d6aa3f UI Updates
* Browser now has tabs
* Fixed a callback issue
2015-01-22 12:35:31 +01:00
CJentzsch
4b3e56ec23 failing python test 2015-01-22 12:17:52 +01:00
obscuren
4df2e1ef5c updated tests 2015-01-22 00:37:58 +01:00
obscuren
67f9783e6a Moved obscuren secp256k1-go 2015-01-22 00:35:00 +01:00
obscuren
6eaa404187 Moved sha3 from obscuren 2015-01-22 00:25:00 +01:00
obscuren
0045ce4cde Future blocks not allowed 2015-01-22 00:24:30 +01:00
obscuren
465b0a79d8 Updated browser & pass view to callback function 2015-01-22 00:24:20 +01:00
Marek Kotewicz
ad8e92e9c6 Merge commit 'eb4984c0d036c1420e782ca136810e851e33fb37' into natspec 2015-01-21 21:54:51 +01:00
Marek Kotewicz
edfb874527 changes in filter.js (not yet working) 2015-01-21 21:54:03 +01:00
Marek Kotewicz
c2d9c1a6f1 toDecimal/fromDecimal is using bignumber.js now 2015-01-21 21:35:15 +01:00
Marek Kotewicz
81a5813270 removed unused pieces of code 2015-01-21 21:24:40 +01:00
Marek Kotewicz
08e2696627 removed send queues from providermanager 2015-01-21 21:22:05 +01:00
Marek Kotewicz
c9693b4746 contract.html example is working with sync api 2015-01-21 21:12:07 +01:00
Marek Kotewicz
ceb4357a8d sync api tests running, removed unused pieces of code 2015-01-21 20:43:20 +01:00
Marek Kotewicz
fc986a3fbe removed unused providers 2015-01-21 20:30:32 +01:00
Marek Kotewicz
0d2cccc2ce http sync api 2015-01-21 20:29:02 +01:00
Gustav Simonsson
8af42d42da CamelCase aesCBCDecrypt 2015-01-21 19:08:05 +01:00
Marek Kotewicz
81ff253e68 Merge commit 'c4638ba3edbd14677da5441d61f7845668df2b22' into natspec 2015-01-21 18:58:33 +01:00
Marek Kotewicz
e68f8e79ea natspec changes 2015-01-21 18:58:13 +01:00
Marek Kotewicz
e1fcffcc81 gulp 2015-01-21 18:58:01 +01:00
Marek Kotewicz
f3e78e50ff changes to for natspec 2015-01-21 18:56:30 +01:00
Taylor Gerring
c14900dbb0 Add initial P2P json logs 2015-01-21 11:47:21 -06:00
Taylor Gerring
0aa76d3e5b Rename jsonlogger method 2015-01-21 11:45:30 -06:00
Taylor Gerring
622bfd4f08 Check LogSystem type 2015-01-21 10:58:09 -06:00
Taylor Gerring
1077109e11 Add JsonLogger type 2015-01-21 10:57:29 -06:00
Taylor Gerring
ed7d7b405e Split file cleanup 2015-01-21 10:26:54 -06:00
Taylor Gerring
41d80ba17b Add JsonLevel log level 2015-01-21 10:18:46 -06:00
Taylor Gerring
bdf99e0981 Add LogFormat flag 2015-01-21 10:17:07 -06:00
Taylor Gerring
acdc19d1b7 Add rawLogSystem 2015-01-21 10:16:15 -06:00
Taylor Gerring
7f9c335487 Split into multiple files 2015-01-21 10:04:11 -06:00
Gustav Simonsson
1f8290ca44 Add ImportPreSaleKey
* ImportPreSaleKey takes a KeyStore, a presale key JSON (e.g. file content)
  and a password string. It stores the key in the given key store.
* Refactored common AES decryption and moved some functions to crypto.go
2015-01-21 16:35:43 +01:00
Taylor Gerring
215780ab56 Move GetRequestReply to EthereumApi
Off of jsonWrapper
2015-01-20 13:58:51 -06:00
Taylor Gerring
a6d4ce2630 Move argument types to separate file 2015-01-20 13:57:51 -06:00
Taylor Gerring
0c77a96249 Move websockets out of cmd/util 2015-01-20 13:40:24 -06:00
Taylor Gerring
d92fde6980 Merge branch 'develop' into jsonrpc 2015-01-20 13:22:38 -06:00
obscuren
87f50659db fixed url bug in browser 2015-01-20 18:42:29 +01:00
Marek Kotewicz
689630d261 Merge commit '53b4fda16d0b191be8ab986379a328aa38aaf916' into natspec 2015-01-20 17:48:08 +01:00
Marek Kotewicz
848c54dc47 _currentAbi object 2015-01-20 17:46:37 +01:00
obscuren
9845029a75 StdVm by default 2015-01-20 15:49:12 +01:00
obscuren
375cc67ba6 Hide browser bar when coming from a DApp url 2015-01-20 15:48:38 +01:00
Marek Kotewicz
380c1522ac solidity methods "overloading" 2015-01-20 15:06:05 +01:00
obscuren
4dd7be7ed0 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-20 15:04:30 +01:00
Jeffrey Wilcke
12fad65991 Merge pull request #259 from Gustav-Simonsson/develop
KeyStore (Low level key functionality)
2015-01-20 15:04:21 +01:00
CJentzsch
be58138100 more SHA3 tests, and random failing tests for python 2015-01-20 10:33:26 +01:00
Marek Kotewicz
5c79ee4446 fixed natspec_contract.html example 2015-01-20 09:22:32 +01:00
Gustav Simonsson
d48140cab3 Address pull request comments
* Further simplify "constructor" function's allocation of structs
* Fix formatting
2015-01-19 22:12:22 +01:00
Gustav Simonsson
3cf038f300 Address pull request comments
* Allocate with composite literal instead of new
* Remove check of number of bytes read from rand
2015-01-19 20:24:30 +01:00
CJentzsch
dabbb6df65 Merge branch 'develop' of https://github.com/ethereum/tests into develop 2015-01-19 15:17:20 +01:00
CJentzsch
8871fb4e0e add python fail 2015-01-19 15:15:41 +01:00
sveneh
eecee75336 fixed sudo access 2015-01-19 15:10:08 +01:00
Marek Kotewicz
83505e61f3 Merge commit '2b4d38b9bf059014596e1ab00c99dc2ad4ab3761' into ethereumjs 2015-01-19 13:53:44 +01:00
Marek Kotewicz
6a58db66f7 parsing real, ureal values on output 2015-01-19 13:22:58 +01:00
Marek Kotewicz
af54832d24 encoding real on input 2015-01-19 12:59:29 +01:00
Marek Kotewicz
86b417e83f fixes for autoprovider 2015-01-19 11:36:41 +01:00
obscuren
f34838688e Minor browser improvements 2015-01-19 11:23:17 +01:00
obscuren
bcb1166e52 Added 0 key proof error
Private key \x00\x00...\x00 returns the _exact_ same public key as \x11
\x11...\x11. Currently investigating.
2015-01-19 11:22:56 +01:00
obscuren
8d1637f567 Moved connection errors to DebugDetail level 2015-01-19 11:21:46 +01:00
obscuren
b03614527b VmDebug => StdVm 2015-01-19 11:20:55 +01:00
obscuren
9b509f6478 Print error instead of returning for seed node err
Returning an error would indicate a complete failure initialising the
Ethereum backend. Instead we should print the message and continue.
2015-01-19 11:20:12 +01:00
obscuren
89c69a1d25 VmDebug => StdVm 2015-01-19 11:18:34 +01:00
Jeffrey Wilcke
06bfe19f05 Merge pull request #260 from fjl/rlp-encoder
rlp: allow encoding non-empty interface values
2015-01-19 10:59:35 +01:00
wanderer
6e8085b839 remove old requires 2015-01-18 22:14:53 -05:00
wanderer
f5ec2470db use require-all 2015-01-18 21:54:29 -05:00
obscuren
7394ee7c72 Fixed difficulty
Difficulty was broken when refactored.
2015-01-18 15:45:54 +01:00
Marek Kotewicz
b2d23b91e7 Merge pull request #32 from kumavis/patch-1
WebsocketProvider - fixed incorrect variable name
2015-01-18 00:30:08 +01:00
Marek Kotewicz
2ce109eb53 Merge commit '6a383d6ed3fb37cf6739f6ac441652adfdb70463' into ethereumjs 2015-01-17 15:45:11 +01:00
Marek Kotewicz
823fb2995b tests for parsing output array 2015-01-17 13:50:07 +01:00
Marek Kotewicz
1e2c1ae98a output parser string support 2015-01-17 13:39:19 +01:00
Marek Kotewicz
b457e88cd0 support for int array types[] 2015-01-17 02:14:40 +01:00
aaron
e97478cc1e WebsocketProvider - fixed incorrect variable name 2015-01-16 16:03:13 -08:00
Marek Kotewicz
2d8383d3c8 removed unused functions 2015-01-16 23:55:32 +01:00
Marek Kotewicz
1c4d8f36e4 Merge commit '29333fc213b62b27ef826616cf77430947fb6eab' into ethereumjs 2015-01-16 16:49:50 +01:00
Marek Kotewicz
e94da808cb default padding set to 32, separated to one variable 2015-01-16 16:46:14 +01:00
Marek Kotewicz
a1c0bb68dd fixed checking first bit for parsing int output 2015-01-16 16:40:26 +01:00
Marek Kotewicz
774e9d24a1 abi.js rounds down floating point input 2015-01-16 16:26:58 +01:00
Marek Kotewicz
9a264a4284 updated bower.json && package.json version, added bignumber.js to bower dependencies 2015-01-16 16:04:41 +01:00
Marek Kotewicz
0172939490 fixed #28 and other small node.js issues 2015-01-16 15:49:36 +01:00
obscuren
24613a60dc Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-16 14:51:47 +01:00
obscuren
acc8f7fadc Add defer rescued back in 2015-01-16 14:51:38 +01:00
Christoph Jentzsch
df335682e4 Merge pull request #48 from sveneh/develop
Testrunner deployment
2015-01-16 14:07:37 +01:00
Marek Kotewicz
de4ea8e6f4 Merge commit 'd876522bc0614fea3180a54be57bcb61784b352e' into ethereumjs 2015-01-16 12:07:48 +01:00
Marek Kotewicz
2c36d5ff45 big integers on abi.js output, tests 2015-01-16 11:58:26 +01:00
Marek Kotewicz
f1295b506d tests for bigintegers on input 2015-01-16 11:28:46 +01:00
Marek Kotewicz
fbcc6d0d25 BigNumber support 2015-01-16 10:47:43 +01:00
Felix Lange
fc92abec2c rlp: allow encoding non-empty interface values
This needs to be supported because []someInterface does occur sometimes.

Funny enough, the fix involves changes to the decoder. makeDecoder
cannot return an error for non-empty interfaces anymore because the type
cache builds both decoder and writer. Do the check at 'runtime' instead.
2015-01-15 23:35:26 +01:00
Jeffrey Wilcke
52bb149541 Merge pull request #257 from fjl/rlp-encoder
rlp: add functions for encoding
2015-01-15 22:28:48 +01:00
Gustav Simonsson
9caf32befe Update code comments 2015-01-15 19:58:38 +01:00
Gustav Simonsson
47d3b3dd58 Address pull request comments
* Remove flags field from key struct
* Change JSON struct fields from string to []byte
* Change GenerateNewKey API to take io.Reader for random source
* Remove mixing entropy source function
* Use testing Fatal in tests
2015-01-15 19:40:10 +01:00
Gustav Simonsson
a1c2749380 Address pull request comments
* Simplify scrypt constants with const block
* Add key store constructors and make their types private
* Simplify key store and file namings to be less Java Enterprise™
* Change test error logging to use t.Error(err)
* Reduce number of naked returns (just like my ex-gf)
* Simplify file reading path code
2015-01-15 19:40:10 +01:00
Gustav Simonsson
945798f913 Add new key_store interface and two new key stores
* Add new generic key_store interface
* Add new plaintext key store storing unprotected keys on disk
* Add new encrypted key store storing encrypted keys on disk
* Add new entropy mixing function using OS and go runtime sources
2015-01-15 19:40:10 +01:00
Marek Kotewicz
6d02c0d392 Merge commit '1a6dbeff6e86d65cae6d7db366cbaa4182eaff7f' into ethereumjs
Conflicts:
	libjsqrc/ethereumjs/dist/ethereum.js
	libjsqrc/ethereumjs/dist/ethereum.js.map
	libjsqrc/ethereumjs/dist/ethereum.min.js
	libjsqrc/ethereumjs/lib/abi.js
2015-01-15 17:27:07 +01:00
Marek Kotewicz
ec74fc05d4 gulp 2015-01-15 16:01:58 +01:00
Marek Kotewicz
46b932ccc0 negative integers support 2015-01-15 15:51:25 +01:00
Marek Kotewicz
f85f77f6cc fixed typos 2015-01-15 14:37:18 +01:00
Marek Kotewicz
6a4b4f3449 fixed readme 2015-01-15 14:30:34 +01:00
Marek Kotewicz
d0473d6d83 gulp 2015-01-15 11:40:04 +01:00
Marek Kotewicz
70bf1a5711 fixed typos 2015-01-15 11:39:02 +01:00
Marek Kotewicz
bacc5aa6d3 methodExists and propertyExists are now separated tests 2015-01-15 11:38:21 +01:00
CJentzsch
44a12cd070 python fail callcode (insufficient balance) 2015-01-15 11:13:20 +01:00
Felix Lange
29c46cdf34 rlp: fix Decode benchmarks 2015-01-15 11:12:39 +01:00
Felix Lange
552f5b2693 rlp: add functions for encoding
I'm reasonably confident that the encoding matches the output of
ethutil.Encode for values that it supports. Some of the tests have been
adpated from the Ethereum testing repository.

There are still TODOs in the code.
2015-01-15 11:00:19 +01:00
obscuren
d5d9746ca3 updated tests 2015-01-15 10:46:42 +01:00
CJentzsch
1287fc3266 add test with large data in callcreate 2015-01-15 09:47:55 +01:00
Lefteris Karapetsas
508f116738 Merge pull request #798 from LefterisJP/natspec_OnContractCreation
Natspec Popup Authentication on transaction
2015-01-15 01:37:52 +01:00
CJentzsch
a5946a969f update vmSystemOperationsTest 2015-01-14 22:38:33 +01:00
Marek Kotewicz
472ad43211 more comments 2015-01-14 20:36:26 +01:00
Marek Kotewicz
603c790213 next part of abi.js parsers tests and fixes 2015-01-14 20:29:20 +01:00
obscuren
62e0e18030 Changed public whisper api not to reveal temporary private keys 2015-01-14 18:12:18 +01:00
sveneh
6bb10ccc3b fixed testrunner 2015-01-14 18:06:28 +01:00
CJentzsch
d30ca5aa8c added a inputLimits tests (46725 test cases) 2015-01-14 17:55:49 +01:00
CJentzsch
489994054a re-add vmSystemOperationsTest 2015-01-14 17:53:26 +01:00
sveneh
fffd981058 uses docker in tesrunner 2015-01-14 17:53:13 +01:00
sveneh
9326d0a6dd Dockers for go, cpp 2015-01-14 17:03:37 +01:00
sveneh
74faa30af6 first version of automatic testrunner deployment. Uses ansible, vagrant
and virtualbox
2015-01-14 16:10:33 +01:00
Marek Kotewicz
b0a9bbf33a next part of abi.js docs 2015-01-14 14:19:54 +01:00
Marek Kotewicz
6b2ec23132 formatting bool tests and fixes 2015-01-14 14:06:29 +01:00
Marek Kotewicz
ed1cb9edca simplifid abi.js methods 2015-01-14 13:53:40 +01:00
Marek Kotewicz
17f2f12ce6 gulp 2015-01-14 12:01:24 +01:00
Marek Kotewicz
12bdb5f550 providers documentation 2015-01-14 12:01:11 +01:00
Marek Kotewicz
8d1f96cc0a few comments 2015-01-14 10:50:34 +01:00
Lefteris Karapetsas
a4049fb85c Cleaned up some unused functions 2015-01-14 09:28:52 +01:00
CJentzsch
762a93fec8 python fail 2015-01-14 09:21:49 +01:00
CJentzsch
f9e891909d cppjit failing on byte? 2015-01-14 09:15:47 +01:00
CJentzsch
a6e9bab298 python fail 2015-01-13 23:07:09 +01:00
CJentzsch
3f5a075280 python fail 2015-01-13 22:45:12 +01:00
obscuren
bb55307a9d Updated tests 2015-01-13 20:31:31 +01:00
Marek Kotewicz
422dc05bb0 ProviderManager separated to providermanager.js file 2015-01-13 18:40:01 +01:00
CJentzsch
ebf4686858 go create return different address 2015-01-13 18:30:26 +01:00
Marek Kotewicz
9a8f45ee30 Filter separated to filter.js file 2015-01-13 18:28:49 +01:00
CJentzsch
aca3181b7e more cpp-jit fails 2015-01-13 18:28:18 +01:00
CJentzsch
fd0230e5be cppjit fail 2015-01-13 18:20:08 +01:00
CJentzsch
0d25bb85d9 cpp-jit fail 2015-01-13 18:13:52 +01:00
Lefteris Karapetsas
dac93ed616 Natspechandler: Get function hash from transaction data 2015-01-13 17:54:09 +01:00
Marek Kotewicz
8b7d4b0c9e beginning of comments in web3 2015-01-13 17:05:05 +01:00
Taylor Gerring
499bc404e8 Stub missing UnmarshalJSON methods 2015-01-13 09:37:30 -06:00
Taylor Gerring
a81d835e4d cleanup 2015-01-13 09:37:08 -06:00
CJentzsch
54eaf239ac more failing tests 2015-01-13 16:29:04 +01:00
Taylor Gerring
961e4da7d8 Add support for CodeAt 2015-01-13 09:27:36 -06:00
Taylor Gerring
b178414a47 Added license headers 2015-01-13 09:13:43 -06:00
Lefteris Karapetsas
f54c90a0ba A first version of Natspec warning popup
- Runtime Contract code hash can now be retrieved from the Compiler

- Using the hash the Natspec handler stores and later retrieves Natspec
  JSON for a given contract.
2015-01-13 15:59:42 +01:00
Marek Kotewicz
ee167e53d1 test for parsing multiple methods description 2015-01-13 15:42:56 +01:00
obscuren
8f733461b3 Default datadir for mist is now shared with CLI (.ethereum) 2015-01-13 14:58:12 +01:00
obscuren
82beaabf6a Fixed consensus issue 2015-01-13 14:57:51 +01:00
CJentzsch
8d7ddf5299 new cppjit failures 2015-01-13 14:54:39 +01:00
CJentzsch
6fd011a3b6 cppjit fail 2015-01-13 14:16:47 +01:00
Marek Kotewicz
4056c046a7 tests... 2015-01-13 13:47:31 +01:00
obscuren
e3cad04dec Fixed whisper messages
* Whisper protocol wasn't properly suppling envelope slices
* Message history wasn't properly propagated
* Added 'Messages' method, filtering any current envelope with the
  supplied filter.
2015-01-13 13:36:44 +01:00
CJentzsch
a9930bfd87 first failing cppjit tests 2015-01-13 13:32:26 +01:00
Marek Kotewicz
1428dcee21 web3.contract -> web3.eth.contract 2015-01-13 13:03:40 +01:00
Marek Kotewicz
f3b71a73e3 removed unused line 2015-01-13 12:51:23 +01:00
Marek Kotewicz
380d9862c3 tests in progress, fixed utf characters conversion in toAscii 2015-01-13 12:49:10 +01:00
Gav Wood
b6c0e53d69 Auto-generated commits, too. 2015-01-13 11:06:43 +00:00
Gav Wood
e95bb34ea0 Fix for JS API formatting. 2015-01-13 11:04:31 +00:00
Marek Kotewicz
9e0de57a82 mocha test reporter 2015-01-13 11:29:19 +01:00
Marek Kotewicz
f6ff1f18b8 mocha reporter name starts with lower case letter 2015-01-13 11:21:58 +01:00
Marek Kotewicz
7595a5dfcb removed padding calculation from ethereum.js, padding is always 32 2015-01-13 11:15:44 +01:00
obscuren
1e5353824a updated tests 2015-01-13 10:32:02 +01:00
obscuren
4704a0a288 remove pre compiled for tests 2015-01-13 10:30:52 +01:00
CJentzsch
6a2e82a23d python failures, blockhash, invalid jump, invalid opcode 2015-01-13 09:17:56 +01:00
CJentzsch
1818dffaec call to precompiled contract and balance 2015-01-13 08:44:44 +01:00
Taylor Gerring
b2112729fa cleanup 2015-01-12 23:44:56 -06:00
Taylor Gerring
32bed50ba1 begin conversion to rpc over http
Per specification at
https://github.com/ethereum/wiki/wiki/Generic-JSON-RPC
2015-01-12 23:25:29 -06:00
Jeffrey Wilcke
5b561f434d Merge pull request #254 from chfast/pr/jitvm_stub
JitVm struct stub. Forwards calls to DebugVm.
2015-01-13 00:29:41 +01:00
obscuren
750d70c202 updated tests 2015-01-13 00:25:45 +01:00
obscuren
34689cb3f3 Added manual triggering of filters 2015-01-12 20:36:45 +01:00
Paweł Bylica
ba225017c4 JitVm struct stub. Forwards calls to DebugVm. 2015-01-12 19:40:14 +01:00
Jeffrey Wilcke
507241f73c shh getMessage => getMessages 2015-01-12 18:34:37 +01:00
CJentzsch
55c689722a addmod mulmod div by zero tests 2015-01-12 16:25:37 +01:00
obscuren
8a1b51c716 updated tests 2015-01-12 16:13:30 +01:00
CJentzsch
dfe77eac84 remove wrong mulmod/addmod tests 2015-01-12 16:09:51 +01:00
obscuren
75cd9cd2de updated tests 2015-01-12 14:40:40 +01:00
CJentzsch
1aebe33a34 ADDMOD and MULMOD divison by zero 2015-01-12 14:27:08 +01:00
CJentzsch
d70a30c056 MULMOD with modul 0 gives division by zero error 2015-01-12 13:55:00 +01:00
obscuren
00348756bc updated tests 2015-01-12 13:49:47 +01:00
CJentzsch
2577b803f6 create should return 0 2015-01-12 13:22:18 +01:00
CJentzsch
928dde590c create with high value should fail and return 0 2015-01-12 13:08:43 +01:00
CJentzsch
5fbb24353a include invalid opcode 0x0c 2015-01-12 12:00:02 +01:00
obscuren
35fe4313d5 pre-pow 2015-01-12 10:19:27 +01:00
CJentzsch
9f0c292144 jump outside code 2015-01-12 09:36:56 +01:00
CJentzsch
d812c685c9 CODECOPY with size larger than codesize 2015-01-12 09:10:11 +01:00
Gav Wood
9a9987aeed Merge commit 'a1023a5dffee7c06e8b75a21f5c9b8826e820942' into develop
Conflicts:
	libjsqrc/ethereumjs/dist/ethereum.js.map
2015-01-11 18:18:05 +01:00
Gav Wood
5582901ca5 Various fixes to ethereum.js and client web API stuff. 2015-01-11 18:15:35 +01:00
Gav Wood
ded221fba2 Merge commit 'ab745d3b0eb89d67db1ed953020c665be3d072ed' into develop
Conflicts:
	libjsqrc/ethereumjs/.travis.yml
	libjsqrc/ethereumjs/README.md
	libjsqrc/ethereumjs/dist/ethereum.js
	libjsqrc/ethereumjs/dist/ethereum.js.map
	libjsqrc/ethereumjs/lib/abi.js
	libjsqrc/ethereumjs/package.json
2015-01-11 17:54:36 +01:00
Marek Kotewicz
ab745d3b0e updated readme 2015-01-11 17:23:03 +01:00
Marek Kotewicz
b915c7a870 updated readme 2015-01-11 17:13:32 +01:00
Marek Kotewicz
6c26255979 Merge branch 'tests' into develop 2015-01-11 17:12:37 +01:00
Marek Kotewicz
e2c4525da7 Merge branch 'master' into develop 2015-01-11 17:12:29 +01:00
Marek Kotewicz
e778e127d6 spec reporter instead of nyan 2015-01-11 17:04:30 +01:00
Marek Kotewicz
a4e6f0b3c6 fixed travis.yml && added nmp test script 2015-01-11 16:40:09 +01:00
Marek Kotewicz
048e7771fb Merge branch 'master' into tests 2015-01-11 16:36:38 +01:00
Marek Kotewicz
15c229300c updated package json 2015-01-11 16:36:07 +01:00
Marek Kotewicz
24814a4f0f Merge branch 'master' of https://github.com/ethereum/ethereum.js 2015-01-11 16:33:08 +01:00
Marek Kotewicz
6188e64473 Update README.md 2015-01-11 16:25:41 +01:00
Marek Kotewicz
c34b0c67a1 Update README.md 2015-01-11 16:23:06 +01:00
CJentzsch
a0008c3508 correct CREATE with zero sized init code 2015-01-10 23:51:54 +01:00
obscuren
7e6b72cb5c removed accidental qt dep 2015-01-10 18:09:57 +01:00
obscuren
e3da85faed Implemented filter for ws + fixes
* proper 0xhex
* filters fixed
* start of filter manager
* accounts for ws. Closes #246
2015-01-10 00:51:56 +01:00
obscuren
491c23a728 Moved the TD method from block processor. 2015-01-09 22:42:36 +01:00
obscuren
351516c57c Cast to string for hashable type 2015-01-09 22:23:33 +01:00
CJentzsch
e8a131e05c remove wrong tests 2015-01-09 21:38:57 +01:00
obscuren
8c7b764d47 updated tests 2015-01-09 21:18:34 +01:00
CJentzsch
bf798c8dec wrong memmory needed calculation for CREATE in cpp 2015-01-09 20:39:00 +01:00
CJentzsch
53dbdf3dd2 return input offset 2015-01-09 19:16:52 +01:00
obscuren
905b8cc82f mem fixes for vm. Changed uncle inclusion tests 2015-01-09 17:38:35 +01:00
CJentzsch
c674306973 big offset zero size for create 2015-01-09 17:33:41 +01:00
Marek Kotewicz
47687cf085 default padding changed to 0 2015-01-09 17:27:56 +01:00
CJentzsch
314220a00d big offset zero size for sha3 and return 2015-01-09 17:06:53 +01:00
Marek Kotewicz
29c60c000a Merge branch 'develop' into tests 2015-01-09 16:48:44 +01:00
obscuren
35f4bb96f3 Limit hashes. Closes #249 2015-01-09 16:44:09 +01:00
Marek Kotewicz
92f171ec99 rerun gulp 2015-01-09 16:40:55 +01:00
Marek Kotewicz
0933a79ab8 missing fromAscii 2015-01-09 16:38:26 +01:00
obscuren
b136b387a7 Merge branch 'ethersphere-develop' into develop 2015-01-09 16:34:49 +01:00
CJentzsch
dd866afc2e LOG0 no mem expansion despite large offset 2015-01-09 15:46:00 +01:00
obscuren
6eb455032c recover 2015-01-09 15:32:14 +01:00
obscuren
5c8c0ae04e Fixed size 0 bug 2015-01-09 15:30:46 +01:00
obscuren
a35be3a12a Merge branch 'develop' of https://github.com/ethersphere/go-ethereum into ethersphere-develop 2015-01-09 13:37:15 +01:00
obscuren
f9b0d1a8e7 Updated to new ethereum.js api 2015-01-09 13:36:47 +01:00
Marek Kotewicz
543a87c63f method signature length defined 2015-01-09 13:30:14 +01:00
obscuren
c9f566269b merged 2015-01-09 13:28:48 +01:00
obscuren
bfa12d75f8 new switch 2015-01-09 13:26:49 +01:00
Marek Kotewicz
b3eda29f41 Merge branch 'master' into tests 2015-01-09 13:07:34 +01:00
obscuren
18d8bf4b9c updated ethereum.js 2015-01-09 13:01:21 +01:00
obscuren
aee82d3196 removed 2015-01-09 13:00:37 +01:00
Marek Kotewicz
a5907a8239 Merge branch 'master' of https://github.com/ethereum/ethereum.js 2015-01-09 12:57:03 +01:00
Marek Kotewicz
2a6c84984a version upgraded 2015-01-09 12:55:46 +01:00
Marek Kotewicz
0538c11576 sha3 method signature 2015-01-09 12:55:04 +01:00
obscuren
012a1c2533 Updated ethereum.js 2015-01-09 12:45:09 +01:00
Jeffrey Wilcke
c9015e2e04 module var fix 2015-01-09 12:44:11 +01:00
Jeffrey Wilcke
07fba274b1 module var fix 2015-01-09 12:43:45 +01:00
obscuren
585f259b63 Support input from args 2015-01-09 12:04:54 +01:00
CJentzsch
b227000f19 add blockhash vm tests 2015-01-09 10:56:40 +01:00
zelig
b3161f5803 Merge remote-tracking branch 'upstream/develop' into develop 2015-01-09 06:21:47 +00:00
zelig
5a9952c7b4 major blockpool change
- the spec says response to getBlockHashes(from, max) should return all hashes starting from PARENT of from. This required major changes and results in much hackier code.
- Introduced a first round block request after peer introduces with current head, so that hashes can be linked to the head
- peerInfo records currentBlockHash, currentBlock, parentHash and headSection
- AddBlockHashes checks header section and creates the top node from the peerInfo of the best peer
- AddBlock checks peerInfo and updates the block there rather than in a node
- request further hashes once a section is created but then no more until the root block is found (so that we know when to stop asking)
- in processSection, when root node is checked and receives a block, we need to check if the section has a parent known to blockchain or blockPool
- when peers are switched, new peer launches a new requestHeadSection loop or activates its actual head section, i.e., the section for it currentBlockHash
- all tests pass
2015-01-09 06:03:45 +00:00
zelig
8ecc9509b3 add ErrInsufficientChainInfo error 2015-01-09 06:03:32 +00:00
zelig
f72cb28b0f adapt unit tests to spec
- AddBlockHashes ignores the first hash (just used to match getBlockHashes query) sends the rest as blocksMsg
- new test TestPeerWithKnownParentBlock
- new test TestChainConnectingWithParentHash
- adapt all other tests to the new scheme
2015-01-09 05:57:09 +00:00
zelig
43ed0ed1ae no need to call AddBlockHashes when receiving new block 2015-01-09 05:06:04 +00:00
zelig
69dfca2feb minor changes in integration tests 2015-01-09 05:04:32 +00:00
zelig
3bdf28c1fe GetBlockHashesFromHash(hash, max) gives back max hashes starting from PARENT of hash 2015-01-09 05:03:26 +00:00
obscuren
c8a4c04b36 err 2015-01-08 23:15:46 +01:00
CJentzsch
ac2ce00e28 add random test which fail on go 2015-01-08 22:41:40 +01:00
obscuren
26f066f0c7 just enable by default 2015-01-08 22:18:23 +01:00
CJentzsch
f73731d5a4 failing python tests 2015-01-08 22:10:55 +01:00
obscuren
4a0ade4788 Fixed some whisper issues 2015-01-08 21:41:32 +01:00
Marek Kotewicz
c397e350f4 mocha opts file && init of parser tests 2015-01-08 20:24:30 +01:00
Marek Kotewicz
b6058a837f methods existance tests in progress 2015-01-08 19:59:03 +01:00
Marek Kotewicz
5518022a5d mocha test init 2015-01-08 19:35:32 +01:00
obscuren
5f958a582d fixed other tests to use hashes as well 2015-01-08 16:48:39 +01:00
obscuren
e27237a03a Changed to use hash for comparison
DeepReflect would fail on TD since TD isn't included in the original
block and thus the test would fail.
2015-01-08 16:45:51 +01:00
CJentzsch
9b9f7cffde long jumpdest list 2015-01-08 16:39:57 +01:00
obscuren
ee84b20247 Reworking GUI interaction. Fixed javascript inject. Closes #132 2015-01-08 16:38:24 +01:00
obscuren
b25126a277 Minor fixed and additions for block proc
* Path check length
* Genesis include TD
* Output TD on last block
2015-01-08 16:37:06 +01:00
Marek Kotewicz
807ec60e63 missing jshint ignore 2015-01-08 15:43:22 +01:00
Marek Kotewicz
f9cc090473 fixed example 2015-01-08 15:31:46 +01:00
CJentzsch
eb3451142e sdiv int256.min -1 2015-01-08 15:29:07 +01:00
CJentzsch
73ba8a48ab sdiv with negative fractional result 2015-01-08 15:14:20 +01:00
Marek Kotewicz
2f3384947b version upgrade 2015-01-08 15:13:43 +01:00
Marek Kotewicz
a8dde17146 fixes for node.js 2015-01-08 15:11:20 +01:00
CJentzsch
1ad28d0494 add valid jumpdest with jumpdest at beginning 2015-01-08 13:04:29 +01:00
obscuren
db4aaedcbd Moved ptrie => trie. Removed old trie 2015-01-08 11:47:04 +01:00
CJentzsch
08a72727cd more dynamic jump tests 2015-01-08 11:23:39 +01:00
CJentzsch
0aa66f02ef jump into push data is forbidden 2015-01-07 22:33:25 +01:00
CJentzsch
b94c610e49 jumpdests tests, OOG at max call depth, ... 2015-01-07 15:54:14 +01:00
Marek Kotewicz
5208bb32f1 gulpfile modifications, default build set to dev 2015-01-07 14:13:29 +01:00
obscuren
982c812e81 Read directly from stdin 2015-01-07 13:38:28 +01:00
obscuren
c1908c7d91 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-01-07 13:22:29 +01:00
Jeffrey Wilcke
59c5a2f519 Merge pull request #244 from fjl/license-tool
Generated License Headers
2015-01-07 13:22:22 +01:00
Felix Lange
1d05027ba2 a few fixes for the license tool 2015-01-07 13:17:50 +01:00
obscuren
fed3e6a808 Refactored ethutil.Config.Db out 2015-01-07 13:17:48 +01:00
Felix Lange
ec7cb9981c add license tool and initial mailmap 2015-01-07 12:56:46 +01:00
CJentzsch
99e6e00c34 check address input greater then 2**160 2015-01-07 11:17:09 +01:00
Marek Kotewicz
df4d7846e5 Merge pull request #22 from debris/strings
strings, real, ureal paddings and implicit paddings for uint, int and hash
2015-01-07 11:16:46 +01:00
Marek Kotewicz
6c160adab3 Merge pull request #21 from debris/master
fixed gulp build
2015-01-07 11:16:27 +01:00
CJentzsch
55f6fe4f7b check address input greater then 2**160 2015-01-07 11:16:09 +01:00
obscuren
032ab66529 Added version flag 2015-01-07 01:21:55 +01:00
obscuren
60d9611c23 Fixed tests where txs weren't properly removed 2015-01-07 01:21:45 +01:00
Marek Kotewicz
210682b734 real, ureal paddings and implicit paddings for uint, int and hash 2015-01-06 21:50:09 +01:00
obscuren
f0ec751237 Updated tests 2015-01-06 20:22:31 +01:00
CJentzsch
6ce9799370 added BlockHash tests 2015-01-06 20:21:11 +01:00
Marek Kotewicz
1d139f7a0b solidity string support 2015-01-06 18:29:38 +01:00
CJentzsch
93bf0d6f4e zeroMemExpansionTests 2015-01-06 16:33:47 +01:00
CJentzsch
dc087ffa97 more jumpdest test 2015-01-06 14:48:57 +01:00
obscuren
25e6c4eff8 Adjusted difficulty and skip get tx messages 2015-01-06 14:02:47 +01:00
obscuren
a76b7dadae Don't auto push jeff ... 2015-01-06 13:39:01 +01:00
Marek Kotewicz
b6232cfdd1 fixed tabs 2015-01-06 13:37:02 +01:00
Marek Kotewicz
a2a77172a6 bring back todos 2015-01-06 13:32:04 +01:00
obscuren
1b903767e0 Fixed port num 2015-01-06 13:31:52 +01:00
obscuren
4e7f53adf0 Changed to poc-8 & removed GetTxs 2015-01-06 13:31:08 +01:00
Marek Kotewicz
8c1b26889a renamed example/index.html -> example/balance.html 2015-01-06 13:27:43 +01:00
Marek Kotewicz
af9242f4cc fixed gulp build 2015-01-06 13:26:51 +01:00
obscuren
564f02aa2b Fixed tests 2015-01-06 13:18:09 +01:00
Jeffrey Wilcke
3b8725e0f5 Merge pull request #239 from fjl/grab-bag
Grab bag of fixes
2015-01-06 13:13:16 +01:00
Felix Lange
3caa4ad1ba p2p: improve test for peers message
The test now checks that the number of of addresses is correct
and terminates cleanly.
2015-01-06 12:23:38 +01:00
Felix Lange
b0ff946b55 p2p: move peerList back into baseProtocol
It had been moved to Peer, probably for debugging.
2015-01-06 12:23:38 +01:00
Felix Lange
eb0e7b1b81 eth, p2p: remove EncodeMsg from p2p.MsgWriter
...and make it a top-level function instead.

The original idea behind having EncodeMsg in the interface was that
implementations might be able to encode RLP data to their underlying
writer directly instead of buffering the encoded data. The encoder
will buffer anyway, so that doesn't matter anymore.

Given the recent problems with EncodeMsg (copy-pasted implementation
bug) I'd rather implement once, correctly.
2015-01-06 12:23:38 +01:00
Felix Lange
36e1e5f151 cmd/peerserver: add some command line switches 2015-01-06 12:23:37 +01:00
Felix Lange
4c8c115a76 cmd/peerserver: use NoDial, don't use seed peers 2015-01-06 12:23:37 +01:00
Felix Lange
545e14691b cmd/peerserver: fix for new client identity type 2015-01-06 12:23:37 +01:00
Felix Lange
be97785856 cmd/evm: add dummy implementation for GetHash
Fixes the build. AFAIK evm does not bother keeping a chain and
cannot provide a real implementation.
2015-01-06 12:23:37 +01:00
Felix Lange
fde0ddb324 cmd/rlpdump: remove stray return 2015-01-06 12:23:36 +01:00
obscuren
117f66e823 Added license headers 2015-01-06 12:13:57 +01:00
CJentzsch
63d61cb380 added blockhash tests which return 0 2015-01-06 11:50:57 +01:00
obscuren
a26aecdfdb Updated WS API. Fixes #219. Closes #220 2015-01-06 11:44:22 +01:00
obscuren
47e6b2cef8 Allow extra to be set for mined blocks 2015-01-06 00:19:07 +01:00
obscuren
cc7f8f58e8 Limit block extra to 1024 2015-01-06 00:17:05 +01:00
obscuren
c9985bf563 Fixed peer window. Minor tweaks and fixes 2015-01-05 19:53:53 +01:00
Jeffrey Wilcke
22c0c5465a Merge pull request #235 from fjl/rlpdump
fixes for rlpdump
2015-01-05 17:48:04 +01:00
Jeffrey Wilcke
2cfbf76db8 Merge pull request #233 from fjl/rlpdump
cmd/rlpdump: new helper command
2015-01-05 17:42:52 +01:00
Felix Lange
ec4dee0fcd cmd/rlpdump: remove extra buffer 2015-01-05 17:42:20 +01:00
obscuren
952287db29 Updated tests 2015-01-05 17:40:23 +01:00
obscuren
b99b2c446c Precompiled contract & Depth change
* Added pre-compiled contract 0x04 (mem cpy)
* Changed depth error to return the gas instead of consuming
2015-01-05 17:39:42 +01:00
Felix Lange
04c0f7e15c cmd/rlpdump: add license header and synopsis 2015-01-05 17:38:39 +01:00
CJentzsch
128d417f47 protocol update about call depth 2015-01-05 17:26:11 +01:00
obscuren
d001479a47 unclean shutdown for now 2015-01-05 17:15:25 +01:00
obscuren
f16810c48e added shh back in 2015-01-05 17:12:52 +01:00
obscuren
66b05433b6 Merge branch 'ethersphere-eth.blockpool' into poc8 2015-01-05 17:12:19 +01:00
obscuren
6abf8ef78f Merge 2015-01-05 17:10:42 +01:00
Felix Lange
b907a5d765 cmd/rlpdump: new helper command 2015-01-05 13:45:38 +01:00
CJentzsch
0ace267c4f clear random tests due to protocol changes 2015-01-05 13:37:01 +01:00
obscuren
b0854fbff5 BlockManager => BlockProcessor 2015-01-05 11:22:02 +01:00
obscuren
c1dee15144 BlockManager => BlockProcessor 2015-01-05 00:18:44 +01:00
obscuren
987119cd4a Merge branch 'poc8' into docbranch 2015-01-04 14:39:15 +01:00
obscuren
08b03afa4b Version bump 2015-01-04 14:34:04 +01:00
obscuren
09841b1c9b Cleaned up some of that util 2015-01-04 14:20:16 +01:00
obscuren
bd0c267cbe Cleanup old code 2015-01-03 17:29:08 +01:00
obscuren
ca1b2a1a91 Changed prev_hash to block_hash, state transition now uses vm env
* PREVHASH => BLOCKHASH( N )
* State transition object uses VMEnv as it's query interface
* Updated vm.Enviroment has GetHash( n ) for BLOCKHASH instruction
* Added GetHash to xeth, core, utils & test environments
2015-01-03 17:18:43 +01:00
obscuren
1b90567546 Merge branch 'docbranch' of github.com-obscure:ethereum/go-ethereum into docbranch 2015-01-03 12:41:19 +01:00
obscuren
16f417f5af Fixed bug where logging could crash client during tx adding 2015-01-02 22:19:58 +01:00
obscuren
5c82fdc243 Make sure that the object exists 2015-01-02 22:18:23 +01:00
obscuren
55e55826ee Changed JUMP(I) behaviour.
* All jumps must land on a JUMPDEST instruction byte.
* The byte may not be part of a PUSH*
2015-01-02 17:35:55 +01:00
obscuren
530953050a Updated protocol version 2015-01-02 17:35:00 +01:00
obscuren
24f89f8bd9 Squashed commit of the following:
commit 2e75a216c7
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Jan 2 17:05:20 2015 +0100

    new jumpdest interpretation

commit 7aab71f656
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Jan 2 16:55:59 2015 +0100

    added complete exp tests

commit 3340f4dbfc
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Jan 2 14:26:55 2015 +0100

    retuning gas prices of recursive bombs to test limits

commit 456b5791bb
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Jan 2 14:08:55 2015 +0100

    more init code, systemoperations and transaction tests

commit 1f5552feb4
Author: wanderer <mjbecze@gmail.com>
Date:   Mon Dec 29 20:11:41 2014 -0500

    added balance tests

commit 4d37c1cea2
Author: wanderer <mjbecze@gmail.com>
Date:   Sat Dec 27 20:30:42 2014 -0500

    added trie tests for branches on
    detel

commit 2fdc7bfbd1
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Sat Dec 27 22:46:21 2014 +0100

    more random tests

commit 98fe404e6a
Merge: aafb5f7 8c34e93
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Tue Dec 23 16:36:13 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit aafb5f768b
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Tue Dec 23 16:35:35 2014 +0100

    first failing random tests

commit 8c34e93b51
Author: wanderer <mjbecze@gmail.com>
Date:   Tue Dec 23 10:01:20 2014 -0500

    added stackOverFlow test to initCode

commit 8a285d258a
Merge: a4ccc6e 6567f9d
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Sat Dec 20 13:08:18 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit a4ccc6e72e
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Sat Dec 20 13:07:54 2014 +0100

    CALLCODE <-> RETURN

commit 6567f9d0b2
Author: wanderer <mjbecze@gmail.com>
Date:   Thu Dec 18 23:39:30 2014 -0500

    add refund tests

commit 07cfec33f8
Author: wanderer <mjbecze@gmail.com>
Date:   Thu Dec 18 18:30:46 2014 -0500

    added trieTest anyorder

commit 86c3b8cfad
Merge: b227b10 71b5d6e
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 18 21:43:06 2014 +0100

    Merge branch 'develop' of https://github.com/ethereum/tests into develop

commit b227b10f5d
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 18 21:42:41 2014 +0100

    more refund tests

commit 71b5d6e0a3
Author: wanderer <mjbecze@gmail.com>
Date:   Thu Dec 18 12:13:55 2014 -0500

    updated index.js

commit aefcb9716e
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 18 09:31:43 2014 +0100

    transaction tests and refund tests

commit ccbf120c36
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Sat Dec 13 23:03:21 2014 +0100

    added stInitCodeTest.json

commit cbf5afdef8
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Dec 12 22:03:54 2014 +0100

    update recursive create

commit a70c4b51a4
Author: Gav Wood <i@gavwood.com>
Date:   Fri Dec 12 17:22:41 2014 +0100

    Fix return tests.

commit f146467607
Author: Gav Wood <i@gavwood.com>
Date:   Fri Dec 12 16:33:51 2014 +0100

    Add test file.

commit c2bd8d1d7a
Author: Gav Wood <i@gavwood.com>
Date:   Fri Dec 12 14:27:38 2014 +0100

    Alter "" to null.

commit ce6344b770
Author: Gav Wood <i@gavwood.com>
Date:   Fri Dec 12 14:22:19 2014 +0100

    Trie testing.

commit 779f25d36c
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 11 22:59:56 2014 +0100

    first random test

commit 68175386c0
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 11 21:34:50 2014 +0100

    update gas prices

commit ad322fbb58
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 8 06:01:17 2014 +0100

    Log as array

commit f989f42618
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Dec 5 15:12:12 2014 +0100

    state log tests

commit 4bc65d1129
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 4 18:18:49 2014 +0100

    add calldataload, codecopy, extcodecopy tests

commit 12cfae18e3
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 4 15:57:56 2014 +0100

    add calldataload test

commit 086caf3701
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Wed Dec 3 08:31:03 2014 +0100

    protocol update (CALLCODE <-> RETURN), topics in log are arrays not sets

commit e6c92673b9
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 21:14:08 2014 +0100

    update state tests with logs

commit 4089b809fb
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 18:19:40 2014 +0100

    update gas costs

commit cfdca62277
Merge: 2e5175e f59f89d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 18:04:51 2014 +0100

    Merge pull request #42 from negedzuregal/fix

    vmTest fix

commit f59f89d876
Author: alon muroch <alonmuroch@gmail.com>
Date:   Mon Dec 1 16:18:12 2014 +0100

    vmEnvironmentalInfoTest CALLDATACOPY, CODECOPY, EXTCODECOPY fix

commit 68da13fe3e
Author: alon muroch <alonmuroch@gmail.com>
Date:   Mon Dec 1 11:10:57 2014 +0100

    vmArithmeticTest exp fix

commit 2e5175e818
Author: ethers <ethereum@outlook.com>
Date:   Sun Nov 30 19:55:51 2014 +0100

    add vmLogTest

commit b5b9408e64
Author: Heiko Heiko <heiko@heiko.org>
Date:   Sun Nov 30 16:27:27 2014 +0100

    updated genesis to new header w/o min_gas_price

commit 8e69fbfa98
Author: ethers <ethereum@outlook.com>
Date:   Fri Nov 21 17:42:05 2014 -0800

    add special tests

commit 90f4f942e6
Author: ethers <ethereum@outlook.com>
Date:   Thu Nov 20 19:01:09 2014 -0800

    typo

commit c5e5228e0d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 20 17:04:06 2014 +0100

    Removed log,post,out,gas,callcreates if exception occured

commit 9c0232a2b9
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 18:19:05 2014 +0100

    MakeMoney test

commit 3ba0007e86
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 16:23:04 2014 +0100

    Added log sections in all vmtests + log tests

commit d84be4fe07
Merge: c8497ab 76d2542
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 10:00:24 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit c8497ab257
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 10:00:02 2014 +0100

    new push32 test and renaming

commit 76d25420e1
Author: ethers <ethereum@outlook.com>
Date:   Mon Nov 17 18:59:30 2014 -0800

    adding test

commit 0be275e757
Merge: 1d42d1d d90868c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 22:47:34 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 1d42d1d7c6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 22:46:51 2014 +0100

    fix ecrecover2

commit d90868c307
Merge: 1f38c8c 6dbcf6b
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 20:26:59 2014 +0100

    Merge pull request #39 from wanderer/develop

    added test for max call depth on creation

commit 6dbcf6b0d6
Author: wanderer <mjbecze@gmail.com>
Date:   Mon Nov 17 14:06:43 2014 -0500

    spelling fix

commit 6fc07a7f81
Author: wanderer <mjbecze@gmail.com>
Date:   Sat Nov 15 21:39:16 2014 -0500

    added test for max call depth on creation

commit 1f38c8c0a2
Merge: 279b284 cd85ca1
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 20:10:21 2014 -0500

    Merge pull request #38 from wanderer/develop

    updated test  'jeff' in trietest.json

commit cd85ca17ed
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 19:59:34 2014 -0500

    Update trietest.json

commit 279b284c0d
Merge: 89675a7 6cae937
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 17:43:49 2014 -0500

    Merge pull request #37 from wanderer/develop

    Update trietest.json

commit 6cae937e5e
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 17:20:03 2014 -0500

    Update trietest.json

    'emptyValues' should have the same root as 'puppy'

commit 89675a7153
Merge: f1de1cc 32f0c47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 23:17:49 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit f1de1cc97a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 23:17:13 2014 +0100

    Fix CallRecursiveBomb2

commit 32f0c47c68
Merge: ab50e76 3da90d0
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Thu Nov 13 15:26:49 2014 -0500

    Merge pull request #36 from wanderer/develop

    converted back to arrary format

commit ab50e76652
Merge: d06b792 78f1e4a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 07:52:35 2014 +0100

    Merge pull request #35 from ethers/delOld

    rename tests since they are valid opcodes that exist

commit 3da90d01f6
Author: wanderer <mjbecze@gmail.com>
Date:   Wed Nov 12 22:22:47 2014 -0500

    converted back to arrary format

commit 78f1e4a945
Author: ethers <ethereum@outlook.com>
Date:   Wed Nov 12 19:11:06 2014 -0800

    rename tests since they are valid opcodes that exist

commit d06b792cd0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 12 07:00:17 2014 +0100

    minor change in CallSha256_1_nonzeroValue test

commit d434ecdcc3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 12 06:56:31 2014 +0100

    Added CallSha256_1_nonzeroValue test

commit 2c06f34cc0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 18:10:26 2014 +0100

    Store return value of call to precompiled contracts

commit 4b0c3b29ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 17:51:14 2014 +0100

    Fix gas cost for OOG calls

commit 63bcca7604
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue Nov 11 08:59:19 2014 +0100

    fix: genesis test

commit 6e0310c1ea
Merge: 30c266c 2927763
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 08:34:36 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 30c266caff
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 08:33:59 2014 +0100

    jump to position outside code stops execution

commit 2927763d68
Author: ethers <ethereum@outlook.com>
Date:   Mon Nov 10 14:10:22 2014 -0800

    RandomTests were removed

commit a0fa91b2b8
Merge: 6092484 fcba866
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 10 22:22:05 2014 +0100

    Merge branch 'develop' of https://github.com/ethereum/tests into develop

commit 60924843f0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 10 22:21:37 2014 +0100

    Unintended Exceptions work like OOG

commit fcba866721
Author: ethers <TODO>
Date:   Thu Nov 6 14:19:59 2014 -0800

    add StateTests

commit a441074ba4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 17:54:36 2014 +0100

    Updated precompiled contracts test

commit 0afa72c82b
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 15:27:45 2014 +0100

    Added precompiledContracts tests

commit 6be83dd5a1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 13:31:34 2014 +0100

    Update gas cost for PoC7

commit c18b8ab2d3
Merge: 66c2e1f 9a93258
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 09:19:53 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 66c2e1f642
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 09:19:22 2014 +0100

    Updated SIGNEXTEND tests

commit 9a9325822e
Author: ethers <TODO>
Date:   Wed Nov 5 16:20:26 2014 -0800

    part of 9b4e768 - Delete vmNamecoin.json

commit e229374f46
Merge: 189527e 9b4e768
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:59:49 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 189527e563
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:59:20 2014 +0100

    added dynamic jump out of code

commit 9b4e768995
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:41:54 2014 +0100

    Delete vmNamecoin.json

commit 4669b5694b
Merge: a567fed aaba185
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 15:00:12 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit a567fedaa7
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 14:59:08 2014 +0100

    added state systemOperationsTest

commit aaba185ceb
Merge: 79d7cbf fa782ae
Author: ethers <ethereum@outlook.com>
Date:   Tue Nov 4 12:15:40 2014 -0800

    Merge pull request #32 from ethers/indexjs

    updates needed per restructure

commit fa782aed93
Author: ethers <TODO>
Date:   Tue Nov 4 11:28:56 2014 -0800

    updates needed per restructure

commit 79d7cbfc4a
Merge: 9120274 1c1ba8d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:32:11 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 9120274a46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:31:27 2014 +0100

    Update tests to latest protocol changes (PoC7)

commit 1c1ba8d161
Merge: 014d370 3aebe53
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:30:52 2014 +0100

    Merge pull request #31 from CJentzsch/develop

    Restructered tests in folders in accordance to test suites

commit 3aebe532e5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:58:21 2014 +0100

    Updated vmNamecoin.json to new sstore prices

commit 8a0be21839
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:53:00 2014 +0100

    Added example state test

commit 83643addbc
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:36:25 2014 +0100

    removed systemoperationstests

commit 3930ca3a9a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:22:15 2014 +0100

    Restructered tests in folders in accordance to test suites

commit 014d370b5d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 21:23:56 2014 +0100

    New SIGNEXTEND tets

commit 155d449be2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 20:59:05 2014 +0100

    New tests for BNOT and SIGNEXTEND

commit c9eae764b8
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 28 12:58:27 2014 +0100

    Update SSTORE gas cost and BNOT instead of NEG

commit ad2a75ac58
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 16:05:49 2014 +0200

    Added new recursive bombs

commit 834c52af64
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 12:01:05 2014 +0200

    Changing gas cost to zero at stackunderflow

commit c73a8a89d2
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed Oct 22 13:04:45 2014 +0200

    Reverted back to original value.

commit b9a8c92422
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Tue Oct 21 17:02:52 2014 -0400

    fix spelling error

commit b48ae74af4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:26:26 2014 +0200

    Added failing random tests

commit bee0a4100c
Merge: 5050d20 b315da6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:15:05 2014 +0200

    Merge remote-tracking branch 'origin/master' into develop

commit 5050d20b4d
Merge: 7516685 ba35362
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 20 20:18:20 2014 +0200

    Merge pull request #26 from wanderer/develop

    Add a package.json for node.js

commit ba35362876
Author: wanderer <mjbecze@gmail.com>
Date:   Sun Oct 19 23:59:47 2014 -0400

    turned tests into a node module

commit 751668571e
Author: ethers <ethereum@outlook.com>
Date:   Thu Oct 16 17:08:20 2014 -0700

    json was invalid and missing quotes

commit 0e687cee47
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu Oct 16 17:13:24 2014 +0200

    Update vmEnvironmentalInfoTest.json

commit 78a78e2e6c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 15 14:19:11 2014 +0200

    updated genesis_hash

commit b315da618b
Merge: 7a7e198 0a76a3a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 14 10:33:26 2014 +0200

    Merge pull request #23 from ethers/fix22

    numbers should be strings #22

commit 0a76a3a312
Author: ethers <ethereum@outlook.com>
Date:   Mon Oct 13 14:45:30 2014 -0700

    numbers should be strings #22

commit 1f67385f13
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:18:00 2014 +0200

    Added some MUL tests

commit 7a7e198395
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:11:59 2014 +0200

    Added some MUL tests

commit 46eb6283ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 12:18:13 2014 +0200

    tested new opcodes (JUMPDEST,CALLCODE) and created test for CALL/CREATE depth

commit 8d38d62d10
Author: Nick Savers <nicksavers@gmail.com>
Date:   Fri Oct 10 18:09:41 2014 +0200

    INVALID stops the operation and doesn't cost gas

commit ed6eba7c8e
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 19:08:48 2014 +0200

    Update + ABA recursive bomb which needs maximum recursion limit of 1024

commit 2d72050db1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 14:37:18 2014 +0200

    Applied recent protocol changes (PoC7) to existin tests

commit dfe66cab3f
Merge: 4513623 1a67a96
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 11:05:51 2014 +0200

    Merge remote-tracking branch 'origin/develop'

    Conflicts:
    	genesishashestest.json

commit 1a67a96cff
Merge: a4f5f45 ffd6bc9
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 15:10:23 2014 +0100

    Merge pull request #18 from CJentzsch/develop

    CallToNameRegistratorOutOfGas balance correction

commit ffd6bc97ad
Merge: a4f5f45 9779d67
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:47:34 2014 +0200

    Merge remote-tracking branch 'origin/develop' into develop

commit 9779d67b8c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:45:53 2014 +0200

    CallToNameRegistratorOutOfGas balance correction

    Even if execution fails, the value gets transferred.

commit a4f5f45228
Merge: 49a9f47 b6d7cba
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 14:13:12 2014 +0100

    Merge pull request #17 from CJentzsch/develop

    Added A calls B calls A contracts

commit b6d7cba499
Merge: 865cb40 49a9f47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 865cb4083d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:36 2014 +0200

    Added A calls B calls A contracts

commit 49a9f47aec
Merge: 3b0ec43 94a493b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Tue Oct 7 10:56:17 2014 +0200

    Merge pull request #16 from CJentzsch/develop

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 94a493b0d9
Merge: 72853c4 3b0ec43
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:32 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 72853c4382
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:07 2014 +0200

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 3b0ec436e4
Merge: aec3252 222068b
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 05:52:43 2014 +0100

    Merge pull request #15 from CJentzsch/develop

    corrected tests and different style for storage

commit 222068b9ba
Merge: c169653 aec3252
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:28 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit c1696531a6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:09 2014 +0200

    corrected tests and different style for storage

commit aec3252b8e
Merge: 25f9fd5 e17a909
Author: vbuterin <v@buterin.com>
Date:   Mon Oct 6 09:39:46 2014 +0100

    Merge pull request #14 from CJentzsch/develop

    corrected gas limit in vmSystemOperationsTest

commit e17a909f70
Merge: 33fcab5 25f9fd5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:31:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 33fcab5727
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:30:04 2014 +0200

    Bug fix, corrected gasLimit in vmSystemOperationsTest

commit 25f9fd542a
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:47:00 2014 -0400

    one more vm test

commit 2d561a5373
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:15:37 2014 -0400

    separated out vmtests

commit b0c48fa8d6
Merge: cb8261a 6cae166
Author: vbuterin <v@buterin.com>
Date:   Sat Oct 4 17:18:02 2014 +0100

    Merge pull request #13 from CJentzsch/develop

    Added comprehensive EVM test suite. All commands are tested.

commit 6cae166f6f
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 15:34:23 2014 +0200

    Delete tmp.json

commit 4ff906fbc2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 14:06:32 2014 +0200

    corrected CALLSTATELESS tests

commit 5b3fee6806
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 29 13:08:44 2014 +0200

    Completed vm tests. Added ADDMOD, MULMOD, POST, CALLSTATELESS

commit 9cdd218083
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 27 21:48:09 2014 +0200

    Added IOandFlowOperation-, PushDupSwap- and SystemOperations- tests. Removed empty storage from adresses.

commit 28ed968b46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:49:22 2014 +0200

    Added blockInfoTest

commit ffbd5a35b5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:37:52 2014 +0200

    Added environmentalInfo- and sha3- test

commit 54c14f1ff3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 22 13:06:57 2014 +0200

    Added bitwise logic operation test

commit d0af113aab
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 20 01:42:51 2014 +0200

    Added vm arithmetic test

commit cb8261a78b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Sep 19 13:15:44 2014 +0200

    Update genesishashestest.json

commit 4513623da1
Author: Maran <maran.hidskes@gmail.com>
Date:   Tue Jul 22 12:24:46 2014 +0200

    Update keyaddrtest to be valid JSON

commit e8cb5c221d
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 21 23:30:33 2014 -0400

    Added next/prev trie test

commit 98823c04b3
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 14 02:51:31 2014 -0400

    Replaced with deterministic test

commit 357eb21e4d
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun Jul 13 16:12:56 2014 -0400

    Added my own random and namecoin tests (pyethereum)

commit 00cd0cce8f
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jul 12 21:20:04 2014 +0200

    Output hex strings.

commit ddfa3af45d
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 11:28:35 2014 +0100

    Everything a string.

commit d659f469a9
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 10:16:25 2014 +0100

    Code fixes.

commit 5e83ea8228
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 16:17:12 2014 +0200

    Prettier VM tests.

commit a09aae0efe
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 15:46:01 2014 +0200

    Fix VM tests.

commit ec9a044a17
Merge: 4bb6461 5e0123f
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Jul 4 15:56:52 2014 +0200

    Merge pull request #10 from romanman/patch-1

    Update vmtests.json

commit 5e0123fbe1
Author: romanman <roman.mandeleil@gmail.com>
Date:   Fri Jul 4 10:23:04 2014 +0100

    Update vmtests.json

commit 2b6da2f5f2
Author: romanman <roman.mandeleil@gmail.com>
Date:   Thu Jul 3 17:45:04 2014 +0100

    Update vmtests.json

    arith testcase updated

commit 4bb646117d
Merge: bba3898 a33b309
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:22 2014 +0200

    Merge branch 'develop' of github.com:/ethereum/tests into develop

commit bba38980bd
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:06 2014 +0200

    New tests.

commit a33b309d99
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:14:05 2014 -0400

    Testing submodules

commit 50318217ca
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:10:46 2014 -0400

    Testing submodules

commit 57fa655522
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:09:08 2014 -0400

    Testing submodules

commit ea0eb0a8c8
Author: Gav Wood <i@gavwood.com>
Date:   Tue Jul 1 15:19:34 2014 +0200

    Latest genesis block.

commit 25bb76b69c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 13:25:04 2014 +0200

    Reset

commit 74c6d8424e
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 12:10:06 2014 +0200

    Updated wrong test

commit 9ea3a60291
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Sat Jun 28 18:48:28 2014 +0200

    Fixed roots

commit 5fc3ac0e92
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:40:06 2014 +0200

    Simple hex test.

commit edd3a00c2a
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:22:18 2014 +0200

    Additional test for jeff. Now use the 0x... notation.

commit 5021e0dd83
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 21:35:26 2014 +0200

    VM test framework updated.

commit c818d13202
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 18:18:24 2014 +0200

    Removed arrays from Trie tests JSON as per conformance guide and changed
    vocabulary to match other tests.
    VM test updates.

commit 714770ffb3
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jun 11 11:32:42 2014 +0100

    Added Gav's new address.

commit 9345bc13d4
Merge: a2257f3 78576dd
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:38 2014 +0200

    Merge branch 'master' of github.com:ethereum/tests into develop

commit a2257f3471
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:18 2014 +0200

    VM tests.

commit 78576dd3d3
Author: Heiko Heiko <heiko@heiko.org>
Date:   Fri May 30 17:19:09 2014 +0200

    changes based on new account structure nonce, balance, storage, code

commit 125839e848
Merge: 42e14ec 356a329
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu May 22 09:58:45 2014 +0200

    Merge pull request #5 from bkirwi/master

    Fix invalid JSON (removed trailing comma) and add test names

commit 356a3296bc
Author: Ben Kirwin <ben@kirw.in>
Date:   Thu May 22 00:20:48 2014 -0400

    Add some arbitrary test names

    This should now conform to the format specified in the README.

commit 42e14ec54f
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 23:27:40 2014 +0800

    revert to correct data

commit 4300197a74
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:42:23 2014 +0800

    fix: wrong sha3 hash because of the wrong rlp hex

commit a0d01b1a0b
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:29:53 2014 +0800

    fix: wrong rlp hex

commit 6bc2fc7405
Merge: 66bc366 c31a93c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed May 21 14:11:37 2014 +0200

    Merge pull request #4 from ethers/master

    fix file name that seems to have been a typo

commit c31a93c27a
Author: ethers <ethereum@outlook.com>
Date:   Tue May 20 15:42:39 2014 -0700

    fix file name that seems to have been a typo

commit 66bc3665c1
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:36:35 2014 +0200

    fix: represent integers as strings

commit ede5499da6
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:21:09 2014 +0200

    add: current initial alloc and genesis hashes

commit 5131429abb
Author: Ben Kirwin <ben@kirw.in>
Date:   Mon May 19 11:18:31 2014 -0400

    Delete a comma

    This should now be parseable as JSON.

commit f44a859331
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Sun May 18 15:04:42 2014 +0800

    add: case when value is long, ensure it's not get rlp encoded as node

commit e1ae4ad449
Author: Gav Wood <i@gavwood.com>
Date:   Mon May 12 14:40:47 2014 +0100

    PoC-5 VM tests.

commit 2b6c136dda
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun May 11 21:42:41 2014 -0400

    Moved txt to json

commit cbccbf977c
Merge: edbb8d4 45a0974
Author: Vitalik Buterin <v@buterin.com>
Date:   Thu May 8 21:54:48 2014 -0400

    New commit

commit edbb8d407e
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue May 6 16:53:43 2014 -0400

    Removed unneeded test, added new tests

commit 45a0974f6f
Merge: 15dd8fd 5fd2a98
Author: Gav Wood <i@gavwood.com>
Date:   Sun Apr 27 12:53:47 2014 +0100

    Merge pull request #3 from autolycus/develop

    Fixed formatting and added test cases

commit 5fd2a98fcb
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 13:26:14 2014 -0700

    Added some new test cases for the rlp encoding.

commit 4ba150954e
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 12:48:42 2014 -0700

    Converted spaces to tabs to be compliant with the coding standards defined in cpp-ethereum

commit 15dd8fd794
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 12:54:47 2014 +0000

    RLP tests and Trie updates.

commit 33f80fef21
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:39:35 2014 +0000

    Hex encode tests done.

commit e1f5e12abb
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:22:49 2014 +0000

    Fix RLP tests.

commit f87ce15ad2
Author: Gav Wood <i@gavwood.com>
Date:   Thu Feb 27 13:28:11 2014 +0000

    Fix empty string.

commit c006ed4ffd
Author: Gav Wood <i@gavwood.com>
Date:   Mon Feb 24 10:24:39 2014 +0000

    Tests fix.

commit 510ff56363
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:54:08 2014 +0000

    Updated the tests.

commit a0ec843832
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:49:24 2014 +0000

    Moved over to new format, but RLP tests still need updating.

commit 660cd26f31
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:35:51 2014 +0000

    More docs.

commit 6ad14c1a15
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:33:39 2014 +0000

    Added VM test suite.
    Added TODO.
    Renamed old files.

commit f91ad7b385
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 11:26:58 2014 -0500

    update trie algorithm

commit 6da2954462
Merge: cc42246 131c610
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 08:15:38 2014 -0500

    merge

commit cc4224675f
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Jan 7 14:35:26 2014 -0500

    Updated trie test

commit 131c610da6
Merge: 121632b 7613302
Author: vbuterin <v@buterin.com>
Date:   Wed Jan 1 06:40:54 2014 -0800

    Merge pull request #1 from obscuren/master

    Update trietest.txt

commit 7613302b49
Author: obscuren <obscuren@users.noreply.github.com>
Date:   Wed Jan 1 15:25:21 2014 +0100

    Update trietest.txt

    New proposed explanatory format

commit 121632bedd
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 1 08:26:18 2014 -0500

    Added obscure's tests

commit ef6c5506c3
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 19:04:48 2013 -0500

    Fixed tests a bit

commit 345e4bcfef
Merge: 2c81698 e4bbea4
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 15:52:46 2013 -0500

    Merge branch 'master' of github.com:ethereum/tests

commit 2c81698f31
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Dec 30 21:09:40 2013 -0500

    Added first three tests

commit e4bbea400f
Author: vbuterin <v@buterin.com>
Date:   Mon Dec 30 18:09:03 2013 -0800

    Initial commit
2015-01-02 17:33:14 +01:00
CJentzsch
2e75a216c7 new jumpdest interpretation 2015-01-02 17:05:20 +01:00
CJentzsch
7aab71f656 added complete exp tests 2015-01-02 16:55:59 +01:00
obscuren
4dc7ee9087 Closure => Context 2015-01-02 16:14:12 +01:00
CJentzsch
3340f4dbfc retuning gas prices of recursive bombs to test limits 2015-01-02 14:26:55 +01:00
CJentzsch
456b5791bb more init code, systemoperations and transaction tests 2015-01-02 14:08:55 +01:00
obscuren
e2d1d832ef added nil check 2015-01-02 13:00:25 +01:00
obscuren
d336e24dce Removed the need of having a backend for the tx pool 2015-01-02 12:26:55 +01:00
obscuren
ae2c90cc28 Removed value check from tx validation 2015-01-02 12:24:36 +01:00
obscuren
6cf61039cf Added tests for valid transactions 2015-01-02 12:18:23 +01:00
obscuren
48d2a8b8ee Refactored tx pool and added extra fields to block
* chain manager sets td on block + td output w/ String
* added tx pool tests for removing/adding/validating
* tx pool now uses a set for txs instead of list.List
2015-01-02 12:09:38 +01:00
obscuren
477a6d426c Added a query interface for world state 2015-01-02 12:07:54 +01:00
obscuren
0972bdeda2 Fixed using new trie iterator API 2015-01-02 12:07:26 +01:00
obscuren
1cc86c07a0 Deleted 2015-01-02 11:16:52 +01:00
obscuren
1c7e8e9093 Set TD to block once processed 2015-01-02 11:16:42 +01:00
obscuren
b619b244c7 Fixed tests 2015-01-02 11:16:30 +01:00
obscuren
0fb1bcd321 Merge branch 'poc8' into docbranch 2015-01-02 10:30:27 +01:00
obscuren
a4dc12f12c Additional comments and added name to error output 2014-12-31 11:21:39 +01:00
obscuren
4547a05a68 Minor improvements
* Moved gas and mem size to its own function
2014-12-31 11:12:40 +01:00
obscuren
4b4e082102 JUMPI never 'require' checked. 2014-12-31 10:32:53 +01:00
caktux
1954b87819 bring back toHex 2014-12-30 11:59:33 -05:00
obscuren
77924757a8 Merge branch 'develop' into poc8 2014-12-30 17:16:35 +01:00
obscuren
16460b0048 Fixed gas check for vm test 2014-12-30 17:16:28 +01:00
obscuren
a9068aa8ff Merge branch 'develop' into poc8 2014-12-30 17:10:02 +01:00
obscuren
89244981a8 Additional checking on gas 2014-12-30 17:09:54 +01:00
obscuren
138ab26b8c SIGNEXTEND missing from stack check 2014-12-30 17:09:43 +01:00
obscuren
51a97c031f Merge branch 'develop' into poc8 2014-12-30 16:22:56 +01:00
obscuren
cc5e621fc4 updated tests 2014-12-30 16:18:46 +01:00
obscuren
2ebf33ac1c removed variable 2014-12-30 16:17:56 +01:00
obscuren
788d812a72 Merge branch 'develop' into poc8 2014-12-30 16:16:11 +01:00
obscuren
29c887ef2c Removed incorrect range check for push 2014-12-30 16:16:02 +01:00
obscuren
1085960ed8 fixed trie 2014-12-30 15:58:40 +01:00
obscuren
8df689bd44 Chain tests 2014-12-30 15:42:26 +01:00
obscuren
2f8a45cd8b Fixed chain test & added new chain 2014-12-30 13:32:01 +01:00
obscuren
ce68ac6959 Updated miner to new block api 2014-12-30 13:18:19 +01:00
wanderer
1f5552feb4 added balance tests 2014-12-29 20:12:29 -05:00
wanderer
4d37c1cea2 added trie tests for branches on
detel
2014-12-27 20:30:42 -05:00
CJentzsch
2fdc7bfbd1 more random tests 2014-12-27 22:46:21 +01:00
obscuren
dc7c584a4d export => import 2014-12-24 14:54:06 +01:00
obscuren
58d477f7a6 Fixed a bug where keys where serialised twice 2014-12-24 14:47:50 +01:00
obscuren
804af9658a merge 2014-12-24 11:31:45 +01:00
obscuren
9d429180f9 Merge branch 'hotfix/0.7.11' into develop 2014-12-24 11:31:08 +01:00
obscuren
771bfe9e78 Merge branch 'hotfix/0.7.11' 2014-12-24 11:30:13 +01:00
obscuren
c9f963a77e Bump 2014-12-24 11:30:04 +01:00
obscuren
7ba9fe4d5d Reset peer during download on disc 2014-12-24 11:29:58 +01:00
obscuren
fb1edd05f4 Removed the deferred reset 2014-12-24 11:20:43 +01:00
obscuren
780abaec98 Switched to new trie 2014-12-23 18:35:36 +01:00
CJentzsch
98fe404e6a Merge remote-tracking branch 'origin/develop' into develop 2014-12-23 16:36:13 +01:00
CJentzsch
aafb5f768b first failing random tests 2014-12-23 16:35:35 +01:00
wanderer
8c34e93b51 added stackOverFlow test to initCode 2014-12-23 10:01:20 -05:00
obscuren
f468a9a0e2 Enable websockets for mist. Closes #218 2014-12-23 15:47:08 +01:00
obscuren
1054c155db Moved import to utils 2014-12-23 15:37:03 +01:00
obscuren
7d2353f24d Close the file 2014-12-23 15:31:03 +01:00
obscuren
34f72ddb3d Decode from stream directly 2014-12-23 15:18:48 +01:00
obscuren
1382e8d84b Delete current chain for reset 2014-12-23 14:50:04 +01:00
obscuren
e2e3fa3d11 Updated Mist to use new blocks 2014-12-23 14:44:45 +01:00
obscuren
9e5257b83b Chain importer 2014-12-23 14:33:15 +01:00
obscuren
4cd79d8ddd Refactored block & Transaction
* Includes new rlp decoder
2014-12-23 13:48:44 +01:00
obscuren
4b52cd512d Removal of "debug" url :) 2014-12-22 15:01:52 +01:00
obscuren
e32f7baa0d Concat and pad data 2014-12-22 14:59:52 +01:00
obscuren
60b1f9629c Merge branch 'develop' into poc8 2014-12-22 14:46:32 +01:00
obscuren
4051c0333f Added whisper js api 2014-12-22 13:23:11 +01:00
obscuren
e42517754a updated ethereum.js 2014-12-22 11:57:13 +01:00
obscuren
a153b47c2b moved 2014-12-22 11:56:34 +01:00
Jeffrey Wilcke
e531c6fc6c Merge pull request #217 from ethereum/tests
Updated code coverage support & cleanup
2014-12-22 11:42:28 +01:00
obscuren
ed7e05fb2a Merge branch 'develop' into poc8 2014-12-22 10:58:30 +01:00
obscuren
8130df63ca updated whisper ui 2014-12-22 10:58:28 +01:00
Gav Wood
123098ce79 Lots of fixes. 2014-12-22 01:13:49 +01:00
Taylor Gerring
4fd4facf35 Remove old file 2014-12-21 14:54:51 -06:00
Taylor Gerring
43bf3b4a78 Move goveralls call to script 2014-12-21 14:46:32 -06:00
Taylor Gerring
05da381c15 Add coveralls coverage badge 2014-12-21 14:36:13 -06:00
Taylor Gerring
26bf95731b Use repo default branches 2014-12-21 14:31:19 -06:00
Taylor Gerring
03dc6ec0d4 Update travis go version to tip 2014-12-21 13:46:06 -06:00
Taylor Gerring
f7ec759ef0 inline dependency installation script 2014-12-21 13:34:48 -06:00
Taylor Gerring
7ddebd7a75 Exclude VM tests 2014-12-21 13:21:24 -06:00
Taylor Gerring
bab78bbeb6 Merge branch 'tests' of github.com:ethereum/go-ethereum into tests 2014-12-21 12:06:24 -06:00
Taylor Gerring
7a79428278 Update cover command installation 2014-12-21 12:05:59 -06:00
Taylor Gerring
1360f027d9 Merge pull request #216 from ethereum/develop
Update tests branch from develop
2014-12-21 11:42:32 -06:00
Taylor Gerring
b3629c6f62 remove temp coverage file 2014-12-21 11:19:33 -06:00
Taylor Gerring
176c98eb66 Updated tool import paths 2014-12-21 11:18:43 -06:00
obscuren
25d16f358a Merge branch 'develop' 2014-12-21 15:13:45 +01:00
obscuren
795b14330a Fixed EVM environment. Closes #215 2014-12-21 15:13:06 +01:00
obscuren
0e5aed63dd Updated QWhisper
* changed api
* general whisper debug interface
2014-12-21 15:06:35 +01:00
CJentzsch
8a285d258a Merge remote-tracking branch 'origin/develop' into develop 2014-12-20 13:08:18 +01:00
CJentzsch
a4ccc6e72e CALLCODE <-> RETURN 2014-12-20 13:07:54 +01:00
obscuren
125bdc3253 Merge branch 'develop' into poc8
Conflicts:
	cmd/ethereum/flags.go
2014-12-20 02:45:05 +01:00
obscuren
6cff6dd8b8 Merge branch 'release/v0.7.10' into develop 2014-12-20 02:34:29 +01:00
obscuren
3983dd2428 Merge branch 'release/v0.7.10' 2014-12-20 02:34:12 +01:00
obscuren
0a9dc1536c Increased peer from 10 to 30 2014-12-20 02:33:45 +01:00
obscuren
1508a23a6f Minor updates on gas and removed/refactored old code. 2014-12-20 02:21:13 +01:00
obscuren
f5b8f3d41b Removed OOG check. Revert should always happen. 2014-12-19 13:59:49 +01:00
obscuren
0e93b98533 Transaction was generating incorrect hash because of var changes 2014-12-19 13:34:53 +01:00
obscuren
5da5db5a0a Added authors 2014-12-19 13:34:21 +01:00
wanderer
6567f9d0b2 add refund tests 2014-12-18 23:39:30 -05:00
obscuren
88af879f7a version bump 2014-12-19 01:18:22 +01:00
obscuren
75f0412f9d Merge branch 'ebuchman-badsig' into poc8 2014-12-19 00:33:32 +01:00
obscuren
207b6c50fb Merge branch 'badsig' of https://github.com/ebuchman/go-ethereum into ebuchman-badsig
Conflicts:
	core/transaction_pool.go
2014-12-19 00:33:05 +01:00
wanderer
07cfec33f8 added trieTest anyorder 2014-12-18 18:31:19 -05:00
obscuren
12671c82ea Moved VM to execution 2014-12-19 00:23:00 +01:00
obscuren
6e24b1587d Merge branch 'develop' into poc8 2014-12-19 00:19:02 +01:00
obscuren
59ef6e3693 Cleaned up objects 2014-12-19 00:18:52 +01:00
obscuren
22d29a6d52 merge 2014-12-19 00:02:55 +01:00
obscuren
a7f4ade711 Fixed tests 2014-12-18 23:59:53 +01:00
obscuren
1e985f9865 Fixed casting error
* big(bytes) == 0 when len(bytes) > 0
2014-12-18 23:59:40 +01:00
obscuren
4789084998 updated tests 2014-12-18 23:32:58 +01:00
obscuren
3325683794 Fixed refund model 2014-12-18 22:38:51 +01:00
obscuren
f7287c626e updated tests 2014-12-18 21:58:53 +01:00
obscuren
198cc69357 Gas corrections and vm fixes 2014-12-18 21:58:26 +01:00
CJentzsch
86c3b8cfad Merge branch 'develop' of https://github.com/ethereum/tests into develop 2014-12-18 21:43:06 +01:00
CJentzsch
b227b10f5d more refund tests 2014-12-18 21:42:41 +01:00
wanderer
71b5d6e0a3 updated index.js 2014-12-18 12:13:55 -05:00
obscuren
5ad473d758 Moved methods to messages 2014-12-18 15:33:22 +01:00
obscuren
db494170dc Created generic message (easy for testing) 2014-12-18 15:18:13 +01:00
obscuren
9e286e1c33 updated tests 2014-12-18 13:32:47 +01:00
obscuren
0dc566124a Merge fixes 2014-12-18 13:22:59 +01:00
obscuren
721e8ae93f Merged develop 2014-12-18 13:19:41 +01:00
obscuren
2d09e67713 Updated to new methods 2014-12-18 13:17:24 +01:00
obscuren
49e0267fe7 Locks, refactor, tests
* Added additional chain tests
* Added proper mutex' on chain
* Removed ethereum dependencies
2014-12-18 13:12:54 +01:00
obscuren
590aace88d Removed ethereum as dependency 2014-12-18 12:18:19 +01:00
obscuren
4b2f1f7628 idx should return -1 2014-12-18 11:55:46 +01:00
obscuren
df3366d910 Rlp shouldn't write null bytes 2014-12-18 11:39:24 +01:00
CJentzsch
aefcb9716e transaction tests and refund tests 2014-12-18 09:31:43 +01:00
obscuren
e6fdf0c9f7 Merge branch 'develop' into poc8 2014-12-18 00:12:51 +01:00
obscuren
4dbdcaecb1 Moved pre-compiled, moved depth check
* Depth check has been moved to the execution
* Pre compiled execution has been moved to the VM
* PrecompiledAddress has been renamed to PrecompiledAccount
2014-12-17 23:58:52 +01:00
Jeffrey Wilcke
8da07e91e4 Merge pull request #213 from ethereum/develop
moved err check
2014-12-17 13:00:05 +01:00
obscuren
b1c58b76a9 moved err check 2014-12-17 12:57:35 +01:00
obscuren
52b54631a4 Whisper watches fixes 2014-12-16 19:55:57 +01:00
Jeffrey Wilcke
e9db2d1b18 Merge pull request #15 from debris/master
changes from cpp-ethereum
2014-12-16 11:10:28 +01:00
obscuren
93edae280d doc desc 2014-12-15 22:50:38 +01:00
Jeffrey Wilcke
bb17591959 Merge pull request #211 from fjl/fix-server-disc
p2p: fix call to Server.removePeer
2014-12-15 22:50:05 +01:00
Felix Lange
aa3b91b802 p2p: fix call to Server.removePeer (might help with #209) 2014-12-15 22:36:59 +01:00
obscuren
b55fabc7be Removed debug message 2014-12-15 22:18:58 +01:00
obscuren
54605d8c8e During env open check for pub error which indicated unencrypted payload. 2014-12-15 21:55:00 +01:00
obscuren
52ca80bdd2 Fixed deref ptr
The gui already waits and shuts down ethereum. There was no need to wait
for an additional shutdown.
2014-12-15 21:53:50 +01:00
obscuren
0291eff99a Identity test 2014-12-15 21:52:50 +01:00
obscuren
c96e504adb Typo 2014-12-15 17:28:51 +01:00
obscuren
01a6db9324 Added whisper debug interface + whisper fixes 2014-12-15 17:14:02 +01:00
obscuren
993280ec03 Added whisper test 2014-12-15 17:09:27 +01:00
obscuren
6ff9d5770b Added whisper handler 2014-12-15 17:09:14 +01:00
obscuren
455241debb Removed goroutine from "Run" 2014-12-15 17:09:06 +01:00
obscuren
db89c3e1a3 Merge branch 'develop' into poc8 2014-12-15 16:13:08 +01:00
obscuren
ef4135eabe Added topic utility functions to whisper 2014-12-15 16:12:34 +01:00
obscuren
56dac74f71 made mist in a compilable, workable state using the new refactored packages 2014-12-15 13:00:29 +01:00
obscuren
c7bc684909 Moved peer helper metheds 2014-12-15 12:35:21 +01:00
obscuren
96272e19a6 removed filter manager from base 2014-12-15 12:34:06 +01:00
obscuren
bd9088792b Merge branch 'develop' into ethersphere-ethp2p 2014-12-15 12:22:03 +01:00
obscuren
cdb2ebbdfa Added old filter. Needs some refactoring 2014-12-15 12:17:33 +01:00
obscuren
4b5ad31b3a WIP 2014-12-15 12:07:46 +01:00
obscuren
6c168c8f22 added protocol handler 2014-12-15 12:02:48 +01:00
obscuren
afc8b887ab added whisper 2014-12-15 12:01:55 +01:00
obscuren
f111fc0608 WIP 2014-12-15 11:38:09 +01:00
zelig
1d959cb0ca WIP 2014-12-15 11:37:01 +01:00
obscuren
c3ba4ace64 Merge branch 'poc8' into develop 2014-12-15 10:22:57 +01:00
Jeffrey Wilcke
15e46b97b4 Merge pull request #204 from fjl/fix-p2p-disconnect
p2p: fix decoding of disconnect reason
2014-12-15 10:22:35 +01:00
Felix Lange
da900f9435 p2p: add test for base protocol disconnect 2014-12-15 00:28:20 +01:00
Felix Lange
f0f6727778 p2p: use an error type for disconnect requests
Test-tastic.
2014-12-15 00:28:20 +01:00
Felix Lange
65e39bf20e p2p: add MsgPipe for protocol testing 2014-12-15 00:28:20 +01:00
zelig
72290f67fe resolve merge conflict hell 2014-12-14 20:57:29 +00:00
zelig
4c89d5331f adapt blockpool/backend to use pow/ezp with pow.Block for VerifyPoW func 2014-12-14 20:53:20 +00:00
zelig
61940b2275 adapt cmd/cli to new backend
- new flag nat for nat support UPNP|PMP
- new flag pmp for PMP gateway IP
- add NatType to utils/cmd to get p2p.NAT from nat type string
- obsolete usepnp flag
- get rid of IsUpToDate and sleep in miner start
- ethereum constructor takes nat type, port, maxpeer
- add pubkey arg to client identity
2014-12-14 20:52:28 +00:00
zelig
e77b720ead blockmanager start/stop obsolete 2014-12-14 20:45:12 +00:00
zelig
7b39cc83cc adapt chain_manager to eth protocol interface
- add Status() to return td, currentblock hash, genesis hash
- GetChainHashesFromHash -> GetBlockHashesFromHash
2014-12-14 20:45:12 +00:00
zelig
01dc1c1394 blockpool rewritten , tests broken FIXME 2014-12-14 20:42:08 +00:00
zelig
4dfce4624d protocol
- new interface explicit backend components txPool, chainManager, blockPool
- added protoErrorDisconnect for blockpool callback (FIXME: handling peer disconnects)
2014-12-14 20:40:08 +00:00
zelig
5e4d77b2b8 initial commit for eth blockpool + test 2014-12-14 20:39:34 +00:00
zelig
2dd8f41147 eth protocol changes
- changed backend interface
- using callbacks for blockPool
- use rlp stream for lazy decoding
- use peer as logger
- add id (peer pubkey) to ethProtocol fields
- add testPeer to protocol test (temporary)
2014-12-14 20:37:07 +00:00
zelig
0add0c400f initial commit for eth-p2p integration 2014-12-14 20:34:28 +00:00
zelig
e847aaca3e remove wire package 2014-12-14 20:31:43 +00:00
zelig
7d02c4fdb7 remove old ethereum/p2p related top level files 2014-12-14 20:31:43 +00:00
zelig
d9b16c1197 new cli options
- nat UPNP|PMP
- gateway for PMP NAT
- obsolete usepnp
- add pubkey to client identity
2014-12-14 20:30:56 +00:00
zelig
ae7c1e3e55 adapt to new backend
- eth p2p pkgs
- new Ethereum initialiser
- no caps param
- use nat type
- add NatType func to map nat type string to p2p.NAT
- add pubkey to client identity
2014-12-14 20:30:56 +00:00
zelig
50e1dcc43a import eth pkg 2014-12-14 20:30:56 +00:00
zelig
d84810d89d add Status to retrieve TD, currentBlock, genesis for easy interface with eth/protocol 2014-12-14 20:30:56 +00:00
zelig
39d86a28e7 adapt to new eth pkg and p2p 2014-12-14 20:30:56 +00:00
zelig
5022a31889 add NewMinedBlockEvent 2014-12-14 20:27:06 +00:00
zelig
c2af10d256 transaction pool changes
- use eventer events to broadcast transactions
- CurrentTransactions -> GetTransactions
- add AddTransactions
2014-12-14 20:27:06 +00:00
zelig
b89ed8eb7b adapt javascript pkg to new backend, use SuggestPeer 2014-12-14 20:27:06 +00:00
zelig
118862f1ba adapt miner to new backend. use events to broadcast new mined blocks 2014-12-14 20:27:06 +00:00
zelig
148de1c875 adapt xeth pkg to new backend. FIXME JSPeer peer info 2014-12-14 20:27:06 +00:00
zelig
76070b4674 blockpool rewritten , tests broken FIXME 2014-12-14 20:27:06 +00:00
zelig
3308d82b23 add protocol error types specific to blockpool 2014-12-14 20:27:06 +00:00
zelig
c44e025898 protocol
- new interface explicit backend components txPool, chainManager, blockPool
- added protoErrorDisconnect for blockpool callback (FIXME: handling peer disconnects)
2014-12-14 20:27:06 +00:00
zelig
02017ed0e0 initial commit for new backend (eth.Ethereum) 2014-12-14 20:27:06 +00:00
zelig
4366fdfc13 initial commit for eth blockpool + test 2014-12-14 20:27:06 +00:00
zelig
d957dd2c9f eth protocol changes
- changed backend interface
- using callbacks for blockPool
- use rlp stream for lazy decoding
- use peer as logger
- add id (peer pubkey) to ethProtocol fields
- add testPeer to protocol test (temporary)
2014-12-14 20:27:06 +00:00
zelig
eb5cb04aa9 no logging in error (to be refactored into p2p) 2014-12-14 20:27:05 +00:00
zelig
e5aa38cb0f initial commit for eth-p2p integration 2014-12-14 20:27:05 +00:00
CJentzsch
ccbf120c36 added stInitCodeTest.json 2014-12-13 23:03:21 +01:00
obscuren
f8061fcba8 fixed tests 2014-12-12 22:38:54 +01:00
obscuren
4c84db85c5 eth-go packages ended up in whisper 2014-12-12 22:29:29 +01:00
obscuren
0122989808 Merge branch 'poc8' into develop 2014-12-12 22:27:12 +01:00
Jeffrey Wilcke
ccb4fc8d03 Merge pull request #206 from ethereum/tests
Added Dockerfile to build from source
2014-12-12 22:26:54 +01:00
obscuren
aec0c0efcb updated tests 2014-12-12 22:25:29 +01:00
obscuren
bf566a657c Implemented Qt whisper interface 2014-12-12 22:24:41 +01:00
obscuren
8577e4171a Panic for "Vm" 2014-12-12 22:24:27 +01:00
obscuren
06e76422b5 Added length checkes 2014-12-12 22:24:04 +01:00
obscuren
1c7fd62e57 Moved 2014-12-12 22:23:52 +01:00
obscuren
a17a1f9208 Implemented watching using filter package
* Added filters / watches
* Removed event dep
2014-12-12 22:23:42 +01:00
obscuren
ed1538248f Moved filter to events 2014-12-12 22:19:39 +01:00
CJentzsch
cbf5afdef8 update recursive create 2014-12-12 22:03:54 +01:00
obscuren
9e1689df9c Generic filter interface 2014-12-12 21:42:21 +01:00
Taylor Gerring
ca7f385294 Fix variable name 2014-12-12 10:54:32 -06:00
Taylor Gerring
a92ccfc5c6 Added Dockerfile to build from source 2014-12-12 10:50:07 -06:00
Gav Wood
a70c4b51a4 Fix return tests. 2014-12-12 17:22:41 +01:00
Gav Wood
f146467607 Add test file. 2014-12-12 16:33:51 +01:00
obscuren
25cf0c440c Accidentally changed max depth during testing & committed 2014-12-12 15:25:21 +01:00
Gav Wood
c2bd8d1d7a Alter "" to null. 2014-12-12 14:27:38 +01:00
Gav Wood
ce6344b770 Trie testing. 2014-12-12 14:22:19 +01:00
obscuren
05fd1dafe2 additional log 2014-12-12 13:26:01 +01:00
Felix Lange
e28c60caf9 p2p: improve and test eofSignal 2014-12-12 11:40:02 +01:00
Felix Lange
9423401d73 p2p: fix decoding of disconnect reason (fixes #200) 2014-12-12 11:40:02 +01:00
obscuren
0d57ca486a Squashed commit of the following:
commit 779f25d36c
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 11 22:59:56 2014 +0100

    first random test

commit 68175386c0
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 11 21:34:50 2014 +0100

    update gas prices

commit ad322fbb58
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 8 06:01:17 2014 +0100

    Log as array

commit f989f42618
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Fri Dec 5 15:12:12 2014 +0100

    state log tests

commit 4bc65d1129
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 4 18:18:49 2014 +0100

    add calldataload, codecopy, extcodecopy tests

commit 12cfae18e3
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Thu Dec 4 15:57:56 2014 +0100

    add calldataload test

commit 086caf3701
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Wed Dec 3 08:31:03 2014 +0100

    protocol update (CALLCODE <-> RETURN), topics in log are arrays not sets

commit e6c92673b9
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 21:14:08 2014 +0100

    update state tests with logs

commit 4089b809fb
Author: CJentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 18:19:40 2014 +0100

    update gas costs

commit cfdca62277
Merge: 2e5175e f59f89d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Dec 1 18:04:51 2014 +0100

    Merge pull request #42 from negedzuregal/fix

    vmTest fix

commit f59f89d876
Author: alon muroch <alonmuroch@gmail.com>
Date:   Mon Dec 1 16:18:12 2014 +0100

    vmEnvironmentalInfoTest CALLDATACOPY, CODECOPY, EXTCODECOPY fix

commit 68da13fe3e
Author: alon muroch <alonmuroch@gmail.com>
Date:   Mon Dec 1 11:10:57 2014 +0100

    vmArithmeticTest exp fix

commit 2e5175e818
Author: ethers <ethereum@outlook.com>
Date:   Sun Nov 30 19:55:51 2014 +0100

    add vmLogTest

commit b5b9408e64
Author: Heiko Heiko <heiko@heiko.org>
Date:   Sun Nov 30 16:27:27 2014 +0100

    updated genesis to new header w/o min_gas_price

commit 8e69fbfa98
Author: ethers <ethereum@outlook.com>
Date:   Fri Nov 21 17:42:05 2014 -0800

    add special tests

commit 90f4f942e6
Author: ethers <ethereum@outlook.com>
Date:   Thu Nov 20 19:01:09 2014 -0800

    typo

commit c5e5228e0d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 20 17:04:06 2014 +0100

    Removed log,post,out,gas,callcreates if exception occured

commit 9c0232a2b9
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 18:19:05 2014 +0100

    MakeMoney test

commit 3ba0007e86
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 16:23:04 2014 +0100

    Added log sections in all vmtests + log tests

commit d84be4fe07
Merge: c8497ab 76d2542
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 10:00:24 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit c8497ab257
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 19 10:00:02 2014 +0100

    new push32 test and renaming

commit 76d25420e1
Author: ethers <ethereum@outlook.com>
Date:   Mon Nov 17 18:59:30 2014 -0800

    adding test

commit 0be275e757
Merge: 1d42d1d d90868c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 22:47:34 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 1d42d1d7c6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 22:46:51 2014 +0100

    fix ecrecover2

commit d90868c307
Merge: 1f38c8c 6dbcf6b
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 17 20:26:59 2014 +0100

    Merge pull request #39 from wanderer/develop

    added test for max call depth on creation

commit 6dbcf6b0d6
Author: wanderer <mjbecze@gmail.com>
Date:   Mon Nov 17 14:06:43 2014 -0500

    spelling fix

commit 6fc07a7f81
Author: wanderer <mjbecze@gmail.com>
Date:   Sat Nov 15 21:39:16 2014 -0500

    added test for max call depth on creation

commit 1f38c8c0a2
Merge: 279b284 cd85ca1
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 20:10:21 2014 -0500

    Merge pull request #38 from wanderer/develop

    updated test  'jeff' in trietest.json

commit cd85ca17ed
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 19:59:34 2014 -0500

    Update trietest.json

commit 279b284c0d
Merge: 89675a7 6cae937
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 17:43:49 2014 -0500

    Merge pull request #37 from wanderer/develop

    Update trietest.json

commit 6cae937e5e
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Fri Nov 14 17:20:03 2014 -0500

    Update trietest.json

    'emptyValues' should have the same root as 'puppy'

commit 89675a7153
Merge: f1de1cc 32f0c47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 23:17:49 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit f1de1cc97a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 23:17:13 2014 +0100

    Fix CallRecursiveBomb2

commit 32f0c47c68
Merge: ab50e76 3da90d0
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Thu Nov 13 15:26:49 2014 -0500

    Merge pull request #36 from wanderer/develop

    converted back to arrary format

commit ab50e76652
Merge: d06b792 78f1e4a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 13 07:52:35 2014 +0100

    Merge pull request #35 from ethers/delOld

    rename tests since they are valid opcodes that exist

commit 3da90d01f6
Author: wanderer <mjbecze@gmail.com>
Date:   Wed Nov 12 22:22:47 2014 -0500

    converted back to arrary format

commit 78f1e4a945
Author: ethers <ethereum@outlook.com>
Date:   Wed Nov 12 19:11:06 2014 -0800

    rename tests since they are valid opcodes that exist

commit d06b792cd0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 12 07:00:17 2014 +0100

    minor change in CallSha256_1_nonzeroValue test

commit d434ecdcc3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 12 06:56:31 2014 +0100

    Added CallSha256_1_nonzeroValue test

commit 2c06f34cc0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 18:10:26 2014 +0100

    Store return value of call to precompiled contracts

commit 4b0c3b29ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 17:51:14 2014 +0100

    Fix gas cost for OOG calls

commit 63bcca7604
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue Nov 11 08:59:19 2014 +0100

    fix: genesis test

commit 6e0310c1ea
Merge: 30c266c 2927763
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 08:34:36 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 30c266caff
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 11 08:33:59 2014 +0100

    jump to position outside code stops execution

commit 2927763d68
Author: ethers <ethereum@outlook.com>
Date:   Mon Nov 10 14:10:22 2014 -0800

    RandomTests were removed

commit a0fa91b2b8
Merge: 6092484 fcba866
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 10 22:22:05 2014 +0100

    Merge branch 'develop' of https://github.com/ethereum/tests into develop

commit 60924843f0
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 10 22:21:37 2014 +0100

    Unintended Exceptions work like OOG

commit fcba866721
Author: ethers <TODO>
Date:   Thu Nov 6 14:19:59 2014 -0800

    add StateTests

commit a441074ba4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 17:54:36 2014 +0100

    Updated precompiled contracts test

commit 0afa72c82b
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 15:27:45 2014 +0100

    Added precompiledContracts tests

commit 6be83dd5a1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 13:31:34 2014 +0100

    Update gas cost for PoC7

commit c18b8ab2d3
Merge: 66c2e1f 9a93258
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 09:19:53 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 66c2e1f642
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Nov 6 09:19:22 2014 +0100

    Updated SIGNEXTEND tests

commit 9a9325822e
Author: ethers <TODO>
Date:   Wed Nov 5 16:20:26 2014 -0800

    part of 9b4e768 - Delete vmNamecoin.json

commit e229374f46
Merge: 189527e 9b4e768
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:59:49 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 189527e563
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:59:20 2014 +0100

    added dynamic jump out of code

commit 9b4e768995
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 20:41:54 2014 +0100

    Delete vmNamecoin.json

commit 4669b5694b
Merge: a567fed aaba185
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 15:00:12 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit a567fedaa7
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Nov 5 14:59:08 2014 +0100

    added state systemOperationsTest

commit aaba185ceb
Merge: 79d7cbf fa782ae
Author: ethers <ethereum@outlook.com>
Date:   Tue Nov 4 12:15:40 2014 -0800

    Merge pull request #32 from ethers/indexjs

    updates needed per restructure

commit fa782aed93
Author: ethers <TODO>
Date:   Tue Nov 4 11:28:56 2014 -0800

    updates needed per restructure

commit 79d7cbfc4a
Merge: 9120274 1c1ba8d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:32:11 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 9120274a46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:31:27 2014 +0100

    Update tests to latest protocol changes (PoC7)

commit 1c1ba8d161
Merge: 014d370 3aebe53
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:30:52 2014 +0100

    Merge pull request #31 from CJentzsch/develop

    Restructered tests in folders in accordance to test suites

commit 3aebe532e5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:58:21 2014 +0100

    Updated vmNamecoin.json to new sstore prices

commit 8a0be21839
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:53:00 2014 +0100

    Added example state test

commit 83643addbc
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:36:25 2014 +0100

    removed systemoperationstests

commit 3930ca3a9a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:22:15 2014 +0100

    Restructered tests in folders in accordance to test suites

commit 014d370b5d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 21:23:56 2014 +0100

    New SIGNEXTEND tets

commit 155d449be2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 20:59:05 2014 +0100

    New tests for BNOT and SIGNEXTEND

commit c9eae764b8
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 28 12:58:27 2014 +0100

    Update SSTORE gas cost and BNOT instead of NEG

commit ad2a75ac58
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 16:05:49 2014 +0200

    Added new recursive bombs

commit 834c52af64
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 12:01:05 2014 +0200

    Changing gas cost to zero at stackunderflow

commit c73a8a89d2
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed Oct 22 13:04:45 2014 +0200

    Reverted back to original value.

commit b9a8c92422
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Tue Oct 21 17:02:52 2014 -0400

    fix spelling error

commit b48ae74af4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:26:26 2014 +0200

    Added failing random tests

commit bee0a4100c
Merge: 5050d20 b315da6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:15:05 2014 +0200

    Merge remote-tracking branch 'origin/master' into develop

commit 5050d20b4d
Merge: 7516685 ba35362
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 20 20:18:20 2014 +0200

    Merge pull request #26 from wanderer/develop

    Add a package.json for node.js

commit ba35362876
Author: wanderer <mjbecze@gmail.com>
Date:   Sun Oct 19 23:59:47 2014 -0400

    turned tests into a node module

commit 751668571e
Author: ethers <ethereum@outlook.com>
Date:   Thu Oct 16 17:08:20 2014 -0700

    json was invalid and missing quotes

commit 0e687cee47
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu Oct 16 17:13:24 2014 +0200

    Update vmEnvironmentalInfoTest.json

commit 78a78e2e6c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 15 14:19:11 2014 +0200

    updated genesis_hash

commit b315da618b
Merge: 7a7e198 0a76a3a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 14 10:33:26 2014 +0200

    Merge pull request #23 from ethers/fix22

    numbers should be strings #22

commit 0a76a3a312
Author: ethers <ethereum@outlook.com>
Date:   Mon Oct 13 14:45:30 2014 -0700

    numbers should be strings #22

commit 1f67385f13
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:18:00 2014 +0200

    Added some MUL tests

commit 7a7e198395
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:11:59 2014 +0200

    Added some MUL tests

commit 46eb6283ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 12:18:13 2014 +0200

    tested new opcodes (JUMPDEST,CALLCODE) and created test for CALL/CREATE depth

commit 8d38d62d10
Author: Nick Savers <nicksavers@gmail.com>
Date:   Fri Oct 10 18:09:41 2014 +0200

    INVALID stops the operation and doesn't cost gas

commit ed6eba7c8e
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 19:08:48 2014 +0200

    Update + ABA recursive bomb which needs maximum recursion limit of 1024

commit 2d72050db1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 14:37:18 2014 +0200

    Applied recent protocol changes (PoC7) to existin tests

commit dfe66cab3f
Merge: 4513623 1a67a96
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 11:05:51 2014 +0200

    Merge remote-tracking branch 'origin/develop'

    Conflicts:
    	genesishashestest.json

commit 1a67a96cff
Merge: a4f5f45 ffd6bc9
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 15:10:23 2014 +0100

    Merge pull request #18 from CJentzsch/develop

    CallToNameRegistratorOutOfGas balance correction

commit ffd6bc97ad
Merge: a4f5f45 9779d67
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:47:34 2014 +0200

    Merge remote-tracking branch 'origin/develop' into develop

commit 9779d67b8c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:45:53 2014 +0200

    CallToNameRegistratorOutOfGas balance correction

    Even if execution fails, the value gets transferred.

commit a4f5f45228
Merge: 49a9f47 b6d7cba
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 14:13:12 2014 +0100

    Merge pull request #17 from CJentzsch/develop

    Added A calls B calls A contracts

commit b6d7cba499
Merge: 865cb40 49a9f47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 865cb4083d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:36 2014 +0200

    Added A calls B calls A contracts

commit 49a9f47aec
Merge: 3b0ec43 94a493b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Tue Oct 7 10:56:17 2014 +0200

    Merge pull request #16 from CJentzsch/develop

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 94a493b0d9
Merge: 72853c4 3b0ec43
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:32 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 72853c4382
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:07 2014 +0200

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 3b0ec436e4
Merge: aec3252 222068b
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 05:52:43 2014 +0100

    Merge pull request #15 from CJentzsch/develop

    corrected tests and different style for storage

commit 222068b9ba
Merge: c169653 aec3252
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:28 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit c1696531a6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:09 2014 +0200

    corrected tests and different style for storage

commit aec3252b8e
Merge: 25f9fd5 e17a909
Author: vbuterin <v@buterin.com>
Date:   Mon Oct 6 09:39:46 2014 +0100

    Merge pull request #14 from CJentzsch/develop

    corrected gas limit in vmSystemOperationsTest

commit e17a909f70
Merge: 33fcab5 25f9fd5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:31:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 33fcab5727
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:30:04 2014 +0200

    Bug fix, corrected gasLimit in vmSystemOperationsTest

commit 25f9fd542a
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:47:00 2014 -0400

    one more vm test

commit 2d561a5373
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:15:37 2014 -0400

    separated out vmtests

commit b0c48fa8d6
Merge: cb8261a 6cae166
Author: vbuterin <v@buterin.com>
Date:   Sat Oct 4 17:18:02 2014 +0100

    Merge pull request #13 from CJentzsch/develop

    Added comprehensive EVM test suite. All commands are tested.

commit 6cae166f6f
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 15:34:23 2014 +0200

    Delete tmp.json

commit 4ff906fbc2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 14:06:32 2014 +0200

    corrected CALLSTATELESS tests

commit 5b3fee6806
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 29 13:08:44 2014 +0200

    Completed vm tests. Added ADDMOD, MULMOD, POST, CALLSTATELESS

commit 9cdd218083
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 27 21:48:09 2014 +0200

    Added IOandFlowOperation-, PushDupSwap- and SystemOperations- tests. Removed empty storage from adresses.

commit 28ed968b46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:49:22 2014 +0200

    Added blockInfoTest

commit ffbd5a35b5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:37:52 2014 +0200

    Added environmentalInfo- and sha3- test

commit 54c14f1ff3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 22 13:06:57 2014 +0200

    Added bitwise logic operation test

commit d0af113aab
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 20 01:42:51 2014 +0200

    Added vm arithmetic test

commit cb8261a78b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Sep 19 13:15:44 2014 +0200

    Update genesishashestest.json

commit 4513623da1
Author: Maran <maran.hidskes@gmail.com>
Date:   Tue Jul 22 12:24:46 2014 +0200

    Update keyaddrtest to be valid JSON

commit e8cb5c221d
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 21 23:30:33 2014 -0400

    Added next/prev trie test

commit 98823c04b3
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 14 02:51:31 2014 -0400

    Replaced with deterministic test

commit 357eb21e4d
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun Jul 13 16:12:56 2014 -0400

    Added my own random and namecoin tests (pyethereum)

commit 00cd0cce8f
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jul 12 21:20:04 2014 +0200

    Output hex strings.

commit ddfa3af45d
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 11:28:35 2014 +0100

    Everything a string.

commit d659f469a9
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 10:16:25 2014 +0100

    Code fixes.

commit 5e83ea8228
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 16:17:12 2014 +0200

    Prettier VM tests.

commit a09aae0efe
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 15:46:01 2014 +0200

    Fix VM tests.

commit ec9a044a17
Merge: 4bb6461 5e0123f
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Jul 4 15:56:52 2014 +0200

    Merge pull request #10 from romanman/patch-1

    Update vmtests.json

commit 5e0123fbe1
Author: romanman <roman.mandeleil@gmail.com>
Date:   Fri Jul 4 10:23:04 2014 +0100

    Update vmtests.json

commit 2b6da2f5f2
Author: romanman <roman.mandeleil@gmail.com>
Date:   Thu Jul 3 17:45:04 2014 +0100

    Update vmtests.json

    arith testcase updated

commit 4bb646117d
Merge: bba3898 a33b309
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:22 2014 +0200

    Merge branch 'develop' of github.com:/ethereum/tests into develop

commit bba38980bd
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:06 2014 +0200

    New tests.

commit a33b309d99
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:14:05 2014 -0400

    Testing submodules

commit 50318217ca
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:10:46 2014 -0400

    Testing submodules

commit 57fa655522
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:09:08 2014 -0400

    Testing submodules

commit ea0eb0a8c8
Author: Gav Wood <i@gavwood.com>
Date:   Tue Jul 1 15:19:34 2014 +0200

    Latest genesis block.

commit 25bb76b69c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 13:25:04 2014 +0200

    Reset

commit 74c6d8424e
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 12:10:06 2014 +0200

    Updated wrong test

commit 9ea3a60291
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Sat Jun 28 18:48:28 2014 +0200

    Fixed roots

commit 5fc3ac0e92
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:40:06 2014 +0200

    Simple hex test.

commit edd3a00c2a
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:22:18 2014 +0200

    Additional test for jeff. Now use the 0x... notation.

commit 5021e0dd83
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 21:35:26 2014 +0200

    VM test framework updated.

commit c818d13202
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 18:18:24 2014 +0200

    Removed arrays from Trie tests JSON as per conformance guide and changed
    vocabulary to match other tests.
    VM test updates.

commit 714770ffb3
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jun 11 11:32:42 2014 +0100

    Added Gav's new address.

commit 9345bc13d4
Merge: a2257f3 78576dd
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:38 2014 +0200

    Merge branch 'master' of github.com:ethereum/tests into develop

commit a2257f3471
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:18 2014 +0200

    VM tests.

commit 78576dd3d3
Author: Heiko Heiko <heiko@heiko.org>
Date:   Fri May 30 17:19:09 2014 +0200

    changes based on new account structure nonce, balance, storage, code

commit 125839e848
Merge: 42e14ec 356a329
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu May 22 09:58:45 2014 +0200

    Merge pull request #5 from bkirwi/master

    Fix invalid JSON (removed trailing comma) and add test names

commit 356a3296bc
Author: Ben Kirwin <ben@kirw.in>
Date:   Thu May 22 00:20:48 2014 -0400

    Add some arbitrary test names

    This should now conform to the format specified in the README.

commit 42e14ec54f
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 23:27:40 2014 +0800

    revert to correct data

commit 4300197a74
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:42:23 2014 +0800

    fix: wrong sha3 hash because of the wrong rlp hex

commit a0d01b1a0b
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:29:53 2014 +0800

    fix: wrong rlp hex

commit 6bc2fc7405
Merge: 66bc366 c31a93c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed May 21 14:11:37 2014 +0200

    Merge pull request #4 from ethers/master

    fix file name that seems to have been a typo

commit c31a93c27a
Author: ethers <ethereum@outlook.com>
Date:   Tue May 20 15:42:39 2014 -0700

    fix file name that seems to have been a typo

commit 66bc3665c1
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:36:35 2014 +0200

    fix: represent integers as strings

commit ede5499da6
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:21:09 2014 +0200

    add: current initial alloc and genesis hashes

commit 5131429abb
Author: Ben Kirwin <ben@kirw.in>
Date:   Mon May 19 11:18:31 2014 -0400

    Delete a comma

    This should now be parseable as JSON.

commit f44a859331
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Sun May 18 15:04:42 2014 +0800

    add: case when value is long, ensure it's not get rlp encoded as node

commit e1ae4ad449
Author: Gav Wood <i@gavwood.com>
Date:   Mon May 12 14:40:47 2014 +0100

    PoC-5 VM tests.

commit 2b6c136dda
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun May 11 21:42:41 2014 -0400

    Moved txt to json

commit cbccbf977c
Merge: edbb8d4 45a0974
Author: Vitalik Buterin <v@buterin.com>
Date:   Thu May 8 21:54:48 2014 -0400

    New commit

commit edbb8d407e
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue May 6 16:53:43 2014 -0400

    Removed unneeded test, added new tests

commit 45a0974f6f
Merge: 15dd8fd 5fd2a98
Author: Gav Wood <i@gavwood.com>
Date:   Sun Apr 27 12:53:47 2014 +0100

    Merge pull request #3 from autolycus/develop

    Fixed formatting and added test cases

commit 5fd2a98fcb
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 13:26:14 2014 -0700

    Added some new test cases for the rlp encoding.

commit 4ba150954e
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 12:48:42 2014 -0700

    Converted spaces to tabs to be compliant with the coding standards defined in cpp-ethereum

commit 15dd8fd794
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 12:54:47 2014 +0000

    RLP tests and Trie updates.

commit 33f80fef21
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:39:35 2014 +0000

    Hex encode tests done.

commit e1f5e12abb
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:22:49 2014 +0000

    Fix RLP tests.

commit f87ce15ad2
Author: Gav Wood <i@gavwood.com>
Date:   Thu Feb 27 13:28:11 2014 +0000

    Fix empty string.

commit c006ed4ffd
Author: Gav Wood <i@gavwood.com>
Date:   Mon Feb 24 10:24:39 2014 +0000

    Tests fix.

commit 510ff56363
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:54:08 2014 +0000

    Updated the tests.

commit a0ec843832
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:49:24 2014 +0000

    Moved over to new format, but RLP tests still need updating.

commit 660cd26f31
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:35:51 2014 +0000

    More docs.

commit 6ad14c1a15
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:33:39 2014 +0000

    Added VM test suite.
    Added TODO.
    Renamed old files.

commit f91ad7b385
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 11:26:58 2014 -0500

    update trie algorithm

commit 6da2954462
Merge: cc42246 131c610
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 08:15:38 2014 -0500

    merge

commit cc4224675f
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Jan 7 14:35:26 2014 -0500

    Updated trie test

commit 131c610da6
Merge: 121632b 7613302
Author: vbuterin <v@buterin.com>
Date:   Wed Jan 1 06:40:54 2014 -0800

    Merge pull request #1 from obscuren/master

    Update trietest.txt

commit 7613302b49
Author: obscuren <obscuren@users.noreply.github.com>
Date:   Wed Jan 1 15:25:21 2014 +0100

    Update trietest.txt

    New proposed explanatory format

commit 121632bedd
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 1 08:26:18 2014 -0500

    Added obscure's tests

commit ef6c5506c3
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 19:04:48 2013 -0500

    Fixed tests a bit

commit 345e4bcfef
Merge: 2c81698 e4bbea4
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 15:52:46 2013 -0500

    Merge branch 'master' of github.com:ethereum/tests

commit 2c81698f31
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Dec 30 21:09:40 2013 -0500

    Added first three tests

commit e4bbea400f
Author: vbuterin <v@buterin.com>
Date:   Mon Dec 30 18:09:03 2013 -0800

    Initial commit
2014-12-12 11:34:27 +01:00
Jeffrey Wilcke
d899334bba Merge pull request #1 from Gustav-Simonsson/fix_reference_links
Update reference pdf links
2014-12-11 23:30:45 +01:00
CJentzsch
779f25d36c first random test 2014-12-11 22:59:56 +01:00
CJentzsch
68175386c0 update gas prices 2014-12-11 21:34:50 +01:00
Gustav Simonsson
ce796dcdbf Update reference pdf links 2014-12-11 13:25:01 +01:00
obscuren
2b5fcb4642 moved interfaces 2014-12-10 20:26:55 +01:00
obscuren
5553e5aaed states moved to chain 2014-12-10 19:59:12 +01:00
obscuren
af6afbaa56 Removed start/stop methods 2014-12-10 16:48:39 +01:00
obscuren
1b98cbbfa4 Moved pow 2014-12-10 16:45:16 +01:00
zelig
3e38f8af23 initial commit for eth blockpool + test 2014-12-10 14:51:47 +00:00
zelig
e74f9f27db eth protocol changes
- changed backend interface
- using callbacks for blockPool
- use rlp stream for lazy decoding
- use peer as logger
- add id (peer pubkey) to ethProtocol fields
- add testPeer to protocol test (temporary)
2014-12-10 14:51:47 +00:00
zelig
31a9fdced8 no logging in error (to be refactored into p2p) 2014-12-10 14:51:47 +00:00
zelig
47793b606c initial commit for eth-p2p integration 2014-12-10 14:51:47 +00:00
obscuren
4082c8b61d added simple peer server 2014-12-10 15:29:22 +01:00
obscuren
dda778eda7 Updated whisper messages to new crypto api + added tests 2014-12-10 14:17:32 +01:00
obscuren
0f5c6c5e2d Changed new methods to use ecdsa package for pub prv keys 2014-12-10 14:17:10 +01:00
obscuren
186948da22 changed to unsigned integers 2014-12-10 11:27:10 +01:00
obscuren
4f1ef89cb2 updated tests 2014-12-10 11:04:21 +01:00
obscuren
1fb84d3c5f Fixed tests 2014-12-10 10:57:19 +01:00
obscuren
3308491c92 Removed tests because they've become obsolete 2014-12-10 00:09:32 +01:00
obscuren
9ff7be68fb Merge branch 'poc8' into develop 2014-12-10 00:06:38 +01:00
Jeffrey Wilcke
ce0c4e5d86 Merge pull request #203 from fjl/rlp-fixes
RLP: remove signed integer support and other fixes
2014-12-10 00:06:17 +01:00
obscuren
984c7e6689 Added encryption for messages better API for sealing messages 2014-12-10 00:03:50 +01:00
obscuren
87adff7e18 Added Encrypt & Decrypt using the ECIES w/ tests 2014-12-10 00:03:21 +01:00
obscuren
c24018e273 Added S256 curve 2014-12-10 00:02:43 +01:00
obscuren
6cf6981ed0 init 2014-12-10 00:00:52 +01:00
Felix Lange
6cf4e0329c rlp: display decoder target type in more error messages
Decode error messages now say "expected input list for foo.MyStruct"
instead of just "expected List".
2014-12-09 22:28:49 +01:00
obscuren
df5157c0b0 PV49 2014-12-09 20:28:36 +01:00
obscuren
acf4b5753f Core changes
* Code = '' if gas < len(D) * 5
* Sha3 gas   10 + 10 * len(D), rounding up 32 bytes
* Sha256 gas 50 + 50 * len(D), rounding up 32 bytes
* Ripmed gas 50 + 50 * len(D), rounding up 32 bytes
* Accounts and value transfers no longer reverted
2014-12-09 20:27:57 +01:00
Felix Lange
829730dec4 rlp: remove dead code 2014-12-09 12:49:20 +01:00
Felix Lange
c084a7daa5 rlp: fix panic in decodeList on go 1.4+
The documentation for reflect.Value.Index states that it will
panic for out-of-bounds indices. Since go 1.4, it actually panics.
2014-12-09 10:58:46 +01:00
Felix Lange
93e858f88e rlp: remove support for signed integer types
There is no agreement on how to encode negative integers
across implementations. cpp-ethereum doesn't support them either.
2014-12-09 10:58:46 +01:00
Felix Lange
4f12f0697e rlp: move decoder type switch to decode.go 2014-12-09 10:52:05 +01:00
obscuren
76842b0df8 Additional checks and debug output 2014-12-08 14:25:52 +01:00
obscuren
e3a8412df3 Proper start/stoping wpeers 2014-12-08 13:16:50 +01:00
obscuren
ebe2d9d872 First draft of Whisper messages relaying 2014-12-08 12:43:33 +01:00
CJentzsch
ad322fbb58 Log as array 2014-12-08 06:01:17 +01:00
obscuren
f06543fd06 Merge branch 'poc8' into develop 2014-12-05 16:27:48 +01:00
obscuren
195b2d2ebd Merge branch 'fjl-feature/p2p-protocol-interface' into poc8 2014-12-05 16:27:37 +01:00
obscuren
384b8c75f0 Merge branch 'feature/p2p-protocol-interface' of https://github.com/fjl/go-ethereum into fjl-feature/p2p-protocol-interface 2014-12-05 16:27:11 +01:00
obscuren
9925916851 upped proto version and modified block pool 2014-12-05 16:26:39 +01:00
CJentzsch
f989f42618 state log tests 2014-12-05 15:12:12 +01:00
obscuren
095cb97675 EXP simplified 2014-12-05 14:52:36 +01:00
obscuren
d80f8bda94 Fixed issue in VM where LOG didn't pop anything of the stack 2014-12-05 12:32:47 +01:00
obscuren
3cf0477c21 Merge branch 'poc8' into develop 2014-12-04 23:54:40 +01:00
obscuren
8dbca75d85 Skip mining on transactions that don't meet the min accepted gas price 2014-12-04 23:54:07 +01:00
Jeffrey Wilcke
710360bab6 Merge pull request #199 from ethereum/tests
Submit code coverage to coveralls only on travis build success
2014-12-04 23:00:12 +01:00
CJentzsch
4bc65d1129 add calldataload, codecopy, extcodecopy tests 2014-12-04 18:18:49 +01:00
obscuren
3db9c80070 Removed mutan. Closes #183 2014-12-04 17:13:23 +01:00
obscuren
085f604b27 Show newly created private key during startup. Closes #126 2014-12-04 17:09:47 +01:00
obscuren
a5b27bbc10 Improved and simplified wallet functions and behaviour 2014-12-04 16:44:43 +01:00
obscuren
8c7e4b290f Added pre processing of transaction on the transient state 2014-12-04 16:44:14 +01:00
CJentzsch
12cfae18e3 add calldataload test 2014-12-04 15:57:56 +01:00
obscuren
5653898150 vim error :S 2014-12-04 15:38:41 +01:00
obscuren
73123bf257 Only set TD if it's actually higher 2014-12-04 15:35:21 +01:00
obscuren
73c4ca3a6f Upped protocol version 2014-12-04 15:31:48 +01:00
obscuren
296112848c Moved block validation as first step 2014-12-04 15:13:29 +01:00
obscuren
008e91db6a null ptr fix 2014-12-04 12:43:12 +01:00
obscuren
3043b233ea Log is now interface 2014-12-04 12:35:23 +01:00
obscuren
bff5999efa sort tests for evm 2014-12-04 12:09:22 +01:00
obscuren
f298ffdbb8 Renamed State => StateDB 2014-12-04 11:40:20 +01:00
obscuren
3664cd58e3 Updated testing tools 2014-12-04 11:30:41 +01:00
obscuren
491edc16e7 Fixes #189 2014-12-04 10:57:09 +01:00
obscuren
83663ed4b0 Renames for chain, updated VM, moved methods
* Renamed a couple more chain => core
* Updated VM `pc` to be uint64 rather than big int
* XEth interface cleanup
2014-12-04 10:53:49 +01:00
obscuren
9008b155d3 Renamed chain => core 2014-12-04 10:28:02 +01:00
obscuren
b6cb5272de Descriptive function names for closure getters 2014-12-03 17:35:57 +01:00
obscuren
6d99c03d91 Updated environments according to the new interface set 2014-12-03 17:22:26 +01:00
obscuren
99853ac3ce Moved execution from vm to chain.
This moves call and create to the specified environments. Vms are no
longer re-used. Vm uses environment's Call(Code) and Create in order to
execute new contracts or transfer value between accounts.

State transition now uses the same mechanism described above.
2014-12-03 17:06:54 +01:00
obscuren
8240550187 updated to types 2014-12-03 14:05:19 +01:00
obscuren
709eff4ea7 reverted vm back 2014-12-03 13:52:30 +01:00
obscuren
6212175be3 reverted vm back 2014-12-03 13:52:13 +01:00
obscuren
6095edac58 merge 2014-12-03 13:50:51 +01:00
obscuren
3d9a4e7084 Fixed mem error in vm. Fixed logs tests 2014-12-03 12:21:12 +01:00
CJentzsch
086caf3701 protocol update (CALLCODE <-> RETURN), topics in log are arrays not sets 2014-12-03 08:31:03 +01:00
obscuren
f778922086 Set proper message value 2014-12-02 22:37:45 +01:00
obscuren
edc52bdcbf Updated value for mined blocks. Closes #197 2014-12-02 22:23:20 +01:00
obscuren
0a22dc2ce5 Check coinbase for from/to inclusion 2014-12-02 22:22:43 +01:00
obscuren
cb4d168ecc Updated LOG to match proper gas in all cases 2014-12-02 17:22:33 +01:00
obscuren
5ebae82eeb Additional logging and removed temp merged mining options. 2014-12-02 12:23:27 +01:00
obscuren
64f35ba8d1 merge errors fixed 2014-12-02 11:52:56 +01:00
obscuren
99481a245a Check for known block err and ignore 2014-12-02 11:37:33 +01:00
obscuren
9f7a8ea5e6 updated tests 2014-12-02 10:29:39 +01:00
obscuren
b4eeffa8f1 Transaction strictness 2014-12-02 00:14:34 +01:00
obscuren
2df8ad6307 Added state tests 2014-12-02 00:03:53 +01:00
obscuren
a052357872 Fixed EXP gas 2014-12-01 22:05:38 +01:00
CJentzsch
e6c92673b9 update state tests with logs 2014-12-01 21:14:08 +01:00
obscuren
a22056db59 Make an attempt to pay for the gas prior to expanding the mem. 2014-12-01 20:49:56 +01:00
obscuren
beb7d35c40 Updated tests 2014-12-01 20:21:41 +01:00
obscuren
d33987cb44 Additional fees for *COPY 2014-12-01 20:20:55 +01:00
obscuren
6dc46d3341 Changed the way transactions are being added to the transaction pool 2014-12-01 20:18:09 +01:00
CJentzsch
4089b809fb update gas costs 2014-12-01 18:19:40 +01:00
Christoph Jentzsch
cfdca62277 Merge pull request #42 from negedzuregal/fix
vmTest fix
2014-12-01 18:04:51 +01:00
alon muroch
f59f89d876 vmEnvironmentalInfoTest CALLDATACOPY, CODECOPY, EXTCODECOPY fix 2014-12-01 16:18:12 +01:00
alon muroch
68da13fe3e vmArithmeticTest exp fix 2014-12-01 11:10:57 +01:00
obscuren
616066a598 rework vm 2014-11-30 21:02:59 +01:00
ethers
2e5175e818 add vmLogTest 2014-11-30 19:55:51 +01:00
Heiko Heiko
b5b9408e64 updated genesis to new header w/o min_gas_price 2014-11-30 16:27:27 +01:00
Ethan Buchman
7c24cd790d fix panic on bad sender 2014-11-28 19:42:05 -05:00
obscuren
1bce02eff7 Fixed merge 2014-11-28 21:44:34 +01:00
obscuren
a3559c5e1b updated PV 2014-11-28 21:38:10 +01:00
obscuren
c8d0f8adc5 Changed refund 2014-11-28 21:20:32 +01:00
obscuren
6ba8328077 Removed min gas price from genesis 2014-11-28 20:57:10 +01:00
obscuren
61556ef01d GasData changes & removed min gas price 2014-11-28 20:47:24 +01:00
Taylor Gerring
ef7961b7d2 Merge pull request #194 from ethereum/poc8
Update tests branch to PoC8
2014-11-27 13:23:31 +01:00
Taylor Gerring
c17a3cb0ce chain coverage report & submission
prevent coverage results from being submitted to coveralls if when the
build fails
2014-11-27 12:42:13 +01:00
Felix Lange
cfd7e74c25 p2p: add test for NewPeer 2014-11-26 22:49:40 +01:00
Felix Lange
3a09459c4c p2p: make Disconnect not hang for peers created with NewPeer 2014-11-26 22:08:54 +01:00
Felix Lange
9b85002b70 p2p: remove Msg.Value and MsgLoop 2014-11-25 16:01:39 +01:00
Felix Lange
f816fdcb69 rlp: include target type in decoder error messages 2014-11-25 16:00:48 +01:00
Felix Lange
6049fcd52a p2p: use package rlp for baseProtocol 2014-11-25 12:25:31 +01:00
Felix Lange
c1fca72552 p2p: use package rlp 2014-11-24 19:03:20 +01:00
Felix Lange
205af02a1f rlp: add NewListStream (for p2p) 2014-11-24 19:03:17 +01:00
Felix Lange
5a5560f105 rlp: add Stream.Reset and accept any reader (for p2p) 2014-11-24 19:03:11 +01:00
ethers
8e69fbfa98 add special tests 2014-11-21 17:42:05 -08:00
Felix Lange
59b63caf5e p2p: API cleanup and PoC 7 compatibility
Whoa, one more big commit. I didn't manage to untangle the
changes while working towards compatibility.
2014-11-21 21:52:45 +01:00
Felix Lange
e4a601c644 p2p: disable failing Server tests for now 2014-11-21 21:52:45 +01:00
Felix Lange
7149191dd9 p2p: fix issues found during review 2014-11-21 21:52:45 +01:00
Felix Lange
f38052c499 p2p: rework protocol API 2014-11-21 21:52:45 +01:00
Jeffrey Wilcke
4cd9d57bad Merge pull request #187 from honestmoney/develop
Fix for broken develop build and install.sh
2014-11-21 13:22:14 -05:00
obscuren
8cf9ed0ea5 Fixed test 2014-11-21 10:48:07 -05:00
Eric Robitaille
28b7dcc204 go get deps doesnt work with develop branch 2014-11-21 08:16:32 -05:00
Eric Robitaille
eba3fca7bc go get dependencies on executable 2014-11-21 08:05:52 -05:00
Eric Robitaille
6c098ee779 changed install.sh to change branch and install executable 2014-11-21 00:06:33 -05:00
ethers
90f4f942e6 typo 2014-11-20 19:01:09 -08:00
Eric Robitaille
c0bbb7e69a fix for install script devel 2014-11-20 15:02:24 -05:00
Eric Robitaille
d5ac24907e Updated install.sh - github paths for executables 2014-11-20 14:25:26 -05:00
Eric Robitaille
0f47129113 Updated main.go - fix for broken develop build
Transaction execution fixes - 60cdb1148c
2014-11-20 14:16:22 -05:00
obscuren
9b8a12b4b5 Removed naively casting to bytes 2014-11-20 18:20:04 +01:00
obscuren
12f1aea38d Fixed iterator for short nodes.
In some cases the iterator didn't properly return the correct key
because it didn't append fields to the reverse lookup.
2014-11-20 18:11:31 +01:00
Christoph Jentzsch
c5e5228e0d Removed log,post,out,gas,callcreates if exception occured 2014-11-20 17:04:06 +01:00
Christoph Jentzsch
9c0232a2b9 MakeMoney test 2014-11-19 18:19:05 +01:00
obscuren
b05e63c34d Added paranoia check for tries 2014-11-19 16:56:01 +01:00
obscuren
cab7e6000e Increased coverage 2014-11-19 16:35:57 +01:00
Christoph Jentzsch
3ba0007e86 Added log sections in all vmtests + log tests 2014-11-19 16:23:04 +01:00
obscuren
0f460ad26e Added caching and database interface to trie
* Reimplemented caching for trie
* Reimplemented resetting and persisting trie
2014-11-19 16:21:28 +01:00
obscuren
e70529a977 Added new iterator and tests 2014-11-19 15:05:08 +01:00
obscuren
14e2e488fd Added chain tests & minor fixes
* Fork tests (equal and larger chains)
* `chain.link` fields are now exported
* moved debug function from state to dump.go
2014-11-19 12:25:52 +01:00
Christoph Jentzsch
d84be4fe07 Merge remote-tracking branch 'origin/develop' into develop 2014-11-19 10:00:24 +01:00
Christoph Jentzsch
c8497ab257 new push32 test and renaming 2014-11-19 10:00:02 +01:00
obscuren
437d79f094 Updated readme 2014-11-18 20:23:17 +01:00
obscuren
93e693be72 Fixed tests for 'types' 2014-11-18 19:52:45 +01:00
obscuren
675ba4d7eb Merge branch 'tests' into poc8 2014-11-18 19:48:35 +01:00
obscuren
f8d0cd9906 Added a callback mechanism to chain adding.
Not sure if this is the right approach. Why? BlockChain shouldn't need
the "Ethereum" object. BlockChain shouldn't need to worry about
notifying listeners or message propagation.
2014-11-18 19:44:17 +01:00
obscuren
a1b6a9ac29 Begin of moving objects to types package
* Block(s)
* Transaction(s)
2014-11-18 16:58:22 +01:00
Marek Kotewicz
b402484e41 common changes 2014-11-18 13:59:17 +01:00
obscuren
62cd9946ee j => i 2014-11-18 12:20:14 +01:00
obscuren
e08aba5dd9 added output test 2014-11-18 12:18:27 +01:00
obscuren
34f29d57b6 Update vm_debug.go 2014-11-18 12:03:51 +01:00
obscuren
3220a32ff0 Added some comparison tests for the new ptrie 2014-11-18 12:03:09 +01:00
obscuren
f7417d3552 New modified patricia trie 2014-11-18 12:02:13 +01:00
Marek Kotewicz
04845d42c0 Merge pull request #1 from cubedro/master
Fixed autoprovider bug
2014-11-18 09:08:15 +01:00
Marian Oancea
0d526d66b7 Updated version
Changed version from npm in order to publish the update
2014-11-18 09:23:16 +02:00
Marian OANCΞA
8fe16df6c9 Merge pull request #11 from debris/master
Update
2014-11-18 09:21:06 +02:00
Marian Oancea
1a9624af51 Fixed require web3 bug
Fixed error "Cannot find module './web3'" in autoprovider.js
2014-11-18 09:11:16 +02:00
Marian OANCΞA
8b7e59729f Merge pull request #10 from debris/abi
Abi
2014-11-18 09:00:01 +02:00
ethers
76d25420e1 adding test 2014-11-17 18:59:30 -08:00
Christoph Jentzsch
0be275e757 Merge remote-tracking branch 'origin/develop' into develop 2014-11-17 22:47:34 +01:00
Christoph Jentzsch
1d42d1d7c6 fix ecrecover2 2014-11-17 22:46:51 +01:00
Christoph Jentzsch
d90868c307 Merge pull request #39 from wanderer/develop
added test for max call depth on creation
2014-11-17 20:26:59 +01:00
wanderer
6dbcf6b0d6 spelling fix 2014-11-17 14:06:43 -05:00
Taylor Gerring
5c958ec5f6 Undo running go vet in travis 2014-11-17 10:53:24 -06:00
Taylor Gerring
2a5af8fac7 enable go vet 2014-11-17 10:40:40 -06:00
Taylor Gerring
559a81da6f enable golint 2014-11-17 10:21:19 -06:00
Marek Kotewicz
27a8799e48 added eth_serpent, contract separated to another file 2014-11-17 15:46:46 +01:00
obscuren
a19d2c2278 Merge branch 'develop' into refactor 2014-11-17 12:14:05 +01:00
obscuren
cad770c734 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2014-11-17 12:13:11 +01:00
obscuren
ca74bcc4cd cleaning up 2014-11-17 12:12:55 +01:00
Jeffrey Wilcke
b4e47a094c Merge pull request #184 from fjl/feature/rlp
rlp: new package for streaming RLP decoder
2014-11-17 03:12:18 -08:00
Felix Lange
bd0a50fdc3 rlp: fix pointer reuse 2014-11-17 12:02:08 +01:00
Felix Lange
74266d5bbd rlp: new package for streaming RLP decoder 2014-11-17 01:49:47 +01:00
Taylor Gerring
9095b37343 Convert vm test to checker
Tests are skipped due to reliance on deprecated mutan
2014-11-16 13:45:46 -06:00
Taylor Gerring
ffab36c7d8 Update ethutil/common tests to checker 2014-11-16 12:08:27 -06:00
Taylor Gerring
f82fb889b7 Add goveralls to travis builds 2014-11-16 08:34:28 -06:00
wanderer
6fc07a7f81 added test for max call depth on creation 2014-11-15 21:39:59 -05:00
Taylor Gerring
ddca18638f update imports order per goimports 2014-11-15 20:21:55 -06:00
Taylor Gerring
3588c4a9fe formatting update per gofmt 2014-11-15 20:21:03 -06:00
Taylor Gerring
71b338e8ac update travis steps 2014-11-15 19:45:05 -06:00
Taylor Gerring
58812fad42 Reorg travis.yml 2014-11-15 19:36:30 -06:00
Taylor Gerring
790ded0f47 Update travis deps script 2014-11-15 19:11:43 -06:00
Taylor Gerring
6dbd7a9a80 add websocket to deps 2014-11-15 18:59:56 -06:00
Taylor Gerring
e1e50f4afd add go cover to install list 2014-11-15 18:54:26 -06:00
Taylor Gerring
3a656c07f1 add go-nat-pmp to manual install list 2014-11-15 18:49:18 -06:00
Taylor Gerring
ec75119341 Update deps script 2014-11-15 18:42:48 -06:00
Taylor Gerring
0b64906a72 Add -y flags 2014-11-15 18:28:09 -06:00
Taylor Gerring
1beb9a2b8b update apt repos 2014-11-15 18:22:01 -06:00
Taylor Gerring
242667ebe5 update travis build deps 2014-11-15 18:12:50 -06:00
Taylor Gerring
5211fb0c79 make script executable 2014-11-15 17:56:16 -06:00
Taylor Gerring
81e7f8679e script fix 2014-11-15 17:51:58 -06:00
Taylor Gerring
6f7f570670 custom travis build script
Based on https://github.com/daaku/go.travis/blob/master/install
2014-11-15 17:45:08 -06:00
Taylor Gerring
8f9a354682 try to fix travis dep error 2014-11-15 09:07:02 -06:00
Taylor Gerring
bc5d924b83 more travis changes 2014-11-14 22:23:31 -06:00
Taylor Gerring
9481f86c37 run coverage after build 2014-11-14 22:17:01 -06:00
Taylor Gerring
dd9e99a418 try to get full coverage report on travis 2014-11-14 20:58:09 -06:00
martin becze
1f38c8c0a2 Merge pull request #38 from wanderer/develop
updated test  'jeff' in trietest.json
2014-11-14 20:10:21 -05:00
martin becze
cd85ca17ed Update trietest.json 2014-11-14 19:59:34 -05:00
obscuren
33afb10b0d clean up 2014-11-15 00:29:27 +01:00
martin becze
279b284c0d Merge pull request #37 from wanderer/develop
Update trietest.json
2014-11-14 17:43:49 -05:00
martin becze
6cae937e5e Update trietest.json
'emptyValues' should have the same root as 'puppy'
2014-11-14 17:20:03 -05:00
Taylor Gerring
1ecb3b4cf3 Remove failing Printf 2014-11-14 15:53:45 -06:00
Taylor Gerring
dcd8cc8341 added test file to root directory 2014-11-14 15:31:15 -06:00
Taylor Gerring
e6e468ef59 Merge branch 'develop' of https://github.com/tgerring/go-ethereum into tests
Conflicts:
	p2p/messenger_test.go
	trie/trie_test.go
2014-11-14 15:19:50 -06:00
Taylor Gerring
2a9fc7baa9 Merge branch 'develop' of https://github.com/tgerring/go-ethereum 2014-11-14 15:01:52 -06:00
Jeffrey Wilcke
f6ee8e52dd Merge pull request #13 from frewsxcv/master
Enable JSHint linting
2014-11-14 20:24:55 +01:00
Corey Farwell
08f2dde45a Enable JSHint linting 2014-11-14 14:00:19 -05:00
Jeffrey Wilcke
42713c6e99 Merge pull request #12 from debris/master
simplifie contract creation && calls, improved added examples
2014-11-14 17:20:05 +01:00
Jeffrey Wilcke
7ffba22f2d Merge pull request #10 from cubedro/master
NPM module with minification for browser integration.
2014-11-14 17:16:28 +01:00
Jeffrey Wilcke
60198a05b9 Merge pull request #11 from ethereum/revert-6-master
Revert "Run JSHint on all code using Travis CI"
2014-11-14 17:08:47 +01:00
Jeffrey Wilcke
6b8b1259e2 Revert "Run JSHint on all code using Travis CI" 2014-11-14 17:08:29 +01:00
Jeffrey Wilcke
c966a5c17e Merge pull request #6 from frewsxcv/master
Run JSHint on all code using Travis CI
2014-11-14 17:07:38 +01:00
obscuren
56aa24002d Clean up 2014-11-14 14:17:54 +01:00
obscuren
711be7009e Version bump 2014-11-14 13:51:41 +01:00
obscuren
f6e55962a8 Fixes for PV41/42
* Don't expand mem on empty value
* Removed all coinbase logs for PV42
* Removed C++ bug stuff for LOG*
2014-11-14 13:47:12 +01:00
Marek Kotewicz
ea8db7a4ae improved contracts interface 2014-11-14 13:11:47 +01:00
Christoph Jentzsch
89675a7153 Merge remote-tracking branch 'origin/develop' into develop 2014-11-13 23:17:49 +01:00
Christoph Jentzsch
f1de1cc97a Fix CallRecursiveBomb2 2014-11-13 23:17:13 +01:00
martin becze
32f0c47c68 Merge pull request #36 from wanderer/develop
converted back to arrary format
2014-11-13 15:26:49 -05:00
Marek Kotewicz
8aaec1d98f improved example 2014-11-13 19:28:58 +01:00
Marek Kotewicz
b1428555d1 added storageAt 2014-11-13 18:29:31 +01:00
obscuren
20d518ee95 Numerous fixes for consensus.
* Removed (buged) C++ specific gas specification for LOG*
* Fixed LOG* where mstart went after msize
*
2014-11-13 18:12:12 +01:00
Marek Kotewicz
0e67fcd361 contract object 2014-11-13 12:24:34 +01:00
Christoph Jentzsch
ab50e76652 Merge pull request #35 from ethers/delOld
rename tests since they are valid opcodes that exist
2014-11-13 07:52:35 +01:00
Taylor Gerring
313cfba7d4 convert trie encoding tests to checker 2014-11-13 04:40:21 +01:00
wanderer
3da90d01f6 converted back to arrary format 2014-11-12 22:22:47 -05:00
Marek Kotewicz
d99fea2db6 abi output formatting 2014-11-13 04:21:51 +01:00
ethers
78f1e4a945 rename tests since they are valid opcodes that exist 2014-11-12 19:11:06 -08:00
Taylor Gerring
461324a801 Remove references to mutan
obscuren/mutan is deprecated
2014-11-12 22:08:56 +01:00
Taylor Gerring
fa59db7595 Add initial state/TestDump test 2014-11-12 22:03:03 +01:00
Taylor Gerring
bd9bd4abed Reorg state tests 2014-11-12 22:02:39 +01:00
Taylor Gerring
6eacc8eab9 eth-go -> go-ethereum 2014-11-12 21:52:37 +01:00
Taylor Gerring
00878e5b6e Convert trie tests to gocheck 2014-11-12 21:43:25 +01:00
Marek Kotewicz
7ce63d32b2 qt version also requires abi 2014-11-12 20:56:21 +01:00
Marek Kotewicz
3451f26086 changes to make everything work 2014-11-12 20:39:13 +01:00
Marek Kotewicz
05290d5547 abi, the beginning 2014-11-12 18:59:29 +01:00
Christoph Jentzsch
d06b792cd0 minor change in CallSha256_1_nonzeroValue test 2014-11-12 07:00:17 +01:00
Christoph Jentzsch
d434ecdcc3 Added CallSha256_1_nonzeroValue test 2014-11-12 06:56:31 +01:00
obscuren
60cdb1148c Transaction execution fixes 2014-11-12 01:36:36 +01:00
obscuren
9bb1ac7564 Fixes for the log method 2014-11-11 23:14:22 +01:00
obscuren
6c9e503eb8 Removed all implicit logging. Fixed gas issues and jump errors 2014-11-11 22:52:27 +01:00
Taylor Gerring
1d866b5e57 Merge pull request #1 from tgerring/tests
Initial tests based on check framework
2014-11-11 20:37:18 +01:00
Taylor Gerring
5c5df21e3d Update TestDeleteFromByteSlice
Still broken
2014-11-11 20:05:27 +01:00
Taylor Gerring
12e8404f8f Fix TestBytestoNumber 2014-11-11 20:04:03 +01:00
Taylor Gerring
0d1cdd26d6 Update TestNumberToBytes 2014-11-11 20:03:50 +01:00
Taylor Gerring
cff0d93105 Converts bytes_test to checker 2014-11-11 19:38:23 +01:00
Taylor Gerring
c24d143c9e Convert rand_test to checker 2014-11-11 19:18:52 +01:00
Taylor Gerring
bfd1fe977e Update test style to checker 2014-11-11 19:05:35 +01:00
Taylor Gerring
d9ccbf04db Move test bootstrap to main_test.go 2014-11-11 19:05:23 +01:00
Christoph Jentzsch
2c06f34cc0 Store return value of call to precompiled contracts 2014-11-11 18:10:26 +01:00
Christoph Jentzsch
4b0c3b29ae Fix gas cost for OOG calls 2014-11-11 17:51:14 +01:00
Marian OANCΞA
dc100f85b3 Merge pull request #9 from debris/autoprovider
common fixes
2014-11-11 17:31:04 +02:00
Marek Kotewicz
0316490c54 common fixes 2014-11-11 16:29:53 +01:00
Marian OANCΞA
d85cef557b Merge pull request #8 from debris/autoprovider
Autoprovider
2014-11-11 17:20:53 +02:00
Marek Kotewicz
838ca2fd93 autoprovider, buildQt not builds only necessery files, fixed gulpfile 2014-11-11 15:47:58 +01:00
Taylor Gerring
cd94b5ffb3 Convert value_test to use gocheck 2014-11-11 15:04:11 +01:00
Taylor Gerring
3c619baec5 Add verbose comments to TestSnapshot 2014-11-11 13:07:24 +01:00
Taylor Gerring
8f3a03c0cc Update state tests to use gocheck 2014-11-11 12:52:43 +01:00
obscuren
75ee3b3f08 debugging code 2014-11-11 12:16:36 +01:00
Marek Kotewicz
84b36a7193 retabed files 2014-11-11 11:46:46 +01:00
Marian Oancea
dea68f073e Merge branch 'debris-subprotocol_prefix_merge' 2014-11-11 12:15:36 +02:00
Marian Oancea
7af9cc70d0 fixed merge conflicts 2014-11-11 12:11:06 +02:00
Marek Kotewicz
4b876168f4 gulp qt task 2014-11-11 10:45:38 +01:00
Marek Kotewicz
d92a7527db merged subprotocol prefix 2014-11-11 10:30:21 +01:00
Heiko Heiko
63bcca7604 fix: genesis test 2014-11-11 08:59:19 +01:00
Christoph Jentzsch
6e0310c1ea Merge remote-tracking branch 'origin/develop' into develop 2014-11-11 08:34:36 +01:00
Christoph Jentzsch
30c266caff jump to position outside code stops execution 2014-11-11 08:33:59 +01:00
ethers
2927763d68 RandomTests were removed 2014-11-10 14:10:22 -08:00
Christoph Jentzsch
a0fa91b2b8 Merge branch 'develop' of https://github.com/ethereum/tests into develop 2014-11-10 22:22:05 +01:00
Christoph Jentzsch
60924843f0 Unintended Exceptions work like OOG 2014-11-10 22:21:37 +01:00
Marian Oancea
720365859c Changed npm & bower version
Changed version for next npm publish
2014-11-10 15:26:10 +02:00
Marian Oancea
d95e2b7999 Fixed jshint warnings 2014-11-10 14:53:35 +02:00
obscuren
9509322ecd Updated readme 2014-11-10 13:36:53 +01:00
Marian Oancea
6fc5d8e81e Prepare for PR
changed repo urls from package.json, bower.json and readme
2014-11-10 14:31:53 +02:00
obscuren
bed659f9b3 Moved ethtest to cmd 2014-11-10 13:31:18 +01:00
obscuren
ad0acb5762 Moved messages eventing to chain manager 2014-11-10 13:27:24 +01:00
Marian OANCΞA
67e3eff806 Merge pull request #6 from cubedro/develop
Changes from debris
2014-11-10 14:10:25 +02:00
Marian OANCΞA
f5024b4926 Merge pull request #5 from cubedro/debris-error_handling_fix
Debris error handling fix
2014-11-10 14:09:21 +02:00
Marian Oancea
c1b2595deb fix merge conflicts 2014-11-10 14:07:06 +02:00
Marian Oancea
512d4ca6a4 Merge branch 'debris-error_handling_fix' into develop 2014-11-10 14:00:02 +02:00
Marian Oancea
c91e4afe6c fix merge conflicts 2014-11-10 13:57:49 +02:00
obscuren
ebb7db263f Added dumps 2014-11-10 12:42:16 +01:00
obscuren
d30571a7a8 Added VM testing tool 2014-11-10 11:47:37 +01:00
obscuren
cbeebcd47d Fixed bloom, updated mining & block processing
* Reverted back to process blocks in batches method
* Bloom generation and lookup fix
* Minor UI changed (mainly debug)
2014-11-10 01:17:31 +01:00
obscuren
f538ea25e4 Fixed bug on gas and setting of receipts and roots 2014-11-09 23:59:25 +01:00
Marian Oancea
a2d8b89289 Added npm version 2014-11-09 21:30:27 +02:00
Marek Kotewicz
8ca991ecd2 corresponding changes from cpp-ethereum 2014-11-07 14:36:07 +01:00
Marek Kotewicz
e3ad9be4c8 missing semicolons 2014-11-07 14:07:01 +01:00
Marek Kotewicz
0d6479e1d6 proper error handling proposal 2014-11-07 14:03:46 +01:00
obscuren
429dd2a100 Implemented new miner w/ ui interface for merged mining. Closes #177
* Miner has been rewritten
* Added new miner pane
* Added option for local txs
* Added option to read from MergeMining contract and list them for
  merged mining
2014-11-07 12:18:48 +01:00
ethers
fcba866721 add StateTests 2014-11-06 14:19:59 -08:00
Marian Oancea
3270b432bc Refactoring
Removed browser fixes
Updated gulp to bypass native browser objects
Added source map for dist
2014-11-06 22:51:37 +02:00
Christoph Jentzsch
a441074ba4 Updated precompiled contracts test 2014-11-06 17:54:36 +01:00
Christoph Jentzsch
0afa72c82b Added precompiledContracts tests 2014-11-06 15:27:45 +01:00
Christoph Jentzsch
6be83dd5a1 Update gas cost for PoC7 2014-11-06 13:31:34 +01:00
Taylor Gerring
0a3a148ed4 Added more byte tests 2014-11-06 12:35:46 +01:00
Christoph Jentzsch
c18b8ab2d3 Merge remote-tracking branch 'origin/develop' into develop 2014-11-06 09:19:53 +01:00
Christoph Jentzsch
66c2e1f642 Updated SIGNEXTEND tests 2014-11-06 09:19:22 +01:00
ethers
9a9325822e part of 9b4e768 - Delete vmNamecoin.json 2014-11-05 16:20:26 -08:00
Marian Oancea
bd14b4d23e node < 0.10 fails travis build => remove 0.6 & 0.8
from travis.yml
2014-11-06 01:48:52 +02:00
Marian Oancea
4402a7d817 gulp >= 3.4.0 2014-11-06 00:49:50 +02:00
Marian Oancea
5871d1e359 Updated all dependency versions 2014-11-06 00:44:40 +02:00
Marian Oancea
2f33a8c657 Update dependencies to pass travis build 2014-11-06 00:37:07 +02:00
Marian Oancea
6dc7be6cd1 Update dependencies & travis.yml 2014-11-06 00:24:10 +02:00
Marian Oancea
7d6164b351 updated travis.yml 2014-11-05 23:31:54 +02:00
Taylor Gerring
48a3f0986c Add coverage for rand 2014-11-05 22:21:28 +01:00
Taylor Gerring
a1d62abca4 Restructure StorageSize string test 2014-11-05 22:16:44 +01:00
Marian Oancea
44ab30f628 more json fixes 2014-11-05 23:07:13 +02:00
Taylor Gerring
be96da179a Added tests for FormatData 2014-11-05 22:01:41 +01:00
Taylor Gerring
8f94f731a5 Reorder tests to match source order 2014-11-05 22:01:09 +01:00
Taylor Gerring
ab6b9c44aa Added test for IsHex 2014-11-05 22:00:01 +01:00
Taylor Gerring
4e15adac6d Remove fmt dependency 2014-11-05 21:59:22 +01:00
Marian Oancea
dcae30c1e4 updated bower.json ignore 2014-11-05 22:58:06 +02:00
Marian Oancea
f281a362f0 bower small fix 2014-11-05 22:37:00 +02:00
Marian Oancea
c402dad6fa Updated bower.json & Readme 2014-11-05 22:33:28 +02:00
Christoph Jentzsch
e229374f46 Merge remote-tracking branch 'origin/develop' into develop 2014-11-05 20:59:49 +01:00
Christoph Jentzsch
189527e563 added dynamic jump out of code 2014-11-05 20:59:20 +01:00
Christoph Jentzsch
9b4e768995 Delete vmNamecoin.json 2014-11-05 20:41:54 +01:00
Marian Oancea
45d0d72138 Updated package.json 2014-11-05 20:12:21 +02:00
Marian Oancea
15088d7ebe Fixed indent
Fixed indent so we can compare differences in PR.
2014-11-05 19:52:52 +02:00
Marian Oancea
4be4db5e6c Converted to node module
Converted to npm package
Added brower
Added browserify with minification
Updated Readme
2014-11-05 19:46:01 +02:00
Taylor Gerring
b100546c9d add test for Bytes.String() 2014-11-05 18:02:20 +01:00
Taylor Gerring
834f8a1dc8 added test for CopyBytes 2014-11-05 17:48:23 +01:00
Taylor Gerring
ada684e054 added test for BinaryLength 2014-11-05 17:44:28 +01:00
Taylor Gerring
92b30cc452 add tests for ReadVarInt 2014-11-05 17:39:26 +01:00
Taylor Gerring
cb32f52b9c added test for parsing bytes 2014-11-05 17:11:40 +01:00
Taylor Gerring
4f00929084 Added byte padding tests 2014-11-05 17:04:24 +01:00
Christoph Jentzsch
4669b5694b Merge remote-tracking branch 'origin/develop' into develop 2014-11-05 15:00:12 +01:00
Christoph Jentzsch
a567fedaa7 added state systemOperationsTest 2014-11-05 14:59:08 +01:00
Taylor Gerring
94b0ce84da Cleanup big_test.go 2014-11-05 13:35:43 +01:00
Taylor Gerring
e76c58d175 New test coverage for ethutil/big.go 2014-11-05 13:23:50 +01:00
Taylor Gerring
92299b7c24 New test coverage for ethutil/path.go 2014-11-05 11:23:30 +01:00
obscuren
48488017e4 Proper packages 2014-11-05 00:34:59 +01:00
obscuren
b4da085a9f Accidental packages 2014-11-05 00:34:04 +01:00
obscuren
7db44b56b0 Updated to ethereum serpent 2014-11-05 00:32:51 +01:00
ethers
aaba185ceb Merge pull request #32 from ethers/indexjs
updates needed per restructure
2014-11-04 12:15:40 -08:00
ethers
fa782aed93 updates needed per restructure 2014-11-04 11:28:56 -08:00
Marian OANCΞA
3e174a0879 Merge pull request #1 from cubedro/example
example
2014-11-04 21:26:14 +02:00
obscuren
99d5769c2b There'll be jumping in to jumps 2014-11-04 18:38:19 +01:00
obscuren
1b1fa049fa Fixed VM and added static analysis for EVM jumps 2014-11-04 18:18:57 +01:00
obscuren
8cfbf1836d Added JUMP analysis (WIP) 2014-11-04 18:17:38 +01:00
obscuren
78fb2af6f1 Squashed commit of the following:
commit 79d7cbfc4a
Merge: 9120274 1c1ba8d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:32:11 2014 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit 9120274a46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:31:27 2014 +0100

    Update tests to latest protocol changes (PoC7)

commit 1c1ba8d161
Merge: 014d370 3aebe53
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Nov 4 13:30:52 2014 +0100

    Merge pull request #31 from CJentzsch/develop

    Restructered tests in folders in accordance to test suites

commit 3aebe532e5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:58:21 2014 +0100

    Updated vmNamecoin.json to new sstore prices

commit 8a0be21839
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:53:00 2014 +0100

    Added example state test

commit 83643addbc
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:36:25 2014 +0100

    removed systemoperationstests

commit 3930ca3a9a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Nov 3 13:22:15 2014 +0100

    Restructered tests in folders in accordance to test suites

commit 014d370b5d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 21:23:56 2014 +0100

    New SIGNEXTEND tets

commit 155d449be2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 29 20:59:05 2014 +0100

    New tests for BNOT and SIGNEXTEND

commit c9eae764b8
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 28 12:58:27 2014 +0100

    Update SSTORE gas cost and BNOT instead of NEG

commit ad2a75ac58
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 16:05:49 2014 +0200

    Added new recursive bombs

commit 834c52af64
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Thu Oct 23 12:01:05 2014 +0200

    Changing gas cost to zero at stackunderflow

commit c73a8a89d2
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed Oct 22 13:04:45 2014 +0200

    Reverted back to original value.

commit b9a8c92422
Author: martin becze <wanderer@users.noreply.github.com>
Date:   Tue Oct 21 17:02:52 2014 -0400

    fix spelling error

commit b48ae74af4
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:26:26 2014 +0200

    Added failing random tests

commit bee0a4100c
Merge: 5050d20 b315da6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 21 17:15:05 2014 +0200

    Merge remote-tracking branch 'origin/master' into develop

commit 5050d20b4d
Merge: 7516685 ba35362
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 20 20:18:20 2014 +0200

    Merge pull request #26 from wanderer/develop

    Add a package.json for node.js

commit ba35362876
Author: wanderer <mjbecze@gmail.com>
Date:   Sun Oct 19 23:59:47 2014 -0400

    turned tests into a node module

commit 751668571e
Author: ethers <ethereum@outlook.com>
Date:   Thu Oct 16 17:08:20 2014 -0700

    json was invalid and missing quotes

commit 0e687cee47
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu Oct 16 17:13:24 2014 +0200

    Update vmEnvironmentalInfoTest.json

commit 78a78e2e6c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 15 14:19:11 2014 +0200

    updated genesis_hash

commit b315da618b
Merge: 7a7e198 0a76a3a
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 14 10:33:26 2014 +0200

    Merge pull request #23 from ethers/fix22

    numbers should be strings #22

commit 0a76a3a312
Author: ethers <ethereum@outlook.com>
Date:   Mon Oct 13 14:45:30 2014 -0700

    numbers should be strings #22

commit 1f67385f13
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:18:00 2014 +0200

    Added some MUL tests

commit 7a7e198395
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 13:11:59 2014 +0200

    Added some MUL tests

commit 46eb6283ae
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Oct 11 12:18:13 2014 +0200

    tested new opcodes (JUMPDEST,CALLCODE) and created test for CALL/CREATE depth

commit 8d38d62d10
Author: Nick Savers <nicksavers@gmail.com>
Date:   Fri Oct 10 18:09:41 2014 +0200

    INVALID stops the operation and doesn't cost gas

commit ed6eba7c8e
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 19:08:48 2014 +0200

    Update + ABA recursive bomb which needs maximum recursion limit of 1024

commit 2d72050db1
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 14:37:18 2014 +0200

    Applied recent protocol changes (PoC7) to existin tests

commit dfe66cab3f
Merge: 4513623 1a67a96
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 8 11:05:51 2014 +0200

    Merge remote-tracking branch 'origin/develop'

    Conflicts:
    	genesishashestest.json

commit 1a67a96cff
Merge: a4f5f45 ffd6bc9
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 15:10:23 2014 +0100

    Merge pull request #18 from CJentzsch/develop

    CallToNameRegistratorOutOfGas balance correction

commit ffd6bc97ad
Merge: a4f5f45 9779d67
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:47:34 2014 +0200

    Merge remote-tracking branch 'origin/develop' into develop

commit 9779d67b8c
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:45:53 2014 +0200

    CallToNameRegistratorOutOfGas balance correction

    Even if execution fails, the value gets transferred.

commit a4f5f45228
Merge: 49a9f47 b6d7cba
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 14:13:12 2014 +0100

    Merge pull request #17 from CJentzsch/develop

    Added A calls B calls A contracts

commit b6d7cba499
Merge: 865cb40 49a9f47
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 865cb4083d
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 15:02:36 2014 +0200

    Added A calls B calls A contracts

commit 49a9f47aec
Merge: 3b0ec43 94a493b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Tue Oct 7 10:56:17 2014 +0200

    Merge pull request #16 from CJentzsch/develop

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 94a493b0d9
Merge: 72853c4 3b0ec43
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:32 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 72853c4382
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Oct 7 10:51:07 2014 +0200

    corrected amount of used gas for CallToNameRegistratorOutOfGas

commit 3b0ec436e4
Merge: aec3252 222068b
Author: vbuterin <v@buterin.com>
Date:   Tue Oct 7 05:52:43 2014 +0100

    Merge pull request #15 from CJentzsch/develop

    corrected tests and different style for storage

commit 222068b9ba
Merge: c169653 aec3252
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:28 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit c1696531a6
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 21:17:09 2014 +0200

    corrected tests and different style for storage

commit aec3252b8e
Merge: 25f9fd5 e17a909
Author: vbuterin <v@buterin.com>
Date:   Mon Oct 6 09:39:46 2014 +0100

    Merge pull request #14 from CJentzsch/develop

    corrected gas limit in vmSystemOperationsTest

commit e17a909f70
Merge: 33fcab5 25f9fd5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:31:51 2014 +0200

    Merge remote-tracking branch 'upstream/develop' into develop

commit 33fcab5727
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Oct 6 10:30:04 2014 +0200

    Bug fix, corrected gasLimit in vmSystemOperationsTest

commit 25f9fd542a
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:47:00 2014 -0400

    one more vm test

commit 2d561a5373
Author: Vitalik Buterin <v@buterin.com>
Date:   Sat Oct 4 15:15:37 2014 -0400

    separated out vmtests

commit b0c48fa8d6
Merge: cb8261a 6cae166
Author: vbuterin <v@buterin.com>
Date:   Sat Oct 4 17:18:02 2014 +0100

    Merge pull request #13 from CJentzsch/develop

    Added comprehensive EVM test suite. All commands are tested.

commit 6cae166f6f
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 15:34:23 2014 +0200

    Delete tmp.json

commit 4ff906fbc2
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Wed Oct 1 14:06:32 2014 +0200

    corrected CALLSTATELESS tests

commit 5b3fee6806
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 29 13:08:44 2014 +0200

    Completed vm tests. Added ADDMOD, MULMOD, POST, CALLSTATELESS

commit 9cdd218083
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 27 21:48:09 2014 +0200

    Added IOandFlowOperation-, PushDupSwap- and SystemOperations- tests. Removed empty storage from adresses.

commit 28ed968b46
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:49:22 2014 +0200

    Added blockInfoTest

commit ffbd5a35b5
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Tue Sep 23 15:37:52 2014 +0200

    Added environmentalInfo- and sha3- test

commit 54c14f1ff3
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Mon Sep 22 13:06:57 2014 +0200

    Added bitwise logic operation test

commit d0af113aab
Author: Christoph Jentzsch <jentzsch.software@gmail.com>
Date:   Sat Sep 20 01:42:51 2014 +0200

    Added vm arithmetic test

commit cb8261a78b
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Sep 19 13:15:44 2014 +0200

    Update genesishashestest.json

commit 4513623da1
Author: Maran <maran.hidskes@gmail.com>
Date:   Tue Jul 22 12:24:46 2014 +0200

    Update keyaddrtest to be valid JSON

commit e8cb5c221d
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 21 23:30:33 2014 -0400

    Added next/prev trie test

commit 98823c04b3
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Jul 14 02:51:31 2014 -0400

    Replaced with deterministic test

commit 357eb21e4d
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun Jul 13 16:12:56 2014 -0400

    Added my own random and namecoin tests (pyethereum)

commit 00cd0cce8f
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jul 12 21:20:04 2014 +0200

    Output hex strings.

commit ddfa3af45d
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 11:28:35 2014 +0100

    Everything a string.

commit d659f469a9
Author: Gav Wood <i@gavwood.com>
Date:   Thu Jul 10 10:16:25 2014 +0100

    Code fixes.

commit 5e83ea8228
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 16:17:12 2014 +0200

    Prettier VM tests.

commit a09aae0efe
Author: Gav Wood <i@gavwood.com>
Date:   Sun Jul 6 15:46:01 2014 +0200

    Fix VM tests.

commit ec9a044a17
Merge: 4bb6461 5e0123f
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Fri Jul 4 15:56:52 2014 +0200

    Merge pull request #10 from romanman/patch-1

    Update vmtests.json

commit 5e0123fbe1
Author: romanman <roman.mandeleil@gmail.com>
Date:   Fri Jul 4 10:23:04 2014 +0100

    Update vmtests.json

commit 2b6da2f5f2
Author: romanman <roman.mandeleil@gmail.com>
Date:   Thu Jul 3 17:45:04 2014 +0100

    Update vmtests.json

    arith testcase updated

commit 4bb646117d
Merge: bba3898 a33b309
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:22 2014 +0200

    Merge branch 'develop' of github.com:/ethereum/tests into develop

commit bba38980bd
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jul 2 19:43:06 2014 +0200

    New tests.

commit a33b309d99
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:14:05 2014 -0400

    Testing submodules

commit 50318217ca
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:10:46 2014 -0400

    Testing submodules

commit 57fa655522
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jul 2 10:09:08 2014 -0400

    Testing submodules

commit ea0eb0a8c8
Author: Gav Wood <i@gavwood.com>
Date:   Tue Jul 1 15:19:34 2014 +0200

    Latest genesis block.

commit 25bb76b69c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 13:25:04 2014 +0200

    Reset

commit 74c6d8424e
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Mon Jun 30 12:10:06 2014 +0200

    Updated wrong test

commit 9ea3a60291
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Sat Jun 28 18:48:28 2014 +0200

    Fixed roots

commit 5fc3ac0e92
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:40:06 2014 +0200

    Simple hex test.

commit edd3a00c2a
Author: Gav Wood <i@gavwood.com>
Date:   Sat Jun 28 18:22:18 2014 +0200

    Additional test for jeff. Now use the 0x... notation.

commit 5021e0dd83
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 21:35:26 2014 +0200

    VM test framework updated.

commit c818d13202
Author: Gav Wood <i@gavwood.com>
Date:   Fri Jun 27 18:18:24 2014 +0200

    Removed arrays from Trie tests JSON as per conformance guide and changed
    vocabulary to match other tests.
    VM test updates.

commit 714770ffb3
Author: Gav Wood <i@gavwood.com>
Date:   Wed Jun 11 11:32:42 2014 +0100

    Added Gav's new address.

commit 9345bc13d4
Merge: a2257f3 78576dd
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:38 2014 +0200

    Merge branch 'master' of github.com:ethereum/tests into develop

commit a2257f3471
Author: Gav Wood <i@gavwood.com>
Date:   Fri May 30 17:50:18 2014 +0200

    VM tests.

commit 78576dd3d3
Author: Heiko Heiko <heiko@heiko.org>
Date:   Fri May 30 17:19:09 2014 +0200

    changes based on new account structure nonce, balance, storage, code

commit 125839e848
Merge: 42e14ec 356a329
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Thu May 22 09:58:45 2014 +0200

    Merge pull request #5 from bkirwi/master

    Fix invalid JSON (removed trailing comma) and add test names

commit 356a3296bc
Author: Ben Kirwin <ben@kirw.in>
Date:   Thu May 22 00:20:48 2014 -0400

    Add some arbitrary test names

    This should now conform to the format specified in the README.

commit 42e14ec54f
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 23:27:40 2014 +0800

    revert to correct data

commit 4300197a74
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:42:23 2014 +0800

    fix: wrong sha3 hash because of the wrong rlp hex

commit a0d01b1a0b
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Wed May 21 22:29:53 2014 +0800

    fix: wrong rlp hex

commit 6bc2fc7405
Merge: 66bc366 c31a93c
Author: Jeffrey Wilcke <obscuren@users.noreply.github.com>
Date:   Wed May 21 14:11:37 2014 +0200

    Merge pull request #4 from ethers/master

    fix file name that seems to have been a typo

commit c31a93c27a
Author: ethers <ethereum@outlook.com>
Date:   Tue May 20 15:42:39 2014 -0700

    fix file name that seems to have been a typo

commit 66bc3665c1
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:36:35 2014 +0200

    fix: represent integers as strings

commit ede5499da6
Author: Heiko Heiko <heiko@heiko.org>
Date:   Tue May 20 17:21:09 2014 +0200

    add: current initial alloc and genesis hashes

commit 5131429abb
Author: Ben Kirwin <ben@kirw.in>
Date:   Mon May 19 11:18:31 2014 -0400

    Delete a comma

    This should now be parseable as JSON.

commit f44a859331
Author: Chen Houwu <chenhouwu@gmail.com>
Date:   Sun May 18 15:04:42 2014 +0800

    add: case when value is long, ensure it's not get rlp encoded as node

commit e1ae4ad449
Author: Gav Wood <i@gavwood.com>
Date:   Mon May 12 14:40:47 2014 +0100

    PoC-5 VM tests.

commit 2b6c136dda
Author: Vitalik Buterin <v@buterin.com>
Date:   Sun May 11 21:42:41 2014 -0400

    Moved txt to json

commit cbccbf977c
Merge: edbb8d4 45a0974
Author: Vitalik Buterin <v@buterin.com>
Date:   Thu May 8 21:54:48 2014 -0400

    New commit

commit edbb8d407e
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue May 6 16:53:43 2014 -0400

    Removed unneeded test, added new tests

commit 45a0974f6f
Merge: 15dd8fd 5fd2a98
Author: Gav Wood <i@gavwood.com>
Date:   Sun Apr 27 12:53:47 2014 +0100

    Merge pull request #3 from autolycus/develop

    Fixed formatting and added test cases

commit 5fd2a98fcb
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 13:26:14 2014 -0700

    Added some new test cases for the rlp encoding.

commit 4ba150954e
Author: Carl Allendorph <callendorph@gmail.com>
Date:   Sat Apr 19 12:48:42 2014 -0700

    Converted spaces to tabs to be compliant with the coding standards defined in cpp-ethereum

commit 15dd8fd794
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 12:54:47 2014 +0000

    RLP tests and Trie updates.

commit 33f80fef21
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:39:35 2014 +0000

    Hex encode tests done.

commit e1f5e12abb
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 28 11:22:49 2014 +0000

    Fix RLP tests.

commit f87ce15ad2
Author: Gav Wood <i@gavwood.com>
Date:   Thu Feb 27 13:28:11 2014 +0000

    Fix empty string.

commit c006ed4ffd
Author: Gav Wood <i@gavwood.com>
Date:   Mon Feb 24 10:24:39 2014 +0000

    Tests fix.

commit 510ff56363
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:54:08 2014 +0000

    Updated the tests.

commit a0ec843832
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:49:24 2014 +0000

    Moved over to new format, but RLP tests still need updating.

commit 660cd26f31
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:35:51 2014 +0000

    More docs.

commit 6ad14c1a15
Author: Gav Wood <i@gavwood.com>
Date:   Fri Feb 21 18:33:39 2014 +0000

    Added VM test suite.
    Added TODO.
    Renamed old files.

commit f91ad7b385
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 11:26:58 2014 -0500

    update trie algorithm

commit 6da2954462
Merge: cc42246 131c610
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 8 08:15:38 2014 -0500

    merge

commit cc4224675f
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Jan 7 14:35:26 2014 -0500

    Updated trie test

commit 131c610da6
Merge: 121632b 7613302
Author: vbuterin <v@buterin.com>
Date:   Wed Jan 1 06:40:54 2014 -0800

    Merge pull request #1 from obscuren/master

    Update trietest.txt

commit 7613302b49
Author: obscuren <obscuren@users.noreply.github.com>
Date:   Wed Jan 1 15:25:21 2014 +0100

    Update trietest.txt

    New proposed explanatory format

commit 121632bedd
Author: Vitalik Buterin <v@buterin.com>
Date:   Wed Jan 1 08:26:18 2014 -0500

    Added obscure's tests

commit ef6c5506c3
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 19:04:48 2013 -0500

    Fixed tests a bit

commit 345e4bcfef
Merge: 2c81698 e4bbea4
Author: Vitalik Buterin <v@buterin.com>
Date:   Tue Dec 31 15:52:46 2013 -0500

    Merge branch 'master' of github.com:ethereum/tests

commit 2c81698f31
Author: Vitalik Buterin <v@buterin.com>
Date:   Mon Dec 30 21:09:40 2013 -0500

    Added first three tests

commit e4bbea400f
Author: vbuterin <v@buterin.com>
Date:   Mon Dec 30 18:09:03 2013 -0800

    Initial commit
2014-11-04 17:11:19 +01:00
Taylor Gerring
b96a59eb28 Added tests for extra large values
Test “E” scientific notation formatting
2014-11-04 16:45:54 +01:00
obscuren
64b6172089 added db 2014-11-04 16:43:02 +01:00
Taylor Gerring
e7d9bcd36b Added Douglas and Einstein cases 2014-11-04 16:42:28 +01:00
Taylor Gerring
123282e045 Update variable name to match unit name 2014-11-04 16:41:03 +01:00
Taylor Gerring
e22e8b7fef Environment tests 2014-11-04 16:39:08 +01:00
Christoph Jentzsch
79d7cbfc4a Merge remote-tracking branch 'origin/develop' into develop 2014-11-04 13:32:11 +01:00
Christoph Jentzsch
9120274a46 Update tests to latest protocol changes (PoC7) 2014-11-04 13:31:27 +01:00
Christoph Jentzsch
1c1ba8d161 Merge pull request #31 from CJentzsch/develop
Restructered tests in folders in accordance to test suites
2014-11-04 13:30:52 +01:00
obscuren
a9db1ee8d4 Replaced to return the td and throw a specific error on TD 2014-11-04 13:00:47 +01:00
obscuren
699dcaf65c Reworked chain handling process
* Forks
* Rename
* Moved inserting of blocks & processing
* Added chain testing method for validating pieces of a **a** chain.
2014-11-04 12:46:33 +01:00
obscuren
f4b717cb9d Bloom validation 2014-11-04 11:04:02 +01:00
obscuren
f59a3b67f6 StateManager => BlockManager 2014-11-04 10:57:02 +01:00
obscuren
1025d097fd removed old bloom 2014-11-04 10:49:25 +01:00
obscuren
d56d0c64aa Version bump 2014-11-04 01:50:16 +01:00
obscuren
0c4adeceae Properly list caps 2014-11-04 01:47:02 +01:00
obscuren
f76f953f0c Removed debug print 2014-11-04 01:33:31 +01:00
obscuren
9c2b878678 Sha addresses 2014-11-04 01:29:49 +01:00
obscuren
a82b89e2d5 Added storage root to dump 2014-11-03 23:45:44 +01:00
obscuren
c8302882c8 method change 2014-11-03 23:45:32 +01:00
obscuren
d87aa24885 Fixed genesis 2014-11-03 23:45:16 +01:00
Marek Kotewicz
0cdef3376d example 2014-11-03 17:46:56 +01:00
obscuren
92c7aca817 Refactored compress method into something more organised 2014-11-03 14:59:50 +01:00
Christoph Jentzsch
3aebe532e5 Updated vmNamecoin.json to new sstore prices 2014-11-03 13:58:21 +01:00
Christoph Jentzsch
8a0be21839 Added example state test 2014-11-03 13:53:00 +01:00
Christoph Jentzsch
83643addbc removed systemoperationstests 2014-11-03 13:36:25 +01:00
Christoph Jentzsch
3930ca3a9a Restructered tests in folders in accordance to test suites 2014-11-03 13:22:15 +01:00
Marek Kotewicz
b0e11826e5 lgpl 2014-11-03 12:40:57 +01:00
Corey Farwell
e3998e30ba Don't run 'npm test' 2014-11-02 22:00:13 -05:00
Corey Farwell
51d79f3e3b Fix JSHint errors 2014-11-02 21:56:45 -05:00
Corey Farwell
b773e57490 Enable Travis CI 2014-11-02 21:49:23 -05:00
obscuren
76c9c8d653 Compress data on db level. Closes #174 2014-11-03 00:31:15 +01:00
obscuren
bd4f51ff3c Use new iterator 2014-11-03 00:30:52 +01:00
obscuren
5dcf59bdf4 Forgot to put in regular bytes during decompression 2014-11-03 00:29:34 +01:00
obscuren
9f8bcf3abc Added RLE compression. Closes #171 2014-11-02 23:33:06 +01:00
obscuren
1bb398f4e2 Sign ext 2014-11-02 19:39:45 +01:00
obscuren
3f90f7c898 Signextend 2014-11-01 02:14:55 +01:00
obscuren
c8438979a9 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2014-11-01 01:18:13 +01:00
obscuren
141d3caabb Re-org op codes 2014-11-01 01:18:03 +01:00
Felix Lange
394e0f60c2 chain, tests/helper, vm: make tests compile
They were broken by df5603de0a, when vm.Log became ethstate.Log.
2014-10-31 18:56:25 +01:00
Felix Lange
b95d9e005d .gitignore: ignore .ethtest 2014-10-31 18:55:39 +01:00
Felix Lange
f3473312ba all: fix rename breakage 2014-10-31 18:52:58 +01:00
obscuren
5af4ff985d ethminer => miner 2014-10-31 14:56:42 +01:00
obscuren
4914a78c8c ethwire => wire 2014-10-31 14:53:42 +01:00
obscuren
af34749a6b ethtrie => trie 2014-10-31 14:45:03 +01:00
obscuren
af8f5f0b69 ethstate => state 2014-10-31 14:43:14 +01:00
obscuren
0ed1a8b50a ethpipe => xeth (eXtended ETHereum) 2014-10-31 14:30:08 +01:00
obscuren
8826e9694c Moved utils to cmd 2014-10-31 14:20:11 +01:00
Marek Kotewicz
c8307a9e44 license 2014-10-31 14:12:05 +01:00
obscuren
b1c247231b ethlog => logger 2014-10-31 12:56:05 +01:00
obscuren
fd9da72536 ethcrypto => crypto 2014-10-31 12:37:43 +01:00
obscuren
3ee0461cb5 Moved ethchain to chain 2014-10-31 10:59:17 +01:00
obscuren
8e0a39f33f Updated to use ethereum.js 2014-10-31 10:50:16 +01:00
Jeffrey Wilcke
e84fa8d4e6 transacton => transaction 2014-10-30 23:36:06 +01:00
Jeffrey Wilcke
f11b5f3e40 Added account prop 2014-10-30 22:20:22 +01:00
Jeffrey Wilcke
5538ff7252 Fixed Qt provider
* postData => postMessage
* JSON.parse parsed wrong data on 'onmessage'
2014-10-30 22:17:50 +01:00
Jeffrey Wilcke
aca9a41fcf Merge pull request #1 from debris/master
Http JSON-RPC provider, http polling, little refactor, whisper
2014-10-30 21:35:40 +01:00
obscuren
df5603de0a Moved logging to state, proper structured block
* Moved logs to state so it's subject to snapshotting
* Split up block header
* Removed logs from transactions and made them receipts only
2014-10-30 13:32:50 +01:00
Christoph Jentzsch
014d370b5d New SIGNEXTEND tets 2014-10-29 21:23:56 +01:00
Jeffrey Wilcke
fa890c8c01 Merge pull request #167 from fjl/feature/split-tx-event
Split TxEvent type for tx pre/post
2014-10-29 21:10:04 +01:00
Jeffrey Wilcke
ce2ec1980b Merge pull request #166 from fjl/fix/mist-quit
Fix Mist Shutdown
2014-10-29 21:09:32 +01:00
Christoph Jentzsch
155d449be2 New tests for BNOT and SIGNEXTEND 2014-10-29 20:59:05 +01:00
Felix Lange
f05d422a97 ethchain: fix dependency 2014-10-29 20:39:26 +01:00
obscuren
2ef044edfc Use new bloom when filtering for topics 2014-10-29 20:33:25 +01:00
obscuren
cc67a84e94 Added bloom 9 point lookup and bloom test 2014-10-29 20:16:18 +01:00
Jeffrey Wilcke
81ec564ef6 Merge pull request #168 from fjl/feature/working-tests
Fix the tests
2014-10-29 19:48:38 +01:00
Felix Lange
4cf69d7cd3 vm: fix basic VM tests
The tests now compile and won't panic for unexpected return values.

We need a recent-enough version of the mutan compiler because of
the new JUMPDEST requirements. Skip some tests if the installed mutan
version is too old. The debug VM test still fails, probably because
of an implementation bug.
2014-10-29 18:50:17 +01:00
Felix Lange
38034c3066 ethwire: fix ClientIdentity test 2014-10-29 18:39:51 +01:00
Felix Lange
56014844a9 ethpipe: delete useless test
It didn't compile and wouldn't have checked any results if it ever ran.
2014-10-29 18:38:52 +01:00
Felix Lange
d9bccdde23 ethchain: fix tests
Adapted to recent BlockChain -> ChainManager rename.
2014-10-29 18:38:05 +01:00
Felix Lange
051af604e2 ethcrypto: fix the tests
The Sha3 test contained the wrong expected result. Note that the
implementation hasn't changed, the test simply contained an outdated
expected value that was valid for the previous implementation.
2014-10-29 18:35:33 +01:00
Marek Kotewicz
cb607b4911 changes to make whisper working 2014-10-29 17:14:59 +01:00
Marek Kotewicz
31c6159019 filters refactored 2014-10-29 14:45:39 +01:00
obscuren
9e2f071d26 Removed events from the state manager 2014-10-29 14:20:42 +01:00
Marek Kotewicz
9adb625846 polling whisper in progress 2014-10-29 12:44:50 +01:00
obscuren
fb4113dab4 PoC 7 updates
* Bloom
* Block restructure
* Receipts
2014-10-29 10:34:40 +01:00
obscuren
665a44646e Generic hashing method 2014-10-29 10:29:22 +01:00
Felix Lange
6b3f5fb82b cmd/mist, ethchain, ethminer: split TxEvent (#165) 2014-10-29 03:50:20 +01:00
Felix Lange
e252dbf989 eth: stop eventMux first
This fixes the hang in Ethereum.Stop.
2014-10-29 03:01:20 +01:00
Felix Lange
8170f96ded javascript: remove unused quit channel
This fixes the hang in JSRE.Stop.
2014-10-29 03:00:29 +01:00
Marek Kotewicz
0b10cbd713 http renamed to httprpc 2014-10-28 16:53:31 +01:00
Marek Kotewicz
3119be908c db and shh 2014-10-28 13:42:55 +01:00
obscuren
48125a25eb Added missing requires on SSTORE SLOAD 2014-10-28 13:26:30 +01:00
obscuren
7849b7e978 Refund SSTORE properly 2014-10-28 13:22:04 +01:00
Christoph Jentzsch
c9eae764b8 Update SSTORE gas cost and BNOT instead of NEG 2014-10-28 12:58:27 +01:00
Marek Kotewicz
28d4250866 cleaner promises 2014-10-28 10:43:12 +01:00
obscuren
5920aa7be6 Updated readme 2014-10-27 17:24:43 +01:00
obscuren
1e55fe3aa2 Updated readme 2014-10-27 17:22:29 +01:00
obscuren
9d386033ef Added bug 2014-10-27 17:16:03 +01:00
obscuren
2b02d81253 Added in progress to readme 2014-10-27 17:14:37 +01:00
obscuren
11b3f97520 Upped protocol 2014-10-27 17:02:45 +01:00
obscuren
10782c5aae Added removal off erroneous txs. Fixed pipeline 2014-10-27 17:02:31 +01:00
obscuren
cbc6709937 Version bump 2014-10-27 16:53:31 +01:00
obscuren
ca18b3f1e9 Do not return error on VM exception 2014-10-27 16:53:20 +01:00
obscuren
69e745c537 Return erroneous txs (so we can remove them from the pool) 2014-10-27 16:52:58 +01:00
obscuren
003280888d increased default gas from 500 to 5000 2014-10-27 12:25:54 +01:00
obscuren
797b93c98c Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2014-10-27 11:50:50 +01:00
obscuren
b095bd3237 events should be set prior to calling mainloop 2014-10-27 11:50:38 +01:00
obscuren
1d3f43f060 Added generic add balance method 2014-10-27 11:44:40 +01:00
obscuren
d586dd902d Fixed bloom 2014-10-27 11:44:28 +01:00
obscuren
272d58662c Implemented LOG. Closes #159 2014-10-27 11:44:16 +01:00
obscuren
6623500c6b Implemented new bloom filter. Closes #156 2014-10-27 11:22:27 +01:00
obscuren
08c26ab8b0 Removed unnecessary code. 2014-10-26 20:09:51 +01:00
Viktor Trón
f62b6742f2 Merge pull request #152 from ethersphere/p2p
initial commit of p2p package
2014-10-24 12:20:50 +01:00
Felix Lange
e73aad959e ethutil: re-add build constraints in script*.go (fixes #151) 2014-10-24 01:04:10 +02:00
zelig
771fbcc02e initial commit of p2p package 2014-10-23 16:57:54 +01:00
Jeffrey Wilcke
119c5b40a7 Merge pull request #150 from fjl/develop
Merge eth-go repo into go-ethereum
2014-10-23 16:46:18 +02:00
Christoph Jentzsch
ad2a75ac58 Added new recursive bombs 2014-10-23 16:05:49 +02:00
Felix Lange
184055b3e2 cmd/*: add license headers 2014-10-23 15:48:53 +02:00
Felix Lange
bd2862aec6 fix 'go get' commands in after the move to cmd/ 2014-10-23 15:06:26 +02:00
Felix Lange
69baa465ea Merge eth-go repository into go-ethereum
mist, etheruem have been moved to cmd/
2014-10-23 15:01:27 +02:00
Marek Kotewicz
66e439b6f4 http polling 2014-10-23 14:11:57 +02:00
obscuren
feef194829 Chnged to use GetOp instead & added error + checking 2014-10-23 14:04:00 +02:00
obscuren
91c876831a Update to HEAD tests 2014-10-23 13:25:10 +02:00
Christoph Jentzsch
834c52af64 Changing gas cost to zero at stackunderflow 2014-10-23 12:01:05 +02:00
obscuren
06aa74e7df All Stack requirements are now checked prior to reduring gas. 2014-10-23 10:14:55 +02:00
obscuren
50fd469249 Merge branch 'master' into develop 2014-10-23 01:03:22 +02:00
Jeffrey Wilcke
7daa8c2f6e Merge pull request #148 from waffle-iron/master
waffle.io Badge
2014-10-23 01:03:05 +02:00
obscuren
bb03276c19 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2014-10-23 01:01:56 +02:00
obscuren
411b9800ae Reflect VM Env changes 2014-10-23 01:01:41 +02:00
obscuren
29b8a0bc5f Updated the VM & VM tests
* Stack Error shouldn't revert to previous state
* Updated VM Test tool
* Added Transfer method to VM Env
2014-10-23 01:01:26 +02:00
obscuren
2e45e4d015 Print error using regular println. Fixes #146
We can't use our own logger because it hasn't been set up properly at
that point.
2014-10-23 00:59:35 +02:00
Jeffrey Wilcke
5662176f8c Merge pull request #149 from JosephGoulden/develop
Develop
2014-10-23 00:30:38 +02:00
JoeG
1880c6b3dc Make tab capitisation consistent 2014-10-22 23:00:22 +01:00
Making GitHub Delicious.
6247a99f41 add waffle.io badge 2014-10-22 15:56:40 -06:00
JoeG
53d5c490be Fix right-click context menu of block chain view. 2014-10-22 22:50:47 +01:00
obscuren
51ecab6967 Do not set error on recover 2014-10-22 23:39:15 +02:00
Marek Kotewicz
f9ca054314 warning when provider is not set 2014-10-22 16:21:38 +02:00
Marek Kotewicz
f7c9c8928e messageHandler expects object instead of string 2014-10-22 16:12:41 +02:00
Marek Kotewicz
ea3048421f block, transaction, uncle by hash and number separately 2014-10-22 15:58:24 +02:00
obscuren
037039cace Updated tests-subtree 2014-10-22 15:24:17 +02:00
obscuren
b5beb1aac1 added a transfer method to vm env 2014-10-22 15:22:21 +02:00
Jeffrey Wilcke
c73a8a89d2 Reverted back to original value. 2014-10-22 13:04:45 +02:00
Marek Kotewicz
5cd93a0618 http provider 2014-10-22 11:41:48 +02:00
obscuren
ce05634f38 Debug only if a tx is set. Fixes #134 2014-10-22 11:11:12 +02:00
martin becze
b9a8c92422 fix spelling error 2014-10-21 17:02:52 -04:00
Christoph Jentzsch
b48ae74af4 Added failing random tests 2014-10-21 17:26:26 +02:00
Christoph Jentzsch
bee0a4100c Merge remote-tracking branch 'origin/master' into develop 2014-10-21 17:15:05 +02:00
obscuren
27cb0750c1 Procotol version bump for uncle list change 2014-10-21 13:43:30 +02:00
obscuren
6b92d541da Empty string for uncle 2014-10-21 13:30:23 +02:00
obscuren
6f08e30109 Reflect RPC changes 2014-10-21 13:25:54 +02:00
obscuren
520fdfe346 PoC7 Net 2014-10-21 13:25:31 +02:00
obscuren
10b252dd05 WIP RPC interface 2014-10-21 13:24:48 +02:00
obscuren
eef4cd1b64 Updated properties 2014-10-21 00:49:33 +02:00
obscuren
ac7994d8c7 Updated readme 2014-10-21 00:41:27 +02:00
obscuren
8a7d1a69b3 Fixed setting providers to the right object 2014-10-21 00:37:58 +02:00
obscuren
76b20be2ea Qt provider 2014-10-21 00:26:34 +02:00
obscuren
74cab14b8d Moved WebSocketProvider 2014-10-21 00:15:10 +02:00
obscuren
c8aa5feb14 Removed Key 2014-10-21 00:14:58 +02:00
obscuren
590c393680 Updated according to the new Generic JSON RPC API 2014-10-21 00:14:41 +02:00
Christoph Jentzsch
5050d20b4d Merge pull request #26 from wanderer/develop
Add a package.json for node.js
2014-10-20 20:18:20 +02:00
obscuren
6ea44c466a Updated to reflect BlockChain changes 2014-10-20 12:03:31 +02:00
obscuren
097ba56df5 Renamed block_chain to chain_manager 2014-10-20 11:53:11 +02:00
wanderer
ba35362876 turned tests into a node module 2014-10-19 23:59:47 -04:00
obscuren
33ca8d7b8f moved 2014-10-18 23:31:10 +02:00
obscuren
3ad1daa70d Added tests as subtree 2014-10-18 23:28:16 +02:00
obscuren
3bc64b6b6e Readers 2014-10-18 23:20:25 +02:00
obscuren
73c1c2c4af Travis bumped to 1.3 2014-10-18 14:20:51 +02:00
obscuren
350b0b1f66 Re-enabled Travis 2014-10-18 13:50:48 +02:00
obscuren
3ea0e904ad Reflect changed to eth/vm 2014-10-18 13:33:02 +02:00
obscuren
20c742e474 Moved ethvm => vm 2014-10-18 13:31:20 +02:00
obscuren
82a2e4fe28 Reflect changes to the eth/vm 2014-10-18 13:31:04 +02:00
obscuren
6956b5104f fmt package was missing 2014-10-18 13:30:38 +02:00
obscuren
a02dc4ccc3 Using proper naming scheme. Fixes #63 2014-10-18 13:23:01 +02:00
obscuren
77badc8c46 Updated to reflect the Filter changes in eth-go 2014-10-18 13:20:35 +02:00
obscuren
d2bb83833f Moved Filter's wrapping functions to their own util package. Fixes #61
* CLI ethereum should no longer require the Qt/QML package
2014-10-18 13:20:06 +02:00
Jeffrey Wilcke
e57989c0a6 Merge pull request #141 from thibauld/develop
Update documentation and install script to reflect renaming from ethereal to mist
2014-10-18 12:34:03 +02:00
Thibauld Favre
b94dfc8d3a Update documentation and install.sh script to reflect renaming from ethereal to mist 2014-10-17 19:14:16 -04:00
Jeffrey Wilcke
70a00d602e Merge pull request #62 from fjl/fuck
tests/vm: fix syntax
2014-10-17 18:17:04 +02:00
Felix Lange
df238dc7ec tests/vm: fix syntax 2014-10-17 17:39:31 +02:00
Jeffrey Wilcke
abdf5e76f3 Merge pull request #138 from erezwanderman/fixwindows
Fix ethereum compilation and functioning on Windows.
2014-10-17 17:26:04 +02:00
Jeffrey Wilcke
03fd832ee8 Merge pull request #139 from fjl/feature/simpler-log-system
Update for new ethlog.LogSystem interface
2014-10-17 17:24:51 +02:00
Jeffrey Wilcke
fc308b842e Merge pull request #59 from fjl/feature/raceless-ethlog
Improve package ethlog
2014-10-17 17:24:44 +02:00
Felix Lange
35f339e942 ethlog: fix typo in documentation 2014-10-17 17:23:29 +02:00
Felix Lange
fd9b03a431 ethlog: fix concurrency
Rather than spawning a new goroutine for each message,
run each log system in a dedicated goroutine.

Ensure that logging is still asynchronous by using a per-system buffer
(currently 500 messages). If it overflows all logging will hang,
but that's better than spawning indefinitely many goroutines.
2014-10-17 17:23:29 +02:00
Felix Lange
c090a77f1c ethlog: simplify LogSystem interface
Messages are formatted by generic part, so the log system doesn't need
to provide formatting. This fixes the test from the previous commit.

As a small bonus, log systems now have access to the level of
the message. This could be used to provide colored logging in the
future.
2014-10-17 17:23:29 +02:00
Felix Lange
50f5ba5b0c ethlog: add test for '%' in log message
This test fails because the log message is formatted twice.
2014-10-17 17:23:29 +02:00
Felix Lange
cbd785cfe8 ethvm, tests/*: use log level constants 2014-10-17 17:23:28 +02:00
Felix Lange
0165c18330 ethlog: use Godoc for code examples in documentation
This ensures that examples will actually compile.
2014-10-17 17:20:44 +02:00
Felix Lange
e0f93c74c5 ethlog: add Godoc documentation, remove README 2014-10-17 17:20:44 +02:00
Felix Lange
a6265cb49a ethlog: verify that Flush is blocking in TestLoggerFlush 2014-10-17 17:20:44 +02:00
Felix Lange
793baf060a ethlog: don't buffer output in TestConcurrentAddSystem 2014-10-17 17:20:44 +02:00
Felix Lange
ec132749aa ethlog: improve TestLogSystem
It's now safe for concurrent access.
Output checking looks better.
2014-10-17 17:20:44 +02:00
Felix Lange
45d1052229 ethlog: fix StdLogSystem data race on level 2014-10-17 17:20:44 +02:00
Felix Lange
d5a7ba1626 ethlog: add test that adds log systems concurrently 2014-10-17 17:20:44 +02:00
Felix Lange
3b1296077b ethlog: Reset before each test 2014-10-17 17:20:43 +02:00
Felix Lange
dac128a029 ethlog: fix test compilation error 2014-10-17 17:20:43 +02:00
Felix Lange
4e95cecfb9 ethlog: improve dispatch concurrency
This also fixes a deadlock in the tests.
2014-10-17 17:20:43 +02:00
obscuren
3976b52ed7 Updated vm 2014-10-17 17:14:29 +02:00
obscuren
e183880d8b arith test 2014-10-17 17:11:45 +02:00
obscuren
d7736a7bbb Quick dirty peer update 2014-10-17 17:11:34 +02:00
Jeffrey Wilcke
df2b70853f Merge pull request #58 from fjl/feature/event
Blocking event package
2014-10-17 17:10:34 +02:00
Jeffrey Wilcke
9e6411db31 Merge pull request #140 from fjl/feature/event
Adapt to new event package
2014-10-17 17:10:30 +02:00
ethers
751668571e json was invalid and missing quotes 2014-10-16 17:08:20 -07:00
obscuren
3b70985284 added eth tester 2014-10-16 21:34:59 +02:00
Felix Lange
fa84e50ddb event: panic for duplicate type 2014-10-16 18:59:28 +02:00
Felix Lange
ade980912d ethreact: remove package 2014-10-16 18:51:21 +02:00
Felix Lange
28570ef109 eventer: remove package 2014-10-16 18:51:21 +02:00
Felix Lange
20cdb73862 ethchain: fix tests 2014-10-16 18:51:21 +02:00
Felix Lange
36cdab2068 all: use (blocking) event package instead of ethreact 2014-10-16 18:50:48 +02:00
Felix Lange
6906904896 event: make TypeMux zero value ready to use 2014-10-16 18:50:48 +02:00
Felix Lange
10bbf265b2 event: make Unsubscribe idempotent 2014-10-16 18:50:48 +02:00
Felix Lange
dac4a8f113 event: add some documentation 2014-10-16 18:50:48 +02:00
obscuren
93fcabd251 Fixed most of the tests 2014-10-16 18:27:05 +02:00
Felix Lange
f5b8775bed event: new package for event multiplexer 2014-10-16 18:14:35 +02:00
Jeffrey Wilcke
0e687cee47 Update vmEnvironmentalInfoTest.json 2014-10-16 17:13:24 +02:00
obscuren
bb5038699e Corrected package .... 2014-10-16 13:41:44 +02:00
obscuren
65cdb3436e Updated tests 2014-10-16 13:40:46 +02:00
obscuren
86f789333a Moved state reset to defered function 2014-10-16 13:39:30 +02:00
obscuren
febec5ca4a Switch EXT* codes 2014-10-16 13:39:11 +02:00
obscuren
70f7a0be11 Use the state instead of the state object directly.
If a state gets reset and you still hold a pointer to the previous,
incorrect, state object you'll operate on the wrong object. Using the
state to set/get objects and attributes you won't have this problem
since the state will always have the correct object.
2014-10-16 13:38:21 +02:00
Felix Lange
0a99719a39 mist: update for new ethlog.LogSystem interface (in ethereum/eth-go#59) 2014-10-16 12:07:43 +02:00
obscuren
311c6f8a3f Fixed remote Arithmetic tests 2014-10-15 17:12:26 +02:00
Christoph Jentzsch
78a78e2e6c updated genesis_hash 2014-10-15 14:19:11 +02:00
Erez Wanderman
7227552f42 Fix ethereum compilation and functioning on Windows.
repl console output is now colored.
repl "exit" command now works.
2014-10-15 02:41:26 +03:00
obscuren
266d212094 Working on test suite 2014-10-15 00:41:00 +02:00
obscuren
3d177be73e Couple of minor issues fixed
* CALLVALUE pushed incorrect value to the stack
* Set execution model to closure
2014-10-15 00:40:41 +02:00
Felix Lange
0aea5fc4a3 adapt to new event package 2014-10-14 19:38:38 +02:00
obscuren
7ca7938d8e Removed old installer script 2014-10-14 15:31:25 +02:00
obscuren
f55e39cf1a Tests for native function calling 2014-10-14 13:37:26 +02:00
obscuren
393a92811b Changed VM Test code 2014-10-14 12:21:46 +02:00
obscuren
294b437414 New VM 2014-10-14 11:49:15 +02:00
obscuren
c5bd32b0ad Refactored VM to two separate VMs; std & debug
Standard VM should be about 10x faster than the debug VM. Some error
checking has been removed, all of the log statements and therefor quite
some unnecessary if-statements.
2014-10-14 11:48:52 +02:00
Christoph Jentzsch
b315da618b Merge pull request #23 from ethers/fix22
numbers should be strings #22
2014-10-14 10:33:26 +02:00
obscuren
03e082d4ac Merge branch 'master' into develop 2014-10-14 09:47:38 +02:00
obscuren
db6f4ab1cc Merge branch 'master' into develop 2014-10-14 09:47:19 +02:00
ethers
0a76a3a312 numbers should be strings #22 2014-10-13 14:45:30 -07:00
Jeffrey Wilcke
1644b1e53e Merge pull request #137 from caktux/master
build status
2014-10-13 12:57:50 +02:00
caktux
cfd1f0907f build status 2014-10-12 02:15:15 -04:00
Christoph Jentzsch
1f67385f13 Added some MUL tests 2014-10-11 13:18:00 +02:00
Christoph Jentzsch
7a7e198395 Added some MUL tests 2014-10-11 13:11:59 +02:00
Christoph Jentzsch
46eb6283ae tested new opcodes (JUMPDEST,CALLCODE) and created test for CALL/CREATE depth 2014-10-11 12:18:13 +02:00
obscuren
2e894b668a Max callstack 2014-10-11 00:41:37 +02:00
Jeffrey Wilcke
8128190fb2 Merge pull request #136 from fjl/feature/raceless-ethereum-filters
Fix chain filter data race
2014-10-10 22:59:11 +02:00
obscuren
cb845b9bc8 Implemented AR PoW 2014-10-10 22:44:20 +02:00
obscuren
56843ca0fc Added some methods to comply to the PoW block interface 2014-10-10 22:42:37 +02:00
Nick Savers
8d38d62d10 INVALID stops the operation and doesn't cost gas 2014-10-10 18:09:41 +02:00
obscuren
e02c0fa808 Added generic big to 256 method. Implemented new iterator 2014-10-10 17:00:06 +02:00
obscuren
9b494c6869 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-10-10 16:58:26 +02:00
Jeffrey Wilcke
3db6a8e92d Merge pull request #57 from fjl/feature/raceless-ethereum-filters
Fix filter map race
2014-10-10 16:57:54 +02:00
Jeffrey Wilcke
6fec5bd32e Merge pull request #56 from fjl/feature/raceless-eventer
Fix Eventer race
2014-10-10 16:57:50 +02:00
obscuren
6877660fe2 Implemented new iterator 2014-10-10 16:56:28 +02:00
Felix Lange
c1f8a640d3 mist: adapt to API changes in ethereum/eth-go#57 2014-10-08 19:16:03 +02:00
Christoph Jentzsch
ed6eba7c8e Update + ABA recursive bomb which needs maximum recursion limit of 1024 2014-10-08 19:08:48 +02:00
Felix Lange
e83a999039 eth: fix filter map data race
This commit also documents (but doesn't enforce) that filters
are immutable while they're installed. This required a minor API
change.
2014-10-08 19:04:58 +02:00
Felix Lange
44674cb96c eventer: fix data race 2014-10-08 16:31:08 +02:00
Felix Lange
d451269977 eventer: add test for concurrent Post/Register
This test reports the race condition when run
using "go test -race".
2014-10-08 16:31:08 +02:00
Felix Lange
7c9508ed71 eventer: fix tests 2014-10-08 16:31:08 +02:00
obscuren
a38dafcc57 Moved the To256 2014-10-08 16:11:36 +02:00
Christoph Jentzsch
2d72050db1 Applied recent protocol changes (PoC7) to existin tests 2014-10-08 14:37:18 +02:00
obscuren
bd7aca76e1 Proper new block 2014-10-08 12:33:33 +02:00
obscuren
4de3ad1712 New block message 2014-10-08 12:29:49 +02:00
obscuren
83a4b8b49b Version bump 2014-10-08 12:24:42 +02:00
obscuren
b93d6ca5d2 Renamed Sha3Bin to Sha3 2014-10-08 12:06:48 +02:00
obscuren
9d86a49a73 Renamed Sha3Bin to Sha3 2014-10-08 12:06:39 +02:00
obscuren
f3196c915a Precompiled crypto contracts 2014-10-08 12:01:36 +02:00
obscuren
9b60cf267a Removed POST & moved CALLCODE 2014-10-08 12:01:14 +02:00
obscuren
11ace54307 ECRECOVER RIPEMD160 SHA256 2014-10-08 12:00:50 +02:00
obscuren
6de726f16c Protocol bump 2014-10-08 12:00:03 +02:00
obscuren
b417766b36 Minor tweaks for poc7 2014-10-08 11:59:44 +02:00
Christoph Jentzsch
dfe66cab3f Merge remote-tracking branch 'origin/develop'
Conflicts:
	genesishashestest.json
2014-10-08 11:05:51 +02:00
vbuterin
1a67a96cff Merge pull request #18 from CJentzsch/develop
CallToNameRegistratorOutOfGas balance correction
2014-10-07 15:10:23 +01:00
Christoph Jentzsch
ffd6bc97ad Merge remote-tracking branch 'origin/develop' into develop 2014-10-07 15:47:34 +02:00
Christoph Jentzsch
9779d67b8c CallToNameRegistratorOutOfGas balance correction
Even if execution fails, the value gets transferred.
2014-10-07 15:45:53 +02:00
vbuterin
a4f5f45228 Merge pull request #17 from CJentzsch/develop
Added A calls B calls A contracts
2014-10-07 14:13:12 +01:00
Christoph Jentzsch
b6d7cba499 Merge remote-tracking branch 'upstream/develop' into develop 2014-10-07 15:02:51 +02:00
Christoph Jentzsch
865cb4083d Added A calls B calls A contracts 2014-10-07 15:02:36 +02:00
obscuren
b4fa28a3e6 Merge branch 'release/0.6.8' into develop 2014-10-07 11:21:29 +02:00
obscuren
d1a6084bf7 Merge branch 'release/0.6.8' 2014-10-07 11:20:52 +02:00
obscuren
a9b857769d bump 2014-10-07 11:19:42 +02:00
obscuren
0015ce1e35 kick of bad peers 2014-10-07 11:18:46 +02:00
obscuren
4ed94d3d51 removed old windows & added websockets to mist 2014-10-07 11:18:34 +02:00
Jeffrey Wilcke
49a9f47aec Merge pull request #16 from CJentzsch/develop
corrected amount of used gas for CallToNameRegistratorOutOfGas
2014-10-07 10:56:17 +02:00
Christoph Jentzsch
94a493b0d9 Merge remote-tracking branch 'upstream/develop' into develop 2014-10-07 10:51:32 +02:00
Christoph Jentzsch
72853c4382 corrected amount of used gas for CallToNameRegistratorOutOfGas 2014-10-07 10:51:07 +02:00
vbuterin
3b0ec436e4 Merge pull request #15 from CJentzsch/develop
corrected tests and different style for storage
2014-10-07 05:52:43 +01:00
Christoph Jentzsch
222068b9ba Merge remote-tracking branch 'upstream/develop' into develop 2014-10-06 21:17:28 +02:00
Christoph Jentzsch
c1696531a6 corrected tests and different style for storage 2014-10-06 21:17:09 +02:00
obscuren
c95dfec5e4 push data instead of assign 2014-10-06 19:26:51 +02:00
vbuterin
aec3252b8e Merge pull request #14 from CJentzsch/develop
corrected gas limit in vmSystemOperationsTest
2014-10-06 09:39:46 +01:00
Christoph Jentzsch
e17a909f70 Merge remote-tracking branch 'upstream/develop' into develop 2014-10-06 10:31:51 +02:00
Christoph Jentzsch
33fcab5727 Bug fix, corrected gasLimit in vmSystemOperationsTest 2014-10-06 10:30:04 +02:00
Vitalik Buterin
25f9fd542a one more vm test 2014-10-04 15:47:00 -04:00
Vitalik Buterin
2d561a5373 separated out vmtests 2014-10-04 15:15:37 -04:00
vbuterin
b0c48fa8d6 Merge pull request #13 from CJentzsch/develop
Added comprehensive EVM test suite. All commands are tested.
2014-10-04 17:18:02 +01:00
obscuren
e100aa3c6c Changed to new "created address" 2014-10-02 17:35:57 +02:00
obscuren
677836cbee Kick off bad peers on bad chains and improved catch up on diverted chain 2014-10-02 17:35:38 +02:00
obscuren
a75c92000f Black listing of bad peers 2014-10-02 17:03:48 +02:00
obscuren
b55e017e62 Proper delete 2014-10-02 17:03:36 +02:00
obscuren
82be305496 Fixed inconsistencies 2014-10-02 17:03:15 +02:00
obscuren
3bc238b1ce Added eth providers
An ethereum provider provides an interface from which communication can
be done.
2014-10-02 10:56:22 +02:00
obscuren
5053ec2190 Added download label 2014-10-02 01:37:23 +02:00
obscuren
a34a971b50 improved blockchain downloading 2014-10-02 01:36:59 +02:00
obscuren
5fa0173c41 msg 2014-10-02 00:03:19 +02:00
Christoph Jentzsch
6cae166f6f Delete tmp.json 2014-10-01 15:34:23 +02:00
Christoph Jentzsch
4ff906fbc2 corrected CALLSTATELESS tests 2014-10-01 14:06:32 +02:00
obscuren
3af211dd65 Implemented WebSocket package 2014-09-30 23:26:52 +02:00
obscuren
6db40ecb22 WebSocket interface
Web sockets handlers fully implemented. Filter handlers have yet to be
implemented.
2014-09-30 23:26:16 +02:00
obscuren
a3c66b2740 How to spawn a websocket node 2014-09-30 22:58:09 +02:00
obscuren
0cae9c3c1b Readme 2014-09-30 22:55:07 +02:00
obscuren
68ccbefc94 init 2014-09-30 22:51:53 +02:00
Christoph Jentzsch
5b3fee6806 Completed vm tests. Added ADDMOD, MULMOD, POST, CALLSTATELESS 2014-09-29 13:08:44 +02:00
obscuren
ab6ede51d7 Working on new (blocking) event machine.
The new event machine will be used for loose coupling and handle the
communications between the services:

1) Block pool finds blocks which "links" with our current canonical
chain
2) Posts the blocks on to the event machine
3) State manager receives blocks & processes them
4) Broadcasts new post block event
2014-09-29 12:57:51 +02:00
obscuren
ea0357bf02 Block pool is thread safe 2014-09-28 14:52:58 +02:00
Christoph Jentzsch
9cdd218083 Added IOandFlowOperation-, PushDupSwap- and SystemOperations- tests. Removed empty storage from adresses. 2014-09-27 21:48:09 +02:00
obscuren
44d50bc8d2 Have you seen my parents, sir? 2014-09-26 20:51:31 +02:00
obscuren
e20b113053 Logging messages 2014-09-26 20:19:11 +02:00
obscuren
0acdeca3d6 skip messages properly 2014-09-26 20:19:01 +02:00
obscuren
a45e293267 Merge branch 'release/0.6.7' into develop 2014-09-26 13:48:04 +02:00
obscuren
41ae6f298e Merge branch 'release/0.6.7' into develop 2014-09-26 13:47:47 +02:00
obscuren
bd95fd770b Merge branch 'release/0.6.7' 2014-09-26 13:47:29 +02:00
obscuren
b8354124be Added protocol caps accessors 2014-09-26 13:45:26 +02:00
obscuren
2b8eae9810 Added protocol caps to window 2014-09-26 13:45:18 +02:00
obscuren
b2dc19155f Renamed wallet to main 2014-09-26 13:38:40 +02:00
obscuren
7a5b279459 Version bump 2014-09-26 13:35:48 +02:00
obscuren
cf999c4622 Cleaned up 2014-09-26 13:34:06 +02:00
obscuren
68119d0929 Fixed messages to use proper numbers 2014-09-26 13:32:54 +02:00
obscuren
9ed8dc7384 Attempt to catch up from unknown block 2014-09-25 16:57:49 +02:00
obscuren
dc944f7518 Added some lookup helper methods for name reg 2014-09-25 10:33:05 +02:00
obscuren
d5d1e50365 Support multiple promises as data or mixed with non promises 2014-09-25 10:32:54 +02:00
obscuren
2458697dad Merge branch 'master' into develop 2014-09-24 21:37:05 +02:00
Jeffrey Wilcke
206672db5e Merge pull request #52 from nicksavers/winfix
Add blank line after +build comment
2014-09-24 21:36:37 +02:00
obscuren
5c2aa1d4f5 Merge branch 'master' into develop 2014-09-24 21:21:03 +02:00
obscuren
5cb4120ef5 queue get peers each 10 seconds 2014-09-24 21:20:57 +02:00
obscuren
496df5c29a Merge branch 'master' into develop 2014-09-24 21:13:35 +02:00
obscuren
3aeba50c38 merge error 2014-09-24 21:13:28 +02:00
obscuren
29f5dd38e3 Merge branch 'release/0.6.6' into develop 2014-09-24 20:41:22 +02:00
obscuren
b8b1453392 Merge branch 'release/0.6.6' 2014-09-24 20:41:11 +02:00
obscuren
ecdda01841 Merge branch 'release/0.6.6' into develop 2014-09-24 20:41:03 +02:00
obscuren
bb4495722f Merge branch 'release/0.6.6' 2014-09-24 20:40:54 +02:00
obscuren
1118aaf840 Temp work around 2014-09-24 20:40:40 +02:00
obscuren
1cb12296f6 Temp work around 2014-09-24 20:40:18 +02:00
obscuren
96fd1ce270 Bump 2014-09-24 20:04:14 +02:00
obscuren
544b7fba7f Merge branch 'tmp' into develop
Conflicts:
	peer.go
2014-09-24 19:59:14 +02:00
obscuren
6ecbbe4006 Download indicator 2014-09-24 19:57:22 +02:00
obscuren
cba2f6c2c4 Block pool stop / start 2014-09-24 19:56:21 +02:00
obscuren
1fe2d0d0e0 Peers no longer take care of block processing 2014-09-24 19:55:28 +02:00
obscuren
54558dd8ae Removed log 2014-09-24 19:54:51 +02:00
obscuren
60a8c9527c Mine without txs 2014-09-24 19:54:37 +02:00
obscuren
84690bfbbe Changed the block fetching code and hash distribution 2014-09-24 19:54:30 +02:00
obscuren
d3a0bb4f35 Info => Debug 2014-09-24 19:54:14 +02:00
obscuren
ad13b402d7 Fixed race condition 2014-09-24 17:47:01 +02:00
obscuren
b66fcf85df checkp 2014-09-24 11:55:02 +02:00
obscuren
ba43364f36 tmp 2014-09-24 11:41:57 +02:00
obscuren
57dc435f9b Added TD for each block 2014-09-24 11:39:17 +02:00
nicksavers
c582890590 Add blank line after +build comment 2014-09-23 20:04:06 +02:00
obscuren
615d20598a Merge branch 'develop' 2014-09-23 18:19:56 +02:00
obscuren
46a496428f ugh 2014-09-23 18:19:51 +02:00
obscuren
acfb5b85fb Merge branch 'hotfix/0.6.5-2' into develop 2014-09-23 17:56:50 +02:00
obscuren
70db149494 Merge branch 'hotfix/0.6.5-2' 2014-09-23 17:56:43 +02:00
obscuren
a4007f3b68 Fixed min gas price on coin 2014-09-23 17:56:35 +02:00
obscuren
bc1a173d2f Merge branch 'hotfix/0.6.5-3' into develop 2014-09-23 17:55:54 +02:00
obscuren
5c5db7d931 Merge branch 'hotfix/0.6.5-3' 2014-09-23 17:55:45 +02:00
obscuren
6800c3665a Re-added min gas price check on tx pool 2014-09-23 17:55:34 +02:00
Christoph Jentzsch
28ed968b46 Added blockInfoTest 2014-09-23 15:49:22 +02:00
Christoph Jentzsch
ffbd5a35b5 Added environmentalInfo- and sha3- test 2014-09-23 15:37:52 +02:00
obscuren
b73c07dd80 Merge branch 'hotfix/0.6.5-2' into develop 2014-09-23 12:00:25 +02:00
obscuren
ea67d853a8 Merge branch 'hotfix/0.6.5-2' 2014-09-23 12:00:10 +02:00
obscuren
ac5e86b7ae Removed windows support for serpent :-( 2014-09-23 12:00:01 +02:00
obscuren
353b558536 Merge branch 'develop' 2014-09-23 10:23:46 +02:00
obscuren
8516e748ca Actually remove it alltogether 2014-09-23 10:23:37 +02:00
obscuren
8780deece9 Merge branch 'hotfix/0.6.5-1' into develop 2014-09-23 10:21:45 +02:00
obscuren
1b66e1c93a Merge branch 'hotfix/0.6.5-1' into develop 2014-09-23 10:21:29 +02:00
obscuren
0705bb3fe5 Merge branch 'hotfix/0.6.5-1' 2014-09-23 10:21:13 +02:00
obscuren
48fd23dc10 don't mine without transactions 2014-09-23 10:20:55 +02:00
obscuren
df30588eb6 Merge branch 'release/0.6.5' into develop 2014-09-22 19:34:49 +02:00
obscuren
ce149d2733 Merge branch 'release/0.6.5' 2014-09-22 19:34:31 +02:00
obscuren
9ac4e23b66 Merge branch 'release/0.6.5' into develop 2014-09-22 19:34:07 +02:00
obscuren
7d08e4f7d1 Remove log 2014-09-22 18:15:32 +02:00
obscuren
2ae3bda029 Increased from 200 nano to milliseconds 2014-09-22 18:15:10 +02:00
obscuren
1bc815e0b1 Remove log 2014-09-22 16:30:30 +02:00
obscuren
16871ae2b4 New Peer server 2014-09-22 16:28:49 +02:00
obscuren
9ed5b4d90e Support C++ GetBlockHash by assuming empty = done 2014-09-22 16:28:28 +02:00
obscuren
b65f29f8fa Added JavaScript JSON helper 2014-09-22 14:51:41 +02:00
obscuren
65a802c678 Re-wrote Call and Execute to use the new vm messages 2014-09-22 14:51:21 +02:00
obscuren
151f9c7f82 BigInt accept string 2014-09-22 14:50:53 +02:00
Christoph Jentzsch
54c14f1ff3 Added bitwise logic operation test 2014-09-22 13:06:57 +02:00
Christoph Jentzsch
d0af113aab Added vm arithmetic test 2014-09-20 01:42:51 +02:00
obscuren
80261c803a Fixed deref ptr 2014-09-19 13:19:19 +02:00
Jeffrey Wilcke
cb8261a78b Update genesishashestest.json 2014-09-19 13:15:44 +02:00
obscuren
863785a520 Updated opcodes 2014-09-18 16:48:42 +02:00
obscuren
f3a93b046e Upped protocol version for VM change 2014-09-18 01:02:15 +02:00
obscuren
b3834d8272 Removed extra slash so @nicksavers gets off my back ;-) 2014-09-17 16:28:30 +02:00
obscuren
a26c479182 Added len 2014-09-17 15:58:02 +02:00
obscuren
9559b53228 Added Past peers option 2014-09-17 15:57:44 +02:00
obscuren
eb32fe20c8 Rewrite 2014-09-17 15:57:32 +02:00
obscuren
fd041d91ee Truncate when writing 2014-09-17 15:57:07 +02:00
obscuren
1549a29c9d Connect to previous peer 2014-09-16 16:36:27 +02:00
obscuren
66e309c5c4 Up deadline to reduce cpu load 2014-09-16 16:36:18 +02:00
obscuren
fb528c47c0 Moved code 2014-09-16 16:19:48 +02:00
obscuren
74de0f1f2a Rewrote reading strategy 2014-09-16 16:06:38 +02:00
obscuren
d02024929a require 5 for post 2014-09-16 11:35:26 +02:00
obscuren
399256b384 VM execution fixes
Refactoring caused executing issues
2014-09-15 22:11:05 +02:00
obscuren
33a0dec8a1 Improved catching up and refactored 2014-09-15 15:42:12 +02:00
obscuren
2f614900e8 Updated GHOST 2014-09-15 01:11:01 +02:00
obscuren
4db4ec1621 Added unique set 2014-09-15 01:10:50 +02:00
obscuren
74ef22d824 add it to the list 2014-09-14 14:30:33 +02:00
obscuren
86d1a26b13 fixed status message 2014-09-14 14:09:46 +02:00
obscuren
742a9b00bc tmp 2014-09-14 13:47:29 +02:00
obscuren
9e89dacc64 log removed 2014-09-14 13:42:13 +02:00
obscuren
f63cb27803 tmp 2014-09-14 13:42:02 +02:00
obscuren
954ba211bf Fixed contract validation address in tx pool 2014-09-14 12:02:35 +02:00
obscuren
4b4830692a Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-09-14 00:13:32 +02:00
obscuren
2fb57b2ea7 Reworked filters 2014-09-14 00:13:23 +02:00
obscuren
96cf6fc147 Merge branch 'master' into develop 2014-09-13 14:39:10 +02:00
obscuren
8ef17c2fb1 fi crypto 2014-09-13 14:39:01 +02:00
obscuren
10564723b9 added string casting 2014-09-13 13:14:24 +02:00
Jeffrey Wilcke
369e8c4150 Merge pull request #49 from WeMeetAgain/develop
add pushtx to api
2014-09-11 13:28:05 +03:00
obscuren
c0187930dc Removed some commented code 2014-09-10 11:39:11 +02:00
obscuren
2f362509b8 New p2p protocol. NOTE: Needs major refactoring. See #50 2014-09-10 11:22:19 +02:00
Cayman Nava
8ac1b85a0b Merge branch 'feature-pushtx' into develop 2014-09-09 21:35:53 -07:00
Cayman Nava
7dacd7eb78 add pushtx to api
Previously the software assumed use of an internal private key for use in all broadcasted transactions. This addition lets nodes relay pre-signed transactions originating from sources other than the node itself.
2014-09-09 21:27:34 -07:00
obscuren
2949990016 Added CALLSTATELESS 2014-09-10 00:19:20 +02:00
obscuren
d91357d00c Added GetCode method 2014-09-08 00:50:04 +02:00
obscuren
0fea62ec6d Make use of new list type for transactions instead of json 2014-09-08 00:49:47 +02:00
obscuren
a63b74e345 New OPCODES
* EXT- CODECOPY, CODESIZE
2014-09-08 00:49:25 +02:00
obscuren
0b6b6b52fe Contract creation address are empty again 2014-09-08 00:48:59 +02:00
obscuren
250d40bca0 Reset the transient state when a new block's been found 2014-09-08 00:48:39 +02:00
obscuren
adabd71a4a Changed back to FIPS 180 2014-09-07 22:34:24 +02:00
obscuren
ff27df78fc Added new list type which can embed any slice type 2014-09-07 10:18:54 +02:00
obscuren
627b7c9fd7 Updated to latest sha3 implementation. Fixes #48 2014-09-07 10:07:51 +02:00
obscuren
6afc16399f Block size 2014-08-25 12:53:06 +02:00
obscuren
3f904bf3ac Implemented POST 2014-08-25 11:29:42 +02:00
obscuren
cdbc3ecc2a Serpent! :-) 2014-08-24 00:16:32 +02:00
obscuren
67af300383 Merge branch 'master' into develop 2014-08-23 19:01:15 +02:00
obscuren
ccea5fa948 changed to new nat-pmp repo 2014-08-23 19:01:06 +02:00
obscuren
fcc6f183a4 Changed level 2014-08-23 19:00:52 +02:00
obscuren
962255b373 Removed old code 2014-08-23 11:00:33 +02:00
obscuren
d9d4f63cd4 Don't add ... 2014-08-22 17:57:33 +02:00
obscuren
56103f0751 Log 2014-08-22 17:10:18 +02:00
obscuren
be9bfb5536 Minor improvement catching up
* When catching up check linked up the chain of hashes
2014-08-22 14:52:20 +02:00
obscuren
836ed9d6b7 Write Protocol version to the db so we can perform sanity checks 2014-08-22 11:34:59 +02:00
obscuren
a9f9a59416 Extra checks 2014-08-22 10:58:57 +02:00
obscuren
42d43147ca Changed log statements 2014-08-22 10:58:49 +02:00
obscuren
93008e279d Removed old chain code 2014-08-22 10:58:14 +02:00
obscuren
740081e2f7 Storage at changed to return bytes 2014-08-21 21:06:42 +02:00
obscuren
088bbc6bb7 Merge branch 'release/0.6.4' into develop 2014-08-21 20:25:38 +02:00
obscuren
2d00027fd9 Merge branch 'release/0.6.4' 2014-08-21 20:25:09 +02:00
obscuren
d03ab3c976 invalidated SWAP/DUP 2014-08-21 20:25:02 +02:00
obscuren
fb90ecc8bc Merge branch 'release/0.6.4' 2014-08-21 20:23:33 +02:00
obscuren
5196f9a340 bump 2014-08-21 20:22:39 +02:00
obscuren
732573ba51 Turbo mining 2014-08-21 20:13:26 +02:00
obscuren
854d6d4e5c DUP/SWAP n & ADD/MULMOD 2014-08-21 19:23:54 +02:00
obscuren
a289a77d5d DUP n SWAP n 2014-08-21 18:15:09 +02:00
obscuren
3def9258be Turbo mode 2014-08-21 18:14:49 +02:00
obscuren
0eb08693e9 Turbo mode 2014-08-21 18:14:41 +02:00
obscuren
cc6ad034f1 Merge branch 'release/0.6.3' into develop 2014-08-21 15:46:51 +02:00
obscuren
0af0f0d890 Merge branch 'release/0.6.3' 2014-08-21 15:46:26 +02:00
obscuren
c173e9f4ab MIT -> LGPL 2014-08-21 15:43:14 +02:00
obscuren
15ef3388c1 Doc 2014-08-21 15:27:01 +02:00
obscuren
d90ae4d45b Prot 0.6.3 2014-08-21 15:24:19 +02:00
obscuren
b368549fd5 Always return something valid 2014-08-21 15:12:13 +02:00
obscuren
c44f4f32fe Re-enabled catching up flag 2014-08-21 14:52:21 +02:00
obscuren
eaa2e8900d PoC 6 networking code.
* Added block pool for gathering blocks from the network (chunks)
* Re wrote syncing
2014-08-21 14:47:58 +02:00
obscuren
79c64f6bca Added block by hash or number 2014-08-20 16:40:19 +02:00
obscuren
89c442cadb Added block by number 2014-08-20 13:36:54 +02:00
obscuren
55a2f35a64 JS Filter 2014-08-20 13:05:26 +02:00
obscuren
b97ea0e447 Added JSFilter type 2014-08-20 09:59:09 +02:00
obscuren
b0ae61c652 Removed the "Get" part 2014-08-18 10:17:45 +02:00
obscuren
793e666f36 Dump bytes instead of strings 2014-08-17 12:42:32 +02:00
obscuren
4008ff32c9 Mutan compile 2014-08-17 12:42:02 +02:00
obscuren
d79387c27e Mutan compile 2014-08-17 12:41:52 +02:00
obscuren
4bd6003b7f removed pub completely in favour of pipe 2014-08-16 01:38:02 +02:00
obscuren
7d95e8624a Added message to closure && added change addresses 2014-08-15 16:19:10 +02:00
obscuren
2b9f71c6ca Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-08-15 13:05:20 +02:00
obscuren
d701b23230 Reworking the public js interface (pub) => (pipe) 2014-08-15 13:05:13 +02:00
Jeffrey Wilcke
79bc628858 Merge pull request #43 from ethersphere/develop
inline mnemonic wordlist to support binary builds without extra asset
2014-08-15 10:49:43 +02:00
obscuren
ace551030f Convert to hex 2014-08-15 01:08:23 +02:00
obscuren
c7ee9844bd Removed old code 2014-08-15 00:25:16 +02:00
obscuren
0fcc606569 Added new filter from map 2014-08-15 00:24:37 +02:00
obscuren
07cfb7b64a updated filter so it accepts multiple from and to 2014-08-14 17:02:39 +02:00
obscuren
0d733aa071 Removed validation check from GetMessages 2014-08-14 17:02:21 +02:00
zelig
0283498140 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-08-14 12:11:59 +02:00
obscuren
fa881220ae Updated lookup method to include CNAME's as well as A records 2014-08-13 10:52:50 +02:00
zelig
e85f3972b9 inline mnemonic wordlist to support binary builds without extra asset 2014-08-12 14:56:10 +02:00
obscuren
a760ce05b9 Updated chain for filtering 2014-08-11 16:23:38 +02:00
obscuren
2e5d28c73f Added bloom filter & block filter methods 2014-08-11 16:23:17 +02:00
obscuren
42d2bc28af Upped protocol version 2014-08-09 18:10:11 +01:00
obscuren
024be32f06 Make sure all left padded zero's aren't included 2014-08-09 18:09:55 +01:00
obscuren
27290e1277 Fixed gas limit calculation 2014-08-09 18:06:16 +01:00
obscuren
c51db4c940 Fixed stack issue 2014-08-08 14:36:59 +01:00
obscuren
3fc24013ef Fixed issue with overflowing 256 bit integers 2014-08-08 12:04:18 +01:00
obscuren
d6b0ab3028 Changed to DnsReg 2014-08-07 15:26:07 +02:00
obscuren
7272577fe6 Added dns lookup 2014-08-07 15:11:54 +02:00
obscuren
da50c75148 Added state dump method 2014-08-06 09:53:00 +02:00
obscuren
4edf7cfb05 config => Config 2014-08-05 11:31:39 +02:00
obscuren
3c78e418fb world => World 2014-08-05 11:30:12 +02:00
obscuren
e71b198e3d Renamed object to Object 2014-08-05 11:26:12 +02:00
obscuren
4f0bda403e Added vm options for object execution 2014-08-05 11:10:24 +02:00
obscuren
c215bbadf1 pipe 2014-08-05 10:17:26 +02:00
obscuren
0f84b9c30d Added exist method 2014-08-04 16:34:55 +02:00
obscuren
342cc122b4 Added general Pipe API 2014-08-04 16:25:53 +02:00
obscuren
03ce15df4c ethstate.NewState => ethstate.New 2014-08-04 10:42:40 +02:00
obscuren
3debeb7236 ethtrie.NewTrie => ethtrie.New 2014-08-04 10:38:18 +02:00
obscuren
2e7cf83522 Merge branch 'ethersphere-feature/ethutil-refactor' into develop 2014-08-01 10:30:19 +02:00
obscuren
8bed47a2d4 Merge branch 'feature/ethutil-refactor' of https://github.com/ethersphere/eth-go into ethersphere-feature/ethutil-refactor 2014-08-01 10:22:25 +02:00
obscuren
5ede1224e4 minor rlp things 2014-08-01 10:21:43 +02:00
zelig
9831619881 merge upstream 2014-07-30 18:03:20 +02:00
obscuren
5a2d62e4d9 Added better data parser 2014-07-30 13:06:59 +02:00
obscuren
42d47ecfb0 Removed peer disconnect on pong timeout. Fixes #106
This mechanism wasn't very accurate so it has been removed.
2014-07-30 11:26:38 +02:00
obscuren
1f9894c084 Old code removed and renamed amount to balance 2014-07-30 00:31:15 +02:00
obscuren
27f8922653 Increased block request amount 2014-07-29 23:34:21 +02:00
obscuren
74d7012025 Added temp seed 2014-07-29 23:33:59 +02:00
obscuren
5ca2938117 Fixed 2014-07-29 23:33:33 +02:00
obscuren
6fd2401cdf Fixed issue with var int reading.
Reading uneven byte slices were broken.
2014-07-29 23:33:18 +02:00
obscuren
6e94c024e4 Added big data test and updating to reader 2014-07-29 23:31:33 +02:00
obscuren
d1d2b660dc Prot 2014-07-29 15:55:08 +02:00
obscuren
8e7c4f91e3 Added ops 2014-07-29 10:33:30 +02:00
obscuren
41bd38147c Clean up and util methods 2014-07-26 11:24:44 +02:00
obscuren
92ffc1cc4c Merge branch 'release/0.6.0' into develop 2014-07-25 10:43:59 +02:00
obscuren
d761af84c8 Merge branch 'release/0.6.0' 2014-07-25 10:43:35 +02:00
obscuren
54f9ea14e1 Removed old S(DIV/MOD) 2014-07-25 09:57:47 +02:00
obscuren
7ee49c32b7 Added update method and general service timer
* disable catching up if no block received for longer than 10 seconds
2014-07-24 17:10:54 +02:00
obscuren
702cf5a3e1 Merge branch 'feature/refactor_vm' into develop 2014-07-24 14:16:04 +02:00
obscuren
dcf4fad971 Networking code 2014-07-24 12:30:04 +02:00
obscuren
6d69ca36a7 Peer reconnect attempt 2014-07-24 12:25:41 +02:00
obscuren
a45c08f9fe Removed old code 2014-07-24 12:19:55 +02:00
obscuren
3c3292d505 Added recoverable option 2014-07-24 12:12:00 +02:00
obscuren
306b5bcff3 Changed catching up code & peer handler
* Peers should be added no matter what
* Catch up with _anyone_
2014-07-24 12:11:30 +02:00
obscuren
cbd71ef8f5 Add Tx 2014-07-24 12:10:18 +02:00
obscuren
32d125131f Refactored to new state and vm 2014-07-24 12:04:15 +02:00
obscuren
958b482ada div 0 err 2014-07-23 12:36:47 +02:00
obscuren
92b16618ed Merge branch 'master' into develop 2014-07-23 12:04:45 +02:00
obscuren
a3771e7d7b Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-23 12:04:41 +02:00
obscuren
06ec80f394 zero devision check 2014-07-23 12:04:27 +02:00
obscuren
5d57b78471 Added big int to uint switch 2014-07-22 16:16:00 +02:00
obscuren
490ca410c0 Minor improvements and fixes to the new vm structure 2014-07-22 15:57:54 +02:00
Maran
4513623da1 Update keyaddrtest to be valid JSON 2014-07-22 12:24:46 +02:00
Maran
9c86e99968 Merge branch 'master' into develop 2014-07-22 12:16:09 +02:00
obscuren
1e8b54abfb Refactored state, state object and vm
* The State and StateObject have been moved to their own package
* The VM is moved to it's own package
2014-07-22 11:54:48 +02:00
Vitalik Buterin
e8cb5c221d Added next/prev trie test 2014-07-21 23:30:33 -04:00
obscuren
20ee1ae65e Refactored CALLDATALOAD to use big int
* Added BigMin
2014-07-21 20:38:43 +02:00
obscuren
eab0b2a90a Merge branch 'master' into develop 2014-07-21 20:23:15 +02:00
zelig
194c58858c send zero event to miner.powQuitChan fixes miner hanging 2014-07-21 19:12:04 +01:00
zelig
67528cf970 ethreact/README.md 2014-07-21 15:10:56 +01:00
Maran
6774ddaba2 Fix regression on 32bit (windows) systems 2014-07-21 14:35:37 +02:00
zelig
13cc220c0d Merge branch 'develop' of github.com:ethereum/eth-go into feature/ethutil-refactor 2014-07-21 13:31:26 +01:00
zelig
1e4af85a38 merge upstream 2014-07-21 13:26:29 +01:00
obscuren
8f91d47bf3 Merge branch 'master' into develop 2014-07-21 12:21:42 +02:00
obscuren
5d2669dbd3 Fixed tx sha creation 2014-07-21 12:21:34 +02:00
obscuren
93261b98c2 Changed iterator 2014-07-21 11:56:04 +02:00
obscuren
9f00aeae29 Base time on previous parent, not last block 2014-07-18 16:13:21 +02:00
obscuren
2762ec22d0 Fixed miner and logger 2014-07-18 13:50:15 +02:00
obscuren
cd9b344506 Fixed range 2014-07-18 13:21:40 +02:00
obscuren
61cc2ba7d9 fixed 2014-07-18 13:00:22 +02:00
obscuren
dad29bcaa1 Added channel for starting/stopping miner 2014-07-18 12:21:11 +02:00
obscuren
65650a5c66 Merge branch 'develop' into guiminer 2014-07-18 12:03:19 +02:00
Maran
db8170def3 WIP to expose hashrate to gui 2014-07-18 12:01:08 +02:00
obscuren
449b9a9d68 Check if version in known + fix 2014-07-18 11:57:44 +02:00
obscuren
28a146d438 Added find name for namereg 2014-07-17 22:30:00 +02:00
obscuren
6a19b62db6 added chainSync event 2014-07-17 22:01:13 +02:00
obscuren
a626b7ebe1 Fixed string data 2014-07-17 17:11:00 +02:00
obscuren
3331bb29ea bump 2014-07-17 15:35:46 +02:00
obscuren
16f6100500 Removed debug log 2014-07-17 15:11:09 +02:00
obscuren
90f63657cb Removed debug log 2014-07-17 15:01:33 +02:00
obscuren
0415e4a637 Fixed coinbase copy in state 2014-07-17 14:53:27 +02:00
obscuren
ed3424ff75 Trie fixes 2014-07-17 11:21:18 +02:00
obscuren
14c4f06100 Convert a byte slice to address 2014-07-16 13:20:57 +02:00
obscuren
8820d4e5ac Decreased timeout 2014-07-15 20:36:11 +02:00
obscuren
7c0a27a0f4 Added each callback for storage 2014-07-15 20:36:04 +02:00
obscuren
7a410643ac Added/changed logging 2014-07-15 20:35:55 +02:00
obscuren
34da3b4fa8 Moved 2014-07-15 20:35:07 +02:00
obscuren
4a2dd306c7 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-15 15:30:06 +02:00
obscuren
09bade6466 Fixed an issue where the trie might crash on missmatching lengths 2014-07-15 15:29:54 +02:00
Maran
9a93169898 Rewrote mnemonic word loading to facilitate deployable builds. 2014-07-15 12:52:44 +02:00
zelig
017d36e6b2 properly unsubscribe react channels when miner stops - fixes write on closed chan crash 2014-07-15 01:29:07 +01:00
zelig
1735ec0362 use ethreact.Event and ethreact.ReactorEngine 2014-07-15 01:11:06 +01:00
zelig
0ecc5c815e reactor test 2014-07-15 00:15:37 +01:00
obscuren
5ec62a5153 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-15 00:25:57 +02:00
obscuren
2784e256f1 Vm logging on diff 2014-07-15 00:25:49 +02:00
obscuren
50bc838047 Moved checks 2014-07-15 00:25:38 +02:00
obscuren
69acda2c25 Paranoia check moved 2014-07-15 00:25:27 +02:00
obscuren
98f21d8973 Compare method for receipts 2014-07-14 22:52:44 +02:00
obscuren
767d24ea5d Removed defer and added receipts checking in tx processing 2014-07-14 22:52:30 +02:00
zelig
d1c89727dc fix send overwritten by merge 2014-07-14 19:02:34 +01:00
zelig
3d5db7288f merge upstream 2014-07-14 18:50:06 +01:00
zelig
dc11b5c55e fix reactor channel blocking 2014-07-14 18:40:18 +01:00
zelig
5c03adbded fix logger channel blocking 2014-07-14 18:37:01 +01:00
Maran
8845fb7eae Add windows helper functions 2014-07-14 15:24:38 +02:00
Vitalik Buterin
98823c04b3 Replaced with deterministic test 2014-07-14 02:51:31 -04:00
obscuren
5a0c4ce295 Fixed "Copy" to also copy over the pending storage changes 2014-07-14 00:38:20 +02:00
obscuren
04f8c455e2 Added diff type 2014-07-14 00:37:50 +02:00
obscuren
2c46bfde8b Increased block request 2014-07-14 00:37:41 +02:00
obscuren
5b2e5d180f Changed diff output not to prefix hex with 0x 2014-07-14 00:37:18 +02:00
Vitalik Buterin
357eb21e4d Added my own random and namecoin tests (pyethereum) 2014-07-13 16:12:56 -04:00
obscuren
6426f3635e Forgot to return gas when CALL's value transfer fails 2014-07-13 17:56:14 +02:00
obscuren
ee3ba0b1d6 Catch up per 10 2014-07-13 17:45:39 +02:00
Gav Wood
00cd0cce8f Output hex strings. 2014-07-12 21:20:04 +02:00
obscuren
54715586ab Changed sha3 to official one 2014-07-12 11:10:47 +02:00
obscuren
9010857677 Special diff output for execution 2014-07-11 16:04:09 +02:00
obscuren
ff151f9fbc vm output 2014-07-10 21:54:36 +02:00
obscuren
5c7e96d895 Removed serpent 2014-07-10 18:19:38 +02:00
obscuren
04561c4ddc Updated VM & added helper methods to state
* VM BALANCE opcode updated to pop 1 item and use that to retrieve the
  address' balance
* GetBalance and GetNonce on state that'll always return something valid
2014-07-10 17:58:16 +02:00
obscuren
9688ebef52 Return from execution immediately if there's no code 2014-07-10 15:31:48 +02:00
obscuren
d6753b2883 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-10 15:06:55 +02:00
obscuren
b7ff773ecf Removed debug log 2014-07-10 15:06:46 +02:00
obscuren
e504088b79 Consensus and bug fixes
* Ensure that each state object has an address that is 20 bytes
* Byte logging for vm
* changed diff output
2014-07-10 15:05:06 +02:00
obscuren
d52e5f7130 Removed hardcoded ip 2014-07-10 15:04:19 +02:00
obscuren
bea468f1e5 Increased timeout to 500ms 2014-07-10 15:03:48 +02:00
obscuren
639f1fd339 Log received and send to 2014-07-10 15:03:26 +02:00
obscuren
67e5689f87 Fixed BYTE opcode 2014-07-10 12:51:19 +02:00
Gav Wood
ddfa3af45d Everything a string. 2014-07-10 11:28:35 +01:00
Gav Wood
d659f469a9 Code fixes. 2014-07-10 10:16:25 +01:00
Maran
dcbd97d29c Check current folder for mnemonic words if it fails in source folder. For binary support 2014-07-09 10:59:49 +02:00
obscuren
794e65b60e Updated peer server 2014-07-07 22:08:09 +02:00
obscuren
6cb35836a2 Upped protocol version number 2014-07-07 16:06:09 +02:00
obscuren
e4e704f480 Fix quit 2014-07-07 16:05:59 +02:00
obscuren
14d13167a7 Remove debug println 2014-07-07 13:59:59 +02:00
obscuren
78aad9a192 Getting rid of deprecated methods 2014-07-07 13:59:32 +02:00
obscuren
b01cb2406f Fixed state reset case 2014-07-07 13:59:09 +02:00
obscuren
42bb3d8aae Removed old if statement. No longer needed 2014-07-07 13:58:54 +02:00
obscuren
96ac061e68 Log change 2014-07-07 13:58:28 +02:00
obscuren
890745e846 Increased timeout 2014-07-07 13:58:20 +02:00
zelig
4d77b7face remove extra case in main loop 2014-07-07 12:30:25 +01:00
obscuren
68fba4b781 Fixed state reset on err 2014-07-07 11:17:48 +02:00
Jeffrey Wilcke
239a5d3230 Merge pull request #34 from ethereum/revert-33-feature/ethutil-refactor
Revert "ethreact - Feature/ethutil refactor"
2014-07-07 10:59:26 +02:00
Jeffrey Wilcke
6fe9b4ab5e Revert "ethreact - Feature/ethutil refactor" 2014-07-07 10:59:16 +02:00
obscuren
9dab7dcc3c Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-07 10:53:25 +02:00
obscuren
d40cba3042 changed state reset 2014-07-07 10:53:20 +02:00
obscuren
1199941475 Connect to peer node by default 2014-07-07 10:52:58 +02:00
obscuren
ec040908e9 Protocol bump 2014-07-07 10:52:39 +02:00
Jeffrey Wilcke
b958179263 Merge pull request #33 from ethersphere/feature/ethutil-refactor
ethreact - Feature/ethutil refactor
2014-07-07 10:52:02 +02:00
Gav Wood
5e83ea8228 Prettier VM tests. 2014-07-06 16:17:12 +02:00
Gav Wood
a09aae0efe Fix VM tests. 2014-07-06 15:46:01 +02:00
zelig
5a2afc5754 fix reactor engine main loop blocked to wait if drained 2014-07-05 19:56:01 +01:00
zelig
d4300c406c logger fix
- introduce quit, drained, shutdown channels
- mainLoop falls through reading message channel to drained state, and waits is blocked in default branch until any message is sent
- Flush() waits for <-drained
- Stop() pushes quit and nodges mainloop out of blocking drained state
- package-global mutex
- Reset()
- clear tests
2014-07-05 19:11:08 +01:00
zelig
4fb2905b1e Merge branch 'develop' of github.com:ethereum/eth-go into feature/ethutil-refactor 2014-07-05 12:53:00 +01:00
obscuren
b232acd04e Debugging mode for vm 2014-07-05 13:24:49 +02:00
obscuren
329887df99 Fixed crazy looping 2014-07-05 13:24:26 +02:00
zelig
44d0d6abd2 Merge branch 'develop' of github.com:ethereum/eth-go into feature/ethutil-refactor 2014-07-04 19:40:23 +01:00
zelig
0c6f1c9c3a ethreact
- consistent renaming
- React -> Event
- ReactorEvent -> EventHandler
- NewReactorEngine -> New
- async ReactorEngine main loop with select on main eventChannel and quit channel
- ReactorEngine main loop control with Start() Stop() Flush()
- ReactorEngine.dispatch
- use sync.RWMutex
- delete eventHandler if subscribed channels go to 0
2014-07-04 19:38:53 +01:00
zelig
584d1c61ec use ethreact.Event and ethreact.ReactorEngine 2014-07-04 19:38:44 +01:00
zelig
af27264140 remove reactor code from ethutil 2014-07-04 19:37:40 +01:00
Jeffrey Wilcke
ec9a044a17 Merge pull request #10 from romanman/patch-1
Update vmtests.json
2014-07-04 15:56:52 +02:00
obscuren
90eb4f1939 Debug output, minor fixes and tweaks
* Script compile length fix
* Transition fix
2014-07-04 15:32:10 +02:00
obscuren
23b5b5fa36 Length check 2014-07-04 13:34:50 +02:00
obscuren
d5bcc01eae Fixed shebang check. Previously it would hang on an unknown shebang 2014-07-04 13:05:07 +02:00
romanman
5e0123fbe1 Update vmtests.json 2014-07-04 10:23:04 +01:00
obscuren
633027d980 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-04 00:13:57 +02:00
obscuren
d3d043dba0 Merge branch 'ethersphere-feature/clientid' into develop 2014-07-04 00:13:42 +02:00
obscuren
db60ebbbd7 Merge branch 'feature/clientid' of https://github.com/ethersphere/eth-go into ethersphere-feature/clientid 2014-07-04 00:12:28 +02:00
obscuren
cb7ebdf821 Decreased timeout 2014-07-04 00:12:21 +02:00
Jeffrey Wilcke
70e1a1a4df Merge pull request #32 from josephyzhou/develop
typo, duplications
2014-07-04 00:10:29 +02:00
Joey Zhou
7c41e413e4 typo, duplications 2014-07-03 11:31:47 -07:00
romanman
2b6da2f5f2 Update vmtests.json
arith testcase updated
2014-07-03 17:45:04 +01:00
zelig
f02602d02d ConfigManager (transitional)
- remove clientstring handling from ethutil.Config
- ReadConfig takes no Identifier argument
- members Ver, ClientString, ClientIdentifier removed from Config
- type ConfValue removed
- expose public type ethutil.ConfigManager
- Set -> Save(key string, value interface{}) now takes any value to allow for persisting non-string values directly
- TODO: eliminate all eth specific configs, just a wrapper around globalconf
2014-07-03 17:30:51 +01:00
zelig
90c2064640 peer constructors now set version string with ethereum.ClientIdentity().String() 2014-07-03 17:30:37 +01:00
zelig
c833c3fec8 add ClientIdentity() ethwire.ClientIdentity to Ethereum 2014-07-03 17:30:04 +01:00
zelig
c64629964f ethwire.ClientIdentity now handles Client info sent in handshake + test 2014-07-03 17:28:27 +01:00
zelig
de2da4fd19 Merge branch 'develop' of github.com:ethereum/eth-go into feature/clientid 2014-07-03 15:08:13 +01:00
zelig
198e5eeab9 EthManager interface extended with ClientIdentity() ethwire.ClientIdentity 2014-07-03 15:08:06 +01:00
obscuren
8baa0f84e7 Fixed reverting error 2014-07-03 16:07:21 +02:00
obscuren
5d67139206 Fix 2014-07-03 10:05:02 +02:00
obscuren
5b8dde9602 Fixed CREATE op. Fixes #87 2014-07-03 10:04:38 +02:00
obscuren
81bc721c5c Fixed address generation 2014-07-03 10:03:58 +02:00
Gav Wood
4bb646117d Merge branch 'develop' of github.com:/ethereum/tests into develop 2014-07-02 19:43:22 +02:00
Gav Wood
bba38980bd New tests. 2014-07-02 19:43:06 +02:00
obscuren
35ae9e3aa8 Paranoia check 2014-07-02 17:48:10 +02:00
obscuren
2f9bc2ab75 Removed old code 2014-07-02 17:47:33 +02:00
obscuren
8de099ae75 Added paranoia check 2014-07-02 17:47:18 +02:00
obscuren
40e3d2ab55 Changed CREATE 2014-07-02 17:47:09 +02:00
Vitalik Buterin
a33b309d99 Testing submodules 2014-07-02 10:14:05 -04:00
Vitalik Buterin
50318217ca Testing submodules 2014-07-02 10:10:46 -04:00
Vitalik Buterin
57fa655522 Testing submodules 2014-07-02 10:09:08 -04:00
obscuren
6748158ab4 Moved methods 2014-07-02 13:40:02 +02:00
obscuren
e4d2d00d41 Added support for breakpoints on specific instructions 2014-07-02 13:08:32 +02:00
obscuren
315d65280b Removed comment 2014-07-02 11:30:14 +02:00
obscuren
d15952c867 Moved debug hook to Vm directly 2014-07-02 01:04:21 +02:00
obscuren
1954ef47e6 Suicide is deferred to update 2014-07-02 00:06:21 +02:00
obscuren
fd1d0bbde7 Updated to generic padding function 2014-07-02 00:05:48 +02:00
obscuren
d7e396a98c l <=> r 2014-07-01 23:59:37 +02:00
obscuren
00d3935aac Removed old method 2014-07-01 23:59:18 +02:00
obscuren
bb2433ca1a Added quitting reason 2014-07-01 20:32:47 +02:00
obscuren
7238a77327 Removed old code 2014-07-01 20:12:18 +02:00
obscuren
dd869064a6 delete? 2014-07-01 20:09:37 +02:00
obscuren
7a2a63f32b Added utility wrapper for Ethereum Config contract
Note, this utility function has to move elsewhere
2014-07-01 20:09:21 +02:00
obscuren
28ef7d228c Added Left and Right padding utility functions 2014-07-01 20:08:48 +02:00
obscuren
6151ae7db5 Fixed key import for empty entries 2014-07-01 20:08:32 +02:00
obscuren
3889785017 Added Path utility 2014-07-01 20:08:18 +02:00
obscuren
7a9ff4f8d4 bump 2014-07-01 16:28:17 +02:00
Jeffrey Wilcke
29f613ef84 Merge pull request #28 from ethersphere/feature/keys
Feature/keys
2014-07-01 16:16:05 +02:00
zelig
ff5703fd9b ethutil -> ethtrie.NewTrie 2014-07-01 15:09:43 +01:00
zelig
89630d2826 merge upstream 2014-07-01 15:03:02 +01:00
obscuren
550407b0ec Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-07-01 15:44:43 +02:00
obscuren
d0959063d5 Up 2014-07-01 15:28:12 +02:00
Maran
d294dedfad Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-07-01 15:26:18 +02:00
Maran
e798294a4b Update min GasLimit 2014-07-01 15:25:57 +02:00
Gav Wood
ea0eb0a8c8 Latest genesis block. 2014-07-01 15:19:34 +02:00
obscuren
114e715e3c Merge branch 'ethersphere-feature/keys' into develop 2014-07-01 13:48:28 +02:00
obscuren
253c23240b Merge branch 'feature/keys' of https://github.com/ethersphere/go-ethereum into ethersphere-feature/keys
Conflicts:
	.gitignore
	README.md
2014-07-01 13:45:39 +02:00
obscuren
0ce9003ba7 Fix for creating a tx from an unknown account 2014-07-01 12:16:14 +02:00
obscuren
2bbc204328 Close pow chat. Fixes #95 2014-07-01 11:55:50 +02:00
obscuren
92693e4459 The dragon has been slain. Consensus reached! 2014-07-01 11:26:45 +02:00
obscuren
39263b674c Paranoia 2014-07-01 09:56:10 +02:00
obscuren
5f5910c603 Regression test for trie 2014-07-01 09:55:20 +02:00
obscuren
ed276cd7c2 Added Paranoia check for VM execution 2014-06-30 20:03:31 +02:00
obscuren
82272ee08a Iterator fix 2014-06-30 14:28:54 +02:00
obscuren
9ed0d389b2 Generic trie 2014-06-30 13:34:47 +02:00
Jeffrey Wilcke
25bb76b69c Reset 2014-06-30 13:25:04 +02:00
obscuren
00bb68d7d2 Merge branch 'develop' into interop 2014-06-30 13:13:55 +02:00
obscuren
c23074d5ad Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-06-30 13:13:45 +02:00
obscuren
8ddd4c4c52 wip 2014-06-30 13:09:04 +02:00
obscuren
5a86892ecb Using remote for test cases 2014-06-30 13:08:00 +02:00
Jeffrey Wilcke
74c6d8424e Updated wrong test 2014-06-30 12:10:06 +02:00
zelig
12972b4b65 DBKeyStore.Load returns no error if keyring not found in db 2014-06-29 20:53:26 +01:00
zelig
2920795168 using keyPair.Mnemonic() in file key store Save method 2014-06-29 20:28:54 +01:00
zelig
25314313f8 added Mnemonic() and AsStrings() methods, added memoization for address 2014-06-29 20:28:04 +01:00
zelig
a8be0d9f48 add InitFromString method to be used in gui 2014-06-29 20:26:55 +01:00
zelig
dabaa4cce0 change all modified calls to ethtrie, ethutil and ethcrypto functions 2014-06-29 18:30:05 +01:00
zelig
707d413761 refactor ethutil/trie to ethtrie 2014-06-29 16:26:58 +01:00
zelig
4be3521727 import math/big 2014-06-29 16:17:33 +01:00
zelig
e3b911652d move CreateAddress from ethutil/common to ethcrypto 2014-06-29 16:08:33 +01:00
zelig
5e50b50dc3 no strconv import needed 2014-06-29 16:06:54 +01:00
zelig
772e7e8c8d Key Manager
- keypair, keyring:
-- consistent naming of methods
-- error propagation
-- no panic
- keyManager: persist, import, export, initialize and (re)set keyring
- no global public "singleton" keyring, instead interface via keyManager
- keys test
- KeyStore interface, DB and File store implementations
2014-06-29 16:02:23 +01:00
zelig
e1ea41ee9c remove ethutil helpers (refactored), and keypair (key management under ethcrypto package) 2014-06-29 16:01:57 +01:00
zelig
d87857ffdb config Pubkey removed (unused) 2014-06-29 15:59:57 +01:00
zelig
1db3e2241e move ethutil/mnemonic to ethcrypto - electrum word list now sourced from file 2014-06-29 15:59:35 +01:00
zelig
d085133c6d move ethutil helper crypto functions to ethcrypto/crypto 2014-06-29 15:57:12 +01:00
zelig
5c1e0a6dc4 move ethutil hex conversion functions to bytes 2014-06-29 15:56:40 +01:00
zelig
7489fb784e move ethutil helper slice functions -> slice 2014-06-29 15:56:19 +01:00
Jeffrey Wilcke
9ea3a60291 Fixed roots 2014-06-28 18:48:28 +02:00
Gav Wood
5fc3ac0e92 Simple hex test. 2014-06-28 18:40:06 +02:00
Gav Wood
edd3a00c2a Additional test for jeff. Now use the 0x... notation. 2014-06-28 18:22:18 +02:00
Jeffrey Wilcke
2eae52ebd1 Merge pull request #27 from ethersphere/bugfix/ethchain-test
transitional ethutil.ReadConfig fixes in ethchain tests (they still fail...
2014-06-28 10:22:23 +02:00
Gav Wood
5021e0dd83 VM test framework updated. 2014-06-27 21:35:26 +02:00
Gav Wood
c818d13202 Removed arrays from Trie tests JSON as per conformance guide and changed
vocabulary to match other tests.
VM test updates.
2014-06-27 18:18:24 +02:00
zelig
79009ca074 transitional ethutil.ReadConfig fixes in ethchain tests (they still fail! FIXME :) 2014-06-27 15:56:45 +01:00
obscuren
8151858e70 Merge branch 'master' of github.com-obscure:ethereum/eth-go 2014-06-27 00:17:15 +02:00
obscuren
6c7e58643c Merge branch 'develop' 2014-06-27 00:17:04 +02:00
obscuren
423beddf57 nil check 2014-06-27 00:16:49 +02:00
Jeffrey Wilcke
30f5642c62 Merge pull request #26 from ethersphere/master
bump v5.15
2014-06-27 00:11:55 +02:00
obscuren
e3ad2a3969 Merge branch 'develop' 2014-06-27 00:08:29 +02:00
obscuren
8119d77a21 :-( 2014-06-27 00:08:19 +02:00
zelig
d551a75c35 bump v5.15 2014-06-26 21:20:02 +01:00
obscuren
8935a93cf8 Merge branch 'release/0.5.15' into develop 2014-06-26 19:55:19 +02:00
obscuren
9d5a3f0131 Merge branch 'release/0.5.15' 2014-06-26 19:55:14 +02:00
obscuren
a98e6a262a Merge branch 'develop' into release/0.5.15 2014-06-26 19:53:08 +02:00
obscuren
491925b71e Merge branch 'ethersphere-feature/logging' into develop 2014-06-26 19:52:31 +02:00
zelig
853053a3b2 go fmt 2014-06-26 18:45:57 +01:00
obscuren
21e389bec5 bump 2014-06-26 19:04:57 +02:00
zelig
da38faa8f7 merge upstream; fix port in use warning; new logger API 2014-06-26 16:37:56 +01:00
zelig
098136b681 ethereum logs server started/stopped message 2014-06-26 10:43:02 +01:00
obscuren
0ed19d9f20 Logging, variable rearrangement 2014-06-26 11:26:42 +02:00
obscuren
39cb34850a Added instruction numbers 2014-06-26 11:25:43 +02:00
zelig
782f780476 space in miner logging message 2014-06-25 18:43:35 +01:00
zelig
a243e3b858 new logger API for upstream merge 2014-06-25 17:59:35 +01:00
zelig
98f1ee9442 merge upstream 2014-06-25 16:58:07 +01:00
zelig
a02edf7a93 put back extra debug detail logging to the right places using logger.DebugDetailf 2014-06-25 16:40:06 +01:00
zelig
6465e4c3fd update doc: list levels and show usage of named print methods 2014-06-25 16:38:42 +01:00
zelig
e75f7ae330 implement DebugDetail loglevel and named print methods 2014-06-25 16:37:38 +01:00
obscuren
b0dc50c2a0 New mutan implementation 2014-06-25 17:26:34 +02:00
obscuren
6d32bef65a Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-06-25 17:22:30 +02:00
zelig
4141cc39d0 Merge remote-tracking branch 'upstream/develop' into feature/logging 2014-06-25 16:13:27 +01:00
Maran
d8c675afbf Implement something that looks like confirmations, wip 2014-06-25 16:23:10 +02:00
Maran
8fe8175c78 Implemented TX History for ethPub 2014-06-25 16:12:33 +02:00
Maran
589d27386a Fix key generation in ethPub 2014-06-25 14:05:55 +02:00
obscuren
e58ba2fcfa Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-06-25 09:47:27 +02:00
obscuren
9dae1a1732 Removed BlockDo Method 2014-06-25 09:47:19 +02:00
Maran
0c55a11318 Support hex and decimal keys for GetStorageAt RPC. Fixes ethereum/go-ethereum#74 2014-06-24 11:15:26 +02:00
obscuren
16e8fc7427 Logging order 2014-06-23 16:11:55 +02:00
zelig
f58c7ac5a6 merge upstream 2014-06-23 13:07:43 +01:00
zelig
63157c798d refactor config (transitional). Details:
- ReadConfig initialiser sets up global ethutil.Config via config file passed from wrappers
- does not write out adhoc default (not meant to) but creates empty config file if it does not exist so that globalconf does not complain if persists a flag
- default datadir and default config file set together with other flag defaults in wrappers
- default assetpath set together with other command line flags defaults in gui wrapper (not in ethutil.Config or ui/ui_lib)
- add EnvPrefix, to handle environment variable options too via globalconf
- this is still transitional: global Config should just be a wrapper around globalconfig config handler and should be moved to go-ethereum
- actual eth stack config should not be global instead config handled properly with explicit dependency injectioninto eth stack component instances
2014-06-23 12:55:38 +01:00
zelig
b9e8a3e024 modified logging API
- package vars for tagged loggers
- weed out spurious fmt.PrintX and log.PrintX logging
- tried to second guess loglevel for some :)
2014-06-23 12:54:10 +01:00
zelig
8e9cc36979 refactor logging. Details:
- packages use tagged logger sending log messages to shared (process-wide) logging engine
- log writers (interface ethlog.LogSystem) can be added to the logging engine by wrappers/guis/clients
- shared logging engine dispatching to multiple log systems
- log level can be set separately per log system
- async logging thread: logging IO does not block main thread
- log messages are synchronously stringified to avoid incorrectly logging of changed states
- README.md
- loggers_test
2014-06-23 12:49:04 +01:00
obscuren
614624754d Let the state create the object 2014-06-23 13:42:30 +02:00
obscuren
d890258af6 Minor fixes to vm output 2014-06-23 11:26:51 +02:00
obscuren
803e4807ed Removed comments 2014-06-23 11:26:31 +02:00
obscuren
a4e26bf7c2 Added Block do which replays the given block or error 2014-06-23 11:25:14 +02:00
obscuren
9350ecd36f Do not keep on asking for the same chain 2014-06-23 11:24:45 +02:00
obscuren
8c96c5662f Added hex script method 2014-06-23 11:24:07 +02:00
obscuren
842d52db7b Make sure that public key always uses 64 bytes 2014-06-23 11:23:51 +02:00
obscuren
bb1641e4ec Clean up & refactored methods 2014-06-23 11:23:18 +02:00
obscuren
299b50a0d4 Support serpent lang 2014-06-21 02:40:25 +02:00
obscuren
931ae0f116 Append zero's in R & S 2014-06-20 20:12:08 +02:00
obscuren
7fb5e993e3 Moved 0 check to state object for now 2014-06-20 20:11:40 +02:00
obscuren
0251fae5cc Changed loggers 2014-06-20 01:10:39 +02:00
obscuren
0c6b41f4c9 CALLDATACOPY 2014-06-20 01:10:20 +02:00
obscuren
f63f3853bb Merge branch 'release/0.5.14' into develop 2014-06-20 00:47:59 +02:00
obscuren
3f1f8438ed Merge branch 'release/0.5.14' 2014-06-20 00:47:52 +02:00
obscuren
7ad073fb30 bump 2014-06-20 00:47:50 +02:00
obscuren
09f37bd023 Returned to single method 2014-06-20 00:45:44 +02:00
obscuren
8f29f6a4d4 Removed some logging 2014-06-20 00:42:26 +02:00
obscuren
6fcc6a2f7c Changed copy/set 2014-06-20 00:41:42 +02:00
obscuren
0b8ba1d55b Renamed snapshot to copy/set and added it back to the VM 2014-06-20 00:41:28 +02:00
obscuren
933aa63b7d Length check on get 2014-06-19 21:41:37 +02:00
obscuren
80ffe1610c Removed log 2014-06-19 13:45:46 +02:00
obscuren
9104dcc29c Fixed call 2014-06-19 13:45:29 +02:00
obscuren
7e6684d926 Method for checking contract addresses 2014-06-19 13:42:47 +02:00
obscuren
1b431f29e5 Added missing types 2014-06-19 13:42:28 +02:00
obscuren
5ea7598408 Update after each transition instead of at the end.
Updating the state /after/ the entire transition creates invalid
receipts.
2014-06-19 13:42:14 +02:00
obscuren
731f55a05d Reset state when a transition fails 2014-06-19 13:41:17 +02:00
obscuren
509389be97 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-06-18 13:48:52 +02:00
obscuren
f911087eab Logging 2014-06-18 13:48:42 +02:00
obscuren
c4af1340fa Updated test 2014-06-18 13:48:29 +02:00
obscuren
3bc57fe5b5 CALLDATALOAD return 32 byte at all times 2014-06-18 13:48:08 +02:00
obscuren
7f94bd09ae Return a single byte if byte get called 2014-06-18 13:47:40 +02:00
Maran
d179f31d4f Merge branch 'feature/peers' into develop 2014-06-18 13:19:12 +02:00
Maran
fba6de834e Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-06-18 13:19:03 +02:00
Maran
1f79175898 Reworked peers to check for public key duplication and adding peers to peerlist only after the handshake has come in 2014-06-18 13:06:48 +02:00
obscuren
2fbcfd8824 Proper checks for multiple data items. Fixes #80 2014-06-18 11:55:05 +02:00
Maran
22e16f15a6 Reduce peer timeout to 10 seconds 2014-06-18 10:39:42 +02:00
obscuren
dc9c9369e0 log 2014-06-18 00:36:23 +02:00
obscuren
2565a79575 Swapped vars 2014-06-18 00:32:48 +02:00
obscuren
8a885c2606 Fixed GT and LT 2014-06-18 00:25:58 +02:00
obscuren
ca79360fd7 Verbose logging for VM 2014-06-17 18:49:26 +02:00
obscuren
34c8045d5b Fixed issue where JUMPI would do an equally check with 1 instead of GT 2014-06-17 18:05:46 +02:00
Maran
a90ffe1af1 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-06-17 11:40:37 +02:00
Maran
01e6f63e98 A handful of GUI fixes 2014-06-17 11:40:23 +02:00
obscuren
3621988e15 Removed deprecated states 2014-06-17 11:07:37 +02:00
obscuren
53e30f750d Removal of manual updating of state objects
* You'll only ever need to update the state by calling Update. Update
  will take care of the updating of it's child state objects.
2014-06-17 11:06:06 +02:00
obscuren
6656f99c54 Merge branch 'release/0.5.13' into develop 2014-06-16 18:25:33 +02:00
obscuren
5a0e751736 Merge branch 'release/0.5.13' 2014-06-16 18:25:24 +02:00
obscuren
ff0f15f763 bump 2014-06-16 18:25:21 +02:00
obscuren
887debb055 comment 2014-06-16 18:20:38 +02:00
obscuren
0d77632839 Refund gas 2014-06-16 12:25:18 +02:00
obscuren
8b15732c1e Check for nil receiver 2014-06-16 12:04:56 +02:00
obscuren
48bca30e61 Fixed minor issue with the gas pool 2014-06-16 11:51:16 +02:00
obscuren
9f62d441a7 Moved gas limit err check to buy gas 2014-06-16 11:14:01 +02:00
obscuren
b836267401 .. 2014-06-16 11:13:37 +02:00
obscuren
7b55bcf484 Removed old fees 2014-06-16 11:13:19 +02:00
obscuren
15d1f753f7 Removed old fees 2014-06-16 11:13:06 +02:00
obscuren
1d76e433f7 Removed some comments 2014-06-16 10:40:21 +02:00
obscuren
02d8ad030f Keeping old code for reference 2014-06-16 10:35:35 +02:00
obscuren
58a0e8e3e2 Changed RlpEncodable 2014-06-16 00:52:10 +02:00
obscuren
dccef70728 Method for creating a new key from scratch 2014-06-16 00:51:55 +02:00
obscuren
1fbea2e438 Reworking messaging interface 2014-06-16 00:51:21 +02:00
obscuren
8198fd7913 Cache whole objects instead of states only 2014-06-16 00:51:04 +02:00
obscuren
d80f999a21 Run contracts 2014-06-15 00:11:06 +02:00
obscuren
5871dbaf5a Set contract addr for new transactions 2014-06-15 00:10:42 +02:00
obscuren
b0e023e432 Increase ping timeout to 30 seconds 2014-06-15 00:04:18 +02:00
obscuren
6d52da58d9 Logging mechanism 2014-06-14 15:44:13 +02:00
obscuren
63883bf27d Moving closer to interop 2014-06-14 11:46:09 +02:00
obscuren
8124547348 Moving a head closer to interop 2014-06-13 16:06:27 +02:00
obscuren
c734dde982 comments & refactor 2014-06-13 13:06:27 +02:00
obscuren
cebf4e3697 Refactored state transitioning to its own model 2014-06-13 12:58:01 +02:00
obscuren
5e2bf12a31 Refactored state transitioning to its own model 2014-06-13 12:57:52 +02:00
obscuren
d078e9b8c9 Refactoring state transitioning 2014-06-13 12:45:11 +02:00
obscuren
b855e5f7df Changed opcode numbers and added missing opcodes 2014-06-12 11:19:32 +02:00
obscuren
6593c69424 Merge branch 'develop' into interop 2014-06-12 10:07:40 +02:00
obscuren
3a9d7d318a log changes 2014-06-12 10:07:27 +02:00
obscuren
8a2e50ab2a Merge branch 'develop' into interop
Conflicts:
	peer.go
2014-06-11 21:56:59 +02:00
obscuren
9ee6295c75 Minor changes 2014-06-11 21:55:45 +02:00
obscuren
1bf6f8b4a6 Added a buy gas method 2014-06-11 21:55:34 +02:00
obscuren
4d3209ad1d Moved process transaction to state manager
* Buy gas of the coinbase address
2014-06-11 21:55:23 +02:00
obscuren
9ff97a98a7 Namereg lookup fix 2014-06-11 21:51:21 +02:00
Maran
1938bfcddf Fix compare 2014-06-11 16:16:57 +02:00
Gav Wood
714770ffb3 Added Gav's new address. 2014-06-11 11:32:42 +01:00
Maran
71ab5d52b6 Exposed usedGas through ethPub 2014-06-11 11:40:50 +02:00
Maran
e090d131c3 Implemented counting of usedGas 2014-06-11 11:40:40 +02:00
Maran
97cc762143 Expose GasLimit to ethPub 2014-06-11 10:28:18 +02:00
Maran
bdc206885a Don't mine transactions if they would go over the GasLimit implements ethereum/go-ethereum#77 further. 2014-06-10 17:23:32 +02:00
Maran
69044fe577 Refactor to use new method 2014-06-10 17:22:43 +02:00
Maran
753f749423 Implement CalcGasPrice for ethereum/go-ethereum#77 2014-06-10 17:22:06 +02:00
Maran
2e6cf42011 Fix BigMax to return the biggest number, not the smallest 2014-06-10 17:15:18 +02:00
Maran
2995d6c281 Validate minimum gasPrice and reject if not met 2014-06-10 15:02:41 +02:00
Maran
1b40f69ce5 Prevent peer stop crash by removing logging 2014-06-10 14:59:38 +02:00
Maran
771f64397f Stop peers when they don't respond to ping/pong. Might fix ethereum/go-ethereum#78 2014-06-10 13:51:34 +02:00
obscuren
d8339fa29a Merge branch 'release/poc5-rc12' into develop 2014-06-09 22:24:13 +02:00
obscuren
006ac772e6 Merge branch 'release/poc5-rc12' 2014-06-09 22:24:05 +02:00
obscuren
a51dfe89c0 bump 2014-06-09 22:23:30 +02:00
obscuren
c7d1924c34 sha 2014-06-09 21:35:56 +02:00
obscuren
1153fd9a0c Added Douglas and Einstan 2014-06-06 12:12:27 +02:00
Maran
a56f78af67 Implement getStateKeyVal for JS bindings.
Gives JS the option to 'loop' over contract key/val storage
2014-06-04 15:54:39 +02:00
Maran
d7b882977c Make contract creation error more explicit by mentioning the sneder 2014-06-03 11:56:19 +02:00
Maran
2010fea088 Added faux latency for peeroverview 2014-06-03 10:42:55 +02:00
Maran
fb6ff61730 Implemented Public Peer interface 2014-06-02 15:20:27 +02:00
obscuren
ff8a834ccc Merge branch 'develop' 2014-05-30 19:51:25 +02:00
obscuren
9e8127accb woops 2014-05-30 19:51:19 +02:00
Gav Wood
9345bc13d4 Merge branch 'master' of github.com:ethereum/tests into develop 2014-05-30 17:50:38 +02:00
Gav Wood
a2257f3471 VM tests. 2014-05-30 17:50:18 +02:00
Heiko Heiko
78576dd3d3 changes based on new account structure nonce, balance, storage, code 2014-05-30 17:19:09 +02:00
obscuren
6b7dfa1fb5 Merge branch 'develop' 2014-05-30 16:58:31 +02:00
obscuren
17c825f53a Peer changes broadcasting and minor miner fix 2014-05-30 16:57:58 +02:00
obscuren
b15e03acd7 Fixed issue with casting to smaller byte array 2014-05-30 16:57:40 +02:00
obscuren
e0b6a31613 Buffered channel to fix not ready (blocking) 2014-05-30 13:27:56 +02:00
obscuren
f382221b28 Broadcast "peerList" event upon removing or adding peers 2014-05-30 13:04:08 +02:00
obscuren
6c91ffcfbe Do not panic, but return nil instead 2014-05-30 11:48:37 +02:00
obscuren
15e0093e13 Fixed issue where the client could crash when sending malformed data 2014-05-30 11:48:23 +02:00
obscuren
99797858a6 Added coin base to pub block 2014-05-30 11:47:23 +02:00
obscuren
8fcba0eb1e fixed test 2014-05-29 23:54:48 +02:00
obscuren
9bb7633254 Removed fmt 2014-05-29 11:50:36 +02:00
obscuren
e7097641e3 Support for namereg 2014-05-29 11:49:41 +02:00
obscuren
a2d01d6af8 Removed comments 2014-05-29 02:05:57 +02:00
obscuren
2ef3a98929 Merge branch 'develop' 2014-05-28 23:23:40 +02:00
obscuren
4d98762486 Fixed state object gas return 2014-05-28 23:16:54 +02:00
Maran
73a42d34a5 Merge branch 'release/poc5-rc11' into develop 2014-05-28 16:19:42 +02:00
Maran
95adac7522 Merge branch 'release/poc5-rc11' 2014-05-28 16:19:31 +02:00
Maran
76a59274bf Bump to RC11 2014-05-28 16:19:25 +02:00
Maran
a453b5514d Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-28 15:54:56 +02:00
Maran
8601604a09 Hooked up the Block Explorer to the Debugger so we can instantly debug made transactions 2014-05-28 15:48:23 +02:00
obscuren
b695c82520 Fixes #60 2014-05-28 15:07:11 +02:00
obscuren
a98e35d7a0 Length checking 2014-05-28 13:55:32 +02:00
obscuren
65722aeeca Added StringToBytesFunc 2014-05-28 13:14:56 +02:00
obscuren
8278ba5e45 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-28 12:39:41 +02:00
obscuren
6e98e5709a Set initial used gas 2014-05-28 12:39:34 +02:00
Maran
2fec1af275 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-28 12:15:46 +02:00
Maran
cfb979b5e3 Add contract addr if it's a contract creation tx 2014-05-28 12:15:43 +02:00
obscuren
9988b1a047 Sort transactions based on the nonce
* Added a transaction sorter
2014-05-28 12:06:09 +02:00
obscuren
73761f7af6 Closure call now returns the total usage as well
* Return the used gas value based on the UseGas and ReturnGas
2014-05-28 12:05:46 +02:00
obscuren
1c01e9c095 10 2014-05-28 12:03:40 +02:00
obscuren
98d4b51120 Changed opcode names 2014-05-28 12:03:12 +02:00
obscuren
ab8c7252da Merge branch 'release/poc5-rc10' into develop 2014-05-27 16:11:25 +02:00
obscuren
818cbcbdd4 Merge branch 'release/poc5-rc10' 2014-05-27 16:11:19 +02:00
obscuren
a428533160 bump 2014-05-27 16:10:18 +02:00
obscuren
006c757a03 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-27 13:32:37 +02:00
obscuren
4eb1771e67 Hooks can now quit the vm 2014-05-27 13:32:31 +02:00
obscuren
aba3066658 Changed debug hook and added state iterator 2014-05-27 13:10:18 +02:00
Maran
c1b09d639c Disamble tx data before adding it to PTx object 2014-05-27 10:38:31 +02:00
Maran
817def000b Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-27 10:29:47 +02:00
obscuren
6e24d603a1 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-27 01:08:59 +02:00
obscuren
5cdfee5143 New Trie iterator 2014-05-27 01:08:51 +02:00
Maran
2232974cda Changed var names around 2014-05-26 17:18:51 +02:00
Maran
aefcb83419 Updated Public Block and Transaction objects with more information 2014-05-26 17:07:04 +02:00
Maran
24a6d87c3f Don't handshake if there is no key yet; first start on Ethereal 2014-05-26 11:47:47 +02:00
obscuren
4c7bd75c1a Merge branch 'release/poc5-rc9' into develop 2014-05-26 00:42:18 +02:00
obscuren
b1463b2dc2 Merge branch 'release/poc5-rc9' 2014-05-26 00:42:07 +02:00
obscuren
1f3f76cb09 bump 2014-05-26 00:38:53 +02:00
obscuren
3ebd7f1166 State snapshotting 2014-05-26 00:09:38 +02:00
obscuren
81ef40010f The body of contracts are now returned instead 2014-05-25 14:13:54 +01:00
obscuren
99fa9afaf1 Updated to work with the new config 2014-05-25 14:13:07 +01:00
obscuren
281559d427 Canonical contract creation 2014-05-22 18:24:04 +02:00
obscuren
cc8464ce80 Transaction querying 2014-05-22 17:56:33 +02:00
obscuren
230aafbf66 Working on interop
* Receipts after each transaction
* Fee structure
* Applying fees to miners
2014-05-22 17:35:26 +02:00
obscuren
14787ac148 Fixed some issues connecting for interop 2014-05-22 17:33:46 +02:00
Jeffrey Wilcke
125839e848 Merge pull request #5 from bkirwi/master
Fix invalid JSON (removed trailing comma) and add test names
2014-05-22 09:58:45 +02:00
Ben Kirwin
356a3296bc Add some arbitrary test names
This should now conform to the format specified in the README.
2014-05-22 00:20:48 -04:00
obscuren
4e1c6a8a22 Added start / stopping methods 2014-05-22 00:25:34 +02:00
obscuren
f8f84ef095 Removed old contract creation code 2014-05-22 00:25:02 +02:00
Chen Houwu
42e14ec54f revert to correct data 2014-05-21 23:27:40 +08:00
Chen Houwu
4300197a74 fix: wrong sha3 hash because of the wrong rlp hex 2014-05-21 22:42:23 +08:00
Chen Houwu
a0d01b1a0b fix: wrong rlp hex 2014-05-21 22:29:53 +08:00
obscuren
e1b7bd51ee Return a disassembled script instead of the hex 2014-05-21 15:54:44 +02:00
Jeffrey Wilcke
6bc2fc7405 Merge pull request #4 from ethers/master
fix file name that seems to have been a typo
2014-05-21 14:11:37 +02:00
obscuren
56c2f651fe Merge branch 'develop' 2014-05-21 14:06:03 +02:00
obscuren
c371f9a162 Merge branch 'release/poc5-rc8' into develop 2014-05-21 14:05:48 +02:00
obscuren
d6e398aba4 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-21 14:05:30 +02:00
obscuren
7fe73deb2d Merge branch 'release/poc5-rc8' 2014-05-21 14:04:25 +02:00
obscuren
8f5eddd0ba Bumped 2014-05-21 14:04:19 +02:00
obscuren
f5852b47d1 Removed some logging and refactored a bit 2014-05-21 14:00:13 +02:00
Maran
1275e5bdc9 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-21 13:06:42 +02:00
obscuren
86cf69648e Improved miner so it won't include invalid transactions 2014-05-21 13:04:40 +02:00
Maran
d658a7f4ab Implemented missing EthPub calls in RPC server 2014-05-21 12:46:24 +02:00
obscuren
0e9c8568fd Re broadcast transactions 2014-05-21 12:39:15 +02:00
obscuren
2667cb3ab6 Apply to parent 2014-05-21 12:39:07 +02:00
obscuren
0c27c5eb7f Proper log statement 2014-05-21 12:38:56 +02:00
obscuren
05e4e97276 Fixed Public block creation. Added block logging 2014-05-21 12:09:28 +02:00
obscuren
07fe00c466 Changed numbers 2014-05-21 11:42:31 +02:00
obscuren
cbf221f6b7 Fixed competing block method 2014-05-21 11:42:20 +02:00
obscuren
734b2e4cf7 Merge branch 'hotfix/4' into develop 2014-05-21 01:12:39 +02:00
obscuren
85793a4706 Merge branch 'hotfix/4' 2014-05-21 01:12:33 +02:00
obscuren
3c35ba7c31 Fixed state overwriting issue 2014-05-21 01:12:28 +02:00
ethers
c31a93c27a fix file name that seems to have been a typo 2014-05-20 15:42:39 -07:00
obscuren
5ceb1620e9 Fixed couple issues
* (imp) Lock / RLock tries
* (fix) stack
2014-05-21 00:17:50 +02:00
obscuren
e8b4585295 Merge branch 'master' into develop 2014-05-20 22:45:10 +02:00
obscuren
6ef2832083 Upped prot 2014-05-20 22:45:01 +02:00
obscuren
6ba534af92 Merge branch 'hotfix/3' into develop 2014-05-20 22:44:10 +02:00
obscuren
47fd4833ee Merge branch 'hotfix/3' 2014-05-20 22:44:05 +02:00
obscuren
64701e388c Fixed state issue 2014-05-20 22:43:59 +02:00
obscuren
27aae60381 Merge branch 'hotfix/2' into develop 2014-05-20 22:05:04 +02:00
obscuren
7dae955c1a Merge branch 'hotfix/2' 2014-05-20 22:04:58 +02:00
obscuren
3b38df085e Fixed casting issue 2014-05-20 22:04:47 +02:00
obscuren
de87e436ab Merge branch 'hotfix/1' into develop 2014-05-20 19:20:09 +02:00
obscuren
e837c9ab3f Merge branch 'hotfix/1' 2014-05-20 19:20:04 +02:00
obscuren
ad51c85e5d Fixed crash 2014-05-20 19:19:53 +02:00
Heiko Heiko
66bc3665c1 fix: represent integers as strings 2014-05-20 17:36:35 +02:00
Heiko Heiko
ede5499da6 add: current initial alloc and genesis hashes 2014-05-20 17:21:09 +02:00
obscuren
9562aba86a Merge branch 'release/poc5-rc7' into develop 2014-05-20 17:09:53 +02:00
obscuren
4b13f93a3e Merge branch 'release/poc5-rc7' 2014-05-20 17:09:44 +02:00
obscuren
c37b3cef7d Bump 2014-05-20 17:08:53 +02:00
obscuren
0c4040d191 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-20 15:02:53 +02:00
obscuren
2bd377a3de Changed transaction hash for poc 5 2014-05-20 15:02:46 +02:00
Maran
31e44c2ab9 Change shorthands 2014-05-20 14:53:34 +02:00
Maran
f5d4414734 Fix notification when processing block that didn't have this client as origin 2014-05-20 14:41:35 +02:00
obscuren
7d3e99a2ab Fixed genesis and block data 2014-05-20 14:29:52 +02:00
obscuren
b4e156e1d7 Up protocol version 2014-05-20 13:29:46 +02:00
obscuren
6a31d55b2e added roman 2014-05-20 13:29:21 +02:00
obscuren
45b810450f ... 2014-05-20 13:09:44 +02:00
obscuren
f292e93e0e Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop
Conflicts:
	ethchain/transaction.go
2014-05-20 13:07:08 +02:00
obscuren
378815ee62 Rearranged according to YP 2014-05-20 13:06:47 +02:00
Jeffrey Wilcke
38b4dc2cdf Merge pull request #21 from nicksavers/patch-1
Rearrange transaction RLP encoding...
2014-05-20 13:06:27 +02:00
Nick Savers
530ab6b8fc Re-arranged transaction RLP encoding...
According to latest Yellow Paper specs and conform other clients
4794642e51
2014-05-20 13:02:37 +02:00
obscuren
fafdd21e4f unused 2014-05-20 12:23:49 +02:00
obscuren
faa57ecaef Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-20 12:19:25 +02:00
obscuren
2450398862 Added Maran to premine 2014-05-20 12:19:21 +02:00
Maran
36c9c93720 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-20 11:50:43 +02:00
Maran
12f30e6220 Refactored a lot of the chain catchup/reorg. 2014-05-20 11:50:34 +02:00
obscuren
fd19142c0d No longer store script directly in the state tree 2014-05-20 11:19:07 +02:00
Ben Kirwin
5131429abb Delete a comma
This should now be parseable as JSON.
2014-05-19 11:18:31 -04:00
obscuren
a2fb265563 Added a fatal method 2014-05-19 17:02:16 +02:00
obscuren
b8034f4d9e Increment nonce in the public api 2014-05-19 12:14:04 +02:00
obscuren
bd48690f63 Testing different mining state 2014-05-19 11:25:27 +02:00
Chen Houwu
f44a859331 add: case when value is long, ensure it's not get rlp encoded as node 2014-05-18 15:04:42 +08:00
obscuren
8730dfdcc2 Changed how changes are being applied to states 2014-05-17 14:07:52 +02:00
obscuren
88686cbed2 listen to pre instead of post 2014-05-15 15:00:25 +02:00
obscuren
f95993e326 M 2014-05-15 14:54:07 +02:00
obscuren
7bf2ae0b11 Removed old tx pool notification system. Fixes #19 2014-05-15 14:05:15 +02:00
obscuren
2734fc4079 Merge branch 'release/poc5-rc6' into develop 2014-05-14 21:34:49 +02:00
obscuren
6efdd21633 Merge branch 'release/poc5-rc6' 2014-05-14 21:34:30 +02:00
obscuren
ad4ffdc947 Bumped version 2014-05-14 21:34:13 +02:00
obscuren
65f570271c Fixed catching up 2014-05-14 20:50:37 +02:00
obscuren
a6b9ea05e8 Test 2014-05-14 20:36:21 +02:00
obscuren
166853aed9 Test 2014-05-14 20:35:23 +02:00
obscuren
98a631b556 Remove any invalid transactions after block processing 2014-05-14 16:29:34 +02:00
Maran
ff2cf2dacd Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-14 13:57:08 +02:00
Maran
3ac74b1e78 Implemented IsUpToDate to mark the node as ready to start mining 2014-05-14 13:57:04 +02:00
obscuren
f4fa0d48cb Moved keyring to ethutil & removed old methods. Implements #20 2014-05-14 13:54:40 +02:00
obscuren
0512113bdd Removed defer 2014-05-14 11:56:06 +02:00
obscuren
7c0df348f8 Increased deadline 2014-05-14 11:52:16 +02:00
obscuren
0c1f732c64 Do not queue messages if the peer isn't connected (e.g. timing out) 2014-05-14 11:29:57 +02:00
obscuren
283f4d8eb3 Merge branch 'develop' 2014-05-13 17:59:10 +02:00
obscuren
a4883a029f Propagate back to network 2014-05-13 17:51:33 +02:00
obscuren
b2181ac814 Merge branch 'develop' 2014-05-13 16:38:56 +02:00
obscuren
b0798e0a72 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-13 16:38:47 +02:00
obscuren
9831ba20b2 Merge branch 'release/poc5-rc4' into develop 2014-05-13 16:38:38 +02:00
obscuren
485e04d9df Merge branch 'release/poc5-rc4' 2014-05-13 16:38:26 +02:00
obscuren
86d6aba012 Bumped 2014-05-13 16:36:43 +02:00
Maran
c9ac5b0f74 Removed lingering log statement 2014-05-13 14:44:12 +02:00
Maran
28357d657b Implemented new JS/EthPub methods
- getTxCountAt
- getPeerCount
- getIsMining
- getIsListening
- getCoinbase
2014-05-13 14:43:29 +02:00
obscuren
8ec1bb382a Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-13 12:42:35 +02:00
obscuren
cac9562c05 Use EthManager interface instead 2014-05-13 12:42:24 +02:00
Maran
d31303a592 Implemented support for a custom RPC port 2014-05-13 12:01:34 +02:00
Maran
a9d5656a46 Added support to NewJsonRpc to return an error as well as an interface
Also changed default port to 8080. Fixes #18
2014-05-13 11:49:55 +02:00
Maran
3647cc5b07 Implemented our own makeshift go seed. Fixes #16 2014-05-13 11:35:21 +02:00
Maran
cc341b8734 Added debug message if you try to add a peer when max peers has been reached. 2014-05-12 16:36:14 +02:00
Maran
52b664b0ae Removed peers from peerlist as soon as they disconnect. Might fix #13
We used to wait for the reaping timer to clean up the peerlist, not any longer
2014-05-12 16:32:21 +02:00
Maran
8fe0864680 Only accept peers if we asked for them 2014-05-12 16:09:23 +02:00
Maran
5fcbaefd0b Don't forward localhost connections over the public network 2014-05-12 15:43:10 +02:00
Gav Wood
e1ae4ad449 PoC-5 VM tests. 2014-05-12 14:40:47 +01:00
Maran
7f9fd08792 Implemented proper peer checking when adding new peers
We now resolve a hostname to IP before we try to compare it to the existing peer pool
2014-05-12 15:08:21 +02:00
Maran
8b4ed8c505 Properly exchange peer capabilities between peers 2014-05-12 13:39:37 +02:00
Maran
4eb3ad192e Made the debug line for invalid peer versions dynamic 2014-05-12 12:28:56 +02:00
Vitalik Buterin
2b6c136dda Moved txt to json 2014-05-11 21:42:41 -04:00
obscuren
36572f03a7 Merge branch 'release/poc5-rc3' into develop 2014-05-10 16:24:21 +02:00
obscuren
a32dffb0e8 Merge branch 'release/poc5-rc3' 2014-05-10 16:24:14 +02:00
obscuren
e22e83b19a bump 2014-05-10 16:23:50 +02:00
obscuren
d3d9ed62e2 Upgraded to new mutan 2014-05-10 16:23:07 +02:00
obscuren
be7da48dad Merge branch 'release/poc5-rc2' into develop 2014-05-10 02:04:14 +02:00
obscuren
3af35d922e Merge branch 'release/poc5-rc2' 2014-05-10 02:04:06 +02:00
obscuren
dbf8645aaf Bump 2014-05-10 02:02:54 +02:00
obscuren
c03bf14e02 Fixed some tests 2014-05-10 02:01:09 +02:00
obscuren
afe83af219 Moved seeding and moved manifest 2014-05-09 16:09:28 +02:00
Vitalik Buterin
cbccbf977c New commit 2014-05-08 21:54:48 -04:00
obscuren
5a0bae1dae Auto update state changes notifications 2014-05-08 19:09:36 +02:00
obscuren
e8fb965ccb Cleaned up
Removed the unneeded address watch mechanism. State manager's transient
state should now take care of this.
2014-05-08 18:41:45 +02:00
obscuren
d709815106 Added trans state and removed watch address etc
The transient state can be used to test out changes before committing
them to the proc state. The transient state is currently being used by
the gui to support proper nonce updating without having to wait for a
block. This used to be done by a cached state mechanism which can now
safely by removed.
2014-05-08 18:26:46 +02:00
obscuren
f0440e85dc Removed value from closure. 2014-05-08 14:20:45 +02:00
obscuren
554f4f6f7d Fixed disasamble for all pushes 2014-05-08 14:20:06 +02:00
Maran
6c66cb3fa9 Merge branch 'develop' of github.com:ethereum/eth-go into develop 2014-05-07 11:05:53 +02:00
Maran
45ce820b11 Implemented value() 2014-05-07 11:05:49 +02:00
Vitalik Buterin
edbb8d407e Removed unneeded test, added new tests 2014-05-06 16:53:43 -04:00
obscuren
76d7bad722 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-05-06 17:43:34 +02:00
obscuren
a0af7de58e Optimizations 2014-05-06 17:43:27 +02:00
Maran
050684450b Assume arguments are supplied as strings to the rpc interface 2014-05-06 17:04:52 +02:00
Maran
e18b96b486 Fix an issue where we don't have the rpc so we dont have to close it 2014-05-06 14:15:02 +02:00
obscuren
af6875f4b2 Changed to lower case 2014-05-05 17:14:29 +02:00
obscuren
66af749023 Merge branch 'release/poc5-rc1' into develop 2014-05-05 15:55:55 +02:00
obscuren
2096b3a9ed Merge branch 'release/poc5-rc1' 2014-05-05 15:55:43 +02:00
obscuren
fedd4c906f bump 2014-05-05 15:55:26 +02:00
obscuren
78cb04cca3 wrong string 2014-05-05 15:51:43 +02:00
obscuren
14a6e6a9ce Added the ability to submit byte code for contracts instead of Mutan code. 2014-05-05 15:48:17 +02:00
Maran
3e5a7b34b1 Now with files 2014-05-05 15:15:43 +02:00
Maran
a4ca9927ab Renamed etherpc to ethrpc 2014-05-05 15:15:14 +02:00
Maran
9b1f11695d Get rid of that annoying number that keeps popping up in stdout 2014-05-05 14:20:20 +02:00
Maran
87a5e94525 Merge branch 'develop' into feature/rpc 2014-05-05 14:16:53 +02:00
Maran
b98cc2fb4e Fixed GetBlock when no block can be found 2014-05-05 14:15:58 +02:00
Maran
fde3e01f80 Fixed import cycle 2014-05-05 14:15:31 +02:00
Maran
c496aad20b Renamed Ethereum RPC package 2014-05-05 13:49:59 +02:00
Maran
8adad0654a Added more JSON niceties to types 2014-05-05 13:49:46 +02:00
obscuren
5757f5df2a Added secret to address method 2014-05-05 13:09:29 +02:00
Maran
39b8c83ba6 Impelemented GetStorageAt 2014-05-05 13:01:02 +02:00
obscuren
7c91159449 Added different storage notification object 2014-05-05 11:56:25 +02:00
Maran
4f20e8f649 Implemented first few methods via public api 2014-05-02 20:00:58 +02:00
obscuren
1f6df0cd52 Added receipts for tx creation 2014-05-02 14:08:54 +02:00
Maran
69d83b1da5 Merge branch 'develop' into feature/rpc 2014-05-02 14:08:27 +02:00
obscuren
e798f221dd Added public interface 2014-05-02 13:55:43 +02:00
Maran
c54788338a Merge branch 'develop' into feature/rpc 2014-05-02 13:35:54 +02:00
Maran
ebdf339a61 Implemented RPC framework 2014-05-02 13:35:25 +02:00
obscuren
70c8656640 Added a KeyPairFromSec function which creates a new keypair based on the given seckey 2014-05-02 12:11:55 +02:00
obscuren
17674fb888 Added suicide back in 2014-05-01 22:14:34 +02:00
obscuren
91aa189ef3 Fixed Upnp bug 2014-05-01 22:14:20 +02:00
obscuren
e6a68f0c3a Removed debug log 2014-05-01 22:13:59 +02:00
obscuren
d2ab322267 Removed debugging log 2014-04-30 17:43:48 +02:00
obscuren
c3293641e7 Removed debug logging 2014-04-30 17:13:32 +02:00
obscuren
21724f7ef9 Added manifest changes and changed closures 2014-04-30 14:43:32 +02:00
obscuren
38d6b67b5c Fixed state problem 2014-04-29 12:36:27 +02:00
obscuren
5516efdfa0 Removed old code 2014-04-27 18:05:30 +02:00
obscuren
21f8806eed Moved assembler stage to the mutan compiler 2014-04-27 18:01:37 +02:00
obscuren
bf850974f3 Using mutan assembler stage 2014-04-27 18:00:38 +02:00
obscuren
338b698091 Refactoring and added documentation comments 2014-04-27 17:16:53 +02:00
obscuren
16e52327a4 Upped version number 2014-04-27 16:53:35 +02:00
Gav Wood
45a0974f6f Merge pull request #3 from autolycus/develop
Fixed formatting and added test cases
2014-04-27 12:53:47 +01:00
obscuren
05d2d8f27d Actually convert gas 2014-04-26 02:11:00 +02:00
obscuren
ca6e3f6def Notify of changes 2014-04-26 02:06:25 +02:00
obscuren
d3a159ad3d Fixed tests 2014-04-26 01:54:45 +02:00
obscuren
0f93da400a Added new state object change echanism 2014-04-26 01:48:40 +02:00
obscuren
f3818478e2 Removed debug & unused functions 2014-04-24 13:48:33 +02:00
obscuren
ee7c16a8d9 Fixed Base problem and sload/sstore 2014-04-24 13:30:57 +02:00
obscuren
1c85d8c66b Minor improvements and bug fixes
* Fixed VM base bug
2014-04-24 00:00:50 +02:00
obscuren
0651af9dfd Removed some log statements and disabled additional validation checks 2014-04-23 15:54:15 +02:00
obscuren
c81804444f Call initial closure with proper tx argument 2014-04-23 15:53:53 +02:00
obscuren
ef7f3f36e2 Renamed CALLDATA to CALLDATALOAD 2014-04-23 15:53:34 +02:00
obscuren
f7d4e3cd6b Copy over bytes from previous root
Copy over instead of directly using the previous root. This is order to
avoid resetting problems
2014-04-23 15:52:50 +02:00
obscuren
6b08efabf8 @maranh see comment 2014-04-23 12:14:28 +02:00
obscuren
3a9a252f6e Fixed minor issue with gas and added state object init 2014-04-23 11:51:04 +02:00
obscuren
61cd1594b5 Fixed gas, price & value setters on initialization 2014-04-23 11:50:38 +02:00
obscuren
11c26e3211 Implemented ethereum package reader 2014-04-23 11:50:17 +02:00
obscuren
6930260962 Updated VM 2014-04-20 01:31:01 +02:00
Carl Allendorph
5fd2a98fcb Added some new test cases for the rlp encoding. 2014-04-19 13:26:14 -07:00
Carl Allendorph
4ba150954e Converted spaces to tabs to be compliant with the coding standards defined in cpp-ethereum 2014-04-19 12:48:42 -07:00
obscuren
a96c8c8af9 Added proper gas handling 2014-04-18 13:41:07 +02:00
obscuren
c5729d7ecc comments 2014-04-16 04:07:52 +02:00
obscuren
d811920d8b Hack for miner problem added w/ note
@maranh please check
2014-04-16 04:07:21 +02:00
obscuren
9c6aca7893 Merged accounts and contracts in to StateObject
* Account removed
* Contract removed
* Address state changed to CachedStateObject
* Added StateObject
2014-04-16 04:06:51 +02:00
obscuren
ca13e3b105 Moved assembler stage processing to it's own file 2014-04-15 16:16:38 -04:00
obscuren
086acd122b Added pre processing of script data 2014-04-12 00:13:42 -04:00
obscuren
116516158d Renamed 2014-04-11 13:29:57 -04:00
obscuren
ca747f2688 Added the possibility for debug hooks during closure call 2014-04-11 08:28:30 -04:00
obscuren
7d6ba88d2b Merge branch 'split' into develop 2014-04-10 21:05:58 -04:00
obscuren
d927c154e7 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-04-10 21:05:23 -04:00
obscuren
25dd46061f Added push20 2014-04-10 21:03:14 -04:00
obscuren
afc92fb7d7 Added better address format 2014-04-10 18:32:54 -04:00
obscuren
891f725909 Added better address format 2014-04-10 18:14:19 -04:00
obscuren
969e748dce Call fixed 2014-04-10 15:30:14 -04:00
obscuren
6a530ea371 Call fixed 2014-04-10 14:40:12 -04:00
obscuren
0fccbeabcc No longer return a list, but raw bytes 2014-04-09 12:28:34 -04:00
obscuren
720521ed4a Changed how txs define their data & added init field 2014-04-09 12:28:16 -04:00
obscuren
e09f0a5f2c Split code for contracts 2014-04-09 12:27:54 -04:00
obscuren
4f2e9c2640 Check for nil 2014-04-09 12:27:25 -04:00
Maran
5714a82778 Small tweaks to mnemonic 2014-04-09 11:06:30 -04:00
Maran
272b135b74 One more line of comment 2014-04-09 10:40:55 -04:00
Maran
335dc9e687 Merge branch 'develop' into feature/mnemonic 2014-04-09 10:06:51 -04:00
obscuren
03e139d23b Switched variable names 2014-04-09 16:04:36 +02:00
obscuren
6d28bf534f Added a length for copy 2014-04-09 16:00:28 +02:00
obscuren
c0cad0b534 Merge branch 'miner' of github.com-obscure:ethereum/eth-go into miner 2014-04-09 15:50:49 +02:00
Maran
a83db489df Fix transaction on new blocks 2014-04-09 09:48:17 -04:00
obscuren
035f0ffb8a Reverted changes 2014-04-09 15:08:10 +02:00
Maran
b66a99e32d Added todo 2014-04-09 08:55:39 -04:00
obscuren
527a3bbc2a Typo fix 2014-04-09 14:53:20 +02:00
obscuren
c0a030ef0a Added new insruction methods 2014-04-09 14:08:18 +02:00
Maran
35a82f8f4a Added support for mneomnic privkeys 2014-04-07 14:00:02 +02:00
obscuren
12643c7c57 Merge branch 'develop' into miner 2014-04-05 11:25:29 +02:00
obscuren
90bb512f42 Update 2014-04-05 10:49:07 +02:00
Maran
782910eaa7 Small tweaks 2014-04-01 15:54:29 +02:00
Maran
3558dd5ed4 Finalize blockchain reverting test 2014-04-01 14:42:48 +02:00
Maran
0a88010826 Merge conflicts 2014-04-01 14:20:55 +02:00
obscuren
7d0348e4ba Handle contract messages 2014-04-01 10:41:30 +02:00
Maran
5f49a659c3 More blockchain testing 2014-03-31 12:54:37 +02:00
obscuren
7277c42047 Fixed some state issues 2014-03-31 01:03:28 +02:00
obscuren
7cc28c8b46 Added storage test 2014-03-30 22:03:08 +02:00
obscuren
205e33bc83 Fixed bug in stack to expand beyond expectations. Fixed EQ and NOT opcode 2014-03-30 18:55:51 +02:00
obscuren
6625b6ffbd Changed to new mutan API 2014-03-30 12:58:37 +02:00
obscuren
b888652201 Added missing GetTx (0x16) wire message 2014-03-28 11:20:07 +01:00
Jeffrey Wilcke
60fd2f3521 Update vm_test.go
store ...
2014-03-27 23:25:03 +01:00
obscuren
75e6406c1f Fixed tests 2014-03-27 23:17:23 +01:00
obscuren
3c3431d111 Fixed IsContract method to use the contractCreation flag 2014-03-27 23:17:14 +01:00
obscuren
56a58ad70d Removed debug and comments 2014-03-27 22:02:39 +01:00
obscuren
00c5f9b9a6 Updated transaction model
Changed the behaviour of decoding rlp data. Something is considered to
be creating a contract if the 4th item is a list.

Changed constructors.
2014-03-27 19:49:47 +01:00
obscuren
7660e1ed90 Added a IsList method for type checking []interface{} 2014-03-27 19:42:01 +01:00
obscuren
43cad69016 Reworked transaction constructors 2014-03-27 15:42:39 +01:00
obscuren
308c59320c Fixed typo 2014-03-27 15:38:55 +01:00
Maran
6253d10938 initial testcode for canonical chain 2014-03-24 15:04:29 +01:00
obscuren
e0b6091d7e Test fixes and removed old code. Added VM gas fees 2014-03-24 13:20:34 +01:00
Maran
ec6ec62dd4 Remove some xtra logs 2014-03-24 10:56:52 +01:00
Maran
97786d03d5 Merge branch 'master' into miner 2014-03-24 10:24:39 +01:00
Maran
274d5cc91c FindCanonicalChain returns true or false when we are on the Canonical chain or not 2014-03-24 10:24:06 +01:00
obscuren
6a86c517c4 Removed old VM code 2014-03-22 11:47:27 +01:00
obscuren
01c1bce9c5 Removed regular ints from the virtual machine and closures 2014-03-21 18:22:47 +01:00
obscuren
9a9e252cab Changes 'compiler' to work with any type 2014-03-21 15:27:18 +01:00
Maran
b52b1fca89 Initial block reorganisation code 2014-03-21 15:06:23 +01:00
obscuren
2ea4c632d1 Closure return, arguments fixed. Added proper tests 2014-03-21 14:47:55 +01:00
obscuren
fa1db8d2dc Implemented closure arguments 2014-03-21 11:54:36 +01:00
obscuren
9cf8ce9ef8 New tx methods and added new vm to state manager 2014-03-21 00:04:31 +01:00
obscuren
f567f89b99 Added address to account and contract
Contract and account now both have an address field or method for the
sake of simplicity.
2014-03-20 23:38:16 +01:00
obscuren
7705b23f24 Removed caller from tx and added "callership" to account.
Transactions can no longer serve as callers. Accounts are now the
initial callee of closures. Transactions now serve as transport to call
closures.
2014-03-20 23:17:53 +01:00
obscuren
f3d27bf5d8 Rewrote opcodes again 2014-03-20 22:51:20 +01:00
obscuren
c68ff9886b Fixed MSTORE and added some more commets 2014-03-20 19:50:53 +01:00
obscuren
f21eb88ad1 Some minor updates 2014-03-20 17:27:48 +01:00
obscuren
c642094cac Added encoder interface 2014-03-20 17:27:26 +01:00
obscuren
3520771d68 Comply to Callee interface 2014-03-20 17:27:09 +01:00
obscuren
c17381b853 Moved code around 2014-03-20 17:26:51 +01:00
obscuren
59d8dc3950 Fixed issue with stack where it sliced of the wrong values 2014-03-20 17:26:30 +01:00
obscuren
38ea6a6d5d Closures and vm based on closures
Status: Work in progress
2014-03-20 17:26:07 +01:00
obscuren
82d0f65dab Comply to Callee structure 2014-03-20 17:25:11 +01:00
obscuren
c135b389fe Commented out code due to rewrite vm 2014-03-20 17:24:53 +01:00
obscuren
bdc0d1b7ad Added AddFunds method 2014-03-20 17:24:02 +01:00
Maran
ae837c4719 More mining rework 2014-03-20 11:20:29 +01:00
obscuren
344e827061 Added client string to configuration
Clients can set their own client string which will be send to connected
peers during the handshake.
2014-03-17 12:08:16 +01:00
Maran
2be2fc7974 Merge branch 'develop' into miner 2014-03-17 11:15:28 +01:00
obscuren
826c827e6b Added a copy method to state 2014-03-17 11:15:09 +01:00
obscuren
2b9b02812e Log 2014-03-17 11:14:00 +01:00
obscuren
07578fe25f Pretty print nonce 2014-03-17 11:13:35 +01:00
Maran
095d5baaed Merge conflicts 2014-03-17 10:41:05 +01:00
Maran
8ea7e21f64 Merge 2014-03-17 10:37:37 +01:00
Maran
3274e0a249 Removed extra invalid nonce return 2014-03-17 10:37:29 +01:00
obscuren
b15a4985e8 Moved on to the state manager 2014-03-17 10:33:03 +01:00
Maran
d5efeab8f9 Initial smart-miner stuff 2014-03-10 11:53:02 +01:00
obscuren
54bcee512d Merge branch 'develop' of https://github.com/jarradh/eth-go into jarradh-develop 2014-03-07 11:26:46 +01:00
obscuren
685ea3e9a9 Wip keychains 2014-03-07 11:26:35 +01:00
Jarrad Hope
694ef47041 gofmt -w ethereum.go 2014-03-07 11:11:11 +01:00
Jarrad Hope
9d887234ea Small Optimization on port 2014-03-06 19:11:38 +01:00
Jarrad Hope
e2e338929f Fix Whitespace 2014-03-06 19:03:26 +01:00
Jarrad Hope
8162aff8cf Add DNS Bootstrapping 2014-03-06 19:01:38 +01:00
obscuren
ea873304ca No longer dev 2014-03-06 13:10:39 +01:00
obscuren
f80984491a Removed comments 2014-03-06 13:09:55 +01:00
obscuren
e7770b2332 Added miner state 2014-03-06 13:06:54 +01:00
obscuren
be543a6d17 Removed comments 2014-03-06 13:03:24 +01:00
obscuren
6c6e8b0fd7 Renamed block manager to state manager 2014-03-05 10:57:32 +01:00
obscuren
79320e2868 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop 2014-03-05 10:44:57 +01:00
obscuren
92f2abdf76 Partially refactored server/txpool/block manager/block chain
The Ethereum structure now complies to a EthManager interface which is
being used by the tx pool, block manager and block chain in order to
gain access to each other. It's become simpeler.
TODO: BlockManager => StateManager
2014-03-05 10:42:51 +01:00
Jeffrey Wilcke
c1de7bcec5 Merge pull request #10 from mquandalle/patch-1
Rename .travil.yml to .travis.yml
2014-03-04 11:28:01 +01:00
Maxime Quandalle
8577e9116e Rename .travil.yml to .travis.yml 2014-03-03 18:13:08 +01:00
obscuren
5b1613d65b Merge branch 'master' into develop 2014-03-03 11:35:35 +01:00
obscuren
c1d0ea7366 Updated protocol version to 7 2014-03-03 11:34:04 +01:00
obscuren
9d492b0509 Renamed Address to Account 2014-03-03 11:05:12 +01:00
obscuren
bfed1c7cac Trie's are no longer referenced directly but through State instead 2014-03-03 11:03:16 +01:00
obscuren
d2bc57cd34 PoC reactor pattern 2014-03-03 00:55:10 +01:00
obscuren
d65b4cd0dd Updated block to use state instead of trie directly 2014-03-02 20:42:05 +01:00
obscuren
f1b354e6aa Reactor implemented 2014-03-02 02:22:20 +01:00
obscuren
d7c5936ac4 Merge branch 'hotfix/0.3.1' into develop 2014-02-28 16:46:12 +01:00
obscuren
ceada15290 Merge branch 'hotfix/0.3.1' 2014-02-28 16:45:54 +01:00
obscuren
b462ca4aad Bump 2014-02-28 16:45:46 +01:00
obscuren
601340bd46 Fixed shutting down 2014-02-28 16:45:29 +01:00
Gav Wood
15dd8fd794 RLP tests and Trie updates. 2014-02-28 12:54:47 +00:00
obscuren
8ee8ec8a36 Merge branch 'develop' of https://github.com/james-c/eth-go into james-c-develop
Conflicts:
	ethdb/database.go
2014-02-28 12:43:31 +01:00
Gav Wood
33f80fef21 Hex encode tests done. 2014-02-28 11:39:35 +00:00
Gav Wood
e1f5e12abb Fix RLP tests. 2014-02-28 11:22:49 +00:00
obscuren
7de2c7f176 Merge branch 'release/0.3.0' into develop 2014-02-28 12:21:19 +01:00
obscuren
839bd73fbb Merge branch 'release/0.3.0' 2014-02-28 12:21:12 +01:00
obscuren
3f7ec1a83f Conform to Db interface 2014-02-28 12:19:45 +01:00
obscuren
8fa19664e6 Added BigCopy 2014-02-28 12:19:21 +01:00
obscuren
9d06f9e6fb Updated readme#trie 2014-02-28 12:19:01 +01:00
obscuren
c0fcefa3a0 Added a GetKeys method to support multiple accounts 2014-02-28 12:18:41 +01:00
obscuren
c9f3d1c00b leveldb API changed for NewIterator. Fixes #20 2014-02-28 10:36:06 +01:00
Gav Wood
f87ce15ad2 Fix empty string. 2014-02-27 13:28:11 +00:00
James Cunningham
179255c3fe Merge branch 'goleveldb_fix' into develop 2014-02-26 15:28:27 +00:00
James Cunningham
4fad5958d0 Fix error in call to NewIterator function
Change number of args passed to NewIterator in print function to reflect changes in the goleveldb project.
2014-02-26 15:26:39 +00:00
obscuren
e98b53bbef WIP Observing pattern 2014-02-25 11:22:27 +01:00
obscuren
4b8c50e2cd Deprication 2014-02-25 11:22:18 +01:00
obscuren
1e7b3cbb13 Removed debug log 2014-02-25 11:22:05 +01:00
obscuren
ce07d9bb4c Error logging on tx processing 2014-02-25 11:21:49 +01:00
obscuren
507fc7b9d1 Length checking when fetching contract. Contract always have 3 fields 2014-02-25 11:21:35 +01:00
obscuren
4f4175a3e2 Addad db name for new ldb 2014-02-25 11:21:03 +01:00
obscuren
c7e73ba12d Added currency converting 2014-02-25 11:20:24 +01:00
obscuren
b30b9ab8cb Fixed a minor issue where a string is expected but returns slice 2014-02-25 10:50:53 +01:00
obscuren
0afdedb01a Some log statements changed to the default logger 2014-02-24 13:50:52 +01:00
obscuren
6c7255cde2 Fixed a minor issue on crashed contracts 2014-02-24 13:15:34 +01:00
Jeffrey Wilcke
f2234264ed Merge pull request #8 from josephyzhou/develop
parse returns byte array instead of string now
2014-02-24 12:53:30 +01:00
obscuren
95a8ebc249 Changed MakeContract on block
MakeContract in Block is now using the MakeContract defined in
contract.go
2014-02-24 12:45:21 +01:00
obscuren
88a9c62fcc Proper tests 2014-02-24 12:44:29 +01:00
obscuren
b29c1eecd1 Removed debug print 2014-02-24 12:44:18 +01:00
obscuren
d69db6e617 Removed compiling from the transaction 2014-02-24 12:13:42 +01:00
obscuren
d8b5bbd48c Added compile 2014-02-24 12:13:22 +01:00
obscuren
22e2c3429b Infof rather than infoln 2014-02-24 12:12:53 +01:00
obscuren
4cc5b03137 Added opcodes 2014-02-24 12:12:32 +01:00
obscuren
a3fb7008b2 Added make contract 2014-02-24 12:12:24 +01:00
obscuren
55c1c220d0 Added delete to database interfaces 2014-02-24 12:12:01 +01:00
obscuren
5971c82094 Updated opcodes ... again 2014-02-24 12:11:42 +01:00
obscuren
1a98bbf1c8 Added a trie iterator 2014-02-24 12:11:00 +01:00
obscuren
377c995103 Separated the VM from the block manager and added states 2014-02-24 12:10:45 +01:00
Gav Wood
c006ed4ffd Tests fix. 2014-02-24 10:24:39 +00:00
Joey Zhou
8ecb24f114 parse now returns byte[] instead of string 2014-02-23 14:43:18 -08:00
obscuren
3a45cdeaf9 Moved txpool start to initialisation method of ethereumm 2014-02-23 01:57:45 +01:00
obscuren
a4a4ffbeff Moved address 2014-02-23 01:57:22 +01:00
obscuren
f5737b929a Added a secondary processor 2014-02-23 01:57:04 +01:00
obscuren
c66cf95b40 Added address states for storing a session based address 2014-02-23 01:56:48 +01:00
obscuren
73b9ae9579 Updated some of the log statements to use the ethutil logger 2014-02-22 01:53:25 +01:00
obscuren
4bfd717ba2 Added the ability to extend the logger with more sub systems 2014-02-22 01:53:09 +01:00
Gav Wood
510ff56363 Updated the tests. 2014-02-21 18:54:08 +00:00
Gav Wood
a0ec843832 Moved over to new format, but RLP tests still need updating. 2014-02-21 18:49:24 +00:00
Gav Wood
660cd26f31 More docs. 2014-02-21 18:35:51 +00:00
Gav Wood
6ad14c1a15 Added VM test suite.
Added TODO.
Renamed old files.
2014-02-21 18:33:39 +00:00
obscuren
cca8585554 Get a chain of blocks made simple 2014-02-21 13:05:59 +01:00
obscuren
18cc35338a Fixed contract running 2014-02-21 12:37:16 +01:00
obscuren
681eacaa7f Removed old instruction code 2014-02-21 12:37:06 +01:00
obscuren
b20c0b1d59 Removed all old code 2014-02-21 12:36:41 +01:00
obscuren
f2a1260294 Nil is also considered empty 2014-02-21 12:36:22 +01:00
obscuren
06ea7fc830 re: Added contract fees 2014-02-20 23:11:17 +01:00
obscuren
ed05779adb Updated fees 2014-02-20 23:10:43 +01:00
obscuren
8f69c2ac45 Added contract addr acessors 2014-02-20 23:10:36 +01:00
obscuren
504d356232 Added peek(n) 2014-02-20 23:10:16 +01:00
obscuren
059ad35215 Type checking 2014-02-20 23:10:05 +01:00
obscuren
9bc5c4a0c5 Long over due Trie delete implemented 2014-02-20 14:40:00 +01:00
obscuren
4afb624c45 WIP state object 2014-02-19 16:28:08 +01:00
obscuren
39b6eaf51c Debug logging functions 2014-02-19 16:27:35 +01:00
obscuren
d4cc125456 Added more logging functions 2014-02-19 16:27:22 +01:00
obscuren
dc994b3518 Changed fee structure 2014-02-19 16:27:08 +01:00
obscuren
8e7daec886 Added fees and debugging 2014-02-19 16:26:55 +01:00
obscuren
b3da104e56 Corrected contract addresses 2014-02-19 16:26:35 +01:00
obscuren
0936e5ccf5 Merge branch 'develop' of github.com-obscure:ethereum/eth-go into develop
Conflicts:
	ethutil/config.go
2014-02-19 11:40:02 +01:00
Jeffrey Wilcke
531b3a96eb Merge pull request #5 from sdboyer/iotas
Idiomatic go: use iotas for const declarations
2014-02-19 11:38:02 +01:00
Jeffrey Wilcke
3dae732f36 Merge pull request #6 from sdboyer/genisis
Fix typo(?) in naming - s/GenisisHeader/GenesisHeader/
2014-02-19 11:36:53 +01:00
Jeffrey Wilcke
1e241e3a61 Merge pull request #7 from sdboyer/vet-fixes
Fix a couple errors from go vet
2014-02-19 11:36:23 +01:00
obscuren
24f2b2afc3 Running contracts fixed 2014-02-19 11:35:17 +01:00
Sam Boyer
357b4bc14c Add comment explaining why iota is not used. 2014-02-18 17:24:44 -05:00
Sam Boyer
5adbd39946 Express bit flag constants using iota bitshift. 2014-02-18 17:20:41 -05:00
Sam Boyer
6dac014978 Fix a couple errors from go vet 2014-02-18 10:47:09 -05:00
Sam Boyer
4d405f6654 s/GenisisHeader/GenesisHeader/ 2014-02-18 10:40:58 -05:00
Jeffrey Wilcke
bbcf304b99 Merge pull request #3 from josephyzhou/develop
Migrated to here
2014-02-18 16:04:45 +01:00
obscuren
c866fcc5b3 Added new address 2014-02-18 12:10:21 +01:00
obscuren
d7eca7bcc1 Rlp update 2014-02-18 01:34:06 +01:00
obscuren
68028f492f Fixed block handling 2014-02-18 01:33:26 +01:00
obscuren
8629d9a418 String changed and removed some debugging code 2014-02-18 01:33:15 +01:00
obscuren
c7623c3165 Changed debug messages 2014-02-18 01:32:39 +01:00
obscuren
ba95849097 Added hex method 2014-02-18 01:32:20 +01:00
obscuren
bb3e28310e If sender is receiver only subtract the fee 2014-02-18 01:31:51 +01:00
obscuren
a5b7279cb5 Changed uncle block fee as to what it should be 2014-02-18 01:31:31 +01:00
Joey Zhou
c5b009ba6f new line 2014-02-17 15:47:33 -08:00
Joey Zhou
e72a782bf0 adding compact decode tests 2014-02-17 15:46:16 -08:00
obscuren
7413552a28 Root should reset on undo 2014-02-17 20:40:33 +01:00
obscuren
b7a636b894 Values should accept bytes as valid string output 2014-02-17 20:29:54 +01:00
obscuren
e5b97fe03e Added proper error message 2014-02-16 20:33:23 +01:00
obscuren
2ea05292c0 Added proper name :) 2014-02-16 20:33:07 +01:00
obscuren
e4a6ee3d7f Added dirty tracking on the cache 2014-02-16 20:32:56 +01:00
obscuren
7264044122 Added a few tests 2014-02-16 20:31:02 +01:00
obscuren
f1d6f1bd17 Removed Reset 2014-02-16 20:30:50 +01:00
obscuren
c95a27e394 Added more tests 2014-02-16 20:30:33 +01:00
obscuren
066940f134 Defer undo on the current block's state 2014-02-16 20:30:21 +01:00
obscuren
07c12f0b92 Added trie tests, value tests 2014-02-15 13:21:11 +01:00
obscuren
5883446b21 Fixed test 2014-02-15 12:41:17 +01:00
obscuren
9bcb3d2216 Fixed test 2014-02-15 12:40:19 +01:00
obscuren
424b0b8bac Merge branch 'hotfix/0.2.2-1' into develop 2014-02-15 12:12:01 +01:00
obscuren
30ee32a725 Merge branch 'hotfix/0.2.2-1' 2014-02-15 12:11:53 +01:00
obscuren
f5fbbb147f Removed debug message 2014-02-15 12:11:40 +01:00
obscuren
147a74dff2 Merge branch 'release/0.2.2' into develop 2014-02-15 11:53:02 +01:00
obscuren
60afd02e59 Merge branch 'release/0.2.2' 2014-02-15 11:52:38 +01:00
obscuren
fd1aa869e1 Bumped version number 2014-02-15 11:52:28 +01:00
obscuren
334c41d088 Added MIT license 2014-02-15 11:49:53 +01:00
obscuren
4a656eff7b Added git flow explanation 2014-02-15 11:49:39 +01:00
obscuren
73fd358d94 Removed RlpValue in favour of Value 2014-02-15 01:34:18 +01:00
obscuren
f247f0c518 Added readme 2014-02-15 00:04:46 +01:00
obscuren
f6d1bfe45b The great merge 2014-02-14 23:56:09 +01:00
obscuren
c2fb9f06ad Refactoring RlpValue => Value 2014-02-13 15:12:16 +01:00
obscuren
67de76c217 Put leveldb 2014-02-11 20:09:58 +01:00
obscuren
02acef23d5 Interop! 2014-02-11 18:46:28 +01:00
obscuren
5a83114efd Seed bootstrapping added 2014-02-10 20:59:31 +01:00
obscuren
42123b4396 Fixed peer handling 2014-02-10 16:41:36 +01:00
obscuren
0ae6a38825 Database 2014-02-10 16:04:57 +01:00
obscuren
8ab6c53231 Reversed back 2014-02-10 13:59:05 +01:00
obscuren
1d26ae2dea Changed client id 2014-02-10 11:45:08 +01:00
obscuren
d2edc2bbf4 Added some loggers 2014-02-10 11:36:49 +01:00
obscuren
8db7d791f0 Corrected version number in error log 2014-02-10 11:20:42 +01:00
obscuren
a50b4f6b11 Forgot to bump the version 2014-02-10 01:15:14 +01:00
obscuren
156495732b level db back in 2014-02-10 01:10:02 +01:00
obscuren
3c4fb01da3 Version 3 and added added catch up 2014-02-10 01:09:12 +01:00
obscuren
c00b1dd508 Self connect on handshake 2014-02-09 23:58:59 +01:00
obscuren
0de31a3898 Fixed self connect through public key discovery.
Bumped protocol version number
2014-02-09 23:34:33 +01:00
obscuren
24349bc431 Changed peer format 2014-02-08 21:02:42 +01:00
obscuren
1f7b13ff4e Switched over to leveldb instead of memdb 2014-02-08 21:02:09 +01:00
obscuren
04c00f40f0 Fixed value 2014-02-06 13:27:57 +01:00
obscuren
9e9b7a520e Do not quit if upnp fails 2014-02-03 17:26:37 +01:00
obscuren
f995f5763b Properly encode tx 2014-02-03 01:12:44 +01:00
obscuren
6292c5ad5a Transaction processing 2014-02-03 01:10:10 +01:00
obscuren
a9a564c226 removed self connect log 2014-02-02 20:54:13 +01:00
obscuren
04b6e413d9 Encode caps as byte 2014-02-02 20:06:37 +01:00
obscuren
aa9341570b Disconnection reasons 2014-02-02 20:00:09 +01:00
obscuren
f4a96ca588 Removed the seed peer option from start 2014-02-02 19:46:37 +01:00
obscuren
48b41862ef UPnP Support 2014-02-02 19:44:47 +01:00
obscuren
3f503ffc7f Implemented support for UPnP 2014-02-02 19:22:39 +01:00
obscuren
ae0d4eb7aa removed upnp 2014-02-02 16:29:13 +01:00
obscuren
cb8a7d979d upnp test 2014-02-02 16:15:39 +01:00
obscuren
b70fe3a9be Reverted back to messages 2014-02-02 01:39:06 +01:00
obscuren
dfa778fed6 UPNP wip 2014-02-01 21:30:54 +01:00
obscuren
8c4746a3df (un)pack addr 2014-01-31 20:01:28 +01:00
obscuren
ce69334988 For the testnet always 30303 for now to make it easy 2014-01-31 13:37:16 +01:00
obscuren
8c09602a8b Self connect 2014-01-31 13:03:13 +01:00
obscuren
da66eddfcc Get peers returns now both in and outbound peers 2014-01-31 11:57:56 +01:00
obscuren
dfa38b3f91 Peer connection checking 2014-01-31 11:18:10 +01:00
obscuren
36f221dbe7 Don't connect to peers that are already connected 2014-01-31 01:12:48 +01:00
obscuren
7f100e9610 Self connect detect 2014-01-31 00:56:32 +01:00
obscuren
7ccf51fd30 Updated seed peers 2014-01-30 23:48:52 +01:00
obscuren
3e400739a7 Implemented get chain msg 2014-01-28 15:35:44 +01:00
obscuren
4a82230de5 Switched port and removed logging 2014-01-27 22:13:46 +01:00
obscuren
884f792871 Removed default connection 2014-01-27 15:34:50 +01:00
obscuren
7931c6624c Graceful shutdown of peers 2014-01-25 17:13:33 +01:00
obscuren
1b7cba1878 Updated peers 2014-01-24 17:48:21 +01:00
obscuren
233f5200ef Data send over the wire shouldn't be RLPed more then once 2014-01-23 22:32:50 +01:00
obscuren
878e796c0a Updated packages 2014-01-23 20:55:23 +01:00
obscuren
2b32f47d2c Initial commit bootstrapping package 2014-01-23 20:14:01 +01:00
Vitalik Buterin
f91ad7b385 update trie algorithm 2014-01-08 11:26:58 -05:00
Vitalik Buterin
6da2954462 merge 2014-01-08 08:15:38 -05:00
Vitalik Buterin
cc4224675f Updated trie test 2014-01-07 14:35:26 -05:00
vbuterin
131c610da6 Merge pull request #1 from obscuren/master
Update trietest.txt
2014-01-01 06:40:54 -08:00
obscuren
7613302b49 Update trietest.txt
New proposed explanatory format
2014-01-01 15:25:21 +01:00
Vitalik Buterin
121632bedd Added obscure's tests 2014-01-01 08:26:18 -05:00
Vitalik Buterin
ef6c5506c3 Fixed tests a bit 2013-12-31 19:04:48 -05:00
Vitalik Buterin
345e4bcfef Merge branch 'master' of github.com:ethereum/tests 2013-12-31 15:52:46 -05:00
Vitalik Buterin
2c81698f31 Added first three tests 2013-12-30 21:09:40 -05:00
vbuterin
e4bbea400f Initial commit 2013-12-30 18:09:03 -08:00
2079 changed files with 2675506 additions and 7231 deletions

27
.gitignore vendored
View File

@@ -6,9 +6,32 @@
/tmp
*/**/*un~
*/**/*.test
*un~
.DS_Store
*/**/.DS_Store
ethereum/ethereum
ethereal/ethereal
.ethtest
*/**/*tx_database*
*/**/*dapps*
Godeps/_workspace/pkg
Godeps/_workspace/bin
#*
.#*
*#
*~
.project
.settings
deploy/osx/Mist.app
deploy/osx/Mist\ Installer.dmg
cmd/mist/assets/ext/ethereum.js/
# used by the Makefile
/build/_workspace/
/build/bin/
# travis
profile.tmp
profile.cov

6
.gitmodules vendored
View File

@@ -1,3 +1,3 @@
[submodule "ethereal/assets/samplecoin"]
path = ethereal/assets/samplecoin
url = git@github.com:obscuren/SampleCoin.git
[submodule "cmd/mist/assets/ext/ethereum.js"]
path = cmd/mist/assets/ext/ethereum.js
url = https://github.com/ethereum/web3.js

14
.mailmap Normal file
View File

@@ -0,0 +1,14 @@
Jeffrey Wilcke <jeffrey@ethereum.org>
Jeffrey Wilcke <jeffrey@ethereum.org> <geffobscura@gmail.com>
Jeffrey Wilcke <jeffrey@ethereum.org> <obscuren@obscura.com>
Jeffrey Wilcke <jeffrey@ethereum.org> <obscuren@users.noreply.github.com>
Viktor Trón <viktor.tron@gmail.com>
Joseph Goulden <joegoulden@gmail.com>
Nick Savers <nicksavers@gmail.com>
Maran Hidskes <maran.hidskes@gmail.com>
Taylor Gerring <taylor.gerring@gmail.com> <taylor.gerring@ethereum.org>

View File

@@ -1,4 +1,35 @@
before_install: sudo apt-get install libgmp3-dev
language: go
go:
- 1.2
- 1.4.2
before_install:
- sudo add-apt-repository ppa:beineri/opt-qt541 -y
- sudo apt-get update -qq
- sudo apt-get install -yqq libgmp3-dev qt54quickcontrols qt54webengine
install:
# - go get code.google.com/p/go.tools/cmd/goimports
# - go get github.com/golang/lint/golint
# - go get golang.org/x/tools/cmd/vet
- go get golang.org/x/tools/cmd/cover github.com/mattn/goveralls
before_script:
# - gofmt -l -w .
# - goimports -l -w .
# - golint .
# - go vet ./...
# - go test -race ./...
script:
- make travis-test-with-coverage
after_success:
- if [ "$COVERALLS_TOKEN" ]; then goveralls -coverprofile=profile.cov -service=travis-ci -repotoken $COVERALLS_TOKEN; fi
env:
global:
- PKG_CONFIG_PATH=/opt/qt54/lib/pkgconfig
- LD_LIBRARY_PATH=/opt/qt54/lib
- secure: "U2U1AmkU4NJBgKR/uUAebQY87cNL0+1JHjnLOmmXwxYYyj5ralWb1aSuSH3qSXiT93qLBmtaUkuv9fberHVqrbAeVlztVdUsKAq7JMQH+M99iFkC9UiRMqHmtjWJ0ok4COD1sRYixxi21wb/JrMe3M1iL4QJVS61iltjHhVdM64="
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/e09ccdce1048c5e03445
on_success: change # options: [always|never|change] default: always
on_failure: always # options: [always|never|change] default: always
on_start: false # default: false

126
Godeps/Godeps.json generated Normal file
View File

@@ -0,0 +1,126 @@
{
"ImportPath": "github.com/ethereum/go-ethereum",
"GoVersion": "go1.4.2",
"Packages": [
"./..."
],
"Deps": [
{
"ImportPath": "code.google.com/p/go-uuid/uuid",
"Comment": "null-12",
"Rev": "7dda39b2e7d5e265014674c5af696ba4186679e9"
},
{
"ImportPath": "github.com/codegangsta/cli",
"Comment": "1.2.0-95-g9b2bd2b",
"Rev": "9b2bd2b3489748d4d0a204fa4eb2ee9e89e0ebc6"
},
{
"ImportPath": "github.com/ethereum/ethash",
"Comment": "v23.1-206-gf0e6321",
"Rev": "f0e63218b721dc2f696920a92d5de1f6364e9bf7"
},
{
"ImportPath": "github.com/howeyc/fsnotify",
"Comment": "v0.9.0-11-g6b1ef89",
"Rev": "6b1ef893dc11e0447abda6da20a5203481878dda"
},
{
"ImportPath": "github.com/huin/goupnp",
"Rev": "c57ae84388ab59076fd547f1abeab71c2edb0a21"
},
{
"ImportPath": "github.com/jackpal/go-nat-pmp",
"Rev": "a45aa3d54aef73b504e15eb71bea0e5565b5e6e1"
},
{
"ImportPath": "github.com/kardianos/osext",
"Rev": "ccfcd0245381f0c94c68f50626665eed3c6b726a"
},
{
"ImportPath": "github.com/mattn/go-colorable",
"Rev": "043ae16291351db8465272edf465c9f388161627"
},
{
"ImportPath": "github.com/mattn/go-isatty",
"Rev": "fdbe02a1b44e75977b2690062b83cf507d70c013"
},
{
"ImportPath": "github.com/obscuren/qml",
"Rev": "c288002b52e905973b131089a8a7c761d4a2c36a"
},
{
"ImportPath": "github.com/peterh/liner",
"Rev": "29f6a646557d83e2b6e9ba05c45fbea9c006dbe8"
},
{
"ImportPath": "github.com/rakyll/globalconf",
"Rev": "415abc325023f1a00cd2d9fa512e0e71745791a2"
},
{
"ImportPath": "github.com/rakyll/goini",
"Rev": "907cca0f578a5316fb864ec6992dc3d9730ec58c"
},
{
"ImportPath": "github.com/robertkrimen/otto",
"Rev": "dea31a3d392779af358ec41f77a07fcc7e9d04ba"
},
{
"ImportPath": "github.com/rs/cors",
"Rev": "6e0c3cb65fc0fdb064c743d176a620e3ca446dfb"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb",
"Rev": "4875955338b0a434238a31165cb87255ab6e9e4a"
},
{
"ImportPath": "github.com/syndtr/gosnappy/snappy",
"Rev": "156a073208e131d7d2e212cb749feae7c339e846"
},
{
"ImportPath": "golang.org/x/crypto/pbkdf2",
"Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
},
{
"ImportPath": "golang.org/x/crypto/ripemd160",
"Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
},
{
"ImportPath": "golang.org/x/crypto/scrypt",
"Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
},
{
"ImportPath": "golang.org/x/net/html",
"Rev": "e0403b4e005737430c05a57aac078479844f919c"
},
{
"ImportPath": "golang.org/x/text/encoding",
"Rev": "c93e7c9fff19fb9139b5ab04ce041833add0134e"
},
{
"ImportPath": "golang.org/x/text/transform",
"Rev": "c93e7c9fff19fb9139b5ab04ce041833add0134e"
},
{
"ImportPath": "gopkg.in/check.v1",
"Rev": "64131543e7896d5bcc6bd5a76287eb75ea96c673"
},
{
"ImportPath": "gopkg.in/fatih/set.v0",
"Comment": "v0.1.0-3-g27c4092",
"Rev": "27c40922c40b43fe04554d8223a402af3ea333f3"
},
{
"ImportPath": "gopkg.in/karalabe/cookiejar.v2/collections/prque",
"Rev": "0b2e270613f5d7ba262a5749b9e32270131497a2"
},
{
"ImportPath": "gopkg.in/qml.v1/cdata",
"Rev": "1116cb9cd8dee23f8d444ded354eb53122739f99"
},
{
"ImportPath": "gopkg.in/qml.v1/gl/glbase",
"Rev": "1116cb9cd8dee23f8d444ded354eb53122739f99"
}
]
}

5
Godeps/Readme generated Normal file
View File

@@ -0,0 +1,5 @@
This directory tree is generated automatically by godep.
Please do not edit.
See https://github.com/tools/godep for more information.

2
Godeps/_workspace/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,2 @@
/pkg
/bin

View File

@@ -0,0 +1,27 @@
Copyright (c) 2009 Google Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1,84 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"encoding/binary"
"fmt"
"os"
)
// A Domain represents a Version 2 domain
type Domain byte
// Domain constants for DCE Security (Version 2) UUIDs.
const (
Person = Domain(0)
Group = Domain(1)
Org = Domain(2)
)
// NewDCESecurity returns a DCE Security (Version 2) UUID.
//
// The domain should be one of Person, Group or Org.
// On a POSIX system the id should be the users UID for the Person
// domain and the users GID for the Group. The meaning of id for
// the domain Org or on non-POSIX systems is site defined.
//
// For a given domain/id pair the same token may be returned for up to
// 7 minutes and 10 seconds.
func NewDCESecurity(domain Domain, id uint32) UUID {
uuid := NewUUID()
if uuid != nil {
uuid[6] = (uuid[6] & 0x0f) | 0x20 // Version 2
uuid[9] = byte(domain)
binary.BigEndian.PutUint32(uuid[0:], id)
}
return uuid
}
// NewDCEPerson returns a DCE Security (Version 2) UUID in the person
// domain with the id returned by os.Getuid.
//
// NewDCEPerson(Person, uint32(os.Getuid()))
func NewDCEPerson() UUID {
return NewDCESecurity(Person, uint32(os.Getuid()))
}
// NewDCEGroup returns a DCE Security (Version 2) UUID in the group
// domain with the id returned by os.Getgid.
//
// NewDCEGroup(Group, uint32(os.Getgid()))
func NewDCEGroup() UUID {
return NewDCESecurity(Group, uint32(os.Getgid()))
}
// Domain returns the domain for a Version 2 UUID or false.
func (uuid UUID) Domain() (Domain, bool) {
if v, _ := uuid.Version(); v != 2 {
return 0, false
}
return Domain(uuid[9]), true
}
// Id returns the id for a Version 2 UUID or false.
func (uuid UUID) Id() (uint32, bool) {
if v, _ := uuid.Version(); v != 2 {
return 0, false
}
return binary.BigEndian.Uint32(uuid[0:4]), true
}
func (d Domain) String() string {
switch d {
case Person:
return "Person"
case Group:
return "Group"
case Org:
return "Org"
}
return fmt.Sprintf("Domain%d", int(d))
}

View File

@@ -0,0 +1,8 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// The uuid package generates and inspects UUIDs.
//
// UUIDs are based on RFC 4122 and DCE 1.1: Authentication and Security Services.
package uuid

View File

@@ -0,0 +1,53 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"crypto/md5"
"crypto/sha1"
"hash"
)
// Well known Name Space IDs and UUIDs
var (
NameSpace_DNS = Parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")
NameSpace_URL = Parse("6ba7b811-9dad-11d1-80b4-00c04fd430c8")
NameSpace_OID = Parse("6ba7b812-9dad-11d1-80b4-00c04fd430c8")
NameSpace_X500 = Parse("6ba7b814-9dad-11d1-80b4-00c04fd430c8")
NIL = Parse("00000000-0000-0000-0000-000000000000")
)
// NewHash returns a new UUID dervied from the hash of space concatenated with
// data generated by h. The hash should be at least 16 byte in length. The
// first 16 bytes of the hash are used to form the UUID. The version of the
// UUID will be the lower 4 bits of version. NewHash is used to implement
// NewMD5 and NewSHA1.
func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID {
h.Reset()
h.Write(space)
h.Write([]byte(data))
s := h.Sum(nil)
uuid := make([]byte, 16)
copy(uuid, s)
uuid[6] = (uuid[6] & 0x0f) | uint8((version&0xf)<<4)
uuid[8] = (uuid[8] & 0x3f) | 0x80 // RFC 4122 variant
return uuid
}
// NewMD5 returns a new MD5 (Version 3) UUID based on the
// supplied name space and data.
//
// NewHash(md5.New(), space, data, 3)
func NewMD5(space UUID, data []byte) UUID {
return NewHash(md5.New(), space, data, 3)
}
// NewSHA1 returns a new SHA1 (Version 5) UUID based on the
// supplied name space and data.
//
// NewHash(sha1.New(), space, data, 5)
func NewSHA1(space UUID, data []byte) UUID {
return NewHash(sha1.New(), space, data, 5)
}

View File

@@ -0,0 +1,101 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import "net"
var (
interfaces []net.Interface // cached list of interfaces
ifname string // name of interface being used
nodeID []byte // hardware for version 1 UUIDs
)
// NodeInterface returns the name of the interface from which the NodeID was
// derived. The interface "user" is returned if the NodeID was set by
// SetNodeID.
func NodeInterface() string {
return ifname
}
// SetNodeInterface selects the hardware address to be used for Version 1 UUIDs.
// If name is "" then the first usable interface found will be used or a random
// Node ID will be generated. If a named interface cannot be found then false
// is returned.
//
// SetNodeInterface never fails when name is "".
func SetNodeInterface(name string) bool {
if interfaces == nil {
var err error
interfaces, err = net.Interfaces()
if err != nil && name != "" {
return false
}
}
for _, ifs := range interfaces {
if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) {
if setNodeID(ifs.HardwareAddr) {
ifname = ifs.Name
return true
}
}
}
// We found no interfaces with a valid hardware address. If name
// does not specify a specific interface generate a random Node ID
// (section 4.1.6)
if name == "" {
if nodeID == nil {
nodeID = make([]byte, 6)
}
randomBits(nodeID)
return true
}
return false
}
// NodeID returns a slice of a copy of the current Node ID, setting the Node ID
// if not already set.
func NodeID() []byte {
if nodeID == nil {
SetNodeInterface("")
}
nid := make([]byte, 6)
copy(nid, nodeID)
return nid
}
// SetNodeID sets the Node ID to be used for Version 1 UUIDs. The first 6 bytes
// of id are used. If id is less than 6 bytes then false is returned and the
// Node ID is not set.
func SetNodeID(id []byte) bool {
if setNodeID(id) {
ifname = "user"
return true
}
return false
}
func setNodeID(id []byte) bool {
if len(id) < 6 {
return false
}
if nodeID == nil {
nodeID = make([]byte, 6)
}
copy(nodeID, id)
return true
}
// NodeID returns the 6 byte node id encoded in uuid. It returns nil if uuid is
// not valid. The NodeID is only well defined for version 1 and 2 UUIDs.
func (uuid UUID) NodeID() []byte {
if len(uuid) != 16 {
return nil
}
node := make([]byte, 6)
copy(node, uuid[10:])
return node
}

View File

@@ -0,0 +1,132 @@
// Copyright 2014 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"encoding/binary"
"sync"
"time"
)
// A Time represents a time as the number of 100's of nanoseconds since 15 Oct
// 1582.
type Time int64
const (
lillian = 2299160 // Julian day of 15 Oct 1582
unix = 2440587 // Julian day of 1 Jan 1970
epoch = unix - lillian // Days between epochs
g1582 = epoch * 86400 // seconds between epochs
g1582ns100 = g1582 * 10000000 // 100s of a nanoseconds between epochs
)
var (
mu sync.Mutex
lasttime uint64 // last time we returned
clock_seq uint16 // clock sequence for this run
timeNow = time.Now // for testing
)
// UnixTime converts t the number of seconds and nanoseconds using the Unix
// epoch of 1 Jan 1970.
func (t Time) UnixTime() (sec, nsec int64) {
sec = int64(t - g1582ns100)
nsec = (sec % 10000000) * 100
sec /= 10000000
return sec, nsec
}
// GetTime returns the current Time (100s of nanoseconds since 15 Oct 1582) and
// adjusts the clock sequence as needed. An error is returned if the current
// time cannot be determined.
func GetTime() (Time, error) {
defer mu.Unlock()
mu.Lock()
return getTime()
}
func getTime() (Time, error) {
t := timeNow()
// If we don't have a clock sequence already, set one.
if clock_seq == 0 {
setClockSequence(-1)
}
now := uint64(t.UnixNano()/100) + g1582ns100
// If time has gone backwards with this clock sequence then we
// increment the clock sequence
if now <= lasttime {
clock_seq = ((clock_seq + 1) & 0x3fff) | 0x8000
}
lasttime = now
return Time(now), nil
}
// ClockSequence returns the current clock sequence, generating one if not
// already set. The clock sequence is only used for Version 1 UUIDs.
//
// The uuid package does not use global static storage for the clock sequence or
// the last time a UUID was generated. Unless SetClockSequence a new random
// clock sequence is generated the first time a clock sequence is requested by
// ClockSequence, GetTime, or NewUUID. (section 4.2.1.1) sequence is generated
// for
func ClockSequence() int {
defer mu.Unlock()
mu.Lock()
return clockSequence()
}
func clockSequence() int {
if clock_seq == 0 {
setClockSequence(-1)
}
return int(clock_seq & 0x3fff)
}
// SetClockSeq sets the clock sequence to the lower 14 bits of seq. Setting to
// -1 causes a new sequence to be generated.
func SetClockSequence(seq int) {
defer mu.Unlock()
mu.Lock()
setClockSequence(seq)
}
func setClockSequence(seq int) {
if seq == -1 {
var b [2]byte
randomBits(b[:]) // clock sequence
seq = int(b[0])<<8 | int(b[1])
}
old_seq := clock_seq
clock_seq = uint16(seq&0x3fff) | 0x8000 // Set our variant
if old_seq != clock_seq {
lasttime = 0
}
}
// Time returns the time in 100s of nanoseconds since 15 Oct 1582 encoded in
// uuid. It returns false if uuid is not valid. The time is only well defined
// for version 1 and 2 UUIDs.
func (uuid UUID) Time() (Time, bool) {
if len(uuid) != 16 {
return 0, false
}
time := int64(binary.BigEndian.Uint32(uuid[0:4]))
time |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32
time |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48
return Time(time), true
}
// ClockSequence returns the clock sequence encoded in uuid. It returns false
// if uuid is not valid. The clock sequence is only well defined for version 1
// and 2 UUIDs.
func (uuid UUID) ClockSequence() (int, bool) {
if len(uuid) != 16 {
return 0, false
}
return int(binary.BigEndian.Uint16(uuid[8:10])) & 0x3fff, true
}

View File

@@ -0,0 +1,43 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"io"
)
// randomBits completely fills slice b with random data.
func randomBits(b []byte) {
if _, err := io.ReadFull(rander, b); err != nil {
panic(err.Error()) // rand should never fail
}
}
// xvalues returns the value of a byte as a hexadecimal digit or 255.
var xvalues = []byte{
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255,
255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
}
// xtob converts the the first two hex bytes of x into a byte.
func xtob(x string) (byte, bool) {
b1 := xvalues[x[0]]
b2 := xvalues[x[1]]
return (b1 << 4) | b2, b1 != 255 && b2 != 255
}

View File

@@ -0,0 +1,163 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"bytes"
"crypto/rand"
"fmt"
"io"
"strings"
)
// A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC
// 4122.
type UUID []byte
// A Version represents a UUIDs version.
type Version byte
// A Variant represents a UUIDs variant.
type Variant byte
// Constants returned by Variant.
const (
Invalid = Variant(iota) // Invalid UUID
RFC4122 // The variant specified in RFC4122
Reserved // Reserved, NCS backward compatibility.
Microsoft // Reserved, Microsoft Corporation backward compatibility.
Future // Reserved for future definition.
)
var rander = rand.Reader // random function
// New returns a new random (version 4) UUID as a string. It is a convenience
// function for NewRandom().String().
func New() string {
return NewRandom().String()
}
// Parse decodes s into a UUID or returns nil. Both the UUID form of
// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and
// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx are decoded.
func Parse(s string) UUID {
if len(s) == 36+9 {
if strings.ToLower(s[:9]) != "urn:uuid:" {
return nil
}
s = s[9:]
} else if len(s) != 36 {
return nil
}
if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {
return nil
}
uuid := make([]byte, 16)
for i, x := range []int{
0, 2, 4, 6,
9, 11,
14, 16,
19, 21,
24, 26, 28, 30, 32, 34} {
if v, ok := xtob(s[x:]); !ok {
return nil
} else {
uuid[i] = v
}
}
return uuid
}
// Equal returns true if uuid1 and uuid2 are equal.
func Equal(uuid1, uuid2 UUID) bool {
return bytes.Equal(uuid1, uuid2)
}
// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
// , or "" if uuid is invalid.
func (uuid UUID) String() string {
if uuid == nil || len(uuid) != 16 {
return ""
}
b := []byte(uuid)
return fmt.Sprintf("%08x-%04x-%04x-%04x-%012x",
b[:4], b[4:6], b[6:8], b[8:10], b[10:])
}
// URN returns the RFC 2141 URN form of uuid,
// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, or "" if uuid is invalid.
func (uuid UUID) URN() string {
if uuid == nil || len(uuid) != 16 {
return ""
}
b := []byte(uuid)
return fmt.Sprintf("urn:uuid:%08x-%04x-%04x-%04x-%012x",
b[:4], b[4:6], b[6:8], b[8:10], b[10:])
}
// Variant returns the variant encoded in uuid. It returns Invalid if
// uuid is invalid.
func (uuid UUID) Variant() Variant {
if len(uuid) != 16 {
return Invalid
}
switch {
case (uuid[8] & 0xc0) == 0x80:
return RFC4122
case (uuid[8] & 0xe0) == 0xc0:
return Microsoft
case (uuid[8] & 0xe0) == 0xe0:
return Future
default:
return Reserved
}
panic("unreachable")
}
// Version returns the verison of uuid. It returns false if uuid is not
// valid.
func (uuid UUID) Version() (Version, bool) {
if len(uuid) != 16 {
return 0, false
}
return Version(uuid[6] >> 4), true
}
func (v Version) String() string {
if v > 15 {
return fmt.Sprintf("BAD_VERSION_%d", v)
}
return fmt.Sprintf("VERSION_%d", v)
}
func (v Variant) String() string {
switch v {
case RFC4122:
return "RFC4122"
case Reserved:
return "Reserved"
case Microsoft:
return "Microsoft"
case Future:
return "Future"
case Invalid:
return "Invalid"
}
return fmt.Sprintf("BadVariant%d", int(v))
}
// SetRand sets the random number generator to r, which implents io.Reader.
// If r.Read returns an error when the package requests random data then
// a panic will be issued.
//
// Calling SetRand with nil sets the random number generator to the default
// generator.
func SetRand(r io.Reader) {
if r == nil {
rander = rand.Reader
return
}
rander = r
}

View File

@@ -0,0 +1,390 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"bytes"
"fmt"
"os"
"strings"
"testing"
"time"
)
type test struct {
in string
version Version
variant Variant
isuuid bool
}
var tests = []test{
{"f47ac10b-58cc-0372-8567-0e02b2c3d479", 0, RFC4122, true},
{"f47ac10b-58cc-1372-8567-0e02b2c3d479", 1, RFC4122, true},
{"f47ac10b-58cc-2372-8567-0e02b2c3d479", 2, RFC4122, true},
{"f47ac10b-58cc-3372-8567-0e02b2c3d479", 3, RFC4122, true},
{"f47ac10b-58cc-4372-8567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-5372-8567-0e02b2c3d479", 5, RFC4122, true},
{"f47ac10b-58cc-6372-8567-0e02b2c3d479", 6, RFC4122, true},
{"f47ac10b-58cc-7372-8567-0e02b2c3d479", 7, RFC4122, true},
{"f47ac10b-58cc-8372-8567-0e02b2c3d479", 8, RFC4122, true},
{"f47ac10b-58cc-9372-8567-0e02b2c3d479", 9, RFC4122, true},
{"f47ac10b-58cc-a372-8567-0e02b2c3d479", 10, RFC4122, true},
{"f47ac10b-58cc-b372-8567-0e02b2c3d479", 11, RFC4122, true},
{"f47ac10b-58cc-c372-8567-0e02b2c3d479", 12, RFC4122, true},
{"f47ac10b-58cc-d372-8567-0e02b2c3d479", 13, RFC4122, true},
{"f47ac10b-58cc-e372-8567-0e02b2c3d479", 14, RFC4122, true},
{"f47ac10b-58cc-f372-8567-0e02b2c3d479", 15, RFC4122, true},
{"urn:uuid:f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
{"URN:UUID:f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-1567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-2567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-3567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-4567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-5567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-6567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-7567-0e02b2c3d479", 4, Reserved, true},
{"f47ac10b-58cc-4372-8567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-4372-9567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-4372-a567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-4372-b567-0e02b2c3d479", 4, RFC4122, true},
{"f47ac10b-58cc-4372-c567-0e02b2c3d479", 4, Microsoft, true},
{"f47ac10b-58cc-4372-d567-0e02b2c3d479", 4, Microsoft, true},
{"f47ac10b-58cc-4372-e567-0e02b2c3d479", 4, Future, true},
{"f47ac10b-58cc-4372-f567-0e02b2c3d479", 4, Future, true},
{"f47ac10b158cc-5372-a567-0e02b2c3d479", 0, Invalid, false},
{"f47ac10b-58cc25372-a567-0e02b2c3d479", 0, Invalid, false},
{"f47ac10b-58cc-53723a567-0e02b2c3d479", 0, Invalid, false},
{"f47ac10b-58cc-5372-a56740e02b2c3d479", 0, Invalid, false},
{"f47ac10b-58cc-5372-a567-0e02-2c3d479", 0, Invalid, false},
{"g47ac10b-58cc-4372-a567-0e02b2c3d479", 0, Invalid, false},
}
var constants = []struct {
c interface{}
name string
}{
{Person, "Person"},
{Group, "Group"},
{Org, "Org"},
{Invalid, "Invalid"},
{RFC4122, "RFC4122"},
{Reserved, "Reserved"},
{Microsoft, "Microsoft"},
{Future, "Future"},
{Domain(17), "Domain17"},
{Variant(42), "BadVariant42"},
}
func testTest(t *testing.T, in string, tt test) {
uuid := Parse(in)
if ok := (uuid != nil); ok != tt.isuuid {
t.Errorf("Parse(%s) got %v expected %v\b", in, ok, tt.isuuid)
}
if uuid == nil {
return
}
if v := uuid.Variant(); v != tt.variant {
t.Errorf("Variant(%s) got %d expected %d\b", in, v, tt.variant)
}
if v, _ := uuid.Version(); v != tt.version {
t.Errorf("Version(%s) got %d expected %d\b", in, v, tt.version)
}
}
func TestUUID(t *testing.T) {
for _, tt := range tests {
testTest(t, tt.in, tt)
testTest(t, strings.ToUpper(tt.in), tt)
}
}
func TestConstants(t *testing.T) {
for x, tt := range constants {
v, ok := tt.c.(fmt.Stringer)
if !ok {
t.Errorf("%x: %v: not a stringer", x, v)
} else if s := v.String(); s != tt.name {
v, _ := tt.c.(int)
t.Errorf("%x: Constant %T:%d gives %q, expected %q\n", x, tt.c, v, s, tt.name)
}
}
}
func TestRandomUUID(t *testing.T) {
m := make(map[string]bool)
for x := 1; x < 32; x++ {
uuid := NewRandom()
s := uuid.String()
if m[s] {
t.Errorf("NewRandom returned duplicated UUID %s\n", s)
}
m[s] = true
if v, _ := uuid.Version(); v != 4 {
t.Errorf("Random UUID of version %s\n", v)
}
if uuid.Variant() != RFC4122 {
t.Errorf("Random UUID is variant %d\n", uuid.Variant())
}
}
}
func TestNew(t *testing.T) {
m := make(map[string]bool)
for x := 1; x < 32; x++ {
s := New()
if m[s] {
t.Errorf("New returned duplicated UUID %s\n", s)
}
m[s] = true
uuid := Parse(s)
if uuid == nil {
t.Errorf("New returned %q which does not decode\n", s)
continue
}
if v, _ := uuid.Version(); v != 4 {
t.Errorf("Random UUID of version %s\n", v)
}
if uuid.Variant() != RFC4122 {
t.Errorf("Random UUID is variant %d\n", uuid.Variant())
}
}
}
func clockSeq(t *testing.T, uuid UUID) int {
seq, ok := uuid.ClockSequence()
if !ok {
t.Fatalf("%s: invalid clock sequence\n", uuid)
}
return seq
}
func TestClockSeq(t *testing.T) {
// Fake time.Now for this test to return a monotonically advancing time; restore it at end.
defer func(orig func() time.Time) { timeNow = orig }(timeNow)
monTime := time.Now()
timeNow = func() time.Time {
monTime = monTime.Add(1 * time.Second)
return monTime
}
SetClockSequence(-1)
uuid1 := NewUUID()
uuid2 := NewUUID()
if clockSeq(t, uuid1) != clockSeq(t, uuid2) {
t.Errorf("clock sequence %d != %d\n", clockSeq(t, uuid1), clockSeq(t, uuid2))
}
SetClockSequence(-1)
uuid2 = NewUUID()
// Just on the very off chance we generated the same sequence
// two times we try again.
if clockSeq(t, uuid1) == clockSeq(t, uuid2) {
SetClockSequence(-1)
uuid2 = NewUUID()
}
if clockSeq(t, uuid1) == clockSeq(t, uuid2) {
t.Errorf("Duplicate clock sequence %d\n", clockSeq(t, uuid1))
}
SetClockSequence(0x1234)
uuid1 = NewUUID()
if seq := clockSeq(t, uuid1); seq != 0x1234 {
t.Errorf("%s: expected seq 0x1234 got 0x%04x\n", uuid1, seq)
}
}
func TestCoding(t *testing.T) {
text := "7d444840-9dc0-11d1-b245-5ffdce74fad2"
urn := "urn:uuid:7d444840-9dc0-11d1-b245-5ffdce74fad2"
data := UUID{
0x7d, 0x44, 0x48, 0x40,
0x9d, 0xc0,
0x11, 0xd1,
0xb2, 0x45,
0x5f, 0xfd, 0xce, 0x74, 0xfa, 0xd2,
}
if v := data.String(); v != text {
t.Errorf("%x: encoded to %s, expected %s\n", data, v, text)
}
if v := data.URN(); v != urn {
t.Errorf("%x: urn is %s, expected %s\n", data, v, urn)
}
uuid := Parse(text)
if !Equal(uuid, data) {
t.Errorf("%s: decoded to %s, expected %s\n", text, uuid, data)
}
}
func TestVersion1(t *testing.T) {
uuid1 := NewUUID()
uuid2 := NewUUID()
if Equal(uuid1, uuid2) {
t.Errorf("%s:duplicate uuid\n", uuid1)
}
if v, _ := uuid1.Version(); v != 1 {
t.Errorf("%s: version %s expected 1\n", uuid1, v)
}
if v, _ := uuid2.Version(); v != 1 {
t.Errorf("%s: version %s expected 1\n", uuid2, v)
}
n1 := uuid1.NodeID()
n2 := uuid2.NodeID()
if !bytes.Equal(n1, n2) {
t.Errorf("Different nodes %x != %x\n", n1, n2)
}
t1, ok := uuid1.Time()
if !ok {
t.Errorf("%s: invalid time\n", uuid1)
}
t2, ok := uuid2.Time()
if !ok {
t.Errorf("%s: invalid time\n", uuid2)
}
q1, ok := uuid1.ClockSequence()
if !ok {
t.Errorf("%s: invalid clock sequence\n", uuid1)
}
q2, ok := uuid2.ClockSequence()
if !ok {
t.Errorf("%s: invalid clock sequence", uuid2)
}
switch {
case t1 == t2 && q1 == q2:
t.Errorf("time stopped\n")
case t1 > t2 && q1 == q2:
t.Errorf("time reversed\n")
case t1 < t2 && q1 != q2:
t.Errorf("clock sequence chaned unexpectedly\n")
}
}
func TestNodeAndTime(t *testing.T) {
// Time is February 5, 1998 12:30:23.136364800 AM GMT
uuid := Parse("7d444840-9dc0-11d1-b245-5ffdce74fad2")
node := []byte{0x5f, 0xfd, 0xce, 0x74, 0xfa, 0xd2}
ts, ok := uuid.Time()
if ok {
c := time.Unix(ts.UnixTime())
want := time.Date(1998, 2, 5, 0, 30, 23, 136364800, time.UTC)
if !c.Equal(want) {
t.Errorf("Got time %v, want %v", c, want)
}
} else {
t.Errorf("%s: bad time\n", uuid)
}
if !bytes.Equal(node, uuid.NodeID()) {
t.Errorf("Expected node %v got %v\n", node, uuid.NodeID())
}
}
func TestMD5(t *testing.T) {
uuid := NewMD5(NameSpace_DNS, []byte("python.org")).String()
want := "6fa459ea-ee8a-3ca4-894e-db77e160355e"
if uuid != want {
t.Errorf("MD5: got %q expected %q\n", uuid, want)
}
}
func TestSHA1(t *testing.T) {
uuid := NewSHA1(NameSpace_DNS, []byte("python.org")).String()
want := "886313e1-3b8a-5372-9b90-0c9aee199e5d"
if uuid != want {
t.Errorf("SHA1: got %q expected %q\n", uuid, want)
}
}
func TestNodeID(t *testing.T) {
nid := []byte{1, 2, 3, 4, 5, 6}
SetNodeInterface("")
s := NodeInterface()
if s == "" || s == "user" {
t.Errorf("NodeInterface %q after SetInteface\n", s)
}
node1 := NodeID()
if node1 == nil {
t.Errorf("NodeID nil after SetNodeInterface\n", s)
}
SetNodeID(nid)
s = NodeInterface()
if s != "user" {
t.Errorf("Expected NodeInterface %q got %q\n", "user", s)
}
node2 := NodeID()
if node2 == nil {
t.Errorf("NodeID nil after SetNodeID\n", s)
}
if bytes.Equal(node1, node2) {
t.Errorf("NodeID not changed after SetNodeID\n", s)
} else if !bytes.Equal(nid, node2) {
t.Errorf("NodeID is %x, expected %x\n", node2, nid)
}
}
func testDCE(t *testing.T, name string, uuid UUID, domain Domain, id uint32) {
if uuid == nil {
t.Errorf("%s failed\n", name)
return
}
if v, _ := uuid.Version(); v != 2 {
t.Errorf("%s: %s: expected version 2, got %s\n", name, uuid, v)
return
}
if v, ok := uuid.Domain(); !ok || v != domain {
if !ok {
t.Errorf("%s: %d: Domain failed\n", name, uuid)
} else {
t.Errorf("%s: %s: expected domain %d, got %d\n", name, uuid, domain, v)
}
}
if v, ok := uuid.Id(); !ok || v != id {
if !ok {
t.Errorf("%s: %d: Id failed\n", name, uuid)
} else {
t.Errorf("%s: %s: expected id %d, got %d\n", name, uuid, id, v)
}
}
}
func TestDCE(t *testing.T) {
testDCE(t, "NewDCESecurity", NewDCESecurity(42, 12345678), 42, 12345678)
testDCE(t, "NewDCEPerson", NewDCEPerson(), Person, uint32(os.Getuid()))
testDCE(t, "NewDCEGroup", NewDCEGroup(), Group, uint32(os.Getgid()))
}
type badRand struct{}
func (r badRand) Read(buf []byte) (int, error) {
for i, _ := range buf {
buf[i] = byte(i)
}
return len(buf), nil
}
func TestBadRand(t *testing.T) {
SetRand(badRand{})
uuid1 := New()
uuid2 := New()
if uuid1 != uuid2 {
t.Errorf("execpted duplicates, got %q and %q\n", uuid1, uuid2)
}
SetRand(nil)
uuid1 = New()
uuid2 = New()
if uuid1 == uuid2 {
t.Errorf("unexecpted duplicates, got %q\n", uuid1)
}
}

View File

@@ -0,0 +1,41 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
import (
"encoding/binary"
)
// NewUUID returns a Version 1 UUID based on the current NodeID and clock
// sequence, and the current time. If the NodeID has not been set by SetNodeID
// or SetNodeInterface then it will be set automatically. If the NodeID cannot
// be set NewUUID returns nil. If clock sequence has not been set by
// SetClockSequence then it will be set automatically. If GetTime fails to
// return the current NewUUID returns nil.
func NewUUID() UUID {
if nodeID == nil {
SetNodeInterface("")
}
now, err := GetTime()
if err != nil {
return nil
}
uuid := make([]byte, 16)
time_low := uint32(now & 0xffffffff)
time_mid := uint16((now >> 32) & 0xffff)
time_hi := uint16((now >> 48) & 0x0fff)
time_hi |= 0x1000 // Version 1
binary.BigEndian.PutUint32(uuid[0:], time_low)
binary.BigEndian.PutUint16(uuid[4:], time_mid)
binary.BigEndian.PutUint16(uuid[6:], time_hi)
binary.BigEndian.PutUint16(uuid[8:], clock_seq)
copy(uuid[10:], nodeID)
return uuid
}

View File

@@ -0,0 +1,25 @@
// Copyright 2011 Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package uuid
// Random returns a Random (Version 4) UUID or panics.
//
// The strength of the UUIDs is based on the strength of the crypto/rand
// package.
//
// A note about uniqueness derived from from the UUID Wikipedia entry:
//
// Randomly generated UUIDs have 122 random bits. One's annual risk of being
// hit by a meteorite is estimated to be one chance in 17 billion, that
// means the probability is about 0.00000000006 (6 × 1011),
// equivalent to the odds of creating a few tens of trillions of UUIDs in a
// year and having one duplicate.
func NewRandom() UUID {
uuid := make([]byte, 16)
randomBits([]byte(uuid))
uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4
uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10
return uuid
}

View File

@@ -0,0 +1,6 @@
language: go
go: 1.1
script:
- go vet ./...
- go test -v ./...

View File

@@ -0,0 +1,21 @@
Copyright (C) 2013 Jeremy Saenz
All Rights Reserved.
MIT LICENSE
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,298 @@
[![Build Status](https://travis-ci.org/codegangsta/cli.png?branch=master)](https://travis-ci.org/codegangsta/cli)
# cli.go
cli.go is simple, fast, and fun package for building command line apps in Go. The goal is to enable developers to write fast and distributable command line applications in an expressive way.
You can view the API docs here:
http://godoc.org/github.com/codegangsta/cli
## Overview
Command line apps are usually so tiny that there is absolutely no reason why your code should *not* be self-documenting. Things like generating help text and parsing command flags/options should not hinder productivity when writing a command line app.
**This is where cli.go comes into play.** cli.go makes command line programming fun, organized, and expressive!
## Installation
Make sure you have a working Go environment (go 1.1 is *required*). [See the install instructions](http://golang.org/doc/install.html).
To install `cli.go`, simply run:
```
$ go get github.com/codegangsta/cli
```
Make sure your `PATH` includes to the `$GOPATH/bin` directory so your commands can be easily used:
```
export PATH=$PATH:$GOPATH/bin
```
## Getting Started
One of the philosophies behind cli.go is that an API should be playful and full of discovery. So a cli.go app can be as little as one line of code in `main()`.
``` go
package main
import (
"os"
"github.com/codegangsta/cli"
)
func main() {
cli.NewApp().Run(os.Args)
}
```
This app will run and show help text, but is not very useful. Let's give an action to execute and some help documentation:
``` go
package main
import (
"os"
"github.com/codegangsta/cli"
)
func main() {
app := cli.NewApp()
app.Name = "boom"
app.Usage = "make an explosive entrance"
app.Action = func(c *cli.Context) {
println("boom! I say!")
}
app.Run(os.Args)
}
```
Running this already gives you a ton of functionality, plus support for things like subcommands and flags, which are covered below.
## Example
Being a programmer can be a lonely job. Thankfully by the power of automation that is not the case! Let's create a greeter app to fend off our demons of loneliness!
Start by creating a directory named `greet`, and within it, add a file, `greet.go` with the following code in it:
``` go
package main
import (
"os"
"github.com/codegangsta/cli"
)
func main() {
app := cli.NewApp()
app.Name = "greet"
app.Usage = "fight the loneliness!"
app.Action = func(c *cli.Context) {
println("Hello friend!")
}
app.Run(os.Args)
}
```
Install our command to the `$GOPATH/bin` directory:
```
$ go install
```
Finally run our new command:
```
$ greet
Hello friend!
```
cli.go also generates some bitchass help text:
```
$ greet help
NAME:
greet - fight the loneliness!
USAGE:
greet [global options] command [command options] [arguments...]
VERSION:
0.0.0
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS
--version Shows version information
```
### Arguments
You can lookup arguments by calling the `Args` function on `cli.Context`.
``` go
...
app.Action = func(c *cli.Context) {
println("Hello", c.Args()[0])
}
...
```
### Flags
Setting and querying flags is simple.
``` go
...
app.Flags = []cli.Flag {
cli.StringFlag{
Name: "lang",
Value: "english",
Usage: "language for the greeting",
},
}
app.Action = func(c *cli.Context) {
name := "someone"
if len(c.Args()) > 0 {
name = c.Args()[0]
}
if c.String("lang") == "spanish" {
println("Hola", name)
} else {
println("Hello", name)
}
}
...
```
#### Alternate Names
You can set alternate (or short) names for flags by providing a comma-delimited list for the `Name`. e.g.
``` go
app.Flags = []cli.Flag {
cli.StringFlag{
Name: "lang, l",
Value: "english",
Usage: "language for the greeting",
},
}
```
That flag can then be set with `--lang spanish` or `-l spanish`. Note that giving two different forms of the same flag in the same command invocation is an error.
#### Values from the Environment
You can also have the default value set from the environment via `EnvVar`. e.g.
``` go
app.Flags = []cli.Flag {
cli.StringFlag{
Name: "lang, l",
Value: "english",
Usage: "language for the greeting",
EnvVar: "APP_LANG",
},
}
```
The `EnvVar` may also be given as a comma-delimited "cascade", where the first environment variable that resolves is used as the default.
``` go
app.Flags = []cli.Flag {
cli.StringFlag{
Name: "lang, l",
Value: "english",
Usage: "language for the greeting",
EnvVar: "LEGACY_COMPAT_LANG,APP_LANG,LANG",
},
}
```
### Subcommands
Subcommands can be defined for a more git-like command line app.
```go
...
app.Commands = []cli.Command{
{
Name: "add",
Aliases: []string{"a"},
Usage: "add a task to the list",
Action: func(c *cli.Context) {
println("added task: ", c.Args().First())
},
},
{
Name: "complete",
Aliases: []string{"c"},
Usage: "complete a task on the list",
Action: func(c *cli.Context) {
println("completed task: ", c.Args().First())
},
},
{
Name: "template",
Aliases: []string{"r"},
Usage: "options for task templates",
Subcommands: []cli.Command{
{
Name: "add",
Usage: "add a new template",
Action: func(c *cli.Context) {
println("new task template: ", c.Args().First())
},
},
{
Name: "remove",
Usage: "remove an existing template",
Action: func(c *cli.Context) {
println("removed task template: ", c.Args().First())
},
},
},
},
}
...
```
### Bash Completion
You can enable completion commands by setting the `EnableBashCompletion`
flag on the `App` object. By default, this setting will only auto-complete to
show an app's subcommands, but you can write your own completion methods for
the App or its subcommands.
```go
...
var tasks = []string{"cook", "clean", "laundry", "eat", "sleep", "code"}
app := cli.NewApp()
app.EnableBashCompletion = true
app.Commands = []cli.Command{
{
Name: "complete",
Aliases: []string{"c"},
Usage: "complete a task on the list",
Action: func(c *cli.Context) {
println("completed task: ", c.Args().First())
},
BashComplete: func(c *cli.Context) {
// This will complete if no args are passed
if len(c.Args()) > 0 {
return
}
for _, t := range tasks {
fmt.Println(t)
}
},
}
}
...
```
#### To Enable
Source the `autocomplete/bash_autocomplete` file in your `.bashrc` file while
setting the `PROG` variable to the name of your program:
`PROG=myprogram source /.../cli/autocomplete/bash_autocomplete`
## Contribution Guidelines
Feel free to put up a pull request to fix a bug or maybe add a feature. I will give it a code review and make sure that it does not break backwards compatibility. If I or any other collaborators agree that it is in line with the vision of the project, we will work with you to get the code into a mergeable state and merge it into the master branch.
If you have contributed something significant to the project, I will most likely add you as a collaborator. As a collaborator you are given the ability to merge others pull requests. It is very important that new code does not break existing code, so be careful about what code you do choose to merge. If you have any questions feel free to link @codegangsta to the issue in question and we can review it together.
If you feel like you have contributed to the project but have not yet been added as a collaborator, I probably forgot to add you. Hit @codegangsta up over email and we will get it figured out.

321
Godeps/_workspace/src/github.com/codegangsta/cli/app.go generated vendored Normal file
View File

@@ -0,0 +1,321 @@
package cli
import (
"fmt"
"io"
"io/ioutil"
"os"
"strings"
"text/tabwriter"
"text/template"
"time"
)
// App is the main structure of a cli application. It is recomended that
// and app be created with the cli.NewApp() function
type App struct {
// The name of the program. Defaults to os.Args[0]
Name string
// Description of the program.
Usage string
// Version of the program
Version string
// List of commands to execute
Commands []Command
// List of flags to parse
Flags []Flag
// Boolean to enable bash completion commands
EnableBashCompletion bool
// Boolean to hide built-in help command
HideHelp bool
// Boolean to hide built-in version flag
HideVersion bool
// An action to execute when the bash-completion flag is set
BashComplete func(context *Context)
// An action to execute before any subcommands are run, but after the context is ready
// If a non-nil error is returned, no subcommands are run
Before func(context *Context) error
// An action to execute after any subcommands are run, but after the subcommand has finished
// It is run even if Action() panics
After func(context *Context) error
// The action to execute when no subcommands are specified
Action func(context *Context)
// Execute this function if the proper command cannot be found
CommandNotFound func(context *Context, command string)
// Compilation date
Compiled time.Time
// List of all authors who contributed
Authors []Author
// Name of Author (Note: Use App.Authors, this is deprecated)
Author string
// Email of Author (Note: Use App.Authors, this is deprecated)
Email string
// Writer writer to write output to
Writer io.Writer
}
// Tries to find out when this binary was compiled.
// Returns the current time if it fails to find it.
func compileTime() time.Time {
info, err := os.Stat(os.Args[0])
if err != nil {
return time.Now()
}
return info.ModTime()
}
// Creates a new cli Application with some reasonable defaults for Name, Usage, Version and Action.
func NewApp() *App {
return &App{
Name: os.Args[0],
Usage: "A new cli application",
Version: "0.0.0",
BashComplete: DefaultAppComplete,
Action: helpCommand.Action,
Compiled: compileTime(),
Writer: os.Stdout,
}
}
// Entry point to the cli app. Parses the arguments slice and routes to the proper flag/args combination
func (a *App) Run(arguments []string) (err error) {
if a.Author != "" || a.Email != "" {
a.Authors = append(a.Authors, Author{Name: a.Author, Email: a.Email})
}
if HelpPrinter == nil {
defer func() {
HelpPrinter = nil
}()
HelpPrinter = func(templ string, data interface{}) {
funcMap := template.FuncMap{
"join": strings.Join,
}
w := tabwriter.NewWriter(a.Writer, 0, 8, 1, '\t', 0)
t := template.Must(template.New("help").Funcs(funcMap).Parse(templ))
err := t.Execute(w, data)
if err != nil {
panic(err)
}
w.Flush()
}
}
// append help to commands
if a.Command(helpCommand.Name) == nil && !a.HideHelp {
a.Commands = append(a.Commands, helpCommand)
if (HelpFlag != BoolFlag{}) {
a.appendFlag(HelpFlag)
}
}
//append version/help flags
if a.EnableBashCompletion {
a.appendFlag(BashCompletionFlag)
}
if !a.HideVersion {
a.appendFlag(VersionFlag)
}
// parse flags
set := flagSet(a.Name, a.Flags)
set.SetOutput(ioutil.Discard)
err = set.Parse(arguments[1:])
nerr := normalizeFlags(a.Flags, set)
if nerr != nil {
fmt.Fprintln(a.Writer, nerr)
context := NewContext(a, set, set)
ShowAppHelp(context)
fmt.Fprintln(a.Writer)
return nerr
}
context := NewContext(a, set, set)
if err != nil {
fmt.Fprintf(a.Writer, "Incorrect Usage.\n\n")
ShowAppHelp(context)
fmt.Fprintln(a.Writer)
return err
}
if checkCompletions(context) {
return nil
}
if checkHelp(context) {
return nil
}
if checkVersion(context) {
return nil
}
if a.After != nil {
defer func() {
// err is always nil here.
// There is a check to see if it is non-nil
// just few lines before.
err = a.After(context)
}()
}
if a.Before != nil {
err := a.Before(context)
if err != nil {
return err
}
}
args := context.Args()
if args.Present() {
name := args.First()
c := a.Command(name)
if c != nil {
return c.Run(context)
}
}
// Run default Action
a.Action(context)
return nil
}
// Another entry point to the cli app, takes care of passing arguments and error handling
func (a *App) RunAndExitOnError() {
if err := a.Run(os.Args); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
// Invokes the subcommand given the context, parses ctx.Args() to generate command-specific flags
func (a *App) RunAsSubcommand(ctx *Context) (err error) {
// append help to commands
if len(a.Commands) > 0 {
if a.Command(helpCommand.Name) == nil && !a.HideHelp {
a.Commands = append(a.Commands, helpCommand)
if (HelpFlag != BoolFlag{}) {
a.appendFlag(HelpFlag)
}
}
}
// append flags
if a.EnableBashCompletion {
a.appendFlag(BashCompletionFlag)
}
// parse flags
set := flagSet(a.Name, a.Flags)
set.SetOutput(ioutil.Discard)
err = set.Parse(ctx.Args().Tail())
nerr := normalizeFlags(a.Flags, set)
context := NewContext(a, set, ctx.globalSet)
if nerr != nil {
fmt.Fprintln(a.Writer, nerr)
if len(a.Commands) > 0 {
ShowSubcommandHelp(context)
} else {
ShowCommandHelp(ctx, context.Args().First())
}
fmt.Fprintln(a.Writer)
return nerr
}
if err != nil {
fmt.Fprintf(a.Writer, "Incorrect Usage.\n\n")
ShowSubcommandHelp(context)
return err
}
if checkCompletions(context) {
return nil
}
if len(a.Commands) > 0 {
if checkSubcommandHelp(context) {
return nil
}
} else {
if checkCommandHelp(ctx, context.Args().First()) {
return nil
}
}
if a.After != nil {
defer func() {
// err is always nil here.
// There is a check to see if it is non-nil
// just few lines before.
err = a.After(context)
}()
}
if a.Before != nil {
err := a.Before(context)
if err != nil {
return err
}
}
args := context.Args()
if args.Present() {
name := args.First()
c := a.Command(name)
if c != nil {
return c.Run(context)
}
}
// Run default Action
a.Action(context)
return nil
}
// Returns the named command on App. Returns nil if the command does not exist
func (a *App) Command(name string) *Command {
for _, c := range a.Commands {
if c.HasName(name) {
return &c
}
}
return nil
}
func (a *App) hasFlag(flag Flag) bool {
for _, f := range a.Flags {
if flag == f {
return true
}
}
return false
}
func (a *App) appendFlag(flag Flag) {
if !a.hasFlag(flag) {
a.Flags = append(a.Flags, flag)
}
}
// Author represents someone who has contributed to a cli project.
type Author struct {
Name string // The Authors name
Email string // The Authors email
}
// String makes Author comply to the Stringer interface, to allow an easy print in the templating process
func (a Author) String() string {
e := ""
if a.Email != "" {
e = "<" + a.Email + "> "
}
return fmt.Sprintf("%v %v", a.Name, e)
}

View File

@@ -0,0 +1,622 @@
package cli_test
import (
"flag"
"fmt"
"os"
"testing"
"github.com/codegangsta/cli"
)
func ExampleApp() {
// set args for examples sake
os.Args = []string{"greet", "--name", "Jeremy"}
app := cli.NewApp()
app.Name = "greet"
app.Flags = []cli.Flag{
cli.StringFlag{Name: "name", Value: "bob", Usage: "a name to say"},
}
app.Action = func(c *cli.Context) {
fmt.Printf("Hello %v\n", c.String("name"))
}
app.Author = "Harrison"
app.Email = "harrison@lolwut.com"
app.Authors = []cli.Author{cli.Author{Name: "Oliver Allen", Email: "oliver@toyshop.com"}}
app.Run(os.Args)
// Output:
// Hello Jeremy
}
func ExampleAppSubcommand() {
// set args for examples sake
os.Args = []string{"say", "hi", "english", "--name", "Jeremy"}
app := cli.NewApp()
app.Name = "say"
app.Commands = []cli.Command{
{
Name: "hello",
Aliases: []string{"hi"},
Usage: "use it to see a description",
Description: "This is how we describe hello the function",
Subcommands: []cli.Command{
{
Name: "english",
Aliases: []string{"en"},
Usage: "sends a greeting in english",
Description: "greets someone in english",
Flags: []cli.Flag{
cli.StringFlag{
Name: "name",
Value: "Bob",
Usage: "Name of the person to greet",
},
},
Action: func(c *cli.Context) {
fmt.Println("Hello,", c.String("name"))
},
},
},
},
}
app.Run(os.Args)
// Output:
// Hello, Jeremy
}
func ExampleAppHelp() {
// set args for examples sake
os.Args = []string{"greet", "h", "describeit"}
app := cli.NewApp()
app.Name = "greet"
app.Flags = []cli.Flag{
cli.StringFlag{Name: "name", Value: "bob", Usage: "a name to say"},
}
app.Commands = []cli.Command{
{
Name: "describeit",
Aliases: []string{"d"},
Usage: "use it to see a description",
Description: "This is how we describe describeit the function",
Action: func(c *cli.Context) {
fmt.Printf("i like to describe things")
},
},
}
app.Run(os.Args)
// Output:
// NAME:
// describeit - use it to see a description
//
// USAGE:
// command describeit [arguments...]
//
// DESCRIPTION:
// This is how we describe describeit the function
}
func ExampleAppBashComplete() {
// set args for examples sake
os.Args = []string{"greet", "--generate-bash-completion"}
app := cli.NewApp()
app.Name = "greet"
app.EnableBashCompletion = true
app.Commands = []cli.Command{
{
Name: "describeit",
Aliases: []string{"d"},
Usage: "use it to see a description",
Description: "This is how we describe describeit the function",
Action: func(c *cli.Context) {
fmt.Printf("i like to describe things")
},
}, {
Name: "next",
Usage: "next example",
Description: "more stuff to see when generating bash completion",
Action: func(c *cli.Context) {
fmt.Printf("the next example")
},
},
}
app.Run(os.Args)
// Output:
// describeit
// d
// next
// help
// h
}
func TestApp_Run(t *testing.T) {
s := ""
app := cli.NewApp()
app.Action = func(c *cli.Context) {
s = s + c.Args().First()
}
err := app.Run([]string{"command", "foo"})
expect(t, err, nil)
err = app.Run([]string{"command", "bar"})
expect(t, err, nil)
expect(t, s, "foobar")
}
var commandAppTests = []struct {
name string
expected bool
}{
{"foobar", true},
{"batbaz", true},
{"b", true},
{"f", true},
{"bat", false},
{"nothing", false},
}
func TestApp_Command(t *testing.T) {
app := cli.NewApp()
fooCommand := cli.Command{Name: "foobar", Aliases: []string{"f"}}
batCommand := cli.Command{Name: "batbaz", Aliases: []string{"b"}}
app.Commands = []cli.Command{
fooCommand,
batCommand,
}
for _, test := range commandAppTests {
expect(t, app.Command(test.name) != nil, test.expected)
}
}
func TestApp_CommandWithArgBeforeFlags(t *testing.T) {
var parsedOption, firstArg string
app := cli.NewApp()
command := cli.Command{
Name: "cmd",
Flags: []cli.Flag{
cli.StringFlag{Name: "option", Value: "", Usage: "some option"},
},
Action: func(c *cli.Context) {
parsedOption = c.String("option")
firstArg = c.Args().First()
},
}
app.Commands = []cli.Command{command}
app.Run([]string{"", "cmd", "my-arg", "--option", "my-option"})
expect(t, parsedOption, "my-option")
expect(t, firstArg, "my-arg")
}
func TestApp_RunAsSubcommandParseFlags(t *testing.T) {
var context *cli.Context
a := cli.NewApp()
a.Commands = []cli.Command{
{
Name: "foo",
Action: func(c *cli.Context) {
context = c
},
Flags: []cli.Flag{
cli.StringFlag{
Name: "lang",
Value: "english",
Usage: "language for the greeting",
},
},
Before: func(_ *cli.Context) error { return nil },
},
}
a.Run([]string{"", "foo", "--lang", "spanish", "abcd"})
expect(t, context.Args().Get(0), "abcd")
expect(t, context.String("lang"), "spanish")
}
func TestApp_CommandWithFlagBeforeTerminator(t *testing.T) {
var parsedOption string
var args []string
app := cli.NewApp()
command := cli.Command{
Name: "cmd",
Flags: []cli.Flag{
cli.StringFlag{Name: "option", Value: "", Usage: "some option"},
},
Action: func(c *cli.Context) {
parsedOption = c.String("option")
args = c.Args()
},
}
app.Commands = []cli.Command{command}
app.Run([]string{"", "cmd", "my-arg", "--option", "my-option", "--", "--notARealFlag"})
expect(t, parsedOption, "my-option")
expect(t, args[0], "my-arg")
expect(t, args[1], "--")
expect(t, args[2], "--notARealFlag")
}
func TestApp_CommandWithNoFlagBeforeTerminator(t *testing.T) {
var args []string
app := cli.NewApp()
command := cli.Command{
Name: "cmd",
Action: func(c *cli.Context) {
args = c.Args()
},
}
app.Commands = []cli.Command{command}
app.Run([]string{"", "cmd", "my-arg", "--", "notAFlagAtAll"})
expect(t, args[0], "my-arg")
expect(t, args[1], "--")
expect(t, args[2], "notAFlagAtAll")
}
func TestApp_Float64Flag(t *testing.T) {
var meters float64
app := cli.NewApp()
app.Flags = []cli.Flag{
cli.Float64Flag{Name: "height", Value: 1.5, Usage: "Set the height, in meters"},
}
app.Action = func(c *cli.Context) {
meters = c.Float64("height")
}
app.Run([]string{"", "--height", "1.93"})
expect(t, meters, 1.93)
}
func TestApp_ParseSliceFlags(t *testing.T) {
var parsedOption, firstArg string
var parsedIntSlice []int
var parsedStringSlice []string
app := cli.NewApp()
command := cli.Command{
Name: "cmd",
Flags: []cli.Flag{
cli.IntSliceFlag{Name: "p", Value: &cli.IntSlice{}, Usage: "set one or more ip addr"},
cli.StringSliceFlag{Name: "ip", Value: &cli.StringSlice{}, Usage: "set one or more ports to open"},
},
Action: func(c *cli.Context) {
parsedIntSlice = c.IntSlice("p")
parsedStringSlice = c.StringSlice("ip")
parsedOption = c.String("option")
firstArg = c.Args().First()
},
}
app.Commands = []cli.Command{command}
app.Run([]string{"", "cmd", "my-arg", "-p", "22", "-p", "80", "-ip", "8.8.8.8", "-ip", "8.8.4.4"})
IntsEquals := func(a, b []int) bool {
if len(a) != len(b) {
return false
}
for i, v := range a {
if v != b[i] {
return false
}
}
return true
}
StrsEquals := func(a, b []string) bool {
if len(a) != len(b) {
return false
}
for i, v := range a {
if v != b[i] {
return false
}
}
return true
}
var expectedIntSlice = []int{22, 80}
var expectedStringSlice = []string{"8.8.8.8", "8.8.4.4"}
if !IntsEquals(parsedIntSlice, expectedIntSlice) {
t.Errorf("%v does not match %v", parsedIntSlice, expectedIntSlice)
}
if !StrsEquals(parsedStringSlice, expectedStringSlice) {
t.Errorf("%v does not match %v", parsedStringSlice, expectedStringSlice)
}
}
func TestApp_DefaultStdout(t *testing.T) {
app := cli.NewApp()
if app.Writer != os.Stdout {
t.Error("Default output writer not set.")
}
}
type mockWriter struct {
written []byte
}
func (fw *mockWriter) Write(p []byte) (n int, err error) {
if fw.written == nil {
fw.written = p
} else {
fw.written = append(fw.written, p...)
}
return len(p), nil
}
func (fw *mockWriter) GetWritten() (b []byte) {
return fw.written
}
func TestApp_SetStdout(t *testing.T) {
w := &mockWriter{}
app := cli.NewApp()
app.Name = "test"
app.Writer = w
err := app.Run([]string{"help"})
if err != nil {
t.Fatalf("Run error: %s", err)
}
if len(w.written) == 0 {
t.Error("App did not write output to desired writer.")
}
}
func TestApp_BeforeFunc(t *testing.T) {
beforeRun, subcommandRun := false, false
beforeError := fmt.Errorf("fail")
var err error
app := cli.NewApp()
app.Before = func(c *cli.Context) error {
beforeRun = true
s := c.String("opt")
if s == "fail" {
return beforeError
}
return nil
}
app.Commands = []cli.Command{
cli.Command{
Name: "sub",
Action: func(c *cli.Context) {
subcommandRun = true
},
},
}
app.Flags = []cli.Flag{
cli.StringFlag{Name: "opt"},
}
// run with the Before() func succeeding
err = app.Run([]string{"command", "--opt", "succeed", "sub"})
if err != nil {
t.Fatalf("Run error: %s", err)
}
if beforeRun == false {
t.Errorf("Before() not executed when expected")
}
if subcommandRun == false {
t.Errorf("Subcommand not executed when expected")
}
// reset
beforeRun, subcommandRun = false, false
// run with the Before() func failing
err = app.Run([]string{"command", "--opt", "fail", "sub"})
// should be the same error produced by the Before func
if err != beforeError {
t.Errorf("Run error expected, but not received")
}
if beforeRun == false {
t.Errorf("Before() not executed when expected")
}
if subcommandRun == true {
t.Errorf("Subcommand executed when NOT expected")
}
}
func TestApp_AfterFunc(t *testing.T) {
afterRun, subcommandRun := false, false
afterError := fmt.Errorf("fail")
var err error
app := cli.NewApp()
app.After = func(c *cli.Context) error {
afterRun = true
s := c.String("opt")
if s == "fail" {
return afterError
}
return nil
}
app.Commands = []cli.Command{
cli.Command{
Name: "sub",
Action: func(c *cli.Context) {
subcommandRun = true
},
},
}
app.Flags = []cli.Flag{
cli.StringFlag{Name: "opt"},
}
// run with the After() func succeeding
err = app.Run([]string{"command", "--opt", "succeed", "sub"})
if err != nil {
t.Fatalf("Run error: %s", err)
}
if afterRun == false {
t.Errorf("After() not executed when expected")
}
if subcommandRun == false {
t.Errorf("Subcommand not executed when expected")
}
// reset
afterRun, subcommandRun = false, false
// run with the Before() func failing
err = app.Run([]string{"command", "--opt", "fail", "sub"})
// should be the same error produced by the Before func
if err != afterError {
t.Errorf("Run error expected, but not received")
}
if afterRun == false {
t.Errorf("After() not executed when expected")
}
if subcommandRun == false {
t.Errorf("Subcommand not executed when expected")
}
}
func TestAppNoHelpFlag(t *testing.T) {
oldFlag := cli.HelpFlag
defer func() {
cli.HelpFlag = oldFlag
}()
cli.HelpFlag = cli.BoolFlag{}
app := cli.NewApp()
err := app.Run([]string{"test", "-h"})
if err != flag.ErrHelp {
t.Errorf("expected error about missing help flag, but got: %s (%T)", err, err)
}
}
func TestAppHelpPrinter(t *testing.T) {
oldPrinter := cli.HelpPrinter
defer func() {
cli.HelpPrinter = oldPrinter
}()
var wasCalled = false
cli.HelpPrinter = func(template string, data interface{}) {
wasCalled = true
}
app := cli.NewApp()
app.Run([]string{"-h"})
if wasCalled == false {
t.Errorf("Help printer expected to be called, but was not")
}
}
func TestAppVersionPrinter(t *testing.T) {
oldPrinter := cli.VersionPrinter
defer func() {
cli.VersionPrinter = oldPrinter
}()
var wasCalled = false
cli.VersionPrinter = func(c *cli.Context) {
wasCalled = true
}
app := cli.NewApp()
ctx := cli.NewContext(app, nil, nil)
cli.ShowVersion(ctx)
if wasCalled == false {
t.Errorf("Version printer expected to be called, but was not")
}
}
func TestAppCommandNotFound(t *testing.T) {
beforeRun, subcommandRun := false, false
app := cli.NewApp()
app.CommandNotFound = func(c *cli.Context, command string) {
beforeRun = true
}
app.Commands = []cli.Command{
cli.Command{
Name: "bar",
Action: func(c *cli.Context) {
subcommandRun = true
},
},
}
app.Run([]string{"command", "foo"})
expect(t, beforeRun, true)
expect(t, subcommandRun, false)
}
func TestGlobalFlagsInSubcommands(t *testing.T) {
subcommandRun := false
app := cli.NewApp()
app.Flags = []cli.Flag{
cli.BoolFlag{Name: "debug, d", Usage: "Enable debugging"},
}
app.Commands = []cli.Command{
cli.Command{
Name: "foo",
Subcommands: []cli.Command{
{
Name: "bar",
Action: func(c *cli.Context) {
if c.GlobalBool("debug") {
subcommandRun = true
}
},
},
},
},
}
app.Run([]string{"command", "-d", "foo", "bar"})
expect(t, subcommandRun, true)
}

View File

@@ -0,0 +1,13 @@
#! /bin/bash
_cli_bash_autocomplete() {
local cur prev opts base
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} --generate-bash-completion )
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
}
complete -F _cli_bash_autocomplete $PROG

View File

@@ -0,0 +1,5 @@
autoload -U compinit && compinit
autoload -U bashcompinit && bashcompinit
script_dir=$(dirname $0)
source ${script_dir}/bash_autocomplete

View File

@@ -0,0 +1,19 @@
// Package cli provides a minimal framework for creating and organizing command line
// Go applications. cli is designed to be easy to understand and write, the most simple
// cli application can be written as follows:
// func main() {
// cli.NewApp().Run(os.Args)
// }
//
// Of course this application does not do much, so let's make this an actual application:
// func main() {
// app := cli.NewApp()
// app.Name = "greet"
// app.Usage = "say a greeting"
// app.Action = func(c *cli.Context) {
// println("Greetings")
// }
//
// app.Run(os.Args)
// }
package cli

View File

@@ -0,0 +1,100 @@
package cli_test
import (
"os"
"github.com/codegangsta/cli"
)
func Example() {
app := cli.NewApp()
app.Name = "todo"
app.Usage = "task list on the command line"
app.Commands = []cli.Command{
{
Name: "add",
Aliases: []string{"a"},
Usage: "add a task to the list",
Action: func(c *cli.Context) {
println("added task: ", c.Args().First())
},
},
{
Name: "complete",
Aliases: []string{"c"},
Usage: "complete a task on the list",
Action: func(c *cli.Context) {
println("completed task: ", c.Args().First())
},
},
}
app.Run(os.Args)
}
func ExampleSubcommand() {
app := cli.NewApp()
app.Name = "say"
app.Commands = []cli.Command{
{
Name: "hello",
Aliases: []string{"hi"},
Usage: "use it to see a description",
Description: "This is how we describe hello the function",
Subcommands: []cli.Command{
{
Name: "english",
Aliases: []string{"en"},
Usage: "sends a greeting in english",
Description: "greets someone in english",
Flags: []cli.Flag{
cli.StringFlag{
Name: "name",
Value: "Bob",
Usage: "Name of the person to greet",
},
},
Action: func(c *cli.Context) {
println("Hello, ", c.String("name"))
},
}, {
Name: "spanish",
Aliases: []string{"sp"},
Usage: "sends a greeting in spanish",
Flags: []cli.Flag{
cli.StringFlag{
Name: "surname",
Value: "Jones",
Usage: "Surname of the person to greet",
},
},
Action: func(c *cli.Context) {
println("Hola, ", c.String("surname"))
},
}, {
Name: "french",
Aliases: []string{"fr"},
Usage: "sends a greeting in french",
Flags: []cli.Flag{
cli.StringFlag{
Name: "nickname",
Value: "Stevie",
Usage: "Nickname of the person to greet",
},
},
Action: func(c *cli.Context) {
println("Bonjour, ", c.String("nickname"))
},
},
},
}, {
Name: "bye",
Usage: "says goodbye",
Action: func(c *cli.Context) {
println("bye")
},
},
}
app.Run(os.Args)
}

View File

@@ -0,0 +1,177 @@
package cli
import (
"fmt"
"io/ioutil"
"strings"
)
// Command is a subcommand for a cli.App.
type Command struct {
// The name of the command
Name string
// short name of the command. Typically one character (deprecated, use `Aliases`)
ShortName string
// A list of aliases for the command
Aliases []string
// A short description of the usage of this command
Usage string
// A longer explanation of how the command works
Description string
// The function to call when checking for bash command completions
BashComplete func(context *Context)
// An action to execute before any sub-subcommands are run, but after the context is ready
// If a non-nil error is returned, no sub-subcommands are run
Before func(context *Context) error
// An action to execute after any subcommands are run, but after the subcommand has finished
// It is run even if Action() panics
After func(context *Context) error
// The function to call when this command is invoked
Action func(context *Context)
// List of child commands
Subcommands []Command
// List of flags to parse
Flags []Flag
// Treat all flags as normal arguments if true
SkipFlagParsing bool
// Boolean to hide built-in help command
HideHelp bool
}
// Invokes the command given the context, parses ctx.Args() to generate command-specific flags
func (c Command) Run(ctx *Context) error {
if len(c.Subcommands) > 0 || c.Before != nil || c.After != nil {
return c.startApp(ctx)
}
if !c.HideHelp && (HelpFlag != BoolFlag{}) {
// append help to flags
c.Flags = append(
c.Flags,
HelpFlag,
)
}
if ctx.App.EnableBashCompletion {
c.Flags = append(c.Flags, BashCompletionFlag)
}
set := flagSet(c.Name, c.Flags)
set.SetOutput(ioutil.Discard)
firstFlagIndex := -1
terminatorIndex := -1
for index, arg := range ctx.Args() {
if arg == "--" {
terminatorIndex = index
break
} else if strings.HasPrefix(arg, "-") && firstFlagIndex == -1 {
firstFlagIndex = index
}
}
var err error
if firstFlagIndex > -1 && !c.SkipFlagParsing {
args := ctx.Args()
regularArgs := make([]string, len(args[1:firstFlagIndex]))
copy(regularArgs, args[1:firstFlagIndex])
var flagArgs []string
if terminatorIndex > -1 {
flagArgs = args[firstFlagIndex:terminatorIndex]
regularArgs = append(regularArgs, args[terminatorIndex:]...)
} else {
flagArgs = args[firstFlagIndex:]
}
err = set.Parse(append(flagArgs, regularArgs...))
} else {
err = set.Parse(ctx.Args().Tail())
}
if err != nil {
fmt.Fprint(ctx.App.Writer, "Incorrect Usage.\n\n")
ShowCommandHelp(ctx, c.Name)
fmt.Fprintln(ctx.App.Writer)
return err
}
nerr := normalizeFlags(c.Flags, set)
if nerr != nil {
fmt.Fprintln(ctx.App.Writer, nerr)
fmt.Fprintln(ctx.App.Writer)
ShowCommandHelp(ctx, c.Name)
fmt.Fprintln(ctx.App.Writer)
return nerr
}
context := NewContext(ctx.App, set, ctx.globalSet)
if checkCommandCompletions(context, c.Name) {
return nil
}
if checkCommandHelp(context, c.Name) {
return nil
}
context.Command = c
c.Action(context)
return nil
}
func (c Command) Names() []string {
names := []string{c.Name}
if c.ShortName != "" {
names = append(names, c.ShortName)
}
return append(names, c.Aliases...)
}
// Returns true if Command.Name or Command.ShortName matches given name
func (c Command) HasName(name string) bool {
for _, n := range c.Names() {
if n == name {
return true
}
}
return false
}
func (c Command) startApp(ctx *Context) error {
app := NewApp()
// set the name and usage
app.Name = fmt.Sprintf("%s %s", ctx.App.Name, c.Name)
if c.Description != "" {
app.Usage = c.Description
} else {
app.Usage = c.Usage
}
// set CommandNotFound
app.CommandNotFound = ctx.App.CommandNotFound
// set the flags and commands
app.Commands = c.Subcommands
app.Flags = c.Flags
app.HideHelp = c.HideHelp
// bash completion
app.EnableBashCompletion = ctx.App.EnableBashCompletion
if c.BashComplete != nil {
app.BashComplete = c.BashComplete
}
// set the actions
app.Before = c.Before
app.After = c.After
if c.Action != nil {
app.Action = c.Action
} else {
app.Action = helpSubcommand.Action
}
return app.RunAsSubcommand(ctx)
}

View File

@@ -0,0 +1,49 @@
package cli_test
import (
"flag"
"testing"
"github.com/codegangsta/cli"
)
func TestCommandDoNotIgnoreFlags(t *testing.T) {
app := cli.NewApp()
set := flag.NewFlagSet("test", 0)
test := []string{"blah", "blah", "-break"}
set.Parse(test)
c := cli.NewContext(app, set, set)
command := cli.Command{
Name: "test-cmd",
Aliases: []string{"tc"},
Usage: "this is for testing",
Description: "testing",
Action: func(_ *cli.Context) {},
}
err := command.Run(c)
expect(t, err.Error(), "flag provided but not defined: -break")
}
func TestCommandIgnoreFlags(t *testing.T) {
app := cli.NewApp()
set := flag.NewFlagSet("test", 0)
test := []string{"blah", "blah"}
set.Parse(test)
c := cli.NewContext(app, set, set)
command := cli.Command{
Name: "test-cmd",
Aliases: []string{"tc"},
Usage: "this is for testing",
Description: "testing",
Action: func(_ *cli.Context) {},
SkipFlagParsing: true,
}
err := command.Run(c)
expect(t, err, nil)
}

View File

@@ -0,0 +1,344 @@
package cli
import (
"errors"
"flag"
"strconv"
"strings"
"time"
)
// Context is a type that is passed through to
// each Handler action in a cli application. Context
// can be used to retrieve context-specific Args and
// parsed command-line options.
type Context struct {
App *App
Command Command
flagSet *flag.FlagSet
globalSet *flag.FlagSet
setFlags map[string]bool
globalSetFlags map[string]bool
}
// Creates a new context. For use in when invoking an App or Command action.
func NewContext(app *App, set *flag.FlagSet, globalSet *flag.FlagSet) *Context {
return &Context{App: app, flagSet: set, globalSet: globalSet}
}
// Looks up the value of a local int flag, returns 0 if no int flag exists
func (c *Context) Int(name string) int {
return lookupInt(name, c.flagSet)
}
// Looks up the value of a local time.Duration flag, returns 0 if no time.Duration flag exists
func (c *Context) Duration(name string) time.Duration {
return lookupDuration(name, c.flagSet)
}
// Looks up the value of a local float64 flag, returns 0 if no float64 flag exists
func (c *Context) Float64(name string) float64 {
return lookupFloat64(name, c.flagSet)
}
// Looks up the value of a local bool flag, returns false if no bool flag exists
func (c *Context) Bool(name string) bool {
return lookupBool(name, c.flagSet)
}
// Looks up the value of a local boolT flag, returns false if no bool flag exists
func (c *Context) BoolT(name string) bool {
return lookupBoolT(name, c.flagSet)
}
// Looks up the value of a local string flag, returns "" if no string flag exists
func (c *Context) String(name string) string {
return lookupString(name, c.flagSet)
}
// Looks up the value of a local string slice flag, returns nil if no string slice flag exists
func (c *Context) StringSlice(name string) []string {
return lookupStringSlice(name, c.flagSet)
}
// Looks up the value of a local int slice flag, returns nil if no int slice flag exists
func (c *Context) IntSlice(name string) []int {
return lookupIntSlice(name, c.flagSet)
}
// Looks up the value of a local generic flag, returns nil if no generic flag exists
func (c *Context) Generic(name string) interface{} {
return lookupGeneric(name, c.flagSet)
}
// Looks up the value of a global int flag, returns 0 if no int flag exists
func (c *Context) GlobalInt(name string) int {
return lookupInt(name, c.globalSet)
}
// Looks up the value of a global time.Duration flag, returns 0 if no time.Duration flag exists
func (c *Context) GlobalDuration(name string) time.Duration {
return lookupDuration(name, c.globalSet)
}
// Looks up the value of a global bool flag, returns false if no bool flag exists
func (c *Context) GlobalBool(name string) bool {
return lookupBool(name, c.globalSet)
}
// Looks up the value of a global string flag, returns "" if no string flag exists
func (c *Context) GlobalString(name string) string {
return lookupString(name, c.globalSet)
}
// Looks up the value of a global string slice flag, returns nil if no string slice flag exists
func (c *Context) GlobalStringSlice(name string) []string {
return lookupStringSlice(name, c.globalSet)
}
// Looks up the value of a global int slice flag, returns nil if no int slice flag exists
func (c *Context) GlobalIntSlice(name string) []int {
return lookupIntSlice(name, c.globalSet)
}
// Looks up the value of a global generic flag, returns nil if no generic flag exists
func (c *Context) GlobalGeneric(name string) interface{} {
return lookupGeneric(name, c.globalSet)
}
// Returns the number of flags set
func (c *Context) NumFlags() int {
return c.flagSet.NFlag()
}
// Determines if the flag was actually set
func (c *Context) IsSet(name string) bool {
if c.setFlags == nil {
c.setFlags = make(map[string]bool)
c.flagSet.Visit(func(f *flag.Flag) {
c.setFlags[f.Name] = true
})
}
return c.setFlags[name] == true
}
// Determines if the global flag was actually set
func (c *Context) GlobalIsSet(name string) bool {
if c.globalSetFlags == nil {
c.globalSetFlags = make(map[string]bool)
c.globalSet.Visit(func(f *flag.Flag) {
c.globalSetFlags[f.Name] = true
})
}
return c.globalSetFlags[name] == true
}
// Returns a slice of flag names used in this context.
func (c *Context) FlagNames() (names []string) {
for _, flag := range c.Command.Flags {
name := strings.Split(flag.getName(), ",")[0]
if name == "help" {
continue
}
names = append(names, name)
}
return
}
// Returns a slice of global flag names used by the app.
func (c *Context) GlobalFlagNames() (names []string) {
for _, flag := range c.App.Flags {
name := strings.Split(flag.getName(), ",")[0]
if name == "help" || name == "version" {
continue
}
names = append(names, name)
}
return
}
type Args []string
// Returns the command line arguments associated with the context.
func (c *Context) Args() Args {
args := Args(c.flagSet.Args())
return args
}
// Returns the nth argument, or else a blank string
func (a Args) Get(n int) string {
if len(a) > n {
return a[n]
}
return ""
}
// Returns the first argument, or else a blank string
func (a Args) First() string {
return a.Get(0)
}
// Return the rest of the arguments (not the first one)
// or else an empty string slice
func (a Args) Tail() []string {
if len(a) >= 2 {
return []string(a)[1:]
}
return []string{}
}
// Checks if there are any arguments present
func (a Args) Present() bool {
return len(a) != 0
}
// Swaps arguments at the given indexes
func (a Args) Swap(from, to int) error {
if from >= len(a) || to >= len(a) {
return errors.New("index out of range")
}
a[from], a[to] = a[to], a[from]
return nil
}
func lookupInt(name string, set *flag.FlagSet) int {
f := set.Lookup(name)
if f != nil {
val, err := strconv.Atoi(f.Value.String())
if err != nil {
return 0
}
return val
}
return 0
}
func lookupDuration(name string, set *flag.FlagSet) time.Duration {
f := set.Lookup(name)
if f != nil {
val, err := time.ParseDuration(f.Value.String())
if err == nil {
return val
}
}
return 0
}
func lookupFloat64(name string, set *flag.FlagSet) float64 {
f := set.Lookup(name)
if f != nil {
val, err := strconv.ParseFloat(f.Value.String(), 64)
if err != nil {
return 0
}
return val
}
return 0
}
func lookupString(name string, set *flag.FlagSet) string {
f := set.Lookup(name)
if f != nil {
return f.Value.String()
}
return ""
}
func lookupStringSlice(name string, set *flag.FlagSet) []string {
f := set.Lookup(name)
if f != nil {
return (f.Value.(*StringSlice)).Value()
}
return nil
}
func lookupIntSlice(name string, set *flag.FlagSet) []int {
f := set.Lookup(name)
if f != nil {
return (f.Value.(*IntSlice)).Value()
}
return nil
}
func lookupGeneric(name string, set *flag.FlagSet) interface{} {
f := set.Lookup(name)
if f != nil {
return f.Value
}
return nil
}
func lookupBool(name string, set *flag.FlagSet) bool {
f := set.Lookup(name)
if f != nil {
val, err := strconv.ParseBool(f.Value.String())
if err != nil {
return false
}
return val
}
return false
}
func lookupBoolT(name string, set *flag.FlagSet) bool {
f := set.Lookup(name)
if f != nil {
val, err := strconv.ParseBool(f.Value.String())
if err != nil {
return true
}
return val
}
return false
}
func copyFlag(name string, ff *flag.Flag, set *flag.FlagSet) {
switch ff.Value.(type) {
case *StringSlice:
default:
set.Set(name, ff.Value.String())
}
}
func normalizeFlags(flags []Flag, set *flag.FlagSet) error {
visited := make(map[string]bool)
set.Visit(func(f *flag.Flag) {
visited[f.Name] = true
})
for _, f := range flags {
parts := strings.Split(f.getName(), ",")
if len(parts) == 1 {
continue
}
var ff *flag.Flag
for _, name := range parts {
name = strings.Trim(name, " ")
if visited[name] {
if ff != nil {
return errors.New("Cannot use two forms of the same flag: " + name + " " + ff.Name)
}
ff = set.Lookup(name)
}
}
if ff == nil {
continue
}
for _, name := range parts {
name = strings.Trim(name, " ")
if !visited[name] {
copyFlag(name, ff, set)
}
}
}
return nil
}

View File

@@ -0,0 +1,111 @@
package cli_test
import (
"flag"
"testing"
"time"
"github.com/codegangsta/cli"
)
func TestNewContext(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Int("myflag", 12, "doc")
globalSet := flag.NewFlagSet("test", 0)
globalSet.Int("myflag", 42, "doc")
command := cli.Command{Name: "mycommand"}
c := cli.NewContext(nil, set, globalSet)
c.Command = command
expect(t, c.Int("myflag"), 12)
expect(t, c.GlobalInt("myflag"), 42)
expect(t, c.Command.Name, "mycommand")
}
func TestContext_Int(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Int("myflag", 12, "doc")
c := cli.NewContext(nil, set, set)
expect(t, c.Int("myflag"), 12)
}
func TestContext_Duration(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Duration("myflag", time.Duration(12*time.Second), "doc")
c := cli.NewContext(nil, set, set)
expect(t, c.Duration("myflag"), time.Duration(12*time.Second))
}
func TestContext_String(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.String("myflag", "hello world", "doc")
c := cli.NewContext(nil, set, set)
expect(t, c.String("myflag"), "hello world")
}
func TestContext_Bool(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Bool("myflag", false, "doc")
c := cli.NewContext(nil, set, set)
expect(t, c.Bool("myflag"), false)
}
func TestContext_BoolT(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Bool("myflag", true, "doc")
c := cli.NewContext(nil, set, set)
expect(t, c.BoolT("myflag"), true)
}
func TestContext_Args(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Bool("myflag", false, "doc")
c := cli.NewContext(nil, set, set)
set.Parse([]string{"--myflag", "bat", "baz"})
expect(t, len(c.Args()), 2)
expect(t, c.Bool("myflag"), true)
}
func TestContext_IsSet(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Bool("myflag", false, "doc")
set.String("otherflag", "hello world", "doc")
globalSet := flag.NewFlagSet("test", 0)
globalSet.Bool("myflagGlobal", true, "doc")
c := cli.NewContext(nil, set, globalSet)
set.Parse([]string{"--myflag", "bat", "baz"})
globalSet.Parse([]string{"--myflagGlobal", "bat", "baz"})
expect(t, c.IsSet("myflag"), true)
expect(t, c.IsSet("otherflag"), false)
expect(t, c.IsSet("bogusflag"), false)
expect(t, c.IsSet("myflagGlobal"), false)
}
func TestContext_GlobalIsSet(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Bool("myflag", false, "doc")
set.String("otherflag", "hello world", "doc")
globalSet := flag.NewFlagSet("test", 0)
globalSet.Bool("myflagGlobal", true, "doc")
globalSet.Bool("myflagGlobalUnset", true, "doc")
c := cli.NewContext(nil, set, globalSet)
set.Parse([]string{"--myflag", "bat", "baz"})
globalSet.Parse([]string{"--myflagGlobal", "bat", "baz"})
expect(t, c.GlobalIsSet("myflag"), false)
expect(t, c.GlobalIsSet("otherflag"), false)
expect(t, c.GlobalIsSet("bogusflag"), false)
expect(t, c.GlobalIsSet("myflagGlobal"), true)
expect(t, c.GlobalIsSet("myflagGlobalUnset"), false)
expect(t, c.GlobalIsSet("bogusGlobal"), false)
}
func TestContext_NumFlags(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Bool("myflag", false, "doc")
set.String("otherflag", "hello world", "doc")
globalSet := flag.NewFlagSet("test", 0)
globalSet.Bool("myflagGlobal", true, "doc")
c := cli.NewContext(nil, set, globalSet)
set.Parse([]string{"--myflag", "--otherflag=foo"})
globalSet.Parse([]string{"--myflagGlobal"})
expect(t, c.NumFlags(), 2)
}

View File

@@ -0,0 +1,454 @@
package cli
import (
"flag"
"fmt"
"os"
"strconv"
"strings"
"time"
)
// This flag enables bash-completion for all commands and subcommands
var BashCompletionFlag = BoolFlag{
Name: "generate-bash-completion",
}
// This flag prints the version for the application
var VersionFlag = BoolFlag{
Name: "version, v",
Usage: "print the version",
}
// This flag prints the help for all commands and subcommands
// Set to the zero value (BoolFlag{}) to disable flag -- keeps subcommand
// unless HideHelp is set to true)
var HelpFlag = BoolFlag{
Name: "help, h",
Usage: "show help",
}
// Flag is a common interface related to parsing flags in cli.
// For more advanced flag parsing techniques, it is recomended that
// this interface be implemented.
type Flag interface {
fmt.Stringer
// Apply Flag settings to the given flag set
Apply(*flag.FlagSet)
getName() string
}
func flagSet(name string, flags []Flag) *flag.FlagSet {
set := flag.NewFlagSet(name, flag.ContinueOnError)
for _, f := range flags {
f.Apply(set)
}
return set
}
func eachName(longName string, fn func(string)) {
parts := strings.Split(longName, ",")
for _, name := range parts {
name = strings.Trim(name, " ")
fn(name)
}
}
// Generic is a generic parseable type identified by a specific flag
type Generic interface {
Set(value string) error
String() string
}
// GenericFlag is the flag type for types implementing Generic
type GenericFlag struct {
Name string
Value Generic
Usage string
EnvVar string
}
// String returns the string representation of the generic flag to display the
// help text to the user (uses the String() method of the generic flag to show
// the value)
func (f GenericFlag) String() string {
return withEnvHint(f.EnvVar, fmt.Sprintf("%s%s \"%v\"\t%v", prefixFor(f.Name), f.Name, f.Value, f.Usage))
}
// Apply takes the flagset and calls Set on the generic flag with the value
// provided by the user for parsing by the flag
func (f GenericFlag) Apply(set *flag.FlagSet) {
val := f.Value
if f.EnvVar != "" {
for _, envVar := range strings.Split(f.EnvVar, ",") {
envVar = strings.TrimSpace(envVar)
if envVal := os.Getenv(envVar); envVal != "" {
val.Set(envVal)
break
}
}
}
eachName(f.Name, func(name string) {
set.Var(f.Value, name, f.Usage)
})
}
func (f GenericFlag) getName() string {
return f.Name
}
type StringSlice []string
func (f *StringSlice) Set(value string) error {
*f = append(*f, value)
return nil
}
func (f *StringSlice) String() string {
return fmt.Sprintf("%s", *f)
}
func (f *StringSlice) Value() []string {
return *f
}
type StringSliceFlag struct {
Name string
Value *StringSlice
Usage string
EnvVar string
}
func (f StringSliceFlag) String() string {
firstName := strings.Trim(strings.Split(f.Name, ",")[0], " ")
pref := prefixFor(firstName)
return withEnvHint(f.EnvVar, fmt.Sprintf("%s [%v]\t%v", prefixedNames(f.Name), pref+firstName+" option "+pref+firstName+" option", f.Usage))
}
func (f StringSliceFlag) Apply(set *flag.FlagSet) {
if f.EnvVar != "" {
for _, envVar := range strings.Split(f.EnvVar, ",") {
envVar = strings.TrimSpace(envVar)
if envVal := os.Getenv(envVar); envVal != "" {
newVal := &StringSlice{}
for _, s := range strings.Split(envVal, ",") {
s = strings.TrimSpace(s)
newVal.Set(s)
}
f.Value = newVal
break
}
}
}
eachName(f.Name, func(name string) {
set.Var(f.Value, name, f.Usage)
})
}
func (f StringSliceFlag) getName() string {
return f.Name
}
type IntSlice []int
func (f *IntSlice) Set(value string) error {
tmp, err := strconv.Atoi(value)
if err != nil {
return err
} else {
*f = append(*f, tmp)
}
return nil
}
func (f *IntSlice) String() string {
return fmt.Sprintf("%d", *f)
}
func (f *IntSlice) Value() []int {
return *f
}
type IntSliceFlag struct {
Name string
Value *IntSlice
Usage string
EnvVar string
}
func (f IntSliceFlag) String() string {
firstName := strings.Trim(strings.Split(f.Name, ",")[0], " ")
pref := prefixFor(firstName)
return withEnvHint(f.EnvVar, fmt.Sprintf("%s [%v]\t%v", prefixedNames(f.Name), pref+firstName+" option "+pref+firstName+" option", f.Usage))
}
func (f IntSliceFlag) Apply(set *flag.FlagSet) {
if f.EnvVar != "" {
for _, envVar := range strings.Split(f.EnvVar, ",") {
envVar = strings.TrimSpace(envVar)
if envVal := os.Getenv(envVar); envVal != "" {
newVal := &IntSlice{}
for _, s := range strings.Split(envVal, ",") {
s = strings.TrimSpace(s)
err := newVal.Set(s)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())
}
}
f.Value = newVal
break
}
}
}
eachName(f.Name, func(name string) {
set.Var(f.Value, name, f.Usage)
})
}
func (f IntSliceFlag) getName() string {
return f.Name
}
type BoolFlag struct {
Name string
Usage string
EnvVar string
}
func (f BoolFlag) String() string {
return withEnvHint(f.EnvVar, fmt.Sprintf("%s\t%v", prefixedNames(f.Name), f.Usage))
}
func (f BoolFlag) Apply(set *flag.FlagSet) {
val := false
if f.EnvVar != "" {
for _, envVar := range strings.Split(f.EnvVar, ",") {
envVar = strings.TrimSpace(envVar)
if envVal := os.Getenv(envVar); envVal != "" {
envValBool, err := strconv.ParseBool(envVal)
if err == nil {
val = envValBool
}
break
}
}
}
eachName(f.Name, func(name string) {
set.Bool(name, val, f.Usage)
})
}
func (f BoolFlag) getName() string {
return f.Name
}
type BoolTFlag struct {
Name string
Usage string
EnvVar string
}
func (f BoolTFlag) String() string {
return withEnvHint(f.EnvVar, fmt.Sprintf("%s\t%v", prefixedNames(f.Name), f.Usage))
}
func (f BoolTFlag) Apply(set *flag.FlagSet) {
val := true
if f.EnvVar != "" {
for _, envVar := range strings.Split(f.EnvVar, ",") {
envVar = strings.TrimSpace(envVar)
if envVal := os.Getenv(envVar); envVal != "" {
envValBool, err := strconv.ParseBool(envVal)
if err == nil {
val = envValBool
break
}
}
}
}
eachName(f.Name, func(name string) {
set.Bool(name, val, f.Usage)
})
}
func (f BoolTFlag) getName() string {
return f.Name
}
type StringFlag struct {
Name string
Value string
Usage string
EnvVar string
}
func (f StringFlag) String() string {
var fmtString string
fmtString = "%s %v\t%v"
if len(f.Value) > 0 {
fmtString = "%s \"%v\"\t%v"
} else {
fmtString = "%s %v\t%v"
}
return withEnvHint(f.EnvVar, fmt.Sprintf(fmtString, prefixedNames(f.Name), f.Value, f.Usage))
}
func (f StringFlag) Apply(set *flag.FlagSet) {
if f.EnvVar != "" {
for _, envVar := range strings.Split(f.EnvVar, ",") {
envVar = strings.TrimSpace(envVar)
if envVal := os.Getenv(envVar); envVal != "" {
f.Value = envVal
break
}
}
}
eachName(f.Name, func(name string) {
set.String(name, f.Value, f.Usage)
})
}
func (f StringFlag) getName() string {
return f.Name
}
type IntFlag struct {
Name string
Value int
Usage string
EnvVar string
}
func (f IntFlag) String() string {
return withEnvHint(f.EnvVar, fmt.Sprintf("%s \"%v\"\t%v", prefixedNames(f.Name), f.Value, f.Usage))
}
func (f IntFlag) Apply(set *flag.FlagSet) {
if f.EnvVar != "" {
for _, envVar := range strings.Split(f.EnvVar, ",") {
envVar = strings.TrimSpace(envVar)
if envVal := os.Getenv(envVar); envVal != "" {
envValInt, err := strconv.ParseInt(envVal, 0, 64)
if err == nil {
f.Value = int(envValInt)
break
}
}
}
}
eachName(f.Name, func(name string) {
set.Int(name, f.Value, f.Usage)
})
}
func (f IntFlag) getName() string {
return f.Name
}
type DurationFlag struct {
Name string
Value time.Duration
Usage string
EnvVar string
}
func (f DurationFlag) String() string {
return withEnvHint(f.EnvVar, fmt.Sprintf("%s \"%v\"\t%v", prefixedNames(f.Name), f.Value, f.Usage))
}
func (f DurationFlag) Apply(set *flag.FlagSet) {
if f.EnvVar != "" {
for _, envVar := range strings.Split(f.EnvVar, ",") {
envVar = strings.TrimSpace(envVar)
if envVal := os.Getenv(envVar); envVal != "" {
envValDuration, err := time.ParseDuration(envVal)
if err == nil {
f.Value = envValDuration
break
}
}
}
}
eachName(f.Name, func(name string) {
set.Duration(name, f.Value, f.Usage)
})
}
func (f DurationFlag) getName() string {
return f.Name
}
type Float64Flag struct {
Name string
Value float64
Usage string
EnvVar string
}
func (f Float64Flag) String() string {
return withEnvHint(f.EnvVar, fmt.Sprintf("%s \"%v\"\t%v", prefixedNames(f.Name), f.Value, f.Usage))
}
func (f Float64Flag) Apply(set *flag.FlagSet) {
if f.EnvVar != "" {
for _, envVar := range strings.Split(f.EnvVar, ",") {
envVar = strings.TrimSpace(envVar)
if envVal := os.Getenv(envVar); envVal != "" {
envValFloat, err := strconv.ParseFloat(envVal, 10)
if err == nil {
f.Value = float64(envValFloat)
}
}
}
}
eachName(f.Name, func(name string) {
set.Float64(name, f.Value, f.Usage)
})
}
func (f Float64Flag) getName() string {
return f.Name
}
func prefixFor(name string) (prefix string) {
if len(name) == 1 {
prefix = "-"
} else {
prefix = "--"
}
return
}
func prefixedNames(fullName string) (prefixed string) {
parts := strings.Split(fullName, ",")
for i, name := range parts {
name = strings.Trim(name, " ")
prefixed += prefixFor(name) + name
if i < len(parts)-1 {
prefixed += ", "
}
}
return
}
func withEnvHint(envVar, str string) string {
envText := ""
if envVar != "" {
envText = fmt.Sprintf(" [$%s]", strings.Join(strings.Split(envVar, ","), ", $"))
}
return str + envText
}

View File

@@ -0,0 +1,742 @@
package cli_test
import (
"fmt"
"os"
"reflect"
"strings"
"testing"
"github.com/codegangsta/cli"
)
var boolFlagTests = []struct {
name string
expected string
}{
{"help", "--help\t"},
{"h", "-h\t"},
}
func TestBoolFlagHelpOutput(t *testing.T) {
for _, test := range boolFlagTests {
flag := cli.BoolFlag{Name: test.name}
output := flag.String()
if output != test.expected {
t.Errorf("%s does not match %s", output, test.expected)
}
}
}
var stringFlagTests = []struct {
name string
value string
expected string
}{
{"help", "", "--help \t"},
{"h", "", "-h \t"},
{"h", "", "-h \t"},
{"test", "Something", "--test \"Something\"\t"},
}
func TestStringFlagHelpOutput(t *testing.T) {
for _, test := range stringFlagTests {
flag := cli.StringFlag{Name: test.name, Value: test.value}
output := flag.String()
if output != test.expected {
t.Errorf("%s does not match %s", output, test.expected)
}
}
}
func TestStringFlagWithEnvVarHelpOutput(t *testing.T) {
os.Clearenv()
os.Setenv("APP_FOO", "derp")
for _, test := range stringFlagTests {
flag := cli.StringFlag{Name: test.name, Value: test.value, EnvVar: "APP_FOO"}
output := flag.String()
if !strings.HasSuffix(output, " [$APP_FOO]") {
t.Errorf("%s does not end with [$APP_FOO]", output)
}
}
}
var stringSliceFlagTests = []struct {
name string
value *cli.StringSlice
expected string
}{
{"help", func() *cli.StringSlice {
s := &cli.StringSlice{}
s.Set("")
return s
}(), "--help [--help option --help option]\t"},
{"h", func() *cli.StringSlice {
s := &cli.StringSlice{}
s.Set("")
return s
}(), "-h [-h option -h option]\t"},
{"h", func() *cli.StringSlice {
s := &cli.StringSlice{}
s.Set("")
return s
}(), "-h [-h option -h option]\t"},
{"test", func() *cli.StringSlice {
s := &cli.StringSlice{}
s.Set("Something")
return s
}(), "--test [--test option --test option]\t"},
}
func TestStringSliceFlagHelpOutput(t *testing.T) {
for _, test := range stringSliceFlagTests {
flag := cli.StringSliceFlag{Name: test.name, Value: test.value}
output := flag.String()
if output != test.expected {
t.Errorf("%q does not match %q", output, test.expected)
}
}
}
func TestStringSliceFlagWithEnvVarHelpOutput(t *testing.T) {
os.Clearenv()
os.Setenv("APP_QWWX", "11,4")
for _, test := range stringSliceFlagTests {
flag := cli.StringSliceFlag{Name: test.name, Value: test.value, EnvVar: "APP_QWWX"}
output := flag.String()
if !strings.HasSuffix(output, " [$APP_QWWX]") {
t.Errorf("%q does not end with [$APP_QWWX]", output)
}
}
}
var intFlagTests = []struct {
name string
expected string
}{
{"help", "--help \"0\"\t"},
{"h", "-h \"0\"\t"},
}
func TestIntFlagHelpOutput(t *testing.T) {
for _, test := range intFlagTests {
flag := cli.IntFlag{Name: test.name}
output := flag.String()
if output != test.expected {
t.Errorf("%s does not match %s", output, test.expected)
}
}
}
func TestIntFlagWithEnvVarHelpOutput(t *testing.T) {
os.Clearenv()
os.Setenv("APP_BAR", "2")
for _, test := range intFlagTests {
flag := cli.IntFlag{Name: test.name, EnvVar: "APP_BAR"}
output := flag.String()
if !strings.HasSuffix(output, " [$APP_BAR]") {
t.Errorf("%s does not end with [$APP_BAR]", output)
}
}
}
var durationFlagTests = []struct {
name string
expected string
}{
{"help", "--help \"0\"\t"},
{"h", "-h \"0\"\t"},
}
func TestDurationFlagHelpOutput(t *testing.T) {
for _, test := range durationFlagTests {
flag := cli.DurationFlag{Name: test.name}
output := flag.String()
if output != test.expected {
t.Errorf("%s does not match %s", output, test.expected)
}
}
}
func TestDurationFlagWithEnvVarHelpOutput(t *testing.T) {
os.Clearenv()
os.Setenv("APP_BAR", "2h3m6s")
for _, test := range durationFlagTests {
flag := cli.DurationFlag{Name: test.name, EnvVar: "APP_BAR"}
output := flag.String()
if !strings.HasSuffix(output, " [$APP_BAR]") {
t.Errorf("%s does not end with [$APP_BAR]", output)
}
}
}
var intSliceFlagTests = []struct {
name string
value *cli.IntSlice
expected string
}{
{"help", &cli.IntSlice{}, "--help [--help option --help option]\t"},
{"h", &cli.IntSlice{}, "-h [-h option -h option]\t"},
{"h", &cli.IntSlice{}, "-h [-h option -h option]\t"},
{"test", func() *cli.IntSlice {
i := &cli.IntSlice{}
i.Set("9")
return i
}(), "--test [--test option --test option]\t"},
}
func TestIntSliceFlagHelpOutput(t *testing.T) {
for _, test := range intSliceFlagTests {
flag := cli.IntSliceFlag{Name: test.name, Value: test.value}
output := flag.String()
if output != test.expected {
t.Errorf("%q does not match %q", output, test.expected)
}
}
}
func TestIntSliceFlagWithEnvVarHelpOutput(t *testing.T) {
os.Clearenv()
os.Setenv("APP_SMURF", "42,3")
for _, test := range intSliceFlagTests {
flag := cli.IntSliceFlag{Name: test.name, Value: test.value, EnvVar: "APP_SMURF"}
output := flag.String()
if !strings.HasSuffix(output, " [$APP_SMURF]") {
t.Errorf("%q does not end with [$APP_SMURF]", output)
}
}
}
var float64FlagTests = []struct {
name string
expected string
}{
{"help", "--help \"0\"\t"},
{"h", "-h \"0\"\t"},
}
func TestFloat64FlagHelpOutput(t *testing.T) {
for _, test := range float64FlagTests {
flag := cli.Float64Flag{Name: test.name}
output := flag.String()
if output != test.expected {
t.Errorf("%s does not match %s", output, test.expected)
}
}
}
func TestFloat64FlagWithEnvVarHelpOutput(t *testing.T) {
os.Clearenv()
os.Setenv("APP_BAZ", "99.4")
for _, test := range float64FlagTests {
flag := cli.Float64Flag{Name: test.name, EnvVar: "APP_BAZ"}
output := flag.String()
if !strings.HasSuffix(output, " [$APP_BAZ]") {
t.Errorf("%s does not end with [$APP_BAZ]", output)
}
}
}
var genericFlagTests = []struct {
name string
value cli.Generic
expected string
}{
{"test", &Parser{"abc", "def"}, "--test \"abc,def\"\ttest flag"},
{"t", &Parser{"abc", "def"}, "-t \"abc,def\"\ttest flag"},
}
func TestGenericFlagHelpOutput(t *testing.T) {
for _, test := range genericFlagTests {
flag := cli.GenericFlag{Name: test.name, Value: test.value, Usage: "test flag"}
output := flag.String()
if output != test.expected {
t.Errorf("%q does not match %q", output, test.expected)
}
}
}
func TestGenericFlagWithEnvVarHelpOutput(t *testing.T) {
os.Clearenv()
os.Setenv("APP_ZAP", "3")
for _, test := range genericFlagTests {
flag := cli.GenericFlag{Name: test.name, EnvVar: "APP_ZAP"}
output := flag.String()
if !strings.HasSuffix(output, " [$APP_ZAP]") {
t.Errorf("%s does not end with [$APP_ZAP]", output)
}
}
}
func TestParseMultiString(t *testing.T) {
(&cli.App{
Flags: []cli.Flag{
cli.StringFlag{Name: "serve, s"},
},
Action: func(ctx *cli.Context) {
if ctx.String("serve") != "10" {
t.Errorf("main name not set")
}
if ctx.String("s") != "10" {
t.Errorf("short name not set")
}
},
}).Run([]string{"run", "-s", "10"})
}
func TestParseMultiStringFromEnv(t *testing.T) {
os.Clearenv()
os.Setenv("APP_COUNT", "20")
(&cli.App{
Flags: []cli.Flag{
cli.StringFlag{Name: "count, c", EnvVar: "APP_COUNT"},
},
Action: func(ctx *cli.Context) {
if ctx.String("count") != "20" {
t.Errorf("main name not set")
}
if ctx.String("c") != "20" {
t.Errorf("short name not set")
}
},
}).Run([]string{"run"})
}
func TestParseMultiStringFromEnvCascade(t *testing.T) {
os.Clearenv()
os.Setenv("APP_COUNT", "20")
(&cli.App{
Flags: []cli.Flag{
cli.StringFlag{Name: "count, c", EnvVar: "COMPAT_COUNT,APP_COUNT"},
},
Action: func(ctx *cli.Context) {
if ctx.String("count") != "20" {
t.Errorf("main name not set")
}
if ctx.String("c") != "20" {
t.Errorf("short name not set")
}
},
}).Run([]string{"run"})
}
func TestParseMultiStringSlice(t *testing.T) {
(&cli.App{
Flags: []cli.Flag{
cli.StringSliceFlag{Name: "serve, s", Value: &cli.StringSlice{}},
},
Action: func(ctx *cli.Context) {
if !reflect.DeepEqual(ctx.StringSlice("serve"), []string{"10", "20"}) {
t.Errorf("main name not set")
}
if !reflect.DeepEqual(ctx.StringSlice("s"), []string{"10", "20"}) {
t.Errorf("short name not set")
}
},
}).Run([]string{"run", "-s", "10", "-s", "20"})
}
func TestParseMultiStringSliceFromEnv(t *testing.T) {
os.Clearenv()
os.Setenv("APP_INTERVALS", "20,30,40")
(&cli.App{
Flags: []cli.Flag{
cli.StringSliceFlag{Name: "intervals, i", Value: &cli.StringSlice{}, EnvVar: "APP_INTERVALS"},
},
Action: func(ctx *cli.Context) {
if !reflect.DeepEqual(ctx.StringSlice("intervals"), []string{"20", "30", "40"}) {
t.Errorf("main name not set from env")
}
if !reflect.DeepEqual(ctx.StringSlice("i"), []string{"20", "30", "40"}) {
t.Errorf("short name not set from env")
}
},
}).Run([]string{"run"})
}
func TestParseMultiStringSliceFromEnvCascade(t *testing.T) {
os.Clearenv()
os.Setenv("APP_INTERVALS", "20,30,40")
(&cli.App{
Flags: []cli.Flag{
cli.StringSliceFlag{Name: "intervals, i", Value: &cli.StringSlice{}, EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"},
},
Action: func(ctx *cli.Context) {
if !reflect.DeepEqual(ctx.StringSlice("intervals"), []string{"20", "30", "40"}) {
t.Errorf("main name not set from env")
}
if !reflect.DeepEqual(ctx.StringSlice("i"), []string{"20", "30", "40"}) {
t.Errorf("short name not set from env")
}
},
}).Run([]string{"run"})
}
func TestParseMultiInt(t *testing.T) {
a := cli.App{
Flags: []cli.Flag{
cli.IntFlag{Name: "serve, s"},
},
Action: func(ctx *cli.Context) {
if ctx.Int("serve") != 10 {
t.Errorf("main name not set")
}
if ctx.Int("s") != 10 {
t.Errorf("short name not set")
}
},
}
a.Run([]string{"run", "-s", "10"})
}
func TestParseMultiIntFromEnv(t *testing.T) {
os.Clearenv()
os.Setenv("APP_TIMEOUT_SECONDS", "10")
a := cli.App{
Flags: []cli.Flag{
cli.IntFlag{Name: "timeout, t", EnvVar: "APP_TIMEOUT_SECONDS"},
},
Action: func(ctx *cli.Context) {
if ctx.Int("timeout") != 10 {
t.Errorf("main name not set")
}
if ctx.Int("t") != 10 {
t.Errorf("short name not set")
}
},
}
a.Run([]string{"run"})
}
func TestParseMultiIntFromEnvCascade(t *testing.T) {
os.Clearenv()
os.Setenv("APP_TIMEOUT_SECONDS", "10")
a := cli.App{
Flags: []cli.Flag{
cli.IntFlag{Name: "timeout, t", EnvVar: "COMPAT_TIMEOUT_SECONDS,APP_TIMEOUT_SECONDS"},
},
Action: func(ctx *cli.Context) {
if ctx.Int("timeout") != 10 {
t.Errorf("main name not set")
}
if ctx.Int("t") != 10 {
t.Errorf("short name not set")
}
},
}
a.Run([]string{"run"})
}
func TestParseMultiIntSlice(t *testing.T) {
(&cli.App{
Flags: []cli.Flag{
cli.IntSliceFlag{Name: "serve, s", Value: &cli.IntSlice{}},
},
Action: func(ctx *cli.Context) {
if !reflect.DeepEqual(ctx.IntSlice("serve"), []int{10, 20}) {
t.Errorf("main name not set")
}
if !reflect.DeepEqual(ctx.IntSlice("s"), []int{10, 20}) {
t.Errorf("short name not set")
}
},
}).Run([]string{"run", "-s", "10", "-s", "20"})
}
func TestParseMultiIntSliceFromEnv(t *testing.T) {
os.Clearenv()
os.Setenv("APP_INTERVALS", "20,30,40")
(&cli.App{
Flags: []cli.Flag{
cli.IntSliceFlag{Name: "intervals, i", Value: &cli.IntSlice{}, EnvVar: "APP_INTERVALS"},
},
Action: func(ctx *cli.Context) {
if !reflect.DeepEqual(ctx.IntSlice("intervals"), []int{20, 30, 40}) {
t.Errorf("main name not set from env")
}
if !reflect.DeepEqual(ctx.IntSlice("i"), []int{20, 30, 40}) {
t.Errorf("short name not set from env")
}
},
}).Run([]string{"run"})
}
func TestParseMultiIntSliceFromEnvCascade(t *testing.T) {
os.Clearenv()
os.Setenv("APP_INTERVALS", "20,30,40")
(&cli.App{
Flags: []cli.Flag{
cli.IntSliceFlag{Name: "intervals, i", Value: &cli.IntSlice{}, EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"},
},
Action: func(ctx *cli.Context) {
if !reflect.DeepEqual(ctx.IntSlice("intervals"), []int{20, 30, 40}) {
t.Errorf("main name not set from env")
}
if !reflect.DeepEqual(ctx.IntSlice("i"), []int{20, 30, 40}) {
t.Errorf("short name not set from env")
}
},
}).Run([]string{"run"})
}
func TestParseMultiFloat64(t *testing.T) {
a := cli.App{
Flags: []cli.Flag{
cli.Float64Flag{Name: "serve, s"},
},
Action: func(ctx *cli.Context) {
if ctx.Float64("serve") != 10.2 {
t.Errorf("main name not set")
}
if ctx.Float64("s") != 10.2 {
t.Errorf("short name not set")
}
},
}
a.Run([]string{"run", "-s", "10.2"})
}
func TestParseMultiFloat64FromEnv(t *testing.T) {
os.Clearenv()
os.Setenv("APP_TIMEOUT_SECONDS", "15.5")
a := cli.App{
Flags: []cli.Flag{
cli.Float64Flag{Name: "timeout, t", EnvVar: "APP_TIMEOUT_SECONDS"},
},
Action: func(ctx *cli.Context) {
if ctx.Float64("timeout") != 15.5 {
t.Errorf("main name not set")
}
if ctx.Float64("t") != 15.5 {
t.Errorf("short name not set")
}
},
}
a.Run([]string{"run"})
}
func TestParseMultiFloat64FromEnvCascade(t *testing.T) {
os.Clearenv()
os.Setenv("APP_TIMEOUT_SECONDS", "15.5")
a := cli.App{
Flags: []cli.Flag{
cli.Float64Flag{Name: "timeout, t", EnvVar: "COMPAT_TIMEOUT_SECONDS,APP_TIMEOUT_SECONDS"},
},
Action: func(ctx *cli.Context) {
if ctx.Float64("timeout") != 15.5 {
t.Errorf("main name not set")
}
if ctx.Float64("t") != 15.5 {
t.Errorf("short name not set")
}
},
}
a.Run([]string{"run"})
}
func TestParseMultiBool(t *testing.T) {
a := cli.App{
Flags: []cli.Flag{
cli.BoolFlag{Name: "serve, s"},
},
Action: func(ctx *cli.Context) {
if ctx.Bool("serve") != true {
t.Errorf("main name not set")
}
if ctx.Bool("s") != true {
t.Errorf("short name not set")
}
},
}
a.Run([]string{"run", "--serve"})
}
func TestParseMultiBoolFromEnv(t *testing.T) {
os.Clearenv()
os.Setenv("APP_DEBUG", "1")
a := cli.App{
Flags: []cli.Flag{
cli.BoolFlag{Name: "debug, d", EnvVar: "APP_DEBUG"},
},
Action: func(ctx *cli.Context) {
if ctx.Bool("debug") != true {
t.Errorf("main name not set from env")
}
if ctx.Bool("d") != true {
t.Errorf("short name not set from env")
}
},
}
a.Run([]string{"run"})
}
func TestParseMultiBoolFromEnvCascade(t *testing.T) {
os.Clearenv()
os.Setenv("APP_DEBUG", "1")
a := cli.App{
Flags: []cli.Flag{
cli.BoolFlag{Name: "debug, d", EnvVar: "COMPAT_DEBUG,APP_DEBUG"},
},
Action: func(ctx *cli.Context) {
if ctx.Bool("debug") != true {
t.Errorf("main name not set from env")
}
if ctx.Bool("d") != true {
t.Errorf("short name not set from env")
}
},
}
a.Run([]string{"run"})
}
func TestParseMultiBoolT(t *testing.T) {
a := cli.App{
Flags: []cli.Flag{
cli.BoolTFlag{Name: "serve, s"},
},
Action: func(ctx *cli.Context) {
if ctx.BoolT("serve") != true {
t.Errorf("main name not set")
}
if ctx.BoolT("s") != true {
t.Errorf("short name not set")
}
},
}
a.Run([]string{"run", "--serve"})
}
func TestParseMultiBoolTFromEnv(t *testing.T) {
os.Clearenv()
os.Setenv("APP_DEBUG", "0")
a := cli.App{
Flags: []cli.Flag{
cli.BoolTFlag{Name: "debug, d", EnvVar: "APP_DEBUG"},
},
Action: func(ctx *cli.Context) {
if ctx.BoolT("debug") != false {
t.Errorf("main name not set from env")
}
if ctx.BoolT("d") != false {
t.Errorf("short name not set from env")
}
},
}
a.Run([]string{"run"})
}
func TestParseMultiBoolTFromEnvCascade(t *testing.T) {
os.Clearenv()
os.Setenv("APP_DEBUG", "0")
a := cli.App{
Flags: []cli.Flag{
cli.BoolTFlag{Name: "debug, d", EnvVar: "COMPAT_DEBUG,APP_DEBUG"},
},
Action: func(ctx *cli.Context) {
if ctx.BoolT("debug") != false {
t.Errorf("main name not set from env")
}
if ctx.BoolT("d") != false {
t.Errorf("short name not set from env")
}
},
}
a.Run([]string{"run"})
}
type Parser [2]string
func (p *Parser) Set(value string) error {
parts := strings.Split(value, ",")
if len(parts) != 2 {
return fmt.Errorf("invalid format")
}
(*p)[0] = parts[0]
(*p)[1] = parts[1]
return nil
}
func (p *Parser) String() string {
return fmt.Sprintf("%s,%s", p[0], p[1])
}
func TestParseGeneric(t *testing.T) {
a := cli.App{
Flags: []cli.Flag{
cli.GenericFlag{Name: "serve, s", Value: &Parser{}},
},
Action: func(ctx *cli.Context) {
if !reflect.DeepEqual(ctx.Generic("serve"), &Parser{"10", "20"}) {
t.Errorf("main name not set")
}
if !reflect.DeepEqual(ctx.Generic("s"), &Parser{"10", "20"}) {
t.Errorf("short name not set")
}
},
}
a.Run([]string{"run", "-s", "10,20"})
}
func TestParseGenericFromEnv(t *testing.T) {
os.Clearenv()
os.Setenv("APP_SERVE", "20,30")
a := cli.App{
Flags: []cli.Flag{
cli.GenericFlag{Name: "serve, s", Value: &Parser{}, EnvVar: "APP_SERVE"},
},
Action: func(ctx *cli.Context) {
if !reflect.DeepEqual(ctx.Generic("serve"), &Parser{"20", "30"}) {
t.Errorf("main name not set from env")
}
if !reflect.DeepEqual(ctx.Generic("s"), &Parser{"20", "30"}) {
t.Errorf("short name not set from env")
}
},
}
a.Run([]string{"run"})
}
func TestParseGenericFromEnvCascade(t *testing.T) {
os.Clearenv()
os.Setenv("APP_FOO", "99,2000")
a := cli.App{
Flags: []cli.Flag{
cli.GenericFlag{Name: "foos", Value: &Parser{}, EnvVar: "COMPAT_FOO,APP_FOO"},
},
Action: func(ctx *cli.Context) {
if !reflect.DeepEqual(ctx.Generic("foos"), &Parser{"99", "2000"}) {
t.Errorf("value not set from env")
}
},
}
a.Run([]string{"run"})
}

View File

@@ -0,0 +1,215 @@
package cli
import "fmt"
// The text template for the Default help topic.
// cli.go uses text/template to render templates. You can
// render custom help text by setting this variable.
var AppHelpTemplate = `NAME:
{{.Name}} - {{.Usage}}
USAGE:
{{.Name}} {{if .Flags}}[global options] {{end}}command{{if .Flags}} [command options]{{end}} [arguments...]
VERSION:
{{.Version}}
AUTHOR(S):
{{range .Authors}}{{ . }}
{{end}}
COMMANDS:
{{range .Commands}}{{join .Names ", "}}{{ "\t" }}{{.Usage}}
{{end}}{{if .Flags}}
GLOBAL OPTIONS:
{{range .Flags}}{{.}}
{{end}}{{end}}
`
// The text template for the command help topic.
// cli.go uses text/template to render templates. You can
// render custom help text by setting this variable.
var CommandHelpTemplate = `NAME:
{{.Name}} - {{.Usage}}
USAGE:
command {{.Name}}{{if .Flags}} [command options]{{end}} [arguments...]{{if .Description}}
DESCRIPTION:
{{.Description}}{{end}}{{if .Flags}}
OPTIONS:
{{range .Flags}}{{.}}
{{end}}{{ end }}
`
// The text template for the subcommand help topic.
// cli.go uses text/template to render templates. You can
// render custom help text by setting this variable.
var SubcommandHelpTemplate = `NAME:
{{.Name}} - {{.Usage}}
USAGE:
{{.Name}} command{{if .Flags}} [command options]{{end}} [arguments...]
COMMANDS:
{{range .Commands}}{{join .Names ", "}}{{ "\t" }}{{.Usage}}
{{end}}{{if .Flags}}
OPTIONS:
{{range .Flags}}{{.}}
{{end}}{{end}}
`
var helpCommand = Command{
Name: "help",
Aliases: []string{"h"},
Usage: "Shows a list of commands or help for one command",
Action: func(c *Context) {
args := c.Args()
if args.Present() {
ShowCommandHelp(c, args.First())
} else {
ShowAppHelp(c)
}
},
}
var helpSubcommand = Command{
Name: "help",
Aliases: []string{"h"},
Usage: "Shows a list of commands or help for one command",
Action: func(c *Context) {
args := c.Args()
if args.Present() {
ShowCommandHelp(c, args.First())
} else {
ShowSubcommandHelp(c)
}
},
}
// Prints help for the App
type helpPrinter func(templ string, data interface{})
var HelpPrinter helpPrinter = nil
// Prints version for the App
var VersionPrinter = printVersion
func ShowAppHelp(c *Context) {
HelpPrinter(AppHelpTemplate, c.App)
}
// Prints the list of subcommands as the default app completion method
func DefaultAppComplete(c *Context) {
for _, command := range c.App.Commands {
for _, name := range command.Names() {
fmt.Fprintln(c.App.Writer, name)
}
}
}
// Prints help for the given command
func ShowCommandHelp(c *Context, command string) {
// show the subcommand help for a command with subcommands
if command == "" {
HelpPrinter(SubcommandHelpTemplate, c.App)
return
}
for _, c := range c.App.Commands {
if c.HasName(command) {
HelpPrinter(CommandHelpTemplate, c)
return
}
}
if c.App.CommandNotFound != nil {
c.App.CommandNotFound(c, command)
} else {
fmt.Fprintf(c.App.Writer, "No help topic for '%v'\n", command)
}
}
// Prints help for the given subcommand
func ShowSubcommandHelp(c *Context) {
ShowCommandHelp(c, c.Command.Name)
}
// Prints the version number of the App
func ShowVersion(c *Context) {
VersionPrinter(c)
}
func printVersion(c *Context) {
fmt.Fprintf(c.App.Writer, "%v version %v\n", c.App.Name, c.App.Version)
}
// Prints the lists of commands within a given context
func ShowCompletions(c *Context) {
a := c.App
if a != nil && a.BashComplete != nil {
a.BashComplete(c)
}
}
// Prints the custom completions for a given command
func ShowCommandCompletions(ctx *Context, command string) {
c := ctx.App.Command(command)
if c != nil && c.BashComplete != nil {
c.BashComplete(ctx)
}
}
func checkVersion(c *Context) bool {
if c.GlobalBool("version") {
ShowVersion(c)
return true
}
return false
}
func checkHelp(c *Context) bool {
if c.GlobalBool("h") || c.GlobalBool("help") {
ShowAppHelp(c)
return true
}
return false
}
func checkCommandHelp(c *Context, name string) bool {
if c.Bool("h") || c.Bool("help") {
ShowCommandHelp(c, name)
return true
}
return false
}
func checkSubcommandHelp(c *Context) bool {
if c.GlobalBool("h") || c.GlobalBool("help") {
ShowSubcommandHelp(c)
return true
}
return false
}
func checkCompletions(c *Context) bool {
if (c.GlobalBool(BashCompletionFlag.Name) || c.Bool(BashCompletionFlag.Name)) && c.App.EnableBashCompletion {
ShowCompletions(c)
return true
}
return false
}
func checkCommandCompletions(c *Context, name string) bool {
if c.Bool(BashCompletionFlag.Name) && c.App.EnableBashCompletion {
ShowCommandCompletions(c, name)
return true
}
return false
}

View File

@@ -0,0 +1,19 @@
package cli_test
import (
"reflect"
"testing"
)
/* Test Helpers */
func expect(t *testing.T, a interface{}, b interface{}) {
if a != b {
t.Errorf("Expected %v (type %v) - Got %v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a))
}
}
func refute(t *testing.T, a interface{}, b interface{}) {
if a == b {
t.Errorf("Did not expect %v (type %v) - Got %v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a))
}
}

View File

@@ -0,0 +1,12 @@
.idea/
.DS_Store
*/**/*un~
.vagrant/
*.pyc
build/
pyethash.egg-info/
*.so
*~
*.swp
MANIFEST
dist/

View File

@@ -0,0 +1,23 @@
language: go
go:
- 1.4.2
before_install:
# for g++4.8 and C++11
- sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
# Set up go-ethereum
- sudo apt-get update -y -qq
- sudo apt-get install -yqq libgmp3-dev
- git clone --depth=10 https://github.com/ethereum/go-ethereum ${GOPATH}/src/github.com/ethereum/go-ethereum
# use canned dependencies from the go-ethereum repository
- export GOPATH=$GOPATH:$GOPATH/src/github.com/ethereum/go-ethereum/Godeps/_workspace/
- echo $GOPATH
install:
# need to explicitly request version 1.48 since by default we get 1.46 which does not work with C++11
- sudo apt-get install -qq --yes --force-yes g++-4.8
- sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
- sudo apt-get install -qq wget cmake bash libboost-test1.48-dev libboost-system1.48-dev libboost-filesystem1.48-dev nodejs python-pip python-dev valgrind
- sudo pip install virtualenv -q
script: "./test/test.sh"

View File

@@ -0,0 +1,21 @@
cmake_minimum_required(VERSION 2.8.7)
project(ethash)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
set(ETHHASH_LIBS ethash)
if (WIN32 AND WANT_CRYPTOPP)
add_subdirectory(cryptopp)
endif()
add_subdirectory(src/libethash)
# bin2h.cmake doesn't work
if (NOT OpenCL_FOUND)
find_package(OpenCL)
endif()
if (OpenCL_FOUND)
add_subdirectory(src/libethash-cl)
endif()
add_subdirectory(src/benchmark EXCLUDE_FROM_ALL)
add_subdirectory(test/c)

View File

@@ -0,0 +1,17 @@
include setup.py
# C sources
include src/libethash/internal.c
include src/libethash/sha3.c
include src/libethash/util.c
include src/python/core.c
# Headers
include src/libethash/compiler.h
include src/libethash/data_sizes.h
include src/libethash/endian.h
include src/libethash/ethash.h
include src/libethash/fnv.h
include src/libethash/internal.h
include src/libethash/sha3.h
include src/libethash/util.h

View File

@@ -0,0 +1,6 @@
.PHONY: clean test
test:
./test/test.sh
clean:
rm -rf *.so pyethash.egg-info/ build/ test/python/python-virtual-env/ test/c/build/ pyethash.so test/python/*.pyc dist/ MANIFEST

View File

@@ -0,0 +1,22 @@
[![Build Status](https://travis-ci.org/ethereum/ethash.svg?branch=master)](https://travis-ci.org/ethereum/ethash)
[![Windows Build Status](https://ci.appveyor.com/api/projects/status/github/debris/ethash?branch=master&svg=true)](https://ci.appveyor.com/project/debris/ethash-nr37r/branch/master)
# Ethash
For details on this project, please see the Ethereum wiki:
https://github.com/ethereum/wiki/wiki/Ethash
### Coding Style for C++ code:
Follow the same exact style as in [cpp-ethereum](https://github.com/ethereum/cpp-ethereum/blob/develop/CodingStandards.txt)
### Coding Style for C code:
The main thing above all is code consistency.
- Tabs for indentation. A tab is 4 spaces
- Try to stick to the [K&R](http://en.wikipedia.org/wiki/Indent_style#K.26R_style),
especially for the C code.
- Keep the line lengths reasonable. No hard limit on 80 characters but don't go further
than 110. Some people work with multiple buffers next to each other.
Make them like you :)

View File

@@ -0,0 +1,7 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "Ubuntu 12.04"
config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box"
end

View File

@@ -0,0 +1,43 @@
version: 1.0.0.{build}
environment:
BOOST_ROOT: "c:/projects/ethash/deps/boost"
branches:
only:
- master
- develop
os: Windows Server 2012 R2
clone_folder: c:\projects\ethash
#platform: Any CPU
#configuration: Debug
install:
# by default, all script lines are interpreted as batch
# scripts to run before build
before_build:
- echo "Downloading boost..."
- mkdir c:\projects\ethash\deps
- cd c:\projects\ethash\deps
- curl -O https://build.ethdev.com/builds/windows-precompiled/boost.tar.gz
- echo "Unzipping boost..."
- 7z x boost.tar.gz > nul
- 7z x boost.tar > nul
- ls
- echo "Running cmake..."
- cd c:\projects\ethash
- cmake .
build:
project: ALL_BUILD.vcxproj # path to Visual Studio solution or project
after_build:
- echo "Running tests..."
- cd c:\projects\ethash\test\c\Debug
- Test.exe
- echo "Finished!"

View File

@@ -0,0 +1,161 @@
#.rst:
# CMakeParseArguments
# -------------------
#
#
#
# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords>
# <multi_value_keywords> args...)
#
# CMAKE_PARSE_ARGUMENTS() is intended to be used in macros or functions
# for parsing the arguments given to that macro or function. It
# processes the arguments and defines a set of variables which hold the
# values of the respective options.
#
# The <options> argument contains all options for the respective macro,
# i.e. keywords which can be used when calling the macro without any
# value following, like e.g. the OPTIONAL keyword of the install()
# command.
#
# The <one_value_keywords> argument contains all keywords for this macro
# which are followed by one value, like e.g. DESTINATION keyword of the
# install() command.
#
# The <multi_value_keywords> argument contains all keywords for this
# macro which can be followed by more than one value, like e.g. the
# TARGETS or FILES keywords of the install() command.
#
# When done, CMAKE_PARSE_ARGUMENTS() will have defined for each of the
# keywords listed in <options>, <one_value_keywords> and
# <multi_value_keywords> a variable composed of the given <prefix>
# followed by "_" and the name of the respective keyword. These
# variables will then hold the respective value from the argument list.
# For the <options> keywords this will be TRUE or FALSE.
#
# All remaining arguments are collected in a variable
# <prefix>_UNPARSED_ARGUMENTS, this can be checked afterwards to see
# whether your macro was called with unrecognized parameters.
#
# As an example here a my_install() macro, which takes similar arguments
# as the real install() command:
#
# ::
#
# function(MY_INSTALL)
# set(options OPTIONAL FAST)
# set(oneValueArgs DESTINATION RENAME)
# set(multiValueArgs TARGETS CONFIGURATIONS)
# cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}"
# "${multiValueArgs}" ${ARGN} )
# ...
#
#
#
# Assume my_install() has been called like this:
#
# ::
#
# my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub)
#
#
#
# After the cmake_parse_arguments() call the macro will have set the
# following variables:
#
# ::
#
# MY_INSTALL_OPTIONAL = TRUE
# MY_INSTALL_FAST = FALSE (this option was not used when calling my_install()
# MY_INSTALL_DESTINATION = "bin"
# MY_INSTALL_RENAME = "" (was not used)
# MY_INSTALL_TARGETS = "foo;bar"
# MY_INSTALL_CONFIGURATIONS = "" (was not used)
# MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (no value expected after "OPTIONAL"
#
#
#
# You can then continue and process these variables.
#
# Keywords terminate lists of values, e.g. if directly after a
# one_value_keyword another recognized keyword follows, this is
# interpreted as the beginning of the new option. E.g.
# my_install(TARGETS foo DESTINATION OPTIONAL) would result in
# MY_INSTALL_DESTINATION set to "OPTIONAL", but MY_INSTALL_DESTINATION
# would be empty and MY_INSTALL_OPTIONAL would be set to TRUE therefor.
#=============================================================================
# Copyright 2010 Alexander Neundorf <neundorf@kde.org>
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
if(__CMAKE_PARSE_ARGUMENTS_INCLUDED)
return()
endif()
set(__CMAKE_PARSE_ARGUMENTS_INCLUDED TRUE)
function(CMAKE_PARSE_ARGUMENTS prefix _optionNames _singleArgNames _multiArgNames)
# first set all result variables to empty/FALSE
foreach(arg_name ${_singleArgNames} ${_multiArgNames})
set(${prefix}_${arg_name})
endforeach()
foreach(option ${_optionNames})
set(${prefix}_${option} FALSE)
endforeach()
set(${prefix}_UNPARSED_ARGUMENTS)
set(insideValues FALSE)
set(currentArgName)
# now iterate over all arguments and fill the result variables
foreach(currentArg ${ARGN})
list(FIND _optionNames "${currentArg}" optionIndex) # ... then this marks the end of the arguments belonging to this keyword
list(FIND _singleArgNames "${currentArg}" singleArgIndex) # ... then this marks the end of the arguments belonging to this keyword
list(FIND _multiArgNames "${currentArg}" multiArgIndex) # ... then this marks the end of the arguments belonging to this keyword
if(${optionIndex} EQUAL -1 AND ${singleArgIndex} EQUAL -1 AND ${multiArgIndex} EQUAL -1)
if(insideValues)
if("${insideValues}" STREQUAL "SINGLE")
set(${prefix}_${currentArgName} ${currentArg})
set(insideValues FALSE)
elseif("${insideValues}" STREQUAL "MULTI")
list(APPEND ${prefix}_${currentArgName} ${currentArg})
endif()
else()
list(APPEND ${prefix}_UNPARSED_ARGUMENTS ${currentArg})
endif()
else()
if(NOT ${optionIndex} EQUAL -1)
set(${prefix}_${currentArg} TRUE)
set(insideValues FALSE)
elseif(NOT ${singleArgIndex} EQUAL -1)
set(currentArgName ${currentArg})
set(${prefix}_${currentArgName})
set(insideValues "SINGLE")
elseif(NOT ${multiArgIndex} EQUAL -1)
set(currentArgName ${currentArg})
set(${prefix}_${currentArgName})
set(insideValues "MULTI")
endif()
endif()
endforeach()
# propagate the result variables to the caller:
foreach(arg_name ${_singleArgNames} ${_multiArgNames} ${_optionNames})
set(${prefix}_${arg_name} ${${prefix}_${arg_name}} PARENT_SCOPE)
endforeach()
set(${prefix}_UNPARSED_ARGUMENTS ${${prefix}_UNPARSED_ARGUMENTS} PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1,108 @@
# Module for locating the Crypto++ encryption library.
#
# Customizable variables:
# CRYPTOPP_ROOT_DIR
# This variable points to the CryptoPP root directory. On Windows the
# library location typically will have to be provided explicitly using the
# -D command-line option. The directory should include the include/cryptopp,
# lib and/or bin sub-directories.
#
# Read-only variables:
# CRYPTOPP_FOUND
# Indicates whether the library has been found.
#
# CRYPTOPP_INCLUDE_DIRS
# Points to the CryptoPP include directory.
#
# CRYPTOPP_LIBRARIES
# Points to the CryptoPP libraries that should be passed to
# target_link_libararies.
#
#
# Copyright (c) 2012 Sergiu Dotenco
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
INCLUDE (FindPackageHandleStandardArgs)
FIND_PATH (CRYPTOPP_ROOT_DIR
NAMES cryptopp/cryptlib.h include/cryptopp/cryptlib.h
PATHS ENV CRYPTOPPROOT
DOC "CryptoPP root directory")
# Re-use the previous path:
FIND_PATH (CRYPTOPP_INCLUDE_DIR
NAMES cryptopp/cryptlib.h
HINTS ${CRYPTOPP_ROOT_DIR}
PATH_SUFFIXES include
DOC "CryptoPP include directory")
FIND_LIBRARY (CRYPTOPP_LIBRARY_DEBUG
NAMES cryptlibd cryptoppd
HINTS ${CRYPTOPP_ROOT_DIR}
PATH_SUFFIXES lib
DOC "CryptoPP debug library")
FIND_LIBRARY (CRYPTOPP_LIBRARY_RELEASE
NAMES cryptlib cryptopp
HINTS ${CRYPTOPP_ROOT_DIR}
PATH_SUFFIXES lib
DOC "CryptoPP release library")
IF (CRYPTOPP_LIBRARY_DEBUG AND CRYPTOPP_LIBRARY_RELEASE)
SET (CRYPTOPP_LIBRARY
optimized ${CRYPTOPP_LIBRARY_RELEASE}
debug ${CRYPTOPP_LIBRARY_DEBUG} CACHE DOC "CryptoPP library")
ELSEIF (CRYPTOPP_LIBRARY_RELEASE)
SET (CRYPTOPP_LIBRARY ${CRYPTOPP_LIBRARY_RELEASE} CACHE DOC
"CryptoPP library")
ENDIF (CRYPTOPP_LIBRARY_DEBUG AND CRYPTOPP_LIBRARY_RELEASE)
IF (CRYPTOPP_INCLUDE_DIR)
SET (_CRYPTOPP_VERSION_HEADER ${CRYPTOPP_INCLUDE_DIR}/cryptopp/config.h)
IF (EXISTS ${_CRYPTOPP_VERSION_HEADER})
FILE (STRINGS ${_CRYPTOPP_VERSION_HEADER} _CRYPTOPP_VERSION_TMP REGEX
"^#define CRYPTOPP_VERSION[ \t]+[0-9]+$")
STRING (REGEX REPLACE
"^#define CRYPTOPP_VERSION[ \t]+([0-9]+)" "\\1" _CRYPTOPP_VERSION_TMP
${_CRYPTOPP_VERSION_TMP})
STRING (REGEX REPLACE "([0-9]+)[0-9][0-9]" "\\1" CRYPTOPP_VERSION_MAJOR
${_CRYPTOPP_VERSION_TMP})
STRING (REGEX REPLACE "[0-9]([0-9])[0-9]" "\\1" CRYPTOPP_VERSION_MINOR
${_CRYPTOPP_VERSION_TMP})
STRING (REGEX REPLACE "[0-9][0-9]([0-9])" "\\1" CRYPTOPP_VERSION_PATCH
${_CRYPTOPP_VERSION_TMP})
SET (CRYPTOPP_VERSION_COUNT 3)
SET (CRYPTOPP_VERSION
${CRYPTOPP_VERSION_MAJOR}.${CRYPTOPP_VERSION_MINOR}.${CRYPTOPP_VERSION_PATCH})
ENDIF (EXISTS ${_CRYPTOPP_VERSION_HEADER})
ENDIF (CRYPTOPP_INCLUDE_DIR)
SET (CRYPTOPP_INCLUDE_DIRS ${CRYPTOPP_INCLUDE_DIR})
SET (CRYPTOPP_LIBRARIES ${CRYPTOPP_LIBRARY})
MARK_AS_ADVANCED (CRYPTOPP_INCLUDE_DIR CRYPTOPP_LIBRARY CRYPTOPP_LIBRARY_DEBUG
CRYPTOPP_LIBRARY_RELEASE)
FIND_PACKAGE_HANDLE_STANDARD_ARGS (CryptoPP REQUIRED_VARS CRYPTOPP_ROOT_DIR
CRYPTOPP_INCLUDE_DIR CRYPTOPP_LIBRARY VERSION_VAR CRYPTOPP_VERSION)

View File

@@ -0,0 +1,148 @@
#.rst:
# FindOpenCL
# ----------
#
# Try to find OpenCL
#
# Once done this will define::
#
# OpenCL_FOUND - True if OpenCL was found
# OpenCL_INCLUDE_DIRS - include directories for OpenCL
# OpenCL_LIBRARIES - link against this library to use OpenCL
# OpenCL_VERSION_STRING - Highest supported OpenCL version (eg. 1.2)
# OpenCL_VERSION_MAJOR - The major version of the OpenCL implementation
# OpenCL_VERSION_MINOR - The minor version of the OpenCL implementation
#
# The module will also define two cache variables::
#
# OpenCL_INCLUDE_DIR - the OpenCL include directory
# OpenCL_LIBRARY - the path to the OpenCL library
#
#=============================================================================
# Copyright 2014 Matthaeus G. Chajdas
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
function(_FIND_OPENCL_VERSION)
include(CheckSymbolExists)
include(CMakePushCheckState)
set(CMAKE_REQUIRED_QUIET ${OpenCL_FIND_QUIETLY})
CMAKE_PUSH_CHECK_STATE()
foreach(VERSION "2_0" "1_2" "1_1" "1_0")
set(CMAKE_REQUIRED_INCLUDES "${OpenCL_INCLUDE_DIR}")
if(APPLE)
CHECK_SYMBOL_EXISTS(
CL_VERSION_${VERSION}
"${OpenCL_INCLUDE_DIR}/OpenCL/cl.h"
OPENCL_VERSION_${VERSION})
else()
CHECK_SYMBOL_EXISTS(
CL_VERSION_${VERSION}
"${OpenCL_INCLUDE_DIR}/CL/cl.h"
OPENCL_VERSION_${VERSION})
endif()
if(OPENCL_VERSION_${VERSION})
string(REPLACE "_" "." VERSION "${VERSION}")
set(OpenCL_VERSION_STRING ${VERSION} PARENT_SCOPE)
string(REGEX MATCHALL "[0-9]+" version_components "${VERSION}")
list(GET version_components 0 major_version)
list(GET version_components 1 minor_version)
set(OpenCL_VERSION_MAJOR ${major_version} PARENT_SCOPE)
set(OpenCL_VERSION_MINOR ${minor_version} PARENT_SCOPE)
break()
endif()
endforeach()
CMAKE_POP_CHECK_STATE()
endfunction()
find_path(OpenCL_INCLUDE_DIR
NAMES
CL/cl.h OpenCL/cl.h
PATHS
ENV "PROGRAMFILES(X86)"
ENV AMDAPPSDKROOT
ENV INTELOCLSDKROOT
ENV NVSDKCOMPUTE_ROOT
ENV CUDA_PATH
ENV ATISTREAMSDKROOT
PATH_SUFFIXES
include
OpenCL/common/inc
"AMD APP/include")
_FIND_OPENCL_VERSION()
if(WIN32)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
find_library(OpenCL_LIBRARY
NAMES OpenCL
PATHS
ENV "PROGRAMFILES(X86)"
ENV AMDAPPSDKROOT
ENV INTELOCLSDKROOT
ENV CUDA_PATH
ENV NVSDKCOMPUTE_ROOT
ENV ATISTREAMSDKROOT
PATH_SUFFIXES
"AMD APP/lib/x86"
lib/x86
lib/Win32
OpenCL/common/lib/Win32)
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
find_library(OpenCL_LIBRARY
NAMES OpenCL
PATHS
ENV "PROGRAMFILES(X86)"
ENV AMDAPPSDKROOT
ENV INTELOCLSDKROOT
ENV CUDA_PATH
ENV NVSDKCOMPUTE_ROOT
ENV ATISTREAMSDKROOT
PATH_SUFFIXES
"AMD APP/lib/x86_64"
lib/x86_64
lib/x64
OpenCL/common/lib/x64)
endif()
else()
find_library(OpenCL_LIBRARY
NAMES OpenCL
PATHS
ENV "PROGRAMFILES(X86)"
ENV AMDAPPSDKROOT
ENV INTELOCLSDKROOT
ENV CUDA_PATH
ENV NVSDKCOMPUTE_ROOT
ENV ATISTREAMSDKROOT
PATH_SUFFIXES
"AMD APP/lib/x86_64"
lib/x86_64
lib/x64
OpenCL/common/lib/x64)
endif()
set(OpenCL_LIBRARIES ${OpenCL_LIBRARY})
set(OpenCL_INCLUDE_DIRS ${OpenCL_INCLUDE_DIR})
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
find_package_handle_standard_args(
OpenCL
FOUND_VAR OpenCL_FOUND
REQUIRED_VARS OpenCL_LIBRARY OpenCL_INCLUDE_DIR
VERSION_VAR OpenCL_VERSION_STRING)
mark_as_advanced(
OpenCL_INCLUDE_DIR
OpenCL_LIBRARY)

View File

@@ -0,0 +1,382 @@
#.rst:
# FindPackageHandleStandardArgs
# -----------------------------
#
#
#
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(<name> ... )
#
# This function is intended to be used in FindXXX.cmake modules files.
# It handles the REQUIRED, QUIET and version-related arguments to
# find_package(). It also sets the <packagename>_FOUND variable. The
# package is considered found if all variables <var1>... listed contain
# valid results, e.g. valid filepaths.
#
# There are two modes of this function. The first argument in both
# modes is the name of the Find-module where it is called (in original
# casing).
#
# The first simple mode looks like this:
#
# ::
#
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(<name>
# (DEFAULT_MSG|"Custom failure message") <var1>...<varN> )
#
# If the variables <var1> to <varN> are all valid, then
# <UPPERCASED_NAME>_FOUND will be set to TRUE. If DEFAULT_MSG is given
# as second argument, then the function will generate itself useful
# success and error messages. You can also supply a custom error
# message for the failure case. This is not recommended.
#
# The second mode is more powerful and also supports version checking:
#
# ::
#
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME
# [FOUND_VAR <resultVar>]
# [REQUIRED_VARS <var1>...<varN>]
# [VERSION_VAR <versionvar>]
# [HANDLE_COMPONENTS]
# [CONFIG_MODE]
# [FAIL_MESSAGE "Custom failure message"] )
#
# In this mode, the name of the result-variable can be set either to
# either <UPPERCASED_NAME>_FOUND or <OriginalCase_Name>_FOUND using the
# FOUND_VAR option. Other names for the result-variable are not
# allowed. So for a Find-module named FindFooBar.cmake, the two
# possible names are FooBar_FOUND and FOOBAR_FOUND. It is recommended
# to use the original case version. If the FOUND_VAR option is not
# used, the default is <UPPERCASED_NAME>_FOUND.
#
# As in the simple mode, if <var1> through <varN> are all valid,
# <packagename>_FOUND will be set to TRUE. After REQUIRED_VARS the
# variables which are required for this package are listed. Following
# VERSION_VAR the name of the variable can be specified which holds the
# version of the package which has been found. If this is done, this
# version will be checked against the (potentially) specified required
# version used in the find_package() call. The EXACT keyword is also
# handled. The default messages include information about the required
# version and the version which has been actually found, both if the
# version is ok or not. If the package supports components, use the
# HANDLE_COMPONENTS option to enable handling them. In this case,
# find_package_handle_standard_args() will report which components have
# been found and which are missing, and the <packagename>_FOUND variable
# will be set to FALSE if any of the required components (i.e. not the
# ones listed after OPTIONAL_COMPONENTS) are missing. Use the option
# CONFIG_MODE if your FindXXX.cmake module is a wrapper for a
# find_package(... NO_MODULE) call. In this case VERSION_VAR will be
# set to <NAME>_VERSION and the macro will automatically check whether
# the Config module was found. Via FAIL_MESSAGE a custom failure
# message can be specified, if this is not used, the default message
# will be displayed.
#
# Example for mode 1:
#
# ::
#
# find_package_handle_standard_args(LibXml2 DEFAULT_MSG
# LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)
#
#
#
# LibXml2 is considered to be found, if both LIBXML2_LIBRARY and
# LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to
# TRUE. If it is not found and REQUIRED was used, it fails with
# FATAL_ERROR, independent whether QUIET was used or not. If it is
# found, success will be reported, including the content of <var1>. On
# repeated Cmake runs, the same message won't be printed again.
#
# Example for mode 2:
#
# ::
#
# find_package_handle_standard_args(LibXslt
# FOUND_VAR LibXslt_FOUND
# REQUIRED_VARS LibXslt_LIBRARIES LibXslt_INCLUDE_DIRS
# VERSION_VAR LibXslt_VERSION_STRING)
#
# In this case, LibXslt is considered to be found if the variable(s)
# listed after REQUIRED_VAR are all valid, i.e. LibXslt_LIBRARIES and
# LibXslt_INCLUDE_DIRS in this case. The result will then be stored in
# LibXslt_FOUND . Also the version of LibXslt will be checked by using
# the version contained in LibXslt_VERSION_STRING. Since no
# FAIL_MESSAGE is given, the default messages will be printed.
#
# Another example for mode 2:
#
# ::
#
# find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4)
# find_package_handle_standard_args(Automoc4 CONFIG_MODE)
#
# In this case, FindAutmoc4.cmake wraps a call to find_package(Automoc4
# NO_MODULE) and adds an additional search directory for automoc4. Here
# the result will be stored in AUTOMOC4_FOUND. The following
# FIND_PACKAGE_HANDLE_STANDARD_ARGS() call produces a proper
# success/error message.
#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageMessage.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseArguments.cmake)
# internal helper macro
macro(_FPHSA_FAILURE_MESSAGE _msg)
if (${_NAME}_FIND_REQUIRED)
message(FATAL_ERROR "${_msg}")
else ()
if (NOT ${_NAME}_FIND_QUIETLY)
message(STATUS "${_msg}")
endif ()
endif ()
endmacro()
# internal helper macro to generate the failure message when used in CONFIG_MODE:
macro(_FPHSA_HANDLE_FAILURE_CONFIG_MODE)
# <name>_CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found:
if(${_NAME}_CONFIG)
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing: ${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})")
else()
# If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version.
# List them all in the error message:
if(${_NAME}_CONSIDERED_CONFIGS)
set(configsText "")
list(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount)
math(EXPR configsCount "${configsCount} - 1")
foreach(currentConfigIndex RANGE ${configsCount})
list(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename)
list(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version)
set(configsText "${configsText} ${filename} (version ${version})\n")
endforeach()
if (${_NAME}_NOT_FOUND_MESSAGE)
set(configsText "${configsText} Reason given by package: ${${_NAME}_NOT_FOUND_MESSAGE}\n")
endif()
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:\n${configsText}")
else()
# Simple case: No Config-file was found at all:
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}")
endif()
endif()
endmacro()
function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
# set up the arguments for CMAKE_PARSE_ARGUMENTS and check whether we are in
# new extended or in the "old" mode:
set(options CONFIG_MODE HANDLE_COMPONENTS)
set(oneValueArgs FAIL_MESSAGE VERSION_VAR FOUND_VAR)
set(multiValueArgs REQUIRED_VARS)
set(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} )
list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX)
if(${INDEX} EQUAL -1)
set(FPHSA_FAIL_MESSAGE ${_FIRST_ARG})
set(FPHSA_REQUIRED_VARS ${ARGN})
set(FPHSA_VERSION_VAR)
else()
CMAKE_PARSE_ARGUMENTS(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN})
if(FPHSA_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"")
endif()
if(NOT FPHSA_FAIL_MESSAGE)
set(FPHSA_FAIL_MESSAGE "DEFAULT_MSG")
endif()
endif()
# now that we collected all arguments, process them
if("x${FPHSA_FAIL_MESSAGE}" STREQUAL "xDEFAULT_MSG")
set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}")
endif()
# In config-mode, we rely on the variable <package>_CONFIG, which is set by find_package()
# when it successfully found the config-file, including version checking:
if(FPHSA_CONFIG_MODE)
list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG)
list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS)
set(FPHSA_VERSION_VAR ${_NAME}_VERSION)
endif()
if(NOT FPHSA_REQUIRED_VARS)
message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()")
endif()
list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR)
string(TOUPPER ${_NAME} _NAME_UPPER)
string(TOLOWER ${_NAME} _NAME_LOWER)
if(FPHSA_FOUND_VAR)
if(FPHSA_FOUND_VAR MATCHES "^${_NAME}_FOUND$" OR FPHSA_FOUND_VAR MATCHES "^${_NAME_UPPER}_FOUND$")
set(_FOUND_VAR ${FPHSA_FOUND_VAR})
else()
message(FATAL_ERROR "The argument for FOUND_VAR is \"${FPHSA_FOUND_VAR}\", but only \"${_NAME}_FOUND\" and \"${_NAME_UPPER}_FOUND\" are valid names.")
endif()
else()
set(_FOUND_VAR ${_NAME_UPPER}_FOUND)
endif()
# collect all variables which were not found, so they can be printed, so the
# user knows better what went wrong (#6375)
set(MISSING_VARS "")
set(DETAILS "")
# check if all passed variables are valid
unset(${_FOUND_VAR})
foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS})
if(NOT ${_CURRENT_VAR})
set(${_FOUND_VAR} FALSE)
set(MISSING_VARS "${MISSING_VARS} ${_CURRENT_VAR}")
else()
set(DETAILS "${DETAILS}[${${_CURRENT_VAR}}]")
endif()
endforeach()
if(NOT "${${_FOUND_VAR}}" STREQUAL "FALSE")
set(${_FOUND_VAR} TRUE)
endif()
# component handling
unset(FOUND_COMPONENTS_MSG)
unset(MISSING_COMPONENTS_MSG)
if(FPHSA_HANDLE_COMPONENTS)
foreach(comp ${${_NAME}_FIND_COMPONENTS})
if(${_NAME}_${comp}_FOUND)
if(NOT DEFINED FOUND_COMPONENTS_MSG)
set(FOUND_COMPONENTS_MSG "found components: ")
endif()
set(FOUND_COMPONENTS_MSG "${FOUND_COMPONENTS_MSG} ${comp}")
else()
if(NOT DEFINED MISSING_COMPONENTS_MSG)
set(MISSING_COMPONENTS_MSG "missing components: ")
endif()
set(MISSING_COMPONENTS_MSG "${MISSING_COMPONENTS_MSG} ${comp}")
if(${_NAME}_FIND_REQUIRED_${comp})
set(${_FOUND_VAR} FALSE)
set(MISSING_VARS "${MISSING_VARS} ${comp}")
endif()
endif()
endforeach()
set(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}")
set(DETAILS "${DETAILS}[c${COMPONENT_MSG}]")
endif()
# version handling:
set(VERSION_MSG "")
set(VERSION_OK TRUE)
set(VERSION ${${FPHSA_VERSION_VAR}})
# check with DEFINED here as the requested or found version may be "0"
if (DEFINED ${_NAME}_FIND_VERSION)
if(DEFINED ${FPHSA_VERSION_VAR})
if(${_NAME}_FIND_VERSION_EXACT) # exact version required
# count the dots in the version string
string(REGEX REPLACE "[^.]" "" _VERSION_DOTS "${VERSION}")
# add one dot because there is one dot more than there are components
string(LENGTH "${_VERSION_DOTS}." _VERSION_DOTS)
if (_VERSION_DOTS GREATER ${_NAME}_FIND_VERSION_COUNT)
# Because of the C++ implementation of find_package() ${_NAME}_FIND_VERSION_COUNT
# is at most 4 here. Therefore a simple lookup table is used.
if (${_NAME}_FIND_VERSION_COUNT EQUAL 1)
set(_VERSION_REGEX "[^.]*")
elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 2)
set(_VERSION_REGEX "[^.]*\\.[^.]*")
elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 3)
set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*")
else ()
set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*\\.[^.]*")
endif ()
string(REGEX REPLACE "^(${_VERSION_REGEX})\\..*" "\\1" _VERSION_HEAD "${VERSION}")
unset(_VERSION_REGEX)
if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _VERSION_HEAD)
set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
set(VERSION_OK FALSE)
else ()
set(VERSION_MSG "(found suitable exact version \"${VERSION}\")")
endif ()
unset(_VERSION_HEAD)
else ()
if (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}")
set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
set(VERSION_OK FALSE)
else ()
set(VERSION_MSG "(found suitable exact version \"${VERSION}\")")
endif ()
endif ()
unset(_VERSION_DOTS)
else() # minimum version specified:
if ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}")
set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"")
set(VERSION_OK FALSE)
else ()
set(VERSION_MSG "(found suitable version \"${VERSION}\", minimum required is \"${${_NAME}_FIND_VERSION}\")")
endif ()
endif()
else()
# if the package was not found, but a version was given, add that to the output:
if(${_NAME}_FIND_VERSION_EXACT)
set(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")")
else()
set(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")")
endif()
endif()
else ()
if(VERSION)
set(VERSION_MSG "(found version \"${VERSION}\")")
endif()
endif ()
if(VERSION_OK)
set(DETAILS "${DETAILS}[v${VERSION}(${${_NAME}_FIND_VERSION})]")
else()
set(${_FOUND_VAR} FALSE)
endif()
# print the result:
if (${_FOUND_VAR})
FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}")
else ()
if(FPHSA_CONFIG_MODE)
_FPHSA_HANDLE_FAILURE_CONFIG_MODE()
else()
if(NOT VERSION_OK)
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (found ${${_FIRST_REQUIRED_VAR}})")
else()
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing: ${MISSING_VARS}) ${VERSION_MSG}")
endif()
endif()
endif ()
set(${_FOUND_VAR} ${${_FOUND_VAR}} PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1,57 @@
#.rst:
# FindPackageMessage
# ------------------
#
#
#
# FIND_PACKAGE_MESSAGE(<name> "message for user" "find result details")
#
# This macro is intended to be used in FindXXX.cmake modules files. It
# will print a message once for each unique find result. This is useful
# for telling the user where a package was found. The first argument
# specifies the name (XXX) of the package. The second argument
# specifies the message to display. The third argument lists details
# about the find result so that if they change the message will be
# displayed again. The macro also obeys the QUIET argument to the
# find_package command.
#
# Example:
#
# ::
#
# if(X11_FOUND)
# FIND_PACKAGE_MESSAGE(X11 "Found X11: ${X11_X11_LIB}"
# "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]")
# else()
# ...
# endif()
#=============================================================================
# Copyright 2008-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
function(FIND_PACKAGE_MESSAGE pkg msg details)
# Avoid printing a message repeatedly for the same find result.
if(NOT ${pkg}_FIND_QUIETLY)
string(REPLACE "\n" "" details "${details}")
set(DETAILS_VAR FIND_PACKAGE_MESSAGE_DETAILS_${pkg})
if(NOT "${details}" STREQUAL "${${DETAILS_VAR}}")
# The message has not yet been printed.
message(STATUS "${msg}")
# Save the find details in the cache to avoid printing the same
# message again.
set("${DETAILS_VAR}" "${details}"
CACHE INTERNAL "Details about finding ${pkg}")
endif()
endif()
endfunction()

View File

@@ -0,0 +1,13 @@
set(LIBRARY cryptopp)
include_directories(../../cryptopp)
# todo, subset
file(GLOB HEADERS "../../cryptopp/*.h")
file(GLOB SOURCE "../../cryptopp/*.cpp")
add_library(${LIBRARY} ${HEADERS} ${SOURCE})
set(CRYPTOPP_INCLUDE_DIRS "../.." "../../../" PARENT_SCOPE)
set(CRYPTOPP_LIBRARIES ${LIBRARY} PARENT_SCOPE)
set(CRYPTOPP_FOUND TRUE PARENT_SCOPE)

View File

@@ -0,0 +1,360 @@
package ethash
/*
#include "src/libethash/internal.h"
int ethashGoCallback_cgo(unsigned);
*/
import "C"
import (
"errors"
"fmt"
"io/ioutil"
"math/big"
"math/rand"
"os"
"os/user"
"path/filepath"
"runtime"
"sync"
"sync/atomic"
"time"
"unsafe"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/pow"
)
var (
minDifficulty = new(big.Int).Exp(big.NewInt(2), big.NewInt(256), big.NewInt(0))
sharedLight = new(Light)
)
const (
epochLength uint64 = 30000
cacheSizeForTesting C.uint64_t = 1024
dagSizeForTesting C.uint64_t = 1024 * 32
)
var DefaultDir = defaultDir()
func defaultDir() string {
home := os.Getenv("HOME")
if user, err := user.Current(); err == nil {
home = user.HomeDir
}
if runtime.GOOS == "windows" {
return filepath.Join(home, "AppData", "Ethash")
}
return filepath.Join(home, ".ethash")
}
// cache wraps an ethash_light_t with some metadata
// and automatic memory management.
type cache struct {
epoch uint64
test bool
gen sync.Once // ensures cache is only generated once.
ptr *C.struct_ethash_light
}
// generate creates the actual cache. it can be called from multiple
// goroutines. the first call will generate the cache, subsequent
// calls wait until it is generated.
func (cache *cache) generate() {
cache.gen.Do(func() {
started := time.Now()
seedHash := makeSeedHash(cache.epoch)
glog.V(logger.Debug).Infof("Generating cache for epoch %d (%x)", cache.epoch, seedHash)
size := C.ethash_get_cachesize(C.uint64_t(cache.epoch * epochLength))
if cache.test {
size = cacheSizeForTesting
}
cache.ptr = C.ethash_light_new_internal(size, (*C.ethash_h256_t)(unsafe.Pointer(&seedHash[0])))
runtime.SetFinalizer(cache, freeCache)
glog.V(logger.Debug).Infof("Done generating cache for epoch %d, it took %v", cache.epoch, time.Since(started))
})
}
func freeCache(cache *cache) {
C.ethash_light_delete(cache.ptr)
cache.ptr = nil
}
// Light implements the Verify half of the proof of work.
// It uses a small in-memory cache to verify the nonces
// found by Full.
type Light struct {
test bool // if set use a smaller cache size
mu sync.Mutex // protects current
current *cache // last cache which was generated.
// TODO: keep multiple caches.
}
// Verify checks whether the block's nonce is valid.
func (l *Light) Verify(block pow.Block) bool {
// TODO: do ethash_quick_verify before getCache in order
// to prevent DOS attacks.
var (
blockNum = block.NumberU64()
difficulty = block.Difficulty()
cache = l.getCache(blockNum)
dagSize = C.ethash_get_datasize(C.uint64_t(blockNum))
)
if l.test {
dagSize = dagSizeForTesting
}
if blockNum >= epochLength*2048 {
glog.V(logger.Debug).Infof("block number %d too high, limit is %d", epochLength*2048)
return false
}
// Recompute the hash using the cache.
hash := hashToH256(block.HashNoNonce())
ret := C.ethash_light_compute_internal(cache.ptr, dagSize, hash, C.uint64_t(block.Nonce()))
if !ret.success {
return false
}
// Make sure cache is live until after the C call.
// This is important because a GC might happen and execute
// the finalizer before the call completes.
_ = cache
// The actual check.
target := new(big.Int).Div(minDifficulty, difficulty)
return h256ToHash(ret.result).Big().Cmp(target) <= 0
}
func h256ToHash(in C.ethash_h256_t) common.Hash {
return *(*common.Hash)(unsafe.Pointer(&in.b))
}
func hashToH256(in common.Hash) C.ethash_h256_t {
return C.ethash_h256_t{b: *(*[32]C.uint8_t)(unsafe.Pointer(&in[0]))}
}
func (l *Light) getCache(blockNum uint64) *cache {
var c *cache
epoch := blockNum / epochLength
// Update or reuse the last cache.
l.mu.Lock()
if l.current != nil && l.current.epoch == epoch {
c = l.current
} else {
c = &cache{epoch: epoch, test: l.test}
l.current = c
}
l.mu.Unlock()
// Wait for the cache to finish generating.
c.generate()
return c
}
// dag wraps an ethash_full_t with some metadata
// and automatic memory management.
type dag struct {
epoch uint64
test bool
dir string
gen sync.Once // ensures DAG is only generated once.
ptr *C.struct_ethash_full
}
// generate creates the actual DAG. it can be called from multiple
// goroutines. the first call will generate the DAG, subsequent
// calls wait until it is generated.
func (d *dag) generate() {
d.gen.Do(func() {
var (
started = time.Now()
seedHash = makeSeedHash(d.epoch)
blockNum = C.uint64_t(d.epoch * epochLength)
cacheSize = C.ethash_get_cachesize(blockNum)
dagSize = C.ethash_get_datasize(blockNum)
)
if d.test {
cacheSize = cacheSizeForTesting
dagSize = dagSizeForTesting
}
if d.dir == "" {
d.dir = DefaultDir
}
glog.V(logger.Info).Infof("Generating DAG for epoch %d (%x)", d.epoch, seedHash)
// Generate a temporary cache.
// TODO: this could share the cache with Light
cache := C.ethash_light_new_internal(cacheSize, (*C.ethash_h256_t)(unsafe.Pointer(&seedHash[0])))
defer C.ethash_light_delete(cache)
// Generate the actual DAG.
d.ptr = C.ethash_full_new_internal(
C.CString(d.dir),
hashToH256(seedHash),
dagSize,
cache,
(C.ethash_callback_t)(unsafe.Pointer(C.ethashGoCallback_cgo)),
)
if d.ptr == nil {
panic("ethash_full_new IO or memory error")
}
runtime.SetFinalizer(d, freeDAG)
glog.V(logger.Info).Infof("Done generating DAG for epoch %d, it took %v", d.epoch, time.Since(started))
})
}
func freeDAG(h *dag) {
C.ethash_full_delete(h.ptr)
h.ptr = nil
}
//export ethashGoCallback
func ethashGoCallback(percent C.unsigned) C.int {
glog.V(logger.Info).Infof("Still generating DAG: %d%%", percent)
return 0
}
// MakeDAG pre-generates a DAG file for the given block number in the
// given directory. If dir is the empty string, the default directory
// is used.
func MakeDAG(blockNum uint64, dir string) error {
d := &dag{epoch: blockNum / epochLength, dir: dir}
if blockNum >= epochLength*2048 {
return fmt.Errorf("block number too high, limit is %d", epochLength*2048)
}
d.generate()
if d.ptr == nil {
return errors.New("failed")
}
return nil
}
// Full implements the Search half of the proof of work.
type Full struct {
Dir string // use this to specify a non-default DAG directory
test bool // if set use a smaller DAG size
turbo bool
hashRate int32
mu sync.Mutex // protects dag
current *dag // current full DAG
}
func (pow *Full) getDAG(blockNum uint64) (d *dag) {
epoch := blockNum / epochLength
pow.mu.Lock()
if pow.current != nil && pow.current.epoch == epoch {
d = pow.current
} else {
d = &dag{epoch: epoch, test: pow.test, dir: pow.Dir}
pow.current = d
}
pow.mu.Unlock()
// wait for it to finish generating.
d.generate()
return d
}
func (pow *Full) Search(block pow.Block, stop <-chan struct{}) (nonce uint64, mixDigest []byte) {
dag := pow.getDAG(block.NumberU64())
r := rand.New(rand.NewSource(time.Now().UnixNano()))
diff := block.Difficulty()
i := int64(0)
starti := i
start := time.Now().UnixNano()
previousHashrate := int32(0)
nonce = uint64(r.Int63())
hash := hashToH256(block.HashNoNonce())
target := new(big.Int).Div(minDifficulty, diff)
for {
select {
case <-stop:
atomic.AddInt32(&pow.hashRate, -previousHashrate)
return 0, nil
default:
i++
// we don't have to update hash rate on every nonce, so update after
// first nonce check and then after 2^X nonces
if i == 2 || ((i % (1 << 16)) == 0) {
elapsed := time.Now().UnixNano() - start
hashes := (float64(1e9) / float64(elapsed)) * float64(i-starti)
hashrateDiff := int32(hashes) - previousHashrate
previousHashrate = int32(hashes)
atomic.AddInt32(&pow.hashRate, hashrateDiff)
}
ret := C.ethash_full_compute(dag.ptr, hash, C.uint64_t(nonce))
result := h256ToHash(ret.result).Big()
// TODO: disagrees with the spec https://github.com/ethereum/wiki/wiki/Ethash#mining
if ret.success && result.Cmp(target) <= 0 {
mixDigest = C.GoBytes(unsafe.Pointer(&ret.mix_hash), C.int(32))
atomic.AddInt32(&pow.hashRate, -previousHashrate)
return nonce, mixDigest
}
nonce += 1
}
if !pow.turbo {
time.Sleep(20 * time.Microsecond)
}
}
}
func (pow *Full) GetHashrate() int64 {
return int64(atomic.LoadInt32(&pow.hashRate))
}
func (pow *Full) Turbo(on bool) {
// TODO: this needs to use an atomic operation.
pow.turbo = on
}
// Ethash combines block verification with Light and
// nonce searching with Full into a single proof of work.
type Ethash struct {
*Light
*Full
}
// New creates an instance of the proof of work.
// A single instance of Light is shared across all instances
// created with New.
func New() *Ethash {
return &Ethash{sharedLight, &Full{turbo: true}}
}
// NewForTesting creates a proof of work for use in unit tests.
// It uses a smaller DAG and cache size to keep test times low.
// DAG files are stored in a temporary directory.
//
// Nonces found by a testing instance are not verifiable with a
// regular-size cache.
func NewForTesting() (*Ethash, error) {
dir, err := ioutil.TempDir("", "ethash-test")
if err != nil {
return nil, err
}
return &Ethash{&Light{test: true}, &Full{Dir: dir, test: true}}, nil
}
func GetSeedHash(blockNum uint64) ([]byte, error) {
if blockNum >= epochLength*2048 {
return nil, fmt.Errorf("block number too high, limit is %d", epochLength*2048)
}
sh := makeSeedHash(blockNum / epochLength)
return sh[:], nil
}
func makeSeedHash(epoch uint64) (sh common.Hash) {
for ; epoch > 0; epoch-- {
sh = crypto.Sha3Hash(sh[:])
}
return sh
}

View File

@@ -0,0 +1,176 @@
package ethash
import (
"bytes"
"crypto/rand"
"encoding/hex"
"log"
"math/big"
"os"
"sync"
"testing"
"github.com/ethereum/go-ethereum/common"
)
func init() {
// glog.SetV(6)
// glog.SetToStderr(true)
}
type testBlock struct {
difficulty *big.Int
hashNoNonce common.Hash
nonce uint64
mixDigest common.Hash
number uint64
}
func (b *testBlock) Difficulty() *big.Int { return b.difficulty }
func (b *testBlock) HashNoNonce() common.Hash { return b.hashNoNonce }
func (b *testBlock) Nonce() uint64 { return b.nonce }
func (b *testBlock) MixDigest() common.Hash { return b.mixDigest }
func (b *testBlock) NumberU64() uint64 { return b.number }
var validBlocks = []*testBlock{
// from proof of concept nine testnet, epoch 0
{
number: 22,
hashNoNonce: common.HexToHash("372eca2454ead349c3df0ab5d00b0b706b23e49d469387db91811cee0358fc6d"),
difficulty: big.NewInt(132416),
nonce: 0x495732e0ed7a801c,
},
// from proof of concept nine testnet, epoch 1
{
number: 30001,
hashNoNonce: common.HexToHash("7e44356ee3441623bc72a683fd3708fdf75e971bbe294f33e539eedad4b92b34"),
difficulty: big.NewInt(1532671),
nonce: 0x318df1c8adef7e5e,
},
// from proof of concept nine testnet, epoch 2
{
number: 60000,
hashNoNonce: common.HexToHash("5fc898f16035bf5ac9c6d9077ae1e3d5fc1ecc3c9fd5bee8bb00e810fdacbaa0"),
difficulty: big.NewInt(2467358),
nonce: 0x50377003e5d830ca,
},
}
func TestEthashVerifyValid(t *testing.T) {
eth := New()
for i, block := range validBlocks {
if !eth.Verify(block) {
t.Errorf("block %d (%x) did not validate.", i, block.hashNoNonce[:6])
}
}
}
func TestEthashConcurrentVerify(t *testing.T) {
eth, err := NewForTesting()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(eth.Full.Dir)
block := &testBlock{difficulty: big.NewInt(10)}
nonce, _ := eth.Search(block, nil)
block.nonce = nonce
// Verify the block concurrently to check for data races.
var wg sync.WaitGroup
wg.Add(100)
for i := 0; i < 100; i++ {
go func() {
if !eth.Verify(block) {
t.Error("Block could not be verified")
}
wg.Done()
}()
}
wg.Wait()
}
func TestEthashConcurrentSearch(t *testing.T) {
eth, err := NewForTesting()
if err != nil {
t.Fatal(err)
}
eth.Turbo(true)
defer os.RemoveAll(eth.Full.Dir)
// launch n searches concurrently.
var (
block = &testBlock{difficulty: big.NewInt(35000)}
nsearch = 10
wg = new(sync.WaitGroup)
found = make(chan uint64)
stop = make(chan struct{})
)
rand.Read(block.hashNoNonce[:])
wg.Add(nsearch)
for i := 0; i < nsearch; i++ {
go func() {
nonce, _ := eth.Search(block, stop)
select {
case found <- nonce:
case <-stop:
}
wg.Done()
}()
}
// wait for one of them to find the nonce
nonce := <-found
// stop the others
close(stop)
wg.Wait()
if block.nonce = nonce; !eth.Verify(block) {
t.Error("Block could not be verified")
}
}
func TestEthashSearchAcrossEpoch(t *testing.T) {
eth, err := NewForTesting()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(eth.Full.Dir)
for i := epochLength - 40; i < epochLength+40; i++ {
block := &testBlock{number: i, difficulty: big.NewInt(90)}
rand.Read(block.hashNoNonce[:])
nonce, _ := eth.Search(block, nil)
block.nonce = nonce
if !eth.Verify(block) {
t.Fatalf("Block could not be verified")
}
}
}
func TestGetSeedHash(t *testing.T) {
seed0, err := GetSeedHash(0)
if err != nil {
t.Errorf("Failed to get seedHash for block 0: %v", err)
}
if bytes.Compare(seed0, make([]byte, 32)) != 0 {
log.Printf("seedHash for block 0 should be 0s, was: %v\n", seed0)
}
seed1, err := GetSeedHash(30000)
if err != nil {
t.Error(err)
}
// From python:
// > from pyethash import get_seedhash
// > get_seedhash(30000)
expectedSeed1, err := hex.DecodeString("290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563")
if err != nil {
t.Error(err)
}
if bytes.Compare(seed1, expectedSeed1) != 0 {
log.Printf("seedHash for block 1 should be: %v,\nactual value: %v\n", expectedSeed1, seed1)
}
}

View File

@@ -0,0 +1,35 @@
package ethash
/*
-mno-stack-arg-probe disables stack probing which avoids the function
__chkstk_ms being linked. this avoids a clash of this symbol as we also
separately link the secp256k1 lib which ends up defining this symbol
1. https://gcc.gnu.org/onlinedocs/gccint/Stack-Checking.html
2. https://groups.google.com/forum/#!msg/golang-dev/v1bziURSQ4k/88fXuJ24e-gJ
3. https://groups.google.com/forum/#!topic/golang-nuts/VNP6Mwz_B6o
*/
/*
#cgo CFLAGS: -std=gnu99 -Wall
#cgo windows CFLAGS: -mno-stack-arg-probe
#cgo LDFLAGS: -lm
#include "src/libethash/internal.c"
#include "src/libethash/sha3.c"
#include "src/libethash/io.c"
#ifdef _WIN32
# include "src/libethash/io_win32.c"
# include "src/libethash/mmap_win32.c"
#else
# include "src/libethash/io_posix.c"
#endif
// 'gateway function' for calling back into go.
extern int ethashGoCallback(unsigned);
int ethashGoCallback_cgo(unsigned percent) { return ethashGoCallback(percent); }
*/
import "C"

View File

@@ -0,0 +1,22 @@
The MIT License (MIT)
Copyright (c) 2015 Tim Hughes
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,190 @@
// ethash.js
// Tim Hughes <tim@twistedfury.com>
// Revision 19
/*jslint node: true, shadow:true */
"use strict";
var Keccak = require('./keccak');
var util = require('./util');
// 32-bit unsigned modulo
function mod32(x, n)
{
return (x>>>0) % (n>>>0);
}
function fnv(x, y)
{
// js integer multiply by 0x01000193 will lose precision
return ((x*0x01000000 | 0) + (x*0x193 | 0)) ^ y;
}
function computeCache(params, seedWords)
{
var cache = new Uint32Array(params.cacheSize >> 2);
var cacheNodeCount = params.cacheSize >> 6;
// Initialize cache
var keccak = new Keccak();
keccak.digestWords(cache, 0, 16, seedWords, 0, seedWords.length);
for (var n = 1; n < cacheNodeCount; ++n)
{
keccak.digestWords(cache, n<<4, 16, cache, (n-1)<<4, 16);
}
var tmp = new Uint32Array(16);
// Do randmemohash passes
for (var r = 0; r < params.cacheRounds; ++r)
{
for (var n = 0; n < cacheNodeCount; ++n)
{
var p0 = mod32(n + cacheNodeCount - 1, cacheNodeCount) << 4;
var p1 = mod32(cache[n<<4|0], cacheNodeCount) << 4;
for (var w = 0; w < 16; w=(w+1)|0)
{
tmp[w] = cache[p0 | w] ^ cache[p1 | w];
}
keccak.digestWords(cache, n<<4, 16, tmp, 0, tmp.length);
}
}
return cache;
}
function computeDagNode(o_node, params, cache, keccak, nodeIndex)
{
var cacheNodeCount = params.cacheSize >> 6;
var dagParents = params.dagParents;
var c = (nodeIndex % cacheNodeCount) << 4;
var mix = o_node;
for (var w = 0; w < 16; ++w)
{
mix[w] = cache[c|w];
}
mix[0] ^= nodeIndex;
keccak.digestWords(mix, 0, 16, mix, 0, 16);
for (var p = 0; p < dagParents; ++p)
{
// compute cache node (word) index
c = mod32(fnv(nodeIndex ^ p, mix[p&15]), cacheNodeCount) << 4;
for (var w = 0; w < 16; ++w)
{
mix[w] = fnv(mix[w], cache[c|w]);
}
}
keccak.digestWords(mix, 0, 16, mix, 0, 16);
}
function computeHashInner(mix, params, cache, keccak, tempNode)
{
var mixParents = params.mixParents|0;
var mixWordCount = params.mixSize >> 2;
var mixNodeCount = mixWordCount >> 4;
var dagPageCount = (params.dagSize / params.mixSize) >> 0;
// grab initial first word
var s0 = mix[0];
// initialise mix from initial 64 bytes
for (var w = 16; w < mixWordCount; ++w)
{
mix[w] = mix[w & 15];
}
for (var a = 0; a < mixParents; ++a)
{
var p = mod32(fnv(s0 ^ a, mix[a & (mixWordCount-1)]), dagPageCount);
var d = (p * mixNodeCount)|0;
for (var n = 0, w = 0; n < mixNodeCount; ++n, w += 16)
{
computeDagNode(tempNode, params, cache, keccak, (d + n)|0);
for (var v = 0; v < 16; ++v)
{
mix[w|v] = fnv(mix[w|v], tempNode[v]);
}
}
}
}
function convertSeed(seed)
{
// todo, reconcile with spec, byte ordering?
// todo, big-endian conversion
var newSeed = util.toWords(seed);
if (newSeed === null)
throw Error("Invalid seed '" + seed + "'");
return newSeed;
}
exports.defaultParams = function()
{
return {
cacheSize: 1048384,
cacheRounds: 3,
dagSize: 1073739904,
dagParents: 256,
mixSize: 128,
mixParents: 64,
};
};
exports.Ethash = function(params, seed)
{
// precompute cache and related values
seed = convertSeed(seed);
var cache = computeCache(params, seed);
// preallocate buffers/etc
var initBuf = new ArrayBuffer(96);
var initBytes = new Uint8Array(initBuf);
var initWords = new Uint32Array(initBuf);
var mixWords = new Uint32Array(params.mixSize / 4);
var tempNode = new Uint32Array(16);
var keccak = new Keccak();
var retWords = new Uint32Array(8);
var retBytes = new Uint8Array(retWords.buffer); // supposedly read-only
this.hash = function(header, nonce)
{
// compute initial hash
initBytes.set(header, 0);
initBytes.set(nonce, 32);
keccak.digestWords(initWords, 0, 16, initWords, 0, 8 + nonce.length/4);
// compute mix
for (var i = 0; i != 16; ++i)
{
mixWords[i] = initWords[i];
}
computeHashInner(mixWords, params, cache, keccak, tempNode);
// compress mix and append to initWords
for (var i = 0; i != mixWords.length; i += 4)
{
initWords[16 + i/4] = fnv(fnv(fnv(mixWords[i], mixWords[i+1]), mixWords[i+2]), mixWords[i+3]);
}
// final Keccak hashes
keccak.digestWords(retWords, 0, 8, initWords, 0, 24); // Keccak-256(s + cmix)
return retBytes;
};
this.cacheDigest = function()
{
return keccak.digest(32, new Uint8Array(cache.buffer));
};
};

View File

@@ -0,0 +1,404 @@
// keccak.js
// Tim Hughes <tim@twistedfury.com>
// derived from Markku-Juhani O. Saarinen's C code (http://keccak.noekeon.org/readable_code.html)
/*jslint node: true, shadow:true */
"use strict";
var Keccak_f1600_RC = new Uint32Array([
0x00000001, 0x00000000,
0x00008082, 0x00000000,
0x0000808a, 0x80000000,
0x80008000, 0x80000000,
0x0000808b, 0x00000000,
0x80000001, 0x00000000,
0x80008081, 0x80000000,
0x00008009, 0x80000000,
0x0000008a, 0x00000000,
0x00000088, 0x00000000,
0x80008009, 0x00000000,
0x8000000a, 0x00000000,
0x8000808b, 0x00000000,
0x0000008b, 0x80000000,
0x00008089, 0x80000000,
0x00008003, 0x80000000,
0x00008002, 0x80000000,
0x00000080, 0x80000000,
0x0000800a, 0x00000000,
0x8000000a, 0x80000000,
0x80008081, 0x80000000,
0x00008080, 0x80000000,
0x80000001, 0x00000000,
0x80008008, 0x80000000
]);
function keccak_f1600(outState, outOffset, outSize, inState)
{
// todo, handle big endian loads
var a00l = inState[0]|0;
var a00h = inState[1]|0;
var a01l = inState[2]|0;
var a01h = inState[3]|0;
var a02l = inState[4]|0;
var a02h = inState[5]|0;
var a03l = inState[6]|0;
var a03h = inState[7]|0;
var a04l = inState[8]|0;
var a04h = inState[9]|0;
var a05l = inState[10]|0;
var a05h = inState[11]|0;
var a06l = inState[12]|0;
var a06h = inState[13]|0;
var a07l = inState[14]|0;
var a07h = inState[15]|0;
var a08l = inState[16]|0;
var a08h = inState[17]|0;
var a09l = inState[18]|0;
var a09h = inState[19]|0;
var a10l = inState[20]|0;
var a10h = inState[21]|0;
var a11l = inState[22]|0;
var a11h = inState[23]|0;
var a12l = inState[24]|0;
var a12h = inState[25]|0;
var a13l = inState[26]|0;
var a13h = inState[27]|0;
var a14l = inState[28]|0;
var a14h = inState[29]|0;
var a15l = inState[30]|0;
var a15h = inState[31]|0;
var a16l = inState[32]|0;
var a16h = inState[33]|0;
var a17l = inState[34]|0;
var a17h = inState[35]|0;
var a18l = inState[36]|0;
var a18h = inState[37]|0;
var a19l = inState[38]|0;
var a19h = inState[39]|0;
var a20l = inState[40]|0;
var a20h = inState[41]|0;
var a21l = inState[42]|0;
var a21h = inState[43]|0;
var a22l = inState[44]|0;
var a22h = inState[45]|0;
var a23l = inState[46]|0;
var a23h = inState[47]|0;
var a24l = inState[48]|0;
var a24h = inState[49]|0;
var b00l, b00h, b01l, b01h, b02l, b02h, b03l, b03h, b04l, b04h;
var b05l, b05h, b06l, b06h, b07l, b07h, b08l, b08h, b09l, b09h;
var b10l, b10h, b11l, b11h, b12l, b12h, b13l, b13h, b14l, b14h;
var b15l, b15h, b16l, b16h, b17l, b17h, b18l, b18h, b19l, b19h;
var b20l, b20h, b21l, b21h, b22l, b22h, b23l, b23h, b24l, b24h;
var tl, nl;
var th, nh;
for (var r = 0; r < 48; r = (r+2)|0)
{
// Theta
b00l = a00l ^ a05l ^ a10l ^ a15l ^ a20l;
b00h = a00h ^ a05h ^ a10h ^ a15h ^ a20h;
b01l = a01l ^ a06l ^ a11l ^ a16l ^ a21l;
b01h = a01h ^ a06h ^ a11h ^ a16h ^ a21h;
b02l = a02l ^ a07l ^ a12l ^ a17l ^ a22l;
b02h = a02h ^ a07h ^ a12h ^ a17h ^ a22h;
b03l = a03l ^ a08l ^ a13l ^ a18l ^ a23l;
b03h = a03h ^ a08h ^ a13h ^ a18h ^ a23h;
b04l = a04l ^ a09l ^ a14l ^ a19l ^ a24l;
b04h = a04h ^ a09h ^ a14h ^ a19h ^ a24h;
tl = b04l ^ (b01l << 1 | b01h >>> 31);
th = b04h ^ (b01h << 1 | b01l >>> 31);
a00l ^= tl;
a00h ^= th;
a05l ^= tl;
a05h ^= th;
a10l ^= tl;
a10h ^= th;
a15l ^= tl;
a15h ^= th;
a20l ^= tl;
a20h ^= th;
tl = b00l ^ (b02l << 1 | b02h >>> 31);
th = b00h ^ (b02h << 1 | b02l >>> 31);
a01l ^= tl;
a01h ^= th;
a06l ^= tl;
a06h ^= th;
a11l ^= tl;
a11h ^= th;
a16l ^= tl;
a16h ^= th;
a21l ^= tl;
a21h ^= th;
tl = b01l ^ (b03l << 1 | b03h >>> 31);
th = b01h ^ (b03h << 1 | b03l >>> 31);
a02l ^= tl;
a02h ^= th;
a07l ^= tl;
a07h ^= th;
a12l ^= tl;
a12h ^= th;
a17l ^= tl;
a17h ^= th;
a22l ^= tl;
a22h ^= th;
tl = b02l ^ (b04l << 1 | b04h >>> 31);
th = b02h ^ (b04h << 1 | b04l >>> 31);
a03l ^= tl;
a03h ^= th;
a08l ^= tl;
a08h ^= th;
a13l ^= tl;
a13h ^= th;
a18l ^= tl;
a18h ^= th;
a23l ^= tl;
a23h ^= th;
tl = b03l ^ (b00l << 1 | b00h >>> 31);
th = b03h ^ (b00h << 1 | b00l >>> 31);
a04l ^= tl;
a04h ^= th;
a09l ^= tl;
a09h ^= th;
a14l ^= tl;
a14h ^= th;
a19l ^= tl;
a19h ^= th;
a24l ^= tl;
a24h ^= th;
// Rho Pi
b00l = a00l;
b00h = a00h;
b10l = a01l << 1 | a01h >>> 31;
b10h = a01h << 1 | a01l >>> 31;
b07l = a10l << 3 | a10h >>> 29;
b07h = a10h << 3 | a10l >>> 29;
b11l = a07l << 6 | a07h >>> 26;
b11h = a07h << 6 | a07l >>> 26;
b17l = a11l << 10 | a11h >>> 22;
b17h = a11h << 10 | a11l >>> 22;
b18l = a17l << 15 | a17h >>> 17;
b18h = a17h << 15 | a17l >>> 17;
b03l = a18l << 21 | a18h >>> 11;
b03h = a18h << 21 | a18l >>> 11;
b05l = a03l << 28 | a03h >>> 4;
b05h = a03h << 28 | a03l >>> 4;
b16l = a05h << 4 | a05l >>> 28;
b16h = a05l << 4 | a05h >>> 28;
b08l = a16h << 13 | a16l >>> 19;
b08h = a16l << 13 | a16h >>> 19;
b21l = a08h << 23 | a08l >>> 9;
b21h = a08l << 23 | a08h >>> 9;
b24l = a21l << 2 | a21h >>> 30;
b24h = a21h << 2 | a21l >>> 30;
b04l = a24l << 14 | a24h >>> 18;
b04h = a24h << 14 | a24l >>> 18;
b15l = a04l << 27 | a04h >>> 5;
b15h = a04h << 27 | a04l >>> 5;
b23l = a15h << 9 | a15l >>> 23;
b23h = a15l << 9 | a15h >>> 23;
b19l = a23h << 24 | a23l >>> 8;
b19h = a23l << 24 | a23h >>> 8;
b13l = a19l << 8 | a19h >>> 24;
b13h = a19h << 8 | a19l >>> 24;
b12l = a13l << 25 | a13h >>> 7;
b12h = a13h << 25 | a13l >>> 7;
b02l = a12h << 11 | a12l >>> 21;
b02h = a12l << 11 | a12h >>> 21;
b20l = a02h << 30 | a02l >>> 2;
b20h = a02l << 30 | a02h >>> 2;
b14l = a20l << 18 | a20h >>> 14;
b14h = a20h << 18 | a20l >>> 14;
b22l = a14h << 7 | a14l >>> 25;
b22h = a14l << 7 | a14h >>> 25;
b09l = a22h << 29 | a22l >>> 3;
b09h = a22l << 29 | a22h >>> 3;
b06l = a09l << 20 | a09h >>> 12;
b06h = a09h << 20 | a09l >>> 12;
b01l = a06h << 12 | a06l >>> 20;
b01h = a06l << 12 | a06h >>> 20;
// Chi
a00l = b00l ^ ~b01l & b02l;
a00h = b00h ^ ~b01h & b02h;
a01l = b01l ^ ~b02l & b03l;
a01h = b01h ^ ~b02h & b03h;
a02l = b02l ^ ~b03l & b04l;
a02h = b02h ^ ~b03h & b04h;
a03l = b03l ^ ~b04l & b00l;
a03h = b03h ^ ~b04h & b00h;
a04l = b04l ^ ~b00l & b01l;
a04h = b04h ^ ~b00h & b01h;
a05l = b05l ^ ~b06l & b07l;
a05h = b05h ^ ~b06h & b07h;
a06l = b06l ^ ~b07l & b08l;
a06h = b06h ^ ~b07h & b08h;
a07l = b07l ^ ~b08l & b09l;
a07h = b07h ^ ~b08h & b09h;
a08l = b08l ^ ~b09l & b05l;
a08h = b08h ^ ~b09h & b05h;
a09l = b09l ^ ~b05l & b06l;
a09h = b09h ^ ~b05h & b06h;
a10l = b10l ^ ~b11l & b12l;
a10h = b10h ^ ~b11h & b12h;
a11l = b11l ^ ~b12l & b13l;
a11h = b11h ^ ~b12h & b13h;
a12l = b12l ^ ~b13l & b14l;
a12h = b12h ^ ~b13h & b14h;
a13l = b13l ^ ~b14l & b10l;
a13h = b13h ^ ~b14h & b10h;
a14l = b14l ^ ~b10l & b11l;
a14h = b14h ^ ~b10h & b11h;
a15l = b15l ^ ~b16l & b17l;
a15h = b15h ^ ~b16h & b17h;
a16l = b16l ^ ~b17l & b18l;
a16h = b16h ^ ~b17h & b18h;
a17l = b17l ^ ~b18l & b19l;
a17h = b17h ^ ~b18h & b19h;
a18l = b18l ^ ~b19l & b15l;
a18h = b18h ^ ~b19h & b15h;
a19l = b19l ^ ~b15l & b16l;
a19h = b19h ^ ~b15h & b16h;
a20l = b20l ^ ~b21l & b22l;
a20h = b20h ^ ~b21h & b22h;
a21l = b21l ^ ~b22l & b23l;
a21h = b21h ^ ~b22h & b23h;
a22l = b22l ^ ~b23l & b24l;
a22h = b22h ^ ~b23h & b24h;
a23l = b23l ^ ~b24l & b20l;
a23h = b23h ^ ~b24h & b20h;
a24l = b24l ^ ~b20l & b21l;
a24h = b24h ^ ~b20h & b21h;
// Iota
a00l ^= Keccak_f1600_RC[r|0];
a00h ^= Keccak_f1600_RC[r|1];
}
// todo, handle big-endian stores
outState[outOffset|0] = a00l;
outState[outOffset|1] = a00h;
outState[outOffset|2] = a01l;
outState[outOffset|3] = a01h;
outState[outOffset|4] = a02l;
outState[outOffset|5] = a02h;
outState[outOffset|6] = a03l;
outState[outOffset|7] = a03h;
if (outSize == 8)
return;
outState[outOffset|8] = a04l;
outState[outOffset|9] = a04h;
outState[outOffset|10] = a05l;
outState[outOffset|11] = a05h;
outState[outOffset|12] = a06l;
outState[outOffset|13] = a06h;
outState[outOffset|14] = a07l;
outState[outOffset|15] = a07h;
if (outSize == 16)
return;
outState[outOffset|16] = a08l;
outState[outOffset|17] = a08h;
outState[outOffset|18] = a09l;
outState[outOffset|19] = a09h;
outState[outOffset|20] = a10l;
outState[outOffset|21] = a10h;
outState[outOffset|22] = a11l;
outState[outOffset|23] = a11h;
outState[outOffset|24] = a12l;
outState[outOffset|25] = a12h;
outState[outOffset|26] = a13l;
outState[outOffset|27] = a13h;
outState[outOffset|28] = a14l;
outState[outOffset|29] = a14h;
outState[outOffset|30] = a15l;
outState[outOffset|31] = a15h;
outState[outOffset|32] = a16l;
outState[outOffset|33] = a16h;
outState[outOffset|34] = a17l;
outState[outOffset|35] = a17h;
outState[outOffset|36] = a18l;
outState[outOffset|37] = a18h;
outState[outOffset|38] = a19l;
outState[outOffset|39] = a19h;
outState[outOffset|40] = a20l;
outState[outOffset|41] = a20h;
outState[outOffset|42] = a21l;
outState[outOffset|43] = a21h;
outState[outOffset|44] = a22l;
outState[outOffset|45] = a22h;
outState[outOffset|46] = a23l;
outState[outOffset|47] = a23h;
outState[outOffset|48] = a24l;
outState[outOffset|49] = a24h;
}
var Keccak = function()
{
var stateBuf = new ArrayBuffer(200);
var stateBytes = new Uint8Array(stateBuf);
var stateWords = new Uint32Array(stateBuf);
this.digest = function(oSize, iBytes)
{
for (var i = 0; i < 50; ++i)
{
stateWords[i] = 0;
}
var r = 200 - oSize*2;
var iLength = iBytes.length;
var iOffset = 0;
for ( ; ;)
{
var len = iLength < r ? iLength : r;
for (i = 0; i < len; ++i, ++iOffset)
{
stateBytes[i] ^= iBytes[iOffset];
}
if (iLength < r)
break;
iLength -= len;
keccak_f1600(stateWords, 0, 50, stateWords);
}
stateBytes[iLength] ^= 1;
stateBytes[r-1] ^= 0x80;
keccak_f1600(stateWords, 0, 50, stateWords);
return stateBytes.subarray(0, oSize);
};
this.digestWords = function(oWords, oOffset, oLength, iWords, iOffset, iLength)
{
for (var i = 0; i < 50; ++i)
{
stateWords[i] = 0;
}
var r = 50 - oLength*2;
for (; ; )
{
var len = iLength < r ? iLength : r;
for (i = 0; i < len; ++i, ++iOffset)
{
stateWords[i] ^= iWords[iOffset];
}
if (iLength < r)
break;
iLength -= len;
keccak_f1600(stateWords, 0, 50, stateWords);
}
stateBytes[iLength<<2] ^= 1;
stateBytes[(r<<2) - 1] ^= 0x80;
keccak_f1600(oWords, oOffset, oLength, stateWords);
};
};
module.exports = Keccak;

View File

@@ -0,0 +1,201 @@
#!/usr/bin/env node
// makekeccak.js
// Tim Hughes <tim@twistedfury.com>
/*jslint node: true, shadow:true */
"use strict";
var Keccak_f1600_Rho = [
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14,
27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44
];
var Keccak_f1600_Pi= [
10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4,
15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1
];
var Keccak_f1600_RC = [
0x00000001, 0x00000000,
0x00008082, 0x00000000,
0x0000808a, 0x80000000,
0x80008000, 0x80000000,
0x0000808b, 0x00000000,
0x80000001, 0x00000000,
0x80008081, 0x80000000,
0x00008009, 0x80000000,
0x0000008a, 0x00000000,
0x00000088, 0x00000000,
0x80008009, 0x00000000,
0x8000000a, 0x00000000,
0x8000808b, 0x00000000,
0x0000008b, 0x80000000,
0x00008089, 0x80000000,
0x00008003, 0x80000000,
0x00008002, 0x80000000,
0x00000080, 0x80000000,
0x0000800a, 0x00000000,
0x8000000a, 0x80000000,
0x80008081, 0x80000000,
0x00008080, 0x80000000,
0x80000001, 0x00000000,
0x80008008, 0x80000000,
];
function makeRotLow(lo, hi, n)
{
if (n === 0 || n === 32) throw Error("unsupported");
if ((n & 0x20) !== 0)
{
n &= ~0x20;
var t = hi;
hi = lo;
lo = t;
}
var hir = hi + " >>> " + (32 - n);
var los = lo + " << " + n;
return los + " | " + hir;
}
function makeRotHigh(lo, hi, n)
{
if (n === 0 || n === 32) throw Error("unsupported");
if ((n & 0x20) !== 0)
{
n &= ~0x20;
var t = hi;
hi = lo;
lo = t;
}
var his = hi + " << " + n;
var lor = lo + " >>> " + (32 - n);
return his + " | " + lor;
}
function makeKeccak_f1600()
{
var format = function(n)
{
return n < 10 ? "0"+n : ""+n;
};
var a = function(n, w)
{
return "a" + format(n) + (w !== 0?'h':'l');
};
var b = function(n, w)
{
return "b" + format(n) + (w !== 0?'h':'l');
};
var str = "";
str += "function keccak_f1600(outState, outOffset, outSize, inState)\n";
str += "{\n";
for (var i = 0; i < 25; ++i)
{
for (var w = 0; w <= 1; ++w)
{
str += "\tvar " + a(i,w) + " = inState["+(i<<1|w)+"]|0;\n";
}
}
for (var j = 0; j < 5; ++j)
{
str += "\tvar ";
for (var i = 0; i < 5; ++i)
{
if (i !== 0)
str += ", ";
str += b(j*5+i,0) + ", " + b(j*5+i,1);
}
str += ";\n";
}
str += "\tvar tl, th;\n";
str += "\n";
str += "\tfor (var r = 0; r < 48; r = (r+2)|0)\n";
str += "\t{\n";
// Theta
str += "\t\t// Theta\n";
for (var i = 0; i < 5; ++i)
{
for (var w = 0; w <= 1; ++w)
{
str += "\t\t" + b(i,w) + " = " + a(i,w) + " ^ " + a(i+5,w) + " ^ " + a(i+10,w) + " ^ " + a(i+15,w) + " ^ " + a(i+20,w) + ";\n";
}
}
for (var i = 0; i < 5; ++i)
{
var i4 = (i + 4) % 5;
var i1 = (i + 1) % 5;
str += "\t\ttl = " + b(i4,0) + " ^ (" + b(i1,0) + " << 1 | " + b(i1,1) + " >>> 31);\n";
str += "\t\tth = " + b(i4,1) + " ^ (" + b(i1,1) + " << 1 | " + b(i1,0) + " >>> 31);\n";
for (var j = 0; j < 25; j = (j+5)|0)
{
str += "\t\t" + a((j+i),0) + " ^= tl;\n";
str += "\t\t" + a((j+i),1) + " ^= th;\n";
}
}
// Rho Pi
str += "\n\t\t// Rho Pi\n";
for (var w = 0; w <= 1; ++w)
{
str += "\t\t" + b(0,w) + " = " + a(0,w) + ";\n";
}
var opi = 1;
for (var i = 0; i < 24; ++i)
{
var pi = Keccak_f1600_Pi[i];
str += "\t\t" + b(pi,0) + " = " + makeRotLow(a(opi,0), a(opi,1), Keccak_f1600_Rho[i]) + ";\n";
str += "\t\t" + b(pi,1) + " = " + makeRotHigh(a(opi,0), a(opi,1), Keccak_f1600_Rho[i]) + ";\n";
opi = pi;
}
// Chi
str += "\n\t\t// Chi\n";
for (var j = 0; j < 25; j += 5)
{
for (var i = 0; i < 5; ++i)
{
for (var w = 0; w <= 1; ++w)
{
str += "\t\t" + a(j+i,w) + " = " + b(j+i,w) + " ^ ~" + b(j+(i+1)%5,w) + " & " + b(j+(i+2)%5,w) + ";\n";
}
}
}
// Iota
str += "\n\t\t// Iota\n";
for (var w = 0; w <= 1; ++w)
{
str += "\t\t" + a(0,w) + " ^= Keccak_f1600_RC[r|" + w + "];\n";
}
str += "\t}\n";
for (var i = 0; i < 25; ++i)
{
if (i == 4 || i == 8)
{
str += "\tif (outSize == " + i*2 + ")\n\t\treturn;\n";
}
for (var w = 0; w <= 1; ++w)
{
str += "\toutState[outOffset|"+(i<<1|w)+"] = " + a(i,w) + ";\n";
}
}
str += "}\n";
return str;
}
console.log(makeKeccak_f1600());

View File

@@ -0,0 +1,53 @@
// test.js
// Tim Hughes <tim@twistedfury.com>
/*jslint node: true, shadow:true */
"use strict";
var ethash = require('./ethash');
var util = require('./util');
var Keccak = require('./keccak');
// sanity check hash functions
var src = util.stringToBytes("");
if (util.bytesToHexString(new Keccak().digest(32, src)) != "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470") throw Error("Keccak-256 failed");
if (util.bytesToHexString(new Keccak().digest(64, src)) != "0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e") throw Error("Keccak-512 failed");
src = new Uint32Array(src.buffer);
var dst = new Uint32Array(8);
new Keccak().digestWords(dst, 0, dst.length, src, 0, src.length);
if (util.wordsToHexString(dst) != "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470") throw Error("Keccak-256 Fast failed");
var dst = new Uint32Array(16);
new Keccak().digestWords(dst, 0, dst.length, src, 0, src.length);
if (util.wordsToHexString(dst) != "0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e") throw Error("Keccak-512 Fast failed");
// init params
var ethashParams = ethash.defaultParams();
//ethashParams.cacheRounds = 0;
// create hasher
var seed = util.hexStringToBytes("9410b944535a83d9adf6bbdcc80e051f30676173c16ca0d32d6f1263fc246466")
var startTime = new Date().getTime();
var hasher = new ethash.Ethash(ethashParams, seed);
console.log('Ethash startup took: '+(new Date().getTime() - startTime) + "ms");
console.log('Ethash cache hash: ' + util.bytesToHexString(hasher.cacheDigest()));
var testHexString = "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470";
if (testHexString != util.bytesToHexString(util.hexStringToBytes(testHexString)))
throw Error("bytesToHexString or hexStringToBytes broken");
var header = util.hexStringToBytes("c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470");
var nonce = util.hexStringToBytes("0000000000000000");
var hash;
startTime = new Date().getTime();
var trials = 10;
for (var i = 0; i < trials; ++i)
{
hash = hasher.hash(header, nonce);
}
console.log("Light client hashes averaged: " + (new Date().getTime() - startTime)/trials + "ms");
console.log("Hash = " + util.bytesToHexString(hash));

View File

@@ -0,0 +1,100 @@
// util.js
// Tim Hughes <tim@twistedfury.com>
/*jslint node: true, shadow:true */
"use strict";
function nibbleToChar(nibble)
{
return String.fromCharCode((nibble < 10 ? 48 : 87) + nibble);
}
function charToNibble(chr)
{
if (chr >= 48 && chr <= 57)
{
return chr - 48;
}
if (chr >= 65 && chr <= 70)
{
return chr - 65 + 10;
}
if (chr >= 97 && chr <= 102)
{
return chr - 97 + 10;
}
return 0;
}
function stringToBytes(str)
{
var bytes = new Uint8Array(str.length);
for (var i = 0; i != str.length; ++i)
{
bytes[i] = str.charCodeAt(i);
}
return bytes;
}
function hexStringToBytes(str)
{
var bytes = new Uint8Array(str.length>>>1);
for (var i = 0; i != bytes.length; ++i)
{
bytes[i] = charToNibble(str.charCodeAt(i<<1 | 0)) << 4;
bytes[i] |= charToNibble(str.charCodeAt(i<<1 | 1));
}
return bytes;
}
function bytesToHexString(bytes)
{
var str = "";
for (var i = 0; i != bytes.length; ++i)
{
str += nibbleToChar(bytes[i] >>> 4);
str += nibbleToChar(bytes[i] & 0xf);
}
return str;
}
function wordsToHexString(words)
{
return bytesToHexString(new Uint8Array(words.buffer));
}
function uint32ToHexString(num)
{
var buf = new Uint8Array(4);
buf[0] = (num >> 24) & 0xff;
buf[1] = (num >> 16) & 0xff;
buf[2] = (num >> 8) & 0xff;
buf[3] = (num >> 0) & 0xff;
return bytesToHexString(buf);
}
function toWords(input)
{
if (input instanceof Uint32Array)
{
return input;
}
else if (input instanceof Uint8Array)
{
var tmp = new Uint8Array((input.length + 3) & ~3);
tmp.set(input);
return new Uint32Array(tmp.buffer);
}
else if (typeof input === typeof "")
{
return toWords(stringToBytes(input));
}
return null;
}
exports.stringToBytes = stringToBytes;
exports.hexStringToBytes = hexStringToBytes;
exports.bytesToHexString = bytesToHexString;
exports.wordsToHexString = wordsToHexString;
exports.uint32ToHexString = uint32ToHexString;
exports.toWords = toWords;

View File

@@ -0,0 +1,47 @@
#!/usr/bin/env python
import os
from distutils.core import setup, Extension
sources = [
'src/python/core.c',
'src/libethash/io.c',
'src/libethash/internal.c',
'src/libethash/sha3.c']
if os.name == 'nt':
sources += [
'src/libethash/util_win32.c',
'src/libethash/io_win32.c',
'src/libethash/mmap_win32.c',
]
else:
sources += [
'src/libethash/io_posix.c'
]
depends = [
'src/libethash/ethash.h',
'src/libethash/compiler.h',
'src/libethash/data_sizes.h',
'src/libethash/endian.h',
'src/libethash/ethash.h',
'src/libethash/io.h',
'src/libethash/fnv.h',
'src/libethash/internal.h',
'src/libethash/sha3.h',
'src/libethash/util.h',
]
pyethash = Extension('pyethash',
sources=sources,
depends=depends,
extra_compile_args=["-Isrc/", "-std=gnu99", "-Wall"])
setup(
name='pyethash',
author="Matthew Wampler-Doty",
author_email="matthew.wampler.doty@gmail.com",
license='GPL',
version='0.1.23',
url='https://github.com/ethereum/ethash',
download_url='https://github.com/ethereum/ethash/tarball/v23',
description=('Python wrappers for ethash, the ethereum proof of work'
'hashing function'),
ext_modules=[pyethash],
)

View File

@@ -0,0 +1,58 @@
include_directories(..)
set(CMAKE_BUILD_TYPE Release)
if (MSVC)
add_definitions("/openmp")
endif()
# enable C++11, should probably be a bit more specific about compiler
if (NOT MSVC)
SET(CMAKE_CXX_FLAGS "-std=c++11")
endif()
if (NOT MPI_FOUND)
find_package(MPI)
endif()
if (NOT CRYPTOPP_FOUND)
find_package(CryptoPP 5.6.2)
endif()
if (CRYPTOPP_FOUND)
add_definitions(-DWITH_CRYPTOPP)
find_package (Threads REQUIRED)
endif()
if (NOT OpenCL_FOUND)
find_package(OpenCL)
endif()
if (OpenCL_FOUND)
add_definitions(-DWITH_OPENCL)
include_directories(${OpenCL_INCLUDE_DIRS})
list(APPEND FILES ethash_cl_miner.cpp ethash_cl_miner.h)
endif()
if (MPI_FOUND)
include_directories(${MPI_INCLUDE_PATH})
add_executable (Benchmark_MPI_FULL benchmark.cpp)
target_link_libraries (Benchmark_MPI_FULL ${ETHHASH_LIBS} ${MPI_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
SET_TARGET_PROPERTIES(Benchmark_MPI_FULL PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} ${MPI_COMPILE_FLAGS} -DFULL -DMPI")
add_executable (Benchmark_MPI_LIGHT benchmark.cpp)
target_link_libraries (Benchmark_MPI_LIGHT ${ETHHASH_LIBS} ${MPI_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
SET_TARGET_PROPERTIES(Benchmark_MPI_LIGHT PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} ${MPI_COMPILE_FLAGS} -DMPI")
endif()
add_executable (Benchmark_FULL benchmark.cpp)
target_link_libraries (Benchmark_FULL ${ETHHASH_LIBS} ${CMAKE_THREAD_LIBS_INIT})
SET_TARGET_PROPERTIES(Benchmark_FULL PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -DFULL")
add_executable (Benchmark_LIGHT benchmark.cpp)
target_link_libraries (Benchmark_LIGHT ${ETHHASH_LIBS} ${CMAKE_THREAD_LIBS_INIT})
if (OpenCL_FOUND)
add_executable (Benchmark_CL benchmark.cpp)
target_link_libraries (Benchmark_CL ${ETHHASH_LIBS} ethash-cl ${CMAKE_THREAD_LIBS_INIT})
SET_TARGET_PROPERTIES(Benchmark_CL PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -DOPENCL")
endif()

View File

@@ -0,0 +1,278 @@
/*
This file is part of cpp-ethereum.
cpp-ethereum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
cpp-ethereum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file benchmark.cpp
* @author Tim Hughes <tim@twistedfury.com>
* @date 2015
*/
#include <stdio.h>
#include <stdlib.h>
#include <chrono>
#include <libethash/ethash.h>
#include <libethash/util.h>
#ifdef OPENCL
#include <libethash-cl/ethash_cl_miner.h>
#endif
#include <vector>
#include <algorithm>
#ifdef WITH_CRYPTOPP
#include <libethash/sha3_cryptopp.h>
#include <string>
#else
#include "libethash/sha3.h"
#endif // WITH_CRYPTOPP
#undef min
#undef max
using std::chrono::high_resolution_clock;
#if defined(OPENCL)
const unsigned trials = 1024*1024*32;
#elif defined(FULL)
const unsigned trials = 1024*1024/8;
#else
const unsigned trials = 1024*1024/1024;
#endif
uint8_t g_hashes[1024*32];
static char nibbleToChar(unsigned nibble)
{
return (char) ((nibble >= 10 ? 'a'-10 : '0') + nibble);
}
static uint8_t charToNibble(char chr)
{
if (chr >= '0' && chr <= '9')
{
return (uint8_t) (chr - '0');
}
if (chr >= 'a' && chr <= 'z')
{
return (uint8_t) (chr - 'a' + 10);
}
if (chr >= 'A' && chr <= 'Z')
{
return (uint8_t) (chr - 'A' + 10);
}
return 0;
}
static std::vector<uint8_t> hexStringToBytes(char const* str)
{
std::vector<uint8_t> bytes(strlen(str) >> 1);
for (unsigned i = 0; i != bytes.size(); ++i)
{
bytes[i] = charToNibble(str[i*2 | 0]) << 4;
bytes[i] |= charToNibble(str[i*2 | 1]);
}
return bytes;
}
static std::string bytesToHexString(uint8_t const* bytes, unsigned size)
{
std::string str;
for (unsigned i = 0; i != size; ++i)
{
str += nibbleToChar(bytes[i] >> 4);
str += nibbleToChar(bytes[i] & 0xf);
}
return str;
}
static std::string bytesToHexString(ethash_h256_t const *hash, unsigned size)
{
return bytesToHexString((uint8_t*)hash, size);
}
extern "C" int main(void)
{
// params for ethash
ethash_params params;
ethash_params_init(&params, 0);
//params.full_size = 262147 * 4096; // 1GBish;
//params.full_size = 32771 * 4096; // 128MBish;
//params.full_size = 8209 * 4096; // 8MBish;
//params.cache_size = 8209*4096;
//params.cache_size = 2053*4096;
ethash_h256_t seed;
ethash_h256_t previous_hash;
memcpy(&seed, hexStringToBytes("9410b944535a83d9adf6bbdcc80e051f30676173c16ca0d32d6f1263fc246466").data(), 32);
memcpy(&previous_hash, hexStringToBytes("c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470").data(), 32);
// allocate page aligned buffer for dataset
#ifdef FULL
void* full_mem_buf = malloc(params.full_size + 4095);
void* full_mem = (void*)((uintptr_t(full_mem_buf) + 4095) & ~4095);
#endif
void* cache_mem_buf = malloc(params.cache_size + 63);
void* cache_mem = (void*)((uintptr_t(cache_mem_buf) + 63) & ~63);
ethash_cache cache;
cache.mem = cache_mem;
// compute cache or full data
{
auto startTime = high_resolution_clock::now();
ethash_mkcache(&cache, &params, &seed);
auto time = std::chrono::duration_cast<std::chrono::milliseconds>(high_resolution_clock::now() - startTime).count();
ethash_h256_t cache_hash;
SHA3_256(&cache_hash, (uint8_t const*)cache_mem, params.cache_size);
debugf("ethash_mkcache: %ums, sha3: %s\n", (unsigned)((time*1000)/CLOCKS_PER_SEC), bytesToHexString(&cache_hash, sizeof(cache_hash)).data());
// print a couple of test hashes
{
auto startTime = high_resolution_clock::now();
ethash_return_value hash;
ethash_light(&hash, &cache, &params, &previous_hash, 0);
auto time = std::chrono::duration_cast<std::chrono::milliseconds>(high_resolution_clock::now() - startTime).count();
debugf("ethash_light test: %ums, %s\n", (unsigned)time, bytesToHexString(&hash.result, 32).data());
}
#ifdef FULL
startTime = high_resolution_clock::now();
ethash_compute_full_data(full_mem, &params, &cache);
time = std::chrono::duration_cast<std::chrono::milliseconds>(high_resolution_clock::now() - startTime).count();
debugf("ethash_compute_full_data: %ums\n", (unsigned)time);
#endif // FULL
}
#ifdef OPENCL
ethash_cl_miner miner;
{
auto startTime = high_resolution_clock::now();
if (!miner.init(params, &seed))
exit(-1);
auto time = std::chrono::duration_cast<std::chrono::milliseconds>(high_resolution_clock::now() - startTime).count();
debugf("ethash_cl_miner init: %ums\n", (unsigned)time);
}
#endif
#ifdef FULL
{
auto startTime = high_resolution_clock::now();
ethash_return_value hash;
ethash_full(&hash, full_mem, &params, &previous_hash, 0);
auto time = std::chrono::duration_cast<std::chrono::milliseconds>(high_resolution_clock::now() - startTime).count();
debugf("ethash_full test: %uns\n", (unsigned)time);
}
#endif
#ifdef OPENCL
// validate 1024 hashes against CPU
miner.hash(g_hashes, (uint8_t*)&previous_hash, 0, 1024);
for (unsigned i = 0; i != 1024; ++i)
{
ethash_return_value hash;
ethash_light(&hash, &cache, &params, &previous_hash, i);
if (memcmp(&hash.result, g_hashes + 32*i, 32) != 0)
{
debugf("nonce %u failed: %s %s\n", i, bytesToHexString(g_hashes + 32*i, 32).c_str(), bytesToHexString(&hash.result, 32).c_str());
static unsigned c = 0;
if (++c == 16)
{
exit(-1);
}
}
}
// ensure nothing else is going on
miner.finish();
#endif
auto startTime = high_resolution_clock::now();
unsigned hash_count = trials;
#ifdef OPENCL
{
struct search_hook : ethash_cl_miner::search_hook
{
unsigned hash_count;
std::vector<uint64_t> nonce_vec;
virtual bool found(uint64_t const* nonces, uint32_t count)
{
nonce_vec.insert(nonce_vec.end(), nonces, nonces + count);
return false;
}
virtual bool searched(uint64_t start_nonce, uint32_t count)
{
// do nothing
hash_count += count;
return hash_count >= trials;
}
};
search_hook hook;
hook.hash_count = 0;
miner.search((uint8_t*)&previous_hash, 0x000000ffffffffff, hook);
for (unsigned i = 0; i != hook.nonce_vec.size(); ++i)
{
uint64_t nonce = hook.nonce_vec[i];
ethash_return_value hash;
ethash_light(&hash, &cache, &params, &previous_hash, nonce);
debugf("found: %.8x%.8x -> %s\n", unsigned(nonce>>32), unsigned(nonce), bytesToHexString(&hash.result, 32).c_str());
}
hash_count = hook.hash_count;
}
#else
{
//#pragma omp parallel for
for (int nonce = 0; nonce < trials; ++nonce)
{
ethash_return_value hash;
#ifdef FULL
ethash_full(&hash, full_mem, &params, &previous_hash, nonce);
#else
ethash_light(&hash, &cache, &params, &previous_hash, nonce);
#endif // FULL
}
}
#endif
auto time = std::chrono::duration_cast<std::chrono::microseconds>(high_resolution_clock::now() - startTime).count();
debugf("Search took: %ums\n", (unsigned)time/1000);
unsigned read_size = ETHASH_ACCESSES * ETHASH_MIX_BYTES;
#if defined(OPENCL) || defined(FULL)
debugf(
"hashrate: %8.2f Mh/s, bw: %8.2f GB/s\n",
(double)hash_count * (1000*1000)/time / (1000*1000),
(double)hash_count*read_size * (1000*1000)/time / (1024*1024*1024)
);
#else
debugf(
"hashrate: %8.2f Kh/s, bw: %8.2f MB/s\n",
(double)hash_count * (1000*1000)/time / (1000),
(double)hash_count*read_size * (1000*1000)/time / (1024*1024)
);
#endif
free(cache_mem_buf);
#ifdef FULL
free(full_mem_buf);
#endif
return 0;
}

View File

@@ -0,0 +1,47 @@
cmake_minimum_required(VERSION 2.8)
set(LIBRARY ethash-cl)
set(CMAKE_BUILD_TYPE Release)
include(bin2h.cmake)
bin2h(SOURCE_FILE ethash_cl_miner_kernel.cl
VARIABLE_NAME ethash_cl_miner_kernel
HEADER_FILE ${CMAKE_CURRENT_BINARY_DIR}/ethash_cl_miner_kernel.h)
if (NOT MSVC)
# Initialize CXXFLAGS for c++11
set(CMAKE_CXX_FLAGS "-Wall -std=c++11")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
# Compiler-specific C++11 activation.
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
execute_process(
COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
if (NOT (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7))
message(FATAL_ERROR "${PROJECT_NAME} requires g++ 4.7 or greater.")
endif ()
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
else ()
message(FATAL_ERROR "Your C++ compiler does not support C++11.")
endif ()
endif()
set(OpenCL_FOUND TRUE)
set(OpenCL_INCLUDE_DIRS /usr/include/CL)
set(OpenCL_LIBRARIES -lOpenCL)
if (NOT OpenCL_FOUND)
find_package(OpenCL)
endif()
if (OpenCL_FOUND)
set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -Wno-unknown-pragmas -Wextra -Werror -pedantic -fPIC ${CMAKE_CXX_FLAGS}")
include_directories(${OpenCL_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR})
include_directories(..)
add_library(${LIBRARY} ethash_cl_miner.cpp ethash_cl_miner.h cl.hpp)
TARGET_LINK_LIBRARIES(${LIBRARY} ${OpenCL_LIBRARIES} ethash)
endif()

View File

@@ -0,0 +1,86 @@
# https://gist.github.com/sivachandran/3a0de157dccef822a230
include(CMakeParseArguments)
# Function to wrap a given string into multiple lines at the given column position.
# Parameters:
# VARIABLE - The name of the CMake variable holding the string.
# AT_COLUMN - The column position at which string will be wrapped.
function(WRAP_STRING)
set(oneValueArgs VARIABLE AT_COLUMN)
cmake_parse_arguments(WRAP_STRING "${options}" "${oneValueArgs}" "" ${ARGN})
string(LENGTH ${${WRAP_STRING_VARIABLE}} stringLength)
math(EXPR offset "0")
while(stringLength GREATER 0)
if(stringLength GREATER ${WRAP_STRING_AT_COLUMN})
math(EXPR length "${WRAP_STRING_AT_COLUMN}")
else()
math(EXPR length "${stringLength}")
endif()
string(SUBSTRING ${${WRAP_STRING_VARIABLE}} ${offset} ${length} line)
set(lines "${lines}\n${line}")
math(EXPR stringLength "${stringLength} - ${length}")
math(EXPR offset "${offset} + ${length}")
endwhile()
set(${WRAP_STRING_VARIABLE} "${lines}" PARENT_SCOPE)
endfunction()
# Function to embed contents of a file as byte array in C/C++ header file(.h). The header file
# will contain a byte array and integer variable holding the size of the array.
# Parameters
# SOURCE_FILE - The path of source file whose contents will be embedded in the header file.
# VARIABLE_NAME - The name of the variable for the byte array. The string "_SIZE" will be append
# to this name and will be used a variable name for size variable.
# HEADER_FILE - The path of header file.
# APPEND - If specified appends to the header file instead of overwriting it
# NULL_TERMINATE - If specified a null byte(zero) will be append to the byte array. This will be
# useful if the source file is a text file and we want to use the file contents
# as string. But the size variable holds size of the byte array without this
# null byte.
# Usage:
# bin2h(SOURCE_FILE "Logo.png" HEADER_FILE "Logo.h" VARIABLE_NAME "LOGO_PNG")
function(BIN2H)
set(options APPEND NULL_TERMINATE)
set(oneValueArgs SOURCE_FILE VARIABLE_NAME HEADER_FILE)
cmake_parse_arguments(BIN2H "${options}" "${oneValueArgs}" "" ${ARGN})
# reads source file contents as hex string
file(READ ${BIN2H_SOURCE_FILE} hexString HEX)
string(LENGTH ${hexString} hexStringLength)
# appends null byte if asked
if(BIN2H_NULL_TERMINATE)
set(hexString "${hexString}00")
endif()
# wraps the hex string into multiple lines at column 32(i.e. 16 bytes per line)
wrap_string(VARIABLE hexString AT_COLUMN 32)
math(EXPR arraySize "${hexStringLength} / 2")
# adds '0x' prefix and comma suffix before and after every byte respectively
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1, " arrayValues ${hexString})
# removes trailing comma
string(REGEX REPLACE ", $" "" arrayValues ${arrayValues})
# converts the variable name into proper C identifier
IF (${CMAKE_VERSION} GREATER 2.8.10) # fix for legacy cmake
string(MAKE_C_IDENTIFIER "${BIN2H_VARIABLE_NAME}" BIN2H_VARIABLE_NAME)
ENDIF()
string(TOUPPER "${BIN2H_VARIABLE_NAME}" BIN2H_VARIABLE_NAME)
# declares byte array and the length variables
set(arrayDefinition "const unsigned char ${BIN2H_VARIABLE_NAME}[] = { ${arrayValues} };")
set(arraySizeDefinition "const size_t ${BIN2H_VARIABLE_NAME}_SIZE = ${arraySize};")
set(declarations "${arrayDefinition}\n\n${arraySizeDefinition}\n\n")
if(BIN2H_APPEND)
file(APPEND ${BIN2H_HEADER_FILE} "${declarations}")
else()
file(WRITE ${BIN2H_HEADER_FILE} "${declarations}")
endif()
endfunction()

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,384 @@
/*
This file is part of c-ethash.
c-ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
c-ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file ethash_cl_miner.cpp
* @author Tim Hughes <tim@twistedfury.com>
* @date 2015
*/
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <assert.h>
#include <queue>
#include <vector>
#include <libethash/util.h>
#include <libethash/ethash.h>
#include <libethash/internal.h>
#include "ethash_cl_miner.h"
#include "ethash_cl_miner_kernel.h"
#define ETHASH_BYTES 32
// workaround lame platforms
#if !CL_VERSION_1_2
#define CL_MAP_WRITE_INVALIDATE_REGION CL_MAP_WRITE
#define CL_MEM_HOST_READ_ONLY 0
#endif
#undef min
#undef max
using namespace std;
static void add_definition(std::string& source, char const* id, unsigned value)
{
char buf[256];
sprintf(buf, "#define %s %uu\n", id, value);
source.insert(source.begin(), buf, buf + strlen(buf));
}
ethash_cl_miner::search_hook::~search_hook() {}
ethash_cl_miner::ethash_cl_miner()
: m_opencl_1_1()
{
}
std::string ethash_cl_miner::platform_info(unsigned _platformId, unsigned _deviceId)
{
std::vector<cl::Platform> platforms;
cl::Platform::get(&platforms);
if (platforms.empty())
{
cout << "No OpenCL platforms found." << endl;
return std::string();
}
// get GPU device of the selected platform
std::vector<cl::Device> devices;
unsigned platform_num = std::min<unsigned>(_platformId, platforms.size() - 1);
platforms[platform_num].getDevices(CL_DEVICE_TYPE_ALL, &devices);
if (devices.empty())
{
cout << "No OpenCL devices found." << endl;
return std::string();
}
// use selected default device
unsigned device_num = std::min<unsigned>(_deviceId, devices.size() - 1);
cl::Device& device = devices[device_num];
std::string device_version = device.getInfo<CL_DEVICE_VERSION>();
return "{ \"platform\": \"" + platforms[platform_num].getInfo<CL_PLATFORM_NAME>() + "\", \"device\": \"" + device.getInfo<CL_DEVICE_NAME>() + "\", \"version\": \"" + device_version + "\" }";
}
unsigned ethash_cl_miner::get_num_devices(unsigned _platformId)
{
std::vector<cl::Platform> platforms;
cl::Platform::get(&platforms);
if (platforms.empty())
{
cout << "No OpenCL platforms found." << endl;
return 0;
}
std::vector<cl::Device> devices;
unsigned platform_num = std::min<unsigned>(_platformId, platforms.size() - 1);
platforms[platform_num].getDevices(CL_DEVICE_TYPE_ALL, &devices);
if (devices.empty())
{
cout << "No OpenCL devices found." << endl;
return 0;
}
return devices.size();
}
void ethash_cl_miner::finish()
{
if (m_queue())
m_queue.finish();
}
bool ethash_cl_miner::init(uint64_t block_number, std::function<void(void*)> _fillDAG, unsigned workgroup_size, unsigned _platformId, unsigned _deviceId)
{
// store params
m_fullSize = ethash_get_datasize(block_number);
// get all platforms
std::vector<cl::Platform> platforms;
cl::Platform::get(&platforms);
if (platforms.empty())
{
cout << "No OpenCL platforms found." << endl;
return false;
}
// use selected platform
_platformId = std::min<unsigned>(_platformId, platforms.size() - 1);
cout << "Using platform: " << platforms[_platformId].getInfo<CL_PLATFORM_NAME>().c_str() << endl;
// get GPU device of the default platform
std::vector<cl::Device> devices;
platforms[_platformId].getDevices(CL_DEVICE_TYPE_ALL, &devices);
if (devices.empty())
{
cout << "No OpenCL devices found." << endl;
return false;
}
// use selected device
cl::Device& device = devices[std::min<unsigned>(_deviceId, devices.size() - 1)];
std::string device_version = device.getInfo<CL_DEVICE_VERSION>();
cout << "Using device: " << device.getInfo<CL_DEVICE_NAME>().c_str() << "(" << device_version.c_str() << ")" << endl;
if (strncmp("OpenCL 1.0", device_version.c_str(), 10) == 0)
{
cout << "OpenCL 1.0 is not supported." << endl;
return false;
}
if (strncmp("OpenCL 1.1", device_version.c_str(), 10) == 0)
m_opencl_1_1 = true;
// create context
m_context = cl::Context(std::vector<cl::Device>(&device, &device + 1));
m_queue = cl::CommandQueue(m_context, device);
// use requested workgroup size, but we require multiple of 8
m_workgroup_size = ((workgroup_size + 7) / 8) * 8;
// patch source code
std::string code(ETHASH_CL_MINER_KERNEL, ETHASH_CL_MINER_KERNEL + ETHASH_CL_MINER_KERNEL_SIZE);
add_definition(code, "GROUP_SIZE", m_workgroup_size);
add_definition(code, "DAG_SIZE", (unsigned)(m_fullSize / ETHASH_MIX_BYTES));
add_definition(code, "ACCESSES", ETHASH_ACCESSES);
add_definition(code, "MAX_OUTPUTS", c_max_search_results);
//debugf("%s", code.c_str());
// create miner OpenCL program
cl::Program::Sources sources;
sources.push_back({code.c_str(), code.size()});
cl::Program program(m_context, sources);
try
{
program.build({device});
}
catch (cl::Error err)
{
cout << program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(device).c_str();
return false;
}
m_hash_kernel = cl::Kernel(program, "ethash_hash");
m_search_kernel = cl::Kernel(program, "ethash_search");
// create buffer for dag
m_dag = cl::Buffer(m_context, CL_MEM_READ_ONLY, m_fullSize);
// create buffer for header
m_header = cl::Buffer(m_context, CL_MEM_READ_ONLY, 32);
// compute dag on CPU
{
// if this throws then it's because we probably need to subdivide the dag uploads for compatibility
void* dag_ptr = m_queue.enqueueMapBuffer(m_dag, true, m_opencl_1_1 ? CL_MAP_WRITE : CL_MAP_WRITE_INVALIDATE_REGION, 0, m_fullSize);
// memcpying 1GB: horrible... really. horrible. but necessary since we can't mmap *and* gpumap.
_fillDAG(dag_ptr);
m_queue.enqueueUnmapMemObject(m_dag, dag_ptr);
}
// create mining buffers
for (unsigned i = 0; i != c_num_buffers; ++i)
{
m_hash_buf[i] = cl::Buffer(m_context, CL_MEM_WRITE_ONLY | (!m_opencl_1_1 ? CL_MEM_HOST_READ_ONLY : 0), 32*c_hash_batch_size);
m_search_buf[i] = cl::Buffer(m_context, CL_MEM_WRITE_ONLY, (c_max_search_results + 1) * sizeof(uint32_t));
}
return true;
}
void ethash_cl_miner::hash(uint8_t* ret, uint8_t const* header, uint64_t nonce, unsigned count)
{
struct pending_batch
{
unsigned base;
unsigned count;
unsigned buf;
};
std::queue<pending_batch> pending;
// update header constant buffer
m_queue.enqueueWriteBuffer(m_header, true, 0, 32, header);
/*
__kernel void ethash_combined_hash(
__global hash32_t* g_hashes,
__constant hash32_t const* g_header,
__global hash128_t const* g_dag,
ulong start_nonce,
uint isolate
)
*/
m_hash_kernel.setArg(1, m_header);
m_hash_kernel.setArg(2, m_dag);
m_hash_kernel.setArg(3, nonce);
m_hash_kernel.setArg(4, ~0u); // have to pass this to stop the compile unrolling the loop
unsigned buf = 0;
for (unsigned i = 0; i < count || !pending.empty(); )
{
// how many this batch
if (i < count)
{
unsigned const this_count = std::min<unsigned>(count - i, c_hash_batch_size);
unsigned const batch_count = std::max<unsigned>(this_count, m_workgroup_size);
// supply output hash buffer to kernel
m_hash_kernel.setArg(0, m_hash_buf[buf]);
// execute it!
m_queue.enqueueNDRangeKernel(
m_hash_kernel,
cl::NullRange,
cl::NDRange(batch_count),
cl::NDRange(m_workgroup_size)
);
m_queue.flush();
pending.push({i, this_count, buf});
i += this_count;
buf = (buf + 1) % c_num_buffers;
}
// read results
if (i == count || pending.size() == c_num_buffers)
{
pending_batch const& batch = pending.front();
// could use pinned host pointer instead, but this path isn't that important.
uint8_t* hashes = (uint8_t*)m_queue.enqueueMapBuffer(m_hash_buf[batch.buf], true, CL_MAP_READ, 0, batch.count * ETHASH_BYTES);
memcpy(ret + batch.base*ETHASH_BYTES, hashes, batch.count*ETHASH_BYTES);
m_queue.enqueueUnmapMemObject(m_hash_buf[batch.buf], hashes);
pending.pop();
}
}
}
void ethash_cl_miner::search(uint8_t const* header, uint64_t target, search_hook& hook)
{
struct pending_batch
{
uint64_t start_nonce;
unsigned buf;
};
std::queue<pending_batch> pending;
static uint32_t const c_zero = 0;
// update header constant buffer
m_queue.enqueueWriteBuffer(m_header, false, 0, 32, header);
for (unsigned i = 0; i != c_num_buffers; ++i)
{
m_queue.enqueueWriteBuffer(m_search_buf[i], false, 0, 4, &c_zero);
}
#if CL_VERSION_1_2 && 0
cl::Event pre_return_event;
if (!m_opencl_1_1)
{
m_queue.enqueueBarrierWithWaitList(NULL, &pre_return_event);
}
else
#endif
{
m_queue.finish();
}
/*
__kernel void ethash_combined_search(
__global hash32_t* g_hashes, // 0
__constant hash32_t const* g_header, // 1
__global hash128_t const* g_dag, // 2
ulong start_nonce, // 3
ulong target, // 4
uint isolate // 5
)
*/
m_search_kernel.setArg(1, m_header);
m_search_kernel.setArg(2, m_dag);
// pass these to stop the compiler unrolling the loops
m_search_kernel.setArg(4, target);
m_search_kernel.setArg(5, ~0u);
unsigned buf = 0;
for (uint64_t start_nonce = 0; ; start_nonce += c_search_batch_size)
{
// supply output buffer to kernel
m_search_kernel.setArg(0, m_search_buf[buf]);
m_search_kernel.setArg(3, start_nonce);
// execute it!
m_queue.enqueueNDRangeKernel(m_search_kernel, cl::NullRange, c_search_batch_size, m_workgroup_size);
pending.push({start_nonce, buf});
buf = (buf + 1) % c_num_buffers;
// read results
if (pending.size() == c_num_buffers)
{
pending_batch const& batch = pending.front();
// could use pinned host pointer instead
uint32_t* results = (uint32_t*)m_queue.enqueueMapBuffer(m_search_buf[batch.buf], true, CL_MAP_READ, 0, (1+c_max_search_results) * sizeof(uint32_t));
unsigned num_found = std::min<unsigned>(results[0], c_max_search_results);
uint64_t nonces[c_max_search_results];
for (unsigned i = 0; i != num_found; ++i)
{
nonces[i] = batch.start_nonce + results[i+1];
}
m_queue.enqueueUnmapMemObject(m_search_buf[batch.buf], results);
bool exit = num_found && hook.found(nonces, num_found);
exit |= hook.searched(batch.start_nonce, c_search_batch_size); // always report searched before exit
if (exit)
break;
// reset search buffer if we're still going
if (num_found)
m_queue.enqueueWriteBuffer(m_search_buf[batch.buf], true, 0, 4, &c_zero);
pending.pop();
}
}
// not safe to return until this is ready
#if CL_VERSION_1_2 && 0
if (!m_opencl_1_1)
{
pre_return_event.wait();
}
#endif
}

View File

@@ -0,0 +1,57 @@
#pragma once
#define __CL_ENABLE_EXCEPTIONS
#define CL_USE_DEPRECATED_OPENCL_2_0_APIS
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-parameter"
#include "cl.hpp"
#pragma clang diagnostic pop
#else
#include "cl.hpp"
#endif
#include <time.h>
#include <functional>
#include <libethash/ethash.h>
class ethash_cl_miner
{
public:
struct search_hook
{
virtual ~search_hook(); // always a virtual destructor for a class with virtuals.
// reports progress, return true to abort
virtual bool found(uint64_t const* nonces, uint32_t count) = 0;
virtual bool searched(uint64_t start_nonce, uint32_t count) = 0;
};
public:
ethash_cl_miner();
bool init(uint64_t block_number, std::function<void(void*)> _fillDAG, unsigned workgroup_size = 64, unsigned _platformId = 0, unsigned _deviceId = 0);
static std::string platform_info(unsigned _platformId = 0, unsigned _deviceId = 0);
static unsigned get_num_devices(unsigned _platformId = 0);
void finish();
void hash(uint8_t* ret, uint8_t const* header, uint64_t nonce, unsigned count);
void search(uint8_t const* header, uint64_t target, search_hook& hook);
private:
enum { c_max_search_results = 63, c_num_buffers = 2, c_hash_batch_size = 1024, c_search_batch_size = 1024*256 };
uint64_t m_fullSize;
cl::Context m_context;
cl::CommandQueue m_queue;
cl::Kernel m_hash_kernel;
cl::Kernel m_search_kernel;
cl::Buffer m_dag;
cl::Buffer m_header;
cl::Buffer m_hash_buf[c_num_buffers];
cl::Buffer m_search_buf[c_num_buffers];
unsigned m_workgroup_size;
bool m_opencl_1_1;
};

View File

@@ -0,0 +1,460 @@
// author Tim Hughes <tim@twistedfury.com>
// Tested on Radeon HD 7850
// Hashrate: 15940347 hashes/s
// Bandwidth: 124533 MB/s
// search kernel should fit in <= 84 VGPRS (3 wavefronts)
#define THREADS_PER_HASH (128 / 16)
#define HASHES_PER_LOOP (GROUP_SIZE / THREADS_PER_HASH)
#define FNV_PRIME 0x01000193
__constant uint2 const Keccak_f1600_RC[24] = {
(uint2)(0x00000001, 0x00000000),
(uint2)(0x00008082, 0x00000000),
(uint2)(0x0000808a, 0x80000000),
(uint2)(0x80008000, 0x80000000),
(uint2)(0x0000808b, 0x00000000),
(uint2)(0x80000001, 0x00000000),
(uint2)(0x80008081, 0x80000000),
(uint2)(0x00008009, 0x80000000),
(uint2)(0x0000008a, 0x00000000),
(uint2)(0x00000088, 0x00000000),
(uint2)(0x80008009, 0x00000000),
(uint2)(0x8000000a, 0x00000000),
(uint2)(0x8000808b, 0x00000000),
(uint2)(0x0000008b, 0x80000000),
(uint2)(0x00008089, 0x80000000),
(uint2)(0x00008003, 0x80000000),
(uint2)(0x00008002, 0x80000000),
(uint2)(0x00000080, 0x80000000),
(uint2)(0x0000800a, 0x00000000),
(uint2)(0x8000000a, 0x80000000),
(uint2)(0x80008081, 0x80000000),
(uint2)(0x00008080, 0x80000000),
(uint2)(0x80000001, 0x00000000),
(uint2)(0x80008008, 0x80000000),
};
void keccak_f1600_round(uint2* a, uint r, uint out_size)
{
#if !__ENDIAN_LITTLE__
for (uint i = 0; i != 25; ++i)
a[i] = a[i].yx;
#endif
uint2 b[25];
uint2 t;
// Theta
b[0] = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20];
b[1] = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21];
b[2] = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22];
b[3] = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23];
b[4] = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24];
t = b[4] ^ (uint2)(b[1].x << 1 | b[1].y >> 31, b[1].y << 1 | b[1].x >> 31);
a[0] ^= t;
a[5] ^= t;
a[10] ^= t;
a[15] ^= t;
a[20] ^= t;
t = b[0] ^ (uint2)(b[2].x << 1 | b[2].y >> 31, b[2].y << 1 | b[2].x >> 31);
a[1] ^= t;
a[6] ^= t;
a[11] ^= t;
a[16] ^= t;
a[21] ^= t;
t = b[1] ^ (uint2)(b[3].x << 1 | b[3].y >> 31, b[3].y << 1 | b[3].x >> 31);
a[2] ^= t;
a[7] ^= t;
a[12] ^= t;
a[17] ^= t;
a[22] ^= t;
t = b[2] ^ (uint2)(b[4].x << 1 | b[4].y >> 31, b[4].y << 1 | b[4].x >> 31);
a[3] ^= t;
a[8] ^= t;
a[13] ^= t;
a[18] ^= t;
a[23] ^= t;
t = b[3] ^ (uint2)(b[0].x << 1 | b[0].y >> 31, b[0].y << 1 | b[0].x >> 31);
a[4] ^= t;
a[9] ^= t;
a[14] ^= t;
a[19] ^= t;
a[24] ^= t;
// Rho Pi
b[0] = a[0];
b[10] = (uint2)(a[1].x << 1 | a[1].y >> 31, a[1].y << 1 | a[1].x >> 31);
b[7] = (uint2)(a[10].x << 3 | a[10].y >> 29, a[10].y << 3 | a[10].x >> 29);
b[11] = (uint2)(a[7].x << 6 | a[7].y >> 26, a[7].y << 6 | a[7].x >> 26);
b[17] = (uint2)(a[11].x << 10 | a[11].y >> 22, a[11].y << 10 | a[11].x >> 22);
b[18] = (uint2)(a[17].x << 15 | a[17].y >> 17, a[17].y << 15 | a[17].x >> 17);
b[3] = (uint2)(a[18].x << 21 | a[18].y >> 11, a[18].y << 21 | a[18].x >> 11);
b[5] = (uint2)(a[3].x << 28 | a[3].y >> 4, a[3].y << 28 | a[3].x >> 4);
b[16] = (uint2)(a[5].y << 4 | a[5].x >> 28, a[5].x << 4 | a[5].y >> 28);
b[8] = (uint2)(a[16].y << 13 | a[16].x >> 19, a[16].x << 13 | a[16].y >> 19);
b[21] = (uint2)(a[8].y << 23 | a[8].x >> 9, a[8].x << 23 | a[8].y >> 9);
b[24] = (uint2)(a[21].x << 2 | a[21].y >> 30, a[21].y << 2 | a[21].x >> 30);
b[4] = (uint2)(a[24].x << 14 | a[24].y >> 18, a[24].y << 14 | a[24].x >> 18);
b[15] = (uint2)(a[4].x << 27 | a[4].y >> 5, a[4].y << 27 | a[4].x >> 5);
b[23] = (uint2)(a[15].y << 9 | a[15].x >> 23, a[15].x << 9 | a[15].y >> 23);
b[19] = (uint2)(a[23].y << 24 | a[23].x >> 8, a[23].x << 24 | a[23].y >> 8);
b[13] = (uint2)(a[19].x << 8 | a[19].y >> 24, a[19].y << 8 | a[19].x >> 24);
b[12] = (uint2)(a[13].x << 25 | a[13].y >> 7, a[13].y << 25 | a[13].x >> 7);
b[2] = (uint2)(a[12].y << 11 | a[12].x >> 21, a[12].x << 11 | a[12].y >> 21);
b[20] = (uint2)(a[2].y << 30 | a[2].x >> 2, a[2].x << 30 | a[2].y >> 2);
b[14] = (uint2)(a[20].x << 18 | a[20].y >> 14, a[20].y << 18 | a[20].x >> 14);
b[22] = (uint2)(a[14].y << 7 | a[14].x >> 25, a[14].x << 7 | a[14].y >> 25);
b[9] = (uint2)(a[22].y << 29 | a[22].x >> 3, a[22].x << 29 | a[22].y >> 3);
b[6] = (uint2)(a[9].x << 20 | a[9].y >> 12, a[9].y << 20 | a[9].x >> 12);
b[1] = (uint2)(a[6].y << 12 | a[6].x >> 20, a[6].x << 12 | a[6].y >> 20);
// Chi
a[0] = bitselect(b[0] ^ b[2], b[0], b[1]);
a[1] = bitselect(b[1] ^ b[3], b[1], b[2]);
a[2] = bitselect(b[2] ^ b[4], b[2], b[3]);
a[3] = bitselect(b[3] ^ b[0], b[3], b[4]);
if (out_size >= 4)
{
a[4] = bitselect(b[4] ^ b[1], b[4], b[0]);
a[5] = bitselect(b[5] ^ b[7], b[5], b[6]);
a[6] = bitselect(b[6] ^ b[8], b[6], b[7]);
a[7] = bitselect(b[7] ^ b[9], b[7], b[8]);
a[8] = bitselect(b[8] ^ b[5], b[8], b[9]);
if (out_size >= 8)
{
a[9] = bitselect(b[9] ^ b[6], b[9], b[5]);
a[10] = bitselect(b[10] ^ b[12], b[10], b[11]);
a[11] = bitselect(b[11] ^ b[13], b[11], b[12]);
a[12] = bitselect(b[12] ^ b[14], b[12], b[13]);
a[13] = bitselect(b[13] ^ b[10], b[13], b[14]);
a[14] = bitselect(b[14] ^ b[11], b[14], b[10]);
a[15] = bitselect(b[15] ^ b[17], b[15], b[16]);
a[16] = bitselect(b[16] ^ b[18], b[16], b[17]);
a[17] = bitselect(b[17] ^ b[19], b[17], b[18]);
a[18] = bitselect(b[18] ^ b[15], b[18], b[19]);
a[19] = bitselect(b[19] ^ b[16], b[19], b[15]);
a[20] = bitselect(b[20] ^ b[22], b[20], b[21]);
a[21] = bitselect(b[21] ^ b[23], b[21], b[22]);
a[22] = bitselect(b[22] ^ b[24], b[22], b[23]);
a[23] = bitselect(b[23] ^ b[20], b[23], b[24]);
a[24] = bitselect(b[24] ^ b[21], b[24], b[20]);
}
}
// Iota
a[0] ^= Keccak_f1600_RC[r];
#if !__ENDIAN_LITTLE__
for (uint i = 0; i != 25; ++i)
a[i] = a[i].yx;
#endif
}
void keccak_f1600_no_absorb(ulong* a, uint in_size, uint out_size, uint isolate)
{
for (uint i = in_size; i != 25; ++i)
{
a[i] = 0;
}
#if __ENDIAN_LITTLE__
a[in_size] ^= 0x0000000000000001;
a[24-out_size*2] ^= 0x8000000000000000;
#else
a[in_size] ^= 0x0100000000000000;
a[24-out_size*2] ^= 0x0000000000000080;
#endif
// Originally I unrolled the first and last rounds to interface
// better with surrounding code, however I haven't done this
// without causing the AMD compiler to blow up the VGPR usage.
uint r = 0;
do
{
// This dynamic branch stops the AMD compiler unrolling the loop
// and additionally saves about 33% of the VGPRs, enough to gain another
// wavefront. Ideally we'd get 4 in flight, but 3 is the best I can
// massage out of the compiler. It doesn't really seem to matter how
// much we try and help the compiler save VGPRs because it seems to throw
// that information away, hence the implementation of keccak here
// doesn't bother.
if (isolate)
{
keccak_f1600_round((uint2*)a, r++, 25);
}
}
while (r < 23);
// final round optimised for digest size
keccak_f1600_round((uint2*)a, r++, out_size);
}
#define copy(dst, src, count) for (uint i = 0; i != count; ++i) { (dst)[i] = (src)[i]; }
#define countof(x) (sizeof(x) / sizeof(x[0]))
uint fnv(uint x, uint y)
{
return x * FNV_PRIME ^ y;
}
uint4 fnv4(uint4 x, uint4 y)
{
return x * FNV_PRIME ^ y;
}
uint fnv_reduce(uint4 v)
{
return fnv(fnv(fnv(v.x, v.y), v.z), v.w);
}
typedef union
{
ulong ulongs[32 / sizeof(ulong)];
uint uints[32 / sizeof(uint)];
} hash32_t;
typedef union
{
ulong ulongs[64 / sizeof(ulong)];
uint4 uint4s[64 / sizeof(uint4)];
} hash64_t;
typedef union
{
uint uints[128 / sizeof(uint)];
uint4 uint4s[128 / sizeof(uint4)];
} hash128_t;
hash64_t init_hash(__constant hash32_t const* header, ulong nonce, uint isolate)
{
hash64_t init;
uint const init_size = countof(init.ulongs);
uint const hash_size = countof(header->ulongs);
// sha3_512(header .. nonce)
ulong state[25];
copy(state, header->ulongs, hash_size);
state[hash_size] = nonce;
keccak_f1600_no_absorb(state, hash_size + 1, init_size, isolate);
copy(init.ulongs, state, init_size);
return init;
}
uint inner_loop(uint4 init, uint thread_id, __local uint* share, __global hash128_t const* g_dag, uint isolate)
{
uint4 mix = init;
// share init0
if (thread_id == 0)
*share = mix.x;
barrier(CLK_LOCAL_MEM_FENCE);
uint init0 = *share;
uint a = 0;
do
{
bool update_share = thread_id == (a/4) % THREADS_PER_HASH;
#pragma unroll
for (uint i = 0; i != 4; ++i)
{
if (update_share)
{
uint m[4] = { mix.x, mix.y, mix.z, mix.w };
*share = fnv(init0 ^ (a+i), m[i]) % DAG_SIZE;
}
barrier(CLK_LOCAL_MEM_FENCE);
mix = fnv4(mix, g_dag[*share].uint4s[thread_id]);
}
}
while ((a += 4) != (ACCESSES & isolate));
return fnv_reduce(mix);
}
hash32_t final_hash(hash64_t const* init, hash32_t const* mix, uint isolate)
{
ulong state[25];
hash32_t hash;
uint const hash_size = countof(hash.ulongs);
uint const init_size = countof(init->ulongs);
uint const mix_size = countof(mix->ulongs);
// keccak_256(keccak_512(header..nonce) .. mix);
copy(state, init->ulongs, init_size);
copy(state + init_size, mix->ulongs, mix_size);
keccak_f1600_no_absorb(state, init_size+mix_size, hash_size, isolate);
// copy out
copy(hash.ulongs, state, hash_size);
return hash;
}
hash32_t compute_hash_simple(
__constant hash32_t const* g_header,
__global hash128_t const* g_dag,
ulong nonce,
uint isolate
)
{
hash64_t init = init_hash(g_header, nonce, isolate);
hash128_t mix;
for (uint i = 0; i != countof(mix.uint4s); ++i)
{
mix.uint4s[i] = init.uint4s[i % countof(init.uint4s)];
}
uint mix_val = mix.uints[0];
uint init0 = mix.uints[0];
uint a = 0;
do
{
uint pi = fnv(init0 ^ a, mix_val) % DAG_SIZE;
uint n = (a+1) % countof(mix.uints);
#pragma unroll
for (uint i = 0; i != countof(mix.uints); ++i)
{
mix.uints[i] = fnv(mix.uints[i], g_dag[pi].uints[i]);
mix_val = i == n ? mix.uints[i] : mix_val;
}
}
while (++a != (ACCESSES & isolate));
// reduce to output
hash32_t fnv_mix;
for (uint i = 0; i != countof(fnv_mix.uints); ++i)
{
fnv_mix.uints[i] = fnv_reduce(mix.uint4s[i]);
}
return final_hash(&init, &fnv_mix, isolate);
}
typedef union
{
struct
{
hash64_t init;
uint pad; // avoid lds bank conflicts
};
hash32_t mix;
} compute_hash_share;
hash32_t compute_hash(
__local compute_hash_share* share,
__constant hash32_t const* g_header,
__global hash128_t const* g_dag,
ulong nonce,
uint isolate
)
{
uint const gid = get_global_id(0);
// Compute one init hash per work item.
hash64_t init = init_hash(g_header, nonce, isolate);
// Threads work together in this phase in groups of 8.
uint const thread_id = gid % THREADS_PER_HASH;
uint const hash_id = (gid % GROUP_SIZE) / THREADS_PER_HASH;
hash32_t mix;
uint i = 0;
do
{
// share init with other threads
if (i == thread_id)
share[hash_id].init = init;
barrier(CLK_LOCAL_MEM_FENCE);
uint4 thread_init = share[hash_id].init.uint4s[thread_id % (64 / sizeof(uint4))];
barrier(CLK_LOCAL_MEM_FENCE);
uint thread_mix = inner_loop(thread_init, thread_id, share[hash_id].mix.uints, g_dag, isolate);
share[hash_id].mix.uints[thread_id] = thread_mix;
barrier(CLK_LOCAL_MEM_FENCE);
if (i == thread_id)
mix = share[hash_id].mix;
barrier(CLK_LOCAL_MEM_FENCE);
}
while (++i != (THREADS_PER_HASH & isolate));
return final_hash(&init, &mix, isolate);
}
__attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
__kernel void ethash_hash_simple(
__global hash32_t* g_hashes,
__constant hash32_t const* g_header,
__global hash128_t const* g_dag,
ulong start_nonce,
uint isolate
)
{
uint const gid = get_global_id(0);
g_hashes[gid] = compute_hash_simple(g_header, g_dag, start_nonce + gid, isolate);
}
__attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
__kernel void ethash_search_simple(
__global volatile uint* restrict g_output,
__constant hash32_t const* g_header,
__global hash128_t const* g_dag,
ulong start_nonce,
ulong target,
uint isolate
)
{
uint const gid = get_global_id(0);
hash32_t hash = compute_hash_simple(g_header, g_dag, start_nonce + gid, isolate);
if (as_ulong(as_uchar8(hash.ulongs[0]).s76543210) < target)
{
uint slot = min(MAX_OUTPUTS, atomic_inc(&g_output[0]) + 1);
g_output[slot] = gid;
}
}
__attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
__kernel void ethash_hash(
__global hash32_t* g_hashes,
__constant hash32_t const* g_header,
__global hash128_t const* g_dag,
ulong start_nonce,
uint isolate
)
{
__local compute_hash_share share[HASHES_PER_LOOP];
uint const gid = get_global_id(0);
g_hashes[gid] = compute_hash(share, g_header, g_dag, start_nonce + gid, isolate);
}
__attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
__kernel void ethash_search(
__global volatile uint* restrict g_output,
__constant hash32_t const* g_header,
__global hash128_t const* g_dag,
ulong start_nonce,
ulong target,
uint isolate
)
{
__local compute_hash_share share[HASHES_PER_LOOP];
uint const gid = get_global_id(0);
hash32_t hash = compute_hash(share, g_header, g_dag, start_nonce + gid, isolate);
if (as_ulong(as_uchar8(hash.ulongs[0]).s76543210) < target)
{
uint slot = min(MAX_OUTPUTS, atomic_inc(&g_output[0]) + 1);
g_output[slot] = gid;
}
}

View File

@@ -0,0 +1,44 @@
set(LIBRARY ethash)
if (CPPETHEREUM)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
endif ()
set(CMAKE_BUILD_TYPE Release)
if (NOT MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
endif()
set(FILES util.h
io.c
internal.c
ethash.h
endian.h
compiler.h
fnv.h
data_sizes.h)
if (MSVC)
list(APPEND FILES util_win32.c io_win32.c mmap_win32.c)
else()
list(APPEND FILES io_posix.c)
endif()
if (NOT CRYPTOPP_FOUND)
find_package(CryptoPP 5.6.2)
endif()
if (CRYPTOPP_FOUND)
add_definitions(-DWITH_CRYPTOPP)
include_directories( ${CRYPTOPP_INCLUDE_DIRS} )
list(APPEND FILES sha3_cryptopp.cpp sha3_cryptopp.h)
else()
list(APPEND FILES sha3.c sha3.h)
endif()
add_library(${LIBRARY} ${FILES})
if (CRYPTOPP_FOUND)
TARGET_LINK_LIBRARIES(${LIBRARY} ${CRYPTOPP_LIBRARIES})
endif()

View File

@@ -0,0 +1,33 @@
/*
This file is part of cpp-ethereum.
cpp-ethereum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
cpp-ethereum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file compiler.h
* @date 2014
*/
#pragma once
// Visual Studio doesn't support the inline keyword in C mode
#if defined(_MSC_VER) && !defined(__cplusplus)
#define inline __inline
#endif
// pretend restrict is a standard keyword
#if defined(_MSC_VER)
#define restrict __restrict
#else
#define restrict __restrict__
#endif

View File

@@ -0,0 +1,812 @@
/*
This file is part of cpp-ethereum.
cpp-ethereum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software FoundationUUU,either version 3 of the LicenseUUU,or
(at your option) any later version.
cpp-ethereum is distributed in the hope that it will be usefulU,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cpp-ethereum. If notUUU,see <http://www.gnu.org/licenses/>.
*/
/** @file data_sizes.h
* @author Matthew Wampler-Doty <negacthulhu@gmail.com>
* @date 2015
*/
#pragma once
#include <stdint.h>
#include "compiler.h"
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
// 2048 Epochs (~20 years) worth of tabulated DAG sizes
// Generated with the following Mathematica Code:
// GetCacheSizes[n_] := Module[{
// CacheSizeBytesInit = 2^24,
// CacheGrowth = 2^17,
// HashBytes = 64,
// j = 0},
// Reap[
// While[j < n,
// Module[{i =
// Floor[(CacheSizeBytesInit + CacheGrowth * j) / HashBytes]},
// While[! PrimeQ[i], i--];
// Sow[i*HashBytes]; j++]]]][[2]][[1]]
static const uint64_t dag_sizes[2048] = {
1073739904U, 1082130304U, 1090514816U, 1098906752U, 1107293056U,
1115684224U, 1124070016U, 1132461952U, 1140849536U, 1149232768U,
1157627776U, 1166013824U, 1174404736U, 1182786944U, 1191180416U,
1199568512U, 1207958912U, 1216345216U, 1224732032U, 1233124736U,
1241513344U, 1249902464U, 1258290304U, 1266673792U, 1275067264U,
1283453312U, 1291844992U, 1300234112U, 1308619904U, 1317010048U,
1325397376U, 1333787776U, 1342176128U, 1350561664U, 1358954368U,
1367339392U, 1375731584U, 1384118144U, 1392507008U, 1400897408U,
1409284736U, 1417673344U, 1426062464U, 1434451072U, 1442839168U,
1451229056U, 1459615616U, 1468006016U, 1476394112U, 1484782976U,
1493171584U, 1501559168U, 1509948032U, 1518337664U, 1526726528U,
1535114624U, 1543503488U, 1551892096U, 1560278656U, 1568669056U,
1577056384U, 1585446272U, 1593831296U, 1602219392U, 1610610304U,
1619000192U, 1627386752U, 1635773824U, 1644164224U, 1652555648U,
1660943488U, 1669332608U, 1677721216U, 1686109312U, 1694497664U,
1702886272U, 1711274624U, 1719661184U, 1728047744U, 1736434816U,
1744829056U, 1753218944U, 1761606272U, 1769995904U, 1778382464U,
1786772864U, 1795157888U, 1803550592U, 1811937664U, 1820327552U,
1828711552U, 1837102976U, 1845488768U, 1853879936U, 1862269312U,
1870656896U, 1879048064U, 1887431552U, 1895825024U, 1904212096U,
1912601216U, 1920988544U, 1929379456U, 1937765504U, 1946156672U,
1954543232U, 1962932096U, 1971321728U, 1979707264U, 1988093056U,
1996487552U, 2004874624U, 2013262208U, 2021653888U, 2030039936U,
2038430848U, 2046819968U, 2055208576U, 2063596672U, 2071981952U,
2080373632U, 2088762752U, 2097149056U, 2105539712U, 2113928576U,
2122315136U, 2130700672U, 2139092608U, 2147483264U, 2155872128U,
2164257664U, 2172642176U, 2181035392U, 2189426048U, 2197814912U,
2206203008U, 2214587264U, 2222979712U, 2231367808U, 2239758208U,
2248145024U, 2256527744U, 2264922752U, 2273312128U, 2281701248U,
2290086272U, 2298476672U, 2306867072U, 2315251072U, 2323639168U,
2332032128U, 2340420224U, 2348808064U, 2357196416U, 2365580416U,
2373966976U, 2382363008U, 2390748544U, 2399139968U, 2407530368U,
2415918976U, 2424307328U, 2432695424U, 2441084288U, 2449472384U,
2457861248U, 2466247808U, 2474637184U, 2483026816U, 2491414144U,
2499803776U, 2508191872U, 2516582272U, 2524970368U, 2533359232U,
2541743488U, 2550134144U, 2558525056U, 2566913408U, 2575301504U,
2583686528U, 2592073856U, 2600467328U, 2608856192U, 2617240448U,
2625631616U, 2634022016U, 2642407552U, 2650796416U, 2659188352U,
2667574912U, 2675965312U, 2684352896U, 2692738688U, 2701130624U,
2709518464U, 2717907328U, 2726293376U, 2734685056U, 2743073152U,
2751462016U, 2759851648U, 2768232832U, 2776625536U, 2785017728U,
2793401984U, 2801794432U, 2810182016U, 2818571648U, 2826959488U,
2835349376U, 2843734144U, 2852121472U, 2860514432U, 2868900992U,
2877286784U, 2885676928U, 2894069632U, 2902451584U, 2910843008U,
2919234688U, 2927622784U, 2936011648U, 2944400768U, 2952789376U,
2961177728U, 2969565568U, 2977951616U, 2986338944U, 2994731392U,
3003120256U, 3011508352U, 3019895936U, 3028287104U, 3036675968U,
3045063808U, 3053452928U, 3061837696U, 3070228352U, 3078615424U,
3087003776U, 3095394944U, 3103782272U, 3112173184U, 3120562048U,
3128944768U, 3137339264U, 3145725056U, 3154109312U, 3162505088U,
3170893184U, 3179280256U, 3187669376U, 3196056704U, 3204445568U,
3212836736U, 3221224064U, 3229612928U, 3238002304U, 3246391168U,
3254778496U, 3263165824U, 3271556224U, 3279944576U, 3288332416U,
3296719232U, 3305110912U, 3313500032U, 3321887104U, 3330273152U,
3338658944U, 3347053184U, 3355440512U, 3363827072U, 3372220288U,
3380608384U, 3388997504U, 3397384576U, 3405774208U, 3414163072U,
3422551936U, 3430937984U, 3439328384U, 3447714176U, 3456104576U,
3464493952U, 3472883584U, 3481268864U, 3489655168U, 3498048896U,
3506434432U, 3514826368U, 3523213952U, 3531603584U, 3539987072U,
3548380288U, 3556763264U, 3565157248U, 3573545344U, 3581934464U,
3590324096U, 3598712704U, 3607098752U, 3615488384U, 3623877248U,
3632265856U, 3640646528U, 3649043584U, 3657430144U, 3665821568U,
3674207872U, 3682597504U, 3690984832U, 3699367808U, 3707764352U,
3716152448U, 3724541056U, 3732925568U, 3741318016U, 3749706368U,
3758091136U, 3766481536U, 3774872704U, 3783260032U, 3791650432U,
3800036224U, 3808427648U, 3816815488U, 3825204608U, 3833592704U,
3841981568U, 3850370432U, 3858755968U, 3867147904U, 3875536256U,
3883920512U, 3892313728U, 3900702592U, 3909087872U, 3917478784U,
3925868416U, 3934256512U, 3942645376U, 3951032192U, 3959422336U,
3967809152U, 3976200064U, 3984588416U, 3992974976U, 4001363584U,
4009751168U, 4018141312U, 4026530432U, 4034911616U, 4043308928U,
4051695488U, 4060084352U, 4068472448U, 4076862848U, 4085249408U,
4093640576U, 4102028416U, 4110413696U, 4118805632U, 4127194496U,
4135583104U, 4143971968U, 4152360832U, 4160746112U, 4169135744U,
4177525888U, 4185912704U, 4194303616U, 4202691968U, 4211076736U,
4219463552U, 4227855488U, 4236246656U, 4244633728U, 4253022848U,
4261412224U, 4269799808U, 4278184832U, 4286578048U, 4294962304U,
4303349632U, 4311743104U, 4320130432U, 4328521088U, 4336909184U,
4345295488U, 4353687424U, 4362073472U, 4370458496U, 4378852736U,
4387238528U, 4395630208U, 4404019072U, 4412407424U, 4420790656U,
4429182848U, 4437571456U, 4445962112U, 4454344064U, 4462738048U,
4471119232U, 4479516544U, 4487904128U, 4496289664U, 4504682368U,
4513068416U, 4521459584U, 4529846144U, 4538232704U, 4546619776U,
4555010176U, 4563402112U, 4571790208U, 4580174464U, 4588567936U,
4596957056U, 4605344896U, 4613734016U, 4622119808U, 4630511488U,
4638898816U, 4647287936U, 4655675264U, 4664065664U, 4672451968U,
4680842624U, 4689231488U, 4697620352U, 4706007424U, 4714397056U,
4722786176U, 4731173248U, 4739562368U, 4747951744U, 4756340608U,
4764727936U, 4773114496U, 4781504384U, 4789894784U, 4798283648U,
4806667648U, 4815059584U, 4823449472U, 4831835776U, 4840226176U,
4848612224U, 4857003392U, 4865391488U, 4873780096U, 4882169728U,
4890557312U, 4898946944U, 4907333248U, 4915722368U, 4924110976U,
4932499328U, 4940889728U, 4949276032U, 4957666432U, 4966054784U,
4974438016U, 4982831488U, 4991221376U, 4999607168U, 5007998848U,
5016386432U, 5024763776U, 5033164672U, 5041544576U, 5049941888U,
5058329728U, 5066717056U, 5075107456U, 5083494272U, 5091883904U,
5100273536U, 5108662144U, 5117048192U, 5125436032U, 5133827456U,
5142215296U, 5150605184U, 5158993024U, 5167382144U, 5175769472U,
5184157568U, 5192543872U, 5200936064U, 5209324928U, 5217711232U,
5226102656U, 5234490496U, 5242877312U, 5251263872U, 5259654016U,
5268040832U, 5276434304U, 5284819328U, 5293209728U, 5301598592U,
5309986688U, 5318374784U, 5326764416U, 5335151488U, 5343542144U,
5351929472U, 5360319872U, 5368706944U, 5377096576U, 5385484928U,
5393871232U, 5402263424U, 5410650496U, 5419040384U, 5427426944U,
5435816576U, 5444205952U, 5452594816U, 5460981376U, 5469367936U,
5477760896U, 5486148736U, 5494536832U, 5502925952U, 5511315328U,
5519703424U, 5528089984U, 5536481152U, 5544869504U, 5553256064U,
5561645696U, 5570032768U, 5578423936U, 5586811264U, 5595193216U,
5603585408U, 5611972736U, 5620366208U, 5628750464U, 5637143936U,
5645528192U, 5653921408U, 5662310272U, 5670694784U, 5679082624U,
5687474048U, 5695864448U, 5704251008U, 5712641408U, 5721030272U,
5729416832U, 5737806208U, 5746194304U, 5754583936U, 5762969984U,
5771358592U, 5779748224U, 5788137856U, 5796527488U, 5804911232U,
5813300608U, 5821692544U, 5830082176U, 5838468992U, 5846855552U,
5855247488U, 5863636096U, 5872024448U, 5880411008U, 5888799872U,
5897186432U, 5905576832U, 5913966976U, 5922352768U, 5930744704U,
5939132288U, 5947522432U, 5955911296U, 5964299392U, 5972688256U,
5981074304U, 5989465472U, 5997851008U, 6006241408U, 6014627968U,
6023015552U, 6031408256U, 6039796096U, 6048185216U, 6056574848U,
6064963456U, 6073351808U, 6081736064U, 6090128768U, 6098517632U,
6106906496U, 6115289216U, 6123680896U, 6132070016U, 6140459648U,
6148849024U, 6157237376U, 6165624704U, 6174009728U, 6182403712U,
6190792064U, 6199176064U, 6207569792U, 6215952256U, 6224345216U,
6232732544U, 6241124224U, 6249510272U, 6257899136U, 6266287744U,
6274676864U, 6283065728U, 6291454336U, 6299843456U, 6308232064U,
6316620928U, 6325006208U, 6333395584U, 6341784704U, 6350174848U,
6358562176U, 6366951296U, 6375337856U, 6383729536U, 6392119168U,
6400504192U, 6408895616U, 6417283456U, 6425673344U, 6434059136U,
6442444672U, 6450837376U, 6459223424U, 6467613056U, 6476004224U,
6484393088U, 6492781952U, 6501170048U, 6509555072U, 6517947008U,
6526336384U, 6534725504U, 6543112832U, 6551500672U, 6559888768U,
6568278656U, 6576662912U, 6585055616U, 6593443456U, 6601834112U,
6610219648U, 6618610304U, 6626999168U, 6635385472U, 6643777408U,
6652164224U, 6660552832U, 6668941952U, 6677330048U, 6685719424U,
6694107776U, 6702493568U, 6710882176U, 6719274112U, 6727662976U,
6736052096U, 6744437632U, 6752825984U, 6761213824U, 6769604224U,
6777993856U, 6786383488U, 6794770816U, 6803158144U, 6811549312U,
6819937664U, 6828326528U, 6836706176U, 6845101696U, 6853491328U,
6861880448U, 6870269312U, 6878655104U, 6887046272U, 6895433344U,
6903822208U, 6912212864U, 6920596864U, 6928988288U, 6937377152U,
6945764992U, 6954149248U, 6962544256U, 6970928768U, 6979317376U,
6987709312U, 6996093824U, 7004487296U, 7012875392U, 7021258624U,
7029652352U, 7038038912U, 7046427776U, 7054818944U, 7063207808U,
7071595136U, 7079980928U, 7088372608U, 7096759424U, 7105149824U,
7113536896U, 7121928064U, 7130315392U, 7138699648U, 7147092352U,
7155479168U, 7163865728U, 7172249984U, 7180648064U, 7189036672U,
7197424768U, 7205810816U, 7214196608U, 7222589824U, 7230975104U,
7239367552U, 7247755904U, 7256145536U, 7264533376U, 7272921472U,
7281308032U, 7289694848U, 7298088832U, 7306471808U, 7314864512U,
7323253888U, 7331643008U, 7340029568U, 7348419712U, 7356808832U,
7365196672U, 7373585792U, 7381973888U, 7390362752U, 7398750592U,
7407138944U, 7415528576U, 7423915648U, 7432302208U, 7440690304U,
7449080192U, 7457472128U, 7465860992U, 7474249088U, 7482635648U,
7491023744U, 7499412608U, 7507803008U, 7516192384U, 7524579968U,
7532967296U, 7541358464U, 7549745792U, 7558134656U, 7566524032U,
7574912896U, 7583300992U, 7591690112U, 7600075136U, 7608466816U,
7616854912U, 7625244544U, 7633629824U, 7642020992U, 7650410368U,
7658794112U, 7667187328U, 7675574912U, 7683961984U, 7692349568U,
7700739712U, 7709130368U, 7717519232U, 7725905536U, 7734295424U,
7742683264U, 7751069056U, 7759457408U, 7767849088U, 7776238208U,
7784626816U, 7793014912U, 7801405312U, 7809792128U, 7818179968U,
7826571136U, 7834957184U, 7843347328U, 7851732352U, 7860124544U,
7868512384U, 7876902016U, 7885287808U, 7893679744U, 7902067072U,
7910455936U, 7918844288U, 7927230848U, 7935622784U, 7944009344U,
7952400256U, 7960786048U, 7969176704U, 7977565312U, 7985953408U,
7994339968U, 8002730368U, 8011119488U, 8019508096U, 8027896192U,
8036285056U, 8044674688U, 8053062272U, 8061448832U, 8069838464U,
8078227328U, 8086616704U, 8095006592U, 8103393664U, 8111783552U,
8120171392U, 8128560256U, 8136949376U, 8145336704U, 8153726848U,
8162114944U, 8170503296U, 8178891904U, 8187280768U, 8195669632U,
8204058496U, 8212444544U, 8220834176U, 8229222272U, 8237612672U,
8246000768U, 8254389376U, 8262775168U, 8271167104U, 8279553664U,
8287944064U, 8296333184U, 8304715136U, 8313108352U, 8321497984U,
8329885568U, 8338274432U, 8346663296U, 8355052928U, 8363441536U,
8371828352U, 8380217984U, 8388606592U, 8396996224U, 8405384576U,
8413772672U, 8422161536U, 8430549376U, 8438939008U, 8447326592U,
8455715456U, 8464104832U, 8472492928U, 8480882048U, 8489270656U,
8497659776U, 8506045312U, 8514434944U, 8522823808U, 8531208832U,
8539602304U, 8547990656U, 8556378752U, 8564768384U, 8573154176U,
8581542784U, 8589933952U, 8598322816U, 8606705024U, 8615099264U,
8623487872U, 8631876992U, 8640264064U, 8648653952U, 8657040256U,
8665430656U, 8673820544U, 8682209152U, 8690592128U, 8698977152U,
8707374464U, 8715763328U, 8724151424U, 8732540032U, 8740928384U,
8749315712U, 8757704576U, 8766089344U, 8774480768U, 8782871936U,
8791260032U, 8799645824U, 8808034432U, 8816426368U, 8824812928U,
8833199488U, 8841591424U, 8849976448U, 8858366336U, 8866757248U,
8875147136U, 8883532928U, 8891923328U, 8900306816U, 8908700288U,
8917088384U, 8925478784U, 8933867392U, 8942250368U, 8950644608U,
8959032704U, 8967420544U, 8975809664U, 8984197504U, 8992584064U,
9000976256U, 9009362048U, 9017752448U, 9026141312U, 9034530688U,
9042917504U, 9051307904U, 9059694208U, 9068084864U, 9076471424U,
9084861824U, 9093250688U, 9101638528U, 9110027648U, 9118416512U,
9126803584U, 9135188096U, 9143581312U, 9151969664U, 9160356224U,
9168747136U, 9177134464U, 9185525632U, 9193910144U, 9202302848U,
9210690688U, 9219079552U, 9227465344U, 9235854464U, 9244244864U,
9252633472U, 9261021824U, 9269411456U, 9277799296U, 9286188928U,
9294574208U, 9302965888U, 9311351936U, 9319740032U, 9328131968U,
9336516736U, 9344907392U, 9353296768U, 9361685888U, 9370074752U,
9378463616U, 9386849408U, 9395239808U, 9403629184U, 9412016512U,
9420405376U, 9428795008U, 9437181568U, 9445570688U, 9453960832U,
9462346624U, 9470738048U, 9479121536U, 9487515008U, 9495903616U,
9504289664U, 9512678528U, 9521067904U, 9529456256U, 9537843584U,
9546233728U, 9554621312U, 9563011456U, 9571398784U, 9579788672U,
9588178304U, 9596567168U, 9604954496U, 9613343104U, 9621732992U,
9630121856U, 9638508416U, 9646898816U, 9655283584U, 9663675776U,
9672061312U, 9680449664U, 9688840064U, 9697230464U, 9705617536U,
9714003584U, 9722393984U, 9730772608U, 9739172224U, 9747561088U,
9755945344U, 9764338816U, 9772726144U, 9781116544U, 9789503872U,
9797892992U, 9806282624U, 9814670464U, 9823056512U, 9831439232U,
9839833984U, 9848224384U, 9856613504U, 9865000576U, 9873391232U,
9881772416U, 9890162816U, 9898556288U, 9906940544U, 9915333248U,
9923721088U, 9932108672U, 9940496512U, 9948888448U, 9957276544U,
9965666176U, 9974048384U, 9982441088U, 9990830464U, 9999219584U,
10007602816U, 10015996544U, 10024385152U, 10032774016U, 10041163648U,
10049548928U, 10057940096U, 10066329472U, 10074717824U, 10083105152U,
10091495296U, 10099878784U, 10108272256U, 10116660608U, 10125049216U,
10133437312U, 10141825664U, 10150213504U, 10158601088U, 10166991232U,
10175378816U, 10183766144U, 10192157312U, 10200545408U, 10208935552U,
10217322112U, 10225712768U, 10234099328U, 10242489472U, 10250876032U,
10259264896U, 10267656064U, 10276042624U, 10284429184U, 10292820352U,
10301209472U, 10309598848U, 10317987712U, 10326375296U, 10334763392U,
10343153536U, 10351541632U, 10359930752U, 10368318592U, 10376707456U,
10385096576U, 10393484672U, 10401867136U, 10410262144U, 10418647424U,
10427039104U, 10435425664U, 10443810176U, 10452203648U, 10460589952U,
10468982144U, 10477369472U, 10485759104U, 10494147712U, 10502533504U,
10510923392U, 10519313536U, 10527702656U, 10536091264U, 10544478592U,
10552867712U, 10561255808U, 10569642368U, 10578032768U, 10586423168U,
10594805632U, 10603200128U, 10611588992U, 10619976064U, 10628361344U,
10636754048U, 10645143424U, 10653531776U, 10661920384U, 10670307968U,
10678696832U, 10687086464U, 10695475072U, 10703863168U, 10712246144U,
10720639616U, 10729026688U, 10737414784U, 10745806208U, 10754190976U,
10762581376U, 10770971264U, 10779356288U, 10787747456U, 10796135552U,
10804525184U, 10812915584U, 10821301888U, 10829692288U, 10838078336U,
10846469248U, 10854858368U, 10863247232U, 10871631488U, 10880023424U,
10888412032U, 10896799616U, 10905188992U, 10913574016U, 10921964672U,
10930352768U, 10938742912U, 10947132544U, 10955518592U, 10963909504U,
10972298368U, 10980687488U, 10989074816U, 10997462912U, 11005851776U,
11014241152U, 11022627712U, 11031017344U, 11039403904U, 11047793024U,
11056184704U, 11064570752U, 11072960896U, 11081343872U, 11089737856U,
11098128256U, 11106514816U, 11114904448U, 11123293568U, 11131680128U,
11140065152U, 11148458368U, 11156845696U, 11165236864U, 11173624192U,
11182013824U, 11190402688U, 11198790784U, 11207179136U, 11215568768U,
11223957376U, 11232345728U, 11240734592U, 11249122688U, 11257511296U,
11265899648U, 11274285952U, 11282675584U, 11291065472U, 11299452544U,
11307842432U, 11316231296U, 11324616832U, 11333009024U, 11341395584U,
11349782656U, 11358172288U, 11366560384U, 11374950016U, 11383339648U,
11391721856U, 11400117376U, 11408504192U, 11416893568U, 11425283456U,
11433671552U, 11442061184U, 11450444672U, 11458837888U, 11467226752U,
11475611776U, 11484003968U, 11492392064U, 11500780672U, 11509169024U,
11517550976U, 11525944448U, 11534335616U, 11542724224U, 11551111808U,
11559500672U, 11567890304U, 11576277376U, 11584667008U, 11593056128U,
11601443456U, 11609830016U, 11618221952U, 11626607488U, 11634995072U,
11643387776U, 11651775104U, 11660161664U, 11668552576U, 11676940928U,
11685330304U, 11693718656U, 11702106496U, 11710496128U, 11718882688U,
11727273088U, 11735660416U, 11744050048U, 11752437376U, 11760824704U,
11769216128U, 11777604736U, 11785991296U, 11794381952U, 11802770048U,
11811157888U, 11819548544U, 11827932544U, 11836324736U, 11844713344U,
11853100928U, 11861486464U, 11869879936U, 11878268032U, 11886656896U,
11895044992U, 11903433088U, 11911822976U, 11920210816U, 11928600448U,
11936987264U, 11945375872U, 11953761152U, 11962151296U, 11970543488U,
11978928512U, 11987320448U, 11995708288U, 12004095104U, 12012486272U,
12020875136U, 12029255552U, 12037652096U, 12046039168U, 12054429568U,
12062813824U, 12071206528U, 12079594624U, 12087983744U, 12096371072U,
12104759936U, 12113147264U, 12121534592U, 12129924992U, 12138314624U,
12146703232U, 12155091584U, 12163481216U, 12171864704U, 12180255872U,
12188643968U, 12197034112U, 12205424512U, 12213811328U, 12222199424U,
12230590336U, 12238977664U, 12247365248U, 12255755392U, 12264143488U,
12272531584U, 12280920448U, 12289309568U, 12297694592U, 12306086528U,
12314475392U, 12322865024U, 12331253632U, 12339640448U, 12348029312U,
12356418944U, 12364805248U, 12373196672U, 12381580928U, 12389969024U,
12398357632U, 12406750592U, 12415138432U, 12423527552U, 12431916416U,
12440304512U, 12448692352U, 12457081216U, 12465467776U, 12473859968U,
12482245504U, 12490636672U, 12499025536U, 12507411584U, 12515801728U,
12524190592U, 12532577152U, 12540966272U, 12549354368U, 12557743232U,
12566129536U, 12574523264U, 12582911872U, 12591299456U, 12599688064U,
12608074624U, 12616463488U, 12624845696U, 12633239936U, 12641631616U,
12650019968U, 12658407296U, 12666795136U, 12675183232U, 12683574656U,
12691960192U, 12700350592U, 12708740224U, 12717128576U, 12725515904U,
12733906816U, 12742295168U, 12750680192U, 12759071872U, 12767460736U,
12775848832U, 12784236928U, 12792626816U, 12801014656U, 12809404288U,
12817789312U, 12826181504U, 12834568832U, 12842954624U, 12851345792U,
12859732352U, 12868122496U, 12876512128U, 12884901248U, 12893289088U,
12901672832U, 12910067584U, 12918455168U, 12926842496U, 12935232896U,
12943620736U, 12952009856U, 12960396928U, 12968786816U, 12977176192U,
12985563776U, 12993951104U, 13002341504U, 13010730368U, 13019115392U,
13027506304U, 13035895168U, 13044272512U, 13052673152U, 13061062528U,
13069446272U, 13077838976U, 13086227072U, 13094613632U, 13103000192U,
13111393664U, 13119782528U, 13128157568U, 13136559232U, 13144945024U,
13153329536U, 13161724288U, 13170111872U, 13178502784U, 13186884736U,
13195279744U, 13203667072U, 13212057472U, 13220445824U, 13228832128U,
13237221248U, 13245610624U, 13254000512U, 13262388352U, 13270777472U,
13279166336U, 13287553408U, 13295943296U, 13304331904U, 13312719488U,
13321108096U, 13329494656U, 13337885824U, 13346274944U, 13354663808U,
13363051136U, 13371439232U, 13379825024U, 13388210816U, 13396605056U,
13404995456U, 13413380224U, 13421771392U, 13430159744U, 13438546048U,
13446937216U, 13455326848U, 13463708288U, 13472103808U, 13480492672U,
13488875648U, 13497269888U, 13505657728U, 13514045312U, 13522435712U,
13530824576U, 13539210112U, 13547599232U, 13555989376U, 13564379008U,
13572766336U, 13581154432U, 13589544832U, 13597932928U, 13606320512U,
13614710656U, 13623097472U, 13631477632U, 13639874944U, 13648264064U,
13656652928U, 13665041792U, 13673430656U, 13681818496U, 13690207616U,
13698595712U, 13706982272U, 13715373184U, 13723762048U, 13732150144U,
13740536704U, 13748926592U, 13757316224U, 13765700992U, 13774090112U,
13782477952U, 13790869376U, 13799259008U, 13807647872U, 13816036736U,
13824425344U, 13832814208U, 13841202304U, 13849591424U, 13857978752U,
13866368896U, 13874754688U, 13883145344U, 13891533184U, 13899919232U,
13908311168U, 13916692096U, 13925085056U, 13933473152U, 13941866368U,
13950253696U, 13958643584U, 13967032192U, 13975417216U, 13983807616U,
13992197504U, 14000582272U, 14008973696U, 14017363072U, 14025752192U,
14034137984U, 14042528384U, 14050918016U, 14059301504U, 14067691648U,
14076083584U, 14084470144U, 14092852352U, 14101249664U, 14109635968U,
14118024832U, 14126407552U, 14134804352U, 14143188608U, 14151577984U,
14159968384U, 14168357248U, 14176741504U, 14185127296U, 14193521024U,
14201911424U, 14210301824U, 14218685056U, 14227067264U, 14235467392U,
14243855488U, 14252243072U, 14260630144U, 14269021568U, 14277409408U,
14285799296U, 14294187904U, 14302571392U, 14310961792U, 14319353728U,
14327738752U, 14336130944U, 14344518784U, 14352906368U, 14361296512U,
14369685376U, 14378071424U, 14386462592U, 14394848128U, 14403230848U,
14411627392U, 14420013952U, 14428402304U, 14436793472U, 14445181568U,
14453569664U, 14461959808U, 14470347904U, 14478737024U, 14487122816U,
14495511424U, 14503901824U, 14512291712U, 14520677504U, 14529064832U,
14537456768U, 14545845632U, 14554234496U, 14562618496U, 14571011456U,
14579398784U, 14587789184U, 14596172672U, 14604564608U, 14612953984U,
14621341312U, 14629724288U, 14638120832U, 14646503296U, 14654897536U,
14663284864U, 14671675264U, 14680061056U, 14688447616U, 14696835968U,
14705228416U, 14713616768U, 14722003328U, 14730392192U, 14738784128U,
14747172736U, 14755561088U, 14763947648U, 14772336512U, 14780725376U,
14789110144U, 14797499776U, 14805892736U, 14814276992U, 14822670208U,
14831056256U, 14839444352U, 14847836032U, 14856222848U, 14864612992U,
14872997504U, 14881388672U, 14889775744U, 14898165376U, 14906553472U,
14914944896U, 14923329664U, 14931721856U, 14940109696U, 14948497024U,
14956887424U, 14965276544U, 14973663616U, 14982053248U, 14990439808U,
14998830976U, 15007216768U, 15015605888U, 15023995264U, 15032385152U,
15040768384U, 15049154944U, 15057549184U, 15065939072U, 15074328448U,
15082715008U, 15091104128U, 15099493504U, 15107879296U, 15116269184U,
15124659584U, 15133042304U, 15141431936U, 15149824384U, 15158214272U,
15166602368U, 15174991232U, 15183378304U, 15191760512U, 15200154496U,
15208542592U, 15216931712U, 15225323392U, 15233708416U, 15242098048U,
15250489216U, 15258875264U, 15267265408U, 15275654528U, 15284043136U,
15292431488U, 15300819584U, 15309208192U, 15317596544U, 15325986176U,
15334374784U, 15342763648U, 15351151744U, 15359540608U, 15367929728U,
15376318336U, 15384706432U, 15393092992U, 15401481856U, 15409869952U,
15418258816U, 15426649984U, 15435037568U, 15443425664U, 15451815296U,
15460203392U, 15468589184U, 15476979328U, 15485369216U, 15493755776U,
15502146944U, 15510534272U, 15518924416U, 15527311232U, 15535699072U,
15544089472U, 15552478336U, 15560866688U, 15569254528U, 15577642624U,
15586031488U, 15594419072U, 15602809472U, 15611199104U, 15619586432U,
15627975296U, 15636364928U, 15644753792U, 15653141888U, 15661529216U,
15669918848U, 15678305152U, 15686696576U, 15695083136U, 15703474048U,
15711861632U, 15720251264U, 15728636288U, 15737027456U, 15745417088U,
15753804928U, 15762194048U, 15770582656U, 15778971008U, 15787358336U,
15795747712U, 15804132224U, 15812523392U, 15820909696U, 15829300096U,
15837691264U, 15846071936U, 15854466944U, 15862855808U, 15871244672U,
15879634816U, 15888020608U, 15896409728U, 15904799104U, 15913185152U,
15921577088U, 15929966464U, 15938354816U, 15946743424U, 15955129472U,
15963519872U, 15971907968U, 15980296064U, 15988684928U, 15997073024U,
16005460864U, 16013851264U, 16022241152U, 16030629248U, 16039012736U,
16047406976U, 16055794816U, 16064181376U, 16072571264U, 16080957824U,
16089346688U, 16097737856U, 16106125184U, 16114514816U, 16122904192U,
16131292544U, 16139678848U, 16148066944U, 16156453504U, 16164839552U,
16173236096U, 16181623424U, 16190012032U, 16198401152U, 16206790528U,
16215177344U, 16223567744U, 16231956352U, 16240344704U, 16248731008U,
16257117824U, 16265504384U, 16273898624U, 16282281856U, 16290668672U,
16299064192U, 16307449216U, 16315842176U, 16324230016U, 16332613504U,
16341006464U, 16349394304U, 16357783168U, 16366172288U, 16374561664U,
16382951296U, 16391337856U, 16399726208U, 16408116352U, 16416505472U,
16424892032U, 16433282176U, 16441668224U, 16450058624U, 16458448768U,
16466836864U, 16475224448U, 16483613056U, 16492001408U, 16500391808U,
16508779648U, 16517166976U, 16525555328U, 16533944192U, 16542330752U,
16550719616U, 16559110528U, 16567497088U, 16575888512U, 16584274816U,
16592665472U, 16601051008U, 16609442944U, 16617832064U, 16626218624U,
16634607488U, 16642996096U, 16651385728U, 16659773824U, 16668163712U,
16676552576U, 16684938112U, 16693328768U, 16701718144U, 16710095488U,
16718492288U, 16726883968U, 16735272832U, 16743661184U, 16752049792U,
16760436608U, 16768827008U, 16777214336U, 16785599104U, 16793992832U,
16802381696U, 16810768768U, 16819151744U, 16827542656U, 16835934848U,
16844323712U, 16852711552U, 16861101952U, 16869489536U, 16877876864U,
16886265728U, 16894653056U, 16903044736U, 16911431296U, 16919821696U,
16928207488U, 16936592768U, 16944987776U, 16953375616U, 16961763968U,
16970152832U, 16978540928U, 16986929536U, 16995319168U, 17003704448U,
17012096896U, 17020481152U, 17028870784U, 17037262208U, 17045649536U,
17054039936U, 17062426496U, 17070814336U, 17079205504U, 17087592064U,
17095978112U, 17104369024U, 17112759424U, 17121147776U, 17129536384U,
17137926016U, 17146314368U, 17154700928U, 17163089792U, 17171480192U,
17179864192U, 17188256896U, 17196644992U, 17205033856U, 17213423488U,
17221811072U, 17230198912U, 17238588032U, 17246976896U, 17255360384U,
17263754624U, 17272143232U, 17280530048U, 17288918912U, 17297309312U,
17305696384U, 17314085504U, 17322475136U, 17330863744U, 17339252096U,
17347640192U, 17356026496U, 17364413824U, 17372796544U, 17381190016U,
17389583488U, 17397972608U, 17406360704U, 17414748544U, 17423135872U,
17431527296U, 17439915904U, 17448303232U, 17456691584U, 17465081728U,
17473468288U, 17481857408U, 17490247552U, 17498635904U, 17507022464U,
17515409024U, 17523801728U, 17532189824U, 17540577664U, 17548966016U,
17557353344U, 17565741184U, 17574131584U, 17582519168U, 17590907008U,
17599296128U, 17607687808U, 17616076672U, 17624455808U, 17632852352U,
17641238656U, 17649630848U, 17658018944U, 17666403968U, 17674794112U,
17683178368U, 17691573376U, 17699962496U, 17708350592U, 17716739968U,
17725126528U, 17733517184U, 17741898112U, 17750293888U, 17758673024U,
17767070336U, 17775458432U, 17783848832U, 17792236928U, 17800625536U,
17809012352U, 17817402752U, 17825785984U, 17834178944U, 17842563968U,
17850955648U, 17859344512U, 17867732864U, 17876119424U, 17884511872U,
17892900224U, 17901287296U, 17909677696U, 17918058112U, 17926451072U,
17934843776U, 17943230848U, 17951609216U, 17960008576U, 17968397696U,
17976784256U, 17985175424U, 17993564032U, 18001952128U, 18010339712U,
18018728576U, 18027116672U, 18035503232U, 18043894144U, 18052283264U,
18060672128U, 18069056384U, 18077449856U, 18085837184U, 18094225792U,
18102613376U, 18111004544U, 18119388544U, 18127781248U, 18136170368U,
18144558976U, 18152947328U, 18161336192U, 18169724288U, 18178108544U,
18186498944U, 18194886784U, 18203275648U, 18211666048U, 18220048768U,
18228444544U, 18236833408U, 18245220736U
};
// Generated with the following Mathematica Code:
// GetCacheSizes[n_] := Module[{
// DataSetSizeBytesInit = 2^30,
// MixBytes = 128,
// DataSetGrowth = 2^23,
// HashBytes = 64,
// CacheMultiplier = 1024,
// j = 0},
// Reap[
// While[j < n,
// Module[{i = Floor[(DataSetSizeBytesInit + DataSetGrowth * j) / (CacheMultiplier * HashBytes)]},
// While[! PrimeQ[i], i--];
// Sow[i*HashBytes]; j++]]]][[2]][[1]]
const uint64_t cache_sizes[2048] = {
16776896U, 16907456U, 17039296U, 17170112U, 17301056U, 17432512U, 17563072U,
17693888U, 17824192U, 17955904U, 18087488U, 18218176U, 18349504U, 18481088U,
18611392U, 18742336U, 18874304U, 19004224U, 19135936U, 19267264U, 19398208U,
19529408U, 19660096U, 19791424U, 19922752U, 20053952U, 20184896U, 20315968U,
20446912U, 20576576U, 20709184U, 20840384U, 20971072U, 21102272U, 21233216U,
21364544U, 21494848U, 21626816U, 21757376U, 21887552U, 22019392U, 22151104U,
22281536U, 22412224U, 22543936U, 22675264U, 22806464U, 22935872U, 23068096U,
23198272U, 23330752U, 23459008U, 23592512U, 23723968U, 23854912U, 23986112U,
24116672U, 24247616U, 24378688U, 24509504U, 24640832U, 24772544U, 24903488U,
25034432U, 25165376U, 25296704U, 25427392U, 25558592U, 25690048U, 25820096U,
25951936U, 26081728U, 26214208U, 26345024U, 26476096U, 26606656U, 26737472U,
26869184U, 26998208U, 27131584U, 27262528U, 27393728U, 27523904U, 27655744U,
27786688U, 27917888U, 28049344U, 28179904U, 28311488U, 28441792U, 28573504U,
28700864U, 28835648U, 28966208U, 29096768U, 29228608U, 29359808U, 29490752U,
29621824U, 29752256U, 29882816U, 30014912U, 30144448U, 30273728U, 30406976U,
30538432U, 30670784U, 30799936U, 30932672U, 31063744U, 31195072U, 31325248U,
31456192U, 31588288U, 31719232U, 31850432U, 31981504U, 32110784U, 32243392U,
32372672U, 32505664U, 32636608U, 32767808U, 32897344U, 33029824U, 33160768U,
33289664U, 33423296U, 33554368U, 33683648U, 33816512U, 33947456U, 34076992U,
34208704U, 34340032U, 34471744U, 34600256U, 34734016U, 34864576U, 34993984U,
35127104U, 35258176U, 35386688U, 35518528U, 35650624U, 35782336U, 35910976U,
36044608U, 36175808U, 36305728U, 36436672U, 36568384U, 36699968U, 36830656U,
36961984U, 37093312U, 37223488U, 37355072U, 37486528U, 37617472U, 37747904U,
37879232U, 38009792U, 38141888U, 38272448U, 38403392U, 38535104U, 38660672U,
38795584U, 38925632U, 39059264U, 39190336U, 39320768U, 39452096U, 39581632U,
39713984U, 39844928U, 39974848U, 40107968U, 40238144U, 40367168U, 40500032U,
40631744U, 40762816U, 40894144U, 41023552U, 41155904U, 41286208U, 41418304U,
41547712U, 41680448U, 41811904U, 41942848U, 42073792U, 42204992U, 42334912U,
42467008U, 42597824U, 42729152U, 42860096U, 42991552U, 43122368U, 43253696U,
43382848U, 43515712U, 43646912U, 43777088U, 43907648U, 44039104U, 44170432U,
44302144U, 44433344U, 44564288U, 44694976U, 44825152U, 44956864U, 45088448U,
45219008U, 45350464U, 45481024U, 45612608U, 45744064U, 45874496U, 46006208U,
46136768U, 46267712U, 46399424U, 46529344U, 46660672U, 46791488U, 46923328U,
47053504U, 47185856U, 47316928U, 47447872U, 47579072U, 47710144U, 47839936U,
47971648U, 48103232U, 48234176U, 48365248U, 48496192U, 48627136U, 48757312U,
48889664U, 49020736U, 49149248U, 49283008U, 49413824U, 49545152U, 49675712U,
49807168U, 49938368U, 50069056U, 50200256U, 50331584U, 50462656U, 50593472U,
50724032U, 50853952U, 50986048U, 51117632U, 51248576U, 51379904U, 51510848U,
51641792U, 51773248U, 51903296U, 52035136U, 52164032U, 52297664U, 52427968U,
52557376U, 52690112U, 52821952U, 52952896U, 53081536U, 53213504U, 53344576U,
53475776U, 53608384U, 53738816U, 53870528U, 54000832U, 54131776U, 54263744U,
54394688U, 54525248U, 54655936U, 54787904U, 54918592U, 55049152U, 55181248U,
55312064U, 55442752U, 55574336U, 55705024U, 55836224U, 55967168U, 56097856U,
56228672U, 56358592U, 56490176U, 56621888U, 56753728U, 56884928U, 57015488U,
57146816U, 57278272U, 57409216U, 57540416U, 57671104U, 57802432U, 57933632U,
58064576U, 58195264U, 58326976U, 58457408U, 58588864U, 58720192U, 58849984U,
58981696U, 59113024U, 59243456U, 59375552U, 59506624U, 59637568U, 59768512U,
59897792U, 60030016U, 60161984U, 60293056U, 60423872U, 60554432U, 60683968U,
60817216U, 60948032U, 61079488U, 61209664U, 61341376U, 61471936U, 61602752U,
61733696U, 61865792U, 61996736U, 62127808U, 62259136U, 62389568U, 62520512U,
62651584U, 62781632U, 62910784U, 63045056U, 63176128U, 63307072U, 63438656U,
63569216U, 63700928U, 63831616U, 63960896U, 64093888U, 64225088U, 64355392U,
64486976U, 64617664U, 64748608U, 64879424U, 65009216U, 65142464U, 65273792U,
65402816U, 65535424U, 65666752U, 65797696U, 65927744U, 66060224U, 66191296U,
66321344U, 66453056U, 66584384U, 66715328U, 66846656U, 66977728U, 67108672U,
67239104U, 67370432U, 67501888U, 67631296U, 67763776U, 67895104U, 68026304U,
68157248U, 68287936U, 68419264U, 68548288U, 68681408U, 68811968U, 68942912U,
69074624U, 69205568U, 69337024U, 69467584U, 69599168U, 69729472U, 69861184U,
69989824U, 70122944U, 70253888U, 70385344U, 70515904U, 70647232U, 70778816U,
70907968U, 71040832U, 71171648U, 71303104U, 71432512U, 71564992U, 71695168U,
71826368U, 71958464U, 72089536U, 72219712U, 72350144U, 72482624U, 72613568U,
72744512U, 72875584U, 73006144U, 73138112U, 73268672U, 73400128U, 73530944U,
73662272U, 73793344U, 73924544U, 74055104U, 74185792U, 74316992U, 74448832U,
74579392U, 74710976U, 74841664U, 74972864U, 75102784U, 75233344U, 75364544U,
75497024U, 75627584U, 75759296U, 75890624U, 76021696U, 76152256U, 76283072U,
76414144U, 76545856U, 76676672U, 76806976U, 76937792U, 77070016U, 77200832U,
77331392U, 77462464U, 77593664U, 77725376U, 77856448U, 77987776U, 78118336U,
78249664U, 78380992U, 78511424U, 78642496U, 78773056U, 78905152U, 79033664U,
79166656U, 79297472U, 79429568U, 79560512U, 79690816U, 79822784U, 79953472U,
80084672U, 80214208U, 80346944U, 80477632U, 80608576U, 80740288U, 80870848U,
81002048U, 81133504U, 81264448U, 81395648U, 81525952U, 81657536U, 81786304U,
81919808U, 82050112U, 82181312U, 82311616U, 82443968U, 82573376U, 82705984U,
82835776U, 82967744U, 83096768U, 83230528U, 83359552U, 83491264U, 83622464U,
83753536U, 83886016U, 84015296U, 84147776U, 84277184U, 84409792U, 84540608U,
84672064U, 84803008U, 84934336U, 85065152U, 85193792U, 85326784U, 85458496U,
85589312U, 85721024U, 85851968U, 85982656U, 86112448U, 86244416U, 86370112U,
86506688U, 86637632U, 86769344U, 86900672U, 87031744U, 87162304U, 87293632U,
87424576U, 87555392U, 87687104U, 87816896U, 87947968U, 88079168U, 88211264U,
88341824U, 88473152U, 88603712U, 88735424U, 88862912U, 88996672U, 89128384U,
89259712U, 89390272U, 89521984U, 89652544U, 89783872U, 89914816U, 90045376U,
90177088U, 90307904U, 90438848U, 90569152U, 90700096U, 90832832U, 90963776U,
91093696U, 91223744U, 91356992U, 91486784U, 91618496U, 91749824U, 91880384U,
92012224U, 92143552U, 92273344U, 92405696U, 92536768U, 92666432U, 92798912U,
92926016U, 93060544U, 93192128U, 93322816U, 93453632U, 93583936U, 93715136U,
93845056U, 93977792U, 94109504U, 94240448U, 94371776U, 94501184U, 94632896U,
94764224U, 94895552U, 95023424U, 95158208U, 95287744U, 95420224U, 95550016U,
95681216U, 95811904U, 95943872U, 96075328U, 96203584U, 96337856U, 96468544U,
96599744U, 96731072U, 96860992U, 96992576U, 97124288U, 97254848U, 97385536U,
97517248U, 97647808U, 97779392U, 97910464U, 98041408U, 98172608U, 98303168U,
98434496U, 98565568U, 98696768U, 98827328U, 98958784U, 99089728U, 99220928U,
99352384U, 99482816U, 99614272U, 99745472U, 99876416U, 100007104U,
100138048U, 100267072U, 100401088U, 100529984U, 100662592U, 100791872U,
100925248U, 101056064U, 101187392U, 101317952U, 101449408U, 101580608U,
101711296U, 101841728U, 101973824U, 102104896U, 102235712U, 102366016U,
102498112U, 102628672U, 102760384U, 102890432U, 103021888U, 103153472U,
103284032U, 103415744U, 103545152U, 103677248U, 103808576U, 103939648U,
104070976U, 104201792U, 104332736U, 104462528U, 104594752U, 104725952U,
104854592U, 104988608U, 105118912U, 105247808U, 105381184U, 105511232U,
105643072U, 105774784U, 105903296U, 106037056U, 106167872U, 106298944U,
106429504U, 106561472U, 106691392U, 106822592U, 106954304U, 107085376U,
107216576U, 107346368U, 107478464U, 107609792U, 107739712U, 107872192U,
108003136U, 108131392U, 108265408U, 108396224U, 108527168U, 108657344U,
108789568U, 108920384U, 109049792U, 109182272U, 109312576U, 109444928U,
109572928U, 109706944U, 109837888U, 109969088U, 110099648U, 110230976U,
110362432U, 110492992U, 110624704U, 110755264U, 110886208U, 111017408U,
111148864U, 111279296U, 111410752U, 111541952U, 111673024U, 111803456U,
111933632U, 112066496U, 112196416U, 112328512U, 112457792U, 112590784U,
112715968U, 112852672U, 112983616U, 113114944U, 113244224U, 113376448U,
113505472U, 113639104U, 113770304U, 113901376U, 114031552U, 114163264U,
114294592U, 114425536U, 114556864U, 114687424U, 114818624U, 114948544U,
115080512U, 115212224U, 115343296U, 115473472U, 115605184U, 115736128U,
115867072U, 115997248U, 116128576U, 116260288U, 116391488U, 116522944U,
116652992U, 116784704U, 116915648U, 117046208U, 117178304U, 117308608U,
117440192U, 117569728U, 117701824U, 117833024U, 117964096U, 118094656U,
118225984U, 118357312U, 118489024U, 118617536U, 118749632U, 118882112U,
119012416U, 119144384U, 119275328U, 119406016U, 119537344U, 119668672U,
119798464U, 119928896U, 120061376U, 120192832U, 120321728U, 120454336U,
120584512U, 120716608U, 120848192U, 120979136U, 121109056U, 121241408U,
121372352U, 121502912U, 121634752U, 121764416U, 121895744U, 122027072U,
122157632U, 122289088U, 122421184U, 122550592U, 122682944U, 122813888U,
122945344U, 123075776U, 123207488U, 123338048U, 123468736U, 123600704U,
123731264U, 123861952U, 123993664U, 124124608U, 124256192U, 124386368U,
124518208U, 124649024U, 124778048U, 124911296U, 125041088U, 125173696U,
125303744U, 125432896U, 125566912U, 125696576U, 125829056U, 125958592U,
126090304U, 126221248U, 126352832U, 126483776U, 126615232U, 126746432U,
126876608U, 127008704U, 127139392U, 127270336U, 127401152U, 127532224U,
127663552U, 127794752U, 127925696U, 128055232U, 128188096U, 128319424U,
128449856U, 128581312U, 128712256U, 128843584U, 128973632U, 129103808U,
129236288U, 129365696U, 129498944U, 129629888U, 129760832U, 129892288U,
130023104U, 130154048U, 130283968U, 130416448U, 130547008U, 130678336U,
130807616U, 130939456U, 131071552U, 131202112U, 131331776U, 131464384U,
131594048U, 131727296U, 131858368U, 131987392U, 132120256U, 132250816U,
132382528U, 132513728U, 132644672U, 132774976U, 132905792U, 133038016U,
133168832U, 133299392U, 133429312U, 133562048U, 133692992U, 133823296U,
133954624U, 134086336U, 134217152U, 134348608U, 134479808U, 134607296U,
134741056U, 134872384U, 135002944U, 135134144U, 135265472U, 135396544U,
135527872U, 135659072U, 135787712U, 135921472U, 136052416U, 136182848U,
136313792U, 136444864U, 136576448U, 136707904U, 136837952U, 136970048U,
137099584U, 137232064U, 137363392U, 137494208U, 137625536U, 137755712U,
137887424U, 138018368U, 138149824U, 138280256U, 138411584U, 138539584U,
138672832U, 138804928U, 138936128U, 139066688U, 139196864U, 139328704U,
139460032U, 139590208U, 139721024U, 139852864U, 139984576U, 140115776U,
140245696U, 140376512U, 140508352U, 140640064U, 140769856U, 140902336U,
141032768U, 141162688U, 141294016U, 141426496U, 141556544U, 141687488U,
141819584U, 141949888U, 142080448U, 142212544U, 142342336U, 142474432U,
142606144U, 142736192U, 142868288U, 142997824U, 143129408U, 143258944U,
143392448U, 143523136U, 143653696U, 143785024U, 143916992U, 144045632U,
144177856U, 144309184U, 144440768U, 144570688U, 144701888U, 144832448U,
144965056U, 145096384U, 145227584U, 145358656U, 145489856U, 145620928U,
145751488U, 145883072U, 146011456U, 146144704U, 146275264U, 146407232U,
146538176U, 146668736U, 146800448U, 146931392U, 147062336U, 147193664U,
147324224U, 147455936U, 147586624U, 147717056U, 147848768U, 147979456U,
148110784U, 148242368U, 148373312U, 148503232U, 148635584U, 148766144U,
148897088U, 149028416U, 149159488U, 149290688U, 149420224U, 149551552U,
149683136U, 149814976U, 149943616U, 150076352U, 150208064U, 150338624U,
150470464U, 150600256U, 150732224U, 150862784U, 150993088U, 151125952U,
151254976U, 151388096U, 151519168U, 151649728U, 151778752U, 151911104U,
152042944U, 152174144U, 152304704U, 152435648U, 152567488U, 152698816U,
152828992U, 152960576U, 153091648U, 153222976U, 153353792U, 153484096U,
153616192U, 153747008U, 153878336U, 154008256U, 154139968U, 154270912U,
154402624U, 154533824U, 154663616U, 154795712U, 154926272U, 155057984U,
155188928U, 155319872U, 155450816U, 155580608U, 155712064U, 155843392U,
155971136U, 156106688U, 156237376U, 156367424U, 156499264U, 156630976U,
156761536U, 156892352U, 157024064U, 157155008U, 157284416U, 157415872U,
157545536U, 157677248U, 157810496U, 157938112U, 158071744U, 158203328U,
158334656U, 158464832U, 158596288U, 158727616U, 158858048U, 158988992U,
159121216U, 159252416U, 159381568U, 159513152U, 159645632U, 159776192U,
159906496U, 160038464U, 160169536U, 160300352U, 160430656U, 160563008U,
160693952U, 160822208U, 160956352U, 161086784U, 161217344U, 161349184U,
161480512U, 161611456U, 161742272U, 161873216U, 162002752U, 162135872U,
162266432U, 162397888U, 162529216U, 162660032U, 162790976U, 162922048U,
163052096U, 163184576U, 163314752U, 163446592U, 163577408U, 163707968U,
163839296U, 163969984U, 164100928U, 164233024U, 164364224U, 164494912U,
164625856U, 164756672U, 164887616U, 165019072U, 165150016U, 165280064U,
165412672U, 165543104U, 165674944U, 165805888U, 165936832U, 166067648U,
166198336U, 166330048U, 166461248U, 166591552U, 166722496U, 166854208U,
166985408U, 167116736U, 167246656U, 167378368U, 167508416U, 167641024U,
167771584U, 167903168U, 168034112U, 168164032U, 168295744U, 168427456U,
168557632U, 168688448U, 168819136U, 168951616U, 169082176U, 169213504U,
169344832U, 169475648U, 169605952U, 169738048U, 169866304U, 169999552U,
170131264U, 170262464U, 170393536U, 170524352U, 170655424U, 170782016U,
170917696U, 171048896U, 171179072U, 171310784U, 171439936U, 171573184U,
171702976U, 171835072U, 171966272U, 172097216U, 172228288U, 172359232U,
172489664U, 172621376U, 172747712U, 172883264U, 173014208U, 173144512U,
173275072U, 173407424U, 173539136U, 173669696U, 173800768U, 173931712U,
174063424U, 174193472U, 174325696U, 174455744U, 174586816U, 174718912U,
174849728U, 174977728U, 175109696U, 175242688U, 175374272U, 175504832U,
175636288U, 175765696U, 175898432U, 176028992U, 176159936U, 176291264U,
176422592U, 176552512U, 176684864U, 176815424U, 176946496U, 177076544U,
177209152U, 177340096U, 177470528U, 177600704U, 177731648U, 177864256U,
177994816U, 178126528U, 178257472U, 178387648U, 178518464U, 178650176U,
178781888U, 178912064U, 179044288U, 179174848U, 179305024U, 179436736U,
179568448U, 179698496U, 179830208U, 179960512U, 180092608U, 180223808U,
180354752U, 180485696U, 180617152U, 180748096U, 180877504U, 181009984U,
181139264U, 181272512U, 181402688U, 181532608U, 181663168U, 181795136U,
181926592U, 182057536U, 182190016U, 182320192U, 182451904U, 182582336U,
182713792U, 182843072U, 182976064U, 183107264U, 183237056U, 183368384U,
183494848U, 183631424U, 183762752U, 183893824U, 184024768U, 184154816U,
184286656U, 184417984U, 184548928U, 184680128U, 184810816U, 184941248U,
185072704U, 185203904U, 185335616U, 185465408U, 185596352U, 185727296U,
185859904U, 185989696U, 186121664U, 186252992U, 186383552U, 186514112U,
186645952U, 186777152U, 186907328U, 187037504U, 187170112U, 187301824U,
187429184U, 187562048U, 187693504U, 187825472U, 187957184U, 188087104U,
188218304U, 188349376U, 188481344U, 188609728U, 188743616U, 188874304U,
189005248U, 189136448U, 189265088U, 189396544U, 189528128U, 189660992U,
189791936U, 189923264U, 190054208U, 190182848U, 190315072U, 190447424U,
190577984U, 190709312U, 190840768U, 190971328U, 191102656U, 191233472U,
191364032U, 191495872U, 191626816U, 191758016U, 191888192U, 192020288U,
192148928U, 192282176U, 192413504U, 192542528U, 192674752U, 192805952U,
192937792U, 193068608U, 193198912U, 193330496U, 193462208U, 193592384U,
193723456U, 193854272U, 193985984U, 194116672U, 194247232U, 194379712U,
194508352U, 194641856U, 194772544U, 194900672U, 195035072U, 195166016U,
195296704U, 195428032U, 195558592U, 195690304U, 195818176U, 195952576U,
196083392U, 196214336U, 196345792U, 196476736U, 196607552U, 196739008U,
196869952U, 197000768U, 197130688U, 197262784U, 197394368U, 197523904U,
197656384U, 197787584U, 197916608U, 198049472U, 198180544U, 198310208U,
198442432U, 198573632U, 198705088U, 198834368U, 198967232U, 199097792U,
199228352U, 199360192U, 199491392U, 199621696U, 199751744U, 199883968U,
200014016U, 200146624U, 200276672U, 200408128U, 200540096U, 200671168U,
200801984U, 200933312U, 201062464U, 201194944U, 201326144U, 201457472U,
201588544U, 201719744U, 201850816U, 201981632U, 202111552U, 202244032U,
202374464U, 202505152U, 202636352U, 202767808U, 202898368U, 203030336U,
203159872U, 203292608U, 203423296U, 203553472U, 203685824U, 203816896U,
203947712U, 204078272U, 204208192U, 204341056U, 204472256U, 204603328U,
204733888U, 204864448U, 204996544U, 205125568U, 205258304U, 205388864U,
205517632U, 205650112U, 205782208U, 205913536U, 206044736U, 206176192U,
206307008U, 206434496U, 206569024U, 206700224U, 206831168U, 206961856U,
207093056U, 207223616U, 207355328U, 207486784U, 207616832U, 207749056U,
207879104U, 208010048U, 208141888U, 208273216U, 208404032U, 208534336U,
208666048U, 208796864U, 208927424U, 209059264U, 209189824U, 209321792U,
209451584U, 209582656U, 209715136U, 209845568U, 209976896U, 210106432U,
210239296U, 210370112U, 210501568U, 210630976U, 210763712U, 210894272U,
211024832U, 211156672U, 211287616U, 211418176U, 211549376U, 211679296U,
211812032U, 211942592U, 212074432U, 212204864U, 212334016U, 212467648U,
212597824U, 212727616U, 212860352U, 212991424U, 213120832U, 213253952U,
213385024U, 213515584U, 213645632U, 213777728U, 213909184U, 214040128U,
214170688U, 214302656U, 214433728U, 214564544U, 214695232U, 214826048U,
214956992U, 215089088U, 215219776U, 215350592U, 215482304U, 215613248U,
215743552U, 215874752U, 216005312U, 216137024U, 216267328U, 216399296U,
216530752U, 216661696U, 216790592U, 216923968U, 217054528U, 217183168U,
217316672U, 217448128U, 217579072U, 217709504U, 217838912U, 217972672U,
218102848U, 218233024U, 218364736U, 218496832U, 218627776U, 218759104U,
218888896U, 219021248U, 219151936U, 219281728U, 219413056U, 219545024U,
219675968U, 219807296U, 219938624U, 220069312U, 220200128U, 220331456U,
220461632U, 220592704U, 220725184U, 220855744U, 220987072U, 221117888U,
221249216U, 221378368U, 221510336U, 221642048U, 221772736U, 221904832U,
222031808U, 222166976U, 222297536U, 222428992U, 222559936U, 222690368U,
222820672U, 222953152U, 223083968U, 223213376U, 223345984U, 223476928U,
223608512U, 223738688U, 223869376U, 224001472U, 224132672U, 224262848U,
224394944U, 224524864U, 224657344U, 224788288U, 224919488U, 225050432U,
225181504U, 225312704U, 225443776U, 225574592U, 225704768U, 225834176U,
225966784U, 226097216U, 226229824U, 226360384U, 226491712U, 226623424U,
226754368U, 226885312U, 227015104U, 227147456U, 227278528U, 227409472U,
227539904U, 227669696U, 227802944U, 227932352U, 228065216U, 228196288U,
228326464U, 228457792U, 228588736U, 228720064U, 228850112U, 228981056U,
229113152U, 229243328U, 229375936U, 229505344U, 229636928U, 229769152U,
229894976U, 230030272U, 230162368U, 230292416U, 230424512U, 230553152U,
230684864U, 230816704U, 230948416U, 231079616U, 231210944U, 231342016U,
231472448U, 231603776U, 231733952U, 231866176U, 231996736U, 232127296U,
232259392U, 232388672U, 232521664U, 232652608U, 232782272U, 232914496U,
233043904U, 233175616U, 233306816U, 233438528U, 233569984U, 233699776U,
233830592U, 233962688U, 234092224U, 234221888U, 234353984U, 234485312U,
234618304U, 234749888U, 234880832U, 235011776U, 235142464U, 235274048U,
235403456U, 235535936U, 235667392U, 235797568U, 235928768U, 236057152U,
236190272U, 236322752U, 236453312U, 236583616U, 236715712U, 236846528U,
236976448U, 237108544U, 237239104U, 237371072U, 237501632U, 237630784U,
237764416U, 237895232U, 238026688U, 238157632U, 238286912U, 238419392U,
238548032U, 238681024U, 238812608U, 238941632U, 239075008U, 239206336U,
239335232U, 239466944U, 239599168U, 239730496U, 239861312U, 239992384U,
240122816U, 240254656U, 240385856U, 240516928U, 240647872U, 240779072U,
240909632U, 241040704U, 241171904U, 241302848U, 241433408U, 241565248U,
241696192U, 241825984U, 241958848U, 242088256U, 242220224U, 242352064U,
242481856U, 242611648U, 242744896U, 242876224U, 243005632U, 243138496U,
243268672U, 243400384U, 243531712U, 243662656U, 243793856U, 243924544U,
244054592U, 244187072U, 244316608U, 244448704U, 244580032U, 244710976U,
244841536U, 244972864U, 245104448U, 245233984U, 245365312U, 245497792U,
245628736U, 245759936U, 245889856U, 246021056U, 246152512U, 246284224U,
246415168U, 246545344U, 246675904U, 246808384U, 246939584U, 247070144U,
247199552U, 247331648U, 247463872U, 247593536U, 247726016U, 247857088U,
247987648U, 248116928U, 248249536U, 248380736U, 248512064U, 248643008U,
248773312U, 248901056U, 249036608U, 249167552U, 249298624U, 249429184U,
249560512U, 249692096U, 249822784U, 249954112U, 250085312U, 250215488U,
250345792U, 250478528U, 250608704U, 250739264U, 250870976U, 251002816U,
251133632U, 251263552U, 251395136U, 251523904U, 251657792U, 251789248U,
251919424U, 252051392U, 252182464U, 252313408U, 252444224U, 252575552U,
252706624U, 252836032U, 252968512U, 253099712U, 253227584U, 253361728U,
253493056U, 253623488U, 253754432U, 253885504U, 254017216U, 254148032U,
254279488U, 254410432U, 254541376U, 254672576U, 254803264U, 254933824U,
255065792U, 255196736U, 255326528U, 255458752U, 255589952U, 255721408U,
255851072U, 255983296U, 256114624U, 256244416U, 256374208U, 256507712U,
256636096U, 256768832U, 256900544U, 257031616U, 257162176U, 257294272U,
257424448U, 257555776U, 257686976U, 257818432U, 257949632U, 258079552U,
258211136U, 258342464U, 258473408U, 258603712U, 258734656U, 258867008U,
258996544U, 259127744U, 259260224U, 259391296U, 259522112U, 259651904U,
259784384U, 259915328U, 260045888U, 260175424U, 260308544U, 260438336U,
260570944U, 260700992U, 260832448U, 260963776U, 261092672U, 261226304U,
261356864U, 261487936U, 261619648U, 261750592U, 261879872U, 262011968U,
262143424U, 262274752U, 262404416U, 262537024U, 262667968U, 262799296U,
262928704U, 263061184U, 263191744U, 263322944U, 263454656U, 263585216U,
263716672U, 263847872U, 263978944U, 264108608U, 264241088U, 264371648U,
264501184U, 264632768U, 264764096U, 264895936U, 265024576U, 265158464U,
265287488U, 265418432U, 265550528U, 265681216U, 265813312U, 265943488U,
266075968U, 266206144U, 266337728U, 266468032U, 266600384U, 266731072U,
266862272U, 266993344U, 267124288U, 267255616U, 267386432U, 267516992U,
267648704U, 267777728U, 267910592U, 268040512U, 268172096U, 268302784U,
268435264U, 268566208U, 268696256U, 268828096U, 268959296U, 269090368U,
269221312U, 269352256U, 269482688U, 269614784U, 269745856U, 269876416U,
270007616U, 270139328U, 270270272U, 270401216U, 270531904U, 270663616U,
270791744U, 270924736U, 271056832U, 271186112U, 271317184U, 271449536U,
271580992U, 271711936U, 271843136U, 271973056U, 272105408U, 272236352U,
272367296U, 272498368U, 272629568U, 272759488U, 272891456U, 273022784U,
273153856U, 273284672U, 273415616U, 273547072U, 273677632U, 273808448U,
273937088U, 274071488U, 274200896U, 274332992U, 274463296U, 274595392U,
274726208U, 274857536U, 274988992U, 275118656U, 275250496U, 275382208U,
275513024U, 275643968U, 275775296U, 275906368U, 276037184U, 276167872U,
276297664U, 276429376U, 276560576U, 276692672U, 276822976U, 276955072U,
277085632U, 277216832U, 277347008U, 277478848U, 277609664U, 277740992U,
277868608U, 278002624U, 278134336U, 278265536U, 278395328U, 278526784U,
278657728U, 278789824U, 278921152U, 279052096U, 279182912U, 279313088U,
279443776U, 279576256U, 279706048U, 279838528U, 279969728U, 280099648U,
280230976U, 280361408U, 280493632U, 280622528U, 280755392U, 280887104U,
281018176U, 281147968U, 281278912U, 281411392U, 281542592U, 281673152U,
281803712U, 281935552U, 282066496U, 282197312U, 282329024U, 282458816U,
282590272U, 282720832U, 282853184U, 282983744U, 283115072U, 283246144U,
283377344U, 283508416U, 283639744U, 283770304U, 283901504U, 284032576U,
284163136U, 284294848U, 284426176U, 284556992U, 284687296U, 284819264U,
284950208U, 285081536U
};
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,72 @@
#pragma once
#include <stdint.h>
#include "compiler.h"
#if defined(__MINGW32__) || defined(_WIN32)
# define LITTLE_ENDIAN 1234
# define BYTE_ORDER LITTLE_ENDIAN
#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__)
# include <sys/endian.h>
#elif defined(__OpenBSD__) || defined(__SVR4)
# include <sys/types.h>
#elif defined(__APPLE__)
# include <machine/endian.h>
#elif defined( BSD ) && (BSD >= 199103)
# include <machine/endian.h>
#elif defined( __QNXNTO__ ) && defined( __LITTLEENDIAN__ )
# define LITTLE_ENDIAN 1234
# define BYTE_ORDER LITTLE_ENDIAN
#elif defined( __QNXNTO__ ) && defined( __BIGENDIAN__ )
# define BIG_ENDIAN 1234
# define BYTE_ORDER BIG_ENDIAN
#else
# include <endian.h>
#endif
#if defined(_WIN32)
#include <stdlib.h>
#define ethash_swap_u32(input_) _byteswap_ulong(input_)
#define ethash_swap_u64(input_) _byteswap_uint64(input_)
#elif defined(__APPLE__)
#include <libkern/OSByteOrder.h>
#define ethash_swap_u32(input_) OSSwapInt32(input_)
#define ethash_swap_u64(input_) OSSwapInt64(input_)
#else // posix
#include <byteswap.h>
#define ethash_swap_u32(input_) __bswap_32(input_)
#define ethash_swap_u64(input_) __bswap_64(input_)
#endif
#if LITTLE_ENDIAN == BYTE_ORDER
#define fix_endian32(dst_ ,src_) dst_ = src_
#define fix_endian32_same(val_)
#define fix_endian64(dst_, src_) dst_ = src_
#define fix_endian64_same(val_)
#define fix_endian_arr32(arr_, size_)
#define fix_endian_arr64(arr_, size_)
#elif BIG_ENDIAN == BYTE_ORDER
#define fix_endian32(dst_, src_) dst_ = ethash_swap_u32(src_)
#define fix_endian32_same(val_) val_ = ethash_swap_u32(val_)
#define fix_endian64(dst_, src_) dst_ = ethash_swap_u64(src_
#define fix_endian64_same(val_) val_ = ethash_swap_u64(val_)
#define fix_endian_arr32(arr_, size_) \
do { \
for (unsigned i_ = 0; i_ < (size_), ++i_) { \
arr_[i_] = ethash_swap_u32(arr_[i_]); \
} \
while (0)
#define fix_endian_arr64(arr_, size_) \
do { \
for (unsigned i_ = 0; i_ < (size_), ++i_) { \
arr_[i_] = ethash_swap_u64(arr_[i_]); \
} \
while (0) \
#else
# error "endian not supported"
#endif // BYTE_ORDER

View File

@@ -0,0 +1,147 @@
/*
This file is part of ethash.
ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ethash. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file ethash.h
* @date 2015
*/
#pragma once
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <stddef.h>
#include "compiler.h"
#define ETHASH_REVISION 23
#define ETHASH_DATASET_BYTES_INIT 1073741824U // 2**30
#define ETHASH_DATASET_BYTES_GROWTH 8388608U // 2**23
#define ETHASH_CACHE_BYTES_INIT 1073741824U // 2**24
#define ETHASH_CACHE_BYTES_GROWTH 131072U // 2**17
#define ETHASH_EPOCH_LENGTH 30000U
#define ETHASH_MIX_BYTES 128
#define ETHASH_HASH_BYTES 64
#define ETHASH_DATASET_PARENTS 256
#define ETHASH_CACHE_ROUNDS 3
#define ETHASH_ACCESSES 64
#define ETHASH_DAG_MAGIC_NUM_SIZE 8
#define ETHASH_DAG_MAGIC_NUM 0xFEE1DEADBADDCAFE
#ifdef __cplusplus
extern "C" {
#endif
/// Type of a seedhash/blockhash e.t.c.
typedef struct ethash_h256 { uint8_t b[32]; } ethash_h256_t;
// convenience macro to statically initialize an h256_t
// usage:
// ethash_h256_t a = ethash_h256_static_init(1, 2, 3, ... )
// have to provide all 32 values. If you don't provide all the rest
// will simply be unitialized (not guranteed to be 0)
#define ethash_h256_static_init(...) \
{ {__VA_ARGS__} }
struct ethash_light;
typedef struct ethash_light* ethash_light_t;
struct ethash_full;
typedef struct ethash_full* ethash_full_t;
typedef int(*ethash_callback_t)(unsigned);
typedef struct ethash_return_value {
ethash_h256_t result;
ethash_h256_t mix_hash;
bool success;
} ethash_return_value_t;
/**
* Allocate and initialize a new ethash_light handler
*
* @param block_number The block number for which to create the handler
* @return Newly allocated ethash_light handler or NULL in case of
* ERRNOMEM or invalid parameters used for @ref ethash_compute_cache_nodes()
*/
ethash_light_t ethash_light_new(uint64_t block_number);
/**
* Frees a previously allocated ethash_light handler
* @param light The light handler to free
*/
void ethash_light_delete(ethash_light_t light);
/**
* Calculate the light client data
*
* @param light The light client handler
* @param header_hash The header hash to pack into the mix
* @param nonce The nonce to pack into the mix
* @return an object of ethash_return_value_t holding the return values
*/
ethash_return_value_t ethash_light_compute(
ethash_light_t light,
ethash_h256_t const header_hash,
uint64_t nonce
);
/**
* Allocate and initialize a new ethash_full handler
*
* @param light The light handler containing the cache.
* @param callback A callback function with signature of @ref ethash_callback_t
* It accepts an unsigned with which a progress of DAG calculation
* can be displayed. If all goes well the callback should return 0.
* If a non-zero value is returned then DAG generation will stop.
* Be advised. A progress value of 100 means that DAG creation is
* almost complete and that this function will soon return succesfully.
* It does not mean that the function has already had a succesfull return.
* @return Newly allocated ethash_full handler or NULL in case of
* ERRNOMEM or invalid parameters used for @ref ethash_compute_full_data()
*/
ethash_full_t ethash_full_new(ethash_light_t light, ethash_callback_t callback);
/**
* Frees a previously allocated ethash_full handler
* @param full The light handler to free
*/
void ethash_full_delete(ethash_full_t full);
/**
* Calculate the full client data
*
* @param full The full client handler
* @param header_hash The header hash to pack into the mix
* @param nonce The nonce to pack into the mix
* @return An object of ethash_return_value to hold the return value
*/
ethash_return_value_t ethash_full_compute(
ethash_full_t full,
ethash_h256_t const header_hash,
uint64_t nonce
);
/**
* Get a pointer to the full DAG data
*/
void const* ethash_full_dag(ethash_full_t full);
/**
* Get the size of the DAG data
*/
uint64_t ethash_full_dag_size(ethash_full_t full);
/**
* Calculate the seedhash for a given block number
*/
ethash_h256_t ethash_get_seedhash(uint64_t block_number);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,39 @@
/*
This file is part of cpp-ethereum.
cpp-ethereum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
cpp-ethereum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file fnv.h
* @author Matthew Wampler-Doty <negacthulhu@gmail.com>
* @date 2015
*/
#pragma once
#include <stdint.h>
#include "compiler.h"
#ifdef __cplusplus
extern "C" {
#endif
#define FNV_PRIME 0x01000193
static inline uint32_t fnv_hash(uint32_t const x, uint32_t const y)
{
return x * FNV_PRIME ^ y;
}
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,496 @@
/*
This file is part of ethash.
ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file internal.c
* @author Tim Hughes <tim@twistedfury.com>
* @author Matthew Wampler-Doty
* @date 2015
*/
#include <assert.h>
#include <inttypes.h>
#include <stddef.h>
#include <errno.h>
#include <math.h>
#include "mmap.h"
#include "ethash.h"
#include "fnv.h"
#include "endian.h"
#include "internal.h"
#include "data_sizes.h"
#include "io.h"
#ifdef WITH_CRYPTOPP
#include "sha3_cryptopp.h"
#else
#include "sha3.h"
#endif // WITH_CRYPTOPP
uint64_t ethash_get_datasize(uint64_t const block_number)
{
assert(block_number / ETHASH_EPOCH_LENGTH < 2048);
return dag_sizes[block_number / ETHASH_EPOCH_LENGTH];
}
uint64_t ethash_get_cachesize(uint64_t const block_number)
{
assert(block_number / ETHASH_EPOCH_LENGTH < 2048);
return cache_sizes[block_number / ETHASH_EPOCH_LENGTH];
}
// Follows Sergio's "STRICT MEMORY HARD HASHING FUNCTIONS" (2014)
// https://bitslog.files.wordpress.com/2013/12/memohash-v0-3.pdf
// SeqMemoHash(s, R, N)
bool static ethash_compute_cache_nodes(
node* const nodes,
uint64_t cache_size,
ethash_h256_t const* seed
)
{
if (cache_size % sizeof(node) != 0) {
return false;
}
uint32_t const num_nodes = (uint32_t) (cache_size / sizeof(node));
SHA3_512(nodes[0].bytes, (uint8_t*)seed, 32);
for (uint32_t i = 1; i != num_nodes; ++i) {
SHA3_512(nodes[i].bytes, nodes[i - 1].bytes, 64);
}
for (uint32_t j = 0; j != ETHASH_CACHE_ROUNDS; j++) {
for (uint32_t i = 0; i != num_nodes; i++) {
uint32_t const idx = nodes[i].words[0] % num_nodes;
node data;
data = nodes[(num_nodes - 1 + i) % num_nodes];
for (uint32_t w = 0; w != NODE_WORDS; ++w) {
data.words[w] ^= nodes[idx].words[w];
}
SHA3_512(nodes[i].bytes, data.bytes, sizeof(data));
}
}
// now perform endian conversion
fix_endian_arr32(nodes->words, num_nodes * NODE_WORDS);
return true;
}
void ethash_calculate_dag_item(
node* const ret,
uint32_t node_index,
ethash_light_t const light
)
{
uint32_t num_parent_nodes = (uint32_t) (light->cache_size / sizeof(node));
node const* cache_nodes = (node const *) light->cache;
node const* init = &cache_nodes[node_index % num_parent_nodes];
memcpy(ret, init, sizeof(node));
ret->words[0] ^= node_index;
SHA3_512(ret->bytes, ret->bytes, sizeof(node));
#if defined(_M_X64) && ENABLE_SSE
__m128i const fnv_prime = _mm_set1_epi32(FNV_PRIME);
__m128i xmm0 = ret->xmm[0];
__m128i xmm1 = ret->xmm[1];
__m128i xmm2 = ret->xmm[2];
__m128i xmm3 = ret->xmm[3];
#endif
for (uint32_t i = 0; i != ETHASH_DATASET_PARENTS; ++i) {
uint32_t parent_index = fnv_hash(node_index ^ i, ret->words[i % NODE_WORDS]) % num_parent_nodes;
node const *parent = &cache_nodes[parent_index];
#if defined(_M_X64) && ENABLE_SSE
{
xmm0 = _mm_mullo_epi32(xmm0, fnv_prime);
xmm1 = _mm_mullo_epi32(xmm1, fnv_prime);
xmm2 = _mm_mullo_epi32(xmm2, fnv_prime);
xmm3 = _mm_mullo_epi32(xmm3, fnv_prime);
xmm0 = _mm_xor_si128(xmm0, parent->xmm[0]);
xmm1 = _mm_xor_si128(xmm1, parent->xmm[1]);
xmm2 = _mm_xor_si128(xmm2, parent->xmm[2]);
xmm3 = _mm_xor_si128(xmm3, parent->xmm[3]);
// have to write to ret as values are used to compute index
ret->xmm[0] = xmm0;
ret->xmm[1] = xmm1;
ret->xmm[2] = xmm2;
ret->xmm[3] = xmm3;
}
#else
{
for (unsigned w = 0; w != NODE_WORDS; ++w) {
ret->words[w] = fnv_hash(ret->words[w], parent->words[w]);
}
}
#endif
}
SHA3_512(ret->bytes, ret->bytes, sizeof(node));
}
bool ethash_compute_full_data(
void* mem,
uint64_t full_size,
ethash_light_t const light,
ethash_callback_t callback
)
{
if (full_size % (sizeof(uint32_t) * MIX_WORDS) != 0 ||
(full_size % sizeof(node)) != 0) {
return false;
}
uint32_t const max_n = (uint32_t)(full_size / sizeof(node));
node* full_nodes = mem;
double const progress_change = 1.0f / max_n;
double progress = 0.0f;
// now compute full nodes
for (uint32_t n = 0; n != max_n; ++n) {
if (callback &&
n % (max_n / 100) == 0 &&
callback((unsigned int)(ceil(progress * 100.0f))) != 0) {
return false;
}
progress += progress_change;
ethash_calculate_dag_item(&(full_nodes[n]), n, light);
}
return true;
}
static bool ethash_hash(
ethash_return_value_t* ret,
node const* full_nodes,
ethash_light_t const light,
uint64_t full_size,
ethash_h256_t const header_hash,
uint64_t const nonce
)
{
if (full_size % MIX_WORDS != 0) {
return false;
}
// pack hash and nonce together into first 40 bytes of s_mix
assert(sizeof(node) * 8 == 512);
node s_mix[MIX_NODES + 1];
memcpy(s_mix[0].bytes, &header_hash, 32);
fix_endian64(s_mix[0].double_words[4], nonce);
// compute sha3-512 hash and replicate across mix
SHA3_512(s_mix->bytes, s_mix->bytes, 40);
fix_endian_arr32(s_mix[0].words, 16);
node* const mix = s_mix + 1;
for (uint32_t w = 0; w != MIX_WORDS; ++w) {
mix->words[w] = s_mix[0].words[w % NODE_WORDS];
}
unsigned const page_size = sizeof(uint32_t) * MIX_WORDS;
unsigned const num_full_pages = (unsigned) (full_size / page_size);
for (unsigned i = 0; i != ETHASH_ACCESSES; ++i) {
uint32_t const index = fnv_hash(s_mix->words[0] ^ i, mix->words[i % MIX_WORDS]) % num_full_pages;
for (unsigned n = 0; n != MIX_NODES; ++n) {
node const* dag_node;
if (full_nodes) {
dag_node = &full_nodes[MIX_NODES * index + n];
} else {
node tmp_node;
ethash_calculate_dag_item(&tmp_node, index * MIX_NODES + n, light);
dag_node = &tmp_node;
}
#if defined(_M_X64) && ENABLE_SSE
{
__m128i fnv_prime = _mm_set1_epi32(FNV_PRIME);
__m128i xmm0 = _mm_mullo_epi32(fnv_prime, mix[n].xmm[0]);
__m128i xmm1 = _mm_mullo_epi32(fnv_prime, mix[n].xmm[1]);
__m128i xmm2 = _mm_mullo_epi32(fnv_prime, mix[n].xmm[2]);
__m128i xmm3 = _mm_mullo_epi32(fnv_prime, mix[n].xmm[3]);
mix[n].xmm[0] = _mm_xor_si128(xmm0, dag_node->xmm[0]);
mix[n].xmm[1] = _mm_xor_si128(xmm1, dag_node->xmm[1]);
mix[n].xmm[2] = _mm_xor_si128(xmm2, dag_node->xmm[2]);
mix[n].xmm[3] = _mm_xor_si128(xmm3, dag_node->xmm[3]);
}
#else
{
for (unsigned w = 0; w != NODE_WORDS; ++w) {
mix[n].words[w] = fnv_hash(mix[n].words[w], dag_node->words[w]);
}
}
#endif
}
}
// compress mix
for (uint32_t w = 0; w != MIX_WORDS; w += 4) {
uint32_t reduction = mix->words[w + 0];
reduction = reduction * FNV_PRIME ^ mix->words[w + 1];
reduction = reduction * FNV_PRIME ^ mix->words[w + 2];
reduction = reduction * FNV_PRIME ^ mix->words[w + 3];
mix->words[w / 4] = reduction;
}
fix_endian_arr32(mix->words, MIX_WORDS / 4);
memcpy(&ret->mix_hash, mix->bytes, 32);
// final Keccak hash
SHA3_256(&ret->result, s_mix->bytes, 64 + 32); // Keccak-256(s + compressed_mix)
return true;
}
void ethash_quick_hash(
ethash_h256_t* return_hash,
ethash_h256_t const* header_hash,
uint64_t const nonce,
ethash_h256_t const* mix_hash
)
{
uint8_t buf[64 + 32];
memcpy(buf, header_hash, 32);
fix_endian64_same(nonce);
memcpy(&(buf[32]), &nonce, 8);
SHA3_512(buf, buf, 40);
memcpy(&(buf[64]), mix_hash, 32);
SHA3_256(return_hash, buf, 64 + 32);
}
ethash_h256_t ethash_get_seedhash(uint64_t block_number)
{
ethash_h256_t ret;
ethash_h256_reset(&ret);
uint64_t const epochs = block_number / ETHASH_EPOCH_LENGTH;
for (uint32_t i = 0; i < epochs; ++i)
SHA3_256(&ret, (uint8_t*)&ret, 32);
return ret;
}
bool ethash_quick_check_difficulty(
ethash_h256_t const* header_hash,
uint64_t const nonce,
ethash_h256_t const* mix_hash,
ethash_h256_t const* difficulty
)
{
ethash_h256_t return_hash;
ethash_quick_hash(&return_hash, header_hash, nonce, mix_hash);
return ethash_check_difficulty(&return_hash, difficulty);
}
ethash_light_t ethash_light_new_internal(uint64_t cache_size, ethash_h256_t const* seed)
{
struct ethash_light *ret;
ret = calloc(sizeof(*ret), 1);
if (!ret) {
return NULL;
}
ret->cache = malloc((size_t)cache_size);
if (!ret->cache) {
goto fail_free_light;
}
node* nodes = (node*)ret->cache;
if (!ethash_compute_cache_nodes(nodes, cache_size, seed)) {
goto fail_free_cache_mem;
}
ret->cache_size = cache_size;
return ret;
fail_free_cache_mem:
free(ret->cache);
fail_free_light:
free(ret);
return NULL;
}
ethash_light_t ethash_light_new(uint64_t block_number)
{
ethash_h256_t seedhash = ethash_get_seedhash(block_number);
ethash_light_t ret;
ret = ethash_light_new_internal(ethash_get_cachesize(block_number), &seedhash);
ret->block_number = block_number;
return ret;
}
void ethash_light_delete(ethash_light_t light)
{
if (light->cache) {
free(light->cache);
}
free(light);
}
ethash_return_value_t ethash_light_compute_internal(
ethash_light_t light,
uint64_t full_size,
ethash_h256_t const header_hash,
uint64_t nonce
)
{
ethash_return_value_t ret;
ret.success = true;
if (!ethash_hash(&ret, NULL, light, full_size, header_hash, nonce)) {
ret.success = false;
}
return ret;
}
ethash_return_value_t ethash_light_compute(
ethash_light_t light,
ethash_h256_t const header_hash,
uint64_t nonce
)
{
uint64_t full_size = ethash_get_datasize(light->block_number);
return ethash_light_compute_internal(light, full_size, header_hash, nonce);
}
static bool ethash_mmap(struct ethash_full* ret, FILE* f)
{
int fd;
char* mmapped_data;
ret->file = f;
if ((fd = ethash_fileno(ret->file)) == -1) {
return false;
}
mmapped_data= mmap(
NULL,
(size_t)ret->file_size + ETHASH_DAG_MAGIC_NUM_SIZE,
PROT_READ | PROT_WRITE,
MAP_SHARED,
fd,
0
);
if (mmapped_data == MAP_FAILED) {
return false;
}
ret->data = (node*)(mmapped_data + ETHASH_DAG_MAGIC_NUM_SIZE);
return true;
}
ethash_full_t ethash_full_new_internal(
char const* dirname,
ethash_h256_t const seed_hash,
uint64_t full_size,
ethash_light_t const light,
ethash_callback_t callback
)
{
struct ethash_full* ret;
FILE *f = NULL;
ret = calloc(sizeof(*ret), 1);
if (!ret) {
return NULL;
}
ret->file_size = (size_t)full_size;
switch (ethash_io_prepare(dirname, seed_hash, &f, (size_t)full_size, false)) {
case ETHASH_IO_FAIL:
goto fail_free_full;
case ETHASH_IO_MEMO_MATCH:
if (!ethash_mmap(ret, f)) {
goto fail_close_file;
}
return ret;
case ETHASH_IO_MEMO_SIZE_MISMATCH:
// if a DAG of same filename but unexpected size is found, silently force new file creation
if (ethash_io_prepare(dirname, seed_hash, &f, (size_t)full_size, true) != ETHASH_IO_MEMO_MISMATCH) {
goto fail_free_full;
}
// fallthrough to the mismatch case here, DO NOT go through match
case ETHASH_IO_MEMO_MISMATCH:
if (!ethash_mmap(ret, f)) {
goto fail_close_file;
}
break;
}
if (!ethash_compute_full_data(ret->data, full_size, light, callback)) {
goto fail_free_full_data;
}
// after the DAG has been filled then we finalize it by writting the magic number at the beginning
if (fseek(f, 0, SEEK_SET) != 0) {
goto fail_free_full_data;
}
uint64_t const magic_num = ETHASH_DAG_MAGIC_NUM;
if (fwrite(&magic_num, ETHASH_DAG_MAGIC_NUM_SIZE, 1, f) != 1) {
goto fail_free_full_data;
}
fflush(f); // make sure the magic number IS there
return ret;
fail_free_full_data:
// could check that munmap(..) == 0 but even if it did not can't really do anything here
munmap(ret->data, (size_t)full_size);
fail_close_file:
fclose(ret->file);
fail_free_full:
free(ret);
return NULL;
}
ethash_full_t ethash_full_new(ethash_light_t light, ethash_callback_t callback)
{
char strbuf[256];
if (!ethash_get_default_dirname(strbuf, 256)) {
return NULL;
}
uint64_t full_size = ethash_get_datasize(light->block_number);
ethash_h256_t seedhash = ethash_get_seedhash(light->block_number);
return ethash_full_new_internal(strbuf, seedhash, full_size, light, callback);
}
void ethash_full_delete(ethash_full_t full)
{
// could check that munmap(..) == 0 but even if it did not can't really do anything here
munmap(full->data, (size_t)full->file_size);
if (full->file) {
fclose(full->file);
}
free(full);
}
ethash_return_value_t ethash_full_compute(
ethash_full_t full,
ethash_h256_t const header_hash,
uint64_t nonce
)
{
ethash_return_value_t ret;
ret.success = true;
if (!ethash_hash(
&ret,
(node const*)full->data,
NULL,
full->file_size,
header_hash,
nonce)) {
ret.success = false;
}
return ret;
}
void const* ethash_full_dag(ethash_full_t full)
{
return full->data;
}
uint64_t ethash_full_dag_size(ethash_full_t full)
{
return full->file_size;
}

View File

@@ -0,0 +1,170 @@
#pragma once
#include "compiler.h"
#include "endian.h"
#include "ethash.h"
#include <stdio.h>
#define ENABLE_SSE 0
#if defined(_M_X64) && ENABLE_SSE
#include <smmintrin.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
// compile time settings
#define NODE_WORDS (64/4)
#define MIX_WORDS (ETHASH_MIX_BYTES/4)
#define MIX_NODES (MIX_WORDS / NODE_WORDS)
#include <stdint.h>
typedef union node {
uint8_t bytes[NODE_WORDS * 4];
uint32_t words[NODE_WORDS];
uint64_t double_words[NODE_WORDS / 2];
#if defined(_M_X64) && ENABLE_SSE
__m128i xmm[NODE_WORDS/4];
#endif
} node;
static inline uint8_t ethash_h256_get(ethash_h256_t const* hash, unsigned int i)
{
return hash->b[i];
}
static inline void ethash_h256_set(ethash_h256_t* hash, unsigned int i, uint8_t v)
{
hash->b[i] = v;
}
static inline void ethash_h256_reset(ethash_h256_t* hash)
{
memset(hash, 0, 32);
}
// Returns if hash is less than or equal to difficulty
static inline bool ethash_check_difficulty(
ethash_h256_t const* hash,
ethash_h256_t const* difficulty
)
{
// Difficulty is big endian
for (int i = 0; i < 32; i++) {
if (ethash_h256_get(hash, i) == ethash_h256_get(difficulty, i)) {
continue;
}
return ethash_h256_get(hash, i) < ethash_h256_get(difficulty, i);
}
return true;
}
bool ethash_quick_check_difficulty(
ethash_h256_t const* header_hash,
uint64_t const nonce,
ethash_h256_t const* mix_hash,
ethash_h256_t const* difficulty
);
struct ethash_light {
void* cache;
uint64_t cache_size;
uint64_t block_number;
};
/**
* Allocate and initialize a new ethash_light handler. Internal version
*
* @param cache_size The size of the cache in bytes
* @param seed Block seedhash to be used during the computation of the
* cache nodes
* @return Newly allocated ethash_light handler or NULL in case of
* ERRNOMEM or invalid parameters used for @ref ethash_compute_cache_nodes()
*/
ethash_light_t ethash_light_new_internal(uint64_t cache_size, ethash_h256_t const* seed);
/**
* Calculate the light client data. Internal version.
*
* @param light The light client handler
* @param full_size The size of the full data in bytes.
* @param header_hash The header hash to pack into the mix
* @param nonce The nonce to pack into the mix
* @return The resulting hash.
*/
ethash_return_value_t ethash_light_compute_internal(
ethash_light_t light,
uint64_t full_size,
ethash_h256_t const header_hash,
uint64_t nonce
);
struct ethash_full {
FILE* file;
uint64_t file_size;
node* data;
};
/**
* Allocate and initialize a new ethash_full handler. Internal version.
*
* @param dirname The directory in which to put the DAG file.
* @param seedhash The seed hash of the block. Used in the DAG file naming.
* @param full_size The size of the full data in bytes.
* @param cache A cache object to use that was allocated with @ref ethash_cache_new().
* Iff this function succeeds the ethash_full_t will take memory
* memory ownership of the cache and free it at deletion. If
* not then the user still has to handle freeing of the cache himself.
* @param callback A callback function with signature of @ref ethash_callback_t
* It accepts an unsigned with which a progress of DAG calculation
* can be displayed. If all goes well the callback should return 0.
* If a non-zero value is returned then DAG generation will stop.
* @return Newly allocated ethash_full handler or NULL in case of
* ERRNOMEM or invalid parameters used for @ref ethash_compute_full_data()
*/
ethash_full_t ethash_full_new_internal(
char const* dirname,
ethash_h256_t const seed_hash,
uint64_t full_size,
ethash_light_t const light,
ethash_callback_t callback
);
void ethash_calculate_dag_item(
node* const ret,
uint32_t node_index,
ethash_light_t const cache
);
void ethash_quick_hash(
ethash_h256_t* return_hash,
ethash_h256_t const* header_hash,
const uint64_t nonce,
ethash_h256_t const* mix_hash
);
uint64_t ethash_get_datasize(uint64_t const block_number);
uint64_t ethash_get_cachesize(uint64_t const block_number);
/**
* Compute the memory data for a full node's memory
*
* @param mem A pointer to an ethash full's memory
* @param full_size The size of the full data in bytes
* @param cache A cache object to use in the calculation
* @param callback The callback function. Check @ref ethash_full_new() for details.
* @return true if all went fine and false for invalid parameters
*/
bool ethash_compute_full_data(
void* mem,
uint64_t full_size,
ethash_light_t const light,
ethash_callback_t callback
);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,102 @@
/*
This file is part of ethash.
ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ethash. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file io.c
* @author Lefteris Karapetsas <lefteris@ethdev.com>
* @date 2015
*/
#include "io.h"
#include <string.h>
#include <stdio.h>
enum ethash_io_rc ethash_io_prepare(
char const* dirname,
ethash_h256_t const seedhash,
FILE** output_file,
uint64_t file_size,
bool force_create
)
{
char mutable_name[DAG_MUTABLE_NAME_MAX_SIZE];
enum ethash_io_rc ret = ETHASH_IO_FAIL;
// assert directory exists
if (!ethash_mkdir(dirname)) {
goto end;
}
ethash_io_mutable_name(ETHASH_REVISION, &seedhash, mutable_name);
char* tmpfile = ethash_io_create_filename(dirname, mutable_name, strlen(mutable_name));
if (!tmpfile) {
goto end;
}
FILE *f;
if (!force_create) {
// try to open the file
f = ethash_fopen(tmpfile, "rb+");
if (f) {
size_t found_size;
if (!ethash_file_size(f, &found_size)) {
fclose(f);
goto free_memo;
}
if (file_size != found_size - ETHASH_DAG_MAGIC_NUM_SIZE) {
fclose(f);
ret = ETHASH_IO_MEMO_SIZE_MISMATCH;
goto free_memo;
}
// compare the magic number, no need to care about endianess since it's local
uint64_t magic_num;
if (fread(&magic_num, ETHASH_DAG_MAGIC_NUM_SIZE, 1, f) != 1) {
// I/O error
fclose(f);
ret = ETHASH_IO_MEMO_SIZE_MISMATCH;
goto free_memo;
}
if (magic_num != ETHASH_DAG_MAGIC_NUM) {
fclose(f);
ret = ETHASH_IO_MEMO_SIZE_MISMATCH;
goto free_memo;
}
ret = ETHASH_IO_MEMO_MATCH;
goto set_file;
}
}
// file does not exist, will need to be created
f = ethash_fopen(tmpfile, "wb+");
if (!f) {
goto free_memo;
}
// make sure it's of the proper size
if (fseek(f, (long int)(file_size + ETHASH_DAG_MAGIC_NUM_SIZE - 1), SEEK_SET) != 0) {
fclose(f);
goto free_memo;
}
fputc('\n', f);
fflush(f);
ret = ETHASH_IO_MEMO_MISMATCH;
goto set_file;
ret = ETHASH_IO_MEMO_MATCH;
set_file:
*output_file = f;
free_memo:
free(tmpfile);
end:
return ret;
}

View File

@@ -0,0 +1,185 @@
/*
This file is part of ethash.
ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ethash. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file io.h
* @author Lefteris Karapetsas <lefteris@ethdev.com>
* @date 2015
*/
#pragma once
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#ifdef __cplusplus
#define __STDC_FORMAT_MACROS 1
#endif
#include <inttypes.h>
#include "endian.h"
#include "ethash.h"
#ifdef __cplusplus
extern "C" {
#endif
// Maximum size for mutable part of DAG file name
// 6 is for "full-R", the suffix of the filename
// 10 is for maximum number of digits of a uint32_t (for REVISION)
// 1 is for - and 16 is for the first 16 hex digits for first 8 bytes of
// the seedhash and last 1 is for the null terminating character
// Reference: https://github.com/ethereum/wiki/wiki/Ethash-DAG
#define DAG_MUTABLE_NAME_MAX_SIZE (6 + 10 + 1 + 16 + 1)
/// Possible return values of @see ethash_io_prepare
enum ethash_io_rc {
ETHASH_IO_FAIL = 0, ///< There has been an IO failure
ETHASH_IO_MEMO_SIZE_MISMATCH, ///< DAG with revision/hash match, but file size was wrong.
ETHASH_IO_MEMO_MISMATCH, ///< The DAG file did not exist or there was revision/hash mismatch
ETHASH_IO_MEMO_MATCH, ///< DAG file existed and revision/hash matched. No need to do anything
};
// small hack for windows. I don't feel I should use va_args and forward just
// to have this one function properly cross-platform abstracted
#if defined(_WIN32) && !defined(__GNUC__)
#define snprintf(...) sprintf_s(__VA_ARGS__)
#endif
/**
* Prepares io for ethash
*
* Create the DAG directory and the DAG file if they don't exist.
*
* @param[in] dirname A null terminated c-string of the path of the ethash
* data directory. If it does not exist it's created.
* @param[in] seedhash The seedhash of the current block number, used in the
* naming of the file as can be seen from the spec at:
* https://github.com/ethereum/wiki/wiki/Ethash-DAG
* @param[out] output_file If there was no failure then this will point to an open
* file descriptor. User is responsible for closing it.
* In the case of memo match then the file is open on read
* mode, while on the case of mismatch a new file is created
* on write mode
* @param[in] file_size The size that the DAG file should have on disk
* @param[out] force_create If true then there is no check to see if the file
* already exists
* @return For possible return values @see enum ethash_io_rc
*/
enum ethash_io_rc ethash_io_prepare(
char const* dirname,
ethash_h256_t const seedhash,
FILE** output_file,
uint64_t file_size,
bool force_create
);
/**
* An fopen wrapper for no-warnings crossplatform fopen.
*
* Msvc compiler considers fopen to be insecure and suggests to use their
* alternative. This is a wrapper for this alternative. Another way is to
* #define _CRT_SECURE_NO_WARNINGS, but disabling all security warnings does
* not sound like a good idea.
*
* @param file_name The path to the file to open
* @param mode Opening mode. Check fopen()
* @return The FILE* or NULL in failure
*/
FILE* ethash_fopen(char const* file_name, char const* mode);
/**
* An strncat wrapper for no-warnings crossplatform strncat.
*
* Msvc compiler considers strncat to be insecure and suggests to use their
* alternative. This is a wrapper for this alternative. Another way is to
* #define _CRT_SECURE_NO_WARNINGS, but disabling all security warnings does
* not sound like a good idea.
*
* @param des Destination buffer
* @param dest_size Maximum size of the destination buffer. This is the
* extra argument for the MSVC secure strncat
* @param src Souce buffer
* @param count Number of bytes to copy from source
* @return If all is well returns the dest buffer. If there is an
* error returns NULL
*/
char* ethash_strncat(char* dest, size_t dest_size, char const* src, size_t count);
/**
* A cross-platform mkdir wrapper to create a directory or assert it's there
*
* @param dirname The full path of the directory to create
* @return true if the directory was created or if it already
* existed
*/
bool ethash_mkdir(char const* dirname);
/**
* Get a file's size
*
* @param[in] f The open file stream whose size to get
* @param[out] size Pass a size_t by reference to contain the file size
* @return true in success and false if there was a failure
*/
bool ethash_file_size(FILE* f, size_t* ret_size);
/**
* Get a file descriptor number from a FILE stream
*
* @param f The file stream whose fd to get
* @return Platform specific fd handler
*/
int ethash_fileno(FILE* f);
/**
* Create the filename for the DAG.
*
* @param dirname The directory name in which the DAG file should reside
* If it does not end with a directory separator it is appended.
* @param filename The actual name of the file
* @param filename_length The length of the filename in bytes
* @return A char* containing the full name. User must deallocate.
*/
char* ethash_io_create_filename(
char const* dirname,
char const* filename,
size_t filename_length
);
/**
* Gets the default directory name for the DAG depending on the system
*
* The spec defining this directory is here: https://github.com/ethereum/wiki/wiki/Ethash-DAG
*
* @param[out] strbuf A string buffer of sufficient size to keep the
* null termninated string of the directory name
* @param[in] buffsize Size of @a strbuf in bytes
* @return true for success and false otherwise
*/
bool ethash_get_default_dirname(char* strbuf, size_t buffsize);
static inline bool ethash_io_mutable_name(
uint32_t revision,
ethash_h256_t const* seed_hash,
char* output
)
{
uint64_t hash = *((uint64_t*)seed_hash);
#if LITTLE_ENDIAN == BYTE_ORDER
hash = ethash_swap_u64(hash);
#endif
return snprintf(output, DAG_MUTABLE_NAME_MAX_SIZE, "full-R%u-%016" PRIx64, revision, hash) >= 0;
}
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,102 @@
/*
This file is part of ethash.
ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ethash. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file io_posix.c
* @author Lefteris Karapetsas <lefteris@ethdev.com>
* @date 2015
*/
#include "io.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <libgen.h>
#include <stdio.h>
#include <unistd.h>
FILE* ethash_fopen(char const* file_name, char const* mode)
{
return fopen(file_name, mode);
}
char* ethash_strncat(char* dest, size_t dest_size, char const* src, size_t count)
{
return strlen(dest) + count + 1 <= dest_size ? strncat(dest, src, count) : NULL;
}
bool ethash_mkdir(char const* dirname)
{
int rc = mkdir(dirname, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
return rc != -1 || errno == EEXIST;
}
int ethash_fileno(FILE *f)
{
return fileno(f);
}
char* ethash_io_create_filename(
char const* dirname,
char const* filename,
size_t filename_length
)
{
size_t dirlen = strlen(dirname);
size_t dest_size = dirlen + filename_length + 1;
if (dirname[dirlen] != '/') {
dest_size += 1;
}
char* name = malloc(dest_size);
if (!name) {
return NULL;
}
name[0] = '\0';
ethash_strncat(name, dest_size, dirname, dirlen);
if (dirname[dirlen] != '/') {
ethash_strncat(name, dest_size, "/", 1);
}
ethash_strncat(name, dest_size, filename, filename_length);
return name;
}
bool ethash_file_size(FILE* f, size_t* ret_size)
{
struct stat st;
int fd;
if ((fd = fileno(f)) == -1 || fstat(fd, &st) != 0) {
return false;
}
*ret_size = st.st_size;
return true;
}
bool ethash_get_default_dirname(char* strbuf, size_t buffsize)
{
static const char dir_suffix[] = ".ethash/";
strbuf[0] = '\0';
char* home_dir = getenv("HOME");
size_t len = strlen(home_dir);
if (!ethash_strncat(strbuf, buffsize, home_dir, len)) {
return false;
}
if (home_dir[len] != '/') {
if (!ethash_strncat(strbuf, buffsize, "/", 1)) {
return false;
}
}
return ethash_strncat(strbuf, buffsize, dir_suffix, sizeof(dir_suffix));
}

View File

@@ -0,0 +1,100 @@
/*
This file is part of ethash.
ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ethash. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file io_win32.c
* @author Lefteris Karapetsas <lefteris@ethdev.com>
* @date 2015
*/
#include "io.h"
#include <direct.h>
#include <errno.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <shlobj.h>
FILE* ethash_fopen(char const* file_name, char const* mode)
{
FILE* f;
return fopen_s(&f, file_name, mode) == 0 ? f : NULL;
}
char* ethash_strncat(char* dest, size_t dest_size, char const* src, size_t count)
{
return strncat_s(dest, dest_size, src, count) == 0 ? dest : NULL;
}
bool ethash_mkdir(char const* dirname)
{
int rc = _mkdir(dirname);
return rc != -1 || errno == EEXIST;
}
int ethash_fileno(FILE* f)
{
return _fileno(f);
}
char* ethash_io_create_filename(
char const* dirname,
char const* filename,
size_t filename_length
)
{
size_t dirlen = strlen(dirname);
size_t dest_size = dirlen + filename_length + 1;
if (dirname[dirlen] != '\\' || dirname[dirlen] != '/') {
dest_size += 1;
}
char* name = malloc(dest_size);
if (!name) {
return NULL;
}
name[0] = '\0';
ethash_strncat(name, dest_size, dirname, dirlen);
if (dirname[dirlen] != '\\' || dirname[dirlen] != '/') {
ethash_strncat(name, dest_size, "\\", 1);
}
ethash_strncat(name, dest_size, filename, filename_length);
return name;
}
bool ethash_file_size(FILE* f, size_t* ret_size)
{
struct _stat st;
int fd;
if ((fd = _fileno(f)) == -1 || _fstat(fd, &st) != 0) {
return false;
}
*ret_size = st.st_size;
return true;
}
bool ethash_get_default_dirname(char* strbuf, size_t buffsize)
{
static const char dir_suffix[] = "Appdata\\Ethash\\";
strbuf[0] = '\0';
if (!SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_PROFILE, NULL, 0, (WCHAR*)strbuf))) {
return false;
}
if (!ethash_strncat(strbuf, buffsize, "\\", 1)) {
return false;
}
return ethash_strncat(strbuf, buffsize, dir_suffix, sizeof(dir_suffix));
}

View File

@@ -0,0 +1,47 @@
/*
This file is part of ethash.
ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ethash. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file mmap.h
* @author Lefteris Karapetsas <lefteris@ethdev.com>
* @date 2015
*/
#pragma once
#if defined(__MINGW32__) || defined(_WIN32)
#include <sys/types.h>
#define PROT_READ 0x1
#define PROT_WRITE 0x2
/* This flag is only available in WinXP+ */
#ifdef FILE_MAP_EXECUTE
#define PROT_EXEC 0x4
#else
#define PROT_EXEC 0x0
#define FILE_MAP_EXECUTE 0
#endif
#define MAP_SHARED 0x01
#define MAP_PRIVATE 0x02
#define MAP_ANONYMOUS 0x20
#define MAP_ANON MAP_ANONYMOUS
#define MAP_FAILED ((void *) -1)
void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t offset);
void munmap(void* addr, size_t length);
#else // posix, yay! ^_^
#include <sys/mman.h>
#endif

View File

@@ -0,0 +1,84 @@
/* mmap() replacement for Windows
*
* Author: Mike Frysinger <vapier@gentoo.org>
* Placed into the public domain
*/
/* References:
* CreateFileMapping: http://msdn.microsoft.com/en-us/library/aa366537(VS.85).aspx
* CloseHandle: http://msdn.microsoft.com/en-us/library/ms724211(VS.85).aspx
* MapViewOfFile: http://msdn.microsoft.com/en-us/library/aa366761(VS.85).aspx
* UnmapViewOfFile: http://msdn.microsoft.com/en-us/library/aa366882(VS.85).aspx
*/
#include <io.h>
#include <windows.h>
#include "mmap.h"
#ifdef __USE_FILE_OFFSET64
# define DWORD_HI(x) (x >> 32)
# define DWORD_LO(x) ((x) & 0xffffffff)
#else
# define DWORD_HI(x) (0)
# define DWORD_LO(x) (x)
#endif
void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t offset)
{
if (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC))
return MAP_FAILED;
if (fd == -1) {
if (!(flags & MAP_ANON) || offset)
return MAP_FAILED;
} else if (flags & MAP_ANON)
return MAP_FAILED;
DWORD flProtect;
if (prot & PROT_WRITE) {
if (prot & PROT_EXEC)
flProtect = PAGE_EXECUTE_READWRITE;
else
flProtect = PAGE_READWRITE;
} else if (prot & PROT_EXEC) {
if (prot & PROT_READ)
flProtect = PAGE_EXECUTE_READ;
else if (prot & PROT_EXEC)
flProtect = PAGE_EXECUTE;
} else
flProtect = PAGE_READONLY;
off_t end = length + offset;
HANDLE mmap_fd, h;
if (fd == -1)
mmap_fd = INVALID_HANDLE_VALUE;
else
mmap_fd = (HANDLE)_get_osfhandle(fd);
h = CreateFileMapping(mmap_fd, NULL, flProtect, DWORD_HI(end), DWORD_LO(end), NULL);
if (h == NULL)
return MAP_FAILED;
DWORD dwDesiredAccess;
if (prot & PROT_WRITE)
dwDesiredAccess = FILE_MAP_WRITE;
else
dwDesiredAccess = FILE_MAP_READ;
if (prot & PROT_EXEC)
dwDesiredAccess |= FILE_MAP_EXECUTE;
if (flags & MAP_PRIVATE)
dwDesiredAccess |= FILE_MAP_COPY;
void *ret = MapViewOfFile(h, dwDesiredAccess, DWORD_HI(offset), DWORD_LO(offset), length);
if (ret == NULL) {
ret = MAP_FAILED;
}
// since we are handling the file ourselves with fd, close the Windows Handle here
CloseHandle(h);
return ret;
}
void munmap(void* addr, size_t length)
{
UnmapViewOfFile(addr);
}
#undef DWORD_HI
#undef DWORD_LO

View File

@@ -0,0 +1,151 @@
/** libkeccak-tiny
*
* A single-file implementation of SHA-3 and SHAKE.
*
* Implementor: David Leon Gil
* License: CC0, attribution kindly requested. Blame taken too,
* but not liability.
*/
#include "sha3.h"
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/******** The Keccak-f[1600] permutation ********/
/*** Constants. ***/
static const uint8_t rho[24] = \
{ 1, 3, 6, 10, 15, 21,
28, 36, 45, 55, 2, 14,
27, 41, 56, 8, 25, 43,
62, 18, 39, 61, 20, 44};
static const uint8_t pi[24] = \
{10, 7, 11, 17, 18, 3,
5, 16, 8, 21, 24, 4,
15, 23, 19, 13, 12, 2,
20, 14, 22, 9, 6, 1};
static const uint64_t RC[24] = \
{1ULL, 0x8082ULL, 0x800000000000808aULL, 0x8000000080008000ULL,
0x808bULL, 0x80000001ULL, 0x8000000080008081ULL, 0x8000000000008009ULL,
0x8aULL, 0x88ULL, 0x80008009ULL, 0x8000000aULL,
0x8000808bULL, 0x800000000000008bULL, 0x8000000000008089ULL, 0x8000000000008003ULL,
0x8000000000008002ULL, 0x8000000000000080ULL, 0x800aULL, 0x800000008000000aULL,
0x8000000080008081ULL, 0x8000000000008080ULL, 0x80000001ULL, 0x8000000080008008ULL};
/*** Helper macros to unroll the permutation. ***/
#define rol(x, s) (((x) << s) | ((x) >> (64 - s)))
#define REPEAT6(e) e e e e e e
#define REPEAT24(e) REPEAT6(e e e e)
#define REPEAT5(e) e e e e e
#define FOR5(v, s, e) \
v = 0; \
REPEAT5(e; v += s;)
/*** Keccak-f[1600] ***/
static inline void keccakf(void* state) {
uint64_t* a = (uint64_t*)state;
uint64_t b[5] = {0};
uint64_t t = 0;
uint8_t x, y;
for (int i = 0; i < 24; i++) {
// Theta
FOR5(x, 1,
b[x] = 0;
FOR5(y, 5,
b[x] ^= a[x + y]; ))
FOR5(x, 1,
FOR5(y, 5,
a[y + x] ^= b[(x + 4) % 5] ^ rol(b[(x + 1) % 5], 1); ))
// Rho and pi
t = a[1];
x = 0;
REPEAT24(b[0] = a[pi[x]];
a[pi[x]] = rol(t, rho[x]);
t = b[0];
x++; )
// Chi
FOR5(y,
5,
FOR5(x, 1,
b[x] = a[y + x];)
FOR5(x, 1,
a[y + x] = b[x] ^ ((~b[(x + 1) % 5]) & b[(x + 2) % 5]); ))
// Iota
a[0] ^= RC[i];
}
}
/******** The FIPS202-defined functions. ********/
/*** Some helper macros. ***/
#define _(S) do { S } while (0)
#define FOR(i, ST, L, S) \
_(for (size_t i = 0; i < L; i += ST) { S; })
#define mkapply_ds(NAME, S) \
static inline void NAME(uint8_t* dst, \
const uint8_t* src, \
size_t len) { \
FOR(i, 1, len, S); \
}
#define mkapply_sd(NAME, S) \
static inline void NAME(const uint8_t* src, \
uint8_t* dst, \
size_t len) { \
FOR(i, 1, len, S); \
}
mkapply_ds(xorin, dst[i] ^= src[i]) // xorin
mkapply_sd(setout, dst[i] = src[i]) // setout
#define P keccakf
#define Plen 200
// Fold P*F over the full blocks of an input.
#define foldP(I, L, F) \
while (L >= rate) { \
F(a, I, rate); \
P(a); \
I += rate; \
L -= rate; \
}
/** The sponge-based hash construction. **/
static inline int hash(uint8_t* out, size_t outlen,
const uint8_t* in, size_t inlen,
size_t rate, uint8_t delim) {
if ((out == NULL) || ((in == NULL) && inlen != 0) || (rate >= Plen)) {
return -1;
}
uint8_t a[Plen] = {0};
// Absorb input.
foldP(in, inlen, xorin);
// Xor in the DS and pad frame.
a[inlen] ^= delim;
a[rate - 1] ^= 0x80;
// Xor in the last block.
xorin(a, in, inlen);
// Apply P
P(a);
// Squeeze output.
foldP(out, outlen, setout);
setout(a, out, outlen);
memset(a, 0, 200);
return 0;
}
#define defsha3(bits) \
int sha3_##bits(uint8_t* out, size_t outlen, \
const uint8_t* in, size_t inlen) { \
if (outlen > (bits/8)) { \
return -1; \
} \
return hash(out, outlen, in, inlen, 200 - (bits / 4), 0x01); \
}
/*** FIPS202 SHA3 FOFs ***/
defsha3(256)
defsha3(512)

View File

@@ -0,0 +1,31 @@
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include "compiler.h"
#include <stdint.h>
#include <stdlib.h>
struct ethash_h256;
#define decsha3(bits) \
int sha3_##bits(uint8_t*, size_t, uint8_t const*, size_t);
decsha3(256)
decsha3(512)
static inline void SHA3_256(struct ethash_h256 const* ret, uint8_t const* data, size_t const size)
{
sha3_256((uint8_t*)ret, 32, data, size);
}
static inline void SHA3_512(uint8_t* ret, uint8_t const* data, size_t const size)
{
sha3_512(ret, 64, data, size);
}
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,37 @@
/*
This file is part of ethash.
ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ethash. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file sha3.cpp
* @author Tim Hughes <tim@twistedfury.com>
* @date 2015
*/
#include <stdint.h>
#include <cryptopp/sha3.h>
extern "C" {
struct ethash_h256;
typedef struct ethash_h256 ethash_h256_t;
void SHA3_256(ethash_h256_t const* ret, uint8_t const* data, size_t size)
{
CryptoPP::SHA3_256().CalculateDigest((uint8_t*)ret, data, size);
}
void SHA3_512(uint8_t* const ret, uint8_t const* data, size_t size)
{
CryptoPP::SHA3_512().CalculateDigest(ret, data, size);
}
}

View File

@@ -0,0 +1,18 @@
#pragma once
#include "compiler.h"
#include <stdint.h>
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
struct ethash_h256;
void SHA3_256(struct ethash_h256 const* ret, uint8_t const* data, size_t size);
void SHA3_512(uint8_t* const ret, uint8_t const* data, size_t size);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,47 @@
/*
This file is part of ethash.
ethash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ethash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ethash. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file util.h
* @author Tim Hughes <tim@twistedfury.com>
* @date 2015
*/
#pragma once
#include <stdint.h>
#include "compiler.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _MSC_VER
void debugf(char const* str, ...);
#else
#define debugf printf
#endif
static inline uint32_t min_u32(uint32_t a, uint32_t b)
{
return a < b ? a : b;
}
static inline uint32_t clamp_u32(uint32_t x, uint32_t min_, uint32_t max_)
{
return x < min_ ? min_ : (x > max_ ? max_ : x);
}
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,38 @@
/*
This file is part of cpp-ethereum.
cpp-ethereum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
cpp-ethereum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file util.c
* @author Tim Hughes <tim@twistedfury.com>
* @date 2015
*/
#include <stdarg.h>
#include <stdio.h>
#include "util.h"
// foward declare without all of Windows.h
__declspec(dllimport) void __stdcall OutputDebugStringA(char const* lpOutputString);
void debugf(char const* str, ...)
{
va_list args;
va_start(args, str);
char buf[1<<16];
_vsnprintf_s(buf, sizeof(buf), sizeof(buf), str, args);
buf[sizeof(buf)-1] = '\0';
OutputDebugStringA(buf);
}

View File

@@ -0,0 +1,267 @@
#include <Python.h>
#include <alloca.h>
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
#include "../libethash/ethash.h"
#include "../libethash/internal.h"
#if PY_MAJOR_VERSION >= 3
#define PY_STRING_FORMAT "y#"
#define PY_CONST_STRING_FORMAT "y"
#else
#define PY_STRING_FORMAT "s#"
#define PY_CONST_STRING_FORMAT "s"
#endif
#define MIX_WORDS (ETHASH_MIX_BYTES/4)
static PyObject *
mkcache_bytes(PyObject *self, PyObject *args) {
unsigned long block_number;
unsigned long cache_size;
if (!PyArg_ParseTuple(args, "k", &block_number))
return 0;
ethash_light_t L = ethash_light_new(block_number);
PyObject * val = Py_BuildValue(PY_STRING_FORMAT, L->cache, L->cache_size);
free(L->cache);
return val;
}
/*
static PyObject *
calc_dataset_bytes(PyObject *self, PyObject *args) {
char *cache_bytes;
unsigned long full_size;
int cache_size;
if (!PyArg_ParseTuple(args, "k" PY_STRING_FORMAT, &full_size, &cache_bytes, &cache_size))
return 0;
if (full_size % MIX_WORDS != 0) {
char error_message[1024];
sprintf(error_message, "The size of data set must be a multiple of %i bytes (was %lu)", MIX_WORDS, full_size);
PyErr_SetString(PyExc_ValueError, error_message);
return 0;
}
if (cache_size % ETHASH_HASH_BYTES != 0) {
char error_message[1024];
sprintf(error_message, "The size of the cache must be a multiple of %i bytes (was %i)", ETHASH_HASH_BYTES, cache_size);
PyErr_SetString(PyExc_ValueError, error_message);
return 0;
}
ethash_params params;
params.cache_size = (size_t) cache_size;
params.full_size = (size_t) full_size;
ethash_cache cache;
cache.mem = (void *) cache_bytes;
void *mem = malloc(params.full_size);
ethash_compute_full_data(mem, &params, &cache);
PyObject * val = Py_BuildValue(PY_STRING_FORMAT, (char *) mem, full_size);
free(mem);
return val;
}*/
// hashimoto_light(full_size, cache, header, nonce)
static PyObject *
hashimoto_light(PyObject *self, PyObject *args) {
char *cache_bytes;
char *header;
unsigned long block_number;
unsigned long long nonce;
int cache_size, header_size;
if (!PyArg_ParseTuple(args, "k" PY_STRING_FORMAT PY_STRING_FORMAT "K", &block_number, &cache_bytes, &cache_size, &header, &header_size, &nonce))
return 0;
if (header_size != 32) {
char error_message[1024];
sprintf(error_message, "Seed must be 32 bytes long (was %i)", header_size);
PyErr_SetString(PyExc_ValueError, error_message);
return 0;
}
struct ethash_light *s;
s = calloc(sizeof(*s), 1);
s->cache = cache_bytes;
s->cache_size = cache_size;
s->block_number = block_number;
struct ethash_h256 *h;
h = calloc(sizeof(*h), 1);
for (int i = 0; i < 32; i++) h->b[i] = header[i];
struct ethash_return_value out = ethash_light_compute(s, *h, nonce);
return Py_BuildValue("{" PY_CONST_STRING_FORMAT ":" PY_STRING_FORMAT "," PY_CONST_STRING_FORMAT ":" PY_STRING_FORMAT "}",
"mix digest", &out.mix_hash, 32,
"result", &out.result, 32);
}
/*
// hashimoto_full(dataset, header, nonce)
static PyObject *
hashimoto_full(PyObject *self, PyObject *args) {
char *full_bytes;
char *header;
unsigned long long nonce;
int full_size, header_size;
if (!PyArg_ParseTuple(args, PY_STRING_FORMAT PY_STRING_FORMAT "K", &full_bytes, &full_size, &header, &header_size, &nonce))
return 0;
if (full_size % MIX_WORDS != 0) {
char error_message[1024];
sprintf(error_message, "The size of data set must be a multiple of %i bytes (was %i)", MIX_WORDS, full_size);
PyErr_SetString(PyExc_ValueError, error_message);
return 0;
}
if (header_size != 32) {
char error_message[1024];
sprintf(error_message, "Header must be 32 bytes long (was %i)", header_size);
PyErr_SetString(PyExc_ValueError, error_message);
return 0;
}
ethash_return_value out;
ethash_params params;
params.full_size = (size_t) full_size;
ethash_full(&out, (void *) full_bytes, &params, (ethash_h256_t *) header, nonce);
return Py_BuildValue("{" PY_CONST_STRING_FORMAT ":" PY_STRING_FORMAT ", " PY_CONST_STRING_FORMAT ":" PY_STRING_FORMAT "}",
"mix digest", &out.mix_hash, 32,
"result", &out.result, 32);
}
// mine(dataset_bytes, header, difficulty_bytes)
static PyObject *
mine(PyObject *self, PyObject *args) {
char *full_bytes;
char *header;
char *difficulty;
srand(time(0));
uint64_t nonce = ((uint64_t) rand()) << 32 | rand();
int full_size, header_size, difficulty_size;
if (!PyArg_ParseTuple(args, PY_STRING_FORMAT PY_STRING_FORMAT PY_STRING_FORMAT, &full_bytes, &full_size, &header, &header_size, &difficulty, &difficulty_size))
return 0;
if (full_size % MIX_WORDS != 0) {
char error_message[1024];
sprintf(error_message, "The size of data set must be a multiple of %i bytes (was %i)", MIX_WORDS, full_size);
PyErr_SetString(PyExc_ValueError, error_message);
return 0;
}
if (header_size != 32) {
char error_message[1024];
sprintf(error_message, "Header must be 32 bytes long (was %i)", header_size);
PyErr_SetString(PyExc_ValueError, error_message);
return 0;
}
if (difficulty_size != 32) {
char error_message[1024];
sprintf(error_message, "Difficulty must be an array of 32 bytes (only had %i)", difficulty_size);
PyErr_SetString(PyExc_ValueError, error_message);
return 0;
}
ethash_return_value out;
ethash_params params;
params.full_size = (size_t) full_size;
// TODO: Multi threading?
do {
ethash_full(&out, (void *) full_bytes, &params, (const ethash_h256_t *) header, nonce++);
// TODO: disagrees with the spec https://github.com/ethereum/wiki/wiki/Ethash#mining
} while (!ethash_check_difficulty(&out.result, (const ethash_h256_t *) difficulty));
return Py_BuildValue("{" PY_CONST_STRING_FORMAT ":" PY_STRING_FORMAT ", " PY_CONST_STRING_FORMAT ":" PY_STRING_FORMAT ", " PY_CONST_STRING_FORMAT ":K}",
"mix digest", &out.mix_hash, 32,
"result", &out.result, 32,
"nonce", nonce);
}
*/
//get_seedhash(block_number)
static PyObject *
get_seedhash(PyObject *self, PyObject *args) {
unsigned long block_number;
if (!PyArg_ParseTuple(args, "k", &block_number))
return 0;
if (block_number >= ETHASH_EPOCH_LENGTH * 2048) {
char error_message[1024];
sprintf(error_message, "Block number must be less than %i (was %lu)", ETHASH_EPOCH_LENGTH * 2048, block_number);
PyErr_SetString(PyExc_ValueError, error_message);
return 0;
}
ethash_h256_t seedhash = ethash_get_seedhash(block_number);
return Py_BuildValue(PY_STRING_FORMAT, (char *) &seedhash, 32);
}
static PyMethodDef PyethashMethods[] =
{
{"get_seedhash", get_seedhash, METH_VARARGS,
"get_seedhash(block_number)\n\n"
"Gets the seedhash for a block."},
{"mkcache_bytes", mkcache_bytes, METH_VARARGS,
"mkcache_bytes(block_number)\n\n"
"Makes a byte array for the cache for given block number\n"},
/*{"calc_dataset_bytes", calc_dataset_bytes, METH_VARARGS,
"calc_dataset_bytes(full_size, cache_bytes)\n\n"
"Makes a byte array for the dataset for a given size given cache bytes"},*/
{"hashimoto_light", hashimoto_light, METH_VARARGS,
"hashimoto_light(block_number, cache_bytes, header, nonce)\n\n"
"Runs the hashimoto hashing function just using cache bytes. Takes an int (full_size), byte array (cache_bytes), another byte array (header), and an int (nonce). Returns an object containing the mix digest, and hash result."},
/*{"hashimoto_full", hashimoto_full, METH_VARARGS,
"hashimoto_full(dataset_bytes, header, nonce)\n\n"
"Runs the hashimoto hashing function using the dataset bytes. Useful for testing. Returns an object containing the mix digest (byte array), and hash result (another byte array)."},
{"mine", mine, METH_VARARGS,
"mine(dataset_bytes, header, difficulty_bytes)\n\n"
"Mine for an adequate header. Returns an object containing the mix digest (byte array), hash result (another byte array) and nonce (an int)."},*/
{NULL, NULL, 0, NULL}
};
#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef PyethashModule = {
PyModuleDef_HEAD_INIT,
"pyethash",
"...",
-1,
PyethashMethods
};
PyMODINIT_FUNC PyInit_pyethash(void) {
PyObject *module = PyModule_Create(&PyethashModule);
// Following Spec: https://github.com/ethereum/wiki/wiki/Ethash#definitions
PyModule_AddIntConstant(module, "REVISION", (long) ETHASH_REVISION);
PyModule_AddIntConstant(module, "DATASET_BYTES_INIT", (long) ETHASH_DATASET_BYTES_INIT);
PyModule_AddIntConstant(module, "DATASET_BYTES_GROWTH", (long) ETHASH_DATASET_BYTES_GROWTH);
PyModule_AddIntConstant(module, "CACHE_BYTES_INIT", (long) ETHASH_CACHE_BYTES_INIT);
PyModule_AddIntConstant(module, "CACHE_BYTES_GROWTH", (long) ETHASH_CACHE_BYTES_GROWTH);
PyModule_AddIntConstant(module, "EPOCH_LENGTH", (long) ETHASH_EPOCH_LENGTH);
PyModule_AddIntConstant(module, "MIX_BYTES", (long) ETHASH_MIX_BYTES);
PyModule_AddIntConstant(module, "HASH_BYTES", (long) ETHASH_HASH_BYTES);
PyModule_AddIntConstant(module, "DATASET_PARENTS", (long) ETHASH_DATASET_PARENTS);
PyModule_AddIntConstant(module, "CACHE_ROUNDS", (long) ETHASH_CACHE_ROUNDS);
PyModule_AddIntConstant(module, "ACCESSES", (long) ETHASH_ACCESSES);
return module;
}
#else
PyMODINIT_FUNC
initpyethash(void) {
PyObject *module = Py_InitModule("pyethash", PyethashMethods);
// Following Spec: https://github.com/ethereum/wiki/wiki/Ethash#definitions
PyModule_AddIntConstant(module, "REVISION", (long) ETHASH_REVISION);
PyModule_AddIntConstant(module, "DATASET_BYTES_INIT", (long) ETHASH_DATASET_BYTES_INIT);
PyModule_AddIntConstant(module, "DATASET_BYTES_GROWTH", (long) ETHASH_DATASET_BYTES_GROWTH);
PyModule_AddIntConstant(module, "CACHE_BYTES_INIT", (long) ETHASH_CACHE_BYTES_INIT);
PyModule_AddIntConstant(module, "CACHE_BYTES_GROWTH", (long) ETHASH_CACHE_BYTES_GROWTH);
PyModule_AddIntConstant(module, "EPOCH_LENGTH", (long) ETHASH_EPOCH_LENGTH);
PyModule_AddIntConstant(module, "MIX_BYTES", (long) ETHASH_MIX_BYTES);
PyModule_AddIntConstant(module, "HASH_BYTES", (long) ETHASH_HASH_BYTES);
PyModule_AddIntConstant(module, "DATASET_PARENTS", (long) ETHASH_DATASET_PARENTS);
PyModule_AddIntConstant(module, "CACHE_ROUNDS", (long) ETHASH_CACHE_ROUNDS);
PyModule_AddIntConstant(module, "ACCESSES", (long) ETHASH_ACCESSES);
}
#endif

View File

@@ -0,0 +1,66 @@
if (MSVC)
if (NOT BOOST_ROOT)
set (BOOST_ROOT "$ENV{BOOST_ROOT}")
endif()
set (CMAKE_PREFIX_PATH BOOST_ROOT)
endif()
IF( NOT Boost_FOUND )
# use multithreaded boost libraries, with -mt suffix
set(Boost_USE_MULTITHREADED ON)
if (MSVC)
# TODO handle other msvc versions or it will fail find them
set(Boost_COMPILER -vc120)
# use static boost libraries *.lib
set(Boost_USE_STATIC_LIBS ON)
elseif (APPLE)
# use static boost libraries *.a
set(Boost_USE_STATIC_LIBS ON)
elseif (UNIX)
# use dynamic boost libraries .dll
set(Boost_USE_STATIC_LIBS OFF)
endif()
find_package(Boost 1.48.0 COMPONENTS unit_test_framework system filesystem)
ENDIF()
IF (Boost_FOUND)
message(STATUS "boost header: ${Boost_INCLUDE_DIRS}")
message(STATUS "boost libs : ${Boost_LIBRARIES}")
include_directories( ${Boost_INCLUDE_DIR} )
include_directories(../../src)
link_directories(${Boost_LIBRARY_DIRS})
file(GLOB HEADERS "*.h")
if ((NOT MSVC) AND (NOT APPLE))
ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK)
endif()
if (NOT CRYPTOPP_FOUND)
find_package (CryptoPP)
endif()
if (CRYPTOPP_FOUND)
add_definitions(-DWITH_CRYPTOPP)
endif()
if (NOT MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ")
endif()
add_executable (Test "./test.cpp" ${HEADERS})
target_link_libraries(Test ${ETHHASH_LIBS})
target_link_libraries(Test ${Boost_FILESYSTEM_LIBRARIES})
target_link_libraries(Test ${Boost_SYSTEM_LIBRARIES})
target_link_libraries(Test ${Boost_UNIT_TEST_FRAMEWORK_LIBRARIES})
if (CRYPTOPP_FOUND)
TARGET_LINK_LIBRARIES(Test ${CRYPTOPP_LIBRARIES})
endif()
enable_testing ()
add_test(NAME ethash COMMAND Test)
ENDIF()

View File

@@ -0,0 +1,668 @@
#include <iomanip>
#include <libethash/fnv.h>
#include <libethash/ethash.h>
#include <libethash/internal.h>
#include <libethash/io.h>
#ifdef WITH_CRYPTOPP
#include <libethash/sha3_cryptopp.h>
#else
#include <libethash/sha3.h>
#endif // WITH_CRYPTOPP
#ifdef _WIN32
#include <windows.h>
#include <Shlobj.h>
#endif
#define BOOST_TEST_MODULE Daggerhashimoto
#define BOOST_TEST_MAIN
#include <iostream>
#include <fstream>
#include <vector>
#include <boost/filesystem.hpp>
#include <boost/test/unit_test.hpp>
using namespace std;
using byte = uint8_t;
using bytes = std::vector<byte>;
namespace fs = boost::filesystem;
// Just an alloca "wrapper" to silence uint64_t to size_t conversion warnings in windows
// consider replacing alloca calls with something better though!
#define our_alloca(param__) alloca((size_t)(param__))
// some functions taken from eth::dev for convenience.
std::string bytesToHexString(const uint8_t *str, const uint64_t s)
{
std::ostringstream ret;
for (size_t i = 0; i < s; ++i)
ret << std::hex << std::setfill('0') << std::setw(2) << std::nouppercase << (int) str[i];
return ret.str();
}
std::string blockhashToHexString(ethash_h256_t* _hash)
{
return bytesToHexString((uint8_t*)_hash, 32);
}
int fromHex(char _i)
{
if (_i >= '0' && _i <= '9')
return _i - '0';
if (_i >= 'a' && _i <= 'f')
return _i - 'a' + 10;
if (_i >= 'A' && _i <= 'F')
return _i - 'A' + 10;
BOOST_REQUIRE_MESSAGE(false, "should never get here");
return -1;
}
bytes hexStringToBytes(std::string const& _s)
{
unsigned s = (_s[0] == '0' && _s[1] == 'x') ? 2 : 0;
std::vector<uint8_t> ret;
ret.reserve((_s.size() - s + 1) / 2);
if (_s.size() % 2)
try
{
ret.push_back(fromHex(_s[s++]));
}
catch (...)
{
ret.push_back(0);
}
for (unsigned i = s; i < _s.size(); i += 2)
try
{
ret.push_back((byte)(fromHex(_s[i]) * 16 + fromHex(_s[i + 1])));
}
catch (...){
ret.push_back(0);
}
return ret;
}
ethash_h256_t stringToBlockhash(std::string const& _s)
{
ethash_h256_t ret;
bytes b = hexStringToBytes(_s);
memcpy(&ret, b.data(), b.size());
return ret;
}
BOOST_AUTO_TEST_CASE(fnv_hash_check) {
uint32_t x = 1235U;
const uint32_t
y = 9999999U,
expected = (FNV_PRIME * x) ^y;
x = fnv_hash(x, y);
BOOST_REQUIRE_MESSAGE(x == expected,
"\nexpected: " << expected << "\n"
<< "actual: " << x << "\n");
}
BOOST_AUTO_TEST_CASE(SHA256_check) {
ethash_h256_t input;
ethash_h256_t out;
memcpy(&input, "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
SHA3_256(&out, (uint8_t*)&input, 32);
const std::string
expected = "2b5ddf6f4d21c23de216f44d5e4bdc68e044b71897837ea74c83908be7037cd7",
actual = bytesToHexString((uint8_t*)&out, 32);
BOOST_REQUIRE_MESSAGE(expected == actual,
"\nexpected: " << expected.c_str() << "\n"
<< "actual: " << actual.c_str() << "\n");
}
BOOST_AUTO_TEST_CASE(SHA512_check) {
uint8_t input[64], out[64];
memcpy(input, "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 64);
SHA3_512(out, input, 64);
const std::string
expected = "0be8a1d334b4655fe58c6b38789f984bb13225684e86b20517a55ab2386c7b61c306f25e0627c60064cecd6d80cd67a82b3890bd1289b7ceb473aad56a359405",
actual = bytesToHexString(out, 64);
BOOST_REQUIRE_MESSAGE(expected == actual,
"\nexpected: " << expected.c_str() << "\n"
<< "actual: " << actual.c_str() << "\n");
}
BOOST_AUTO_TEST_CASE(test_swap_endian32) {
uint32_t v32 = (uint32_t)0xBAADF00D;
v32 = ethash_swap_u32(v32);
BOOST_REQUIRE_EQUAL(v32, (uint32_t)0x0DF0ADBA);
}
BOOST_AUTO_TEST_CASE(test_swap_endian64) {
uint64_t v64 = (uint64_t)0xFEE1DEADDEADBEEF;
v64 = ethash_swap_u64(v64);
BOOST_REQUIRE_EQUAL(v64, (uint64_t)0xEFBEADDEADDEE1FE);
}
BOOST_AUTO_TEST_CASE(ethash_params_init_genesis_check) {
uint64_t full_size = ethash_get_datasize(0);
uint64_t cache_size = ethash_get_cachesize(0);
BOOST_REQUIRE_MESSAGE(full_size < ETHASH_DATASET_BYTES_INIT,
"\nfull size: " << full_size << "\n"
<< "should be less than or equal to: " << ETHASH_DATASET_BYTES_INIT << "\n");
BOOST_REQUIRE_MESSAGE(full_size + 20 * ETHASH_MIX_BYTES >= ETHASH_DATASET_BYTES_INIT,
"\nfull size + 20*MIX_BYTES: " << full_size + 20 * ETHASH_MIX_BYTES << "\n"
<< "should be greater than or equal to: " << ETHASH_DATASET_BYTES_INIT << "\n");
BOOST_REQUIRE_MESSAGE(cache_size < ETHASH_DATASET_BYTES_INIT / 32,
"\ncache size: " << cache_size << "\n"
<< "should be less than or equal to: " << ETHASH_DATASET_BYTES_INIT / 32 << "\n");
}
BOOST_AUTO_TEST_CASE(ethash_params_init_genesis_calcifide_check) {
uint64_t full_size = ethash_get_datasize(0);
uint64_t cache_size = ethash_get_cachesize(0);
const uint32_t expected_full_size = 1073739904;
const uint32_t expected_cache_size = 16776896;
BOOST_REQUIRE_MESSAGE(full_size == expected_full_size,
"\nexpected: " << expected_cache_size << "\n"
<< "actual: " << full_size << "\n");
BOOST_REQUIRE_MESSAGE(cache_size == expected_cache_size,
"\nexpected: " << expected_cache_size << "\n"
<< "actual: " << cache_size << "\n");
}
BOOST_AUTO_TEST_CASE(ethash_check_difficulty_check) {
ethash_h256_t hash;
ethash_h256_t target;
memcpy(&hash, "11111111111111111111111111111111", 32);
memcpy(&target, "22222222222222222222222222222222", 32);
BOOST_REQUIRE_MESSAGE(
ethash_check_difficulty(&hash, &target),
"\nexpected \"" << std::string((char *) &hash, 32).c_str() << "\" to have the same or less difficulty than \"" << std::string((char *) &target, 32).c_str() << "\"\n");
BOOST_REQUIRE_MESSAGE(
ethash_check_difficulty(&hash, &hash), "");
// "\nexpected \"" << hash << "\" to have the same or less difficulty than \"" << hash << "\"\n");
memcpy(&target, "11111111111111111111111111111112", 32);
BOOST_REQUIRE_MESSAGE(
ethash_check_difficulty(&hash, &target), "");
// "\nexpected \"" << hash << "\" to have the same or less difficulty than \"" << target << "\"\n");
memcpy(&target, "11111111111111111111111111111110", 32);
BOOST_REQUIRE_MESSAGE(
!ethash_check_difficulty(&hash, &target), "");
// "\nexpected \"" << hash << "\" to have more difficulty than \"" << target << "\"\n");
}
BOOST_AUTO_TEST_CASE(test_ethash_io_mutable_name) {
char mutable_name[DAG_MUTABLE_NAME_MAX_SIZE];
// should have at least 8 bytes provided since this is what we test :)
ethash_h256_t seed1 = ethash_h256_static_init(0, 10, 65, 255, 34, 55, 22, 8);
ethash_io_mutable_name(1, &seed1, mutable_name);
BOOST_REQUIRE_EQUAL(0, strcmp(mutable_name, "full-R1-000a41ff22371608"));
ethash_h256_t seed2 = ethash_h256_static_init(0, 0, 0, 0, 0, 0, 0, 0);
ethash_io_mutable_name(44, &seed2, mutable_name);
BOOST_REQUIRE_EQUAL(0, strcmp(mutable_name, "full-R44-0000000000000000"));
}
BOOST_AUTO_TEST_CASE(test_ethash_dir_creation) {
ethash_h256_t seedhash;
FILE *f = NULL;
memset(&seedhash, 0, 32);
BOOST_REQUIRE_EQUAL(
ETHASH_IO_MEMO_MISMATCH,
ethash_io_prepare("./test_ethash_directory/", seedhash, &f, 64, false)
);
BOOST_REQUIRE(f);
// let's make sure that the directory was created
BOOST_REQUIRE(fs::is_directory(fs::path("./test_ethash_directory/")));
// cleanup
fclose(f);
fs::remove_all("./test_ethash_directory/");
}
BOOST_AUTO_TEST_CASE(test_ethash_io_memo_file_match) {
uint64_t full_size;
uint64_t cache_size;
ethash_h256_t seed;
ethash_h256_t hash;
FILE* f;
memcpy(&seed, "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
memcpy(&hash, "~~~X~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
cache_size = 1024;
full_size = 1024 * 32;
ethash_light_t light = ethash_light_new_internal(cache_size, &seed);
ethash_full_t full = ethash_full_new_internal(
"./test_ethash_directory/",
seed,
full_size,
light,
NULL
);
BOOST_ASSERT(full);
// let's make sure that the directory was created
BOOST_REQUIRE(fs::is_directory(fs::path("./test_ethash_directory/")));
// delete the full here so that memory is properly unmapped and FILE handler freed
ethash_full_delete(full);
// and check that we have a match when checking again
BOOST_REQUIRE_EQUAL(
ETHASH_IO_MEMO_MATCH,
ethash_io_prepare("./test_ethash_directory/", seed, &f, full_size, false)
);
BOOST_REQUIRE(f);
// cleanup
fclose(f);
ethash_light_delete(light);
fs::remove_all("./test_ethash_directory/");
}
BOOST_AUTO_TEST_CASE(test_ethash_io_memo_file_size_mismatch) {
static const int blockn = 0;
ethash_h256_t seedhash = ethash_get_seedhash(blockn);
FILE *f = NULL;
BOOST_REQUIRE_EQUAL(
ETHASH_IO_MEMO_MISMATCH,
ethash_io_prepare("./test_ethash_directory/", seedhash, &f, 64, false)
);
BOOST_REQUIRE(f);
fclose(f);
// let's make sure that the directory was created
BOOST_REQUIRE(fs::is_directory(fs::path("./test_ethash_directory/")));
// and check that we get the size mismatch detected if we request diffferent size
BOOST_REQUIRE_EQUAL(
ETHASH_IO_MEMO_SIZE_MISMATCH,
ethash_io_prepare("./test_ethash_directory/", seedhash, &f, 65, false)
);
// cleanup
fs::remove_all("./test_ethash_directory/");
}
BOOST_AUTO_TEST_CASE(test_ethash_get_default_dirname) {
char result[256];
// this is really not an easy thing to test for in a unit test, so yeah it does look ugly
#ifdef _WIN32
char homedir[256];
BOOST_REQUIRE(SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_PROFILE, NULL, 0, (WCHAR*)homedir)));
BOOST_REQUIRE(ethash_get_default_dirname(result, 256));
std::string res = std::string(homedir) + std::string("\\Appdata\\Ethash\\");
#else
char* homedir = getenv("HOME");
BOOST_REQUIRE(ethash_get_default_dirname(result, 256));
std::string res = std::string(homedir) + std::string("/.ethash/");
#endif
BOOST_CHECK_MESSAGE(strcmp(res.c_str(), result) == 0,
"Expected \"" + res + "\" but got \"" + std::string(result) + "\""
);
}
BOOST_AUTO_TEST_CASE(light_and_full_client_checks) {
uint64_t full_size;
uint64_t cache_size;
ethash_h256_t seed;
ethash_h256_t hash;
ethash_h256_t difficulty;
ethash_return_value_t light_out;
ethash_return_value_t full_out;
memcpy(&seed, "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
memcpy(&hash, "~~~X~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
// Set the difficulty
ethash_h256_set(&difficulty, 0, 197);
ethash_h256_set(&difficulty, 1, 90);
for (int i = 2; i < 32; i++)
ethash_h256_set(&difficulty, i, 255);
cache_size = 1024;
full_size = 1024 * 32;
ethash_light_t light = ethash_light_new_internal(cache_size, &seed);
ethash_full_t full = ethash_full_new_internal(
"./test_ethash_directory/",
seed,
full_size,
light,
NULL
);
BOOST_ASSERT(full);
{
const std::string
expected = "2da2b506f21070e1143d908e867962486d6b0a02e31d468fd5e3a7143aafa76a14201f63374314e2a6aaf84ad2eb57105dea3378378965a1b3873453bb2b78f9a8620b2ebeca41fbc773bb837b5e724d6eb2de570d99858df0d7d97067fb8103b21757873b735097b35d3bea8fd1c359a9e8a63c1540c76c9784cf8d975e995ca8620b2ebeca41fbc773bb837b5e724d6eb2de570d99858df0d7d97067fb8103b21757873b735097b35d3bea8fd1c359a9e8a63c1540c76c9784cf8d975e995ca8620b2ebeca41fbc773bb837b5e724d6eb2de570d99858df0d7d97067fb8103b21757873b735097b35d3bea8fd1c359a9e8a63c1540c76c9784cf8d975e995c259440b89fa3481c2c33171477c305c8e1e421f8d8f6d59585449d0034f3e421808d8da6bbd0b6378f567647cc6c4ba6c434592b198ad444e7284905b7c6adaf70bf43ec2daa7bd5e8951aa609ab472c124cf9eba3d38cff5091dc3f58409edcc386c743c3bd66f92408796ee1e82dd149eaefbf52b00ce33014a6eb3e50625413b072a58bc01da28262f42cbe4f87d4abc2bf287d15618405a1fe4e386fcdafbb171064bd99901d8f81dd6789396ce5e364ac944bbbd75a7827291c70b42d26385910cd53ca535ab29433dd5c5714d26e0dce95514c5ef866329c12e958097e84462197c2b32087849dab33e88b11da61d52f9dbc0b92cc61f742c07dbbf751c49d7678624ee60dfbe62e5e8c47a03d8247643f3d16ad8c8e663953bcda1f59d7e2d4a9bf0768e789432212621967a8f41121ad1df6ae1fa78782530695414c6213942865b2730375019105cae91a4c17a558d4b63059661d9f108362143107babe0b848de412e4da59168cce82bfbff3c99e022dd6ac1e559db991f2e3f7bb910cefd173e65ed00a8d5d416534e2c8416ff23977dbf3eb7180b75c71580d08ce95efeb9b0afe904ea12285a392aff0c8561ff79fca67f694a62b9e52377485c57cc3598d84cac0a9d27960de0cc31ff9bbfe455acaa62c8aa5d2cce96f345da9afe843d258a99c4eaf3650fc62efd81c7b81cd0d534d2d71eeda7a6e315d540b4473c80f8730037dc2ae3e47b986240cfc65ccc565f0d8cde0bc68a57e39a271dda57440b3598bee19f799611d25731a96b5dbbbefdff6f4f656161462633030d62560ea4e9c161cf78fc96a2ca5aaa32453a6c5dea206f766244e8c9d9a8dc61185ce37f1fc804459c5f07434f8ecb34141b8dcae7eae704c950b55556c5f40140c3714b45eddb02637513268778cbf937a33e4e33183685f9deb31ef54e90161e76d969587dd782eaa94e289420e7c2ee908517f5893a26fdb5873d68f92d118d4bcf98d7a4916794d6ab290045e30f9ea00ca547c584b8482b0331ba1539a0f2714fddc3a0b06b0cfbb6a607b8339c39bcfd6640b1f653e9d70ef6c985b",
actual = bytesToHexString((uint8_t const *) light->cache, cache_size);
BOOST_REQUIRE_MESSAGE(expected == actual,
"\nexpected: " << expected.c_str() << "\n"
<< "actual: " << actual.c_str() << "\n");
}
{
node node;
ethash_calculate_dag_item(&node, 0, light);
const std::string
actual = bytesToHexString((uint8_t const *) &node, sizeof(node)),
expected = "b1698f829f90b35455804e5185d78f549fcb1bdce2bee006d4d7e68eb154b596be1427769eb1c3c3e93180c760af75f81d1023da6a0ffbe321c153a7c0103597";
BOOST_REQUIRE_MESSAGE(actual == expected,
"\n" << "expected: " << expected.c_str() << "\n"
<< "actual: " << actual.c_str() << "\n");
}
{
for (int i = 0; i < full_size / sizeof(node); ++i) {
for (uint32_t j = 0; j < 32; ++j) {
node expected_node;
ethash_calculate_dag_item(&expected_node, j, light);
const std::string
actual = bytesToHexString((uint8_t const *) &(full->data[j]), sizeof(node)),
expected = bytesToHexString((uint8_t const *) &expected_node, sizeof(node));
BOOST_REQUIRE_MESSAGE(actual == expected,
"\ni: " << j << "\n"
<< "expected: " << expected.c_str() << "\n"
<< "actual: " << actual.c_str() << "\n");
}
}
}
{
uint64_t nonce = 0x7c7c597c;
full_out = ethash_full_compute(full, hash, nonce);
BOOST_REQUIRE(full_out.success);
light_out = ethash_light_compute_internal(light, full_size, hash, nonce);
BOOST_REQUIRE(light_out.success);
const std::string
light_result_string = blockhashToHexString(&light_out.result),
full_result_string = blockhashToHexString(&full_out.result);
BOOST_REQUIRE_MESSAGE(light_result_string == full_result_string,
"\nlight result: " << light_result_string.c_str() << "\n"
<< "full result: " << full_result_string.c_str() << "\n");
const std::string
light_mix_hash_string = blockhashToHexString(&light_out.mix_hash),
full_mix_hash_string = blockhashToHexString(&full_out.mix_hash);
BOOST_REQUIRE_MESSAGE(full_mix_hash_string == light_mix_hash_string,
"\nlight mix hash: " << light_mix_hash_string.c_str() << "\n"
<< "full mix hash: " << full_mix_hash_string.c_str() << "\n");
ethash_h256_t check_hash;
ethash_quick_hash(&check_hash, &hash, nonce, &full_out.mix_hash);
const std::string check_hash_string = blockhashToHexString(&check_hash);
BOOST_REQUIRE_MESSAGE(check_hash_string == full_result_string,
"\ncheck hash string: " << check_hash_string.c_str() << "\n"
<< "full result: " << full_result_string.c_str() << "\n");
}
{
full_out = ethash_full_compute(full, hash, 5);
BOOST_REQUIRE(full_out.success);
std::string
light_result_string = blockhashToHexString(&light_out.result),
full_result_string = blockhashToHexString(&full_out.result);
BOOST_REQUIRE_MESSAGE(light_result_string != full_result_string,
"\nlight result and full result should differ: " << light_result_string.c_str() << "\n");
light_out = ethash_light_compute_internal(light, full_size, hash, 5);
BOOST_REQUIRE(light_out.success);
light_result_string = blockhashToHexString(&light_out.result);
BOOST_REQUIRE_MESSAGE(light_result_string == full_result_string,
"\nlight result and full result should be the same\n"
<< "light result: " << light_result_string.c_str() << "\n"
<< "full result: " << full_result_string.c_str() << "\n");
std::string
light_mix_hash_string = blockhashToHexString(&light_out.mix_hash),
full_mix_hash_string = blockhashToHexString(&full_out.mix_hash);
BOOST_REQUIRE_MESSAGE(full_mix_hash_string == light_mix_hash_string,
"\nlight mix hash: " << light_mix_hash_string.c_str() << "\n"
<< "full mix hash: " << full_mix_hash_string.c_str() << "\n");
BOOST_REQUIRE_MESSAGE(ethash_check_difficulty(&full_out.result, &difficulty),
"ethash_check_difficulty failed"
);
BOOST_REQUIRE_MESSAGE(ethash_quick_check_difficulty(&hash, 5U, &full_out.mix_hash, &difficulty),
"ethash_quick_check_difficulty failed"
);
}
ethash_light_delete(light);
ethash_full_delete(full);
fs::remove_all("./test_ethash_directory/");
}
BOOST_AUTO_TEST_CASE(ethash_full_new_when_dag_exists_with_wrong_size) {
uint64_t full_size;
uint64_t cache_size;
ethash_h256_t seed;
ethash_h256_t hash;
ethash_return_value_t full_out;
ethash_return_value_t light_out;
memcpy(&seed, "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
memcpy(&hash, "~~~X~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
cache_size = 1024;
full_size = 1024 * 32;
// first make a DAG file of "wrong size"
FILE *f;
BOOST_REQUIRE_EQUAL(
ETHASH_IO_MEMO_MISMATCH,
ethash_io_prepare("./test_ethash_directory/", seed, &f, 64, false)
);
fclose(f);
// then create new DAG, which should detect the wrong size and force create a new file
ethash_light_t light = ethash_light_new_internal(cache_size, &seed);
BOOST_ASSERT(light);
ethash_full_t full = ethash_full_new_internal(
"./test_ethash_directory/",
seed,
full_size,
light,
NULL
);
BOOST_ASSERT(full);
{
uint64_t nonce = 0x7c7c597c;
full_out = ethash_full_compute(full, hash, nonce);
BOOST_REQUIRE(full_out.success);
light_out = ethash_light_compute_internal(light, full_size, hash, nonce);
BOOST_REQUIRE(light_out.success);
const std::string
light_result_string = blockhashToHexString(&light_out.result),
full_result_string = blockhashToHexString(&full_out.result);
BOOST_REQUIRE_MESSAGE(light_result_string == full_result_string,
"\nlight result: " << light_result_string.c_str() << "\n"
<< "full result: " << full_result_string.c_str() << "\n");
const std::string
light_mix_hash_string = blockhashToHexString(&light_out.mix_hash),
full_mix_hash_string = blockhashToHexString(&full_out.mix_hash);
BOOST_REQUIRE_MESSAGE(full_mix_hash_string == light_mix_hash_string,
"\nlight mix hash: " << light_mix_hash_string.c_str() << "\n"
<< "full mix hash: " << full_mix_hash_string.c_str() << "\n");
ethash_h256_t check_hash;
ethash_quick_hash(&check_hash, &hash, nonce, &full_out.mix_hash);
const std::string check_hash_string = blockhashToHexString(&check_hash);
BOOST_REQUIRE_MESSAGE(check_hash_string == full_result_string,
"\ncheck hash string: " << check_hash_string.c_str() << "\n"
<< "full result: " << full_result_string.c_str() << "\n");
}
ethash_light_delete(light);
ethash_full_delete(full);
fs::remove_all("./test_ethash_directory/");
}
static bool g_executed = false;
static unsigned g_prev_progress = 0;
static int test_full_callback(unsigned _progress)
{
g_executed = true;
BOOST_CHECK(_progress >= g_prev_progress);
g_prev_progress = _progress;
return 0;
}
static int test_full_callback_that_fails(unsigned _progress)
{
return 1;
}
static int test_full_callback_create_incomplete_dag(unsigned _progress)
{
if (_progress >= 30) {
return 1;
}
return 0;
}
BOOST_AUTO_TEST_CASE(full_client_callback) {
uint64_t full_size;
uint64_t cache_size;
ethash_h256_t seed;
ethash_h256_t hash;
memcpy(&seed, "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
memcpy(&hash, "~~~X~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
cache_size = 1024;
full_size = 1024 * 32;
ethash_light_t light = ethash_light_new_internal(cache_size, &seed);
ethash_full_t full = ethash_full_new_internal(
"./test_ethash_directory/",
seed,
full_size,
light,
test_full_callback
);
BOOST_ASSERT(full);
BOOST_CHECK(g_executed);
BOOST_REQUIRE_EQUAL(g_prev_progress, 100);
ethash_full_delete(full);
ethash_light_delete(light);
fs::remove_all("./test_ethash_directory/");
}
BOOST_AUTO_TEST_CASE(failing_full_client_callback) {
uint64_t full_size;
uint64_t cache_size;
ethash_h256_t seed;
ethash_h256_t hash;
memcpy(&seed, "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
memcpy(&hash, "~~~X~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
cache_size = 1024;
full_size = 1024 * 32;
ethash_light_t light = ethash_light_new_internal(cache_size, &seed);
ethash_full_t full = ethash_full_new_internal(
"./test_ethash_directory/",
seed,
full_size,
light,
test_full_callback_that_fails
);
BOOST_ASSERT(!full);
ethash_light_delete(light);
fs::remove_all("./test_ethash_directory/");
}
BOOST_AUTO_TEST_CASE(test_incomplete_dag_file) {
uint64_t full_size;
uint64_t cache_size;
ethash_h256_t seed;
ethash_h256_t hash;
memcpy(&seed, "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
memcpy(&hash, "~~~X~~~~~~~~~~~~~~~~~~~~~~~~~~~~", 32);
cache_size = 1024;
full_size = 1024 * 32;
ethash_light_t light = ethash_light_new_internal(cache_size, &seed);
// create a full but stop at 30%, so no magic number is written
ethash_full_t full = ethash_full_new_internal(
"./test_ethash_directory/",
seed,
full_size,
light,
test_full_callback_create_incomplete_dag
);
BOOST_ASSERT(!full);
FILE *f = NULL;
// confirm that we get a size_mismatch because the magic number is missing
BOOST_REQUIRE_EQUAL(
ETHASH_IO_MEMO_SIZE_MISMATCH,
ethash_io_prepare("./test_ethash_directory/", seed, &f, full_size, false)
);
ethash_light_delete(light);
fs::remove_all("./test_ethash_directory/");
}
BOOST_AUTO_TEST_CASE(test_block22_verification) {
// from POC-9 testnet, epoch 0
ethash_light_t light = ethash_light_new(22);
ethash_h256_t seedhash = stringToBlockhash("372eca2454ead349c3df0ab5d00b0b706b23e49d469387db91811cee0358fc6d");
BOOST_ASSERT(light);
ethash_return_value_t ret = ethash_light_compute(
light,
seedhash,
0x495732e0ed7a801cU
);
BOOST_REQUIRE_EQUAL(blockhashToHexString(&ret.result), "00000b184f1fdd88bfd94c86c39e65db0c36144d5e43f745f722196e730cb614");
ethash_h256_t difficulty = ethash_h256_static_init(0x2, 0x5, 0x40);
BOOST_REQUIRE(ethash_check_difficulty(&ret.result, &difficulty));
ethash_light_delete(light);
}
BOOST_AUTO_TEST_CASE(test_block30001_verification) {
// from POC-9 testnet, epoch 1
ethash_light_t light = ethash_light_new(30001);
ethash_h256_t seedhash = stringToBlockhash("7e44356ee3441623bc72a683fd3708fdf75e971bbe294f33e539eedad4b92b34");
BOOST_ASSERT(light);
ethash_return_value_t ret = ethash_light_compute(
light,
seedhash,
0x318df1c8adef7e5eU
);
ethash_h256_t difficulty = ethash_h256_static_init(0x17, 0x62, 0xff);
BOOST_REQUIRE(ethash_check_difficulty(&ret.result, &difficulty));
ethash_light_delete(light);
}
BOOST_AUTO_TEST_CASE(test_block60000_verification) {
// from POC-9 testnet, epoch 2
ethash_light_t light = ethash_light_new(60000);
ethash_h256_t seedhash = stringToBlockhash("5fc898f16035bf5ac9c6d9077ae1e3d5fc1ecc3c9fd5bee8bb00e810fdacbaa0");
BOOST_ASSERT(light);
ethash_return_value_t ret = ethash_light_compute(
light,
seedhash,
0x50377003e5d830caU
);
ethash_h256_t difficulty = ethash_h256_static_init(0x25, 0xa6, 0x1e);
BOOST_REQUIRE(ethash_check_difficulty(&ret.result, &difficulty));
ethash_light_delete(light);
}
// Test of Full DAG creation with the minimal ethash.h API.
// Commented out since travis tests would take too much time.
// Uncomment and run on your own machine if you want to confirm
// it works fine.
#if 0
static int progress_cb(unsigned _progress)
{
printf("CREATING DAG. PROGRESS: %u\n", _progress);
fflush(stdout);
return 0;
}
BOOST_AUTO_TEST_CASE(full_dag_test) {
ethash_light_t light = ethash_light_new(55);
BOOST_ASSERT(light);
ethash_full_t full = ethash_full_new(light, progress_cb);
BOOST_ASSERT(full);
ethash_light_delete(light);
ethash_full_delete(full);
}
#endif

View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Strict mode
set -e
VALGRIND_ARGS="--tool=memcheck"
VALGRIND_ARGS+=" --leak-check=yes"
VALGRIND_ARGS+=" --track-origins=yes"
VALGRIND_ARGS+=" --show-reachable=yes"
VALGRIND_ARGS+=" --num-callers=20"
VALGRIND_ARGS+=" --track-fds=yes"
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
TEST_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
rm -rf $TEST_DIR/build
mkdir -p $TEST_DIR/build
cd $TEST_DIR/build ;
cmake ../../.. > /dev/null
make Test
./test/c/Test
# If we have valgrind also run memory check tests
if hash valgrind 2>/dev/null; then
echo "======== Running tests under valgrind ========";
cd $TEST_DIR/build/ && valgrind $VALGRIND_ARGS ./test/c/Test
fi

View File

@@ -0,0 +1 @@
python-virtual-env/

View File

@@ -0,0 +1,3 @@
pyethereum==0.7.522
nose==1.3.4
pysha3==0.3

View File

@@ -0,0 +1,30 @@
#!/bin/bash
# Strict mode
set -e
if [ -x "$(which virtualenv2)" ] ; then
VIRTUALENV_EXEC=virtualenv2
elif [ -x "$(which virtualenv)" ] ; then
VIRTUALENV_EXEC=virtualenv
else
echo "Could not find a suitable version of virtualenv"
false
fi
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
TEST_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
[ -d $TEST_DIR/python-virtual-env ] || $VIRTUALENV_EXEC --system-site-packages $TEST_DIR/python-virtual-env
source $TEST_DIR/python-virtual-env/bin/activate
pip install -r $TEST_DIR/requirements.txt > /dev/null
# force installation of nose in virtualenv even if existing in thereuser's system
pip install nose -I
pip install --upgrade --no-deps --force-reinstall -e $TEST_DIR/../..
cd $TEST_DIR
nosetests --with-doctest -v --nocapture

View File

@@ -0,0 +1,105 @@
import pyethash
from random import randint
def test_get_cache_size_not_None():
for _ in range(100):
block_num = randint(0,12456789)
out = pyethash.get_cache_size(block_num)
assert out != None
def test_get_full_size_not_None():
for _ in range(100):
block_num = randint(0,12456789)
out = pyethash.get_full_size(block_num)
assert out != None
def test_get_cache_size_based_on_EPOCH():
for _ in range(100):
block_num = randint(0,12456789)
out1 = pyethash.get_cache_size(block_num)
out2 = pyethash.get_cache_size((block_num // pyethash.EPOCH_LENGTH) * pyethash.EPOCH_LENGTH)
assert out1 == out2
def test_get_full_size_based_on_EPOCH():
for _ in range(100):
block_num = randint(0,12456789)
out1 = pyethash.get_full_size(block_num)
out2 = pyethash.get_full_size((block_num // pyethash.EPOCH_LENGTH) * pyethash.EPOCH_LENGTH)
assert out1 == out2
# See light_and_full_client_checks in test.cpp
def test_mkcache_is_as_expected():
actual = pyethash.mkcache_bytes(
1024,
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~").encode('hex')
expected = "2da2b506f21070e1143d908e867962486d6b0a02e31d468fd5e3a7143aafa76a14201f63374314e2a6aaf84ad2eb57105dea3378378965a1b3873453bb2b78f9a8620b2ebeca41fbc773bb837b5e724d6eb2de570d99858df0d7d97067fb8103b21757873b735097b35d3bea8fd1c359a9e8a63c1540c76c9784cf8d975e995ca8620b2ebeca41fbc773bb837b5e724d6eb2de570d99858df0d7d97067fb8103b21757873b735097b35d3bea8fd1c359a9e8a63c1540c76c9784cf8d975e995ca8620b2ebeca41fbc773bb837b5e724d6eb2de570d99858df0d7d97067fb8103b21757873b735097b35d3bea8fd1c359a9e8a63c1540c76c9784cf8d975e995c259440b89fa3481c2c33171477c305c8e1e421f8d8f6d59585449d0034f3e421808d8da6bbd0b6378f567647cc6c4ba6c434592b198ad444e7284905b7c6adaf70bf43ec2daa7bd5e8951aa609ab472c124cf9eba3d38cff5091dc3f58409edcc386c743c3bd66f92408796ee1e82dd149eaefbf52b00ce33014a6eb3e50625413b072a58bc01da28262f42cbe4f87d4abc2bf287d15618405a1fe4e386fcdafbb171064bd99901d8f81dd6789396ce5e364ac944bbbd75a7827291c70b42d26385910cd53ca535ab29433dd5c5714d26e0dce95514c5ef866329c12e958097e84462197c2b32087849dab33e88b11da61d52f9dbc0b92cc61f742c07dbbf751c49d7678624ee60dfbe62e5e8c47a03d8247643f3d16ad8c8e663953bcda1f59d7e2d4a9bf0768e789432212621967a8f41121ad1df6ae1fa78782530695414c6213942865b2730375019105cae91a4c17a558d4b63059661d9f108362143107babe0b848de412e4da59168cce82bfbff3c99e022dd6ac1e559db991f2e3f7bb910cefd173e65ed00a8d5d416534e2c8416ff23977dbf3eb7180b75c71580d08ce95efeb9b0afe904ea12285a392aff0c8561ff79fca67f694a62b9e52377485c57cc3598d84cac0a9d27960de0cc31ff9bbfe455acaa62c8aa5d2cce96f345da9afe843d258a99c4eaf3650fc62efd81c7b81cd0d534d2d71eeda7a6e315d540b4473c80f8730037dc2ae3e47b986240cfc65ccc565f0d8cde0bc68a57e39a271dda57440b3598bee19f799611d25731a96b5dbbbefdff6f4f656161462633030d62560ea4e9c161cf78fc96a2ca5aaa32453a6c5dea206f766244e8c9d9a8dc61185ce37f1fc804459c5f07434f8ecb34141b8dcae7eae704c950b55556c5f40140c3714b45eddb02637513268778cbf937a33e4e33183685f9deb31ef54e90161e76d969587dd782eaa94e289420e7c2ee908517f5893a26fdb5873d68f92d118d4bcf98d7a4916794d6ab290045e30f9ea00ca547c584b8482b0331ba1539a0f2714fddc3a0b06b0cfbb6a607b8339c39bcfd6640b1f653e9d70ef6c985b"
assert actual == expected
def test_calc_dataset_is_not_None():
cache = pyethash.mkcache_bytes(
1024,
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
assert pyethash.calc_dataset_bytes(1024 * 32, cache) != None
def test_light_and_full_agree():
cache = pyethash.mkcache_bytes(
1024,
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
full_size = 1024 * 32
header = "~~~~~X~~~~~~~~~~~~~~~~~~~~~~~~~~"
light_result = pyethash.hashimoto_light(full_size, cache, header, 0)
dataset = pyethash.calc_dataset_bytes(full_size, cache)
full_result = pyethash.hashimoto_full(dataset, header, 0)
assert light_result["mix digest"] != None
assert len(light_result["mix digest"]) == 32
assert light_result["mix digest"] == full_result["mix digest"]
assert light_result["result"] != None
assert len(light_result["result"]) == 32
assert light_result["result"] == full_result["result"]
def int_to_bytes(i):
b = []
for _ in range(32):
b.append(chr(i & 0xff))
i >>= 8
b.reverse()
return "".join(b)
def test_mining_basic():
easy_difficulty = int_to_bytes(2**256 - 1)
assert easy_difficulty.encode('hex') == 'f' * 64
cache = pyethash.mkcache_bytes(
1024,
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
full_size = 1024 * 32
header = "~~~~~X~~~~~~~~~~~~~~~~~~~~~~~~~~"
dataset = pyethash.calc_dataset_bytes(full_size, cache)
# Check type of outputs
assert type(pyethash.mine(dataset,header,easy_difficulty)) == dict
assert type(pyethash.mine(dataset,header,easy_difficulty)["nonce"]) == long
assert type(pyethash.mine(dataset,header,easy_difficulty)["mix digest"]) == str
assert type(pyethash.mine(dataset,header,easy_difficulty)["result"]) == str
def test_mining_doesnt_always_return_the_same_value():
easy_difficulty1 = int_to_bytes(int(2**256 * 0.999))
# 1 in 1000 difficulty
easy_difficulty2 = int_to_bytes(int(2**256 * 0.001))
assert easy_difficulty1 != easy_difficulty2
cache = pyethash.mkcache_bytes(
1024,
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
full_size = 1024 * 32
header = "~~~~~X~~~~~~~~~~~~~~~~~~~~~~~~~~"
dataset = pyethash.calc_dataset_bytes(full_size, cache)
# Check type of outputs
assert pyethash.mine(dataset, header, easy_difficulty1)['nonce'] != pyethash.mine(dataset, header, easy_difficulty2)['nonce']
def test_get_seedhash():
assert pyethash.get_seedhash(0).encode('hex') == '0' * 64
import hashlib, sha3
expected = pyethash.get_seedhash(0)
#print "checking seed hashes:",
for i in range(0, 30000*2048, 30000):
#print i // 30000,
assert pyethash.get_seedhash(i) == expected
expected = hashlib.sha3_256(expected).digest()

View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Strict mode
set -e
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
TEST_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
echo -e "\n################# Testing JS ##################"
# TODO: Use mocha and real testing tools instead of rolling our own
cd $TEST_DIR/../js
if [ -x "$(which nodejs)" ] ; then
nodejs test.js
fi
if [ -x "$(which node)" ] ; then
node test.js
fi
echo -e "\n################# Testing C ##################"
$TEST_DIR/c/test.sh
# Temporarily commenting out python tests until they conform to the API
#echo -e "\n################# Testing Python ##################"
#$TEST_DIR/python/test.sh
echo "################# Testing Go ##################"
cd $TEST_DIR/.. && go test -timeout 9999s

View File

@@ -0,0 +1,5 @@
# Setup a Global .gitignore for OS and editor generated files:
# https://help.github.com/articles/ignoring-files
# git config --global core.excludesfile ~/.gitignore_global
.vagrant

View File

@@ -0,0 +1,28 @@
# Names should be added to this file as
# Name or Organization <email address>
# The email address is not required for organizations.
# You can update this list using the following command:
#
# $ git shortlog -se | awk '{print $2 " " $3 " " $4}'
# Please keep the list sorted.
Adrien Bustany <adrien@bustany.org>
Caleb Spare <cespare@gmail.com>
Case Nelson <case@teammating.com>
Chris Howey <howeyc@gmail.com> <chris@howey.me>
Christoffer Buchholz <christoffer.buchholz@gmail.com>
Dave Cheney <dave@cheney.net>
Francisco Souza <f@souza.cc>
John C Barstow
Kelvin Fo <vmirage@gmail.com>
Nathan Youngman <git@nathany.com>
Paul Hammond <paul@paulhammond.org>
Pursuit92 <JoshChase@techpursuit.net>
Rob Figueiredo <robfig@gmail.com>
Travis Cline <travis.cline@gmail.com>
Tudor Golubenco <tudor.g@gmail.com>
bronze1man <bronze1man@gmail.com>
debrando <denis.brandolini@gmail.com>
henrikedwards <henrik.edwards@gmail.com>

View File

@@ -0,0 +1,160 @@
# Changelog
## v0.9.0 / 2014-01-17
* IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany)
* [Fix] kqueue: fix deadlock [#77][] (thanks @cespare)
* [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library.
## v0.8.12 / 2013-11-13
* [API] Remove FD_SET and friends from Linux adapter
## v0.8.11 / 2013-11-02
* [Doc] Add Changelog [#72][] (thanks @nathany)
* [Doc] Spotlight and double modify events on OS X [#62][] (reported by @paulhammond)
## v0.8.10 / 2013-10-19
* [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott)
* [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer)
* [Doc] specify OS-specific limits in README (thanks @debrando)
## v0.8.9 / 2013-09-08
* [Doc] Contributing (thanks @nathany)
* [Doc] update package path in example code [#63][] (thanks @paulhammond)
* [Doc] GoCI badge in README (Linux only) [#60][]
* [Doc] Cross-platform testing with Vagrant [#59][] (thanks @nathany)
## v0.8.8 / 2013-06-17
* [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie)
## v0.8.7 / 2013-06-03
* [API] Make syscall flags internal
* [Fix] inotify: ignore event changes
* [Fix] race in symlink test [#45][] (reported by @srid)
* [Fix] tests on Windows
* lower case error messages
## v0.8.6 / 2013-05-23
* kqueue: Use EVT_ONLY flag on Darwin
* [Doc] Update README with full example
## v0.8.5 / 2013-05-09
* [Fix] inotify: allow monitoring of "broken" symlinks (thanks @tsg)
## v0.8.4 / 2013-04-07
* [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz)
## v0.8.3 / 2013-03-13
* [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin)
* [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin)
## v0.8.2 / 2013-02-07
* [Doc] add Authors
* [Fix] fix data races for map access [#29][] (thanks @fsouza)
## v0.8.1 / 2013-01-09
* [Fix] Windows path separators
* [Doc] BSD License
## v0.8.0 / 2012-11-09
* kqueue: directory watching improvements (thanks @vmirage)
* inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto)
* [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr)
## v0.7.4 / 2012-10-09
* [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji)
* [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig)
* [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig)
* [Fix] kqueue: modify after recreation of file
## v0.7.3 / 2012-09-27
* [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage)
* [Fix] kqueue: no longer get duplicate CREATE events
## v0.7.2 / 2012-09-01
* kqueue: events for created directories
## v0.7.1 / 2012-07-14
* [Fix] for renaming files
## v0.7.0 / 2012-07-02
* [Feature] FSNotify flags
* [Fix] inotify: Added file name back to event path
## v0.6.0 / 2012-06-06
* kqueue: watch files after directory created (thanks @tmc)
## v0.5.1 / 2012-05-22
* [Fix] inotify: remove all watches before Close()
## v0.5.0 / 2012-05-03
* [API] kqueue: return errors during watch instead of sending over channel
* kqueue: match symlink behavior on Linux
* inotify: add `DELETE_SELF` (requested by @taralx)
* [Fix] kqueue: handle EINTR (reported by @robfig)
* [Doc] Godoc example [#1][] (thanks @davecheney)
## v0.4.0 / 2012-03-30
* Go 1 released: build with go tool
* [Feature] Windows support using winfsnotify
* Windows does not have attribute change notifications
* Roll attribute notifications into IsModify
## v0.3.0 / 2012-02-19
* kqueue: add files when watch directory
## v0.2.0 / 2011-12-30
* update to latest Go weekly code
## v0.1.0 / 2011-10-19
* kqueue: add watch on file creation to match inotify
* kqueue: create file event
* inotify: ignore `IN_IGNORED` events
* event String()
* linux: common FileEvent functions
* initial commit
[#79]: https://github.com/howeyc/fsnotify/pull/79
[#77]: https://github.com/howeyc/fsnotify/pull/77
[#72]: https://github.com/howeyc/fsnotify/issues/72
[#71]: https://github.com/howeyc/fsnotify/issues/71
[#70]: https://github.com/howeyc/fsnotify/issues/70
[#63]: https://github.com/howeyc/fsnotify/issues/63
[#62]: https://github.com/howeyc/fsnotify/issues/62
[#60]: https://github.com/howeyc/fsnotify/issues/60
[#59]: https://github.com/howeyc/fsnotify/issues/59
[#49]: https://github.com/howeyc/fsnotify/issues/49
[#45]: https://github.com/howeyc/fsnotify/issues/45
[#40]: https://github.com/howeyc/fsnotify/issues/40
[#36]: https://github.com/howeyc/fsnotify/issues/36
[#33]: https://github.com/howeyc/fsnotify/issues/33
[#29]: https://github.com/howeyc/fsnotify/issues/29
[#25]: https://github.com/howeyc/fsnotify/issues/25
[#24]: https://github.com/howeyc/fsnotify/issues/24
[#21]: https://github.com/howeyc/fsnotify/issues/21
[#1]: https://github.com/howeyc/fsnotify/issues/1

View File

@@ -0,0 +1,7 @@
# Contributing
## Moving Notice
There is a fork being actively developed with a new API in preparation for the Go Standard Library:
[github.com/go-fsnotify/fsnotify](https://github.com/go-fsnotify/fsnotify)

Some files were not shown because too many files have changed in this diff Show More