Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 16 additions & 1 deletion Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,21 @@ CLEANFILES = $(OSX_DMG) $(RAVEN_WIN_INSTALLER)

DISTCHECK_CONFIGURE_FLAGS = --enable-man

clean-local:
doc/doxygen/.stamp: doc/Doxyfile FORCE
$(MKDIR_P) $(@D)
$(DOXYGEN) $^
$(AM_V_at) touch $@

if HAVE_DOXYGEN
docs: doc/doxygen/.stamp
else
docs:
@echo "error: doxygen not found"
endif

clean-docs:
rm -rf doc/doxygen

clean-local: clean-docs
rm -rf coverage_percent.txt test_raven.coverage/ total.coverage/ test/tmp/ cache/ $(OSX_APP)
rm -rf test/functional/__pycache__
89 changes: 89 additions & 0 deletions assets/tools/vanity_address_gen.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
from ravenrpc import Ravencoin # pip install ravenrpc
import sys
import os
import time

# Requires ravenrpc==0.2.4
#
# usage:
# ```
# python vanity_address_gen.py ( rpcuser ) ( rpcpass ) ( prefix ) ( ignore_case=True )
# ```



def valid_base58(s):
for c in ('0', 'O', 'l', '1'):
if c in s:
print(f'Cannot use charachter "{c}" in prefix!!')
exit()

def success_odds(prefix, ignore_case):
odds = 1
for letter in prefix[1:]:
if letter in ('o', 'l') or not ignore_case:
odds *= 58
else:
odds *= 29
return odds

def create_rvn_inst():
try:
rvn = Ravencoin(sys.argv[1], sys.argv[2])
except IndexError:
print('You must provide a valid rpc username and rpc password!')
exit()
return rvn

def get_args():
try:
prefix = sys.argv[3]
except IndexError:
print('Missing options!\n'
'Usage: `python gen.py <rpcuser> <rpcpass> <prefix> <ignore case (default True)>`')
exit()
ignore_case = sys.argv[4] if len(sys.argv) > 4 else True
if prefix[0] != 'R':
print('Please start your prefix with an "R"\n'
'Usage: `python gen.py <rpcuser> <rpcpass> <prefix> <ignore case (default True)>`')
exit()
return prefix, ignore_case, create_rvn_inst()

def validate_rvn(rvn):
if rvn.getinfo() == '':
print('Run ravend')
exit()

def display_stats(count, start, addr, prefix, odds):
addr_sec = count/(time.time() - start)
os.system('cls' if os.name == 'nt' else 'clear')
print(f'Tried {count} addresses\n'
f'Seconds Spent: {time.time() - start}\n'
f'Ave. Addresses/sec: {addr_sec}\n'
f'Lastest Address: {addr}\n'
f'Prefix: {prefix}\n'
f'You have a 1 in {odds} chance per address!\n'
f'At this rate, you will find your address in ~{odds/addr_sec/60} minutes!\n'
'To stop, press Ctrl-C', flush=True, end='')


def main():
prefix, ignore_case, rvn = get_args()
validate_rvn(rvn)
valid_base58(prefix)
start = time.time()
odds = success_odds(prefix, ignore_case)
count = 0
address = rvn.getnewaddress()['result']
try:
while not address.lower().startswith(prefix.lower()) if ignore_case else address.startswith(prefix):
address = rvn.getnewaddress()['result']
count += 1
if count % 100 == 1:
display_stats(count, start, address, prefix, odds)
except KeyboardInterrupt:
exit()
print(f'\nFound an address that starts with {prefix}!\n It is saved to your wallet. Use it freely!\n{address}')

if __name__ == '__main__':
main()
8 changes: 7 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,12 @@ AC_PATH_TOOL(READELF, readelf)
AC_PATH_TOOL(CPPFILT, c++filt)
AC_PATH_TOOL(OBJCOPY, objcopy)

AC_PATH_PROG(DOXYGEN, doxygen)
if test -z "$DOXYGEN"; then
AC_MSG_WARN([Doxygen not found])
fi
AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"])

AC_ARG_VAR(PYTHONPATH, Augments the default search path for python module files)

# Enable wallet
Expand Down Expand Up @@ -1242,7 +1248,7 @@ AC_SUBST(PROTOBUF_LIBS)
AC_SUBST(QR_LIBS)
AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi share/qt/Info.plist test/config.ini])
AC_CONFIG_FILES([contrib/devtools/split-debug.sh],[chmod +x contrib/devtools/split-debug.sh])
AC_CONFIG_FILES([doc/Doxyfile])
AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([doc/Doxyfile])])
AC_CONFIG_LINKS([contrib/filter-lcov.py:contrib/filter-lcov.py])
AC_CONFIG_LINKS([test/functional/test_runner.py:test/functional/test_runner.py])
AC_CONFIG_LINKS([test/util/raven-util-test.py:test/util/raven-util-test.py])
Expand Down
Binary file added crash
Binary file not shown.
14 changes: 13 additions & 1 deletion doc/developer-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,21 @@ Not OK (used plenty in the current source, but not picked up):
//
```

A full list of comment syntaxes picked up by doxygen can be found at http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html,
A full list of comment syntaxes picked up by doxygen can be found at
http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html,
but if possible use one of the above styles.

The Ravencoin Doxygen documentation can be generated by running `make docs` from the top-level
directory of the repository.
That creates the documentation in the directory "doc/doxygen" and the it can be accessed by a browser at:
doc/doxygen/html/index.html
The documentation can by deleted by running `make clean-docs`.

Before running `make docs`, you will need to install dependencies `doxygen` and `dot` (a component
of `graphviz`). For example,
on MacOS via Homebrew: `brew install doxygen --with-graphviz`
on Debian/Ubuntu: `sudo install doxygen graphviz`

Development tips and tricks
---------------------------

Expand Down
3 changes: 3 additions & 0 deletions src/fs.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@

#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>

#ifdef WIN32
#include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
#endif

/** Filesystem operations and types */
namespace fs = boost::filesystem;
Expand Down
8 changes: 5 additions & 3 deletions src/init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1937,9 +1937,11 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
if (!pmessagechanneldb->ReadFlag("init", found)) {
uiInterface.InitMessage(_("Init Message Channels - Scanning Asset Transactions"));
std::string strLoadError;
if (!ScanForMessageChannels(strLoadError))
return InitError(strLoadError);
pmessagechanneldb->WriteFlag("init", true);
if (!ScanForMessageChannels(strLoadError)) {
LogPrintf("%s : Failed to scan for message channels, %s\n", __func__, strLoadError);
} else {
pmessagechanneldb->WriteFlag("init", true);
}
}
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion src/net_processing.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class PeerLogicValidation final: public CValidationInterface, public NetEventsIn
void EvictExtraOutboundPeers(int64_t time_in_seconds);

private:
int64_t m_stale_tip_check_time; //! Next time to check for stale tip
int64_t m_stale_tip_check_time; //!< Next time to check for stale tip
};

struct CNodeStateStats {
Expand Down
26 changes: 13 additions & 13 deletions src/netbase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,10 @@ enum SOCKSVersion: uint8_t {

/** Values defined for METHOD in RFC1928 */
enum SOCKS5Method: uint8_t {
NOAUTH = 0x00, //! No authentication required
GSSAPI = 0x01, //! GSSAPI
USER_PASS = 0x02, //! Username/password
NO_ACCEPTABLE = 0xff, //! No acceptable methods
NOAUTH = 0x00, //!< No authentication required
GSSAPI = 0x01, //!< GSSAPI
USER_PASS = 0x02, //!< Username/password
NO_ACCEPTABLE = 0xff, //!< No acceptable methods
};

/** Values defined for CMD in RFC1928 */
Expand All @@ -208,15 +208,15 @@ enum SOCKS5Command: uint8_t {

/** Values defined for REP in RFC1928 */
enum SOCKS5Reply: uint8_t {
SUCCEEDED = 0x00, //! Succeeded
GENFAILURE = 0x01, //! General failure
NOTALLOWED = 0x02, //! Connection not allowed by ruleset
NETUNREACHABLE = 0x03, //! Network unreachable
HOSTUNREACHABLE = 0x04, //! Network unreachable
CONNREFUSED = 0x05, //! Connection refused
TTLEXPIRED = 0x06, //! TTL expired
CMDUNSUPPORTED = 0x07, //! Command not supported
ATYPEUNSUPPORTED = 0x08, //! Address type not supported
SUCCEEDED = 0x00, //!< Succeeded
GENFAILURE = 0x01, //!< General failure
NOTALLOWED = 0x02, //!< Connection not allowed by ruleset
NETUNREACHABLE = 0x03, //!< Network unreachable
HOSTUNREACHABLE = 0x04, //!< Network unreachable
CONNREFUSED = 0x05, //!< Connection refused
TTLEXPIRED = 0x06, //!< TTL expired
CMDUNSUPPORTED = 0x07, //!< Command not supported
ATYPEUNSUPPORTED = 0x08, //!< Address type not supported
};

/** Values defined for ATYPE in RFC1928 */
Expand Down
6 changes: 3 additions & 3 deletions src/policy/fees.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ std::string StringForFeeReason(FeeReason reason);

/* Used to determine type of fee estimation requested */
enum class FeeEstimateMode {
UNSET, //! Use default settings based on other criteria
ECONOMICAL, //! Force estimateSmartFee to use non-conservative estimates
CONSERVATIVE, //! Force estimateSmartFee to use conservative estimates
UNSET, //!< Use default settings based on other criteria
ECONOMICAL, //!< Force estimateSmartFee to use non-conservative estimates
CONSERVATIVE, //!< Force estimateSmartFee to use conservative estimates
};

bool FeeModeFromString(const std::string& mode_string, FeeEstimateMode& fee_estimate_mode);
Expand Down
2 changes: 1 addition & 1 deletion src/primitives/transaction.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class CTxIn
COutPoint prevout;
CScript scriptSig;
uint32_t nSequence;
CScriptWitness scriptWitness; //! Only serialized through CTransaction
CScriptWitness scriptWitness; //!< Only serialized through CTransaction

/* Setting nSequence to this value for every input in a transaction
* disables nLockTime. */
Expand Down
12 changes: 11 additions & 1 deletion src/qt/guiutil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@
#define QTversionPreFiveEleven
#endif

#ifdef WIN32
static fs::detail::utf8_codecvt_facet utf8;
#endif

#if defined(Q_OS_MAC)
extern double NSAppKitVersionNumber;
Expand Down Expand Up @@ -974,12 +976,20 @@ void setClipboard(const QString& str)

fs::path qstringToBoostPath(const QString &path)
{
#ifdef WIN32
return fs::path(path.toStdString(), utf8);
#else
return fs::path(path.toStdString());
#endif
}

QString boostPathToQString(const fs::path &path)
{
#ifdef WIN32
return QString::fromStdString(path.string(utf8));
#else
return QString::fromStdString(path.string());
#endif
}

QString formatDurationStr(int secs)
Expand Down Expand Up @@ -1125,7 +1135,7 @@ void concatenate(QPainter* painter, QString& catString, int static_width, int le
static_width += dots_width;

// Start concatenation loop, end loop if name is at three characters
while (catString.size() > 3)
while (catString.size() > 3)
{
// Get the text width of the current name
#ifndef QTversionPreFiveEleven
Expand Down
14 changes: 7 additions & 7 deletions src/txmempool.h
Original file line number Diff line number Diff line change
Expand Up @@ -318,13 +318,13 @@ struct TxMempoolInfo
* this is passed to the notification signal.
*/
enum class MemPoolRemovalReason {
UNKNOWN = 0, //! Manually removed or unknown reason
EXPIRY, //! Expired from mempool
SIZELIMIT, //! Removed in size limiting
REORG, //! Removed for reorganization
BLOCK, //! Removed for block
CONFLICT, //! Removed for conflict with in-block transaction
REPLACED //! Removed for replacement
UNKNOWN = 0, //!< Manually removed or unknown reason
EXPIRY, //!< Expired from mempool
SIZELIMIT, //!< Removed in size limiting
REORG, //!< Removed for reorganization
BLOCK, //!< Removed for block
CONFLICT, //!< Removed for conflict with in-block transaction
REPLACED, //!< Removed for replacement
};

class SaltedTxidHasher
Expand Down
76 changes: 76 additions & 0 deletions venv/bin/activate
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

deactivate () {
# reset old environment variables
if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
PATH="$_OLD_VIRTUAL_PATH"
export PATH
unset _OLD_VIRTUAL_PATH
fi
if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then
PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
export PYTHONHOME
unset _OLD_VIRTUAL_PYTHONHOME
fi

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
hash -r
fi

if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
PS1="$_OLD_VIRTUAL_PS1"
export PS1
unset _OLD_VIRTUAL_PS1
fi

unset VIRTUAL_ENV
if [ ! "$1" = "nondestructive" ] ; then
# Self destruct!
unset -f deactivate
fi
}

# unset irrelavent variables
deactivate nondestructive

VIRTUAL_ENV="/home/anderson/Ravencoin/venv"
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH

# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "$PYTHONHOME" ] ; then
_OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
unset PYTHONHOME
fi

if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
_OLD_VIRTUAL_PS1="$PS1"
if [ "x(venv) " != x ] ; then
PS1="(venv) $PS1"
else
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
else
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
fi
export PS1
fi

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
hash -r
fi
Loading