Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

avoid sub-cent change (lost in fees) whenever possible #85

Merged
1 commit merged into from Mar 15, 2011

Conversation

tcatm
Copy link

@tcatm tcatm commented Mar 1, 2011

Patch from luke-jr

@gavinandresen
Copy link
Contributor

Looks good at first glance. Can we brainstorm test cases that we think might cause problems?

E.g. Wallet with (only) available transactions of +1 +2.0001 +3 : Send 6 bitcoins; what happens?

Same wallet, send 2 (I think you'll get a 2.0001+1 spend with 1.0001 change)...

Any other tricky edge cases?

wtogami added a commit to wtogami/bitcoin that referenced this pull request Nov 9, 2013
Reduce latency in network processing
@morcos morcos mentioned this pull request Nov 22, 2014
rdponticelli pushed a commit to Criptomonedas/bitcoin that referenced this pull request Nov 26, 2014
7a8e385 Fix interaction between magnitudes and negation (Pieter Wuille)
maflcko referenced this pull request in maflcko/bitcoin-core Mar 26, 2016
adding documentation for config params
ptschip pushed a commit to ptschip/bitcoin that referenced this pull request Feb 13, 2018
…t on Windows. (bitcoin#85)

* Inital scripts to setup mingw build env

These are the initial scripts that allow setup of the MinGW build
environment  on Windows.  After some initial manual steps, will
download, extract, and build all Bitcoin dependnencies, then build the
Bitcoin client with those dependencies statically linked.

* Add args to skip some build steps if not needed.

1. Added "--strip" argument.  Now this script will only run the strip
command on the generated bitcoin binaries if this argument is provided.
2. Added “--no-autogen” argument.  If provided, this argument will skip
execution of “./autogen.sh” to reduce build times (convenience feature
for Windows developers).
3. Added “--no-configure” argument.  If provided, this argument will
skip execution of “./configure” to reduce build times (convenience
feature for Windows developers).  If specified, this argument also
automatically applies the “—no-autogen” argument as well.

NOTE: The “--no-autogen” and “--no-configure” options should only be
used if a successful build of the bitcoin binaries has already been
completed in this build directory, and no configuration changes have
been made.  Currently the script doesn't have a safety check these
commands have run successfully, and if you have not previously run
“./autogen.sh” and/or “./configure” successfully, the script will
blow-up if you run with these arguments.

* Update Qt download URL

Qt dowload has changed from official_releases to archive.
REVISIT: Check to see if it is OK to upgrade to a newer version.

* Allow building with tests enabled

Added the "--check" argument to allow building with tests enabled.
NOTE: Not all tests can be run successfully on Windows, but the "make
check" and some of the pull-tester RPC tests should work provided that
Python has been installed and the development environment configured
correctly to access it.

1. Update dependencies to install wahern's Hexdump.exe by building from
source.  This is required for tests to be able to run.
2. Update the dependencies configuration script to build Boost with
tests enabled, if a specific setting is enabled in the header of the
file.  This is required for the bitcoin executables to build with tests
enabled.
3. Added "--check" argument to the bitcoin build script to dynamically
turn tests on or off when running ./configure.
4. The "--check" argument is also intended to run "make check" after
completion of the build, however due to some recent configuration issues
I haven't solved yet, this is currently commented out as the tests fail
due to python errors on Windows.

* Prevent redownload/extraction of dependency files

Mostly to speed up testing, if the files are already downloaded and/or
extracted, then don't redownload/extract them.

* Deal with paths with whitespace

Update scripts to try to handle whitespace in path names.  Currently
only works completely for the bitcoin build directory, many of the
dependency builds are not whitespace safe, external to these scripts, so
will have build failures.

* Enabled mingw 64-bit building

Updated the configuration scripts to support the 64-bit build toolchain
in addition to the already working 32-bit build chain.  Scripts will now
allow from-scratch download, unpack, and build of the entire toolchain,
all dependencies, and the bitcoin executables for just 32-bit, just
64-bit, or both in one go.

1. Added user configuration flags to indicate if the 32-bit and/or
64-bit versions should be configured and built.
2. Restructured main configuration script to selectively run the full
configuration and build process based on flag settings.
3. Extract and build all dependencies in target specific sub-directories
of x86 or x64.
4. Added a section to copy the just built bitcoin executables to an
alternate output location, "build-output/x86" or "build-output/x64".
This way if both 32 and 64 bit configuration is done in one go, the
final statically linked bitcoin outputs for both will be available.
5. Updated toolchain installation script to be able to correctly
download and extract the 32-bit or 64-bit toolchain packages.
6. Updated dependency build script to support pulling the correct
version of libz.a from the toolchain (32 or 64 bit version).  This is
necessary for qrencode.
7. Updated openssl to use the proper Configure switch (mingw or mingw64)
based on toolchain.
8. Updated bitcoin build script to support "--clean" flag to allow
performing a full clean prior to build.

* Restructure mingw build scripts

Scripts have been restructured to use a single configuration file so the
user only needs to edit one file for any of the helper scripts that can
be run.  This provides:

1. SET_ENV_VARS.bat is the only file that needs to be edited by the user
The same settings coming from SET_ENV_VARS are used by all other scripts
2. Eliminate command line argument processing for bash scripts as all
values now come from SET_ENV_VARS.bat
3. Eliminate the need for the user to double enter paths in both Windows
and POSIX formats.  Bash scripts will now automatically convert to POSIX
from Windows.
4. Create parity between config-mingw.bat and rebuild-bitcoin.bat in
terms of initalization and timing log messages.

* Enable make -jN configurable from evn vars

* Refactor flag to enable tests in ENV_VARS

Instead of passing build flags, just do a check for set.  Makes the user
edit portion less complex.

* Correct PATH init causing 64-bit Qt build failure

Build of Qt on 64-bit toolchain has errors if MSYS bin directory is in
the path during build.
To correct, moved PATH initialization to each individual bash script as
well as reset in the main configuration script where necessary.

* Prevent double download of dependencies

If building both 32-bit and 64-bit versions, don't download the
dependencies twice.
NOTE: Still extracts twice.

* Add option to "install" python and git

Since mingw doesn't come with git or python, we can use the Windows
executables installed for these utilities by creating a wrapper script
in /usr/bin/ folder which simply calls the executable and passes in any
parameters that were passed to the script.  These wrappers are
"installed" as part of the main dependency configuration script.

* Add validation/error checking

1. Add in checks to ensure that required environment variables have been
set in SET_ENV_VARS.bat.
2. Add checks to ensure paths that were set are valid and the
files/directories they point to exist.
3. Add checks to catch errors that occur during build and abort further
execution until errors are fixed.
4. Add checks to bitcoin build script to ensure dependencies have been
built for the current toolchain.

* Update documentation

Added more in-depth readme files and reference the automation scripts in
the main windows build doc.

* Add step to upgrade wget

The version of wget (v1.12) which comes from the MinGW package manager is so out of date that it does not support TLSv1.2.  This has started causing some dependency downloads to fail where TLSv1.2 is now the only supported secure channel.

Added a step to upgrade to wget v1.19.1 which uses OpenSSL 1.1.0e and supports TLSv1.2 connections.

* Use minimal base PATH when building dependencies

This is because the default PATH value on Windows may have paths that
cause conflicts.
Specifically after installing Visual Studio 2017 with the R Python
plugin, Anaconda3 was installed and included in the PATH which causes Qt
builds to fail.

* Add ability to specify --enable-debug when building bitcoin

* Add helper scripts for performing full clean of bitcoin

Does not clean dependencies.

* Update miniupnpc dependency to v2.0.20170509

This is for CVE-2017-8798, merged in as part of 5d61cd4
Also updates documentation for building on native windows.

* Update file downloads to verify file hash

Configuration will error out if the sha256 checksums do not match.

* Correct URL & checksum for wget

Updated to match changes on download website.  Using the same version
1.19.1, 32-bit.
effectsToCause added a commit to vericoin/vericoin that referenced this pull request Jun 22, 2018
Fix for incorrect minimum proof of stake difficulty calculation
attilaaf pushed a commit to attilaaf/bitcoin that referenced this pull request Jan 13, 2020
…itcoin#85)

Feature/CORE-70 Mempool Journal Construction

Approved-by: Arkadiusz Kolodziejski <a.kolodziejski@nchain.com>
rajarshimaitra pushed a commit to rajarshimaitra/bitcoin that referenced this pull request Aug 5, 2021
line 58:

originally: "This mechanism would allow two users to engage into several smaller transactions..."

corrected: "This mechanism would allow two users to engage in several smaller transactions..."
@bitcoin bitcoin locked as resolved and limited conversation to collaborators Sep 8, 2021
This pull request was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants