Compare commits
45 commits
master
...
feature/re
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4647044ab3 | ||
|
|
a73ba73aaf | ||
|
|
b6b5893979 | ||
|
|
c5953c542c | ||
|
|
1e84ce51de | ||
|
|
902f76a093 | ||
|
|
24dbcc628e | ||
|
|
e24de4f199 | ||
|
|
15ebbfe6bb | ||
|
|
917e09a80b | ||
|
|
646b421308 | ||
|
|
dd2a531364 | ||
|
|
ae0a895daf | ||
|
|
8530228189 | ||
|
|
85fb3fee67 | ||
|
|
2c9fd332d4 | ||
|
|
fb01043e55 | ||
|
|
a1186372d2 | ||
|
|
3a51723e51 | ||
|
|
f23244cde0 | ||
|
|
fee7bc99fa | ||
|
|
6cf31b1075 | ||
|
|
97eaf4575a | ||
|
|
d367c308b8 | ||
|
|
838a9820f1 | ||
|
|
3e1f38d972 | ||
|
|
dfd3dfae09 | ||
|
|
1f72b4fbd6 | ||
|
|
3ee2439d5b | ||
|
|
cfecfb457b | ||
|
|
25bbacaa88 | ||
|
|
0175a7d0ec | ||
|
|
fd492ca196 | ||
|
|
2a6c917e4c | ||
|
|
6fe15f27b0 | ||
|
|
d2374aeed9 | ||
|
|
6f792db52d | ||
|
|
1b61016693 | ||
|
|
0f375777c2 | ||
|
|
a2ce65e1ef | ||
|
|
432876a677 | ||
|
|
948e7dd5e4 | ||
|
|
b21f9c4282 | ||
|
|
1586531e13 | ||
|
|
8e0e20eb6f |
24 changed files with 300 additions and 331 deletions
|
|
@ -156,16 +156,14 @@ test-e2e:
|
||||||
- docker pull $IMAGE
|
- docker pull $IMAGE
|
||||||
- docker tag $IMAGE peerplays-base:latest
|
- docker tag $IMAGE peerplays-base:latest
|
||||||
- docker image ls -a
|
- docker image ls -a
|
||||||
- docker-compose build
|
|
||||||
- python3 main.py --start all
|
- python3 main.py --start all
|
||||||
- docker ps -a
|
- docker ps -a
|
||||||
- python3 -m pytest test_btc_init_state.py test_hive_inital_state.py test_pp_inital_state.py
|
- python3 -m pytest test_btc_init_state.py test_hive_inital_state.py test_pp_inital_state.py
|
||||||
- python3 main.py --stop
|
|
||||||
- deactivate
|
- deactivate
|
||||||
- docker ps -a
|
- docker ps -a
|
||||||
after_script:
|
after_script:
|
||||||
- docker rmi $(docker images -a | grep -v 'hive-for-peerplays\|ethereum-for-peerplays\|bitcoin-for-peerplays\|ubuntu-for-peerplays' | awk '{print $3}')
|
- cd peerplays-utils/peerplays-qa-environment/e2e-tests
|
||||||
|
- docker-compose down
|
||||||
|
- docker rmi -f $(docker images -a | grep -v 'hive-for-peerplays\|ethereum-for-peerplays\|bitcoin-for-peerplays\|ubuntu-for-peerplays\|peerplays-base\|IMAGE' | awk '{print $3}')
|
||||||
tags:
|
tags:
|
||||||
- python-tests
|
- python-tests
|
||||||
when:
|
|
||||||
manual
|
|
||||||
|
|
|
||||||
|
|
@ -134,8 +134,11 @@ RUN \
|
||||||
libsodium-dev
|
libsodium-dev
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
git clone --branch version3.8.0 --depth 1 https://gitlab.com/PBSA/peerplays-1.0/libbitcoin-explorer.git && \
|
git clone https://github.com/libbitcoin/libbitcoin-build.git && \
|
||||||
cd libbitcoin-explorer && \
|
cd libbitcoin-build && \
|
||||||
|
git reset --hard 92c215fc1ffa272bab4d485d369d0306db52d69d && \
|
||||||
|
./generate3.sh && \
|
||||||
|
cd ../libbitcoin-explorer && \
|
||||||
./install.sh && \
|
./install.sh && \
|
||||||
ldconfig && \
|
ldconfig && \
|
||||||
rm -rf /home/peerplays/src/*
|
rm -rf /home/peerplays/src/*
|
||||||
|
|
|
||||||
|
|
@ -134,8 +134,11 @@ RUN \
|
||||||
libsodium-dev
|
libsodium-dev
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
git clone --branch version3.8.0 --depth 1 https://gitlab.com/PBSA/peerplays-1.0/libbitcoin-explorer.git && \
|
git clone https://github.com/libbitcoin/libbitcoin-build.git && \
|
||||||
cd libbitcoin-explorer && \
|
cd libbitcoin-build && \
|
||||||
|
git reset --hard 92c215fc1ffa272bab4d485d369d0306db52d69d && \
|
||||||
|
./generate3.sh && \
|
||||||
|
cd ../libbitcoin-explorer && \
|
||||||
./install.sh && \
|
./install.sh && \
|
||||||
ldconfig && \
|
ldconfig && \
|
||||||
rm -rf /home/peerplays/src/*
|
rm -rf /home/peerplays/src/*
|
||||||
|
|
|
||||||
|
|
@ -77,8 +77,11 @@ sudo ldconfig
|
||||||
|
|
||||||
libbitcoin-explorer setup:
|
libbitcoin-explorer setup:
|
||||||
```
|
```
|
||||||
git clone --branch version3.8.0 --depth 1 https://gitlab.com/PBSA/peerplays-1.0/libbitcoin-explorer.git
|
git clone https://github.com/libbitcoin/libbitcoin-build.git
|
||||||
cd libbitcoin-explorer
|
cd libbitcoin-build
|
||||||
|
git reset --hard 92c215fc1ffa272bab4d485d369d0306db52d69d
|
||||||
|
./generate3.sh
|
||||||
|
cd ../libbitcoin-explorer
|
||||||
sudo ./install.sh
|
sudo ./install.sh
|
||||||
sudo ldconfig
|
sudo ldconfig
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -2197,7 +2197,7 @@ vector<variant> database_api_impl::lookup_vote_ids(const vector<vote_id_type> &v
|
||||||
case vote_id_type::committee: {
|
case vote_id_type::committee: {
|
||||||
auto itr = committee_idx.find(id);
|
auto itr = committee_idx.find(id);
|
||||||
if (itr != committee_idx.end())
|
if (itr != committee_idx.end())
|
||||||
result.emplace_back(variant(*itr, 2)); // Depth of committee_member_object is 1, add 1 to be safe
|
result.emplace_back(variant(*itr, 1));
|
||||||
else
|
else
|
||||||
result.emplace_back(variant());
|
result.emplace_back(variant());
|
||||||
break;
|
break;
|
||||||
|
|
@ -2205,7 +2205,7 @@ vector<variant> database_api_impl::lookup_vote_ids(const vector<vote_id_type> &v
|
||||||
case vote_id_type::witness: {
|
case vote_id_type::witness: {
|
||||||
auto itr = witness_idx.find(id);
|
auto itr = witness_idx.find(id);
|
||||||
if (itr != witness_idx.end())
|
if (itr != witness_idx.end())
|
||||||
result.emplace_back(variant(*itr, 2)); // Depth of witness_object is 1, add 1 here to be safe
|
result.emplace_back(variant(*itr, 1));
|
||||||
else
|
else
|
||||||
result.emplace_back(variant());
|
result.emplace_back(variant());
|
||||||
break;
|
break;
|
||||||
|
|
@ -2213,15 +2213,11 @@ vector<variant> database_api_impl::lookup_vote_ids(const vector<vote_id_type> &v
|
||||||
case vote_id_type::worker: {
|
case vote_id_type::worker: {
|
||||||
auto itr = for_worker_idx.find(id);
|
auto itr = for_worker_idx.find(id);
|
||||||
if (itr != for_worker_idx.end()) {
|
if (itr != for_worker_idx.end()) {
|
||||||
result.emplace_back(variant(*itr, 4)); // Depth of worker_object is 3, add 1 here to be safe.
|
result.emplace_back(variant(*itr, 1));
|
||||||
// If we want to extract the balance object inside,
|
|
||||||
// need to increase this value
|
|
||||||
} else {
|
} else {
|
||||||
auto itr = against_worker_idx.find(id);
|
auto itr = against_worker_idx.find(id);
|
||||||
if (itr != against_worker_idx.end()) {
|
if (itr != against_worker_idx.end()) {
|
||||||
result.emplace_back(variant(*itr, 4)); // Depth of worker_object is 3, add 1 here to be safe.
|
result.emplace_back(variant(*itr, 1));
|
||||||
// If we want to extract the balance object inside,
|
|
||||||
// need to increase this value
|
|
||||||
} else {
|
} else {
|
||||||
result.emplace_back(variant());
|
result.emplace_back(variant());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -386,14 +386,23 @@ vector<uint64_t> database::get_random_numbers(uint64_t minimum, uint64_t maximum
|
||||||
|
|
||||||
bool database::is_asset_creation_allowed(const string &symbol)
|
bool database::is_asset_creation_allowed(const string &symbol)
|
||||||
{
|
{
|
||||||
|
time_point_sec now = head_block_time();
|
||||||
|
std::unordered_set<std::string> post_son_hf_symbols = {"ETH", "USDT", "BNB", "ADA", "DOGE", "XRP", "USDC", "DOT", "UNI", "BUSD", "BCH", "LTC", "SOL", "LINK", "MATIC", "THETA",
|
||||||
|
"WBTC", "XLM", "ICP", "DAI", "VET", "ETC", "TRX", "FIL", "XMR", "EGR", "EOS", "SHIB", "AAVE", "CRO", "ALGO", "AMP", "BTCB",
|
||||||
|
"BSV", "KLAY", "CAKE", "FTT", "LEO", "XTZ", "TFUEL", "MIOTA", "LUNA", "NEO", "ATOM", "MKR", "FEI", "WBNB", "UST", "AVAX",
|
||||||
|
"STEEM", "HIVE", "HBD", "SBD", "BTS"};
|
||||||
if (symbol == "BTC")
|
if (symbol == "BTC")
|
||||||
{
|
{
|
||||||
if (head_block_time() < HARDFORK_SON_TIME)
|
if (now < HARDFORK_SON_TIME)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (post_son_hf_symbols.find(symbol) != post_son_hf_symbols.end())
|
||||||
|
{
|
||||||
|
if (now >= HARDFORK_SON_TIME)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} }
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,6 @@ struct worker_pay_visitor
|
||||||
worker.pay_worker(pay, db);
|
worker.pay_worker(pay, db);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void database::update_worker_votes()
|
void database::update_worker_votes()
|
||||||
{
|
{
|
||||||
auto& idx = get_index_type<worker_index>();
|
auto& idx = get_index_type<worker_index>();
|
||||||
|
|
@ -186,28 +185,6 @@ void database::update_worker_votes()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void database::hotfix_2024()
|
|
||||||
{
|
|
||||||
if (head_block_time() >= HARDFORK_HOTFIX_2024_TIME)
|
|
||||||
{
|
|
||||||
if (get_chain_id().str() == "6b6b5f0ce7a36d323768e534f3edb41c6d6332a541a95725b98e28d140850134")
|
|
||||||
{
|
|
||||||
const auto& vb_idx = get_index_type<vesting_balance_index>().indices().get<by_id>();
|
|
||||||
auto vbo = vb_idx.find(vesting_balance_id_type(388));
|
|
||||||
if (vbo != vb_idx.end())
|
|
||||||
{
|
|
||||||
if (vbo->owner == account_id_type(14786))
|
|
||||||
{
|
|
||||||
modify(*vbo, [&]( vesting_balance_object& _vbo)
|
|
||||||
{
|
|
||||||
_vbo.owner = account_id_type(0);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void database::pay_sons_before_hf_ethereum()
|
void database::pay_sons_before_hf_ethereum()
|
||||||
{
|
{
|
||||||
const auto now = head_block_time();
|
const auto now = head_block_time();
|
||||||
|
|
@ -2306,7 +2283,7 @@ void database::perform_son_tasks()
|
||||||
// Add vote_ids for HIVE and ETHEREUM to all existing SONs
|
// Add vote_ids for HIVE and ETHEREUM to all existing SONs
|
||||||
const auto &all_sons = get_index_type<son_index>().indices().get<by_id>();
|
const auto &all_sons = get_index_type<son_index>().indices().get<by_id>();
|
||||||
for (const son_object &son : all_sons) {
|
for (const son_object &son : all_sons) {
|
||||||
const auto existing_vote_id_bitcoin = son.get_bitcoin_vote_id();
|
vote_id_type existing_vote_id_bitcoin;
|
||||||
vote_id_type new_vote_id_hive;
|
vote_id_type new_vote_id_hive;
|
||||||
vote_id_type new_vote_id_eth;
|
vote_id_type new_vote_id_eth;
|
||||||
|
|
||||||
|
|
@ -2323,7 +2300,7 @@ void database::perform_son_tasks()
|
||||||
// Duplicate all votes from bitcoin to hive
|
// Duplicate all votes from bitcoin to hive
|
||||||
const auto &all_accounts = get_index_type<account_index>().indices().get<by_id>();
|
const auto &all_accounts = get_index_type<account_index>().indices().get<by_id>();
|
||||||
for (const auto &account : all_accounts) {
|
for (const auto &account : all_accounts) {
|
||||||
if (existing_vote_id_bitcoin.valid() && account.options.votes.count(*existing_vote_id_bitcoin) != 0) {
|
if (account.options.votes.count(existing_vote_id_bitcoin) != 0) {
|
||||||
modify(account, [new_vote_id_hive](account_object &a) {
|
modify(account, [new_vote_id_hive](account_object &a) {
|
||||||
a.options.votes.insert(new_vote_id_hive);
|
a.options.votes.insert(new_vote_id_hive);
|
||||||
});
|
});
|
||||||
|
|
@ -2533,7 +2510,6 @@ void database::perform_chain_maintenance(const signed_block& next_block, const g
|
||||||
update_active_committee_members();
|
update_active_committee_members();
|
||||||
update_active_sons();
|
update_active_sons();
|
||||||
update_worker_votes();
|
update_worker_votes();
|
||||||
hotfix_2024();
|
|
||||||
|
|
||||||
const dynamic_global_property_object& dgpo = get_dynamic_global_properties();
|
const dynamic_global_property_object& dgpo = get_dynamic_global_properties();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
#ifndef HARDFORK_HOTFIX_2024_TIME
|
|
||||||
#ifdef BUILD_PEERPLAYS_TESTNET
|
|
||||||
#define HARDFORK_HOTFIX_2024_TIME (fc::time_point_sec::from_iso_string("2023-12-20T00:00:00"))
|
|
||||||
#else
|
|
||||||
#define HARDFORK_HOTFIX_2024_TIME (fc::time_point_sec::from_iso_string("2023-12-20T00:00:00"))
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
@ -2,6 +2,6 @@
|
||||||
#ifdef BUILD_PEERPLAYS_TESTNET
|
#ifdef BUILD_PEERPLAYS_TESTNET
|
||||||
#define HARDFORK_SON_FOR_ETHEREUM_TIME (fc::time_point_sec::from_iso_string("2023-07-17T12:00:00"))
|
#define HARDFORK_SON_FOR_ETHEREUM_TIME (fc::time_point_sec::from_iso_string("2023-07-17T12:00:00"))
|
||||||
#else
|
#else
|
||||||
#define HARDFORK_SON_FOR_ETHEREUM_TIME (fc::time_point_sec::from_iso_string("2023-10-24T12:00:00"))
|
#define HARDFORK_SON_FOR_ETHEREUM_TIME (fc::time_point_sec::from_iso_string("2023-07-31T12:00:00"))
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,7 @@
|
||||||
#define GRAPHENE_RECENTLY_MISSED_COUNT_INCREMENT 4
|
#define GRAPHENE_RECENTLY_MISSED_COUNT_INCREMENT 4
|
||||||
#define GRAPHENE_RECENTLY_MISSED_COUNT_DECREMENT 3
|
#define GRAPHENE_RECENTLY_MISSED_COUNT_DECREMENT 3
|
||||||
|
|
||||||
#define GRAPHENE_CURRENT_DB_VERSION "PPY2.5"
|
#define GRAPHENE_CURRENT_DB_VERSION "PPY2.4"
|
||||||
|
|
||||||
#define GRAPHENE_IRREVERSIBLE_THRESHOLD (70 * GRAPHENE_1_PERCENT)
|
#define GRAPHENE_IRREVERSIBLE_THRESHOLD (70 * GRAPHENE_1_PERCENT)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -594,7 +594,6 @@ namespace graphene { namespace chain {
|
||||||
const flat_map<sidechain_type, vector<son_sidechain_info> >& new_active_sons );
|
const flat_map<sidechain_type, vector<son_sidechain_info> >& new_active_sons );
|
||||||
void update_son_wallet( const flat_map<sidechain_type, vector<son_sidechain_info> >& new_active_sons );
|
void update_son_wallet( const flat_map<sidechain_type, vector<son_sidechain_info> >& new_active_sons );
|
||||||
void update_worker_votes();
|
void update_worker_votes();
|
||||||
void hotfix_2024();
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
double calculate_vesting_factor(const account_object& stake_account);
|
double calculate_vesting_factor(const account_object& stake_account);
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,6 @@ private:
|
||||||
uint16_t retries_threshold = 150;
|
uint16_t retries_threshold = 150;
|
||||||
|
|
||||||
bool first_block_skipped;
|
bool first_block_skipped;
|
||||||
bool son_processing_enabled;
|
|
||||||
void on_applied_block(const signed_block &b);
|
void on_applied_block(const signed_block &b);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -136,8 +135,7 @@ peerplays_sidechain_plugin_impl::peerplays_sidechain_plugin_impl(peerplays_sidec
|
||||||
}
|
}
|
||||||
return net_handlers;
|
return net_handlers;
|
||||||
}()),
|
}()),
|
||||||
first_block_skipped(false),
|
first_block_skipped(false) {
|
||||||
son_processing_enabled(false) {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
peerplays_sidechain_plugin_impl::~peerplays_sidechain_plugin_impl() {
|
peerplays_sidechain_plugin_impl::~peerplays_sidechain_plugin_impl() {
|
||||||
|
|
@ -873,16 +871,7 @@ void peerplays_sidechain_plugin_impl::settle_sidechain_transactions(sidechain_ty
|
||||||
|
|
||||||
void peerplays_sidechain_plugin_impl::on_applied_block(const signed_block &b) {
|
void peerplays_sidechain_plugin_impl::on_applied_block(const signed_block &b) {
|
||||||
if (first_block_skipped) {
|
if (first_block_skipped) {
|
||||||
if (son_processing_enabled) {
|
|
||||||
schedule_son_processing();
|
schedule_son_processing();
|
||||||
} else {
|
|
||||||
const fc::time_point now_fine = fc::time_point::now();
|
|
||||||
const fc::time_point_sec now = now_fine + fc::microseconds(500000);
|
|
||||||
if (plugin.database().get_slot_time(1) >= now) {
|
|
||||||
son_processing_enabled = true;
|
|
||||||
schedule_son_processing();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
first_block_skipped = true;
|
first_block_skipped = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -680,7 +680,7 @@ void sidechain_net_handler::on_applied_block(const signed_block &b) {
|
||||||
const bool is_tracked_asset =
|
const bool is_tracked_asset =
|
||||||
((sidechain == sidechain_type::bitcoin) && (transfer_op.amount.asset_id == gpo.parameters.btc_asset())) ||
|
((sidechain == sidechain_type::bitcoin) && (transfer_op.amount.asset_id == gpo.parameters.btc_asset())) ||
|
||||||
((sidechain == sidechain_type::ethereum) && (transfer_op.amount.asset_id == gpo.parameters.eth_asset())) ||
|
((sidechain == sidechain_type::ethereum) && (transfer_op.amount.asset_id == gpo.parameters.eth_asset())) ||
|
||||||
((sidechain == sidechain_type::ethereum) && (transfer_op.amount.asset_id != gpo.parameters.btc_asset()) && (transfer_op.amount.asset_id != gpo.parameters.hbd_asset()) && (transfer_op.amount.asset_id != gpo.parameters.hive_asset()) && (transfer_op.amount.asset_id != asset_id_type())) ||
|
((sidechain == sidechain_type::ethereum) && (transfer_op.amount.asset_id != gpo.parameters.btc_asset()) && (transfer_op.amount.asset_id != gpo.parameters.hbd_asset()) && (transfer_op.amount.asset_id != gpo.parameters.hive_asset())) ||
|
||||||
((sidechain == sidechain_type::hive) && (transfer_op.amount.asset_id == gpo.parameters.hbd_asset())) ||
|
((sidechain == sidechain_type::hive) && (transfer_op.amount.asset_id == gpo.parameters.hbd_asset())) ||
|
||||||
((sidechain == sidechain_type::hive) && (transfer_op.amount.asset_id == gpo.parameters.hive_asset()));
|
((sidechain == sidechain_type::hive) && (transfer_op.amount.asset_id == gpo.parameters.hive_asset()));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ public:
|
||||||
{
|
{
|
||||||
fixture_.init_nathan();
|
fixture_.init_nathan();
|
||||||
fixture_.generate_blocks(HARDFORK_SON_FOR_ETHEREUM_TIME);
|
fixture_.generate_blocks(HARDFORK_SON_FOR_ETHEREUM_TIME);
|
||||||
fixture_.generate_maintenance_block();
|
fixture_.generate_block();
|
||||||
}
|
}
|
||||||
|
|
||||||
void create_son(const std::string& account_name, const std::string& son_url,
|
void create_son(const std::string& account_name, const std::string& son_url,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue