From a401f3690b6220cd853fffbb1c1466a9541d25f2 Mon Sep 17 00:00:00 2001 From: Gandalf Date: Tue, 16 May 2017 23:17:37 +0200 Subject: [PATCH 01/20] Removing seed nodes that failed to respond all consecutive attempts --- doc/seednodes.txt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/seednodes.txt b/doc/seednodes.txt index 5a5383392b..1f3ac54786 100644 --- a/doc/seednodes.txt +++ b/doc/seednodes.txt @@ -1,15 +1,15 @@ -seed.riversteem.com:2001 # riverhead +#####seed.riversteem.com:2001 # riverhead steem-seed1.abit-more.com:2001 # abit 52.74.152.79:2001 # smooth.witness seed.steemd.com:34191 # roadscape steemwitness.matthewniemerg.com:2001 # complexring -steemd.pharesim.me:2001 # pharesim +#####steemd.pharesim.me:2001 # pharesim seed.jesta.us:2001 # jesta seed.liondani.com:2016 # liondani anyx.co:2001 # anyx -seed.xeldal.com:12150 # xeldal +#####seed.xeldal.com:12150 # xeldal seed.steemnodes.com:2001 # wackou -steem.clawmap.com:2001 # steempty +#####steem.clawmap.com:2001 # steempty gtg.steem.house:2001 # gtg 192.99.3.29:2001 # joseph 5.9.18.213:2001 # pfunk @@ -17,20 +17,20 @@ lafonasteem.com:2001 # lafona seed.rossco99.com:2001 # rossco99 212.47.249.84:40696 # ihashfury seed.steemfeeder.com:2001 # au1nethyb1 -52.175.211.168:2001 # aizensou +#####52.175.211.168:2001 # aizensou seed.roelandp.nl:2001 # roelandp 81.89.101.133:2001 # cyrano.witness steem.global:2001 # klye seed.esteem.ws:2001 # good-karma 176.31.126.187:2001 # timcliff -seed.royaltiffany.me:2001 # royaltiffany +#####seed.royaltiffany.me:2001 # royaltiffany seed.thecryptodrive.com:2001 # thecryptodrive steem-id.altexplorer.xyz:2001 # steem-id seed.bitcoiner.me:2001 # bitcoiner 104.199.118.92:2001 # clayop 192.99.4.226:2001 # dele-puppy -89.36.26.82:2001 # dragosroua -104.198.222.18:2001 # bitcoinparadise -138.197.17.188:2001 # chitty +#####89.36.26.82:2001 # dragosroua +#####104.198.222.18:2001 # bitcoinparadise +#####138.197.17.188:2001 # chitty 88.99.33.113:2001 # cervantes seed.bhuz.info:2001 # bhuz From ef8402633fc5cb70862bbd05e5b6df8eb16334d6 Mon Sep 17 00:00:00 2001 From: Gandalf Date: Wed, 17 May 2017 07:27:04 +0200 Subject: [PATCH 02/20] seed node provided by xeldal recovered, pcste added --- doc/seednodes.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/seednodes.txt b/doc/seednodes.txt index 1f3ac54786..f244172b2a 100644 --- a/doc/seednodes.txt +++ b/doc/seednodes.txt @@ -7,7 +7,7 @@ steemwitness.matthewniemerg.com:2001 # complexring seed.jesta.us:2001 # jesta seed.liondani.com:2016 # liondani anyx.co:2001 # anyx -#####seed.xeldal.com:12150 # xeldal +seed.xeldal.com:12150 # xeldal seed.steemnodes.com:2001 # wackou #####steem.clawmap.com:2001 # steempty gtg.steem.house:2001 # gtg @@ -15,7 +15,7 @@ gtg.steem.house:2001 # gtg 5.9.18.213:2001 # pfunk lafonasteem.com:2001 # lafona seed.rossco99.com:2001 # rossco99 -212.47.249.84:40696 # ihashfury +steem-seed.altcap.io:40696 # ihashfury seed.steemfeeder.com:2001 # au1nethyb1 #####52.175.211.168:2001 # aizensou seed.roelandp.nl:2001 # roelandp @@ -34,3 +34,4 @@ seed.bitcoiner.me:2001 # bitcoiner #####138.197.17.188:2001 # chitty 88.99.33.113:2001 # cervantes seed.bhuz.info:2001 # bhuz +78.46.95.157:2001 # pcste From 906aaa0bc4ad8633fcf36b606b7ac4a5ffd022f6 Mon Sep 17 00:00:00 2001 From: Gandalf Date: Sun, 21 May 2017 14:14:55 +0200 Subject: [PATCH 03/20] removed entries for obsolete nodes (off for > 1 week) --- doc/seednodes.txt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/doc/seednodes.txt b/doc/seednodes.txt index f244172b2a..8f9866e34f 100644 --- a/doc/seednodes.txt +++ b/doc/seednodes.txt @@ -1,15 +1,12 @@ -#####seed.riversteem.com:2001 # riverhead steem-seed1.abit-more.com:2001 # abit 52.74.152.79:2001 # smooth.witness seed.steemd.com:34191 # roadscape steemwitness.matthewniemerg.com:2001 # complexring -#####steemd.pharesim.me:2001 # pharesim seed.jesta.us:2001 # jesta seed.liondani.com:2016 # liondani anyx.co:2001 # anyx seed.xeldal.com:12150 # xeldal seed.steemnodes.com:2001 # wackou -#####steem.clawmap.com:2001 # steempty gtg.steem.house:2001 # gtg 192.99.3.29:2001 # joseph 5.9.18.213:2001 # pfunk @@ -17,21 +14,16 @@ lafonasteem.com:2001 # lafona seed.rossco99.com:2001 # rossco99 steem-seed.altcap.io:40696 # ihashfury seed.steemfeeder.com:2001 # au1nethyb1 -#####52.175.211.168:2001 # aizensou seed.roelandp.nl:2001 # roelandp 81.89.101.133:2001 # cyrano.witness steem.global:2001 # klye seed.esteem.ws:2001 # good-karma 176.31.126.187:2001 # timcliff -#####seed.royaltiffany.me:2001 # royaltiffany seed.thecryptodrive.com:2001 # thecryptodrive steem-id.altexplorer.xyz:2001 # steem-id seed.bitcoiner.me:2001 # bitcoiner 104.199.118.92:2001 # clayop 192.99.4.226:2001 # dele-puppy -#####89.36.26.82:2001 # dragosroua -#####104.198.222.18:2001 # bitcoinparadise -#####138.197.17.188:2001 # chitty 88.99.33.113:2001 # cervantes seed.bhuz.info:2001 # bhuz 78.46.95.157:2001 # pcste From d21d39b55c88d5cd87e0caa3a9ab8a44d737c5ed Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Mon, 22 May 2017 10:18:33 -0400 Subject: [PATCH 04/20] Calculate proper curves #1124 --- libraries/chain/util/reward.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/chain/util/reward.cpp b/libraries/chain/util/reward.cpp index 750bf9fc81..8ca508f856 100644 --- a/libraries/chain/util/reward.cpp +++ b/libraries/chain/util/reward.cpp @@ -84,9 +84,10 @@ uint128_t evaluate_reward_curve( const uint128_t& rshares, const curve_id& curve } break; case linear: - result = approx_sqrt( rshares ); + result = rshares; break; case square_root: + result = approx_sqrt( rshares ); break; } From eb0d9b27d4b005267f10b0e59f0aa07521bbbfef Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Mon, 22 May 2017 13:52:09 -0400 Subject: [PATCH 05/20] Check invariants when database is opened #1125 --- libraries/chain/database.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/chain/database.cpp b/libraries/chain/database.cpp index 151a89fc6d..8407040807 100644 --- a/libraries/chain/database.cpp +++ b/libraries/chain/database.cpp @@ -123,6 +123,7 @@ void database::open( const fc::path& data_dir, const fc::path& shared_mem_dir, u undo_all(); FC_ASSERT( revision() == head_block_num(), "Chainbase revision does not match head block num", ("rev", revision())("head_block", head_block_num()) ); + validate_invariants(); }); if( head_block_num() ) From f4c40541e3c4b8fafa7b8d2c6711a53d4fb2ec58 Mon Sep 17 00:00:00 2001 From: theoreticalbts Date: Mon, 22 May 2017 14:15:09 -0400 Subject: [PATCH 06/20] Refactor complex conditionals and error messages for readability #1126 --- libraries/chain/steem_evaluator.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libraries/chain/steem_evaluator.cpp b/libraries/chain/steem_evaluator.cpp index 4d7be93ac5..90e17e8bc7 100644 --- a/libraries/chain/steem_evaluator.cpp +++ b/libraries/chain/steem_evaluator.cpp @@ -2231,7 +2231,7 @@ void delegate_vesting_shares_evaluator::do_apply( const delegate_vesting_shares_ { auto delta = op.vesting_shares - delegation->vesting_shares; - FC_ASSERT( delta >= min_update, "Steem Power increase is not enough of a different. min_update: ${min}", ("min", min_update) ); + FC_ASSERT( delta >= min_update, "Steem Power increase is not enough of a difference. min_update: ${min}", ("min", min_update) ); FC_ASSERT( available_shares >= op.vesting_shares - delegation->vesting_shares, "Account does not have enough vesting shares to delegate." ); _db.modify( delegator, [&]( account_object& a ) @@ -2256,15 +2256,19 @@ void delegate_vesting_shares_evaluator::do_apply( const delegate_vesting_shares_ if( _db.has_hardfork( STEEMIT_HARDFORK_0_19__971 ) ) { - FC_ASSERT( ( op.vesting_shares.amount == 0 ) - || ( delta >= min_update && op.vesting_shares >= min_delegation ), - "Delegation must be removed or be a significant change and leave a minimum delegation. min_update: ${min_update}, min_delegation: ${min_delegation}", - ("min_update", min_update)("min_delegation", min_delegation) ); + if( op.vesting_shares.amount > 0 ) + { + FC_ASSERT( delta >= min_update, "Steem Power decrease is not enough of a difference. min_update: ${min}", ("min", min_update) ); + FC_ASSERT( op.vesting_shares >= min_delegation, "Delegation must be removed or leave minimum delegation amount of ${v}", ("v", min_delegation) ); + } } else // TODO: Check and remove after HF19 { - FC_ASSERT( delta >= min_update, "Steem Power increase is not enough of a different. min_update: ${min}", ("min", min_update) ); - FC_ASSERT( op.vesting_shares >= min_delegation || op.vesting_shares.amount == 0, "Delegation must be removed or leave minimum delegation amount of ${v}", ("v", min_delegation) ); + FC_ASSERT( delta >= min_update, "Steem Power decrease is not enough of a difference. min_update: ${min}", ("min", min_update) ); + if( op.vesting_shares.amount > 0 ) + { + FC_ASSERT( op.vesting_shares >= min_delegation, "Delegation must be removed or leave minimum delegation amount of ${v}", ("v", min_delegation) ); + } } _db.create< vesting_delegation_expiration_object >( [&]( vesting_delegation_expiration_object& obj ) From 56ad7752f79ae7aa4a4b0f60fda4aa58ab0199f1 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Mon, 22 May 2017 14:37:04 -0400 Subject: [PATCH 07/20] Fix incorrect assertion for witness vote invariant #1125 --- libraries/chain/database.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/chain/database.cpp b/libraries/chain/database.cpp index 8407040807..a50ad794a6 100644 --- a/libraries/chain/database.cpp +++ b/libraries/chain/database.cpp @@ -3946,7 +3946,7 @@ void database::validate_invariants()const /// verify no witness has too many votes const auto& witness_idx = get_index< witness_index >().indices(); for( auto itr = witness_idx.begin(); itr != witness_idx.end(); ++itr ) - FC_ASSERT( itr->votes < gpo.total_vesting_shares.amount, "", ("itr",*itr) ); + FC_ASSERT( itr->votes <= gpo.total_vesting_shares.amount, "", ("itr",*itr) ); for( auto itr = account_idx.begin(); itr != account_idx.end(); ++itr ) { From 30a81324948f8914094bbeb0b68f34d1034101fe Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Tue, 23 May 2017 14:30:44 -0400 Subject: [PATCH 08/20] Remove immutable_chain_parameters.hpp #1131 --- .../chain/immutable_chain_parameters.hpp | 26 ------------------- 1 file changed, 26 deletions(-) delete mode 100644 libraries/chain/include/steemit/chain/immutable_chain_parameters.hpp diff --git a/libraries/chain/include/steemit/chain/immutable_chain_parameters.hpp b/libraries/chain/include/steemit/chain/immutable_chain_parameters.hpp deleted file mode 100644 index d3f2f68644..0000000000 --- a/libraries/chain/include/steemit/chain/immutable_chain_parameters.hpp +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include - -#include - -#include - -namespace steemit { namespace chain { - -struct immutable_chain_parameters -{ - uint16_t min_committee_member_count = STEEMIT_DEFAULT_MIN_COMMITTEE_MEMBER_COUNT; - uint16_t min_witness_count = STEEMIT_DEFAULT_MIN_WITNESS_COUNT; - uint32_t num_special_accounts = 0; - uint32_t num_special_assets = 0; -}; - -} } // steemit::chain - -FC_REFLECT( steemit::chain::immutable_chain_parameters, - (min_committee_member_count) - (min_witness_count) - (num_special_accounts) - (num_special_assets) -) From da72f7eb80854ba797b2ff4deaa102b2f7d15256 Mon Sep 17 00:00:00 2001 From: JustinW Date: Wed, 24 May 2017 09:05:29 -0400 Subject: [PATCH 09/20] adding steemdsync changes to master --- contrib/sync-sv-run.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/contrib/sync-sv-run.sh b/contrib/sync-sv-run.sh index fe5948f49b..b6b0c11f51 100644 --- a/contrib/sync-sv-run.sh +++ b/contrib/sync-sv-run.sh @@ -38,9 +38,13 @@ if [[ ! -z "$BLOCKCHAIN_TIME" ]]; then echo steemdsync: waiting for steemd to exit cleanly while [ -e /proc/$STEEMD_PID ]; do sleep 0.1; done echo steemdsync: starting a new blockchainstate upload operation - cd $HOME + cd ${COMPRESSPATH:-$HOME} echo steemdsync: compressing blockchainstate... - tar cf blockchain.tar.bz2 --use-compress-prog=pbzip2 blockchain + tar cf blockchain.tar.bz2 --use-compress-prog=pbzip2 -C $HOME blockchain + if [[ ! $? -eq 0 ]]; then + echo NOTIFYALERT! steemdsync was unable to compress shared memory file, check the logs. + exit 1 + fi FILE_NAME=blockchain-$VERSION-`date '+%Y%m%d-%H%M%S'`.tar.bz2 echo steemdsync: uploading $FILE_NAME to $S3_BUCKET aws s3 cp blockchain.tar.bz2 s3://$S3_BUCKET/$FILE_NAME @@ -56,6 +60,7 @@ if [[ ! -z "$BLOCKCHAIN_TIME" ]]; then exit 1 fi # upload a current block_log + cd $HOME aws s3 cp blockchain/block_log s3://$S3_BUCKET/block_log-intransit aws s3 cp s3://$S3_BUCKET/block_log-intransit s3://$S3_BUCKET/block_log-latest # kill the container starting the process over again From 10c2b1a917c81ea2d4acbc9c2655e9bf7b1bb1c1 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 30 May 2017 11:44:06 -0400 Subject: [PATCH 10/20] increase default shared file size to 48gb --- libraries/app/application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/app/application.cpp b/libraries/app/application.cpp index e44f19387c..1f01f31772 100644 --- a/libraries/app/application.cpp +++ b/libraries/app/application.cpp @@ -970,7 +970,7 @@ void application::set_program_options(boost::program_options::options_descriptio ("seed-node,s", bpo::value>()->composing(), "P2P nodes to connect to on startup (may specify multiple times)") ("checkpoint,c", bpo::value>()->composing(), "Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints.") ("shared-file-dir", bpo::value(), "Location of the shared memory file. Defaults to data_dir/blockchain") - ("shared-file-size", bpo::value()->default_value("32G"), "Size of the shared memory file. Default: 32G") + ("shared-file-size", bpo::value()->default_value("48G"), "Size of the shared memory file. Default: 48G") ("rpc-endpoint", bpo::value()->implicit_value("127.0.0.1:8090"), "Endpoint for websocket RPC to listen on") ("rpc-tls-endpoint", bpo::value()->implicit_value("127.0.0.1:8089"), "Endpoint for TLS websocket RPC to listen on") ("read-forward-rpc", bpo::value(), "Endpoint to forward write API calls to for a read node" ) From edd36bf38f5ad12649c94098e5133b148354f3c3 Mon Sep 17 00:00:00 2001 From: Gandalf Date: Tue, 30 May 2017 21:31:59 +0200 Subject: [PATCH 11/20] Added preliminary quickstart checklist to help getting steemd up and running while avoiding most common issues for certain use cases --- doc/quickstart.md | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 doc/quickstart.md diff --git a/doc/quickstart.md b/doc/quickstart.md new file mode 100644 index 0000000000..f7dba20985 --- /dev/null +++ b/doc/quickstart.md @@ -0,0 +1,52 @@ +Quickstart +---------- + +### Get current steemd +#### Docker +Preferred way is to use docker. +#### Building +If you can't or don't want to use Docker and you want to build `steemd` and `cli_wallet` yourself follow [build instructions](building.md). +Those was made for `Ubuntu 16.04 LTS` and `macOS`. +If you have troubles building, please use Docker. + +#### Low memory node? +Unless you run full api node, use +`LOW_MEMORY_NODE=ON` +Suitable for: +- seed nodes +- witness nodes +- exchanges, etc. +For full api node use `LOW_MEMORY_NODE=OFF` + +### Configure for your use case +#### Full API node +Do not use low memory node for this case: +`LOW_MEMORY_NODE=OFF` +Use `contrib/fullnode.config.ini` as a base for your `config.ini` file. + +#### Exchanges +Use low memory node: +`LOW_MEMORY_NODE=ON` +Also make sure that your `config.ini` contains: +``` +enable-plugin = account_history +public-api = database_api login_api +track-account-range = ["yourexchangeid", "yourexchangeid"] +``` +Do not add other APIs or plugins unless you know what you are doing. + +### Resources usage + +Please make sure that you have enough resources available. +Provided values are expected to grow significantly over time. + +Blockchain data takes over **12GB** of storage space. + +#### Full node +Shared memory file for full node uses over **45GB** + +#### Seed node +Shared memory file for seed node uses over **3GB** + +#### Other use cases +Shared memory file size varies, depends on your specific configuration but it is expected to be somewhere between "seed node" and "full node" usage. From fdbc4c326fd30ff846a25dd2a625aa374462e9e9 Mon Sep 17 00:00:00 2001 From: Gandalf Date: Tue, 30 May 2017 22:43:33 +0200 Subject: [PATCH 12/20] showing instead of telling people looking how to build by themselves are not the target of this doc --- doc/quickstart.md | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/doc/quickstart.md b/doc/quickstart.md index f7dba20985..24b16ef623 100644 --- a/doc/quickstart.md +++ b/doc/quickstart.md @@ -2,31 +2,33 @@ Quickstart ---------- ### Get current steemd -#### Docker -Preferred way is to use docker. -#### Building -If you can't or don't want to use Docker and you want to build `steemd` and `cli_wallet` yourself follow [build instructions](building.md). -Those was made for `Ubuntu 16.04 LTS` and `macOS`. -If you have troubles building, please use Docker. - +Use docker: +``` +docker run \ + -d -p 2001:2001 -p 8090:8090 --name steemd-default \ + steemit/steem +``` #### Low memory node? -Unless you run full api node, use -`LOW_MEMORY_NODE=ON` -Suitable for: +Above runs low memory node, which is suitable for: - seed nodes - witness nodes - exchanges, etc. -For full api node use `LOW_MEMORY_NODE=OFF` +For full api node use: +``` +docker run \ + --env USE_WAY_TOO_MUCH_RAM=1 --env USE_FULL_WEB_NODE=1 \ + -d -p 2001:2001 -p 8090:8090 --name steemd-full \ + steemit/steem +``` ### Configure for your use case #### Full API node -Do not use low memory node for this case: -`LOW_MEMORY_NODE=OFF` -Use `contrib/fullnode.config.ini` as a base for your `config.ini` file. +You need to use `USE_WAY_TOO_MUCH_RAM=1` and `USE_FULL_WEB_NODE=1` as stated above. +You can Use `contrib/fullnode.config.ini` as a base for your `config.ini` file. #### Exchanges -Use low memory node: -`LOW_MEMORY_NODE=ON` +Use low memory node. + Also make sure that your `config.ini` contains: ``` enable-plugin = account_history From 8878c80afde449af2674d3ba0aac634c2020f8b7 Mon Sep 17 00:00:00 2001 From: Gandalf Date: Thu, 1 Jun 2017 09:54:12 +0200 Subject: [PATCH 13/20] note about shared-file-size (common issue) --- doc/quickstart.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/quickstart.md b/doc/quickstart.md index 24b16ef623..2931ef497d 100644 --- a/doc/quickstart.md +++ b/doc/quickstart.md @@ -40,6 +40,9 @@ Do not add other APIs or plugins unless you know what you are doing. ### Resources usage Please make sure that you have enough resources available. +Check `shared-file-size =` in your `config.ini` to reflect your needs. +Set it to at least 20% more than current size. + Provided values are expected to grow significantly over time. Blockchain data takes over **12GB** of storage space. From 55a0e21f39d72ec684892c11dfab1f80699ffc33 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Fri, 2 Jun 2017 11:46:35 -0400 Subject: [PATCH 14/20] Misc cleanup of 0.19.0 codebase #1149 --- libraries/app/database_api.cpp | 2 +- libraries/chain/database.cpp | 24 +++++++++++++------ .../include/steemit/chain/comment_object.hpp | 2 ++ libraries/chain/steem_evaluator.cpp | 15 +++++------- libraries/chain/witness_schedule.cpp | 1 - 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/libraries/app/database_api.cpp b/libraries/app/database_api.cpp index b150e9fb85..753ffea8e7 100755 --- a/libraries/app/database_api.cpp +++ b/libraries/app/database_api.cpp @@ -1145,7 +1145,7 @@ void database_api::set_pending_payout( discussion& d )const vshares = d.net_rshares.value > 0 ? steemit::chain::util::evaluate_reward_curve( d.net_rshares.value, rf.author_reward_curve, rf.content_constant ) : 0; } else - vshares = steemit::chain::util::evaluate_reward_curve( d.net_rshares.value > 0 ? d.net_rshares.value : 0 ); + vshares = d.net_rshares.value > 0 ? steemit::chain::util::evaluate_reward_curve( d.net_rshares.value ) : 0; u256 r2 = to256(vshares); //to256(abs_net_rshares); r2 *= pot.amount.value; diff --git a/libraries/chain/database.cpp b/libraries/chain/database.cpp index a50ad794a6..c48a327bae 100644 --- a/libraries/chain/database.cpp +++ b/libraries/chain/database.cpp @@ -1151,7 +1151,8 @@ void database::clear_witness_votes( const account_object& a ) remove(current); } - if( has_hardfork( STEEMIT_HARDFORK_0_6__104 ) ) // TODO: this check can be removed after hard fork + #warning( "TODO: Remove this check after HF 19" ) + if( has_hardfork( STEEMIT_HARDFORK_0_6__104 ) ) modify( a, [&](account_object& acc ) { acc.witnesses_voted_for = 0; @@ -1622,7 +1623,7 @@ void database::process_comment_cashout() { fc::microseconds decay_rate; - // TODO: Remove temp fund after HF 19 + #warning( "TODO: Remove temp reward fund after HF 19" ) if( rfo.name == STEEMIT_TEMP_LINEAR_REWARD_FUND_NAME || has_hardfork( STEEMIT_HARDFORK_0_19__1051 ) ) decay_rate = STEEMIT_RECENT_RSHARES_DECAY_RATE_HF19; else @@ -3087,7 +3088,7 @@ void database::update_last_irreversible_block() witness_time_pairs.push_back( std::make_pair( b->data.witness, b->data.timestamp ) ); } - ilog( "Encountered a block num collision due to a fork. Walking the current fork to determine the correct block. block_num:${n}", ("n", log_head_num + 1) ); // TODO: Delete when we know this code works as intended + ilog( "Encountered a block num collision due to a fork. Walking the current fork to determine the correct block. block_num:${n}", ("n", log_head_num + 1) ); ilog( "Colliding blocks produced by witnesses at times: ${w}", ("w", witness_time_pairs) ); auto next = _fork_db.head(); @@ -3748,8 +3749,8 @@ void database::apply_hardfork( uint32_t hardfork ) case STEEMIT_HARDFORK_0_17: { static_assert( - STEEMIT_MAX_VOTED_WITNESSES_HF0 + STEEMIT_MAX_MINER_WITNESSES_HF0 + STEEMIT_MAX_RUNNER_WITNESSES_HF0 == STEEMIT_MAX_WITNESSES, - "HF0 witness counts must add up to STEEMIT_MAX_WITNESSES" ); + STEEMIT_MAX_VOTED_WITNESSES_HF0 + STEEMIT_MAX_MINER_WITNESSES_HF0 + STEEMIT_MAX_RUNNER_WITNESSES_HF0 == STEEMIT_MAX_WITNESSES, + "HF0 witness counts must add up to STEEMIT_MAX_WITNESSES" ); static_assert( STEEMIT_MAX_VOTED_WITNESSES_HF17 + STEEMIT_MAX_MINER_WITNESSES_HF17 + STEEMIT_MAX_RUNNER_WITNESSES_HF17 == STEEMIT_MAX_WITNESSES, "HF17 witness counts must add up to STEEMIT_MAX_WITNESSES" ); @@ -3794,7 +3795,7 @@ void database::apply_hardfork( uint32_t hardfork ) // As a shortcut in payout processing, we use the id as an array index. // The IDs must be assigned this way. The assertion is a dummy check to ensure this happens. FC_ASSERT( post_rf.id._id == 0 ); - FC_ASSERT( linear_rf.id._id == 1 ); + FC_ASSERT( linear_rf.id._id == STEEMIT_TEMP_LINEAR_REWARD_FUND_ID ); modify( gpo, [&]( dynamic_global_property_object& g ) { @@ -3860,14 +3861,21 @@ void database::apply_hardfork( uint32_t hardfork ) const auto& linear = get< reward_fund_object, by_name >( STEEMIT_TEMP_LINEAR_REWARD_FUND_NAME ); modify( get< reward_fund_object, by_name >( STEEMIT_POST_REWARD_FUND_NAME ), [&]( reward_fund_object &rfo ) { + #warning( "TODO: Replace with constant after HF 19" ) rfo.recent_claims = linear.recent_claims; rfo.author_reward_curve = curve_id::linear; rfo.curation_reward_curve = curve_id::square_root; }); + #warning( "TODO: Remove weight conversion after HF 19" ) const auto& cidx = get_index< comment_index, by_cashout_time >(); const auto& vidx = get_index< comment_vote_index, by_comment_voter >(); - for( auto c_itr = cidx.begin(); c_itr != cidx.end() && c_itr->cashout_time != fc::time_point_sec::maximum(); ++c_itr ) + + /* + * Iterator through all comments that have not yet been paid, setting their total vote weight to the sqrt weight + * and update their votes as well. + */ + for( auto c_itr = cidx.begin(); c_itr != cidx.end() && c_itr->cashout_time < fc::time_point_sec::maximum(); ++c_itr ) { modify( *c_itr, [&]( comment_object& c ) { @@ -3883,6 +3891,8 @@ void database::apply_hardfork( uint32_t hardfork ) } } + #warning( "TODO: Remove if 0 delegation opjects are not created in pre HF19 consensus" ) + /* Remove all 0 delegation objects */ vector< const vesting_delegation_object* > to_remove; const auto& delegation_idx = get_index< vesting_delegation_index, by_id >(); auto delegation_itr = delegation_idx.begin(); diff --git a/libraries/chain/include/steemit/chain/comment_object.hpp b/libraries/chain/include/steemit/chain/comment_object.hpp index 02f284741c..7ae09db327 100644 --- a/libraries/chain/include/steemit/chain/comment_object.hpp +++ b/libraries/chain/include/steemit/chain/comment_object.hpp @@ -78,6 +78,7 @@ namespace steemit { namespace chain { time_point_sec cashout_time; /// 24 hours from the weighted average of vote time time_point_sec max_cashout_time; uint64_t total_vote_weight = 0; /// the total weight of voting rewards, used to calculate pro-rata share of curation payouts + #warning( "Remove total_sqrt_vote_weight after HF 19" ) uint64_t total_sqrt_vote_weight = 0; /// Temporary total weight of votes for post hf19 curation reward curve uint16_t reward_weight = 0; @@ -121,6 +122,7 @@ namespace steemit { namespace chain { account_id_type voter; comment_id_type comment; uint64_t weight = 0; ///< defines the score this vote receives, used by vote payout calc. 0 if a negative vote or changed votes. + #warning( "Remove sqrt_weight after HF 19. It is a temporary field" ) uint64_t sqrt_weight = 0; ///< Temporary vote weight for post hf19 curation curve int64_t rshares = 0; ///< The number of rshares this vote is responsible for int16_t vote_percent = 0; ///< The percent weight of the vote diff --git a/libraries/chain/steem_evaluator.cpp b/libraries/chain/steem_evaluator.cpp index 4d7be93ac5..7f34a7f3df 100644 --- a/libraries/chain/steem_evaluator.cpp +++ b/libraries/chain/steem_evaluator.cpp @@ -124,6 +124,7 @@ void account_create_evaluator::do_apply( const account_create_operation& o ) } else if( _db.has_hardfork( STEEMIT_HARDFORK_0_17__818 ) ) { + #warning( "TODO: Remove after HF19. Entire conditional might be able to be removed." ) if( _db.is_producing() ) FC_ASSERT( false, "account_create_operation is temporarily disabled. Please use account_create_with_delegation_operation instead" ); const witness_schedule_object& wso = _db.get_witness_schedule_object(); @@ -271,9 +272,7 @@ void account_create_with_delegation_evaluator::do_apply( const account_create_wi auth.last_owner_update = fc::time_point_sec::min(); }); - /* TODO: Check if not creating 0 delegation objects in HF19 passes consensus - * If it does we can remove the apply_hardfork logic for deleting 0 delegation objects - */ + #warning( "TODO: Check if not creating 0 delegation objects in HF19 passes consensus. Expectation is it should work." ) if( ( _db.has_hardfork( STEEMIT_HARDFORK_0_19__997 ) && o.delegation.amount > 0 ) || !_db.has_hardfork( STEEMIT_HARDFORK_0_19__997 ) ) { @@ -384,7 +383,7 @@ void delete_comment_evaluator::do_apply( const delete_comment_operation& o ) if( _db.has_hardfork( STEEMIT_HARDFORK_0_19__876 ) ) FC_ASSERT( comment.cashout_time != fc::time_point_sec::maximum() ); - // TODO: remove is_producing after HF 19. Check if we can remove conditional altogether after HF. + #warning( "TODO: Remove is_producing check after HF19. Conditional may be removed entirely after HF." ) if( _db.is_producing() || _db.has_hardfork( STEEMIT_HARDFORK_0_19__977 ) ) { FC_ASSERT( comment.net_rshares <= 0, "Cannot delete a comment with net positive votes." ); } @@ -460,8 +459,6 @@ void comment_options_evaluator::do_apply( const comment_options_operation& o ) if( !o.allow_curation_rewards || !o.allow_votes || o.max_accepted_payout < comment.max_accepted_payout ) FC_ASSERT( comment.abs_rshares == 0, "One of the included comment options requires the comment to have no rshares allocated to it." ); - if( !_db.has_hardfork( STEEMIT_HARDFORK_0_17__773) ) // TODO: Remove after hardfork 17 - FC_ASSERT( o.extensions.size() == 0, "Operation extensions for the comment_options_operation are not currently supported." ); FC_ASSERT( comment.allow_curation_rewards >= o.allow_curation_rewards, "Curation rewards cannot be re-enabled." ); FC_ASSERT( comment.allow_votes >= o.allow_votes, "Voting cannot be re-enabled." ); FC_ASSERT( comment.max_accepted_payout >= o.max_accepted_payout, "A comment cannot accept a greater payout." ); @@ -1364,6 +1361,7 @@ void vote_evaluator::do_apply( const vote_operation& o ) uint64_t old_weight = util::evaluate_reward_curve( old_vote_rshares.value, reward_fund.curation_reward_curve, reward_fund.content_constant ).to_uint64(); uint64_t new_weight = util::evaluate_reward_curve( comment.vote_rshares.value, reward_fund.curation_reward_curve, reward_fund.content_constant ).to_uint64(); cv.weight = new_weight - old_weight; + #warning( "TODO: After HF19 caclulate which comment was the first to be paid on sqrt curation and activate the logic based on time" ) if( !_db.has_hardfork( STEEMIT_HARDFORK_0_19__1052 ) ) { old_weight = util::evaluate_reward_curve( old_vote_rshares.value, curve_id::square_root ).to_uint64(); @@ -2189,8 +2187,6 @@ void claim_reward_balance_evaluator::do_apply( const claim_reward_balance_operat void delegate_vesting_shares_evaluator::do_apply( const delegate_vesting_shares_operation& op ) { - FC_ASSERT( _db.has_hardfork( STEEMIT_HARDFORK_0_17__818 ), "delegate_vesting_shares_operation is not enabled until HF 17" ); //TODO: Delete after hardfork - const auto& delegator = _db.get_account( op.delegator ); const auto& delegatee = _db.get_account( op.delegatee ); auto delegation = _db.find< vesting_delegation_object, by_delegation >( boost::make_tuple( op.delegator, op.delegatee ) ); @@ -2261,7 +2257,8 @@ void delegate_vesting_shares_evaluator::do_apply( const delegate_vesting_shares_ "Delegation must be removed or be a significant change and leave a minimum delegation. min_update: ${min_update}, min_delegation: ${min_delegation}", ("min_update", min_update)("min_delegation", min_delegation) ); } - else // TODO: Check and remove after HF19 + #warning( "TODO: Check and remove conditional after HF19" ) + else { FC_ASSERT( delta >= min_update, "Steem Power increase is not enough of a different. min_update: ${min}", ("min", min_update) ); FC_ASSERT( op.vesting_shares >= min_delegation || op.vesting_shares.amount == 0, "Delegation must be removed or leave minimum delegation amount of ${v}", ("v", min_delegation) ); diff --git a/libraries/chain/witness_schedule.cpp b/libraries/chain/witness_schedule.cpp index e2cd2c7718..52ff45ba0c 100644 --- a/libraries/chain/witness_schedule.cpp +++ b/libraries/chain/witness_schedule.cpp @@ -259,7 +259,6 @@ void update_witness_schedule4( database& db ) db.modify( wso, [&]( witness_schedule_object& _wso ) { - // active witnesses has exactly STEEMIT_MAX_WITNESSES elements, asserted above for( size_t i = 0; i < active_witnesses.size(); i++ ) { _wso.current_shuffled_witnesses[i] = active_witnesses[i]; From 2b15cfa35f4723423aa84ca31d13a222314e8b9e Mon Sep 17 00:00:00 2001 From: JustinW Date: Fri, 2 Jun 2017 12:13:53 -0400 Subject: [PATCH 15/20] update shared memory size, proxy buffering off --- contrib/fullnode.config.ini | 2 +- contrib/healthcheck.conf.template | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/fullnode.config.ini b/contrib/fullnode.config.ini index fa6182cac4..9a126801a3 100644 --- a/contrib/fullnode.config.ini +++ b/contrib/fullnode.config.ini @@ -1,5 +1,5 @@ # Set larger shared-file-size than default -shared-file-size = 48G +shared-file-size = 54G # Set an API to be publicly available, may be specified multiple times public-api = database_api login_api account_by_key_api network_broadcast_api tag_api follow_api market_history_api raw_block_api diff --git a/contrib/healthcheck.conf.template b/contrib/healthcheck.conf.template index 9df3d404ae..3b690f4cb6 100644 --- a/contrib/healthcheck.conf.template +++ b/contrib/healthcheck.conf.template @@ -13,6 +13,7 @@ proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; + proxy_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; add_header 'Access-Control-Allow-Origin' '*'; From 7c4d213d231afc9c7e1ed7fb461db618ca51e8db Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Fri, 2 Jun 2017 12:24:21 -0400 Subject: [PATCH 16/20] Update to 56G --- libraries/app/application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/app/application.cpp b/libraries/app/application.cpp index 1f01f31772..d744670682 100644 --- a/libraries/app/application.cpp +++ b/libraries/app/application.cpp @@ -970,7 +970,7 @@ void application::set_program_options(boost::program_options::options_descriptio ("seed-node,s", bpo::value>()->composing(), "P2P nodes to connect to on startup (may specify multiple times)") ("checkpoint,c", bpo::value>()->composing(), "Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints.") ("shared-file-dir", bpo::value(), "Location of the shared memory file. Defaults to data_dir/blockchain") - ("shared-file-size", bpo::value()->default_value("48G"), "Size of the shared memory file. Default: 48G") + ("shared-file-size", bpo::value()->default_value("54G"), "Size of the shared memory file. Default: 54G") ("rpc-endpoint", bpo::value()->implicit_value("127.0.0.1:8090"), "Endpoint for websocket RPC to listen on") ("rpc-tls-endpoint", bpo::value()->implicit_value("127.0.0.1:8089"), "Endpoint for TLS websocket RPC to listen on") ("read-forward-rpc", bpo::value(), "Endpoint to forward write API calls to for a read node" ) From 06c34f3cc5ec62edb8e289264c0ab4a39f5c24dd Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Fri, 2 Jun 2017 11:49:20 -0400 Subject: [PATCH 17/20] Fix miscalculation for vote sort vote weight #1148 --- libraries/chain/steem_evaluator.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/chain/steem_evaluator.cpp b/libraries/chain/steem_evaluator.cpp index 7f34a7f3df..9ffe3f1460 100644 --- a/libraries/chain/steem_evaluator.cpp +++ b/libraries/chain/steem_evaluator.cpp @@ -1416,7 +1416,7 @@ void vote_evaluator::do_apply( const vote_operation& o ) _db.modify( comment, [&]( comment_object& c ) { c.total_vote_weight += max_vote_weight; - c.total_sqrt_vote_weight = sqrt_max_vote_weight; + c.total_sqrt_vote_weight += sqrt_max_vote_weight; }); } if( !_db.has_hardfork( STEEMIT_HARDFORK_0_17__774) ) @@ -1515,6 +1515,7 @@ void vote_evaluator::do_apply( const vote_operation& o ) _db.modify( comment, [&]( comment_object& c ) { c.total_vote_weight -= itr->weight; + c.total_sqrt_vote_weight -= itr->sqrt_weight; }); _db.modify( *itr, [&]( comment_vote_object& cv ) @@ -1523,6 +1524,7 @@ void vote_evaluator::do_apply( const vote_operation& o ) cv.vote_percent = o.weight; cv.last_update = _db.head_block_time(); cv.weight = 0; + cv.sqrt_weight = 0; cv.num_changes += 1; }); From 7a417d2186a275e2c189dc7c27656d89a6451377 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Fri, 2 Jun 2017 15:39:52 -0400 Subject: [PATCH 18/20] Test patch #1148 --- libraries/chain/hardfork.d/0_6.hf | 4 ++ libraries/chain/steem_evaluator.cpp | 10 +++- tests/tests/operation_tests.cpp | 92 +++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+), 1 deletion(-) diff --git a/libraries/chain/hardfork.d/0_6.hf b/libraries/chain/hardfork.d/0_6.hf index aa86b802b5..31962cbd71 100644 --- a/libraries/chain/hardfork.d/0_6.hf +++ b/libraries/chain/hardfork.d/0_6.hf @@ -16,6 +16,10 @@ // Fri Jun 24 14:00:00 UTC 2016 // Fri Jun 24 10:00:00 EDT 2016 +#ifdef IS_TEST_NET +#define STEEMIT_HARDFORK_0_6_REVERSE_AUCTION_TIME (0) +#else #define STEEMIT_HARDFORK_0_6_REVERSE_AUCTION_TIME (1467295200-(60*60*24*6)) +#endif #define STEEMIT_HARDFORK_0_6_VERSION hardfork_version( 0, 6 ) #endif diff --git a/libraries/chain/steem_evaluator.cpp b/libraries/chain/steem_evaluator.cpp index 9ffe3f1460..a099bbcb0c 100644 --- a/libraries/chain/steem_evaluator.cpp +++ b/libraries/chain/steem_evaluator.cpp @@ -1362,7 +1362,14 @@ void vote_evaluator::do_apply( const vote_operation& o ) uint64_t new_weight = util::evaluate_reward_curve( comment.vote_rshares.value, reward_fund.curation_reward_curve, reward_fund.content_constant ).to_uint64(); cv.weight = new_weight - old_weight; #warning( "TODO: After HF19 caclulate which comment was the first to be paid on sqrt curation and activate the logic based on time" ) + +#ifndef IS_TEST_NET +/* + * Disabling this check so we can test the precalculation logic. + * It is not needed on live because the precalculation is only needed pre HF19 + */ if( !_db.has_hardfork( STEEMIT_HARDFORK_0_19__1052 ) ) +#endif { old_weight = util::evaluate_reward_curve( old_vote_rshares.value, curve_id::square_root ).to_uint64(); new_weight = util::evaluate_reward_curve( comment.vote_rshares.value, curve_id::square_root ).to_uint64(); @@ -1395,8 +1402,9 @@ void vote_evaluator::do_apply( const vote_operation& o ) w *= delta_t; w /= STEEMIT_REVERSE_AUCTION_WINDOW_SECONDS; cv.weight = w.to_uint64(); - +#ifndef IS_TEST_NET if( _db.has_hardfork( STEEMIT_HARDFORK_0_17 ) ) +#endif { uint128_t w(sqrt_max_vote_weight); w *= delta_t; diff --git a/tests/tests/operation_tests.cpp b/tests/tests/operation_tests.cpp index 0494dee515..5f1258deb6 100644 --- a/tests/tests/operation_tests.cpp +++ b/tests/tests/operation_tests.cpp @@ -6651,5 +6651,97 @@ BOOST_AUTO_TEST_CASE( comment_beneficiaries_apply ) FC_LOG_AND_RETHROW() } +#warning( "TODO: This test is not needed after HF19" ) +BOOST_AUTO_TEST_CASE( vote_weight_test ) +{ + try + { + BOOST_TEST_MESSAGE( "Test Comment Beneficiaries" ); + ACTORS( (alice)(bob)(sam)(dave) ) + generate_block(); + + set_price_feed( price( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ) ); + + comment_operation comment; + vote_operation vote; + signed_transaction tx; + + comment.author = "alice"; + comment.permlink = "test"; + comment.parent_permlink = "test"; + comment.title = "test"; + comment.body = "foobar"; + + tx.operations.push_back( comment ); + tx.set_expiration( db.head_block_time() + STEEMIT_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db.get_chain_id() ); + db.push_transaction( tx, 0 ); + + generate_blocks( 10 ); + + BOOST_TEST_MESSAGE( "--- Testing initial vote" ); + + vote.voter = "alice"; + vote.author = "alice"; + vote.permlink = "test"; + vote.weight = STEEMIT_100_PERCENT; + + tx.clear(); + tx.operations.push_back( vote ); + tx.sign( alice_private_key, db.get_chain_id() ); + db.push_transaction( tx, 0 ); + + { + const auto& alice = db.get_account( "alice" ); + const auto& alice_comment = db.get_comment( comment.author, comment.permlink ); + const auto& alice_vote = db.get< comment_vote_object, by_comment_voter >( boost::make_tuple( alice_comment.id, alice.id ) ); + + BOOST_REQUIRE( alice_vote.weight == alice_vote.sqrt_weight ); + BOOST_REQUIRE( alice_comment.total_vote_weight == alice_comment.total_sqrt_vote_weight ); + } + + generate_blocks( 10 ); + + BOOST_TEST_MESSAGE( "--- Testing second vote" ); + + vote.voter = "bob"; + + tx.clear(); + tx.operations.push_back( vote ); + tx.sign( bob_private_key, db.get_chain_id() ); + db.push_transaction( tx, 0 ); + + { + const auto& bob = db.get_account( "bob" ); + const auto& alice_comment = db.get_comment( comment.author, comment.permlink ); + const auto& bob_vote = db.get< comment_vote_object, by_comment_voter >( boost::make_tuple( alice_comment.id, bob.id ) ); + + BOOST_REQUIRE( bob_vote.weight == bob_vote.sqrt_weight ); + BOOST_REQUIRE( alice_comment.total_vote_weight == alice_comment.total_sqrt_vote_weight ); + } + + generate_blocks( 10 ); + + BOOST_TEST_MESSAGE( "--- Testing removing a vote" ); + + vote.weight = 0; + + tx.clear(); + tx.operations.push_back( vote ); + tx.sign( bob_private_key, db.get_chain_id() ); + db.push_transaction( tx, 0 ); + + { + const auto& bob = db.get_account( "bob" ); + const auto& alice_comment = db.get_comment( comment.author, comment.permlink ); + const auto& bob_vote = db.get< comment_vote_object, by_comment_voter >( boost::make_tuple( alice_comment.id, bob.id ) ); + + BOOST_REQUIRE( bob_vote.weight == bob_vote.sqrt_weight ); + BOOST_REQUIRE( alice_comment.total_vote_weight == alice_comment.total_sqrt_vote_weight ); + } + } + FC_LOG_AND_RETHROW() +} + BOOST_AUTO_TEST_SUITE_END() #endif From aeb2703443ff9aea4b9b340fe405f9c48d500f7a Mon Sep 17 00:00:00 2001 From: theoreticalbts Date: Fri, 2 Jun 2017 15:48:04 -0400 Subject: [PATCH 19/20] Forbid no-op zero delegation #1126 --- libraries/chain/steem_evaluator.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/chain/steem_evaluator.cpp b/libraries/chain/steem_evaluator.cpp index 90e17e8bc7..63a1ec3fa2 100644 --- a/libraries/chain/steem_evaluator.cpp +++ b/libraries/chain/steem_evaluator.cpp @@ -2261,6 +2261,10 @@ void delegate_vesting_shares_evaluator::do_apply( const delegate_vesting_shares_ FC_ASSERT( delta >= min_update, "Steem Power decrease is not enough of a difference. min_update: ${min}", ("min", min_update) ); FC_ASSERT( op.vesting_shares >= min_delegation, "Delegation must be removed or leave minimum delegation amount of ${v}", ("v", min_delegation) ); } + else + { + FC_ASSERT( delegation->vesting_shares.amount > 0, "Delegation would set vesting_shares to zero, but it is already zero"); + } } else // TODO: Check and remove after HF19 { From 16ff1524d9defcb3ec4a763379597d6d8ef14c51 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Fri, 2 Jun 2017 16:15:28 -0400 Subject: [PATCH 20/20] Fix test that broke as an unrelated consequence of the testing infrastructure #1148 --- tests/tests/operation_time_tests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests/operation_time_tests.cpp b/tests/tests/operation_time_tests.cpp index 3f7b5df69e..f3af8da2b7 100644 --- a/tests/tests/operation_time_tests.cpp +++ b/tests/tests/operation_time_tests.cpp @@ -145,7 +145,7 @@ BOOST_AUTO_TEST_CASE( comment_payout_equalize ) const account_object& bob_account = db.get_account("bob"); const account_object& dave_account = db.get_account("dave"); - BOOST_CHECK( alice_account.reward_sbd_balance == ASSET( "10720.000 TBD" ) ); + BOOST_CHECK( alice_account.reward_sbd_balance == ASSET( "14288.000 TBD" ) ); BOOST_CHECK( bob_account.reward_sbd_balance == ASSET( "0.000 TBD" ) ); BOOST_CHECK( dave_account.reward_sbd_balance == alice_account.reward_sbd_balance ); }