forked from cerc-io/plugeth
Merge pull request #877 from Gustav-Simonsson/update_ethash_godep
Update ethash deps (more build fixes, tests)
This commit is contained in:
commit
69aac4d531
4
Godeps/Godeps.json
generated
4
Godeps/Godeps.json
generated
@ -17,8 +17,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/ethereum/ethash",
|
"ImportPath": "github.com/ethereum/ethash",
|
||||||
"Comment": "v23.1-195-g4d50db9",
|
"Comment": "v23.1-204-g0401fdf",
|
||||||
"Rev": "4d50db90d8bb5f2fae357570366cb8c657a4ddfc"
|
"Rev": "0401fdf56a3bc8679f9560e542c3d1cf83020efe"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/howeyc/fsnotify",
|
"ImportPath": "github.com/howeyc/fsnotify",
|
||||||
|
12
Godeps/_workspace/src/github.com/ethereum/ethash/ethashc.go
generated
vendored
12
Godeps/_workspace/src/github.com/ethereum/ethash/ethashc.go
generated
vendored
@ -1,5 +1,16 @@
|
|||||||
package ethash
|
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 CFLAGS: -std=gnu99 -Wall
|
||||||
#cgo windows CFLAGS: -mno-stack-arg-probe
|
#cgo windows CFLAGS: -mno-stack-arg-probe
|
||||||
@ -10,7 +21,6 @@ package ethash
|
|||||||
#include "src/libethash/io.c"
|
#include "src/libethash/io.c"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# include "src/libethash/util_win32.c"
|
|
||||||
# include "src/libethash/io_win32.c"
|
# include "src/libethash/io_win32.c"
|
||||||
# include "src/libethash/mmap_win32.c"
|
# include "src/libethash/mmap_win32.c"
|
||||||
#else
|
#else
|
||||||
|
2
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/internal.c
generated
vendored
2
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/internal.c
generated
vendored
@ -280,7 +280,7 @@ ethash_h256_t ethash_get_seedhash(uint64_t block_number)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ethash_quick_check_difficulty(
|
bool ethash_quick_check_difficulty(
|
||||||
ethash_h256_t const* header_hash,
|
ethash_h256_t const* header_hash,
|
||||||
uint64_t const nonce,
|
uint64_t const nonce,
|
||||||
ethash_h256_t const* mix_hash,
|
ethash_h256_t const* mix_hash,
|
||||||
|
6
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/internal.h
generated
vendored
6
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/internal.h
generated
vendored
@ -47,7 +47,7 @@ static inline void ethash_h256_reset(ethash_h256_t* hash)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Returns if hash is less than or equal to difficulty
|
// Returns if hash is less than or equal to difficulty
|
||||||
static inline int ethash_check_difficulty(
|
static inline bool ethash_check_difficulty(
|
||||||
ethash_h256_t const* hash,
|
ethash_h256_t const* hash,
|
||||||
ethash_h256_t const* difficulty
|
ethash_h256_t const* difficulty
|
||||||
)
|
)
|
||||||
@ -59,10 +59,10 @@ static inline int ethash_check_difficulty(
|
|||||||
}
|
}
|
||||||
return ethash_h256_get(hash, i) < ethash_h256_get(difficulty, i);
|
return ethash_h256_get(hash, i) < ethash_h256_get(difficulty, i);
|
||||||
}
|
}
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ethash_quick_check_difficulty(
|
bool ethash_quick_check_difficulty(
|
||||||
ethash_h256_t const* header_hash,
|
ethash_h256_t const* header_hash,
|
||||||
uint64_t const nonce,
|
uint64_t const nonce,
|
||||||
ethash_h256_t const* mix_hash,
|
ethash_h256_t const* mix_hash,
|
||||||
|
7
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/io.h
generated
vendored
7
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/io.h
generated
vendored
@ -34,11 +34,12 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
// Maximum size for mutable part of DAG file name
|
// 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)
|
// 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
|
// 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
|
// the seedhash and last 1 is for the null terminating character
|
||||||
// Reference: https://github.com/ethereum/wiki/wiki/Ethash-DAG
|
// Reference: https://github.com/ethereum/wiki/wiki/Ethash-DAG
|
||||||
#define DAG_MUTABLE_NAME_MAX_SIZE (10 + 1 + 16 + 1)
|
#define DAG_MUTABLE_NAME_MAX_SIZE (6 + 10 + 1 + 16 + 1)
|
||||||
/// Possible return values of @see ethash_io_prepare
|
/// Possible return values of @see ethash_io_prepare
|
||||||
enum ethash_io_rc {
|
enum ethash_io_rc {
|
||||||
ETHASH_IO_FAIL = 0, ///< There has been an IO failure
|
ETHASH_IO_FAIL = 0, ///< There has been an IO failure
|
||||||
@ -176,7 +177,7 @@ static inline bool ethash_io_mutable_name(
|
|||||||
#if LITTLE_ENDIAN == BYTE_ORDER
|
#if LITTLE_ENDIAN == BYTE_ORDER
|
||||||
hash = ethash_swap_u64(hash);
|
hash = ethash_swap_u64(hash);
|
||||||
#endif
|
#endif
|
||||||
return snprintf(output, DAG_MUTABLE_NAME_MAX_SIZE, "%u_%016" PRIx64, revision, hash) >= 0;
|
return snprintf(output, DAG_MUTABLE_NAME_MAX_SIZE, "full-R%u-%016" PRIx64, revision, hash) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
2
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/io_win32.c
generated
vendored
2
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/io_win32.c
generated
vendored
@ -25,7 +25,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <Shlobj.h>
|
#include <shlobj.h>
|
||||||
|
|
||||||
FILE* ethash_fopen(char const* file_name, char const* mode)
|
FILE* ethash_fopen(char const* file_name, char const* mode)
|
||||||
{
|
{
|
||||||
|
8
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/util.h
generated
vendored
8
Godeps/_workspace/src/github.com/ethereum/ethash/src/libethash/util.h
generated
vendored
@ -26,11 +26,11 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
void debugf(char const* str, ...);
|
void debugf(char const* str, ...);
|
||||||
//#else
|
#else
|
||||||
//#define debugf printf
|
#define debugf printf
|
||||||
//#endif
|
#endif
|
||||||
|
|
||||||
static inline uint32_t min_u32(uint32_t a, uint32_t b)
|
static inline uint32_t min_u32(uint32_t a, uint32_t b)
|
||||||
{
|
{
|
||||||
|
45
Godeps/_workspace/src/github.com/ethereum/ethash/test/c/test.cpp
generated
vendored
45
Godeps/_workspace/src/github.com/ethereum/ethash/test/c/test.cpp
generated
vendored
@ -205,10 +205,10 @@ BOOST_AUTO_TEST_CASE(test_ethash_io_mutable_name) {
|
|||||||
// should have at least 8 bytes provided since this is what we test :)
|
// 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_h256_t seed1 = ethash_h256_static_init(0, 10, 65, 255, 34, 55, 22, 8);
|
||||||
ethash_io_mutable_name(1, &seed1, mutable_name);
|
ethash_io_mutable_name(1, &seed1, mutable_name);
|
||||||
BOOST_REQUIRE_EQUAL(0, strcmp(mutable_name, "1_000a41ff22371608"));
|
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_h256_t seed2 = ethash_h256_static_init(0, 0, 0, 0, 0, 0, 0, 0);
|
||||||
ethash_io_mutable_name(44, &seed2, mutable_name);
|
ethash_io_mutable_name(44, &seed2, mutable_name);
|
||||||
BOOST_REQUIRE_EQUAL(0, strcmp(mutable_name, "44_0000000000000000"));
|
BOOST_REQUIRE_EQUAL(0, strcmp(mutable_name, "full-R44-0000000000000000"));
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(test_ethash_dir_creation) {
|
BOOST_AUTO_TEST_CASE(test_ethash_dir_creation) {
|
||||||
@ -599,16 +599,49 @@ BOOST_AUTO_TEST_CASE(test_incomplete_dag_file) {
|
|||||||
fs::remove_all("./test_ethash_directory/");
|
fs::remove_all("./test_ethash_directory/");
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(test_block_verification) {
|
BOOST_AUTO_TEST_CASE(test_block22_verification) {
|
||||||
|
// from POC-9 testnet, epoch 0
|
||||||
ethash_light_t light = ethash_light_new(22);
|
ethash_light_t light = ethash_light_new(22);
|
||||||
ethash_h256_t seedhash = stringToBlockhash("372eca2454ead349c3df0ab5d00b0b706b23e49d469387db91811cee0358fc6d");
|
ethash_h256_t seedhash = stringToBlockhash("372eca2454ead349c3df0ab5d00b0b706b23e49d469387db91811cee0358fc6d");
|
||||||
BOOST_ASSERT(light);
|
BOOST_ASSERT(light);
|
||||||
ethash_return_value_t ret = ethash_light_compute(
|
ethash_return_value_t ret = ethash_light_compute(
|
||||||
light,
|
light,
|
||||||
seedhash,
|
seedhash,
|
||||||
0x495732e0ed7a801c
|
0x495732e0ed7a801cU
|
||||||
);
|
);
|
||||||
BOOST_REQUIRE_EQUAL(blockhashToHexString(&ret.result), "00000b184f1fdd88bfd94c86c39e65db0c36144d5e43f745f722196e730cb614");
|
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);
|
ethash_light_delete(light);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -617,7 +650,7 @@ BOOST_AUTO_TEST_CASE(test_block_verification) {
|
|||||||
// Uncomment and run on your own machine if you want to confirm
|
// Uncomment and run on your own machine if you want to confirm
|
||||||
// it works fine.
|
// it works fine.
|
||||||
#if 0
|
#if 0
|
||||||
static int lef_cb(unsigned _progress)
|
static int progress_cb(unsigned _progress)
|
||||||
{
|
{
|
||||||
printf("CREATING DAG. PROGRESS: %u\n", _progress);
|
printf("CREATING DAG. PROGRESS: %u\n", _progress);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
@ -627,7 +660,7 @@ static int lef_cb(unsigned _progress)
|
|||||||
BOOST_AUTO_TEST_CASE(full_dag_test) {
|
BOOST_AUTO_TEST_CASE(full_dag_test) {
|
||||||
ethash_light_t light = ethash_light_new(55);
|
ethash_light_t light = ethash_light_new(55);
|
||||||
BOOST_ASSERT(light);
|
BOOST_ASSERT(light);
|
||||||
ethash_full_t full = ethash_full_new(light, lef_cb);
|
ethash_full_t full = ethash_full_new(light, progress_cb);
|
||||||
BOOST_ASSERT(full);
|
BOOST_ASSERT(full);
|
||||||
ethash_light_delete(light);
|
ethash_light_delete(light);
|
||||||
ethash_full_delete(full);
|
ethash_full_delete(full);
|
||||||
|
Loading…
Reference in New Issue
Block a user