Merge branch 'dev' into danger

This commit is contained in:
Duke
2025-12-29 21:21:45 -05:00
11 changed files with 25 additions and 66 deletions

View File

@@ -150,7 +150,6 @@ cd hush3
The links for the Official Hush explorers: The links for the Official Hush explorers:
* [explorer.hush.is](https://explorer.hush.is) * [explorer.hush.is](https://explorer.hush.is)
* [explorer.hush.land](https://explorer.hush.land)
# What is SilentDragon? # What is SilentDragon?

View File

@@ -10,15 +10,15 @@ linux_debug_CXXFLAGS=$(linux_debug_CFLAGS)
linux_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC linux_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC
ifeq (86,$(findstring 86,$(build_arch))) ifeq (86,$(findstring 86,$(build_arch)))
i686_linux_CC=gcc -m32 i686_linux_CC=$(CC) -m32
i686_linux_CXX=g++ -m32 i686_linux_CXX=$(CXX) -m32
i686_linux_AR=ar i686_linux_AR=ar
i686_linux_RANLIB=ranlib i686_linux_RANLIB=ranlib
i686_linux_NM=nm i686_linux_NM=nm
i686_linux_STRIP=strip i686_linux_STRIP=strip
x86_64_linux_CC=gcc -m64 x86_64_linux_CC=$(CC) -m64
x86_64_linux_CXX=g++ -m64 x86_64_linux_CXX=$(CXX) -m64
x86_64_linux_AR=ar x86_64_linux_AR=ar
x86_64_linux_RANLIB=ranlib x86_64_linux_RANLIB=ranlib
x86_64_linux_NM=nm x86_64_linux_NM=nm

View File

@@ -12,6 +12,8 @@ evil organizations. They also use all your "private" repos to train their AI.
# Hush 3.10.5 "" # Hush 3.10.5 ""
This is an OPTIONAL but RECOMMENDED upgrade.
* Concurrent `z_sendmany` now works * Concurrent `z_sendmany` now works
* A longstanding bug relating to run multiple `z_sendmany` operations at * A longstanding bug relating to run multiple `z_sendmany` operations at
once has been fixed. You can now queue up many `z_sendmany` operations once has been fixed. You can now queue up many `z_sendmany` operations
@@ -25,6 +27,7 @@ evil organizations. They also use all your "private" repos to train their AI.
release, which caused some nodes to be unable to sync. release, which caused some nodes to be unable to sync.
* This release fixes this issue. * This release fixes this issue.
* Updated test framework and tests which allowed the fixing of the `z_sendmany` bug above * Updated test framework and tests which allowed the fixing of the `z_sendmany` bug above
* Faster compiling of RandomX internals
# Hush 3.10.4 "Hazy Hākuturi" # Hush 3.10.4 "Hazy Hākuturi"

View File

@@ -1,5 +1,4 @@
SHELL = /bin/sh SHELL = /bin/sh
CC = gcc
CC_DARWIN = g++-8 CC_DARWIN = g++-8
CC_WIN = x86_64-w64-mingw32-gcc-posix CC_WIN = x86_64-w64-mingw32-gcc-posix
CC_AARCH64 = aarch64-linux-gnu-g++ CC_AARCH64 = aarch64-linux-gnu-g++

View File

@@ -45,6 +45,7 @@
#include <hush/tlsmanager.cpp> #include <hush/tlsmanager.cpp>
using namespace hush; using namespace hush;
extern int32_t HUSH_TESTNODE; extern int32_t HUSH_TESTNODE;
extern uint8_t ASSETCHAINS_CLEARNET;
// Dump addresses to peers.dat every 5 minutes (300s) // Dump addresses to peers.dat every 5 minutes (300s)
// Satoshi originally used 10 seconds(!), did they know something Peter Wuille didn't? // Satoshi originally used 10 seconds(!), did they know something Peter Wuille didn't?
@@ -1653,7 +1654,7 @@ int64_t PoissonNextSend(int64_t now, int average_interval_seconds)
void ASMapHealthCheck() { void ASMapHealthCheck() {
// No health check if clearnet is disabled // No health check if clearnet is disabled
if (!GetBoolArg("-clearnet", DEFAULT_CLEARNET)) { if (ASSETCHAINS_CLEARNET == 0 || !GetBoolArg("-clearnet", DEFAULT_CLEARNET)) {
return; return;
} }

View File

@@ -428,7 +428,6 @@ static const CRPCCommand vRPCCommands[] =
{ "wallet", "getaddressesbyaccount", &getaddressesbyaccount, true }, { "wallet", "getaddressesbyaccount", &getaddressesbyaccount, true },
{ "wallet", "cleanwallettransactions", &cleanwallettransactions, false }, { "wallet", "cleanwallettransactions", &cleanwallettransactions, false },
{ "wallet", "getbalance", &getbalance, false }, { "wallet", "getbalance", &getbalance, false },
{ "wallet", "getbalance64", &getbalance64, false },
{ "wallet", "getnewaddress", &getnewaddress, true }, { "wallet", "getnewaddress", &getnewaddress, true },
{ "wallet", "getrawchangeaddress", &getrawchangeaddress, true }, { "wallet", "getrawchangeaddress", &getrawchangeaddress, true },
{ "wallet", "getreceivedbyaccount", &getreceivedbyaccount, false }, { "wallet", "getreceivedbyaccount", &getreceivedbyaccount, false },

View File

@@ -258,7 +258,6 @@ extern UniValue getreceivedbyaddress(const UniValue& params, bool fHelp, const C
extern UniValue getreceivedbyaccount(const UniValue& params, bool fHelp, const CPubKey& mypk); extern UniValue getreceivedbyaccount(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue cleanwallettransactions(const UniValue& params, bool fHelp, const CPubKey& mypk); extern UniValue cleanwallettransactions(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue getbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); extern UniValue getbalance(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue getbalance64(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue getunconfirmedbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); extern UniValue getunconfirmedbalance(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue movecmd(const UniValue& params, bool fHelp, const CPubKey& mypk); extern UniValue movecmd(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue sendfrom(const UniValue& params, bool fHelp, const CPubKey& mypk); extern UniValue sendfrom(const UniValue& params, bool fHelp, const CPubKey& mypk);

View File

@@ -69,7 +69,7 @@ AsyncRPCOperation_shieldcoinbase::AsyncRPCOperation_shieldcoinbase(
} }
if (donation < 0 || donation > 10 ) { if (donation < 0 || donation > 10 ) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid donation percentage, must be an integer between 0 and 10"); throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid donation percentage, must be an integer between 0 and 10 inclusive");
} }
// Check the destination address is valid for this network i.e. not testnet being used on mainnet // Check the destination address is valid for this network i.e. not testnet being used on mainnet
@@ -216,17 +216,17 @@ bool ShieldToAddress::operator()(const libzcash::SaplingPaymentAddress &zaddr) c
m_op->builder_.AddTransparentInput(COutPoint(t.txid, t.vout), t.scriptPubKey, t.amount); m_op->builder_.AddTransparentInput(COutPoint(t.txid, t.vout), t.scriptPubKey, t.amount);
} }
} }
//TODO: TESTING zaddr only, only use on regtest
//TODO: randomly select from a set
auto dzaddr = "zregtestsapling1y30nwg0clsu6gcyrnvht8hdyfk3vwtszlh6kc4z5hv9hmpxzg2g0nx7c60xeecggm9x9gma96t4";
auto donationZaddr = DecodePaymentAddress(dzaddr);
if (!IsValidPaymentAddress(donationZaddr)) {
throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid donation zaddr, Unknown address format: ") + dzaddr);
}
if(donation) { if(donation) {
//if donation>0, send X% of value to zaddr and Y% of of value to donatezaddr where X+Y=100% //if donation>0, send X% of value to zaddr and Y% of of value to donatezaddr where X+Y=100%
//TODO: TESTING zaddr only, only use on regtest
//TODO: randomly select from a set
auto dzaddr = "zregtestsapling1y30nwg0clsu6gcyrnvht8hdyfk3vwtszlh6kc4z5hv9hmpxzg2g0nx7c60xeecggm9x9gma96t4";
auto donationZaddr = DecodePaymentAddress(dzaddr);
if (!IsValidPaymentAddress(donationZaddr)) {
throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid donation zaddr, Unknown address format: ") + dzaddr);
}
// calculate donation as a double then convert to CAmount // calculate donation as a double then convert to CAmount
double amount = (static_cast<double>(donation)/100)*static_cast<double>(sendAmount); double amount = (static_cast<double>(donation)/100)*static_cast<double>(sendAmount);
CAmount donationAmount = static_cast<CAmount>(amount); CAmount donationAmount = static_cast<CAmount>(amount);

View File

@@ -704,7 +704,7 @@ UniValue dumpwallet_impl(const UniValue& params, bool fHelp, bool fDumpZKeys)
throw JSONRPCError(RPC_INTERNAL_ERROR, e.what()); throw JSONRPCError(RPC_INTERNAL_ERROR, e.what());
} }
if (exportdir.empty()) { if (exportdir.empty()) {
throw JSONRPCError(RPC_WALLET_ERROR, "Cannot export wallet until the hushd -exportdir option has been set"); throw JSONRPCError(RPC_WALLET_ERROR, "Cannot export wallet until the -exportdir option has been set");
} }
std::string unclean = params[0].get_str(); std::string unclean = params[0].get_str();
std::string clean = SanitizeFilename(unclean); std::string clean = SanitizeFilename(unclean);

View File

@@ -6265,49 +6265,6 @@ UniValue setpubkey(const UniValue& params, bool fHelp, const CPubKey& mypk)
return result; return result;
} }
UniValue getbalance64(const UniValue& params, bool fHelp, const CPubKey& mypk)
{
set<CBitcoinAddress> setAddress; vector<COutput> vecOutputs;
UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR),b(UniValue::VARR); CTxDestination address;
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
const CKeyStore& keystore = *pwalletMain;
CAmount nValues[64],nValues2[64],nValue,total,total2; int32_t i,segid;
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
if (params.size() > 0)
throw runtime_error("getbalance64\n");
total = total2 = 0;
memset(nValues,0,sizeof(nValues));
memset(nValues2,0,sizeof(nValues2));
LOCK2(cs_main, pwalletMain->cs_wallet);
pwalletMain->AvailableCoins(vecOutputs, false, NULL, true);
BOOST_FOREACH(const COutput& out, vecOutputs)
{
nValue = out.tx->vout[out.i].nValue;
if ( ExtractDestination(out.tx->vout[out.i].scriptPubKey, address) )
{
segid = (hush_segid32((char *)CBitcoinAddress(address).ToString().c_str()) & 0x3f);
if ( out.nDepth < 100 )
nValues2[segid] += nValue, total2 += nValue;
else nValues[segid] += nValue, total += nValue;
//fprintf(stderr,"%s %.8f depth.%d segid.%d\n",(char *)CBitcoinAddress(address).ToString().c_str(),(double)nValue/COIN,(int32_t)out.nDepth,segid);
} else fprintf(stderr,"no destination\n");
}
ret.push_back(Pair("mature",(double)total/COIN));
ret.push_back(Pair("immature",(double)total2/COIN));
for (i=0; i<64; i++)
{
a.push_back((uint64_t)nValues[i]);
b.push_back((uint64_t)nValues2[i]);
}
ret.push_back(Pair("staking", a));
ret.push_back(Pair("notstaking", b));
return ret;
}
extern UniValue dumpprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp extern UniValue dumpprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp
extern UniValue convertpassphrase(const UniValue& params, bool fHelp, const CPubKey& mypk); extern UniValue convertpassphrase(const UniValue& params, bool fHelp, const CPubKey& mypk);
extern UniValue importprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk); extern UniValue importprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk);

View File

@@ -125,10 +125,11 @@ eval "$MAKE" --version | head -n2
as --version | head -n1 as --version | head -n1
as --version | tail -n1 as --version | tail -n1
ld -v ld -v
autoconf --version
HOST="$HOST" BUILD="$BUILD" "$MAKE" "$@" -C ./depends/ V=1 HOST="$HOST" BUILD="$BUILD" "$MAKE" "$@" -C ./depends/ V=1
./autogen.sh time ./autogen.sh
CONFIG_SITE="$PWD/depends/$HOST/share/config.site" ./configure "$HARDENING_ARG" "$LCOV_ARG" "$TEST_ARG" "$MINING_ARG" $CONFIGURE_FLAGS CXXFLAGS='-g' CONFIG_SITE="$PWD/depends/$HOST/share/config.site" ./configure "$HARDENING_ARG" "$LCOV_ARG" "$TEST_ARG" "$MINING_ARG" $CONFIGURE_FLAGS CXXFLAGS='-g'
@@ -136,7 +137,7 @@ CONFIG_SITE="$PWD/depends/$HOST/share/config.site" ./configure "$HARDENING_ARG"
WD=$PWD WD=$PWD
cd src/cc cd src/cc
echo $PWD echo $PWD
./makecustom CC=${CC:-gcc} ./makecustom
cd $WD cd $WD
# Build RandomX # Build RandomX
@@ -147,9 +148,10 @@ then
else else
mkdir build && cd build mkdir build && cd build
cmake -DARCH=native .. cmake -DARCH=native ..
make # pass along potential -jX and other args
time make "$@"
fi fi
cd $WD cd $WD
"$MAKE" "$@" V=1 time "$MAKE" "$@" V=1