Commit graph

60 commits

Author SHA1 Message Date
Nathan Hourt
4d836dacb9 Ref !3/#376: Graphene Updates
This adds the most important updates to Graphene from BitShares. Most notably,
https://github.com/bitshares/bitshares-core/issues/1506

Second most notably, it updates Peerplays' FC to be in sync with BitShares FC.

This is a squash commit of several subcommits. The subcommit messages are
reproduced below:

Replace fc::uint128 with boost::multiprecision::uint128_t

replace smart_ref with shared_ptr

Fixes/Remove Unused

Remove NTP time

Remove old macro

This macro is now in FC, so no need to define it here anymore

Replaced fc::array with std::array

Separate exception declaration and implementation

Adapted to fc promise changes

Fixes

Add back in some of Peter's fixes that got lost in the cherry pick

_hash endianness fixes

Remove all uses of fc/smart_ref

It's gone, can't use it anymore

Replace improper static_variant operator overloads with comparators

Fixes

Remove boost::signals from build system; it's header-only so it's not
listed in cmake anymore.

Also remove some unused hashing code

Impl. pack/unpack functions for extension class

Ref #1506: Isolate chain/protocol to its own library

Ref #1506: Add object_downcast_t

Allows the more concise expression `object_downcast_t<xyz>` instead of
the old `typename object_downcast<xyz>::type`

Ref #1506: Move ID types from db to protocol

The ID types, object_id and object_id_type, were defined in the db
library, and the protocol library depends on db to get these types.
Technically, the ID types are defined by the protocol and used by the
database, and not vice versa. Therefore these types should be in the
protocol library, and db should depend on protocol to get them.

This commit makes it so.

Ref #1506: Isolate chain/protocol to its own library

Remove commented-out index code

Wrap overlength line

Remove unused key types

Probably fix Docker build

Fix build after rebase

Ref #1506/#1737: Some requested changes

Ref #1506/#1737: Macro-fy ID type definitions

Define macros to fully de-boilerplate ID type definitions.

Externalities:
 - Rename transaction_object -> transaction_history_object
 - Rename impl_asset_dynamic_data_type ->
impl_asset_dynamic_data_object_type
 - Rename impl_asset_bitasset_data_type ->
impl_asset_bitasset_data_object_type

The first is to avoid a naming collision on transaction_id_type, and the
other two are to maintain consistency with the naming of the other
types.

Ref #1506/#1737: Fix clean_name()

Ref #1506/#1737: Oops

Fix .gitignore

Externalized serialization in protocol library

Fix compile sets

Delete a couple of ghost files that were in the tree but not part
of the project (I accidentally added them to CMakeLists while
merging, but they're broken and not part of the Peerplays code), and
add several files that got dropped from the build during merge.

General fixes

Fix warnings, build issues, unused code, etc.

Fix #1772 by decprecating cli_wallet -H

More fixes

Fix errors and warnings and generally coax it to build

Fix test

I'm pretty sure this didn't break from what I did... But I can't build
the original code, so I can't tell. Anyways, this one now passes...
Others still fail...

Small fix

Fix crash in auth checks

Final fixes

Last round of fixes following the rebase to Beatrice

Rename project in CMakeLists.txt

The CMakeLists.txt declared this project as BitShares and not Peerplays,
which makes it confusing in IDEs. Rename it to be clear which project is
open.

Resolve #374

Replace all object refs in macros with IDs, and fix affected tests to look
up objects by ID rather than using invalidated refs.

A full audit of all tests should be performed to eliminate any further
usage of invalidated object references.

Resolve #373: Add object notifiers

Various fixes

Fixes to various issues, primarily reflections, that cropped up
during merge conflict resolution

Fix startup bug in Bookie plugin

Bookie plugin was preventing the node from starting up because it
registered its secondary indexes to create objects in its own primary
indexes to track objects being created in other primary indexes, and did
so during its `initialize()` step, which is to say, before the database
was loaded from disk at startup. This caused the secondary indexes to
create tracker objects when the observed indexes were loading objects
from disk. This then caused a failure when these tracker indexes were
later loaded from disk, and the first object IDs collided.

This is fixed by refraining from defining secondary indexes until the
`startup()` stage rather than the `initialize()` stage. Primary indexes
are registered in `initialize()`, secondary indexes are registered in
`startup()`.

This also involved adding a new method, "add_secondary_index()", to
`object_database`, as before there was no way to do this because you
couldn't get a non-const index from a non-const database.

I have no idea how this was working before I got here...

Fix egenesis install

Fixes after updates

Rebase on updated develop branch and fix conflicts
2021-11-11 11:25:47 -05:00
Nathan Hourt
14f627c014
Ref #1506: Isolate chain/protocol to its own library 2020-08-23 14:37:00 -05:00
Peter Conrad
7eb3729cc0
Adapted to fc promise changes 2020-08-23 14:18:59 -05:00
Peter Conrad
0569efc068
Replaced fc::array with std::array 2020-08-23 14:18:59 -05:00
John Jones
a24a6bfc68
replace smart_ref with shared_ptr 2020-08-23 14:18:22 -05:00
Peter Conrad
b3d6058485 Externalized db objects 2019-11-29 14:10:40 +03:00
Peter Conrad
71d8bfd843 Externalize serialization of blocks, tx, ops 2019-11-29 14:10:40 +03:00
Alfredo Garcia
fccd856429
Merge pull request #149 from peerplays-network/feature/GRPH-114
[GRPH-114] Check the attacker/buggy client before updating items ids
2019-11-11 09:50:46 -03:00
Sandip Patel
e3b2459de4 Adjust p2p log level (#180) 2019-10-16 20:57:39 +05:30
Wei Yang
83b19d0b84 node.cpp: Check the attacker/buggy client before updating items ids
The peer is an attacker or buggy, which means the item_hashes_received is
not correct.

Move the check before updating items ids to save some time in this case.
2019-09-24 13:35:48 +03:00
Miha Čančula
499a5fc33e
Merge branch 'develop' into GRPH-50-network_broadcast_api-fix-v2 2019-09-18 16:36:42 +02:00
John Jones
8f4483dfea remove needless find() 2019-08-29 07:39:20 +03:00
Abit
a49f8bf47c
Merge pull request #714 from pmconrad/json_fix
JSON fix
2019-08-28 15:42:21 +02:00
pbattu
0f06a9af2a Required changes to upgrade blockchain to ubuntu18.04 2019-05-20 22:32:17 -03:00
Bartek Wrona
b5c8cd0ad3 Fixes for most of valgrind errors related to unintialized values
Including one additional debug code (related to read_loop MT access).
2017-09-07 10:04:00 -04:00
theoreticalbts
a9de7c1da3 node.cpp: Fix possible race condition in process_backlog_of_sync_blocks() #1434 2017-09-07 10:04:00 -04:00
Eric Frias
f66eeeb73b Fix bug where peers could get stuck in sync mode.
There was a case where we had requested a block through the sync
mechanism and also received it through the normal inventory mechanism
where we would leave the peer in a sync state, but never ask them
for more sync blocks.

This commit fixes the bug that put us into that stuck state, and also
adds code to disconnect peers if we ever manage to get into that stalled
state.
2017-09-07 10:04:00 -04:00
oxarbitrage
fab2794699 remove GRAPHENE_TEST_NETWORK_VERSION
https://github.com/bitshares/bitshares-core/issues/307
2017-06-11 11:47:11 -03:00
abitmore
06b18c4011 Fix Windows build. 2017-06-03 01:21:17 +00:00
oxarbitrage
0184fb19e8 additional conole log for already in use p2p code
github issue #77
2017-04-20 20:13:43 -03:00
Vikram Rajkumar
8ae1f6b3a5 Remove NTP time 2017-03-16 12:53:52 -05:00
abitmore
5ad763b0bf Catch all exception when connecting to other peers 2016-09-06 20:57:01 +02:00
abitmore
aa844f56fa Fix seed node stuck issue #654 2016-05-16 22:03:08 +02:00
theoreticalbts
2666350978 Fix iteration logic in _handle_message_calls_in_progress shutdown loop to handle concurrent modification #598 2016-02-25 11:31:08 -05:00
Fabian Schuh
5111084730 [License] Modify cpp and hpp headers to MIT #496 2016-01-07 11:44:52 -05:00
theoreticalbts
d0609e8e74 Update copyright notice for BitShares 2015-10-12 13:48:40 -04:00
theoreticalbts
60f0812de2 Update copyright notice 2015-10-12 13:32:47 -04:00
Eric Frias
7bc7004ef9 Remove items from p2p's list of items to fetch when we expect them to become unfetchable 2015-10-08 15:17:01 -04:00
Daniel Larimer
bb0ea77e80 throttling P2P code 2015-10-05 08:44:59 -04:00
Eric Frias
74bbde785b In the p2p networking code, request multiple transactions at a time to improve performance during flooding 2015-09-29 17:37:32 -04:00
Eric Frias
405a9e71b2 When the p2p code pushes a transaction that fails to apply, remember that transaction so we don't fetch it again as soon as a different peer tells us about it. 2015-09-22 17:13:35 -04:00
Eric Frias
d92736617e Improve logging of exceptions in p2p code (log via reflection instead of converting to strings) 2015-09-22 17:13:35 -04:00
Eric Frias
5bfbe0df86 When a we're in normal (in-sync) mode and we get a block that doesn't link to the chain, restart sync with that peer to try to get the missing block 2015-09-21 16:15:51 -04:00
Eric Frias
9536350a50 Reduce the amount of time we'll wait for a peer to provide a requested block to
one second (down from one full block interval), to reduce the chance of us getting
blocks out of order.
Remove the variable we use to keep track of the last block number a peer has;
This was an optimization in BitShares 0.x where looking up the number was expensive,
and maintaining it is error-prone.
2015-09-21 11:48:58 -04:00
theoreticalbts
a2b6f1a741 Change assert to elog #334 2015-09-21 11:01:11 -04:00
Daniel Larimer
a5c1bc7faf Merge branch 'master' of https://github.com/cryptonomex/graphene 2015-09-21 08:46:57 -04:00
Daniel Larimer
6b915054d2 potential fix for peer not disconnecting after invalid block 2015-09-21 08:46:55 -04:00
Eric Frias
cdd5cae385 Add extra error reporting when we get a list of sync blocks that don't make sense, and replace the assert
with a log+disconnect.
2015-09-19 17:08:57 -04:00
Eric Frias
e5777faa7d Reduce the disconnection timeout in the p2p code for when a peer offers us a block and doesn't respond, now it's one block interval, down from three. This is intended to reduce the chance of a slow peer causing us to push blocks out of order. 2015-09-18 09:39:43 -04:00
Eric Frias
0046cc0698 Fix error messages generated when peer is syncing with empty blockchain 2015-09-11 15:26:55 -04:00
Eric Frias
f9a27059e5 Fix incorrect error message generated when syncing with peer that has no blocks 2015-09-11 10:09:42 -04:00
Eric Frias
8e9bd890a8 Fix bugs, improve logging in p2p sync 2015-09-10 19:33:11 -04:00
Eric Frias
928b6934e0 Merge branch 'master' into p2p_sync_fixes
Conflicts:
	libraries/chain/include/graphene/chain/database.hpp
2015-09-10 17:34:20 -04:00
Eric Frias
b6bba74301 Restore much of the syncing code from BitShares 0.x, and add optimizations that prevent us from attempting to sync with peers those blockchain diverged from ours many blocks ago, which also reduces the size of sync messages. Add logging. 2015-09-10 08:56:29 -04:00
theoreticalbts
8ebc1cfc43 node.cpp: Don't dump empty iterators 2015-09-08 16:08:11 -04:00
Eric Frias
a943de8b76 When rolling back on save, remove the rolled back blocks from our
databases so when we restart and begin syncing, we re-download and
push those rolled back blocks  (fixes bug introduced in
a5071f2568).
Fix logging of incorrect block numbers in p2p log.
2015-09-04 15:22:12 -04:00
Eric Frias
5662a8423c Increase duration of message cache from two blocks (which in practice meant anything > 1 block) to 30 blocks, and move the constant to config.hpp 2015-09-02 17:26:26 -04:00
Eric Frias
d35e2d6d4e reorder the p2p network's terminate_inactive_connections_loop() to prevent us
from being interrupted before we delete an unresponsive peer #288
2015-09-02 12:15:02 -04:00
Eric Frias
c0b9af9a99 Greatly reduce the amount of time the p2p network code will wait for a peer to
return a requested block/transaction.  Make this time dependent on the actual block
interval.  This should allow the the node to give up and request the block from
another peer before the ~30 second undo interval has passed.
Fix the merkle root calculation to avoid reading
past the end of a vector.  Modify the algorithm to do what was likely intended
(this modification is currently disabled because it will yield different results
than the currently-running testnet)
Fix windows build errors.
2015-08-24 09:57:47 -04:00
theoreticalbts
2e9876b557 Implement chain-locked transactions 2015-08-06 12:56:37 -04:00