mirror of https://github.com/lukechilds/komodo.git
910 changed files with 111937 additions and 11292 deletions
@ -0,0 +1,568 @@ |
|||
# =========================================================================== |
|||
# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html |
|||
# =========================================================================== |
|||
# |
|||
# SYNOPSIS |
|||
# |
|||
# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional]) |
|||
# |
|||
# DESCRIPTION |
|||
# |
|||
# Check for baseline language coverage in the compiler for the specified |
|||
# version of the C++ standard. If necessary, add switches to CXX and |
|||
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard) |
|||
# or '14' (for the C++14 standard). |
|||
# |
|||
# The second argument, if specified, indicates whether you insist on an |
|||
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. |
|||
# -std=c++11). If neither is specified, you get whatever works, with |
|||
# preference for an extended mode. |
|||
# |
|||
# The third argument, if specified 'mandatory' or if left unspecified, |
|||
# indicates that baseline support for the specified C++ standard is |
|||
# required and that the macro should error out if no mode with that |
|||
# support is found. If specified 'optional', then configuration proceeds |
|||
# regardless, after defining HAVE_CXX${VERSION} if and only if a |
|||
# supporting mode is found. |
|||
# |
|||
# LICENSE |
|||
# |
|||
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com> |
|||
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com> |
|||
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu> |
|||
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com> |
|||
# Copyright (c) 2015 Paul Norman <penorman@mac.com> |
|||
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu> |
|||
# |
|||
# Copying and distribution of this file, with or without modification, are |
|||
# permitted in any medium without royalty provided the copyright notice |
|||
# and this notice are preserved. This file is offered as-is, without any |
|||
# warranty. |
|||
|
|||
#serial 4 |
|||
|
|||
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro |
|||
dnl (serial version number 13). |
|||
|
|||
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl |
|||
m4_if([$1], [11], [], |
|||
[$1], [14], [], |
|||
[$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])], |
|||
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl |
|||
m4_if([$2], [], [], |
|||
[$2], [ext], [], |
|||
[$2], [noext], [], |
|||
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl |
|||
m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true], |
|||
[$3], [mandatory], [ax_cxx_compile_cxx$1_required=true], |
|||
[$3], [optional], [ax_cxx_compile_cxx$1_required=false], |
|||
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])]) |
|||
m4_if([$4], [], [ax_cxx_compile_cxx$1_try_default=true], |
|||
[$4], [default], [ax_cxx_compile_cxx$1_try_default=true], |
|||
[$4], [nodefault], [ax_cxx_compile_cxx$1_try_default=false], |
|||
[m4_fatal([invalid fourth argument `$4' to AX_CXX_COMPILE_STDCXX])]) |
|||
AC_LANG_PUSH([C++])dnl |
|||
ac_success=no |
|||
|
|||
m4_if([$4], [nodefault], [], [dnl |
|||
AC_CACHE_CHECK(whether $CXX supports C++$1 features by default, |
|||
ax_cv_cxx_compile_cxx$1, |
|||
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], |
|||
[ax_cv_cxx_compile_cxx$1=yes], |
|||
[ax_cv_cxx_compile_cxx$1=no])]) |
|||
if test x$ax_cv_cxx_compile_cxx$1 = xyes; then |
|||
ac_success=yes |
|||
fi]) |
|||
|
|||
m4_if([$2], [noext], [], [dnl |
|||
if test x$ac_success = xno; then |
|||
for switch in -std=gnu++$1 -std=gnu++0x; do |
|||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) |
|||
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, |
|||
$cachevar, |
|||
[ac_save_CXX="$CXX" |
|||
CXX="$CXX $switch" |
|||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], |
|||
[eval $cachevar=yes], |
|||
[eval $cachevar=no]) |
|||
CXX="$ac_save_CXX"]) |
|||
if eval test x\$$cachevar = xyes; then |
|||
CXX="$CXX $switch" |
|||
if test -n "$CXXCPP" ; then |
|||
CXXCPP="$CXXCPP $switch" |
|||
fi |
|||
ac_success=yes |
|||
break |
|||
fi |
|||
done |
|||
fi]) |
|||
|
|||
m4_if([$2], [ext], [], [dnl |
|||
if test x$ac_success = xno; then |
|||
dnl HP's aCC needs +std=c++11 according to: |
|||
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf |
|||
dnl Cray's crayCC needs "-h std=c++11" |
|||
for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do |
|||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) |
|||
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, |
|||
$cachevar, |
|||
[ac_save_CXX="$CXX" |
|||
CXX="$CXX $switch" |
|||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], |
|||
[eval $cachevar=yes], |
|||
[eval $cachevar=no]) |
|||
CXX="$ac_save_CXX"]) |
|||
if eval test x\$$cachevar = xyes; then |
|||
CXX="$CXX $switch" |
|||
if test -n "$CXXCPP" ; then |
|||
CXXCPP="$CXXCPP $switch" |
|||
fi |
|||
ac_success=yes |
|||
break |
|||
fi |
|||
done |
|||
fi]) |
|||
AC_LANG_POP([C++]) |
|||
if test x$ax_cxx_compile_cxx$1_required = xtrue; then |
|||
if test x$ac_success = xno; then |
|||
AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.]) |
|||
fi |
|||
fi |
|||
if test x$ac_success = xno; then |
|||
HAVE_CXX$1=0 |
|||
AC_MSG_NOTICE([No compiler with C++$1 support was found]) |
|||
else |
|||
HAVE_CXX$1=1 |
|||
AC_DEFINE(HAVE_CXX$1,1, |
|||
[define if the compiler supports basic C++$1 syntax]) |
|||
fi |
|||
AC_SUBST(HAVE_CXX$1) |
|||
]) |
|||
|
|||
|
|||
dnl Test body for checking C++11 support |
|||
|
|||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], |
|||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 |
|||
) |
|||
|
|||
|
|||
dnl Test body for checking C++14 support |
|||
|
|||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], |
|||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 |
|||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14 |
|||
) |
|||
|
|||
|
|||
dnl Tests for new features in C++11 |
|||
|
|||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[ |
|||
|
|||
// If the compiler admits that it is not ready for C++11, why torture it? |
|||
// Hopefully, this will speed up the test. |
|||
|
|||
#ifndef __cplusplus |
|||
|
|||
#error "This is not a C++ compiler" |
|||
|
|||
#elif __cplusplus < 201103L |
|||
|
|||
#error "This is not a C++11 compiler" |
|||
|
|||
#else |
|||
|
|||
namespace cxx11 |
|||
{ |
|||
|
|||
namespace test_static_assert |
|||
{ |
|||
|
|||
template <typename T> |
|||
struct check |
|||
{ |
|||
static_assert(sizeof(int) <= sizeof(T), "not big enough"); |
|||
}; |
|||
|
|||
} |
|||
|
|||
namespace test_final_override |
|||
{ |
|||
|
|||
struct Base |
|||
{ |
|||
virtual void f() {} |
|||
}; |
|||
|
|||
struct Derived : public Base |
|||
{ |
|||
virtual void f() override {} |
|||
}; |
|||
|
|||
} |
|||
|
|||
namespace test_double_right_angle_brackets |
|||
{ |
|||
|
|||
template < typename T > |
|||
struct check {}; |
|||
|
|||
typedef check<void> single_type; |
|||
typedef check<check<void>> double_type; |
|||
typedef check<check<check<void>>> triple_type; |
|||
typedef check<check<check<check<void>>>> quadruple_type; |
|||
|
|||
} |
|||
|
|||
namespace test_decltype |
|||
{ |
|||
|
|||
int |
|||
f() |
|||
{ |
|||
int a = 1; |
|||
decltype(a) b = 2; |
|||
return a + b; |
|||
} |
|||
|
|||
} |
|||
|
|||
namespace test_type_deduction |
|||
{ |
|||
|
|||
template < typename T1, typename T2 > |
|||
struct is_same |
|||
{ |
|||
static const bool value = false; |
|||
}; |
|||
|
|||
template < typename T > |
|||
struct is_same<T, T> |
|||
{ |
|||
static const bool value = true; |
|||
}; |
|||
|
|||
template < typename T1, typename T2 > |
|||
auto |
|||
add(T1 a1, T2 a2) -> decltype(a1 + a2) |
|||
{ |
|||
return a1 + a2; |
|||
} |
|||
|
|||
int |
|||
test(const int c, volatile int v) |
|||
{ |
|||
static_assert(is_same<int, decltype(0)>::value == true, ""); |
|||
static_assert(is_same<int, decltype(c)>::value == false, ""); |
|||
static_assert(is_same<int, decltype(v)>::value == false, ""); |
|||
auto ac = c; |
|||
auto av = v; |
|||
auto sumi = ac + av + 'x'; |
|||
auto sumf = ac + av + 1.0; |
|||
static_assert(is_same<int, decltype(ac)>::value == true, ""); |
|||
static_assert(is_same<int, decltype(av)>::value == true, ""); |
|||
static_assert(is_same<int, decltype(sumi)>::value == true, ""); |
|||
static_assert(is_same<int, decltype(sumf)>::value == false, ""); |
|||
static_assert(is_same<int, decltype(add(c, v))>::value == true, ""); |
|||
return (sumf > 0.0) ? sumi : add(c, v); |
|||
} |
|||
|
|||
} |
|||
|
|||
namespace test_noexcept |
|||
{ |
|||
|
|||
int f() { return 0; } |
|||
int g() noexcept { return 0; } |
|||
|
|||
static_assert(noexcept(f()) == false, ""); |
|||
static_assert(noexcept(g()) == true, ""); |
|||
|
|||
} |
|||
|
|||
namespace test_constexpr |
|||
{ |
|||
|
|||
template < typename CharT > |
|||
unsigned long constexpr |
|||
strlen_c_r(const CharT *const s, const unsigned long acc) noexcept |
|||
{ |
|||
return *s ? strlen_c_r(s + 1, acc + 1) : acc; |
|||
} |
|||
|
|||
template < typename CharT > |
|||
unsigned long constexpr |
|||
strlen_c(const CharT *const s) noexcept |
|||
{ |
|||
return strlen_c_r(s, 0UL); |
|||
} |
|||
|
|||
static_assert(strlen_c("") == 0UL, ""); |
|||
static_assert(strlen_c("1") == 1UL, ""); |
|||
static_assert(strlen_c("example") == 7UL, ""); |
|||
static_assert(strlen_c("another\0example") == 7UL, ""); |
|||
|
|||
} |
|||
|
|||
namespace test_rvalue_references |
|||
{ |
|||
|
|||
template < int N > |
|||
struct answer |
|||
{ |
|||
static constexpr int value = N; |
|||
}; |
|||
|
|||
answer<1> f(int&) { return answer<1>(); } |
|||
answer<2> f(const int&) { return answer<2>(); } |
|||
answer<3> f(int&&) { return answer<3>(); } |
|||
|
|||
void |
|||
test() |
|||
{ |
|||
int i = 0; |
|||
const int c = 0; |
|||
static_assert(decltype(f(i))::value == 1, ""); |
|||
static_assert(decltype(f(c))::value == 2, ""); |
|||
static_assert(decltype(f(0))::value == 3, ""); |
|||
} |
|||
|
|||
} |
|||
|
|||
namespace test_uniform_initialization |
|||
{ |
|||
|
|||
struct test |
|||
{ |
|||
static const int zero {}; |
|||
static const int one {1}; |
|||
}; |
|||
|
|||
static_assert(test::zero == 0, ""); |
|||
static_assert(test::one == 1, ""); |
|||
|
|||
} |
|||
|
|||
namespace test_lambdas |
|||
{ |
|||
|
|||
void |
|||
test1() |
|||
{ |
|||
auto lambda1 = [](){}; |
|||
auto lambda2 = lambda1; |
|||
lambda1(); |
|||
lambda2(); |
|||
} |
|||
|
|||
int |
|||
test2() |
|||
{ |
|||
auto a = [](int i, int j){ return i + j; }(1, 2); |
|||
auto b = []() -> int { return '0'; }(); |
|||
auto c = [=](){ return a + b; }(); |
|||
auto d = [&](){ return c; }(); |
|||
auto e = [a, &b](int x) mutable { |
|||
const auto identity = [](int y){ return y; }; |
|||
for (auto i = 0; i < a; ++i) |
|||
a += b--; |
|||
return x + identity(a + b); |
|||
}(0); |
|||
return a + b + c + d + e; |
|||
} |
|||
|
|||
int |
|||
test3() |
|||
{ |
|||
const auto nullary = [](){ return 0; }; |
|||
const auto unary = [](int x){ return x; }; |
|||
using nullary_t = decltype(nullary); |
|||
using unary_t = decltype(unary); |
|||
const auto higher1st = [](nullary_t f){ return f(); }; |
|||
const auto higher2nd = [unary](nullary_t f1){ |
|||
return [unary, f1](unary_t f2){ return f2(unary(f1())); }; |
|||
}; |
|||
return higher1st(nullary) + higher2nd(nullary)(unary); |
|||
} |
|||
|
|||
} |
|||
|
|||
namespace test_variadic_templates |
|||
{ |
|||
|
|||
template <int...> |
|||
struct sum; |
|||
|
|||
template <int N0, int... N1toN> |
|||
struct sum<N0, N1toN...> |
|||
{ |
|||
static constexpr auto value = N0 + sum<N1toN...>::value; |
|||
}; |
|||
|
|||
template <> |
|||
struct sum<> |
|||
{ |
|||
static constexpr auto value = 0; |
|||
}; |
|||
|
|||
static_assert(sum<>::value == 0, ""); |
|||
static_assert(sum<1>::value == 1, ""); |
|||
static_assert(sum<23>::value == 23, ""); |
|||
static_assert(sum<1, 2>::value == 3, ""); |
|||
static_assert(sum<5, 5, 11>::value == 21, ""); |
|||
static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); |
|||
|
|||
} |
|||
|
|||
// http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae |
|||
// Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function |
|||
// because of this. |
|||
namespace test_template_alias_sfinae |
|||
{ |
|||
|
|||
struct foo {}; |
|||
|
|||
template<typename T> |
|||
using member = typename T::member_type; |
|||
|
|||
template<typename T> |
|||
void func(...) {} |
|||
|
|||
template<typename T> |
|||
void func(member<T>*) {} |
|||
|
|||
void test(); |
|||
|
|||
void test() { func<foo>(0); } |
|||
|
|||
} |
|||
|
|||
} // namespace cxx11 |
|||
|
|||
#endif // __cplusplus >= 201103L |
|||
|
|||
]]) |
|||
|
|||
|
|||
dnl Tests for new features in C++14 |
|||
|
|||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[ |
|||
|
|||
// If the compiler admits that it is not ready for C++14, why torture it? |
|||
// Hopefully, this will speed up the test. |
|||
|
|||
#ifndef __cplusplus |
|||
|
|||
#error "This is not a C++ compiler" |
|||
|
|||
#elif __cplusplus < 201402L |
|||
|
|||
#error "This is not a C++14 compiler" |
|||
|
|||
#else |
|||
|
|||
namespace cxx14 |
|||
{ |
|||
|
|||
namespace test_polymorphic_lambdas |
|||
{ |
|||
|
|||
int |
|||
test() |
|||
{ |
|||
const auto lambda = [](auto&&... args){ |
|||
const auto istiny = [](auto x){ |
|||
return (sizeof(x) == 1UL) ? 1 : 0; |
|||
}; |
|||
const int aretiny[] = { istiny(args)... }; |
|||
return aretiny[0]; |
|||
}; |
|||
return lambda(1, 1L, 1.0f, '1'); |
|||
} |
|||
|
|||
} |
|||
|
|||
namespace test_binary_literals |
|||
{ |
|||
|
|||
constexpr auto ivii = 0b0000000000101010; |
|||
static_assert(ivii == 42, "wrong value"); |
|||
|
|||
} |
|||
|
|||
namespace test_generalized_constexpr |
|||
{ |
|||
|
|||
template < typename CharT > |
|||
constexpr unsigned long |
|||
strlen_c(const CharT *const s) noexcept |
|||
{ |
|||
auto length = 0UL; |
|||
for (auto p = s; *p; ++p) |
|||
++length; |
|||
return length; |
|||
} |
|||
|
|||
static_assert(strlen_c("") == 0UL, ""); |
|||
static_assert(strlen_c("x") == 1UL, ""); |
|||
static_assert(strlen_c("test") == 4UL, ""); |
|||
static_assert(strlen_c("another\0test") == 7UL, ""); |
|||
|
|||
} |
|||
|
|||
namespace test_lambda_init_capture |
|||
{ |
|||
|
|||
int |
|||
test() |
|||
{ |
|||
auto x = 0; |
|||
const auto lambda1 = [a = x](int b){ return a + b; }; |
|||
const auto lambda2 = [a = lambda1(x)](){ return a; }; |
|||
return lambda2(); |
|||
} |
|||
|
|||
} |
|||
|
|||
namespace test_digit_seperators |
|||
{ |
|||
|
|||
constexpr auto ten_million = 100'000'000; |
|||
static_assert(ten_million == 100000000, ""); |
|||
|
|||
} |
|||
|
|||
namespace test_return_type_deduction |
|||
{ |
|||
|
|||
auto f(int& x) { return x; } |
|||
decltype(auto) g(int& x) { return x; } |
|||
|
|||
template < typename T1, typename T2 > |
|||
struct is_same |
|||
{ |
|||
static constexpr auto value = false; |
|||
}; |
|||
|
|||
template < typename T > |
|||
struct is_same<T, T> |
|||
{ |
|||
static constexpr auto value = true; |
|||
}; |
|||
|
|||
int |
|||
test() |
|||
{ |
|||
auto x = 0; |
|||
static_assert(is_same<int, decltype(f(x))>::value, ""); |
|||
static_assert(is_same<int&, decltype(g(x))>::value, ""); |
|||
return x; |
|||
} |
|||
|
|||
} |
|||
|
|||
} // namespace cxx14 |
|||
|
|||
#endif // __cplusplus >= 201402L |
|||
|
|||
]]) |
@ -0,0 +1,123 @@ |
|||
# =========================================================================== |
|||
# https://www.gnu.org/software/autoconf-archive/ax_openmp.html |
|||
# =========================================================================== |
|||
# |
|||
# SYNOPSIS |
|||
# |
|||
# AX_OPENMP([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) |
|||
# |
|||
# DESCRIPTION |
|||
# |
|||
# This macro tries to find out how to compile programs that use OpenMP a |
|||
# standard API and set of compiler directives for parallel programming |
|||
# (see http://www-unix.mcs/) |
|||
# |
|||
# On success, it sets the OPENMP_CFLAGS/OPENMP_CXXFLAGS/OPENMP_F77FLAGS |
|||
# output variable to the flag (e.g. -omp) used both to compile *and* link |
|||
# OpenMP programs in the current language. |
|||
# |
|||
# NOTE: You are assumed to not only compile your program with these flags, |
|||
# but also link it with them as well. |
|||
# |
|||
# If you want to compile everything with OpenMP, you should set: |
|||
# |
|||
# CFLAGS="$CFLAGS $OPENMP_CFLAGS" |
|||
# #OR# CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS" |
|||
# #OR# FFLAGS="$FFLAGS $OPENMP_FFLAGS" |
|||
# |
|||
# (depending on the selected language). |
|||
# |
|||
# The user can override the default choice by setting the corresponding |
|||
# environment variable (e.g. OPENMP_CFLAGS). |
|||
# |
|||
# ACTION-IF-FOUND is a list of shell commands to run if an OpenMP flag is |
|||
# found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is |
|||
# not found. If ACTION-IF-FOUND is not specified, the default action will |
|||
# define HAVE_OPENMP. |
|||
# |
|||
# LICENSE |
|||
# |
|||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu> |
|||
# Copyright (c) 2015 John W. Peterson <jwpeterson@gmail.com> |
|||
# Copyright (c) 2016 Nick R. Papior <nickpapior@gmail.com> |
|||
# |
|||
# This program 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. |
|||
# |
|||
# This program 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 this program. If not, see <https://www.gnu.org/licenses/>. |
|||
# |
|||
# As a special exception, the respective Autoconf Macro's copyright owner |
|||
# gives unlimited permission to copy, distribute and modify the configure |
|||
# scripts that are the output of Autoconf when processing the Macro. You |
|||
# need not follow the terms of the GNU General Public License when using |
|||
# or distributing such scripts, even though portions of the text of the |
|||
# Macro appear in them. The GNU General Public License (GPL) does govern |
|||
# all other use of the material that constitutes the Autoconf Macro. |
|||
# |
|||
# This special exception to the GPL applies to versions of the Autoconf |
|||
# Macro released by the Autoconf Archive. When you make and distribute a |
|||
# modified version of the Autoconf Macro, you may extend this special |
|||
# exception to the GPL to apply to your modified version as well. |
|||
|
|||
#serial 13 |
|||
|
|||
AC_DEFUN([AX_OPENMP], [ |
|||
AC_PREREQ([2.69]) dnl for _AC_LANG_PREFIX |
|||
|
|||
AC_CACHE_CHECK([for OpenMP flag of _AC_LANG compiler], ax_cv_[]_AC_LANG_ABBREV[]_openmp, [save[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS |
|||
ax_cv_[]_AC_LANG_ABBREV[]_openmp=unknown |
|||
# Flags to try: -fopenmp (gcc), -mp (SGI & PGI), |
|||
# -qopenmp (icc>=15), -openmp (icc), |
|||
# -xopenmp (Sun), -omp (Tru64), |
|||
# -qsmp=omp (AIX), |
|||
# none |
|||
ax_openmp_flags="-fopenmp -openmp -qopenmp -mp -xopenmp -omp -qsmp=omp none" |
|||
if test "x$OPENMP_[]_AC_LANG_PREFIX[]FLAGS" != x; then |
|||
ax_openmp_flags="$OPENMP_[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flags" |
|||
fi |
|||
for ax_openmp_flag in $ax_openmp_flags; do |
|||
case $ax_openmp_flag in |
|||
none) []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[] ;; |
|||
*) []_AC_LANG_PREFIX[]FLAGS="$save[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flag" ;; |
|||
esac |
|||
AC_LINK_IFELSE([AC_LANG_SOURCE([[ |
|||
@%:@include <omp.h> |
|||
|
|||
static void |
|||
parallel_fill(int * data, int n) |
|||
{ |
|||
int i; |
|||
@%:@pragma omp parallel for |
|||
for (i = 0; i < n; ++i) |
|||
data[i] = i; |
|||
} |
|||
|
|||
int |
|||
main() |
|||
{ |
|||
int arr[100000]; |
|||
omp_set_num_threads(2); |
|||
parallel_fill(arr, 100000); |
|||
return 0; |
|||
} |
|||
]])],[ax_cv_[]_AC_LANG_ABBREV[]_openmp=$ax_openmp_flag; break],[]) |
|||
done |
|||
[]_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[]FLAGS |
|||
]) |
|||
if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" = "xunknown"; then |
|||
m4_default([$2],:) |
|||
else |
|||
if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" != "xnone"; then |
|||
OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ax_cv_[]_AC_LANG_ABBREV[]_openmp |
|||
fi |
|||
m4_default([$1], [AC_DEFINE(HAVE_OPENMP,1,[Define if OpenMP is enabled])]) |
|||
fi |
|||
])dnl AX_OPENMP |
@ -0,0 +1,40 @@ |
|||
# Some versions of gcc/libstdc++ require linking with -latomic if |
|||
# using the C++ atomic library. |
|||
# |
|||
# Sourced from http://bugs.debian.org/797228 |
|||
|
|||
m4_define([_CHECK_ATOMIC_testbody], [[ |
|||
#include <atomic> |
|||
#include <cstdint> |
|||
|
|||
int main() { |
|||
std::atomic<int64_t> a{}; |
|||
|
|||
int64_t v = 5; |
|||
int64_t r = a.fetch_add(v); |
|||
return static_cast<int>(r); |
|||
} |
|||
]]) |
|||
|
|||
AC_DEFUN([CHECK_ATOMIC], [ |
|||
|
|||
AC_LANG_PUSH(C++) |
|||
|
|||
AC_MSG_CHECKING([whether std::atomic can be used without link library]) |
|||
|
|||
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_ATOMIC_testbody])],[ |
|||
AC_MSG_RESULT([yes]) |
|||
],[ |
|||
AC_MSG_RESULT([no]) |
|||
LIBS="$LIBS -latomic" |
|||
AC_MSG_CHECKING([whether std::atomic needs -latomic]) |
|||
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_ATOMIC_testbody])],[ |
|||
AC_MSG_RESULT([yes]) |
|||
],[ |
|||
AC_MSG_RESULT([no]) |
|||
AC_MSG_FAILURE([cannot figure our how to use std::atomic]) |
|||
]) |
|||
]) |
|||
|
|||
AC_LANG_POP |
|||
]) |
@ -0,0 +1,48 @@ |
|||
#!/usr/bin/env python2 |
|||
# Copyright (c) 2017 The Zcash developers |
|||
# Distributed under the MIT software license, see the accompanying |
|||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|||
|
|||
# Requirements: |
|||
# pip install python-qpid-proton |
|||
|
|||
import binascii |
|||
from proton.handlers import MessagingHandler |
|||
from proton.reactor import Container |
|||
|
|||
port = 5672 |
|||
|
|||
class Server(MessagingHandler): |
|||
def __init__(self, url): |
|||
super(Server, self).__init__() |
|||
self.url = url |
|||
self.senders = {} |
|||
|
|||
def on_start(self, event): |
|||
print "Listening on:", self.url |
|||
self.container = event.container |
|||
self.acceptor = event.container.listen(self.url) |
|||
|
|||
def on_message(self, event): |
|||
m = event.message |
|||
topic = m.subject |
|||
body = m.body |
|||
sequence = str( m.properties['x-opt-sequence-number'] ) |
|||
if topic == "hashablock": |
|||
print '- HASH BLOCK ('+sequence+') -' |
|||
print binascii.hexlify(body) |
|||
elif topic == "hashtx": |
|||
print '- HASH TX ('+sequence+') -' |
|||
print binascii.hexlify(body) |
|||
elif topic == "rawblock": |
|||
print '- RAW BLOCK HEADER ('+sequence+') -' |
|||
print binascii.hexlify(body[:80]) |
|||
elif topic == "rawtx": |
|||
print '- RAW TX ('+sequence+') -' |
|||
print binascii.hexlify(body) |
|||
|
|||
try: |
|||
Container(Server("127.0.0.1:%i" % port)).run() |
|||
except KeyboardInterrupt: |
|||
pass |
|||
|
@ -0,0 +1,62 @@ |
|||
# Zcash CI workers |
|||
|
|||
This folder contains the Ansible playbooks for configuring a fresh OS |
|||
installation for use as a Buildbot worker in Zcash's CI. |
|||
|
|||
# Criteria for Adding Workers |
|||
|
|||
a. Don't add workers until users complain about a problem on a platform |
|||
that doesn't yet have workers or if we anticipate many users will use |
|||
a platform, we may pre-emptively add an unsupported worker for it. |
|||
|
|||
b. Prioritize the platforms that seem to have the most users. |
|||
|
|||
c. When adding workers start by adding workers for the "most common" |
|||
variant of any distro, then if users later encounter problems with a |
|||
sub-variant, we can consider adding new workers at that point. |
|||
Example: add Ubuntu Desktop before Xubuntu, on the assumption the |
|||
former has a larger population base. |
|||
|
|||
# Setting up a latent worker on Amazon EC2 |
|||
|
|||
- Add a regular (non-latent) worker to the master.cfg for dev-ci.z.cash, and |
|||
deploy the changes. |
|||
- This enables the Ansible playbook to run to completion, ending in the worker |
|||
connecting to the master. |
|||
|
|||
- Start a basic EC2 instance using the template AMI for the target OS. |
|||
- Choose the smallest instance size, it won't be used for building Zcash. |
|||
|
|||
- Figure out which user to log into the instance with. |
|||
- E.g. for the Ubuntu template, use "ubuntu" instead of "root" |
|||
- If you get an Ansible error later with a message like "Failed to connect to |
|||
the host via ssh: Received message too long 1349281121\r\n", that means the |
|||
instance is sending a text string in response to the SSH connection, and the |
|||
Ansible protocol is balking. Try manually logging in with the same |
|||
credentials to diagnose. |
|||
|
|||
- Create `inventory/hosts` containing the following: |
|||
|
|||
[zcash-ci-worker-unix] |
|||
some-name ansible_host=<INSTANCE_IP> ansible_ssh_user=<USERNAME> |
|||
|
|||
- Run `ansible-playbook -e buildbot_worker_host_template=templates/host.ec2.j2 -i inventory/hosts unix.yml`, |
|||
passing in the worker's Buildbot name and password. |
|||
- After a successful run, the worker should be connected to dev-ci.z.cash and |
|||
visible in its worker list. |
|||
|
|||
- Create an AMI from the instance. This is the worker AMI to put into the |
|||
master.cfg for dev-ci.z.cash. |
|||
- 16 GB of storage should be sufficient. |
|||
|
|||
- SSH into the instance, and edit the worker config to connect to ci.z.cash. |
|||
|
|||
- Create an AMI from the instance. This is the worker AMI to put into the |
|||
master.cfg for ci.z.cash. |
|||
- 16 GB of storage should be sufficient. |
|||
|
|||
- Delete the instance (it is no longer needed). |
|||
|
|||
- Edit the master.cfg to turn the new worker into a latent (using the new AMI |
|||
IDs), add it to the appropriate worker groups, set up new builders etc. |
|||
- Deploy this via the normal PR review process. |
@ -0,0 +1,2 @@ |
|||
[ssh_connection] |
|||
pipelining = True |
@ -0,0 +1,27 @@ |
|||
--- |
|||
# Configure a Buildbot worker |
|||
- include: unix.yml |
|||
|
|||
- name: Install grind-specific worker dependencies |
|||
hosts: zcash-ci-worker-unix |
|||
become: true |
|||
|
|||
vars_files: |
|||
- vars/default.yml |
|||
|
|||
tasks: |
|||
- name: Get dependencies for distribution |
|||
include_vars: "{{ item }}" |
|||
with_first_found: |
|||
- files: |
|||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml" |
|||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version | int }}.yml" |
|||
- "vars/{{ ansible_distribution }}.yml" |
|||
- "vars/{{ ansible_os_family }}.yml" |
|||
skip: true |
|||
|
|||
- name: Install required packages |
|||
package: |
|||
name: "{{ item }}" |
|||
state: present |
|||
with_items: "{{ grind_deps }}" |
@ -0,0 +1,8 @@ |
|||
--- |
|||
- name: Fetch pip installer |
|||
get_url: |
|||
url: https://bootstrap.pypa.io/get-pip.py |
|||
dest: /tmp/get-pip.py |
|||
|
|||
- name: Install pip |
|||
command: "{{ ansible_python.executable }} /tmp/get-pip.py" |
@ -0,0 +1,17 @@ |
|||
[Unit] |
|||
Description=Buildbot worker |
|||
Wants=network.target |
|||
After=network.target |
|||
|
|||
[Service] |
|||
Type=forking |
|||
PIDFile=/home/{{ buildbot_worker_user }}/{{ buildbot_worker_name }}/twistd.pid |
|||
WorkingDirectory=/home/{{ buildbot_worker_user }} |
|||
ExecStart={{ pip_bin_dir }}/buildbot-worker start {{ buildbot_worker_name }} |
|||
ExecReload={{ pip_bin_dir }}/buildbot-worker restart {{ buildbot_worker_name }} |
|||
ExecStop={{ pip_bin_dir }}/buildbot-worker stop {{ buildbot_worker_name }} |
|||
Restart=always |
|||
User={{ buildbot_worker_user }} |
|||
|
|||
[Install] |
|||
WantedBy=multi-user.target |
@ -0,0 +1 @@ |
|||
OS: {{ ansible_distribution }} {{ ansible_distribution_version }} |
@ -0,0 +1,3 @@ |
|||
OS: {{ ansible_distribution }} {{ ansible_distribution_version }} |
|||
Memory: {{ ansible_memtotal_mb }} MB |
|||
CPU: {{ ansible_processor[1] }} |
@ -0,0 +1,152 @@ |
|||
--- |
|||
- name: Configure a Buildbot worker for Zcash CI |
|||
hosts: zcash-ci-worker-unix |
|||
become: true |
|||
gather_facts: False |
|||
|
|||
vars_files: |
|||
- vars/default.yml |
|||
- vars/buildbot.yml |
|||
|
|||
vars_prompt: |
|||
- name: "buildbot_worker_admin" |
|||
prompt: "Admin details" |
|||
default: "Zcash <sysadmin@z.cash>" |
|||
- name: "buildbot_worker_name" |
|||
prompt: "Buildbot worker name (provided by ZECC)" |
|||
private: no |
|||
- name: "buildbot_worker_password" |
|||
prompt: "Buildbot worker password (provided by ZECC)" |
|||
|
|||
pre_tasks: |
|||
- name: Install Python 2.7 for Ansible and Buildbot |
|||
raw: test -e /usr/bin/python || test -e /usr/bin/python2 || test -e /usr/bin/python2.7 || test -e /usr/local/bin/python2.7 || (test -e /usr/bin/apt && apt -qqy update && apt install -qqy python) || (test -e /usr/bin/dnf && dnf install -qqy python2) || (test -e /usr/sbin/pkg && pkg install -qqy python2) |
|||
register: output |
|||
changed_when: |
|||
- output.stdout != "" |
|||
- output.stdout != "\r\n" |
|||
|
|||
- name: Check if Python is in the configured location |
|||
raw: test -e {{ ansible_python_interpreter }} |
|||
ignore_errors: true |
|||
register: python_check |
|||
when: ansible_python_interpreter is defined |
|||
|
|||
- name: Fail if configured Python is unavailable |
|||
fail: |
|||
msg: "Python is not accessible at {{ ansible_python_interpreter }} on this host! Please set the inventory variable 'ansible_python_interpreter' to the location of the Python 2.7 binary." |
|||
when: ansible_python_interpreter is defined and python_check.rc == 1 |
|||
|
|||
- name: Check if Python is in the default location |
|||
raw: test -e /usr/bin/python |
|||
ignore_errors: true |
|||
register: python_check |
|||
when: ansible_python_interpreter is undefined |
|||
|
|||
- name: Fail if default Python is unavailable |
|||
fail: |
|||
msg: Python is not accessible at /usr/bin/python on this host! Please set the inventory variable 'ansible_python_interpreter' to the location of the Python 2.7 binary. |
|||
when: ansible_python_interpreter is undefined and python_check.rc == 1 |
|||
|
|||
- name: Gathering Facts |
|||
setup: |
|||
|
|||
- name: Fail if Python is the wrong version |
|||
fail: |
|||
msg: "The Python binary at {{ ansible_python.executable }} is version {{ ansible_python_version }}! Please set the inventory variable 'ansible_python_interpreter' to the location of the Python 2.7 binary." |
|||
when: ansible_python.version.major != 2 or ansible_python.version.minor != 7 |
|||
|
|||
tasks: |
|||
- name: Get dependencies for distribution |
|||
include_vars: "{{ item }}" |
|||
with_first_found: |
|||
- files: |
|||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml" |
|||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version | int }}.yml" |
|||
- "vars/{{ ansible_distribution }}.yml" |
|||
- "vars/{{ ansible_os_family }}.yml" |
|||
skip: true |
|||
|
|||
- name: Collate dependencies |
|||
set_fact: |
|||
package_deps: "{{ buildbot_deps + fetch_deps + conf_deps + build_deps + link_deps + dist_deps }}" |
|||
python_modules: "{{ buildbot_modules + rpc_test_modules }}" |
|||
|
|||
- name: Update rolling release [Arch Linux] |
|||
pacman: |
|||
update_cache: yes |
|||
upgrade: yes |
|||
when: ansible_distribution == 'Archlinux' |
|||
|
|||
- name: Install required packages |
|||
package: |
|||
name: "{{ item }}" |
|||
state: present |
|||
with_items: "{{ package_deps }}" |
|||
|
|||
- name: Install pip [CentOS] |
|||
include: tasks/install-pip.yml |
|||
when: ansible_distribution == 'CentOS' |
|||
|
|||
- name: Install required Python modules |
|||
pip: |
|||
name: "{{ item }}" |
|||
state: latest |
|||
with_items: "{{ python_modules }}" |
|||
notify: restart buildbot-worker |
|||
|
|||
- name: Set up the Buildbot worker user |
|||
user: |
|||
name: "{{ buildbot_worker_user }}" |
|||
comment: Buildbot worker |
|||
shell: /bin/bash |
|||
state: present |
|||
|
|||
- name: Create Buildbot worker |
|||
command: > |
|||
buildbot-worker create-worker ~/{{ buildbot_worker_name }} |
|||
{{ buildbot_master_host }}:{{ buildbot_master_port }} |
|||
{{ buildbot_worker_name|quote }} {{ buildbot_worker_password|quote }} |
|||
args: |
|||
creates: "~/{{ buildbot_worker_name }}/buildbot.tac" |
|||
become_user: "{{ buildbot_worker_user }}" |
|||
|
|||
- name: Set admin details for Buildbot worker |
|||
copy: |
|||
content: "{{ buildbot_worker_admin }}" |
|||
dest: "~{{ buildbot_worker_user }}/{{ buildbot_worker_name }}/info/admin" |
|||
owner: "{{ buildbot_worker_user }}" |
|||
group: "{{ buildbot_worker_user }}" |
|||
mode: "0644" |
|||
|
|||
- name: Set host details for Buildbot worker |
|||
template: |
|||
src: "{{ buildbot_worker_host_template }}" |
|||
dest: "~{{ buildbot_worker_user }}/{{ buildbot_worker_name }}/info/host" |
|||
owner: "{{ buildbot_worker_user }}" |
|||
group: "{{ buildbot_worker_user }}" |
|||
mode: "0644" |
|||
|
|||
- name: Copy Buildbot worker systemd service unit |
|||
template: |
|||
src: templates/buildbot-worker.service.j2 |
|||
dest: "/etc/systemd/system/buildbot-worker.service" |
|||
owner: root |
|||
group: root |
|||
mode: "0644" |
|||
notify: reload systemd |
|||
|
|||
- name: Start Buildbot worker. |
|||
service: |
|||
name: buildbot-worker |
|||
state: started |
|||
enabled: yes |
|||
|
|||
handlers: |
|||
- name: restart buildbot-worker |
|||
service: |
|||
name: buildbot-worker |
|||
state: restarted |
|||
|
|||
- name: reload systemd |
|||
command: /bin/systemctl daemon-reload |
@ -0,0 +1,7 @@ |
|||
--- |
|||
buildbot_deps: |
|||
- python2-pip |
|||
build_deps: |
|||
- multilib/gcc |
|||
- make |
|||
pip_bin_dir: /usr/bin |
@ -0,0 +1,13 @@ |
|||
--- |
|||
buildbot_deps: [] # Empty to remove python-pip |
|||
build_deps: |
|||
- bzip2 |
|||
- gcc |
|||
- gcc-c++ |
|||
- make |
|||
- patch |
|||
dist_deps: |
|||
- pkgconfig # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in |
|||
- python-devel |
|||
- redhat-rpm-config |
|||
pip_bin_dir: /usr/bin |
@ -0,0 +1,6 @@ |
|||
--- |
|||
build_deps: |
|||
- build-essential # Depends on g++, libc6-dev, make |
|||
dist_deps: |
|||
- pkg-config # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in |
|||
- python-dev |
@ -0,0 +1,10 @@ |
|||
--- |
|||
build_deps: |
|||
- gcc |
|||
- gcc-c++ |
|||
- make |
|||
- patch |
|||
dist_deps: |
|||
- pkgconfig # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in |
|||
- python-devel |
|||
- redhat-rpm-config |
@ -0,0 +1,9 @@ |
|||
--- |
|||
buildbot_deps: |
|||
- py27-pip |
|||
build_deps: |
|||
- gcc |
|||
- gmake |
|||
dist_deps: |
|||
- bash |
|||
- pkgconf # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in |
@ -0,0 +1,5 @@ |
|||
--- |
|||
build_deps: |
|||
- build-essential # Depends on g++, libc6-dev, make |
|||
dist_deps: |
|||
- pkg-config # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in |
@ -0,0 +1,5 @@ |
|||
--- |
|||
buildbot_worker_user: zcbbworker |
|||
buildbot_master_host: dev-ci.z.cash |
|||
buildbot_master_port: 9899 |
|||
buildbot_worker_host_template: templates/host.j2 |
@ -0,0 +1,49 @@ |
|||
--- |
|||
# These variables can be overridden in distribution files. |
|||
|
|||
# Dependencies required to install Buildbot |
|||
buildbot_deps: |
|||
- python-pip # So we can install Python modules |
|||
|
|||
# Dependencies required to download files |
|||
fetch_deps: |
|||
- git |
|||
- wget # For zcutil/fetch-params.sh |
|||
|
|||
# Dependencies required to configure Zcash |
|||
conf_deps: |
|||
- autoconf |
|||
- automake |
|||
- m4 |
|||
|
|||
# Dependencies required to compile Zcash |
|||
build_deps: |
|||
- g++ |
|||
- gcc |
|||
- make |
|||
|
|||
# Dependencies required to link Zcash |
|||
link_deps: |
|||
- libtool |
|||
|
|||
# Additional distribution-specific dependencies |
|||
dist_deps: [] |
|||
|
|||
# Additional grind-specific dependencies |
|||
grind_deps: |
|||
- lcov |
|||
- valgrind |
|||
|
|||
# Python modules required for a Zcash Buildbot worker |
|||
buildbot_modules: |
|||
- pip # Needs to be updated first so Buildbot installs |
|||
- buildbot-worker |
|||
- pyflakes |
|||
|
|||
# Python modules required to run the Zcash RPC test suite |
|||
rpc_test_modules: |
|||
- pyblake2 |
|||
- pyzmq |
|||
|
|||
# Environment variables |
|||
pip_bin_dir: /usr/local/bin |
@ -0,0 +1,160 @@ |
|||
# bash programmable completion for komodo-cli(1) |
|||
# Copyright (c) 2012-2016 The Bitcoin Core developers |
|||
# Distributed under the MIT software license, see the accompanying |
|||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|||
|
|||
# call $komodo-cli for RPC |
|||
_komodo_rpc() { |
|||
# determine already specified args necessary for RPC |
|||
local rpcargs=() |
|||
for i in ${COMP_LINE}; do |
|||
case "$i" in |
|||
-conf=*|-datadir=*|-regtest|-rpc*|-testnet) |
|||
rpcargs=( "${rpcargs[@]}" "$i" ) |
|||
;; |
|||
esac |
|||
done |
|||
$komodo_cli "${rpcargs[@]}" "$@" |
|||
} |
|||
|
|||
# Add wallet accounts to COMPREPLY |
|||
_komodo_accounts() { |
|||
local accounts |
|||
# Accounts are deprecated in komodo |
|||
#accounts=$(_komodo_rpc listaccounts | awk -F '"' '{ print $2 }') |
|||
accounts="\\\"\\\"" |
|||
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$accounts" -- "$cur" ) ) |
|||
} |
|||
|
|||
_komodo_cli() { |
|||
local cur prev words=() cword |
|||
local komodo_cli |
|||
|
|||
# save and use original argument to invoke komodo-cli for -help, help and RPC |
|||
# as komodo-cli might not be in $PATH |
|||
komodo_cli="$1" |
|||
|
|||
COMPREPLY=() |
|||
_get_comp_words_by_ref -n = cur prev words cword |
|||
|
|||
if ((cword > 5)); then |
|||
case ${words[cword-5]} in |
|||
sendtoaddress) |
|||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) |
|||
return 0 |
|||
;; |
|||
esac |
|||
fi |
|||
|
|||
if ((cword > 4)); then |
|||
case ${words[cword-4]} in |
|||
importaddress|listtransactions|setban) |
|||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) |
|||
return 0 |
|||
;; |
|||
signrawtransaction) |
|||
COMPREPLY=( $( compgen -W "ALL NONE SINGLE ALL|ANYONECANPAY NONE|ANYONECANPAY SINGLE|ANYONECANPAY" -- "$cur" ) ) |
|||
return 0 |
|||
;; |
|||
esac |
|||
fi |
|||
|
|||
if ((cword > 3)); then |
|||
case ${words[cword-3]} in |
|||
addmultisigaddress) |
|||
_komodo_accounts |
|||
return 0 |
|||
;; |
|||
getbalance|gettxout|importaddress|importpubkey|importprivkey|listreceivedbyaccount|listreceivedbyaddress|listsinceblock) |
|||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) |
|||
return 0 |
|||
;; |
|||
esac |
|||
fi |
|||
|
|||
if ((cword > 2)); then |
|||
case ${words[cword-2]} in |
|||
addnode) |
|||
COMPREPLY=( $( compgen -W "add remove onetry" -- "$cur" ) ) |
|||
return 0 |
|||
;; |
|||
setban) |
|||
COMPREPLY=( $( compgen -W "add remove" -- "$cur" ) ) |
|||
return 0 |
|||
;; |
|||
fundrawtransaction|getblock|getblockheader|getmempoolancestors|getmempooldescendants|getrawtransaction|gettransaction|listaccounts|listreceivedbyaccount|listreceivedbyaddress|sendrawtransaction) |
|||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) |
|||
return 0 |
|||
;; |
|||
z_importkey|z_importviewingkey) |
|||
COMPREPLY=( $( compgen -W "yes no whenkeyisnew" -- "$cur" ) ) |
|||
return 0 |
|||
;; |
|||
move|setaccount) |
|||
_komodo_accounts |
|||
return 0 |
|||
;; |
|||
esac |
|||
fi |
|||
|
|||
case "$prev" in |
|||
backupwallet|dumpwallet|importwallet|z_exportwallet|z_importwallet) |
|||
_filedir |
|||
return 0 |
|||
;; |
|||
getaddednodeinfo|getrawmempool|lockunspent|setgenerate) |
|||
COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) |
|||
return 0 |
|||
;; |
|||
getaccountaddress|getaddressesbyaccount|getbalance|getnewaddress|getreceivedbyaccount|listtransactions|move|sendfrom|sendmany) |
|||
_komodo_accounts |
|||
return 0 |
|||
;; |
|||
esac |
|||
|
|||
case "$cur" in |
|||
-conf=*) |
|||
cur="${cur#*=}" |
|||
_filedir |
|||
return 0 |
|||
;; |
|||
-datadir=*) |
|||
cur="${cur#*=}" |
|||
_filedir -d |
|||
return 0 |
|||
;; |
|||
-*=*) # prevent nonsense completions |
|||
return 0 |
|||
;; |
|||
*) |
|||
local helpopts commands |
|||
|
|||
# only parse -help if senseful |
|||
if [[ -z "$cur" || "$cur" =~ ^- ]]; then |
|||
helpopts=$($komodo_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) |
|||
fi |
|||
|
|||
# only parse help if senseful |
|||
if [[ -z "$cur" || "$cur" =~ ^[a-z] ]]; then |
|||
commands=$(_komodo_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }') |
|||
fi |
|||
|
|||
COMPREPLY=( $( compgen -W "$helpopts $commands" -- "$cur" ) ) |
|||
|
|||
# Prevent space if an argument is desired |
|||
if [[ $COMPREPLY == *= ]]; then |
|||
compopt -o nospace |
|||
fi |
|||
return 0 |
|||
;; |
|||
esac |
|||
} && |
|||
complete -F _komodo_cli komodo-cli |
|||
|
|||
# Local variables: |
|||
# mode: shell-script |
|||
# sh-basic-offset: 4 |
|||
# sh-indent-comment: t |
|||
# indent-tabs-mode: nil |
|||
# End: |
|||
# ex: ts=4 sw=4 et filetype=sh |
@ -0,0 +1,57 @@ |
|||
# bash programmable completion for komodod(1) |
|||
# Copyright (c) 2012-2017 The Bitcoin Core developers |
|||
# Copyright (c) 2016-2017 The komodo developers |
|||
# Distributed under the MIT software license, see the accompanying |
|||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|||
|
|||
_komodod() { |
|||
local cur prev words=() cword |
|||
local komodod |
|||
|
|||
# save and use original argument to invoke komodod for -help |
|||
# it might not be in $PATH |
|||
komodod="$1" |
|||
|
|||
COMPREPLY=() |
|||
_get_comp_words_by_ref -n = cur prev words cword |
|||
|
|||
case "$cur" in |
|||
-conf=*|-pid=*|-loadblock=*|-rpccookiefile=*|-wallet=*) |
|||
cur="${cur#*=}" |
|||
_filedir |
|||
return 0 |
|||
;; |
|||
-datadir=*|-exportdir=*) |
|||
cur="${cur#*=}" |
|||
_filedir -d |
|||
return 0 |
|||
;; |
|||
-*=*) # prevent nonsense completions |
|||
return 0 |
|||
;; |
|||
*) |
|||
|
|||
# only parse -help if senseful |
|||
if [[ -z "$cur" || "$cur" =~ ^- ]]; then |
|||
local helpopts |
|||
helpopts=$($komodod -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) |
|||
COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) ) |
|||
fi |
|||
|
|||
# Prevent space if an argument is desired |
|||
if [[ $COMPREPLY == *= ]]; then |
|||
compopt -o nospace |
|||
fi |
|||
return 0 |
|||
;; |
|||
esac |
|||
} && |
|||
complete -F _komodod komodod |
|||
|
|||
# Local variables: |
|||
# mode: shell-script |
|||
# sh-basic-offset: 4 |
|||
# sh-indent-comment: t |
|||
# indent-tabs-mode: nil |
|||
# End: |
|||
# ex: ts=4 sw=4 et filetype=sh |
@ -0,0 +1,57 @@ |
|||
# bash programmable completion for zcash-tx(1) |
|||
# Copyright (c) 2016 The Bitcoin Core developers |
|||
# Distributed under the MIT software license, see the accompanying |
|||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|||
|
|||
_zcash_tx() { |
|||
local cur prev words=() cword |
|||
local zcash_tx |
|||
|
|||
# save and use original argument to invoke zcash-tx for -help |
|||
# it might not be in $PATH |
|||
zcash_tx="$1" |
|||
|
|||
COMPREPLY=() |
|||
_get_comp_words_by_ref -n =: cur prev words cword |
|||
|
|||
case "$cur" in |
|||
load=*:*) |
|||
cur="${cur#load=*:}" |
|||
_filedir |
|||
return 0 |
|||
;; |
|||
*=*) # prevent attempts to complete other arguments |
|||
return 0 |
|||
;; |
|||
esac |
|||
|
|||
if [[ "$cword" == 1 || ( "$prev" != "-create" && "$prev" == -* ) ]]; then |
|||
# only options (or an uncompletable hex-string) allowed |
|||
# parse zcash-tx -help for options |
|||
local helpopts |
|||
helpopts=$($zcash_tx -help | sed -e '/^ -/ p' -e d ) |
|||
COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) ) |
|||
else |
|||
# only commands are allowed |
|||
# parse -help for commands |
|||
local helpcmds |
|||
helpcmds=$($zcash_tx -help | sed -e '1,/Commands:/d' -e 's/=.*/=/' -e '/^ [a-z]/ p' -e d ) |
|||
COMPREPLY=( $( compgen -W "$helpcmds" -- "$cur" ) ) |
|||
fi |
|||
|
|||
# Prevent space if an argument is desired |
|||
if [[ $COMPREPLY == *= ]]; then |
|||
compopt -o nospace |
|||
fi |
|||
|
|||
return 0 |
|||
} && |
|||
complete -F _zcash_tx zcash-tx |
|||
|
|||
# Local variables: |
|||
# mode: shell-script |
|||
# sh-basic-offset: 4 |
|||
# sh-indent-comment: t |
|||
# indent-tabs-mode: nil |
|||
# End: |
|||
# ex: ts=4 sw=4 et filetype=sh |
@ -1,2 +1,2 @@ |
|||
build_linux_SHA256SUM = sha256sum |
|||
build_linux_DOWNLOAD = wget --timeout=$(DOWNLOAD_CONNECT_TIMEOUT) --tries=$(DOWNLOAD_RETRIES) -nv -O |
|||
build_linux_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o |
|||
|
@ -1,32 +0,0 @@ |
|||
package=miniupnpc |
|||
$(package)_version=2.0 |
|||
$(package)_download_path=http://miniupnp.free.fr/files |
|||
$(package)_file_name=$(package)-$($(package)_version).tar.gz |
|||
$(package)_sha256_hash=d434ceb8986efbe199c5ca53f90ed53eab290b1e6d0530b717eb6fa49d61f93b |
|||
$(package)_patches=fix-solaris-compilation.patch strlen-before-memcmp.patch patch-strlen-patch.patch |
|||
|
|||
define $(package)_set_vars |
|||
$(package)_build_opts=CC="$($(package)_cc)" |
|||
$(package)_build_opts_darwin=OS=Darwin |
|||
$(package)_build_opts_mingw32=-f Makefile.mingw |
|||
$(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)" |
|||
endef |
|||
|
|||
define $(package)_preprocess_cmds |
|||
mkdir dll && \
|
|||
sed -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"$($(package)_version)\"|' -e 's|OS/version|$(host)|' miniupnpcstrings.h.in > miniupnpcstrings.h && \
|
|||
sed -i.old "s|miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings|miniupnpcstrings.h: miniupnpcstrings.h.in|" Makefile.mingw && \
|
|||
patch -p2 < $($(package)_patch_dir)/fix-solaris-compilation.patch && \
|
|||
patch -p2 < $($(package)_patch_dir)/strlen-before-memcmp.patch && \
|
|||
patch -p2 < $($(package)_patch_dir)/patch-strlen-patch.patch |
|||
endef |
|||
|
|||
define $(package)_build_cmds |
|||
$(MAKE) libminiupnpc.a $($(package)_build_opts) |
|||
endef |
|||
|
|||
define $(package)_stage_cmds |
|||
mkdir -p $($(package)_staging_prefix_dir)/include/miniupnpc $($(package)_staging_prefix_dir)/lib &&\
|
|||
install *.h $($(package)_staging_prefix_dir)/include/miniupnpc &&\
|
|||
install libminiupnpc.a $($(package)_staging_prefix_dir)/lib |
|||
endef |
@ -0,0 +1,24 @@ |
|||
package=proton |
|||
$(package)_version=0.17.0 |
|||
$(package)_download_path=http://apache.cs.utah.edu/qpid/proton/$($(package)_version) |
|||
$(package)_file_name=qpid-proton-$($(package)_version).tar.gz |
|||
$(package)_sha256_hash=6ffd26d3d0e495bfdb5d9fefc5349954e6105ea18cc4bb191161d27742c5a01a |
|||
$(package)_patches=minimal-build.patch |
|||
|
|||
define $(package)_preprocess_cmds |
|||
patch -p1 < $($(package)_patch_dir)/minimal-build.patch && \
|
|||
mkdir -p build/proton-c/src |
|||
endef |
|||
|
|||
define $(package)_config_cmds |
|||
cd build; cmake .. -DCMAKE_CXX_STANDARD=11 -DCMAKE_INSTALL_PREFIX=/ -DSYSINSTALL_BINDINGS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_PYTHON=OFF -DBUILD_PHP=OFF -DBUILD_JAVA=OFF -DBUILD_PERL=OFF -DBUILD_RUBY=OFF -DBUILD_JAVASCRIPT=OFF -DBUILD_GO=OFF |
|||
endef |
|||
|
|||
define $(package)_build_cmds |
|||
cd build; $(MAKE) VERBOSE=1 |
|||
endef |
|||
|
|||
define $(package)_stage_cmds |
|||
cd build; $(MAKE) VERBOSE=1 DESTDIR=$($(package)_staging_prefix_dir) install |
|||
endef |
|||
|
@ -1,42 +0,0 @@ |
|||
From 71ce1d6dfa5424f8fe8633e23494c7638ea2c79e Mon Sep 17 00:00:00 2001 |
|||
From: Thomas Bernard <miniupnp@free.fr> |
|||
Date: Thu, 10 Nov 2016 21:55:33 +0100 |
|||
Subject: [PATCH] fix for Solaris 11 compilation |
|||
|
|||
see #216 |
|||
---
|
|||
miniupnpc/Makefile | 2 ++ |
|||
miniupnpc/minissdpc.c | 3 +++ |
|||
2 files changed, 5 insertions(+) |
|||
|
|||
diff --git a/miniupnpc/Makefile b/miniupnpc/Makefile
|
|||
index 5c23000..72cdc0f 100644
|
|||
--- a/miniupnpc/Makefile
|
|||
+++ b/miniupnpc/Makefile
|
|||
@@ -43,10 +43,12 @@ CFLAGS += -D_NETBSD_SOURCE
|
|||
endif |
|||
ifneq ($(OS), FreeBSD) |
|||
ifneq ($(OS), Darwin) |
|||
+ifneq ($(OS), SunOS)
|
|||
#CFLAGS += -D_POSIX_C_SOURCE=200112L |
|||
CFLAGS += -D_XOPEN_SOURCE=600 |
|||
endif |
|||
endif |
|||
+endif
|
|||
#CFLAGS += -ansi |
|||
# -DNO_GETADDRINFO |
|||
INSTALL = install |
|||
diff --git a/miniupnpc/minissdpc.c b/miniupnpc/minissdpc.c
|
|||
index f200f07..263160e 100644
|
|||
--- a/miniupnpc/minissdpc.c
|
|||
+++ b/miniupnpc/minissdpc.c
|
|||
@@ -73,6 +73,9 @@ struct sockaddr_un {
|
|||
|
|||
#if !defined(HAS_IP_MREQN) && !defined(_WIN32) |
|||
#include <sys/ioctl.h> |
|||
+#if defined(__sun)
|
|||
+#include <sys/sockio.h>
|
|||
+#endif
|
|||
#endif |
|||
|
|||
#if defined(HAS_IP_MREQN) && defined(NEED_STRUCT_IP_MREQN) |
@ -1,22 +0,0 @@ |
|||
From 0aa7c46227acd8ddb135c577674ad454bf2fba86 Mon Sep 17 00:00:00 2001 |
|||
From: Thomas Bernard <miniupnp@free.fr> |
|||
Date: Fri, 11 Nov 2016 17:53:21 +0100 |
|||
Subject: [PATCH] remove unsigned/signed comparison |
|||
|
|||
---
|
|||
miniupnpc/portlistingparse.c | 2 +- |
|||
1 file changed, 1 insertion(+), 1 deletion(-) |
|||
|
|||
diff --git a/miniupnpc/portlistingparse.c b/miniupnpc/portlistingparse.c
|
|||
index 1bed763..07f3f87 100644
|
|||
--- a/miniupnpc/portlistingparse.c
|
|||
+++ b/miniupnpc/portlistingparse.c
|
|||
@@ -55,7 +55,7 @@ startelt(void * d, const char * name, int l)
|
|||
pdata->curelt = PortMappingEltNone; |
|||
for(i = 0; elements[i].str; i++) |
|||
{ |
|||
- if(strlen(elements[i].str) == l && memcmp(name, elements[i].str, l) == 0)
|
|||
+ if(strlen(elements[i].str) == (size_t)l && memcmp(name, elements[i].str, l) == 0)
|
|||
{ |
|||
pdata->curelt = elements[i].code; |
|||
break; |
@ -1,23 +0,0 @@ |
|||
From ec1c49bb0cd5e448e6f0adee7de3a831c4869bdd Mon Sep 17 00:00:00 2001 |
|||
From: Thomas Bernard <miniupnp@free.fr> |
|||
Date: Fri, 11 Nov 2016 17:24:39 +0100 |
|||
Subject: [PATCH] check strlen before memcmp |
|||
|
|||
1st try to fix #220 |
|||
---
|
|||
miniupnpc/portlistingparse.c | 2 +- |
|||
1 file changed, 1 insertion(+), 1 deletion(-) |
|||
|
|||
diff --git a/miniupnpc/portlistingparse.c b/miniupnpc/portlistingparse.c
|
|||
index 0e09278..1bed763 100644
|
|||
--- a/miniupnpc/portlistingparse.c
|
|||
+++ b/miniupnpc/portlistingparse.c
|
|||
@@ -55,7 +55,7 @@ startelt(void * d, const char * name, int l)
|
|||
pdata->curelt = PortMappingEltNone; |
|||
for(i = 0; elements[i].str; i++) |
|||
{ |
|||
- if(memcmp(name, elements[i].str, l) == 0)
|
|||
+ if(strlen(elements[i].str) == l && memcmp(name, elements[i].str, l) == 0)
|
|||
{ |
|||
pdata->curelt = elements[i].code; |
|||
break; |
@ -0,0 +1,288 @@ |
|||
From 03f5fc0826115edbfca468261b70c0daf627f488 Mon Sep 17 00:00:00 2001 |
|||
From: Simon <simon@bitcartel.com> |
|||
Date: Thu, 27 Apr 2017 17:15:59 -0700 |
|||
Subject: [PATCH] Enable C++11, build static library and cpp bindings with minimal dependencies. |
|||
|
|||
---
|
|||
CMakeLists.txt | 13 +++++++------ |
|||
examples/cpp/CMakeLists.txt | 1 + |
|||
proton-c/CMakeLists.txt | 32 +++++++++++++++---------------- |
|||
proton-c/bindings/CMakeLists.txt | 6 +++--- |
|||
proton-c/bindings/cpp/CMakeLists.txt | 24 +++++++++++------------ |
|||
proton-c/bindings/cpp/docs/CMakeLists.txt | 2 +- |
|||
proton-c/docs/api/CMakeLists.txt | 2 +- |
|||
7 files changed, 41 insertions(+), 39 deletions(-) |
|||
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|||
index b538ffd..4a5e787 100644
|
|||
--- a/CMakeLists.txt
|
|||
+++ b/CMakeLists.txt
|
|||
@@ -18,14 +18,15 @@
|
|||
# |
|||
cmake_minimum_required (VERSION 2.8.7) |
|||
|
|||
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|||
project (Proton C) |
|||
|
|||
# Enable C++ now for examples and bindings subdirectories, but make it optional. |
|||
enable_language(CXX OPTIONAL) |
|||
|
|||
# Enable testing |
|||
-enable_testing()
|
|||
-include (CTest)
|
|||
+#enable_testing()
|
|||
+#include (CTest)
|
|||
|
|||
# Pull in local cmake modules |
|||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/tools/cmake/Modules/") |
|||
@@ -141,7 +142,7 @@ set (BINDINGS_DIR ${LIB_INSTALL_DIR}/proton/bindings)
|
|||
|
|||
set (SYSINSTALL_BINDINGS OFF CACHE BOOL "If SYSINSTALL_BINDINGS is OFF then proton bindings will be installed underneath ${BINDINGS_DIR} and each user will need to modify their interpreter configuration to load the appropriate binding. If SYSINSTALL_BINDINGS is ON, then each language interpreter will be queried for the appropriate directory and proton bindings will be installed and available system wide with no additional per user configuration.") |
|||
|
|||
-set (BINDING_LANGS PERL PHP PYTHON RUBY)
|
|||
+#set (BINDING_LANGS PERL PHP PYTHON RUBY)
|
|||
|
|||
foreach (LANG ${BINDING_LANGS}) |
|||
set (SYSINSTALL_${LANG} OFF CACHE BOOL "Install ${LANG} bindings into interpreter specified location.") |
|||
@@ -156,10 +157,10 @@ set (PROTON_SHARE ${SHARE_INSTALL_DIR}/proton-${PN_VERSION})
|
|||
# End of variables used during install |
|||
|
|||
# Check for valgrind here so tests under proton-c/ and examples/ can use it. |
|||
-find_program(VALGRIND_EXE valgrind DOC "Location of the valgrind program")
|
|||
+#find_program(VALGRIND_EXE valgrind DOC "Location of the valgrind program")
|
|||
mark_as_advanced (VALGRIND_EXE) |
|||
|
|||
-option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON)
|
|||
+#option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON)
|
|||
if (ENABLE_VALGRIND) |
|||
if (NOT VALGRIND_EXE) |
|||
message(STATUS "Can't locate the valgrind command; no run-time error detection") |
|||
@@ -171,7 +172,7 @@ if (ENABLE_VALGRIND)
|
|||
endif (ENABLE_VALGRIND) |
|||
|
|||
add_subdirectory(proton-c) |
|||
-add_subdirectory(examples)
|
|||
+#add_subdirectory(examples)
|
|||
|
|||
install (FILES LICENSE README.md |
|||
DESTINATION ${PROTON_SHARE}) |
|||
diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt
|
|||
index 304d899..f4877b4 100644
|
|||
--- a/examples/cpp/CMakeLists.txt
|
|||
+++ b/examples/cpp/CMakeLists.txt
|
|||
@@ -17,6 +17,7 @@
|
|||
# under the License. |
|||
# |
|||
|
|||
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|||
find_package(ProtonCpp REQUIRED) |
|||
|
|||
include_directories(${ProtonCpp_INCLUDE_DIRS}) |
|||
diff --git a/proton-c/CMakeLists.txt b/proton-c/CMakeLists.txt
|
|||
index 8edb661..dc7b99c 100644
|
|||
--- a/proton-c/CMakeLists.txt
|
|||
+++ b/proton-c/CMakeLists.txt
|
|||
@@ -22,24 +22,24 @@ include(CheckSymbolExists)
|
|||
|
|||
include(soversion.cmake) |
|||
|
|||
-add_custom_target(docs)
|
|||
-add_custom_target(doc DEPENDS docs)
|
|||
+#add_custom_target(docs)
|
|||
+#add_custom_target(doc DEPENDS docs)
|
|||
|
|||
# Set the default SSL/TLS implementation |
|||
-find_package(OpenSSL)
|
|||
+#find_package(OpenSSL)
|
|||
find_package(PythonInterp REQUIRED) |
|||
-find_package(SWIG)
|
|||
+#find_package(SWIG)
|
|||
# FindSwig.cmake "forgets" make its outputs advanced like a good citizen |
|||
mark_as_advanced(SWIG_DIR SWIG_EXECUTABLE SWIG_VERSION) |
|||
|
|||
# See if Cyrus SASL is available |
|||
-find_library(CYRUS_SASL_LIBRARY sasl2)
|
|||
-find_path(CYRUS_SASL_INCLUDE_DIR sasl/sasl.h PATH_SUFFIXES include)
|
|||
-find_package_handle_standard_args(CyrusSASL DEFAULT_MSG CYRUS_SASL_LIBRARY CYRUS_SASL_INCLUDE_DIR)
|
|||
+#find_library(CYRUS_SASL_LIBRARY sasl2)
|
|||
+#find_path(CYRUS_SASL_INCLUDE_DIR sasl/sasl.h PATH_SUFFIXES include)
|
|||
+#find_package_handle_standard_args(CyrusSASL DEFAULT_MSG CYRUS_SASL_LIBRARY CYRUS_SASL_INCLUDE_DIR)
|
|||
mark_as_advanced(CYRUS_SASL_LIBRARY CYRUS_SASL_INCLUDE_DIR) |
|||
|
|||
# Find saslpasswd2 executable to generate test config |
|||
-find_program(SASLPASSWD_EXE saslpasswd2 DOC "Program used to make SASL user db for testing")
|
|||
+#find_program(SASLPASSWD_EXE saslpasswd2 DOC "Program used to make SASL user db for testing")
|
|||
mark_as_advanced(SASLPASSWD_EXE) |
|||
|
|||
if(WIN32 AND NOT CYGWIN) |
|||
@@ -315,8 +315,8 @@ pn_absolute_install_dir(EXEC_PREFIX "." ${CMAKE_INSTALL_PREFIX})
|
|||
pn_absolute_install_dir(LIBDIR ${LIB_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX}) |
|||
pn_absolute_install_dir(INCLUDEDIR ${INCLUDE_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX}) |
|||
|
|||
-add_subdirectory(docs/api)
|
|||
-add_subdirectory(../tests/tools/apps/c ../tests/tools/apps/c)
|
|||
+#add_subdirectory(docs/api)
|
|||
+#add_subdirectory(../tests/tools/apps/c ../tests/tools/apps/c)
|
|||
|
|||
# for full source distribution: |
|||
set (qpid-proton-platform-all |
|||
@@ -507,7 +507,7 @@ if (BUILD_WITH_CXX)
|
|||
endif (BUILD_WITH_CXX) |
|||
|
|||
add_library ( |
|||
- qpid-proton-core SHARED
|
|||
+ qpid-proton-core STATIC
|
|||
${qpid-proton-core} |
|||
${qpid-proton-layers} |
|||
${qpid-proton-platform} |
|||
@@ -527,7 +527,7 @@ set_target_properties (
|
|||
) |
|||
|
|||
add_library( |
|||
- qpid-proton SHARED
|
|||
+ qpid-proton STATIC
|
|||
# Proton Core |
|||
${qpid-proton-core} |
|||
${qpid-proton-layers} |
|||
@@ -629,7 +629,7 @@ install (FILES
|
|||
|
|||
# c tests: |
|||
|
|||
-add_subdirectory(src/tests)
|
|||
+#add_subdirectory(src/tests)
|
|||
|
|||
if (CMAKE_SYSTEM_NAME STREQUAL Windows) |
|||
# No change needed for windows already use correct separator |
|||
@@ -712,7 +712,7 @@ if (BUILD_PYTHON)
|
|||
|
|||
endif (BUILD_PYTHON) |
|||
|
|||
-find_program(RUBY_EXE "ruby")
|
|||
+#find_program(RUBY_EXE "ruby")
|
|||
if (RUBY_EXE AND BUILD_RUBY) |
|||
set (rb_root "${pn_test_root}/ruby") |
|||
set (rb_src "${CMAKE_CURRENT_SOURCE_DIR}/bindings/ruby") |
|||
@@ -751,8 +751,8 @@ if (RUBY_EXE AND BUILD_RUBY)
|
|||
else (DEFAULT_RUBY_TESTING) |
|||
message(STATUS "Skipping Ruby tests: missing dependencies") |
|||
endif (DEFAULT_RUBY_TESTING) |
|||
-else (RUBY_EXE)
|
|||
- message (STATUS "Cannot find ruby, skipping ruby tests")
|
|||
+#else (RUBY_EXE)
|
|||
+# message (STATUS "Cannot find ruby, skipping ruby tests")
|
|||
endif() |
|||
|
|||
mark_as_advanced (RUBY_EXE RSPEC_EXE) |
|||
diff --git a/proton-c/bindings/CMakeLists.txt b/proton-c/bindings/CMakeLists.txt
|
|||
index 6b88384..d1a50a5 100644
|
|||
--- a/proton-c/bindings/CMakeLists.txt
|
|||
+++ b/proton-c/bindings/CMakeLists.txt
|
|||
@@ -19,14 +19,14 @@
|
|||
|
|||
# Add bindings that do not require swig here - the directory name must be the same as the binding name |
|||
# See below for swig bindings |
|||
-set(BINDINGS javascript cpp go)
|
|||
+set(BINDINGS cpp)
|
|||
|
|||
# Prerequisites for javascript. |
|||
# |
|||
# It uses a C/C++ to JavaScript cross-compiler called emscripten (https://github.com/kripken/emscripten). Emscripten takes C/C++ |
|||
# and compiles it into a highly optimisable subset of JavaScript called asm.js (http://asmjs.org/) that can be |
|||
# aggressively optimised and run at near-native speed (usually between 1.5 to 10 times slower than native C/C++). |
|||
-find_package(Emscripten)
|
|||
+#find_package(Emscripten)
|
|||
if (EMSCRIPTEN_FOUND) |
|||
set (DEFAULT_JAVASCRIPT ON) |
|||
endif (EMSCRIPTEN_FOUND) |
|||
@@ -37,7 +37,7 @@ if (CMAKE_CXX_COMPILER)
|
|||
endif (CMAKE_CXX_COMPILER) |
|||
|
|||
# Prerequisites for Go |
|||
-find_program(GO_EXE go)
|
|||
+#find_program(GO_EXE go)
|
|||
mark_as_advanced(GO_EXE) |
|||
if (GO_EXE) |
|||
if(WIN32) |
|||
diff --git a/proton-c/bindings/cpp/CMakeLists.txt b/proton-c/bindings/cpp/CMakeLists.txt
|
|||
index 0cc4024..796fe29 100644
|
|||
--- a/proton-c/bindings/cpp/CMakeLists.txt
|
|||
+++ b/proton-c/bindings/cpp/CMakeLists.txt
|
|||
@@ -16,7 +16,7 @@
|
|||
# specific language governing permissions and limitations |
|||
# under the License. |
|||
# |
|||
-
|
|||
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|||
include(cpp.cmake) # Compiler checks |
|||
|
|||
include_directories( |
|||
@@ -89,7 +89,7 @@ set_source_files_properties (
|
|||
COMPILE_FLAGS "${LTO}" |
|||
) |
|||
|
|||
-add_library(qpid-proton-cpp SHARED ${qpid-proton-cpp-source})
|
|||
+add_library(qpid-proton-cpp STATIC ${qpid-proton-cpp-source})
|
|||
|
|||
target_link_libraries (qpid-proton-cpp ${PLATFORM_LIBS} qpid-proton) |
|||
|
|||
@@ -120,8 +120,8 @@ endif (MSVC)
|
|||
|
|||
install (DIRECTORY "include/proton" DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.hpp") |
|||
|
|||
-add_subdirectory(docs)
|
|||
-add_subdirectory(${CMAKE_SOURCE_DIR}/tests/tools/apps/cpp ${CMAKE_BINARY_DIR}/tests/tools/apps/cpp)
|
|||
+#add_subdirectory(docs)
|
|||
+#add_subdirectory(${CMAKE_SOURCE_DIR}/tests/tools/apps/cpp ${CMAKE_BINARY_DIR}/tests/tools/apps/cpp)
|
|||
|
|||
# Pkg config file |
|||
configure_file( |
|||
@@ -171,12 +171,12 @@ macro(add_cpp_test test)
|
|||
endif () |
|||
endmacro(add_cpp_test) |
|||
|
|||
-add_cpp_test(codec_test)
|
|||
+#add_cpp_test(codec_test)
|
|||
#add_cpp_test(engine_test) |
|||
-add_cpp_test(thread_safe_test)
|
|||
-add_cpp_test(interop_test ${CMAKE_SOURCE_DIR}/tests)
|
|||
-add_cpp_test(message_test)
|
|||
-add_cpp_test(scalar_test)
|
|||
-add_cpp_test(value_test)
|
|||
-add_cpp_test(container_test)
|
|||
-add_cpp_test(url_test)
|
|||
+#add_cpp_test(thread_safe_test)
|
|||
+#add_cpp_test(interop_test ${CMAKE_SOURCE_DIR}/tests)
|
|||
+#add_cpp_test(message_test)
|
|||
+#add_cpp_test(scalar_test)
|
|||
+#add_cpp_test(value_test)
|
|||
+#add_cpp_test(container_test)
|
|||
+#add_cpp_test(url_test)
|
|||
diff --git a/proton-c/bindings/cpp/docs/CMakeLists.txt b/proton-c/bindings/cpp/docs/CMakeLists.txt
|
|||
index d512d15..8576867 100644
|
|||
--- a/proton-c/bindings/cpp/docs/CMakeLists.txt
|
|||
+++ b/proton-c/bindings/cpp/docs/CMakeLists.txt
|
|||
@@ -17,7 +17,7 @@
|
|||
# under the License. |
|||
# |
|||
|
|||
-find_package(Doxygen)
|
|||
+#find_package(Doxygen)
|
|||
|
|||
if (DOXYGEN_FOUND) |
|||
configure_file ( |
|||
diff --git a/proton-c/docs/api/CMakeLists.txt b/proton-c/docs/api/CMakeLists.txt
|
|||
index 7756e48..71ebb93 100644
|
|||
--- a/proton-c/docs/api/CMakeLists.txt
|
|||
+++ b/proton-c/docs/api/CMakeLists.txt
|
|||
@@ -17,7 +17,7 @@
|
|||
# under the License. |
|||
# |
|||
|
|||
-find_package(Doxygen)
|
|||
+#find_package(Doxygen)
|
|||
if (DOXYGEN_FOUND) |
|||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/user.doxygen.in |
|||
${CMAKE_CURRENT_BINARY_DIR}/user.doxygen) |
|||
--
|
|||
2.7.4 |
|||
|
@ -0,0 +1,123 @@ |
|||
# Block and Transaction Broadcasting With AMQP 1.0 (Experimental Feature) |
|||
|
|||
[AMQP](https://www.amqp.org/) is an enterprise-level message queuing |
|||
protocol for the reliable passing of real-time data and business |
|||
transactions between applications. AMQP supports both broker and |
|||
brokerless messaging. AMQP 1.0 is an open standard and has been |
|||
ratified as ISO/IEC 19464. |
|||
|
|||
The Zcash daemon can be configured to act as a trusted "border |
|||
router", implementing the Zcash P2P protocol and relay, making |
|||
consensus decisions, maintaining the local blockchain database, |
|||
broadcasting locally generated transactions into the network, and |
|||
providing a queryable RPC interface to interact on a polled basis for |
|||
requesting blockchain related data. However, there exists only a |
|||
limited service to notify external software of events like the arrival |
|||
of new blocks or transactions. |
|||
|
|||
The AMQP facility implements a notification interface through a set |
|||
of specific notifiers. Currently there are notifiers that publish |
|||
blocks and transactions. This read-only facility requires only the |
|||
connection of a corresponding AMQP subscriber port in receiving |
|||
software. |
|||
|
|||
Currently the facility is not authenticated nor is there any two-way |
|||
protocol involvement. Therefore, subscribers should validate the |
|||
received data since it may be out of date, incomplete or even invalid. |
|||
|
|||
Because AMQP is message oriented, subscribers receive transactions |
|||
and blocks all-at-once and do not need to implement any sort of |
|||
buffering or reassembly. |
|||
|
|||
## Prerequisites |
|||
|
|||
The AMQP feature in Zcash requires [Qpid Proton](https://qpid.apache.org/proton/) |
|||
version 0.17 or newer, which you will need to install if you are not |
|||
using the depends system. Typically, it is packaged by distributions as |
|||
something like *libqpid-proton*. The C++ wrapper for AMQP *is* required. |
|||
|
|||
In order to run the example Python client scripts in contrib/ one must |
|||
also install *python-qpid-proton*, though this is not necessary for |
|||
daemon operation. |
|||
|
|||
## Enabling |
|||
|
|||
By default, the AMQP feature is automatically compiled in if the |
|||
necessary prerequisites are found. To disable, use --disable-proton |
|||
during the *configure* step of building zcashd: |
|||
|
|||
$ ./configure --disable-proton (other options) |
|||
|
|||
To actually enable operation, one must set the appropriate options on |
|||
the commandline or in the configuration file. |
|||
|
|||
## Usage |
|||
|
|||
AMQP support is currently an experimental feature, so you must pass |
|||
the option: |
|||
|
|||
-experimentalfeatures |
|||
|
|||
Currently, the following notifications are supported: |
|||
|
|||
-amqppubhashtx=address |
|||
-amqppubhashblock=address |
|||
-amqppubrawblock=address |
|||
-amqppubrawtx=address |
|||
|
|||
The address must be a valid AMQP address, where the same address can be |
|||
used in more than notification. Note that SSL and SASL addresses are |
|||
not currently supported. |
|||
|
|||
Launch zcashd like this: |
|||
|
|||
$ zcashd -amqppubhashtx=amqp://127.0.0.1:5672 |
|||
|
|||
Or this: |
|||
|
|||
$ zcashd -amqppubhashtx=amqp://127.0.0.1:5672 \ |
|||
-amqppubrawtx=amqp://127.0.0.1:5672 \ |
|||
-amqppubrawblock=amqp://127.0.0.1:5672 \ |
|||
-amqppubhashblock=amqp://127.0.0.1:5672 \ |
|||
-debug=amqp |
|||
|
|||
The debug category `amqp` enables AMQP-related logging. |
|||
|
|||
Each notification has a topic and body, where the header corresponds |
|||
to the notification type. For instance, for the notification `-amqpubhashtx` |
|||
the topic is `hashtx` (no null terminator) and the body is the hexadecimal |
|||
transaction hash (32 bytes). This transaction hash and the block hash |
|||
found in `hashblock` are in RPC byte order. |
|||
|
|||
These options can also be provided in zcash.conf. |
|||
|
|||
Please see `contrib/amqp/amqp_sub.py` for a working example of an |
|||
AMQP server listening for messages. |
|||
|
|||
## Remarks |
|||
|
|||
From the perspective of zcashd, the local end of an AMQP link is write-only. |
|||
|
|||
No information is broadcast that wasn't already received from the public |
|||
P2P network. |
|||
|
|||
No authentication or authorization is done on peers that zcashd connects |
|||
to; it is assumed that the AMQP link is exposed only to trusted entities, |
|||
using other means such as firewalling. |
|||
|
|||
TLS support may be added once OpenSSL has been removed from the Zcash |
|||
project and alternative TLS implementations have been evaluated. |
|||
|
|||
SASL support may be added in a future update for secure communication. |
|||
|
|||
Note that when the block chain tip changes, a reorganisation may occur |
|||
and just the tip will be notified. It is up to the subscriber to |
|||
retrieve the chain from the last known block to the new tip. |
|||
|
|||
At present, zcashd does not try to resend a notification if there was |
|||
a problem confirming receipt. Support for delivery guarantees such as |
|||
*at-least-once* and *exactly-once* will be added in in a future update. |
|||
|
|||
Currently, zcashd appends an up-counting sequence number to each notification |
|||
which allows listeners to detect lost notifications. |
|||
|
@ -0,0 +1,74 @@ |
|||
Hotfix Release Process |
|||
====================== |
|||
|
|||
Hotfix releases are versioned by incrementing the build number of the latest |
|||
release. For example: |
|||
|
|||
First hotfix: v1.0.11 -> v1.0.11-1 |
|||
Second hotfix: v1.0.11-1 -> v1.0.11-2 |
|||
|
|||
In the commands below, <RELEASE> and <RELEASE_PREV> are prefixed with a v, ie. |
|||
v1.0.11 (not 1.0.11). |
|||
|
|||
## Create a hotfix branch |
|||
|
|||
Create a hotfix branch from the previous release tag, and push it to the main |
|||
repository: |
|||
|
|||
$ git branch hotfix-<RELEASE> <RELEASE_PREV> |
|||
$ git push 'git@github.com:zcash/zcash' hotfix-<RELEASE> |
|||
|
|||
## Implement hotfix changes |
|||
|
|||
Hotfix changes are implemented the same way as regular changes (developers work |
|||
in separate branches per change, and push the branches to their own repositories), |
|||
except that the branches are based on the hotfix branch instead of master: |
|||
|
|||
$ git checkout hotfix-<RELEASE> |
|||
$ git checkout -b <BRANCH_NAME> |
|||
|
|||
## Merge hotfix PRs |
|||
|
|||
Hotfix PRs are created like regular PRs, except using the hotfix branch as the |
|||
base instead of master. Each PR should be reviewed as normal, and then the |
|||
following process should be used to merge: |
|||
|
|||
- A CI merge build is manually run by logging into the CI server, going to the |
|||
pr-merge builder, clicking the "force" button, and entering the following |
|||
values: |
|||
|
|||
- Repository: https://github.com/<DevUser>/zcash |
|||
- <DevUser> must be in the set of "safe" users as-specified in the CI |
|||
config. |
|||
- Branch: name of the hotfix PR branch (not the hotfix release branch). |
|||
|
|||
- A link to the build and its result is manually added to the PR as a comment. |
|||
|
|||
- If the build was successful, the PR is merged via the GitHub button. |
|||
|
|||
## Release process |
|||
|
|||
The majority of this process is identical to the standard release process. |
|||
However, there are a few notable differences: |
|||
|
|||
- When running the release script, use the `--hotfix` flag: |
|||
|
|||
$ ./zcutil/make-release.py --hotfix <RELEASE> <RELEASE_PREV> <APPROX_RELEASE_HEIGHT> |
|||
|
|||
- To review the automated changes in git: |
|||
|
|||
$ git log hotfix-<RELEASE>..HEAD |
|||
|
|||
- After the standard review process, use the hotfix merge process outlined above |
|||
instead of the regular merge process. |
|||
|
|||
- When making the tag, check out the hotfix branch instead of master. |
|||
|
|||
## Post-release |
|||
|
|||
Once the hotfix release has been created, a new PR should be opened for merging |
|||
the hotfix release branch into master. This may require fixing merge conflicts |
|||
(e.g. changing the version number in the hotfix branch to match master, if |
|||
master is ahead). Such conflicts **MUST** be addressed with additional commits |
|||
to the hotfix branch; specifically, the branch **MUST NOT** be rebased on |
|||
master. |
@ -0,0 +1,84 @@ |
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. |
|||
.TH KOMODO-CLI "1" "March 2018" "komodo-cli v1.0.8" "User Commands" |
|||
.SH NAME |
|||
komodo-cli \- manual page for komodo-cli v1.0.8 |
|||
.SH DESCRIPTION |
|||
Komodo RPC client version v1.0.8 |
|||
.PP |
|||
In order to ensure you are adequately protecting your privacy when using Zcash, |
|||
please see <https://z.cash/support/security/index.html>. |
|||
.SS "Usage:" |
|||
.TP |
|||
komodo\-cli [options] <command> [params] |
|||
Send command to Komodo |
|||
.TP |
|||
komodo\-cli [options] help |
|||
List commands |
|||
.TP |
|||
komodo\-cli [options] help <command> |
|||
Get help for a command |
|||
.SH OPTIONS |
|||
.HP |
|||
\-? |
|||
.IP |
|||
This help message |
|||
.HP |
|||
\fB\-conf=\fR<file> |
|||
.IP |
|||
Specify configuration file (default: komodo.conf) |
|||
.HP |
|||
\fB\-datadir=\fR<dir> |
|||
.IP |
|||
Specify data directory |
|||
.HP |
|||
\fB\-testnet\fR |
|||
.IP |
|||
Use the test network |
|||
.HP |
|||
\fB\-regtest\fR |
|||
.IP |
|||
Enter regression test mode, which uses a special chain in which blocks |
|||
can be solved instantly. This is intended for regression testing tools |
|||
and app development. |
|||
.HP |
|||
\fB\-rpcconnect=\fR<ip> |
|||
.IP |
|||
Send commands to node running on <ip> (default: 127.0.0.1) |
|||
.HP |
|||
\fB\-rpcport=\fR<port> |
|||
.IP |
|||
Connect to JSON\-RPC on <port> (default: 8232 or testnet: 18232) |
|||
.HP |
|||
\fB\-rpcwait\fR |
|||
.IP |
|||
Wait for RPC server to start |
|||
.HP |
|||
\fB\-rpcuser=\fR<user> |
|||
.IP |
|||
Username for JSON\-RPC connections |
|||
.HP |
|||
\fB\-rpcpassword=\fR<pw> |
|||
.IP |
|||
Password for JSON\-RPC connections |
|||
.HP |
|||
\fB\-rpcclienttimeout=\fR<n> |
|||
.IP |
|||
Timeout in seconds during HTTP requests, or 0 for no timeout. (default: |
|||
900) |
|||
.SH COPYRIGHT |
|||
|
|||
In order to ensure you are adequately protecting your privacy when using Zcash, |
|||
please see <https://z.cash/support/security/index.html>. |
|||
|
|||
Copyright (C) 2009-2017 The Bitcoin Core Developers |
|||
Copyright (C) 2015-2017 The Zcash Developers |
|||
Copyright (C) 2015-2017 jl777 and SuperNET developers |
|||
|
|||
This is experimental software. |
|||
|
|||
Distributed under the MIT software license, see the accompanying file COPYING |
|||
or <http://www.opensource.org/licenses/mit-license.php>. |
|||
|
|||
This product includes software developed by the OpenSSL Project for use in the |
|||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written |
|||
by Eric Young and UPnP software written by Thomas Bernard. |
@ -0,0 +1,102 @@ |
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. |
|||
.TH KOMODO-TX "1" "March 2018" "komodo-tx v1.0.8" "User Commands" |
|||
.SH NAME |
|||
komodo-tx \- manual page for komodo-tx v1.0.8 |
|||
.SH DESCRIPTION |
|||
Zcash zcash\-tx utility version v1.0.8 |
|||
.SS "Usage:" |
|||
.TP |
|||
zcash\-tx [options] <hex\-tx> [commands] |
|||
Update hex\-encoded zcash transaction |
|||
.TP |
|||
zcash\-tx [options] \fB\-create\fR [commands] |
|||
Create hex\-encoded zcash transaction |
|||
.SH OPTIONS |
|||
.HP |
|||
\-? |
|||
.IP |
|||
This help message |
|||
.HP |
|||
\fB\-create\fR |
|||
.IP |
|||
Create new, empty TX. |
|||
.HP |
|||
\fB\-json\fR |
|||
.IP |
|||
Select JSON output |
|||
.HP |
|||
\fB\-txid\fR |
|||
.IP |
|||
Output only the hex\-encoded transaction id of the resultant transaction. |
|||
.HP |
|||
\fB\-regtest\fR |
|||
.IP |
|||
Enter regression test mode, which uses a special chain in which blocks |
|||
can be solved instantly. |
|||
.HP |
|||
\fB\-testnet\fR |
|||
.IP |
|||
Use the test network |
|||
.PP |
|||
Commands: |
|||
.IP |
|||
delin=N |
|||
.IP |
|||
Delete input N from TX |
|||
.IP |
|||
delout=N |
|||
.IP |
|||
Delete output N from TX |
|||
.IP |
|||
in=TXID:VOUT |
|||
.IP |
|||
Add input to TX |
|||
.IP |
|||
locktime=N |
|||
.IP |
|||
Set TX lock time to N |
|||
.IP |
|||
nversion=N |
|||
.IP |
|||
Set TX version to N |
|||
.IP |
|||
outaddr=VALUE:ADDRESS |
|||
.IP |
|||
Add address\-based output to TX |
|||
.IP |
|||
outscript=VALUE:SCRIPT |
|||
.IP |
|||
Add raw script output to TX |
|||
.IP |
|||
sign=SIGHASH\-FLAGS |
|||
.IP |
|||
Add zero or more signatures to transaction. This command requires JSON |
|||
registers:prevtxs=JSON object, privatekeys=JSON object. See |
|||
signrawtransaction docs for format of sighash flags, JSON objects. |
|||
.PP |
|||
Register Commands: |
|||
.IP |
|||
load=NAME:FILENAME |
|||
.IP |
|||
Load JSON file FILENAME into register NAME |
|||
.IP |
|||
set=NAME:JSON\-STRING |
|||
.IP |
|||
Set register NAME to given JSON\-STRING |
|||
.SH COPYRIGHT |
|||
|
|||
In order to ensure you are adequately protecting your privacy when using Zcash, |
|||
please see <https://z.cash/support/security/index.html>. |
|||
|
|||
Copyright (C) 2009-2017 The Bitcoin Core Developers |
|||
Copyright (C) 2015-2017 The Zcash Developers |
|||
Copyright (C) 2015-2017 jl777 and SuperNET developers |
|||
|
|||
This is experimental software. |
|||
|
|||
Distributed under the MIT software license, see the accompanying file COPYING |
|||
or <http://www.opensource.org/licenses/mit-license.php>. |
|||
|
|||
This product includes software developed by the OpenSSL Project for use in the |
|||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written |
|||
by Eric Young and UPnP software written by Thomas Bernard. |
@ -0,0 +1,472 @@ |
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. |
|||
.TH KOMODOD "1" "March 2018" "komodod v1.0.8" "User Commands" |
|||
.SH NAME |
|||
komodod \- manual page for komodod v1.0.8 |
|||
.SH DESCRIPTION |
|||
Komodo Daemon version v1.0.8 |
|||
.PP |
|||
In order to ensure you are adequately protecting your privacy when using Zcash, |
|||
please see <https://z.cash/support/security/index.html>. |
|||
.SS "Usage:" |
|||
.TP |
|||
komodod [options] |
|||
Start Komodo Daemon |
|||
.SH OPTIONS |
|||
.HP |
|||
\-? |
|||
.IP |
|||
This help message |
|||
.HP |
|||
\fB\-alerts\fR |
|||
.IP |
|||
Receive and display P2P network alerts (default: 1) |
|||
.HP |
|||
\fB\-alertnotify=\fR<cmd> |
|||
.IP |
|||
Execute command when a relevant alert is received or we see a really |
|||
long fork (%s in cmd is replaced by message) |
|||
.HP |
|||
\fB\-blocknotify=\fR<cmd> |
|||
.IP |
|||
Execute command when the best block changes (%s in cmd is replaced by |
|||
block hash) |
|||
.HP |
|||
\fB\-checkblocks=\fR<n> |
|||
.IP |
|||
How many blocks to check at startup (default: 288, 0 = all) |
|||
.HP |
|||
\fB\-checklevel=\fR<n> |
|||
.IP |
|||
How thorough the block verification of \fB\-checkblocks\fR is (0\-4, default: 3) |
|||
.HP |
|||
\fB\-conf=\fR<file> |
|||
.IP |
|||
Specify configuration file (default: komodo.conf) |
|||
.HP |
|||
\fB\-daemon\fR |
|||
.IP |
|||
Run in the background as a daemon and accept commands |
|||
.HP |
|||
\fB\-datadir=\fR<dir> |
|||
.IP |
|||
Specify data directory |
|||
.HP |
|||
\fB\-exportdir=\fR<dir> |
|||
.IP |
|||
Specify directory to be used when exporting data |
|||
.HP |
|||
\fB\-dbcache=\fR<n> |
|||
.IP |
|||
Set database cache size in megabytes (4 to 16384, default: 100) |
|||
.HP |
|||
\fB\-loadblock=\fR<file> |
|||
.IP |
|||
Imports blocks from external blk000??.dat file on startup |
|||
.HP |
|||
\fB\-maxorphantx=\fR<n> |
|||
.IP |
|||
Keep at most <n> unconnectable transactions in memory (default: 100) |
|||
.HP |
|||
\fB\-par=\fR<n> |
|||
.IP |
|||
Set the number of script verification threads (\fB\-2\fR to 16, 0 = auto, <0 = |
|||
leave that many cores free, default: 0) |
|||
.HP |
|||
\fB\-pid=\fR<file> |
|||
.IP |
|||
Specify pid file (default: komodod.pid) |
|||
.HP |
|||
\fB\-prune=\fR<n> |
|||
.IP |
|||
Reduce storage requirements by pruning (deleting) old blocks. This mode |
|||
disables wallet support and is incompatible with \fB\-txindex\fR. Warning: |
|||
Reverting this setting requires re\-downloading the entire blockchain. |
|||
(default: 0 = disable pruning blocks, >550 = target size in MiB to use |
|||
for block files) |
|||
.HP |
|||
\fB\-reindex\fR |
|||
.IP |
|||
Rebuild block chain index from current blk000??.dat files on startup |
|||
.HP |
|||
\fB\-sysperms\fR |
|||
.IP |
|||
Create new files with system default permissions, instead of umask 077 |
|||
(only effective with disabled wallet functionality) |
|||
.HP |
|||
\fB\-txindex\fR |
|||
.IP |
|||
Maintain a full transaction index, used by the getrawtransaction rpc |
|||
call (default: 0) |
|||
.PP |
|||
Connection options: |
|||
.HP |
|||
\fB\-addnode=\fR<ip> |
|||
.IP |
|||
Add a node to connect to and attempt to keep the connection open |
|||
.HP |
|||
\fB\-banscore=\fR<n> |
|||
.IP |
|||
Threshold for disconnecting misbehaving peers (default: 100) |
|||
.HP |
|||
\fB\-bantime=\fR<n> |
|||
.IP |
|||
Number of seconds to keep misbehaving peers from reconnecting (default: |
|||
86400) |
|||
.HP |
|||
\fB\-bind=\fR<addr> |
|||
.IP |
|||
Bind to given address and always listen on it. Use [host]:port notation |
|||
for IPv6 |
|||
.HP |
|||
\fB\-connect=\fR<ip> |
|||
.IP |
|||
Connect only to the specified node(s) |
|||
.HP |
|||
\fB\-discover\fR |
|||
.IP |
|||
Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR |
|||
or \fB\-proxy\fR) |
|||
.HP |
|||
\fB\-dns\fR |
|||
.IP |
|||
Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1) |
|||
.HP |
|||
\fB\-dnsseed\fR |
|||
.IP |
|||
Query for peer addresses via DNS lookup, if low on addresses (default: 1 |
|||
unless \fB\-connect\fR) |
|||
.HP |
|||
\fB\-externalip=\fR<ip> |
|||
.IP |
|||
Specify your own public address |
|||
.HP |
|||
\fB\-forcednsseed\fR |
|||
.IP |
|||
Always query for peer addresses via DNS lookup (default: 0) |
|||
.HP |
|||
\fB\-listen\fR |
|||
.IP |
|||
Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR) |
|||
.HP |
|||
\fB\-listenonion\fR |
|||
.IP |
|||
Automatically create Tor hidden service (default: 1) |
|||
.HP |
|||
\fB\-maxconnections=\fR<n> |
|||
.IP |
|||
Maintain at most <n> connections to peers (default: 125) |
|||
.HP |
|||
\fB\-maxreceivebuffer=\fR<n> |
|||
.IP |
|||
Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000) |
|||
.HP |
|||
\fB\-maxsendbuffer=\fR<n> |
|||
.IP |
|||
Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000) |
|||
.HP |
|||
\fB\-onion=\fR<ip:port> |
|||
.IP |
|||
Use separate SOCKS5 proxy to reach peers via Tor hidden services |
|||
(default: \fB\-proxy\fR) |
|||
.HP |
|||
\fB\-onlynet=\fR<net> |
|||
.IP |
|||
Only connect to nodes in network <net> (ipv4, ipv6 or onion) |
|||
.HP |
|||
\fB\-permitbaremultisig\fR |
|||
.IP |
|||
Relay non\-P2SH multisig (default: 1) |
|||
.HP |
|||
\fB\-port=\fR<port> |
|||
.IP |
|||
Listen for connections on <port> (default: 7770 or testnet: 17770) |
|||
.HP |
|||
\fB\-proxy=\fR<ip:port> |
|||
.IP |
|||
Connect through SOCKS5 proxy |
|||
.HP |
|||
\fB\-proxyrandomize\fR |
|||
.IP |
|||
Randomize credentials for every proxy connection. This enables Tor |
|||
stream isolation (default: 1) |
|||
.HP |
|||
\fB\-seednode=\fR<ip> |
|||
.IP |
|||
Connect to a node to retrieve peer addresses, and disconnect |
|||
.HP |
|||
\fB\-timeout=\fR<n> |
|||
.IP |
|||
Specify connection timeout in milliseconds (minimum: 1, default: 5000) |
|||
.HP |
|||
\fB\-torcontrol=\fR<ip>:<port> |
|||
.IP |
|||
Tor control port to use if onion listening enabled (default: |
|||
127.0.0.1:9051) |
|||
.HP |
|||
\fB\-torpassword=\fR<pass> |
|||
.IP |
|||
Tor control port password (default: empty) |
|||
.HP |
|||
\fB\-upnp\fR |
|||
.IP |
|||
Use UPnP to map the listening port (default: 0) |
|||
.HP |
|||
\fB\-whitebind=\fR<addr> |
|||
.IP |
|||
Bind to given address and whitelist peers connecting to it. Use |
|||
[host]:port notation for IPv6 |
|||
.HP |
|||
\fB\-whitelist=\fR<netmask> |
|||
.IP |
|||
Whitelist peers connecting from the given netmask or IP address. Can be |
|||
specified multiple times. Whitelisted peers cannot be DoS banned and |
|||
their transactions are always relayed, even if they are already in the |
|||
mempool, useful e.g. for a gateway |
|||
.PP |
|||
Wallet options: |
|||
.HP |
|||
\fB\-disablewallet\fR |
|||
.IP |
|||
Do not load the wallet and disable wallet RPC calls |
|||
.HP |
|||
\fB\-keypool=\fR<n> |
|||
.IP |
|||
Set key pool size to <n> (default: 100) |
|||
.HP |
|||
\fB\-paytxfee=\fR<amt> |
|||
.IP |
|||
Fee (in BTC/kB) to add to transactions you send (default: 0.00) |
|||
.HP |
|||
\fB\-rescan\fR |
|||
.IP |
|||
Rescan the blockchain for missing wallet transactions on startup |
|||
.HP |
|||
\fB\-salvagewallet\fR |
|||
.IP |
|||
Attempt to recover private keys from a corrupt wallet.dat on startup |
|||
.HP |
|||
\fB\-sendfreetransactions\fR |
|||
.IP |
|||
Send transactions as zero\-fee transactions if possible (default: 0) |
|||
.HP |
|||
\fB\-spendzeroconfchange\fR |
|||
.IP |
|||
Spend unconfirmed change when sending transactions (default: 1) |
|||
.HP |
|||
\fB\-txconfirmtarget=\fR<n> |
|||
.IP |
|||
If paytxfee is not set, include enough fee so transactions begin |
|||
confirmation on average within n blocks (default: 2) |
|||
.HP |
|||
\fB\-maxtxfee=\fR<amt> |
|||
.IP |
|||
Maximum total fees to use in a single wallet transaction; setting this |
|||
too low may abort large transactions (default: 0.10) |
|||
.HP |
|||
\fB\-upgradewallet\fR |
|||
.IP |
|||
Upgrade wallet to latest format on startup |
|||
.HP |
|||
\fB\-wallet=\fR<file> |
|||
.IP |
|||
Specify wallet file (within data directory) (default: wallet.dat) |
|||
.HP |
|||
\fB\-walletbroadcast\fR |
|||
.IP |
|||
Make the wallet broadcast transactions (default: 1) |
|||
.HP |
|||
\fB\-walletnotify=\fR<cmd> |
|||
.IP |
|||
Execute command when a wallet transaction changes (%s in cmd is replaced |
|||
by TxID) |
|||
.HP |
|||
\fB\-zapwallettxes=\fR<mode> |
|||
.IP |
|||
Delete all wallet transactions and only recover those parts of the |
|||
blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g. |
|||
account owner and payment request information, 2 = drop tx meta data) |
|||
.PP |
|||
ZeroMQ notification options: |
|||
.HP |
|||
\fB\-zmqpubhashblock=\fR<address> |
|||
.IP |
|||
Enable publish hash block in <address> |
|||
.HP |
|||
\fB\-zmqpubhashtx=\fR<address> |
|||
.IP |
|||
Enable publish hash transaction in <address> |
|||
.HP |
|||
\fB\-zmqpubrawblock=\fR<address> |
|||
.IP |
|||
Enable publish raw block in <address> |
|||
.HP |
|||
\fB\-zmqpubrawtx=\fR<address> |
|||
.IP |
|||
Enable publish raw transaction in <address> |
|||
.PP |
|||
Debugging/Testing options: |
|||
.HP |
|||
\fB\-debug=\fR<category> |
|||
.IP |
|||
Output debugging information (default: 0, supplying <category> is |
|||
optional). If <category> is not supplied or if <category> = 1, output |
|||
all debugging information. <category> can be: addrman, alert, bench, |
|||
coindb, db, estimatefee, http, libevent, lock, mempool, net, |
|||
partitioncheck, pow, proxy, prune, rand, reindex, rpc, selectcoins, tor, |
|||
zmq, zrpc, zrpcunsafe (implies zrpc). |
|||
.HP |
|||
\fB\-experimentalfeatures\fR |
|||
.IP |
|||
Enable use of experimental features |
|||
.HP |
|||
\fB\-help\-debug\fR |
|||
.IP |
|||
Show all debugging options (usage: \fB\-\-help\fR \fB\-help\-debug\fR) |
|||
.HP |
|||
\fB\-logips\fR |
|||
.IP |
|||
Include IP addresses in debug output (default: 0) |
|||
.HP |
|||
\fB\-logtimestamps\fR |
|||
.IP |
|||
Prepend debug output with timestamp (default: 1) |
|||
.HP |
|||
\fB\-minrelaytxfee=\fR<amt> |
|||
.IP |
|||
Fees (in BTC/Kb) smaller than this are considered zero fee for relaying |
|||
(default: 0.000001) |
|||
.HP |
|||
\fB\-printtoconsole\fR |
|||
.IP |
|||
Send trace/debug info to console instead of debug.log file |
|||
.HP |
|||
\fB\-shrinkdebugfile\fR |
|||
.IP |
|||
Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR) |
|||
.HP |
|||
\fB\-testnet\fR |
|||
.IP |
|||
Use the test network |
|||
.PP |
|||
Node relay options: |
|||
.HP |
|||
\fB\-datacarrier\fR |
|||
.IP |
|||
Relay and mine data carrier transactions (default: 1) |
|||
.HP |
|||
\fB\-datacarriersize\fR |
|||
.IP |
|||
Maximum size of data in data carrier transactions we relay and mine |
|||
(default: 8192) |
|||
.PP |
|||
Block creation options: |
|||
.HP |
|||
\fB\-blockminsize=\fR<n> |
|||
.IP |
|||
Set minimum block size in bytes (default: 0) |
|||
.HP |
|||
\fB\-blockmaxsize=\fR<n> |
|||
.IP |
|||
Set maximum block size in bytes (default: 2000000) |
|||
.HP |
|||
\fB\-blockprioritysize=\fR<n> |
|||
.IP |
|||
Set maximum size of high\-priority/low\-fee transactions in bytes |
|||
(default: 1000000) |
|||
.PP |
|||
Mining options: |
|||
.HP |
|||
\fB\-gen\fR |
|||
.IP |
|||
Generate coins (default: 0) |
|||
.HP |
|||
\fB\-genproclimit=\fR<n> |
|||
.IP |
|||
Set the number of threads for coin generation if enabled (\fB\-1\fR = all |
|||
cores, default: 1) |
|||
.HP |
|||
\fB\-equihashsolver=\fR<name> |
|||
.IP |
|||
Specify the Equihash solver to be used if enabled (default: "default") |
|||
.HP |
|||
\fB\-mineraddress=\fR<addr> |
|||
.IP |
|||
Send mined coins to a specific single address |
|||
.HP |
|||
\fB\-minetolocalwallet\fR |
|||
.IP |
|||
Require that mined blocks use a coinbase address in the local wallet |
|||
(default: 1) |
|||
.PP |
|||
RPC server options: |
|||
.HP |
|||
\fB\-server\fR |
|||
.IP |
|||
Accept command line and JSON\-RPC commands |
|||
.HP |
|||
\fB\-rest\fR |
|||
.IP |
|||
Accept public REST requests (default: 0) |
|||
.HP |
|||
\fB\-rpcbind=\fR<addr> |
|||
.IP |
|||
Bind to given address to listen for JSON\-RPC connections. Use |
|||
[host]:port notation for IPv6. This option can be specified multiple |
|||
times (default: bind to all interfaces) |
|||
.HP |
|||
\fB\-rpcuser=\fR<user> |
|||
.IP |
|||
Username for JSON\-RPC connections |
|||
.HP |
|||
\fB\-rpcpassword=\fR<pw> |
|||
.IP |
|||
Password for JSON\-RPC connections |
|||
.HP |
|||
\fB\-rpcport=\fR<port> |
|||
.IP |
|||
Listen for JSON\-RPC connections on <port> (default: 7771 or testnet: |
|||
17771) |
|||
.HP |
|||
\fB\-rpcallowip=\fR<ip> |
|||
.IP |
|||
Allow JSON\-RPC connections from specified source. Valid for <ip> are a |
|||
single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) |
|||
or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified |
|||
multiple times |
|||
.HP |
|||
\fB\-rpcthreads=\fR<n> |
|||
.IP |
|||
Set the number of threads to service RPC calls (default: 4) |
|||
.PP |
|||
Metrics Options (only if \fB\-daemon\fR and \fB\-printtoconsole\fR are not set): |
|||
.HP |
|||
\fB\-showmetrics\fR |
|||
.IP |
|||
Show metrics on stdout (default: 1 if running in a console, 0 otherwise) |
|||
.HP |
|||
\fB\-metricsui\fR |
|||
.IP |
|||
Set to 1 for a persistent metrics screen, 0 for sequential metrics |
|||
output (default: 1 if running in a console, 0 otherwise) |
|||
.HP |
|||
\fB\-metricsrefreshtime\fR |
|||
.IP |
|||
Number of seconds between metrics refreshes (default: 1 if running in a |
|||
console, 600 otherwise) |
|||
.SH COPYRIGHT |
|||
|
|||
In order to ensure you are adequately protecting your privacy when using Zcash, |
|||
please see <https://z.cash/support/security/index.html>. |
|||
|
|||
Copyright (C) 2009-2017 The Bitcoin Core Developers |
|||
Copyright (C) 2015-2017 The Zcash Developers |
|||
Copyright (C) 2015-2017 jl777 and SuperNET developers |
|||
|
|||
This is experimental software. |
|||
|
|||
Distributed under the MIT software license, see the accompanying file COPYING |
|||
or <http://www.opensource.org/licenses/mit-license.php>. |
|||
|
|||
This product includes software developed by the OpenSSL Project for use in the |
|||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written |
|||
by Eric Young and UPnP software written by Thomas Bernard. |
@ -0,0 +1,107 @@ |
|||
# Payment Disclosure (Experimental Feature) |
|||
|
|||
**Summary** |
|||
|
|||
Use RPC calls `z_getpaymentdisclosure` and `z_validatepaymentdisclosure` to reveal details of a shielded payment. |
|||
|
|||
**Who should read this document** |
|||
|
|||
Frequent users of shielded transactions, payment processors, exchanges, block explorer |
|||
|
|||
### Experimental Feature |
|||
|
|||
This is an experimental feature. Enable it by launching `zcashd` with flags: |
|||
|
|||
zcashd -experimentalfeatures -paymentdisclosure -debug=paymentdisclosure -txindex=1 |
|||
|
|||
These flags can also be set as options in `zcash.conf`. |
|||
|
|||
All nodes that generate or validate payment disclosures must run with `txindex=1` enabled. |
|||
|
|||
### Background |
|||
|
|||
Payment Disclosure is an implementation of the work-in-progress Payment Disclosure ZIP [1]. |
|||
|
|||
The ZIP describes a method of proving that a payment was sent to a shielded address. In the typical case, this means enabling a sender to present a proof that they transferred funds to a recipient's shielded address. |
|||
|
|||
[1] https://github.com/zcash/zips/pull/119 |
|||
|
|||
### Example Use Case |
|||
|
|||
Alice the customer sends 10 ZEC to Bob the merchant at the shielded address shown on their website. However, Bob is not sure if he received the funds. |
|||
|
|||
Alice's node is running with payment disclosure enabled, so Alice generates a payment disclosure and provides it to Bob, who verifies the payment was made. |
|||
|
|||
If Bob is a bad merchant, Alice can present the payment disclosure to a third party to validate that payment was indeed made. |
|||
|
|||
### Solution |
|||
|
|||
A payment disclosure can be generated for any output of a JoinSplit using the RPC call: |
|||
|
|||
z_getpaymentdisclosure txid js_index output_index (message) |
|||
|
|||
An optional message can be supplied. This could be used for a refund address or some other reference, as currently it is not common practice to (ahead of time) include a refund address in the memo field when making a payment. |
|||
|
|||
To validate a payment disclosure, the following RPC call can be used: |
|||
|
|||
z_validatepaymentdisclosure hexdata |
|||
|
|||
### Example |
|||
|
|||
Generate a payment disclosure for the first joinsplit, second output (index starts from zero): |
|||
|
|||
zcash-cli z_getpaymentdisclosure 79189528d611e811a1c7bb0358dd31343033d14b4c1e998d7c4799c40f8b652b 0 1 "Hello" |
|||
|
|||
This returns a payment disclosure in the form of a hex string: |
|||
|
|||
706462ff000a3722aafa8190cdf9710bfad6da2af6d3a74262c1fc96ad47df814b0cd5641c2b658b0fc499477c8d991e4c4bd133303431dd5803bbc7a111e811d6289518790000000000000000017e861adb829d8cb1cbcf6330b8c2e25fb0d08041a67a857815a136f0227f8a5342bce5b3c0d894e2983000eb594702d3c1580817d0374e15078528e56bb6f80c0548656c6c6f59a7085395c9e706d82afe3157c54ad4ae5bf144fcc774a8d9c921c58471402019c156ec5641e2173c4fb6467df5f28530dc4636fa71f4d0e48fc5c560fac500 |
|||
|
|||
To validate the payment disclosure: |
|||
|
|||
zcash-cli z_validatepaymentdisclosure HEXDATA |
|||
|
|||
This returns data related to the payment and the payment disclosure: |
|||
|
|||
{ |
|||
"txid": "79189528d611e811a1c7bb0358dd31343033d14b4c1e998d7c4799c40f8b652b", |
|||
"jsIndex": 0, |
|||
"outputIndex": 1, |
|||
"version": 0, |
|||
"onetimePrivKey": "1c64d50c4b81df47ad96fcc16242a7d3f62adad6fa0b71f9cd9081faaa22370a", |
|||
"message": "Hello", |
|||
"joinSplitPubKey": "d1c465d16166b602992479acfac18e87dc18065f6cefde6a002e70bc371b9faf", |
|||
"signatureVerified": true, |
|||
"paymentAddress": "ztaZJXy8iX8nrk2ytXKDBoTWqPkhQcj6E2ifARnD3wfkFwsxXs5SoX7NGmrjkzSiSKn8VtLHTJae48vX5NakvmDhtGNY5eb", |
|||
"memo": "f600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", |
|||
"value": 12.49900000, |
|||
"commitmentMatch": true, |
|||
"valid": true |
|||
} |
|||
|
|||
The `signatureVerified` field confirms that the payment disclosure was generated and signed with the joinSplitPrivKey, which should only be known by the node generating and sending the transaction 7918...652b in question. |
|||
|
|||
### Where is the data stored? |
|||
|
|||
For all nodes, payment disclosure does not touch `wallet.dat` in any way. |
|||
|
|||
For nodes that only validate payment disclosures, no data is stored locally. |
|||
|
|||
For nodes that generate payment disclosures, a LevelDB database is created in the node's datadir. For most users, this would be in the folder: |
|||
|
|||
$HOME/.zcash/paymentdisclosure |
|||
|
|||
If you decide you don't want to use payment disclosure, it is safe to shut down your node and delete the database folder. |
|||
|
|||
### Security Properties |
|||
|
|||
Please consult the work-in-progress ZIP for details about the protocol, security properties and caveats. |
|||
|
|||
### Reminder |
|||
|
|||
Feedback is most welcome! |
|||
|
|||
This is an experimental feature so there are no guarantees that the protocol, database format, RPC interface etc. will remain the same in the future. |
|||
|
|||
### Notes |
|||
|
|||
Currently there is no user friendly way to help senders identify which joinsplit output index maps to a given payment they made. It is possible to construct this from `debug.log`. Ideas and feedback are most welcome on how to improve the user experience. |
@ -0,0 +1,8 @@ |
|||
In-memory caches |
|||
---------------- |
|||
|
|||
The size of some in-memory caches can be reduced. As caches trade off memory usage for performance, usually reducing these have a negative effect on performance. |
|||
|
|||
- `-dbcache=<n>` - the UTXO database cache size, this defaults to `450` (`100` before 1.0.15). The unit is MiB (where 1 GiB = 1024 MiB). |
|||
- The minimum value for `-dbcache` is 4. |
|||
- A lower dbcache make initial sync time much longer. After the initial sync, the effect is less pronounced for most use-cases, unless fast validation of blocks is important such as for mining. |
@ -0,0 +1,6 @@ |
|||
(note: this is a temporary file, to be added-to by anybody, and moved to |
|||
release-notes at release time) |
|||
|
|||
Notable changes |
|||
=============== |
|||
|
@ -0,0 +1,11 @@ |
|||
Jack Grigg (1): |
|||
Disable building Proton in Gitian |
|||
|
|||
Sean Bowe (2): |
|||
Revert "Remove an unneeded version workaround as per @str4d's review comment." |
|||
Revert "Delete old protocol version constants and simplify code that used them." |
|||
|
|||
Simon Liu (2): |
|||
make-release.py: Versioning changes for 1.0.10-1. |
|||
make-release.py: Updated manpages for 1.0.10-1. |
|||
|
@ -0,0 +1,79 @@ |
|||
Notable changes |
|||
=============== |
|||
|
|||
Signature validation using libsecp256k1 |
|||
--------------------------------------- |
|||
|
|||
ECDSA signatures inside Zcash transactions now use validation using |
|||
[https://github.com/bitcoin/secp256k1](libsecp256k1) instead of OpenSSL. |
|||
|
|||
Depending on the platform, this means a significant speedup for raw signature |
|||
validation speed. The advantage is largest on x86_64, where validation is over |
|||
five times faster. In practice, this translates to a raw reindexing and new |
|||
block validation times that are less than half of what it was before. |
|||
|
|||
Libsecp256k1 has undergone very extensive testing and validation upstream. |
|||
|
|||
A side effect of this change is that libconsensus no longer depends on OpenSSL. |
|||
|
|||
Changelog |
|||
========= |
|||
|
|||
Boris Hajduk (1): |
|||
documentatin z_validateaddress was missing param |
|||
|
|||
Daira Hopwood (8): |
|||
Delete old protocol version constants and simplify code that used them. fixes #2244 |
|||
Remove an unneeded version workaround as per @str4d's review comment. |
|||
Remove unneeded lax ECDSA signature verification. |
|||
Strict DER signatures are always enforced; remove the flag and code that used it. |
|||
Repair tests for strict DER signatures. While we're at it, repair a similar test for CLTV, and make the repaired RPC tests run by default. |
|||
Make transaction test failures print the comments preceding the test JSON. |
|||
Fix a comment that was made stale before launch by #1016 (commit 542da61). |
|||
Delete test that is redundant and inapplicable to Zcash. |
|||
|
|||
Jack Grigg (20): |
|||
Fix incorrect locking in CCryptoKeyStore |
|||
Use AtomicTimer for metrics screen thread count |
|||
Revert "Fix secp256k1 test compilation" |
|||
Squashed 'src/secp256k1/' changes from 22f60a6..84973d3 |
|||
Fix potential overflows in ECDSA DER parsers |
|||
Rename FALLBACK_DOWNLOAD_PATH to PRIORITY_DOWNLOAD_PATH |
|||
Add test for incorrect consensus logic |
|||
Correct consensus logic in ContextualCheckInputs |
|||
Add comments |
|||
Update Debian copyright list |
|||
Specify ECDSA constant sizes as constants |
|||
Remove redundant `= 0` initialisations |
|||
Ensure that ECDSA constant sizes are correctly-sized |
|||
Add test for -mempooltxinputlimit |
|||
Hold an ECCVerifyHandle in zcash-gtest |
|||
Additional testing of -mempooltxinputlimit |
|||
Fix comment |
|||
Use sendfrom for both t-addr calls |
|||
make-release.py: Versioning changes for 1.0.10. |
|||
make-release.py: Updated manpages for 1.0.10. |
|||
|
|||
Kevin Pan (1): |
|||
"getblocktemplate" could work without wallet |
|||
|
|||
Pieter Wuille (2): |
|||
Update key.cpp to new secp256k1 API |
|||
Switch to libsecp256k1-based validation for ECDSA |
|||
|
|||
Simon Liu (5): |
|||
Fix intermediate vpub_new leakage in multi joinsplit tx (#1360) |
|||
Add option 'mempooltxinputlimit' so the mempool can reject a transaction based on the number of transparent inputs. |
|||
Check mempooltxinputlimit when creating a transaction to avoid local mempool rejection. |
|||
Partial revert & fix for commit 9e84b5a ; code block in wrong location. |
|||
Fix #b1eb4f2 so test checks sendfrom as originally intended. |
|||
|
|||
Wladimir J. van der Laan (2): |
|||
Use real number of cores for default -par, ignore virtual cores |
|||
Remove ChainParams::DefaultMinerThreads |
|||
|
|||
kozyilmaz (3): |
|||
[macOS] system linker does not support “--version” option but only “-v” |
|||
option to disable building libraries (zcutil/build.sh) |
|||
support per platform filename and hash setting for dependencies |
|||
|
@ -0,0 +1,44 @@ |
|||
Changelog |
|||
========= |
|||
|
|||
Ariel Gabizon (2): |
|||
make-release.py: Versioning changes for 1.0.11-rc1. |
|||
make-release.py: Updated manpages for 1.0.11-rc1. |
|||
|
|||
Daira Hopwood (7): |
|||
Clean up imports to be pyflakes-checkable. fixes #2450 |
|||
For unused variables reported by pyflakes, either remove the variable, suppress the warning, or fix a bug (if the wrong variable was used). refs #2450 |
|||
Cosmetics (trailing whitespace, comment conventions, etc.) |
|||
Alert 1004 (version 1.0.10 only) |
|||
Remove UPnP support. fixes #2500 |
|||
Change wording in Security Warnings section of README.md. |
|||
Document our criteria for adding CI workers. closes #2499 |
|||
|
|||
Jack Grigg (15): |
|||
Pull in temporary release notes during the release process |
|||
Ansible playbook for installing Zcash dependencies and Buildbot worker |
|||
Variable overrides for Debian, Ubuntu and Fedora |
|||
Variable overrides for FreeBSD |
|||
Simplify Python installation, inform user if they need to manually configure |
|||
Add test for issue #2444 |
|||
Add Buildbot worker setup to Ansible playbook |
|||
Add steps for setting up a latent worker on Amazon EC2 |
|||
Add pyblake2 to required Python modules |
|||
Remove Buildbot version from host file |
|||
Add a separate Buildbot host info template for EC2 |
|||
Add pyflakes to required Python modules |
|||
Add block download progress to metrics UI |
|||
Correct and extend EstimateNetHeightInner tests |
|||
Improve network height estimation |
|||
|
|||
Simon Liu (3): |
|||
Closes #2446 by adding generated field to listunspent. |
|||
Fixes #2519. When sending from a zaddr, minconf cannot be zero. |
|||
Fixes #2480. Null entry in map was dereferenced leading to a segfault. |
|||
|
|||
Wladimir J. van der Laan (1): |
|||
rpc: Add WWW-Authenticate header to 401 response |
|||
|
|||
practicalswift (1): |
|||
Net: Fix resource leak in ReadBinaryFile(...) |
|||
|
@ -0,0 +1,47 @@ |
|||
Changelog |
|||
========= |
|||
|
|||
Ariel Gabizon (3): |
|||
make-release.py: Versioning changes for 1.0.11-rc1. |
|||
make-release.py: Updated manpages for 1.0.11-rc1. |
|||
make-release.py: Updated release notes and changelog for 1.0.11-rc1. |
|||
|
|||
Daira Hopwood (7): |
|||
Clean up imports to be pyflakes-checkable. fixes #2450 |
|||
For unused variables reported by pyflakes, either remove the variable, suppress the warning, or fix a bug (if the wrong variable was used). refs #2450 |
|||
Cosmetics (trailing whitespace, comment conventions, etc.) |
|||
Alert 1004 (version 1.0.10 only) |
|||
Remove UPnP support. fixes #2500 |
|||
Change wording in Security Warnings section of README.md. |
|||
Document our criteria for adding CI workers. closes #2499 |
|||
|
|||
Jack Grigg (17): |
|||
Pull in temporary release notes during the release process |
|||
Ansible playbook for installing Zcash dependencies and Buildbot worker |
|||
Variable overrides for Debian, Ubuntu and Fedora |
|||
Variable overrides for FreeBSD |
|||
Simplify Python installation, inform user if they need to manually configure |
|||
Add test for issue #2444 |
|||
Add Buildbot worker setup to Ansible playbook |
|||
Add steps for setting up a latent worker on Amazon EC2 |
|||
Add pyblake2 to required Python modules |
|||
Remove Buildbot version from host file |
|||
Add a separate Buildbot host info template for EC2 |
|||
Add pyflakes to required Python modules |
|||
Add block download progress to metrics UI |
|||
Correct and extend EstimateNetHeightInner tests |
|||
Improve network height estimation |
|||
make-release.py: Versioning changes for 1.0.11. |
|||
make-release.py: Updated manpages for 1.0.11. |
|||
|
|||
Simon Liu (3): |
|||
Closes #2446 by adding generated field to listunspent. |
|||
Fixes #2519. When sending from a zaddr, minconf cannot be zero. |
|||
Fixes #2480. Null entry in map was dereferenced leading to a segfault. |
|||
|
|||
Wladimir J. van der Laan (1): |
|||
rpc: Add WWW-Authenticate header to 401 response |
|||
|
|||
practicalswift (1): |
|||
Net: Fix resource leak in ReadBinaryFile(...) |
|||
|
@ -0,0 +1,57 @@ |
|||
Changelog |
|||
========= |
|||
|
|||
Ariel (1): |
|||
add examples to z_getoperationresult |
|||
|
|||
Ariel Gabizon (1): |
|||
add load-wallet benchmark |
|||
|
|||
Bjorn Hjortsberg (2): |
|||
Do not warn on built in declaration mismatch |
|||
Remove deprecated exception specification |
|||
|
|||
Jack Grigg (20): |
|||
ci-workers: Enable pipelining, and use root to set admin and host details |
|||
Variable overrides for Arch Linux |
|||
Rationalize currency unit to "ZEC" |
|||
ci-workers: Fail if Python is not version 2.7 |
|||
ci-workers: Variable overrides and process tweaks for CentOS 7 |
|||
Add build progress to the release script if progressbar module is available |
|||
Add hotfix support to release script |
|||
Document the hotfix release process |
|||
Enforce sequential hotfix versioning |
|||
Benchmark time to call sendtoaddress with many UTXOs |
|||
Fix bug in benchmark data generation script |
|||
Adjust instructions for UTXO dataset creation |
|||
Add GitHub release notes to release process |
|||
Clarify branching and force-building operations in hotfix process |
|||
Update user guide translations as part of release process |
|||
make-release.py: Send stderr to stdout |
|||
List dependencies for release script in release process doc |
|||
Additional test cases for importprivkey RPC test |
|||
make-release.py: Versioning changes for 1.0.12-rc1. |
|||
make-release.py: Updated manpages for 1.0.12-rc1. |
|||
|
|||
Jason Davies (1): |
|||
Fix deprecation policy comment. |
|||
|
|||
Nathan Wilcox (5): |
|||
key_import_export rpc-test: verify that UTXO view co-evolves for nodes sharing a key. |
|||
Add a new rpc-test-specified requirement: `importprivkey` outputs the associated address. (Test fails.) |
|||
[tests pass] Output address on new key import. |
|||
Add a new requirement that `importprivkey` API is idempotent. |
|||
[tests pass] Ensure `importprivkey` outputs the address in case key is already imported. |
|||
|
|||
Ross Nicoll (1): |
|||
Rationalize currency unit to "BTC" |
|||
|
|||
Simon Liu (3): |
|||
Closes #2583. Exclude watch-only utxos from z_sendmany coin selection. |
|||
Set up a clean chain. Delete redundant method wait_until_miner_sees() via use of sync_all(). |
|||
Implement RPC shield_coinbase #2448. |
|||
|
|||
kpcyrd (2): |
|||
Fetch params from ipfs if possible |
|||
Prefer wget over ipfs |
|||
|
@ -0,0 +1,65 @@ |
|||
Changelog |
|||
========= |
|||
|
|||
Ariel (1): |
|||
add examples to z_getoperationresult |
|||
|
|||
Ariel Gabizon (1): |
|||
add load-wallet benchmark |
|||
|
|||
Bjorn Hjortsberg (2): |
|||
Do not warn on built in declaration mismatch |
|||
Remove deprecated exception specification |
|||
|
|||
Jack Grigg (26): |
|||
ci-workers: Enable pipelining, and use root to set admin and host details |
|||
Variable overrides for Arch Linux |
|||
Rationalize currency unit to "ZEC" |
|||
ci-workers: Fail if Python is not version 2.7 |
|||
ci-workers: Variable overrides and process tweaks for CentOS 7 |
|||
Add build progress to the release script if progressbar module is available |
|||
Add hotfix support to release script |
|||
Document the hotfix release process |
|||
Enforce sequential hotfix versioning |
|||
Benchmark time to call sendtoaddress with many UTXOs |
|||
Fix bug in benchmark data generation script |
|||
Adjust instructions for UTXO dataset creation |
|||
Add GitHub release notes to release process |
|||
Clarify branching and force-building operations in hotfix process |
|||
Update user guide translations as part of release process |
|||
make-release.py: Send stderr to stdout |
|||
List dependencies for release script in release process doc |
|||
Additional test cases for importprivkey RPC test |
|||
make-release.py: Versioning changes for 1.0.12-rc1. |
|||
make-release.py: Updated manpages for 1.0.12-rc1. |
|||
make-release.py: Updated release notes and changelog for 1.0.12-rc1. |
|||
Fix pyflakes warnings in RPC tests |
|||
Individualise performance-measurements.sh errors for debugging |
|||
Fix incorrect failure in memory benchmark |
|||
make-release.py: Versioning changes for 1.0.12. |
|||
make-release.py: Updated manpages for 1.0.12. |
|||
|
|||
Jason Davies (1): |
|||
Fix deprecation policy comment. |
|||
|
|||
Nathan Wilcox (5): |
|||
key_import_export rpc-test: verify that UTXO view co-evolves for nodes sharing a key. |
|||
Add a new rpc-test-specified requirement: `importprivkey` outputs the associated address. (Test fails.) |
|||
[tests pass] Output address on new key import. |
|||
Add a new requirement that `importprivkey` API is idempotent. |
|||
[tests pass] Ensure `importprivkey` outputs the address in case key is already imported. |
|||
|
|||
Ross Nicoll (1): |
|||
Rationalize currency unit to "BTC" |
|||
|
|||
Simon Liu (5): |
|||
Closes #2583. Exclude watch-only utxos from z_sendmany coin selection. |
|||
Set up a clean chain. Delete redundant method wait_until_miner_sees() via use of sync_all(). |
|||
Implement RPC shield_coinbase #2448. |
|||
Update which lock to synchronize on when calling GetBestAnchor(). |
|||
Closes #2637. Make z_shieldcoinbase an experimental feature where it can be enabled with: zcashd -experimentalfeatures -zshieldcoinbase. |
|||
|
|||
kpcyrd (2): |
|||
Fetch params from ipfs if possible |
|||
Prefer wget over ipfs |
|||
|
@ -0,0 +1,88 @@ |
|||
Changelog |
|||
========= |
|||
|
|||
Ariel Gabizon (1): |
|||
boost::format -> tinyformat |
|||
|
|||
Bruno Arueira (1): |
|||
Removes out bitcoin mention in favor for zcash |
|||
|
|||
Cory Fields (1): |
|||
httpserver: explicitly detach worker threads |
|||
|
|||
Duke Leto (1): |
|||
Update performance-measurements.sh |
|||
|
|||
Jack Grigg (37): |
|||
Squashed 'src/snark/' content from commit 9ada3f8 |
|||
Add libsnark compile flag to not copy DEPINST to PREFIX |
|||
Add Ansible playbook for grind workers |
|||
Add connections in BIP65 and BIP66 tests to the test manager |
|||
Add benchmark for listunspent |
|||
[Test] MiniNode: Implement JSDescription parsing |
|||
[Test] MiniNode: Implement v2 CTransaction parsing |
|||
[Test] MiniNode: Implement Zcash block parsing |
|||
[Test] MiniNode: Update protocol version and network magics |
|||
[Test] MiniNode: Use Zcash PoW |
|||
[Test] MiniNode: Fix coinbase creation |
|||
[Test] MiniNode: Coerce OP_PUSHDATA bytearrays to bytes |
|||
[Test] MiniNode: Implement Zcash coinbase |
|||
Fix BIP65 and BIP66 tests |
|||
Un-indent RPC test output in test runner |
|||
Replace full-test-suite.sh with a new test suite driver script |
|||
Move ensure-no-dot-so-in-depends.py into full_test_suite.py |
|||
Move check-security-hardening.sh into full_test_suite.py |
|||
Add memory benchmark for validatelargetx |
|||
Migrate libsnark test code to Google Test |
|||
Remove test code corresponding to removed code |
|||
Add alt_bn128 to QAP and Merkle tree gadget tests |
|||
Update libsnark LDLIBS |
|||
Add "make check" to libsnark that runs the Google Tests |
|||
Add "make libsnark-tests" that runs libsnark's "make check" |
|||
Changes to get test_r1cs_ppzksnark passing |
|||
Add bitcoin-util-test.py to full_test_suite.py |
|||
Add stdout notice if any stage fails |
|||
Add libsnark to "make clean" |
|||
Ensure that libsnark is built first, so its headers are available |
|||
Remove OpenSSL libraries from libsnark LDLIBS |
|||
Add libsnark tests to full_test_suite.py |
|||
Add --list-stages argument to full_test_suite.py |
|||
Fix NPE in rpc_wallet_tests |
|||
make-release.py: Versioning changes for 1.0.13-rc1. |
|||
make-release.py: Updated manpages for 1.0.13-rc1. |
|||
Change auto-senescence cycle to 16 weeks |
|||
|
|||
Jason Davies (1): |
|||
Replace "bitcoin" with "Zcash". |
|||
|
|||
Jay Graber (1): |
|||
s/zcash/Zcash |
|||
|
|||
Jonathan "Duke" Leto (1): |
|||
Fix bug where performance-measurements.sh fails hards when given no args |
|||
|
|||
João Barbosa (1): |
|||
Improve shutdown process |
|||
|
|||
Sean Bowe (5): |
|||
Remove libsnark from depends system and integrate it into build system. |
|||
Remove crusty old "loadVerifyingKey"/"loadProvingKey" APIs and associated invariants. |
|||
Refactor proof generation function. |
|||
Add streaming prover. |
|||
Integrate low memory prover. |
|||
|
|||
Simon Liu (7): |
|||
Replace 'bitcoin address' with 'zcash address'. |
|||
Closes #2639. z_shieldcoinbase is now supported, no longer experimental. |
|||
Closes #2263 fixing broken pipe error. |
|||
Closes #2576. Update link to security info on z.cash website. |
|||
Closes #2639. Adds optional limit parameter with a default value of 50. |
|||
Fix an issue where qa test wallet_shieldcoinbase could hang. |
|||
Add payment disclosure as experimental feature. |
|||
|
|||
Wladimir J. van der Laan (4): |
|||
Make HTTP server shutdown more graceful |
|||
http: Wait for worker threads to exit |
|||
http: Force-exit event loop after predefined time |
|||
http: speed up shutdown |
|||
|
@ -0,0 +1,95 @@ |
|||
Changelog |
|||
========= |
|||
|
|||
Ariel Gabizon (1): |
|||
boost::format -> tinyformat |
|||
|
|||
Bruno Arueira (1): |
|||
Removes out bitcoin mention in favor for zcash |
|||
|
|||
Cory Fields (1): |
|||
httpserver: explicitly detach worker threads |
|||
|
|||
Duke Leto (1): |
|||
Update performance-measurements.sh |
|||
|
|||
Jack Grigg (44): |
|||
Squashed 'src/snark/' content from commit 9ada3f8 |
|||
Add libsnark compile flag to not copy DEPINST to PREFIX |
|||
Add Ansible playbook for grind workers |
|||
Add connections in BIP65 and BIP66 tests to the test manager |
|||
Add benchmark for listunspent |
|||
[Test] MiniNode: Implement JSDescription parsing |
|||
[Test] MiniNode: Implement v2 CTransaction parsing |
|||
[Test] MiniNode: Implement Zcash block parsing |
|||
[Test] MiniNode: Update protocol version and network magics |
|||
[Test] MiniNode: Use Zcash PoW |
|||
[Test] MiniNode: Fix coinbase creation |
|||
[Test] MiniNode: Coerce OP_PUSHDATA bytearrays to bytes |
|||
[Test] MiniNode: Implement Zcash coinbase |
|||
Fix BIP65 and BIP66 tests |
|||
Un-indent RPC test output in test runner |
|||
Replace full-test-suite.sh with a new test suite driver script |
|||
Move ensure-no-dot-so-in-depends.py into full_test_suite.py |
|||
Move check-security-hardening.sh into full_test_suite.py |
|||
Add memory benchmark for validatelargetx |
|||
Migrate libsnark test code to Google Test |
|||
Remove test code corresponding to removed code |
|||
Add alt_bn128 to QAP and Merkle tree gadget tests |
|||
Update libsnark LDLIBS |
|||
Add "make check" to libsnark that runs the Google Tests |
|||
Add "make libsnark-tests" that runs libsnark's "make check" |
|||
Changes to get test_r1cs_ppzksnark passing |
|||
Add bitcoin-util-test.py to full_test_suite.py |
|||
Add stdout notice if any stage fails |
|||
Add libsnark to "make clean" |
|||
Ensure that libsnark is built first, so its headers are available |
|||
Remove OpenSSL libraries from libsnark LDLIBS |
|||
Add libsnark tests to full_test_suite.py |
|||
Add --list-stages argument to full_test_suite.py |
|||
Fix NPE in rpc_wallet_tests |
|||
make-release.py: Versioning changes for 1.0.13-rc1. |
|||
make-release.py: Updated manpages for 1.0.13-rc1. |
|||
make-release.py: Updated release notes and changelog for 1.0.13-rc1. |
|||
Change auto-senescence cycle to 16 weeks |
|||
Move libsnark from DIST_SUBDIRS into EXTRA_DIST |
|||
Pass correct dependencies path to libsnark from both Gitian and build.sh |
|||
Mark libsnark includes as library includes |
|||
Add the tar-pax option to automake |
|||
make-release.py: Versioning changes for 1.0.13-rc2. |
|||
make-release.py: Updated manpages for 1.0.13-rc2. |
|||
|
|||
Jason Davies (1): |
|||
Replace "bitcoin" with "Zcash". |
|||
|
|||
Jay Graber (1): |
|||
s/zcash/Zcash |
|||
|
|||
Jonathan "Duke" Leto (1): |
|||
Fix bug where performance-measurements.sh fails hards when given no args |
|||
|
|||
João Barbosa (1): |
|||
Improve shutdown process |
|||
|
|||
Sean Bowe (5): |
|||
Remove libsnark from depends system and integrate it into build system. |
|||
Remove crusty old "loadVerifyingKey"/"loadProvingKey" APIs and associated invariants. |
|||
Refactor proof generation function. |
|||
Add streaming prover. |
|||
Integrate low memory prover. |
|||
|
|||
Simon Liu (7): |
|||
Replace 'bitcoin address' with 'zcash address'. |
|||
Closes #2639. z_shieldcoinbase is now supported, no longer experimental. |
|||
Closes #2263 fixing broken pipe error. |
|||
Closes #2576. Update link to security info on z.cash website. |
|||
Closes #2639. Adds optional limit parameter with a default value of 50. |
|||
Fix an issue where qa test wallet_shieldcoinbase could hang. |
|||
Add payment disclosure as experimental feature. |
|||
|
|||
Wladimir J. van der Laan (4): |
|||
Make HTTP server shutdown more graceful |
|||
http: Wait for worker threads to exit |
|||
http: Force-exit event loop after predefined time |
|||
http: speed up shutdown |
|||
|
@ -0,0 +1,98 @@ |
|||
Changelog |
|||
========= |
|||
|
|||
Ariel Gabizon (1): |
|||
boost::format -> tinyformat |
|||
|
|||
Bruno Arueira (1): |
|||
Removes out bitcoin mention in favor for zcash |
|||
|
|||
Cory Fields (1): |
|||
httpserver: explicitly detach worker threads |
|||
|
|||
Duke Leto (1): |
|||
Update performance-measurements.sh |
|||
|
|||
Jack Grigg (47): |
|||
Squashed 'src/snark/' content from commit 9ada3f8 |
|||
Add libsnark compile flag to not copy DEPINST to PREFIX |
|||
Add Ansible playbook for grind workers |
|||
Add connections in BIP65 and BIP66 tests to the test manager |
|||
Add benchmark for listunspent |
|||
[Test] MiniNode: Implement JSDescription parsing |
|||
[Test] MiniNode: Implement v2 CTransaction parsing |
|||
[Test] MiniNode: Implement Zcash block parsing |
|||
[Test] MiniNode: Update protocol version and network magics |
|||
[Test] MiniNode: Use Zcash PoW |
|||
[Test] MiniNode: Fix coinbase creation |
|||
[Test] MiniNode: Coerce OP_PUSHDATA bytearrays to bytes |
|||
[Test] MiniNode: Implement Zcash coinbase |
|||
Fix BIP65 and BIP66 tests |
|||
Un-indent RPC test output in test runner |
|||
Replace full-test-suite.sh with a new test suite driver script |
|||
Move ensure-no-dot-so-in-depends.py into full_test_suite.py |
|||
Move check-security-hardening.sh into full_test_suite.py |
|||
Add memory benchmark for validatelargetx |
|||
Migrate libsnark test code to Google Test |
|||
Remove test code corresponding to removed code |
|||
Add alt_bn128 to QAP and Merkle tree gadget tests |
|||
Update libsnark LDLIBS |
|||
Add "make check" to libsnark that runs the Google Tests |
|||
Add "make libsnark-tests" that runs libsnark's "make check" |
|||
Changes to get test_r1cs_ppzksnark passing |
|||
Add bitcoin-util-test.py to full_test_suite.py |
|||
Add stdout notice if any stage fails |
|||
Add libsnark to "make clean" |
|||
Ensure that libsnark is built first, so its headers are available |
|||
Remove OpenSSL libraries from libsnark LDLIBS |
|||
Add libsnark tests to full_test_suite.py |
|||
Add --list-stages argument to full_test_suite.py |
|||
Fix NPE in rpc_wallet_tests |
|||
make-release.py: Versioning changes for 1.0.13-rc1. |
|||
make-release.py: Updated manpages for 1.0.13-rc1. |
|||
make-release.py: Updated release notes and changelog for 1.0.13-rc1. |
|||
Change auto-senescence cycle to 16 weeks |
|||
Move libsnark from DIST_SUBDIRS into EXTRA_DIST |
|||
Pass correct dependencies path to libsnark from both Gitian and build.sh |
|||
Mark libsnark includes as library includes |
|||
Add the tar-pax option to automake |
|||
make-release.py: Versioning changes for 1.0.13-rc2. |
|||
make-release.py: Updated manpages for 1.0.13-rc2. |
|||
make-release.py: Updated release notes and changelog for 1.0.13-rc2. |
|||
make-release.py: Versioning changes for 1.0.13. |
|||
make-release.py: Updated manpages for 1.0.13. |
|||
|
|||
Jason Davies (1): |
|||
Replace "bitcoin" with "Zcash". |
|||
|
|||
Jay Graber (1): |
|||
s/zcash/Zcash |
|||
|
|||
Jonathan "Duke" Leto (1): |
|||
Fix bug where performance-measurements.sh fails hards when given no args |
|||
|
|||
João Barbosa (1): |
|||
Improve shutdown process |
|||
|
|||
Sean Bowe (5): |
|||
Remove libsnark from depends system and integrate it into build system. |
|||
Remove crusty old "loadVerifyingKey"/"loadProvingKey" APIs and associated invariants. |
|||
Refactor proof generation function. |
|||
Add streaming prover. |
|||
Integrate low memory prover. |
|||
|
|||
Simon Liu (7): |
|||
Replace 'bitcoin address' with 'zcash address'. |
|||
Closes #2639. z_shieldcoinbase is now supported, no longer experimental. |
|||
Closes #2263 fixing broken pipe error. |
|||
Closes #2576. Update link to security info on z.cash website. |
|||
Closes #2639. Adds optional limit parameter with a default value of 50. |
|||
Fix an issue where qa test wallet_shieldcoinbase could hang. |
|||
Add payment disclosure as experimental feature. |
|||
|
|||
Wladimir J. van der Laan (4): |
|||
Make HTTP server shutdown more graceful |
|||
http: Wait for worker threads to exit |
|||
http: Force-exit event loop after predefined time |
|||
http: speed up shutdown |
|||
|
@ -0,0 +1,156 @@ |
|||
Notable changes |
|||
=============== |
|||
|
|||
Incoming viewing keys |
|||
--------------------- |
|||
|
|||
Support for incoming viewing keys, as described in |
|||
[the Zcash protocol spec](https://github.com/zcash/zips/blob/master/protocol/protocol.pdf), |
|||
has been added to the wallet. |
|||
|
|||
Use the `z_exportviewingkey` RPC method to obtain the incoming viewing key for a |
|||
z-address in a node's wallet. For Sprout z-addresses, these always begin with |
|||
"ZiVK" (or "ZiVt" for testnet z-addresses). Use `z_importviewingkey` to import |
|||
these into another node. |
|||
|
|||
A node that possesses an incoming viewing key for a z-address can view all past |
|||
transactions received by that address, as well as all future transactions sent |
|||
to it, by using `z_listreceivedbyaddress`. They cannot spend any funds from the |
|||
address. This is similar to the behaviour of "watch-only" t-addresses. |
|||
|
|||
`z_gettotalbalance` now has an additional boolean parameter for including the |
|||
balance of "watch-only" addresses (both transparent and shielded), which is set |
|||
to `false` by default. `z_getbalance` has also been updated to work with |
|||
watch-only addresses. |
|||
|
|||
- **Caution:** for z-addresses, these balances will **not** be accurate if any |
|||
funds have been sent from the address. This is because incoming viewing keys |
|||
cannot detect spends, and so the "balance" is just the sum of all received |
|||
notes, including ones that have been spent. Some future use-cases for incoming |
|||
viewing keys will include synchronization data to keep their balances accurate |
|||
(e.g. [#2542](https://github.com/zcash/zcash/issues/2542)). |
|||
|
|||
Changelog |
|||
========= |
|||
|
|||
Anthony Towns (1): |
|||
Add configure check for -latomic |
|||
|
|||
Cory Fields (12): |
|||
c++11: don't throw from the reverselock destructor |
|||
c++11: CAccountingEntry must be defined before use in a list |
|||
c++11: fix libbdb build against libc++ in c++11 mode |
|||
depends: use c++11 |
|||
depends: bump OSX toolchain |
|||
build: Split hardening/fPIE options out |
|||
build: define base filenames for use elsewhere in the buildsystem |
|||
build: quiet annoying warnings without adding new ones |
|||
build: fix Windows builds without pkg-config |
|||
build: force a c++ standard to be specified |
|||
build: warn about variable length arrays |
|||
build: add --enable-werror option |
|||
|
|||
Jack Grigg (36): |
|||
Squashed 'src/secp256k1/' changes from 84973d3..6ad5cdb |
|||
Use g-prefixed coreutils commands if they are available |
|||
Replace hard-coded defaults for HOST and BUILD with config.guess |
|||
Remove manual -std=c++11 flag |
|||
Replace "install -D" with "mkdir -p && install" |
|||
Check if OpenMP is available before using it |
|||
[libsnark] Use POSIX-compliant ar arguments |
|||
Include endian-ness compatibility layer in Equihash implementation |
|||
build: Split hardening/fPIE options out in Zcash-specific binaries |
|||
Change --enable-werror to apply to all warnings, use it in build.sh |
|||
Move Zcash flags into configure.ac |
|||
ViewingKey -> ReceivingKey per zcash/zips#117 |
|||
Implement viewing key storage in the keystore |
|||
Factor out common logic from CZCPaymentAddress and CZCSpendingKey |
|||
Track net value entering and exiting the Sprout circuit |
|||
Add Sprout value pool to getblock and getblockchaininfo |
|||
Apply -fstack-protector-all to libsnark |
|||
Add Rust and Proton to configure options printout |
|||
Clarify operator precedence in serialization of nSproutValue |
|||
Remove nSproutValue TODO from CDiskBlockIndex |
|||
Add Base58 encoding of viewing keys |
|||
Implement viewing key storage in the wallet |
|||
Add RPC methods for exporting/importing viewing keys |
|||
Update wallet logic to account for viewing keys |
|||
Add watch-only support to Zcash RPC methods |
|||
Modify zcrawkeygen RPC method to set "zcviewingkey" to the viewing key |
|||
Cleanup: Add braces for clarity |
|||
Add cautions to z_getbalance and z_gettotalbalance help text about viewing keys |
|||
Add release notes for incoming viewing keys |
|||
Create release notes starting from the previous non-beta non-RC release |
|||
release-notes.py: Remove unnecessary parameter |
|||
Regenerate previous release notes to conform to new format |
|||
Exclude beta and RC release notes from author tallies |
|||
Fix pyflakes warnings in zkey_import_export RPC test |
|||
make-release.py: Versioning changes for 1.0.14-rc1. |
|||
make-release.py: Updated manpages for 1.0.14-rc1. |
|||
|
|||
Jay Graber (3): |
|||
Add cli and rpc examples for z_sendmany |
|||
Fix cli help result for z_shieldcoinbase |
|||
Add rpc test that exercises z_importkey |
|||
|
|||
Jonas Schnelli (1): |
|||
Add compile and link options echo to configure |
|||
|
|||
Luke Dashjr (4): |
|||
depends: Use curl for fetching on Linux |
|||
Travis: Use curl rather than wget for Mac SDK |
|||
Bugfix: depends/Travis: Use --location (follow redirects) and --fail [on HTTP error response] with curl |
|||
Travis: Use Blue Box VMs for IPv6 loopback support |
|||
|
|||
MarcoFalke (2): |
|||
Fix url in .travis.yml |
|||
[depends] builders: No need to set -L and --location for curl |
|||
|
|||
Per Grön (2): |
|||
Deduplicate test utility method wait_and_assert_operationid_status |
|||
Print result of RPC call in test only when PYTHON_DEBUG is set |
|||
|
|||
René Nyffenegger (1): |
|||
Use AC_ARG_VAR to set ARFLAGS. |
|||
|
|||
Simon Liu (5): |
|||
RPC dumpwallet and z_exportwallet updated to no longer allow overwriting an existing file. |
|||
Add documentation for shielding coinbase utxos. |
|||
Add documentation for payment disclosure. |
|||
Closes #2759. Fixes broken pipe error with QA test wallet.py. |
|||
Closes #2746. Payment disclosure blobs now use 'zpd:' prefix. |
|||
|
|||
Wladimir J. van der Laan (6): |
|||
build: Enable C++11 build, require C++11 compiler |
|||
build: update ax_cxx_compile_stdcxx to serial 4 |
|||
test: Remove java comparison tool |
|||
build: Remove check for `openssl/ec.h` |
|||
devtools: Check for high-entropy ASLR in 64-bit PE executables |
|||
build: supply `-Wl,--high-entropy-va` |
|||
|
|||
daniel (1): |
|||
add powerpc build support for openssl lib |
|||
|
|||
fanquake (3): |
|||
[build-aux] Update Boost & check macros to latest serials |
|||
[depends] Add -stdlib=libc++ to darwin CXX flags |
|||
[depends] Set OSX_MIN_VERSION to 10.8 |
|||
|
|||
kozyilmaz (1): |
|||
empty spaces in PATH variable cause build failure |
|||
|
|||
syd (13): |
|||
Upgrade googletest to 1.8.0 |
|||
Get the sec-hard tests to run correctly. |
|||
Update libsodium from 1.0.11 to 1.0.15 |
|||
Remove Boost conditional compilation. |
|||
Update to address @daira comments wrt fixing configure.ac |
|||
Get rid of consensus.fPowAllowMinDifficultyBlocks. |
|||
Don't compile libgtest.a when building libsnark. |
|||
Add gtests to .gitignore |
|||
Get rid of fp3 from libsnark, it is not used. |
|||
InitGoogleMock instead of InitGoogleTest per CR |
|||
Get rid of underscore prefixes for include guards. |
|||
Rename bash completion files so that they refer to zcash and not bitcoin. |
|||
Fix libsnark test failure. |
|||
|
@ -0,0 +1,160 @@ |
|||
Notable changes |
|||
=============== |
|||
|
|||
Incoming viewing keys |
|||
--------------------- |
|||
|
|||
Support for incoming viewing keys, as described in |
|||
[the Zcash protocol spec](https://github.com/zcash/zips/blob/master/protocol/protocol.pdf), |
|||
has been added to the wallet. |
|||
|
|||
Use the `z_exportviewingkey` RPC method to obtain the incoming viewing key for a |
|||
z-address in a node's wallet. For Sprout z-addresses, these always begin with |
|||
"ZiVK" (or "ZiVt" for testnet z-addresses). Use `z_importviewingkey` to import |
|||
these into another node. |
|||
|
|||
A node that possesses an incoming viewing key for a z-address can view all past |
|||
transactions received by that address, as well as all future transactions sent |
|||
to it, by using `z_listreceivedbyaddress`. They cannot spend any funds from the |
|||
address. This is similar to the behaviour of "watch-only" t-addresses. |
|||
|
|||
`z_gettotalbalance` now has an additional boolean parameter for including the |
|||
balance of "watch-only" addresses (both transparent and shielded), which is set |
|||
to `false` by default. `z_getbalance` has also been updated to work with |
|||
watch-only addresses. |
|||
|
|||
- **Caution:** for z-addresses, these balances will **not** be accurate if any |
|||
funds have been sent from the address. This is because incoming viewing keys |
|||
cannot detect spends, and so the "balance" is just the sum of all received |
|||
notes, including ones that have been spent. Some future use-cases for incoming |
|||
viewing keys will include synchronization data to keep their balances accurate |
|||
(e.g. [#2542](https://github.com/zcash/zcash/issues/2542)). |
|||
|
|||
Changelog |
|||
========= |
|||
|
|||
Anthony Towns (1): |
|||
Add configure check for -latomic |
|||
|
|||
Cory Fields (12): |
|||
c++11: don't throw from the reverselock destructor |
|||
c++11: CAccountingEntry must be defined before use in a list |
|||
c++11: fix libbdb build against libc++ in c++11 mode |
|||
depends: use c++11 |
|||
depends: bump OSX toolchain |
|||
build: Split hardening/fPIE options out |
|||
build: define base filenames for use elsewhere in the buildsystem |
|||
build: quiet annoying warnings without adding new ones |
|||
build: fix Windows builds without pkg-config |
|||
build: force a c++ standard to be specified |
|||
build: warn about variable length arrays |
|||
build: add --enable-werror option |
|||
|
|||
Jack Grigg (40): |
|||
Squashed 'src/secp256k1/' changes from 84973d3..6ad5cdb |
|||
Use g-prefixed coreutils commands if they are available |
|||
Replace hard-coded defaults for HOST and BUILD with config.guess |
|||
Remove manual -std=c++11 flag |
|||
Replace "install -D" with "mkdir -p && install" |
|||
Check if OpenMP is available before using it |
|||
[libsnark] Use POSIX-compliant ar arguments |
|||
Include endian-ness compatibility layer in Equihash implementation |
|||
build: Split hardening/fPIE options out in Zcash-specific binaries |
|||
Change --enable-werror to apply to all warnings, use it in build.sh |
|||
Move Zcash flags into configure.ac |
|||
ViewingKey -> ReceivingKey per zcash/zips#117 |
|||
Implement viewing key storage in the keystore |
|||
Factor out common logic from CZCPaymentAddress and CZCSpendingKey |
|||
Track net value entering and exiting the Sprout circuit |
|||
Add Sprout value pool to getblock and getblockchaininfo |
|||
Apply -fstack-protector-all to libsnark |
|||
Add Rust and Proton to configure options printout |
|||
Clarify operator precedence in serialization of nSproutValue |
|||
Remove nSproutValue TODO from CDiskBlockIndex |
|||
Add Base58 encoding of viewing keys |
|||
Implement viewing key storage in the wallet |
|||
Add RPC methods for exporting/importing viewing keys |
|||
Update wallet logic to account for viewing keys |
|||
Add watch-only support to Zcash RPC methods |
|||
Modify zcrawkeygen RPC method to set "zcviewingkey" to the viewing key |
|||
Cleanup: Add braces for clarity |
|||
Add cautions to z_getbalance and z_gettotalbalance help text about viewing keys |
|||
Add release notes for incoming viewing keys |
|||
Create release notes starting from the previous non-beta non-RC release |
|||
release-notes.py: Remove unnecessary parameter |
|||
Regenerate previous release notes to conform to new format |
|||
Exclude beta and RC release notes from author tallies |
|||
Fix pyflakes warnings in zkey_import_export RPC test |
|||
make-release.py: Versioning changes for 1.0.14-rc1. |
|||
make-release.py: Updated manpages for 1.0.14-rc1. |
|||
make-release.py: Updated release notes and changelog for 1.0.14-rc1. |
|||
Update release process |
|||
make-release.py: Versioning changes for 1.0.14. |
|||
make-release.py: Updated manpages for 1.0.14. |
|||
|
|||
Jay Graber (3): |
|||
Add cli and rpc examples for z_sendmany |
|||
Fix cli help result for z_shieldcoinbase |
|||
Add rpc test that exercises z_importkey |
|||
|
|||
Jonas Schnelli (1): |
|||
Add compile and link options echo to configure |
|||
|
|||
Luke Dashjr (4): |
|||
depends: Use curl for fetching on Linux |
|||
Travis: Use curl rather than wget for Mac SDK |
|||
Bugfix: depends/Travis: Use --location (follow redirects) and --fail [on HTTP error response] with curl |
|||
Travis: Use Blue Box VMs for IPv6 loopback support |
|||
|
|||
MarcoFalke (2): |
|||
Fix url in .travis.yml |
|||
[depends] builders: No need to set -L and --location for curl |
|||
|
|||
Per Grön (2): |
|||
Deduplicate test utility method wait_and_assert_operationid_status |
|||
Print result of RPC call in test only when PYTHON_DEBUG is set |
|||
|
|||
René Nyffenegger (1): |
|||
Use AC_ARG_VAR to set ARFLAGS. |
|||
|
|||
Simon Liu (5): |
|||
RPC dumpwallet and z_exportwallet updated to no longer allow overwriting an existing file. |
|||
Add documentation for shielding coinbase utxos. |
|||
Add documentation for payment disclosure. |
|||
Closes #2759. Fixes broken pipe error with QA test wallet.py. |
|||
Closes #2746. Payment disclosure blobs now use 'zpd:' prefix. |
|||
|
|||
Wladimir J. van der Laan (6): |
|||
build: Enable C++11 build, require C++11 compiler |
|||
build: update ax_cxx_compile_stdcxx to serial 4 |
|||
test: Remove java comparison tool |
|||
build: Remove check for `openssl/ec.h` |
|||
devtools: Check for high-entropy ASLR in 64-bit PE executables |
|||
build: supply `-Wl,--high-entropy-va` |
|||
|
|||
daniel (1): |
|||
add powerpc build support for openssl lib |
|||
|
|||
fanquake (3): |
|||
[build-aux] Update Boost & check macros to latest serials |
|||
[depends] Add -stdlib=libc++ to darwin CXX flags |
|||
[depends] Set OSX_MIN_VERSION to 10.8 |
|||
|
|||
kozyilmaz (1): |
|||
empty spaces in PATH variable cause build failure |
|||
|
|||
syd (13): |
|||
Upgrade googletest to 1.8.0 |
|||
Get the sec-hard tests to run correctly. |
|||
Update libsodium from 1.0.11 to 1.0.15 |
|||
Remove Boost conditional compilation. |
|||
Update to address @daira comments wrt fixing configure.ac |
|||
Get rid of consensus.fPowAllowMinDifficultyBlocks. |
|||
Don't compile libgtest.a when building libsnark. |
|||
Add gtests to .gitignore |
|||
Get rid of fp3 from libsnark, it is not used. |
|||
InitGoogleMock instead of InitGoogleTest per CR |
|||
Get rid of underscore prefixes for include guards. |
|||
Rename bash completion files so that they refer to zcash and not bitcoin. |
|||
Fix libsnark test failure. |
|||
|
@ -0,0 +1,165 @@ |
|||
Notable changes |
|||
=============== |
|||
|
|||
UTXO and note merging |
|||
--------------------- |
|||
|
|||
In order to simplify the process of combining many small UTXOs and notes into a |
|||
few larger ones, a new RPC method `z_mergetoaddress` has been added. It merges |
|||
funds from t-addresses, z-addresses, or both, and sends them to a single |
|||
t-address or z-address. |
|||
|
|||
Unlike most other RPC methods, `z_mergetoaddress` operates over a particular |
|||
quantity of UTXOs and notes, instead of a particular amount of ZEC. By default, |
|||
it will merge 50 UTXOs and 10 notes at a time; these limits can be adjusted with |
|||
the parameters `transparent_limit` and `shielded_limit`. |
|||
|
|||
`z_mergetoaddress` also returns the number of UTXOs and notes remaining in the |
|||
given addresses, which can be used to automate the merging process (for example, |
|||
merging until the number of UTXOs falls below some value). |
|||
|
|||
UTXO memory accounting |
|||
---------------------- |
|||
|
|||
The default -dbcache has been changed in this release to 450MiB. Users can set -dbcache to a higher value (e.g. to keep the UTXO set more fully cached in memory). Users on low-memory systems (such as systems with 1GB or less) should consider specifying a lower value for this parameter. |
|||
|
|||
Additional information relating to running on low-memory systems can be found here: [reducing-memory-usage.md](https://github.com/zcash/zcash/blob/master/doc/reducing-memory-usage.md). |
|||
|
|||
Changelog |
|||
========= |
|||
|
|||
21E14 (1): |
|||
Remove obsolete reference to CValidationState from UpdateCoins. |
|||
|
|||
Alex Morcos (1): |
|||
Implement helper class for CTxMemPoolEntry constructor |
|||
|
|||
Ariel (2): |
|||
add blake2b writer |
|||
update SignatureHash according to Overwinter spec |
|||
|
|||
Ashley Holman (1): |
|||
TxMemPool: Change mapTx to a boost::multi_index_container |
|||
|
|||
Cory Fields (2): |
|||
chainparams: move CCheckpointData into chainparams.h |
|||
chainparams: don't use std namespace |
|||
|
|||
Daniel Kraft (1): |
|||
Clean up chainparams some more. |
|||
|
|||
Jack Grigg (38): |
|||
Scope the ECDSA constant sizes to CPubKey / CKey classes |
|||
Enable Bash completion for -exportdir |
|||
Check chainValueZat when checking value pool monitoring |
|||
Add missing namespace for boost::get |
|||
Add viewing key prefix to regtest parameters |
|||
zkey_import_export: Synchronize mempools before mining |
|||
Use JoinSplitTestingSetup for Boost sighash tests |
|||
Network upgrade activation mechanism |
|||
Allow changing network upgrade parameters on regtest |
|||
Test network upgrade logic |
|||
Adjust rewind logic to use the network upgrade mechanism |
|||
Add Overwinter to upgrade list |
|||
Add method for fetching the next activation height after a given block height |
|||
Use a boost::optional for nCachedBranchId |
|||
Change UI/log status message for block rewinding |
|||
Update quote from ZIP 200 |
|||
Update SignatureHash tests for transaction format changes |
|||
Implement roll-back limit for reorganisation |
|||
Add rollback limit to block index rewinding |
|||
Remove mempool transactions which commit to an unmineable branch ID |
|||
Remove P2WPKH and P2WSH from signing logic |
|||
Add consensus branch ID parameter to SignatureHash, remove SigVersion parameter |
|||
Cleanup: Wrap function arguments |
|||
Regenerate SignatureHash tests |
|||
Make number of inputs configurable in validatelargetx test |
|||
Use v3 transactions with caching for validatelargetx benchmark |
|||
Extend CWallet::GetFilteredNotes to enable filtering on a set of addresses |
|||
Add branch IDs for current and next block to getblockchaininfo |
|||
Check Equihash solution when loading block index |
|||
Implement z_mergetoaddress for combining UTXOs and notes |
|||
Gate z_mergetoaddress as an experimental feature |
|||
Add z_mergetoaddress to release notes |
|||
Check upgrade status in wallet_overwintertx RPC test |
|||
Document that consensus.chaintip != consensus.nextblock just before an upgrade |
|||
Regenerate sighash tests |
|||
wallet_mergetoaddress: Add additional syncs to prevent race conditions |
|||
make-release.py: Versioning changes for 1.0.15-rc1. |
|||
make-release.py: Updated manpages for 1.0.15-rc1. |
|||
|
|||
Jay Graber (8): |
|||
Add getdeprecationinfo rpc call to return current version and deprecation block height. |
|||
Make applicable only on mainnet |
|||
Add upgrades field to RPC call getblockchaininfo |
|||
Implement transaction expiry for Overwinter |
|||
Add -txexpirydelta cli option |
|||
Add mempool_tx_expiry.py test |
|||
Add expiry to z_mergetoaddress |
|||
Change rpc_tests to 21 |
|||
|
|||
Jonas Nick (1): |
|||
Reduce unnecessary hashing in signrawtransaction |
|||
|
|||
Jorge Timón (3): |
|||
Chainparams: Introduce CreateGenesisBlock() static function |
|||
Chainparams: CTestNetParams and CRegTestParams extend directly from CChainParams |
|||
Mempool: Use Consensus::CheckTxInputs direclty over main::CheckInputs |
|||
|
|||
Marius Kjærstad (1): |
|||
Changed http:// to https:// on some links |
|||
|
|||
Mark Friedenbach (1): |
|||
Explicitly set tx.nVersion for the genesis block and mining tests |
|||
|
|||
Matt Corallo (5): |
|||
Add failing test checking timelocked-txn removal during reorg |
|||
Fix removal of time-locked transactions during reorg |
|||
Fix comment in removeForReorg |
|||
Make indentation in ActivateBestChainStep readable |
|||
removeForReorg calls once-per-disconnect-> once-per-reorg |
|||
|
|||
Maxwell Gubler (1): |
|||
Fix syntax examples for z_importwallet and export |
|||
|
|||
Nicolas DORIER (1): |
|||
Unit test for sighash caching |
|||
|
|||
Pavel Vasin (1): |
|||
remove unused NOBLKS_VERSION_{START,END} constants |
|||
|
|||
Pieter Wuille (8): |
|||
Add rewind logic to deal with post-fork software updates |
|||
Support -checkmempool=N, which runs checks on average once every N transactions |
|||
Report non-mandatory script failures correctly |
|||
Refactor script validation to observe amounts |
|||
BIP143: Verification logic |
|||
BIP143: Signing logic |
|||
Precompute sighashes |
|||
Rename to PrecomputedTransactionData |
|||
|
|||
Simon Liu (11): |
|||
Fixes #2793. Backport commit f33afd3 to increase dbcache default. |
|||
Add documentation about dbcache. |
|||
Add note about dbcache to 1.0.15 release notes. |
|||
Remove redundant service flag NODE_GETUTXO meant for Bitcoin XT. |
|||
Implementation of Overwinter transaction format ZIP 202. |
|||
Add test to check malformed v1 transaction against Overwinter tx parser |
|||
Closes #2964. z_sendmany once again makes v1 tx for taddr to taddr. |
|||
Closes #2954 and #2959. Fixes Overwinter issues in sighash_tests. |
|||
Add field nProtocolVersion to struct NetworkUpgrade. |
|||
Overwinter peer management and network handshaking. |
|||
Add python qa test overwinter_peer_management. |
|||
|
|||
Suhas Daftuar (3): |
|||
Track coinbase spends in CTxMemPoolEntry |
|||
Don't call removeForReorg if DisconnectTip fails |
|||
Fix removeForReorg to use MedianTimePast |
|||
|
|||
jc (1): |
|||
read hashReserved from disk block index |
|||
|
|||
syd (2): |
|||
Fix libsnark dependency build. |
|||
Remove OSX and Windows files from Makefile + share directory. |
|||
|
@ -0,0 +1,209 @@ |
|||
Notable changes |
|||
=============== |
|||
|
|||
Overwinter network upgrade |
|||
-------------------------- |
|||
|
|||
The code preparations for the Overwinter network upgrade, as described in [ZIP |
|||
200](https://github.com/zcash/zips/blob/master/zip-0200.rst), [ZIP |
|||
201](https://github.com/zcash/zips/blob/master/zip-0201.rst), [ZIP |
|||
202](https://github.com/zcash/zips/blob/master/zip-0202.rst), [ZIP |
|||
203](https://github.com/zcash/zips/blob/master/zip-0203.rst), and [ZIP |
|||
143](https://github.com/zcash/zips/blob/master/zip-0143.rst) are |
|||
finished and included in this release. Overwinter will activate on testnet at |
|||
height 207500, and can also be activated at a specific height in regtest mode |
|||
by setting the config option `-nuparams=5ba81b19:HEIGHT`. |
|||
|
|||
However, because the Overwinter activation height is not yet specified for |
|||
mainnet, version 1.0.15 will behave similarly as other pre-Overwinter releases |
|||
even after a future activation of Overwinter on the network. Upgrading from |
|||
1.0.15 will be required in order to follow the Overwinter network upgrade on |
|||
mainnet. |
|||
|
|||
Overwinter transaction format |
|||
----------------------------- |
|||
|
|||
Once Overwinter has activated, transactions must use the new v3 format |
|||
(including coinbase transactions). All RPC methods that create new transactions |
|||
(such as `createrawtransaction` and `getblocktemplate`) will create v3 |
|||
transactions once the Overwinter activation height has been reached. |
|||
|
|||
Overwinter transaction expiry |
|||
----------------------------- |
|||
|
|||
Overwinter transactions created by `zcashd` will also have a default expiry |
|||
height set (the block height after which the transaction becomes invalid) of 20 |
|||
blocks after the height of the next block. This can be configured with the |
|||
config option `-txexpirydelta`. |
|||
|
|||
UTXO and note merging |
|||
--------------------- |
|||
|
|||
In order to simplify the process of combining many small UTXOs and notes into a |
|||
few larger ones, a new RPC method `z_mergetoaddress` has been added. It merges |
|||
funds from t-addresses, z-addresses, or both, and sends them to a single |
|||
t-address or z-address. |
|||
|
|||
Unlike most other RPC methods, `z_mergetoaddress` operates over a particular |
|||
quantity of UTXOs and notes, instead of a particular amount of ZEC. By default, |
|||
it will merge 50 UTXOs and 10 notes at a time; these limits can be adjusted with |
|||
the parameters `transparent_limit` and `shielded_limit`. |
|||
|
|||
`z_mergetoaddress` also returns the number of UTXOs and notes remaining in the |
|||
given addresses, which can be used to automate the merging process (for example, |
|||
merging until the number of UTXOs falls below some value). |
|||
|
|||
UTXO memory accounting |
|||
---------------------- |
|||
|
|||
The default `-dbcache` has been changed in this release to 450MiB. Users can set |
|||
`-dbcache` to a higher value (e.g. to keep the UTXO set more fully cached in |
|||
memory). Users on low-memory systems (such as systems with 1GB or less) should |
|||
consider specifying a lower value for this parameter. |
|||
|
|||
Additional information relating to running on low-memory systems can be found |
|||
here: [reducing-memory-usage.md](https://github.com/zcash/zcash/blob/master/doc/reducing-memory-usage.md). |
|||
|
|||
Changelog |
|||
========= |
|||
|
|||
21E14 (1): |
|||
Remove obsolete reference to CValidationState from UpdateCoins. |
|||
|
|||
Alex Morcos (1): |
|||
Implement helper class for CTxMemPoolEntry constructor |
|||
|
|||
Ariel (2): |
|||
add blake2b writer |
|||
update SignatureHash according to Overwinter spec |
|||
|
|||
Ashley Holman (1): |
|||
TxMemPool: Change mapTx to a boost::multi_index_container |
|||
|
|||
Cory Fields (2): |
|||
chainparams: move CCheckpointData into chainparams.h |
|||
chainparams: don't use std namespace |
|||
|
|||
Daniel Kraft (1): |
|||
Clean up chainparams some more. |
|||
|
|||
Jack Grigg (43): |
|||
Scope the ECDSA constant sizes to CPubKey / CKey classes |
|||
Enable Bash completion for -exportdir |
|||
Check chainValueZat when checking value pool monitoring |
|||
Add missing namespace for boost::get |
|||
Add viewing key prefix to regtest parameters |
|||
zkey_import_export: Synchronize mempools before mining |
|||
Use JoinSplitTestingSetup for Boost sighash tests |
|||
Network upgrade activation mechanism |
|||
Allow changing network upgrade parameters on regtest |
|||
Test network upgrade logic |
|||
Adjust rewind logic to use the network upgrade mechanism |
|||
Add Overwinter to upgrade list |
|||
Add method for fetching the next activation height after a given block height |
|||
Use a boost::optional for nCachedBranchId |
|||
Change UI/log status message for block rewinding |
|||
Update quote from ZIP 200 |
|||
Update SignatureHash tests for transaction format changes |
|||
Implement roll-back limit for reorganisation |
|||
Add rollback limit to block index rewinding |
|||
Remove mempool transactions which commit to an unmineable branch ID |
|||
Remove P2WPKH and P2WSH from signing logic |
|||
Add consensus branch ID parameter to SignatureHash, remove SigVersion parameter |
|||
Cleanup: Wrap function arguments |
|||
Regenerate SignatureHash tests |
|||
Make number of inputs configurable in validatelargetx test |
|||
Use v3 transactions with caching for validatelargetx benchmark |
|||
Extend CWallet::GetFilteredNotes to enable filtering on a set of addresses |
|||
Add branch IDs for current and next block to getblockchaininfo |
|||
Check Equihash solution when loading block index |
|||
Implement z_mergetoaddress for combining UTXOs and notes |
|||
Gate z_mergetoaddress as an experimental feature |
|||
Add z_mergetoaddress to release notes |
|||
Check upgrade status in wallet_overwintertx RPC test |
|||
Document that consensus.chaintip != consensus.nextblock just before an upgrade |
|||
Regenerate sighash tests |
|||
wallet_mergetoaddress: Add additional syncs to prevent race conditions |
|||
make-release.py: Versioning changes for 1.0.15-rc1. |
|||
make-release.py: Updated manpages for 1.0.15-rc1. |
|||
make-release.py: Updated release notes and changelog for 1.0.15-rc1. |
|||
Use block hash comparison for consistency check when loading block index |
|||
Overwinter release notes and testnet activation height |
|||
make-release.py: Versioning changes for 1.0.15. |
|||
make-release.py: Updated manpages for 1.0.15. |
|||
|
|||
Jay Graber (8): |
|||
Add getdeprecationinfo rpc call to return current version and deprecation block height. |
|||
Make applicable only on mainnet |
|||
Add upgrades field to RPC call getblockchaininfo |
|||
Implement transaction expiry for Overwinter |
|||
Add -txexpirydelta cli option |
|||
Add mempool_tx_expiry.py test |
|||
Add expiry to z_mergetoaddress |
|||
Change rpc_tests to 21 |
|||
|
|||
Jonas Nick (1): |
|||
Reduce unnecessary hashing in signrawtransaction |
|||
|
|||
Jorge Timón (3): |
|||
Chainparams: Introduce CreateGenesisBlock() static function |
|||
Chainparams: CTestNetParams and CRegTestParams extend directly from CChainParams |
|||
Mempool: Use Consensus::CheckTxInputs direclty over main::CheckInputs |
|||
|
|||
Marius Kjærstad (1): |
|||
Changed http:// to https:// on some links |
|||
|
|||
Mark Friedenbach (1): |
|||
Explicitly set tx.nVersion for the genesis block and mining tests |
|||
|
|||
Matt Corallo (5): |
|||
Add failing test checking timelocked-txn removal during reorg |
|||
Fix removal of time-locked transactions during reorg |
|||
Fix comment in removeForReorg |
|||
Make indentation in ActivateBestChainStep readable |
|||
removeForReorg calls once-per-disconnect-> once-per-reorg |
|||
|
|||
Maxwell Gubler (1): |
|||
Fix syntax examples for z_importwallet and export |
|||
|
|||
Nicolas DORIER (1): |
|||
Unit test for sighash caching |
|||
|
|||
Pavel Vasin (1): |
|||
remove unused NOBLKS_VERSION_{START,END} constants |
|||
|
|||
Pieter Wuille (8): |
|||
Add rewind logic to deal with post-fork software updates |
|||
Support -checkmempool=N, which runs checks on average once every N transactions |
|||
Report non-mandatory script failures correctly |
|||
Refactor script validation to observe amounts |
|||
BIP143: Verification logic |
|||
BIP143: Signing logic |
|||
Precompute sighashes |
|||
Rename to PrecomputedTransactionData |
|||
|
|||
Simon Liu (11): |
|||
Fixes #2793. Backport commit f33afd3 to increase dbcache default. |
|||
Add documentation about dbcache. |
|||
Add note about dbcache to 1.0.15 release notes. |
|||
Remove redundant service flag NODE_GETUTXO meant for Bitcoin XT. |
|||
Implementation of Overwinter transaction format ZIP 202. |
|||
Add test to check malformed v1 transaction against Overwinter tx parser |
|||
Closes #2964. z_sendmany once again makes v1 tx for taddr to taddr. |
|||
Closes #2954 and #2959. Fixes Overwinter issues in sighash_tests. |
|||
Add field nProtocolVersion to struct NetworkUpgrade. |
|||
Overwinter peer management and network handshaking. |
|||
Add python qa test overwinter_peer_management. |
|||
|
|||
Suhas Daftuar (3): |
|||
Track coinbase spends in CTxMemPoolEntry |
|||
Don't call removeForReorg if DisconnectTip fails |
|||
Fix removeForReorg to use MedianTimePast |
|||
|
|||
jc (1): |
|||
read hashReserved from disk block index |
|||
|
|||
syd (2): |
|||
Fix libsnark dependency build. |
|||
Remove OSX and Windows files from Makefile + share directory. |
|||
|
@ -0,0 +1,16 @@ |
|||
Daira Hopwood (3): |
|||
Don't rely on a finite upper bound on fee rate or priority. |
|||
Simplify JoinSplit priority calculation. refs 1896 |
|||
Add check for JoinSplit priority as calculated by CCoinsViewCache::GetPriority. |
|||
|
|||
Jack Grigg (1): |
|||
Use a larger -rpcclienttimeout for slow performance measurements |
|||
|
|||
Nathan Wilcox (2): |
|||
Bump version numbers for v1.0.8-1. |
|||
Commit the changes from gen-manpages.sh, except manually tweak the version strings. |
|||
|
|||
str4d (2): |
|||
Update tests to check actual infinity as well as INF_FEERATE |
|||
Add unit test for security issue 2017-04-11.a |
|||
|
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue