Skip to content

Instantly share code, notes, and snippets.

@xeroc
Created September 26, 2019 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xeroc/1a39eb2f24d5c6355237574e5fbc38ce to your computer and use it in GitHub Desktop.
Save xeroc/1a39eb2f24d5c6355237574e5fbc38ce to your computer and use it in GitHub Desktop.
diff --git a/Dockerfile b/Dockerfile
index 618ff161..78d69a1d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -17,9 +17,8 @@ RUN \
libncurses-dev \
doxygen \
ca-certificates \
+ fish \
&& \
- apt-get update -y && \
- apt-get install -y fish && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
@@ -38,6 +37,7 @@ RUN \
git submodule update --init --recursive && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
+ -DGRAPHENE_DISABLE_UNITY_BUILD=ON \
. && \
make witness_node cli_wallet && \
install -s programs/witness_node/witness_node programs/cli_wallet/cli_wallet /usr/local/bin && \
diff --git a/genesis.json b/genesis.json
index f918c858..a28cdf93 100644
--- a/genesis.json
+++ b/genesis.json
@@ -1,702 +1 @@
-{
- "initial_timestamp": "2018-11-20T13:03:00",
- "max_core_supply": 400000000000000,
- "initial_parameters": {
- "current_fees": {
- "parameters": [
- [
- 0,
- {
- "fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 1,
- {
- "fee": 0
- }
- ],
- [
- 2,
- {
- "fee": 0
- }
- ],
- [
- 3,
- {
- "fee": 0
- }
- ],
- [
- 4,
- {}
- ],
- [
- 5,
- {
- "basic_fee": 0,
- "premium_fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 6,
- {
- "fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 7,
- {
- "fee": 0
- }
- ],
- [
- 8,
- {
- "membership_annual_fee": 0,
- "membership_lifetime_fee": 0
- }
- ],
- [
- 9,
- {
- "fee": 0
- }
- ],
- [
- 10,
- {
- "symbol3": 0,
- "symbol4": 0,
- "long_symbol": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 11,
- {
- "fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 12,
- {
- "fee": 0
- }
- ],
- [
- 13,
- {
- "fee": 0
- }
- ],
- [
- 14,
- {
- "fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 15,
- {
- "fee": 0
- }
- ],
- [
- 16,
- {
- "fee": 0
- }
- ],
- [
- 17,
- {
- "fee": 0
- }
- ],
- [
- 18,
- {
- "fee": 0
- }
- ],
- [
- 19,
- {
- "fee": 0
- }
- ],
- [
- 20,
- {
- "fee": 0
- }
- ],
- [
- 21,
- {
- "fee": 0
- }
- ],
- [
- 22,
- {
- "fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 23,
- {
- "fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 24,
- {
- "fee": 0
- }
- ],
- [
- 25,
- {
- "fee": 0
- }
- ],
- [
- 26,
- {
- "fee": 0
- }
- ],
- [
- 27,
- {
- "fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 28,
- {
- "fee": 0
- }
- ],
- [
- 29,
- {
- "fee": 0
- }
- ],
- [
- 30,
- {
- "fee": 0
- }
- ],
- [
- 31,
- {
- "fee": 0
- }
- ],
- [
- 32,
- {
- "fee": 0
- }
- ],
- [
- 33,
- {
- "fee": 0
- }
- ],
- [
- 34,
- {
- "fee": 0
- }
- ],
- [
- 35,
- {
- "fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 36,
- {
- "fee": 0
- }
- ],
- [
- 37,
- {}
- ],
- [
- 38,
- {
- "fee": 0,
- "price_per_kbyte": 0
- }
- ],
- [
- 39,
- {
- "fee": 0,
- "price_per_output": 0
- }
- ],
- [
- 40,
- {
- "fee": 0,
- "price_per_output": 0
- }
- ],
- [
- 41,
- {
- "fee": 0
- }
- ],
- [
- 42,
- {}
- ],
- [
- 43,
- {
- "fee": 0
- }
- ],
- [
- 44,
- {}
- ],
- [
- 45,
- {
- "fee": 0
- }
- ],
- [
- 46,
- {
- "fee": 0
- }
- ],
- [
- 47,
- {
- "fee": 0
- }
- ],
- [
- 48,
- {
- "fee": 0
- }
- ],
- [
- 49,
- {
- "distribution_base_fee": 0,
- "distribution_fee_per_holder": 0
- }
- ],
- [
- 50,
- {}
- ],
- [
- 51,
- {
- "fee": 0
- }
- ],
- [
- 52,
- {
- "fee": 0
- }
- ],
- [
- 53,
- {
- "fee": 0
- }
- ],
- [
- 54,
- {
- "fee": 0
- }
- ],
- [
- 55,
- {
- "fee": 0
- }
- ],
- [
- 56,
- {
- "fee": 0
- }
- ],
- [
- 57,
- {
- "fee": 0
- }
- ],
- [
- 58,
- {
- "fee": 0
- }
- ],
- [
- 59,
- {
- "fee": 0
- }
- ],
- [
- 60,
- {
- "fee": 0
- }
- ],
- [
- 61,
- {
- "fee": 0
- }
- ],
- [
- 62,
- {
- "fee": 0
- }
- ],
- [
- 63,
- {
- "fee": 0
- }
- ],
- [
- 64,
- {}
- ],
- [
- 65,
- {}
- ],
- [
- 66,
- {
- "fee": 0
- }
- ],
- [
- 67,
- {}
- ],
- [
- 68,
- {
- "fee": 0
- }
- ],
- [
- 69,
- {}
- ],
- [
- 70,
- {
- "fee": 0
- }
- ],
- [
- 71,
- {
- "fee": 0
- }
- ],
- [
- 72,
- {
- "fee": 0
- }
- ],
- [
- 73,
- {
- "fee": 0
- }
- ],
- [
- 74,
- {
- "fee": 0
- }
- ],
- [
- 75,
- {}
- ],
- [
- 76,
- {}
- ]
- ],
- "scale": 10000
- },
- "block_interval": 1,
- "maintenance_interval": 86400,
- "maintenance_skip_slots": 3,
- "committee_proposal_review_period": 1209600,
- "maximum_transaction_size": 2048,
- "maximum_block_size": 1228800000,
- "maximum_time_until_expiration": 86400,
- "maximum_proposal_lifetime": 2419200,
- "maximum_asset_whitelist_authorities": 10,
- "maximum_asset_feed_publishers": 10,
- "maximum_witness_count": 1001,
- "maximum_committee_count": 1001,
- "maximum_authority_membership": 10,
- "reserve_percent_of_fee": 2000,
- "network_percent_of_fee": 2000,
- "lifetime_referrer_percent_of_fee": 3000,
- "cashback_vesting_period_seconds": 31536000,
- "cashback_vesting_threshold": 10000000,
- "count_non_member_votes": true,
- "allow_non_member_whitelists": false,
- "witness_pay_per_block": 1000000,
- "worker_budget_per_day": "50000000000",
- "max_predicate_opcode": 1,
- "fee_liquidation_threshold": 10000000,
- "accounts_per_fee_scale": 1000,
- "account_fee_scale_bitshifts": 4,
- "max_authority_depth": 2,
- "witness_schedule_algorithm": 1,
- "min_round_delay": 0,
- "max_round_delay": 600,
- "min_time_per_commit_move": 0,
- "max_time_per_commit_move": 600,
- "min_time_per_reveal_move": 0,
- "max_time_per_reveal_move": 600,
- "rake_fee_percentage": 300,
- "maximum_registration_deadline": 2592000,
- "maximum_players_in_tournament": 256,
- "maximum_tournament_whitelist_length": 1000,
- "maximum_tournament_start_time_in_future": 2419200,
- "maximum_tournament_start_delay": 604800,
- "maximum_tournament_number_of_wins": 100,
- "extensions": {}
- },
- "initial_bts_accounts": [],
- "initial_accounts": [
- {
- "name": "init0",
- "owner_key": "BET5XaHhpuF54Ln4TKiJwFR7edS6mEEwAjDzFEs1wNERjwgvogF6H",
- "active_key": "BET6zWXG1JAhVowf63bieNxFGJfkbWsJ9m4bdGQmF2fjBTXhH5vu9",
- "is_lifetime_member": true
- },
- {
- "name": "init1",
- "owner_key": "BET8VUXQ6LyCj9cZY7MsRcBBee28nboWxCQS7NDSvtduqgouFTgZ2",
- "active_key": "BET6B2dCZZWZSkCJeLodZVjZJCTSyzW9NSgmC4SEFU5yQzTbgLqHN",
- "is_lifetime_member": true
- },
- {
- "name": "init2",
- "owner_key": "BET5iZxsWYTRkxy8XBQN45EadyzbMNPSPjNeadmZdxkf8SBMwBURB",
- "active_key": "BET71mCKVudFfyBy3wcHUfGNWVC2DKSbYXVT4MsNV5yNzFtupEZoJ",
- "is_lifetime_member": true
- },
- {
- "name": "init3",
- "owner_key": "BET66Xy9x7A98vNDwVCy1og2BzjKnmvsaCSXop3w3u83igw2uTVHH",
- "active_key": "BET6mdL5CtybC5NEuby45XNTZHQ4k7niskKoHDZ26RBr2X3RsFKdy",
- "is_lifetime_member": true
- },
- {
- "name": "init4",
- "owner_key": "BET61kyE4kEDyea2NtUAWkLdHcmVj4txX7JhwnDh2JUQEDxAXePQv",
- "active_key": "BET8Wuxze1fPwK5KUBtNMGLgBHzCPqqkRbKiEQ4pzWyuvNT6qgFhU",
- "is_lifetime_member": true
- },
- {
- "name": "init5",
- "owner_key": "BET84oueA6S6podG6PSLzVqdr6Ee9VMhUz4cV5wMpEccgvouxw2pw",
- "active_key": "BET5hmTdjspFViyfoRqs11J3vpeBnH5YrduwoDxv39WYvFn3B44Bu",
- "is_lifetime_member": true
- },
- {
- "name": "init6",
- "owner_key": "BET6HwVbgSL1Rchb5LU2B5ovXMmF5GvFNf1Ri61Yvpyg7SyVSaTHd",
- "active_key": "BET8kwoHxmSiDF5BHWCsTYuLyQio3Ygs52AaoRcc8sRJ6KMtkkkiH",
- "is_lifetime_member": true
- },
- {
- "name": "init7",
- "owner_key": "BET7YopH3FV5RVP3G4GQty1aNzU3T68rex264CBJAwvrqFNSzaw6f",
- "active_key": "BET75hoCSgx49FTe46zo9TQtpr4MRffd56zt925hrbW8Tw9f3eXvV",
- "is_lifetime_member": true
- },
- {
- "name": "init8",
- "owner_key": "BET6fjKkkdyjgj5tXgcGEtyGqB5keBV98u5ve7Vs2kEcZVKQ1KcpQ",
- "active_key": "BET6FzGeJTpUZv1WuHS1APYXZSHYjUZvX8zCpwTf8LYNygWdKPomC",
- "is_lifetime_member": true
- },
- {
- "name": "init9",
- "owner_key": "BET8bgtYA6SezH9uWLFSZiVtZmTgB3sCo3ARY19H9N3oRaif4Jne3",
- "active_key": "BET4um88YvkAP1uo5VHncY2xNKJbUrmNXjR3T6obZzWJjX5kxrULb",
- "is_lifetime_member": true
- },
- {
- "name": "init10",
- "owner_key": "BET7zkgn6f4dywz2s48NzE8RQ6Em5XQT6LPSuGfPSwGgLhcc3W8dP",
- "active_key": "BET7qChNTz7eTeRHdYZuxSJJJ1pRB5duAy9QwbwssUSVK2GLj1eBS",
- "is_lifetime_member": true
- },
- {
- "active_key": "BET848qr8NtY23ErNtdnRQ5mht2quJKWdztLC9UUa7c4g8sGWaJPF",
- "owner_key": "BET7dtJFyGFJhJk3NqUWTuUDhPhLQ5N4GB1duT1k1JxpvJeeL8Zo3",
- "is_lifetime_member": true,
- "name": "faucet"
- },
- {
- "active_key": "BET5zDs3nKp5vozNvYLGzMN51zBngC5zB6xXGF12fHPYvkqs44jp3",
- "owner_key": "BET6Nq31FMh5XMeqWshZrjmMi4WwPWqbTHucNyvRUK51iDLJH38iU",
- "is_lifetime_member": true,
- "name": "pub"
- }
- ],
- "initial_assets": [
- {
- "accumulated_fees": 0,
- "collateral_records": [],
- "description": "Bitcoin",
- "is_bitasset": false,
- "issuer_name": "pub",
- "max_supply": 2100000000000000,
- "precision": 8,
- "symbol": "BTC"
- }
- ],
- "initial_balances": [
- {
- "amount": "204000000000000",
- "asset_symbol": "BET",
- "owner": "BETACrKLmDV7eJrTmqB38qjYNL6DGS8G7eAX"
- }
- ],
- "initial_vesting_balances": [],
- "initial_active_witnesses": 11,
- "initial_witness_candidates": [
- {
- "owner_name": "init0",
- "block_signing_key": "BET6mGjQYXTbDFc1MAZrJSELxz6ztcKRSyBkcXk57GeCR4axSjnyF"
- },
- {
- "owner_name": "init1",
- "block_signing_key": "BET5iT759TVbPzogkh8HFaZt8cwu3MT62JUxV3Gab6EYNQzJQ74t7"
- },
- {
- "owner_name": "init2",
- "block_signing_key": "BET7QqPzwLAV3uhuEjfk3pbczjz7kfpNRY4Jx8HMes5j4vaeywwZH"
- },
- {
- "owner_name": "init3",
- "block_signing_key": "BET84E8HErnQATbGukKtZmWB67YzytkG4P7dJBoNZvQJXvUYPmjWZ"
- },
- {
- "owner_name": "init4",
- "block_signing_key": "BET6n42nxy643TZomAzk4ZUm5QorDfV7us1pbAhkdWGnxhtR9s3uw"
- },
- {
- "owner_name": "init5",
- "block_signing_key": "BET5oXKPqKCLus9KgUKwKNYsuSu5DsvCuVvqVJGRDGzgDPfbPu7bR"
- },
- {
- "owner_name": "init6",
- "block_signing_key": "BET5Bx2ucEPVRFKmT3LwDmokGssPXVVvMdVmzDy9RvXo8yh9CkUBX"
- },
- {
- "owner_name": "init7",
- "block_signing_key": "BET8HGtQ7eZ4YFDUkfMknCARTkwfMgcqsYih7bmhCVxertzEmntwU"
- },
- {
- "owner_name": "init8",
- "block_signing_key": "BET8Mzcf2CMBtQeEACjY4Cd7ANh6Rj8uuRQr7xBYJeekDG5swUqFd"
- },
- {
- "owner_name": "init9",
- "block_signing_key": "BET7EBchkAwkicqefabQonJgYTGiKw2EhRziVVD8jaFq39zTFsBXK"
- },
- {
- "owner_name": "init10",
- "block_signing_key": "BET89UirRxdsc26X7QhXpYGbUK6L2rCCuthfaXQQQEh4PtBBSB8PA"
- }
- ],
- "initial_committee_candidates": [
- {
- "owner_name": "init0"
- },
- {
- "owner_name": "init1"
- },
- {
- "owner_name": "init2"
- },
- {
- "owner_name": "init3"
- },
- {
- "owner_name": "init4"
- },
- {
- "owner_name": "init5"
- },
- {
- "owner_name": "init6"
- },
- {
- "owner_name": "init7"
- },
- {
- "owner_name": "init8"
- },
- {
- "owner_name": "init9"
- },
- {
- "owner_name": "init10"
- }
- ],
- "initial_worker_candidates": [],
- "initial_chain_id": "aa34045518f1469a28fa4578240d5f039afa9959c0b95ce3b39674efa691fb21",
- "immutable_parameters": {
- "min_committee_member_count": 11,
- "min_witness_count": 11,
- "num_special_accounts": 0,
- "num_special_assets": 0
- }
-}
+{"initial_timestamp": "2019-07-31T08:00:00", "immutable_parameters": {"num_special_accounts": 0, "num_special_assets": 0, "min_witness_count": 11, "min_committee_member_count": 11}, "initial_vesting_balances": [], "initial_assets": [{"collateral_records": [], "issuer_name": "tko", "precision": 8, "symbol": "BTC", "accumulated_fees": 0, "is_bitasset": false, "max_supply": 2100000000000000, "description": "Bitcoin"}], "initial_parameters": {"current_fees": {"scale": 10000, "parameters": [[0, {"price_per_kbyte": 0, "fee": 0}], [1, {"fee": 0}], [2, {"fee": 0}], [3, {"fee": 0}], [4, {}], [5, {"price_per_kbyte": 0, "premium_fee": 0, "basic_fee": 0}], [6, {"price_per_kbyte": 0, "fee": 0}], [7, {"fee": 0}], [8, {"membership_lifetime_fee": 0, "membership_annual_fee": 0}], [9, {"fee": 0}], [10, {"symbol4": 0, "symbol3": 0, "price_per_kbyte": 0, "long_symbol": 0}], [11, {"price_per_kbyte": 0, "fee": 0}], [12, {"fee": 0}], [13, {"fee": 0}], [14, {"price_per_kbyte": 0, "fee": 0}], [15, {"fee": 0}], [16, {"fee": 0}], [17, {"fee": 0}], [18, {"fee": 0}], [19, {"fee": 0}], [20, {"fee": 0}], [21, {"fee": 0}], [22, {"price_per_kbyte": 0, "fee": 0}], [23, {"price_per_kbyte": 0, "fee": 0}], [24, {"fee": 0}], [25, {"fee": 0}], [26, {"fee": 0}], [27, {"price_per_kbyte": 0, "fee": 0}], [28, {"fee": 0}], [29, {"fee": 0}], [30, {"fee": 0}], [31, {"fee": 0}], [32, {"fee": 0}], [33, {"fee": 0}], [34, {"fee": 0}], [35, {"price_per_kbyte": 0, "fee": 0}], [36, {"fee": 0}], [37, {}], [38, {"price_per_kbyte": 0, "fee": 0}], [39, {"fee": 0, "price_per_output": 0}], [40, {"fee": 0, "price_per_output": 0}], [41, {"fee": 0}], [42, {}], [43, {"fee": 0}], [44, {}], [45, {"fee": 0}], [46, {"fee": 0}], [47, {"fee": 0}], [48, {"fee": 0}], [49, {"distribution_fee_per_holder": 0, "distribution_base_fee": 0}], [50, {}], [51, {"fee": 0}], [52, {"fee": 0}], [53, {"fee": 0}], [54, {"fee": 0}], [55, {"fee": 0}], [56, {"fee": 0}], [57, {"fee": 0}], [58, {"fee": 0}], [59, {"fee": 0}], [60, {"fee": 0}], [61, {"fee": 0}], [62, {"fee": 0}], [63, {"fee": 0}], [64, {}], [65, {}], [66, {"fee": 0}], [67, {}], [68, {"fee": 0}], [69, {}], [70, {"fee": 0}], [71, {"fee": 0}], [72, {"fee": 0}], [73, {"fee": 0}], [74, {"fee": 0}], [75, {}], [76, {}]]}, "account_fee_scale_bitshifts": 4, "accounts_per_fee_scale": 1000, "allow_non_member_whitelists": false, "block_interval": 1, "cashback_vesting_period_seconds": 31536000, "cashback_vesting_threshold": 10000000, "committee_proposal_review_period": 120, "count_non_member_votes": true, "extensions": [], "fee_liquidation_threshold": 10000000, "lifetime_referrer_percent_of_fee": 3000, "maintenance_interval": 300, "maintenance_skip_slots": 3, "max_authority_depth": 2, "max_predicate_opcode": 1, "max_round_delay": 600, "max_time_per_commit_move": 600, "max_time_per_reveal_move": 600, "maximum_asset_feed_publishers": 10, "maximum_asset_whitelist_authorities": 10, "maximum_authority_membership": 10, "maximum_block_size": 2000000, "maximum_committee_count": 1001, "maximum_players_in_tournament": 256, "maximum_proposal_lifetime": 2419200, "maximum_registration_deadline": 2592000, "maximum_time_until_expiration": 86400, "maximum_tournament_number_of_wins": 100, "maximum_tournament_start_delay": 604800, "maximum_tournament_start_time_in_future": 2419200, "maximum_tournament_whitelist_length": 1000, "maximum_transaction_size": 2048, "maximum_witness_count": 1001, "min_round_delay": 0, "min_time_per_commit_move": 0, "min_time_per_reveal_move": 0, "network_percent_of_fee": 2000, "rake_fee_percentage": 100, "reserve_percent_of_fee": 2000, "witness_pay_per_block": 0, "witness_schedule_algorithm": 1, "worker_budget_per_day": "50000000000"}, "initial_chain_id": "aa34045518f1469a28fa4578240d5f039afa9959c0b95ce3b39674efa691fb21", "initial_worker_candidates": [], "initial_bts_accounts": [], "initial_balances": [{"amount": "20000000000000", "owner": "TKO9KoA7kqtvhKVitTR1DFgEA2cLV5WaNvJk", "asset_symbol": "TKO"}, {"amount": "20000000000000", "owner": "TKOAEG3urvWv9NYA7JU7U9QpvASembeUjber", "asset_symbol": "TKO"}, {"amount": "20000000000000", "owner": "TKO7VSqzoGCwYVWtcyJppEG4H6ku1G6DVARu", "asset_symbol": "TKO"}, {"amount": "20000000000000", "owner": "TKOF9NqcTsqSCRBEExHHFD8g5wuKg1b8cQHM", "asset_symbol": "TKO"}, {"amount": "20000000000000", "owner": "TKO2C4GJVt3Et3Lg9EjCwWbxxT7qBMPvDwDR", "asset_symbol": "TKO"}, {"amount": "20000000000000", "owner": "TKO4bfmh2pQFFmEnZeXd2o787NcowwocMaTC", "asset_symbol": "TKO"}, {"amount": "20000000000000", "owner": "TKOKgLWHpxxw7xu9Wz69Kh2B3G1mdL2hwGJe", "asset_symbol": "TKO"}, {"amount": "20000000000000", "owner": "TKO7rTK8uTg2dDJwqr7TjdpWSTCs5FgVuy9y", "asset_symbol": "TKO"}, {"amount": "20000000000000", "owner": "TKO4Mguyed3L2fNgcTJAV5SDHaxQaD9hCe6x", "asset_symbol": "TKO"}, {"amount": "20000000000000", "owner": "TKOAJnsD8CYWEH4w9NgAT7q4VJfFGtav4ivR", "asset_symbol": "TKO"}], "max_core_supply": 400000000000000, "initial_committee_candidates": [{"owner_name": "init0"}, {"owner_name": "init1"}, {"owner_name": "init2"}, {"owner_name": "init3"}, {"owner_name": "init4"}, {"owner_name": "init5"}, {"owner_name": "init6"}, {"owner_name": "init7"}, {"owner_name": "init8"}, {"owner_name": "init9"}, {"owner_name": "init10"}], "initial_active_witnesses": 11, "initial_accounts": [{"active_key": "TKO6ZMR3XK61WD51sWRMU6PpUaCBpzYGYi15sHt1qfh35rFQsnBvm", "is_lifetime_member": true, "name": "init0", "owner_key": "TKO4zEM9Q9s642mDVcVNASNwKB6bQic93JDYTYtifLsGuyfXrcWy8"}, {"active_key": "TKO6stWYQmeEUgx4HhRPcC7oN2zJyQ1BSz1GbogUEpstQzEEJ3Cqi", "is_lifetime_member": true, "name": "init1", "owner_key": "TKO7P9QBxujuu5yLtAAi9df5w71ugFQDJBWSJKqhGdiA96AR3qNAz"}, {"active_key": "TKO4yGBy6CR5V3XQ87FGPYu3oDE96JmCrbivBvzzrgVi4g6aHYBcZ", "is_lifetime_member": true, "name": "init2", "owner_key": "TKO6zSzAqg7LzXDNb42dvzVZSKUcydt8RoDX5Bfid8QJnUdBvvG4Q"}, {"active_key": "TKO7SQbkx6Esg9vMmdXuanqapPy3eAPTnkcJ5cADi7n5Fo4iX2okd", "is_lifetime_member": true, "name": "init3", "owner_key": "TKO5U9aSqoPuFFXYXzP5E63A7fc2g13cyP4GgxpKNQCD1Ge1SHkhp"}, {"active_key": "TKO8gbEWMVVhBd9Mr2RkNUSeqyaiBJ52MvZAcPmo3xzY97nEvnCbr", "is_lifetime_member": true, "name": "init4", "owner_key": "TKO613hsAMdGzvNKZHmkqsoqG6yaxgpMHLfkFcqiUuZFS51bXyFMw"}, {"active_key": "TKO5DJcj52jKB7ygnskCuG2xuQPf65K6M8qKA7D4tQJvh6d7zb5Pg", "is_lifetime_member": true, "name": "init5", "owner_key": "TKO6h6FFsw829G9VbvMU4yxUMPBRbbwcsTRoFazyG6g9XK5Kk5wCD"}, {"active_key": "TKO8A6sbN929atKYueonnHnQjBjn69vBJKzH9eSig7kQHEiMooVHp", "is_lifetime_member": true, "name": "init6", "owner_key": "TKO5avPXFWaxKamkHPrxHdARgNgJ8ssx2fgPbBgg3ePpPHYoBipxK"}, {"active_key": "TKO6P4j6Y28cVi4GYgghQGwrmffLkekBptD7J8Nv9Q6NaPN6xpmi3", "is_lifetime_member": true, "name": "init7", "owner_key": "TKO5FagWuh5mhh5k8KKYq5fonD3KMEBnMs3rnnLgkFakz7bjYZGEB"}, {"active_key": "TKO6xAFmEUvmMg36rbE6AZ5JEWgRYBG4E5AtAM2vjRUaF2McGgUqa", "is_lifetime_member": true, "name": "init8", "owner_key": "TKO6PCraHic1YW5mWLyB351PTXoEPEgTjG95qAUGU5XV8EE6SaJ4T"}, {"active_key": "TKO5kYLYXFkmm49VGRChk8ihozRoDZHuErHfr9KMLB2SCL4BD8cpb", "is_lifetime_member": true, "name": "init9", "owner_key": "TKO5hB6wyqmkSMw1QoA8UYz5JmUJpkAmJep7kMqrYEi2vpuKrkTjF"}, {"active_key": "TKO7yHh3sHoWvjDULxX3NEQ6ZE3kyrMk4pqJy1d4pboP41VsXke7M", "is_lifetime_member": true, "name": "init10", "owner_key": "TKO6WE68U2mJkhCqhmcr1wCazeYqVLhDSpKfdWVb1R3pfN6mck5rE"}, {"active_key": "TKO8kVw6qUb7v6D7grXsoBaWpXetFfvyoein7exxR4cxzGYM5n3mA", "is_lifetime_member": true, "name": "faucet", "owner_key": "TKO7Td5Pgr5pFk54WcUbNMJxAvwY3HRkh5duKRENhmRKfXqj6zvws"}, {"active_key": "TKO5e4A7HrACvWGhqBf25dZZumQqtvx7yJ5yhZKMvQPYniUuUhNsz", "is_lifetime_member": true, "name": "tko", "owner_key": "TKO6QVKaBPoJux63yYQaKSpwwjFRhRmsiYBcnoXw5CV8TyAVvu8U2"}], "initial_witness_candidates": [{"block_signing_key": "TKO7K5eZEKaSjvVhmFgCvprRsY8a9RjbmcB9Xu9enJBhNaJeXMj9Y", "owner_name": "init0"}, {"block_signing_key": "TKO8Xh9peJpDRnRmraXs3ozeQW1zsdeQJsdBXWwFgKwuHvgbbAci7", "owner_name": "init1"}, {"block_signing_key": "TKO5TBfw5U7KSm3QkMhjApUuJmhQK6EjZCifk4CKfK8mHL2z9fmsn", "owner_name": "init2"}, {"block_signing_key": "TKO5d4Kte2qPoKAhquFph872imJQ8N88tMDCJ3XgqD5Hzdch3c7jq", "owner_name": "init3"}, {"block_signing_key": "TKO8DCySxVQRCcNdsmdkyQuJnAgFJDjq4woe4eTnBAbarNeC7FfKR", "owner_name": "init4"}, {"block_signing_key": "TKO6LGH34Km5Np1bNe1C8e9jP6y7Amcms9PE985UMxG2rNexCCyLu", "owner_name": "init5"}, {"block_signing_key": "TKO6sk1LFX4sTM8ukHV1E6eZknFA3bEPUDrBG74Dz2Ry8pq2dy215", "owner_name": "init6"}, {"block_signing_key": "TKO6SNNFR1uWYGHwVPB7MRZrQCnK6n8gf2AyKDrL9iDZ6RXezZbsD", "owner_name": "init7"}, {"block_signing_key": "TKO4utEktuERg7jNuAF54eQNF4ErimpqwXx7Lrz1C9s8NuypSb1H7", "owner_name": "init8"}, {"block_signing_key": "TKO5kVsAABYp5Aud9reiSrRWrFUVpq3KXhvkTdfG7WqLaj4QRu8Kp", "owner_name": "init9"}, {"block_signing_key": "TKO7meEXinSeaPX6hUzqoEbXqQJcaaaKKuiSqxstgpxFmhXap77t7", "owner_name": "init10"}]}
diff --git a/libraries/app/api.cpp b/libraries/app/api.cpp
index 6dd912cd..e3ee93ba 100644
--- a/libraries/app/api.cpp
+++ b/libraries/app/api.cpp
@@ -42,6 +42,10 @@
#include <fc/smart_ref_impl.hpp>
#include <fc/thread/future.hpp>
+#include <graphene/bookie/bookie_api.hpp>
+#include <graphene/bookie/bookie_plugin.hpp>
+#include <graphene/bookie/bookie_objects.hpp>
+
namespace graphene { namespace app {
login_api::login_api(application& a)
@@ -560,7 +564,51 @@ namespace graphene { namespace app {
while(node && node->operation_id.instance.value > stop.instance.value && result.size() < limit)
{
if( node->operation_id.instance.value <= start.instance.value )
- result.push_back( node->operation_id(db) );
+ {
+ operation_history_object operation_history_obj = node->operation_id(db);
+ // 62 77
+ if (operation_history_obj.op.which() == operation::tag<bet_place_operation>::value ||
+ operation_history_obj.op.which() == operation::tag<bet_reduce_operation>::value)
+ {
+ bet_id_type bet_id = operation_history_obj.result.get<object_id_type>();
+ bet_object bet_obj; // = bet_id(db); // volatile
+
+ auto& bets_by_bet_id = db.get_index_type<bet_object_index>().indices().get<by_id>();
+ auto iter = bets_by_bet_id.find(bet_id);
+ if (iter != bets_by_bet_id.end())
+ {
+ bet_obj = *iter;
+ }
+ else
+ {
+ auto& persistent_bets_by_bet_id = db.get_index_type<graphene::bookie::detail::persistent_bet_index>().indices().get<graphene::bookie::detail::by_bet_id>();
+ auto iter = persistent_bets_by_bet_id.find(bet_id/*.as<bet_id_type>()*/);
+ if (iter != persistent_bets_by_bet_id.end())
+ {
+ bet_obj = iter->ephemeral_bet_object;
+ }
+ }
+
+ uint32_t estimated_delay_seconds = 0;
+ if (bet_obj.end_of_delay)
+ {
+ uint32_t block_time_seconds = db.head_block_time().sec_since_epoch();
+
+ fc::time_point_sec end_of_delay = *(bet_obj.end_of_delay);
+ uint32_t end_of_delay_seconds = end_of_delay.sec_since_epoch();
+
+ if (end_of_delay_seconds > block_time_seconds)
+ estimated_delay_seconds = end_of_delay_seconds - block_time_seconds;
+ }
+
+ if (estimated_delay_seconds > 0)
+ {
+ operation_history_obj.estimated_delay_time = estimated_delay_seconds * 1000;
+ operation_history_obj.is_delayed = true;
+ }
+ }
+ result.push_back( operation_history_obj );
+ }
if( node->next == account_transaction_history_id_type() )
node = nullptr;
else node = &node->next(db);
diff --git a/libraries/app/application.cpp b/libraries/app/application.cpp
index d98bb3d2..2936c1d0 100644
--- a/libraries/app/application.cpp
+++ b/libraries/app/application.cpp
@@ -162,7 +162,7 @@ namespace detail {
{
// t.me/peerplays #seednodes
vector<string> seeds = {
- //"ppy-beatrice-seed.blckchnd.com:6666", // blckchnd
+ "seed.everett.exbet.io:1776",
};
for( const string& endpoint_string : seeds )
diff --git a/libraries/chain/CMakeLists.txt b/libraries/chain/CMakeLists.txt
index e5dbf3f0..8a566df5 100644
--- a/libraries/chain/CMakeLists.txt
+++ b/libraries/chain/CMakeLists.txt
@@ -21,6 +21,7 @@ if( GRAPHENE_DISABLE_UNITY_BUILD )
db_market.cpp
db_update.cpp
db_witness_schedule.cpp
+ db_notify.cpp
)
message( STATUS "Graphene database unity build disabled" )
else( GRAPHENE_DISABLE_UNITY_BUILD )
diff --git a/libraries/chain/db_maint.cpp b/libraries/chain/db_maint.cpp
index b768460a..98aa999e 100644
--- a/libraries/chain/db_maint.cpp
+++ b/libraries/chain/db_maint.cpp
@@ -1229,7 +1229,7 @@ void database::perform_chain_maintenance(const signed_block& next_block, const g
distribute_fba_balances(*this);
create_buyback_orders(*this);
- process_dividend_assets(*this);
+ //process_dividend_assets(*this);
struct vote_tally_helper {
database& d;
diff --git a/libraries/chain/db_notify.cpp b/libraries/chain/db_notify.cpp
index e5e73b4d..7f865320 100644
--- a/libraries/chain/db_notify.cpp
+++ b/libraries/chain/db_notify.cpp
@@ -29,10 +29,16 @@
#include <graphene/chain/protocol/transaction.hpp>
#include <graphene/chain/protocol/types.hpp>
#include <graphene/chain/withdraw_permission_object.hpp>
+#include <graphene/chain/database.hpp>
#include <graphene/chain/worker_object.hpp>
#include <graphene/chain/confidential_object.hpp>
#include <graphene/chain/market_object.hpp>
#include <graphene/chain/committee_member_object.hpp>
+#include <graphene/chain/witness_object.hpp>
+#include <graphene/chain/proposal_object.hpp>
+#include <graphene/chain/operation_history_object.hpp>
+#include <graphene/chain/vesting_balance_object.hpp>
+#include <graphene/chain/transaction_object.hpp>
using namespace fc;
using namespace graphene::chain;
diff --git a/libraries/chain/include/graphene/chain/operation_history_object.hpp b/libraries/chain/include/graphene/chain/operation_history_object.hpp
index d8b90b58..36b0fe9c 100644
--- a/libraries/chain/include/graphene/chain/operation_history_object.hpp
+++ b/libraries/chain/include/graphene/chain/operation_history_object.hpp
@@ -62,6 +62,11 @@ namespace graphene { namespace chain {
uint16_t op_in_trx = 0;
/** any virtual operations implied by operation in block */
uint32_t virtual_op = 0;
+ /** if bet delayed placing */
+ uint32_t estimated_delay_time = 0;
+ /** if bet delayed placing */
+ bool is_delayed = false;
+
};
/**
@@ -131,7 +136,7 @@ typedef generic_index<account_transaction_history_object, account_transaction_hi
} } // graphene::chain
FC_REFLECT_DERIVED( graphene::chain::operation_history_object, (graphene::chain::object),
- (op)(result)(block_num)(trx_in_block)(op_in_trx)(virtual_op) )
+ (op)(result)(block_num)(trx_in_block)(op_in_trx)(virtual_op)(estimated_delay_time)(is_delayed) )
FC_REFLECT_DERIVED( graphene::chain::account_transaction_history_object, (graphene::chain::object),
(account)(operation_id)(sequence)(next) )
diff --git a/tests/betting/betting_tests.cpp b/tests/betting/betting_tests.cpp
index 029e0a3b..6ac19577 100644
--- a/tests/betting/betting_tests.cpp
+++ b/tests/betting/betting_tests.cpp
@@ -47,6 +47,8 @@
#include <graphene/bookie/bookie_plugin.hpp>
#include <graphene/bookie/bookie_objects.hpp>
+#include <graphene/app/api.hpp>
+
struct enable_betting_logging_config {
enable_betting_logging_config()
{
@@ -3419,6 +3421,112 @@ BOOST_AUTO_TEST_CASE( wimbledon_2019_gentelmen_singles_final_test )
} FC_LOG_AND_RETHROW()
}
+BOOST_AUTO_TEST_CASE( wimbledon_2019_gentelmen_singles_final_test2 )
+{
+ try
+ {
+ ACTORS( (alice)(bob)(carol)(dave) );
+ BOOST_TEST_MESSAGE("actor alice " << fc::variant(alice_id).as<std::string>());
+ BOOST_TEST_MESSAGE("actor bob " << fc::variant(bob_id).as<std::string>());
+ BOOST_TEST_MESSAGE("actor carol " << fc::variant(carol_id).as<std::string>());
+ BOOST_TEST_MESSAGE("actor dave " << fc::variant(dave_id).as<std::string>());
+
+ CREATE_TENNIS_BETTING_MARKET_2019();
+
+ app.enable_plugin("bookie");
+ graphene::bookie::bookie_api bookie_api(app);
+
+ //uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage();
+
+ transfer(account_id_type(), alice_id, asset(10000000));
+ transfer(account_id_type(), bob_id, asset(100000000));
+ transfer(account_id_type(), carol_id, asset(10000000));
+ transfer(account_id_type(), dave_id, asset(10000000));
+
+ BOOST_TEST_MESSAGE("\nmoneyline_men_singles_final " << fc::variant(moneyline_men_singles_final.id).as<std::string>());
+
+ BOOST_TEST_MESSAGE("federer_wins_final_market " << fc::variant(federer_wins_final_market.id).as<std::string>());
+ BOOST_TEST_MESSAGE("nadal_wins_final_market " << fc::variant(nadal_wins_final_market.id).as<std::string>());
+ BOOST_TEST_MESSAGE("djokovic_wins_final_market " << fc::variant(djokovic_wins_final_market.id).as<std::string>());
+ BOOST_TEST_MESSAGE("hurkacz_wins_final_market " << fc::variant(hurkacz_wins_final_market.id).as<std::string>());
+
+ const betting_market_id_type& hurkacz_wins_final_market_id = hurkacz_wins_final_market.id;
+ const betting_market_id_type& djokovic_wins_final_market_id = djokovic_wins_final_market.id;
+ const betting_market_id_type& nadal_wins_final_market_id = nadal_wins_final_market.id;
+ const betting_market_id_type& federer_wins_final_market_id = federer_wins_final_market.id;
+
+ betting_market_group_id_type moneyline_men_singles_final_id = moneyline_men_singles_final.id;
+ update_betting_market_group(moneyline_men_singles_final_id, _status = betting_market_group_status::in_play);
+
+ generate_blocks(1);
+
+ place_bet(bob_id, federer_wins_final_market_id, bet_type::lay, asset(1000000, asset_id_type()), 4 * GRAPHENE_BETTING_ODDS_PRECISION);
+
+ //generate_blocks(1);
+
+ //BOOST_CHECK_EQUAL(get_balance(bob_id, asset_id_type()), 100000000 - 1000000);
+
+ place_bet(dave_id, nadal_wins_final_market_id, bet_type::back, asset(100000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION);
+ place_bet(carol_id, federer_wins_final_market_id, bet_type::back, asset(100000, asset_id_type()), 1.3 * GRAPHENE_BETTING_ODDS_PRECISION);
+ place_bet(carol_id, federer_wins_final_market_id, bet_type::back, asset(100000, asset_id_type()), 3.1 * GRAPHENE_BETTING_ODDS_PRECISION);
+ place_bet(alice_id, federer_wins_final_market_id, bet_type::back, asset(100000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION);
+ place_bet(dave_id, djokovic_wins_final_market_id, bet_type::back, asset(100000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION);
+ place_bet(carol_id, djokovic_wins_final_market_id, bet_type::back, asset(100000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION);
+
+ //generate_blocks(10);
+
+// test_get_user_possible_profits_losses_for_betting_markets_in_group(moneyline_men_singles_final_id, alice_id);
+// test_get_user_possible_profits_losses_for_betting_markets_in_group(moneyline_men_singles_final_id, bob_id);
+// test_get_user_possible_profits_losses_for_betting_markets_in_group(moneyline_men_singles_final_id, carol_id);
+// test_get_user_possible_profits_losses_for_betting_markets_in_group(moneyline_men_singles_final_id, dave_id);
+
+ update_betting_market_group(moneyline_men_singles_final_id, _status = betting_market_group_status::closed);
+
+ resolve_betting_market_group(moneyline_men_singles_final_id,
+ {{hurkacz_wins_final_market_id, betting_market_resolution_type::not_win},
+ {djokovic_wins_final_market_id, betting_market_resolution_type::not_win},
+ {nadal_wins_final_market_id, betting_market_resolution_type::not_win},
+ {federer_wins_final_market_id, betting_market_resolution_type::win}});
+
+ generate_blocks(10);
+
+ BOOST_TEST_MESSAGE("\nAlice's final balance " << get_balance(alice_id, asset_id_type()));
+ BOOST_TEST_MESSAGE("Bob's final balance " << get_balance(bob_id, asset_id_type()));
+ BOOST_TEST_MESSAGE("Carol's final balance " << get_balance(carol_id, asset_id_type()));
+ BOOST_TEST_MESSAGE("Dave's final balance " << get_balance(dave_id, asset_id_type()));
+
+ operation_history_id_type start;
+ operation_history_id_type stop = start + 1000;
+ graphene::app::history_api history_api(app);
+
+ vector<operation_history_object> alice_history = history_api.get_account_history(alice_id, start, 100, stop);
+ BOOST_TEST_MESSAGE("\nAlice's history size " << alice_history.size());
+ for( const operation_history_object& a : alice_history)
+ {
+ std::cout << "\nAlice's history " <<fc::json::to_string(a) << std::endl;
+ }
+
+ vector<operation_history_object> bob_history = history_api.get_account_history(bob_id, start, 100, stop);
+ BOOST_TEST_MESSAGE("\n\nBob's history size " << bob_history.size());
+ for( const operation_history_object& a : bob_history)
+ {
+ std::cout << "\nBob's history " <<fc::json::to_string(a) << std::endl;
+ }
+
+ vector<operation_history_object> carol_history = history_api.get_account_history(carol_id, start, 100, stop);
+ BOOST_TEST_MESSAGE("\n\nCarol's history size " << carol_history.size());
+ for( const operation_history_object& a : carol_history)
+ {
+ std::cout << "\nCarols's history " <<fc::json::to_string(a) << std::endl;
+ }
+
+ // bet_place_operation 62
+ //{"id":"1.11.88","op":[62,{"fee":{"amount":0,"asset_id":"1.3.0"},"bettor_id":"1.2.18","betting_market_id":"1.25.0","amount_to_bet":{"amount":1000000,"asset_id":"1.3.0"},"backer_multiplier":40000,"back_or_lay":"lay","extensions":[]}
+ // ],"result":[1,"1.26.0"],"block_num":11,"trx_in_block":11,"op_in_trx":0,"virtual_op":0}
+
+ } FC_LOG_AND_RETHROW()
+}
+
BOOST_AUTO_TEST_SUITE_END()
//
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment