{
  "comments": [
    {
      "abs_rshares": "920389243926",
      "active": "2016-08-18T03:32:12",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 501045,
      "beneficiaries": [],
      "body": "As you know, witness nodes are an essential part of the STEEM universe.\n\nIf I have a witness node with as much as (or as little as) 3% of witness approval, I can choose the right time to shut it down, listen to my favourite music album, walk my cat, and then start it up again, most probably without missing a block.\nA full-time witness, or one of the top19 witnesses, needs to produce blocks 1600 times more frequently.\nMaintaining such a server in the long run is not an easy task.\n\nWitnesses are vulnerable to DDoS attacks. An attacker who knows the network location of your witness node can saturate your uplink to a level that makes you unable to produce blocks on time. Effectively, this means **voting the witness out using a network-level attack**. Finding the IP address of your witness node is easier than you might think. Even if you follow the guidelines for setting up your public seed node on a different machine than the one you used to get your witness running, your witness still needs to connect to other nodes in the network.\nSo what does this mean? Take a look at: http://seeds.quisquis.de/steem.html\n(service provided by cyrano.witness)\n\nDoes any of these IP addresses look familiar?\nThe attacker still doesn't know which of them is yours, right?\n\nAn attack that makes the target IP unavailable for 3 seconds? Not exactly a difficult thing to do, right? So the attacker needs to make a guess by choosing from a set of suspected IP addresses he has obtained. Guessing doesn't cost him much. Neither does a high volume, short period DDoS attack. After that, he can see that your `total_missed` count increases, and he knows he guessed correctly. And then you are out.\n\n![witness](https://grey.house/img/witness2.jpg)\n\n## A concept of infrastructure: ##\n\n2 witness nodes (primary and backup)\n4 dedicated seed nodes\n\nOne witness node has your current signing key and does its job. The other is for failover, backup purposes. For example, whenever you need to upgrade your witness binary, you do that on the backup witness node, then change your signing key, so the backup node and the primary node switch their roles.  \n**(Never leave your current signing key on two nodes at the same time!)**\n\nThese 4 seed nodes mentioned here only work on behalf of your witness i.e. they don\u2019t provide seed service on public network interfaces. \n_Your public seed node is not within the scope of this document._\n\nYour witness node connects **ONLY** to your seed nodes using VLAN or another private, low latency network solution of your choice. All other incoming/outgoing connections should be blocked except for the secure shell, preferably limited to access only from your IPs.\n\nEach seed node should be in a separate datacenter, ideally in a different part of the world, never in the same location as any of your (primary/backup) witness nodes. The purpose is to minimize the effects of a successful DDoS attack.\n\n_Please note that setting up all seed nodes in a single data center won\u2019t help. A DDoS attack targeted at that particular network will bring all your nodes down anyway._\n\n```\n                      +---+\n         +  +----+    |   |\n         |  |    |<-->| B |\n         +--+ S1 |<-->| i |\n         |  |    |<-->| g |\n         |  +----+    |   |\n+------+ |            | B |\n|      +-+  +----+    | a |\n| W(p) | |  |    |<-->| d |\n|      | +--+ S2 |<-->|   |\n+------+ |  |    |<-->| U |\n         |  +----+    | g |\n     VLAN|            | l |\n         |  +----+    | y |\n+------+ |  |    |<-->|   |\n|      | +--+ S3 |<-->| I |\n| W(b) | |  |    |<-->| n |\n|      +-+  +----+    | t |\n+------+ |            | e |\n         |  +----+    | r |\n         |  |    |<-->| n |\n         +--+ S4 |<-->| e |\n         |  |    |<-->| t |\n         +  +----+    |   |\n                      +---+\n```\n```\nW(p) - primary witness\nW(b) - backup witness\nS1-4 - seed nodes\n```\nOf course, you need to keep your seed nodes (at least one of them) running all the time, otherwise your witness will not be able to sync the blockchain.\nBut if you do the math, you will see that the odds that all your seed nodes stop working at the same time are much lower than the chances that this happens to your witness node. \n\n\nIf one of your seed nodes falls victim to a DDoS attack, you can, depending on the features offered by your infrastructure provider:\n- do nothing (until most of them are targeted at the same time)\n- change its external interface IP address, routing the old one to a black hole\n- set up a new, additional, temporary seed node somewhere else\n- replace that seed node with a new one in another location\n\nIf you believe this idea is of use and value to Steem, please vote for me as a [witness](https://steemit.com/witness-category/@gtg/witness-gtg \"witness-gtg\")\neither on [Steemit's Witnesses List](https://steemit.com/~witnesses \"Witnesses\") \nor by using your `cli_wallet` command:\n`vote_for_witness \"YOURACCOUNT\" \"gtg\" true true`",
      "cashout_time": "2016-09-16T20:13:00",
      "category": "witness-category",
      "children": 14,
      "children_abs_rshares": "1000824866058",
      "created": "2016-08-16T18:11:03",
      "curator_payout_value": {
        "amount": "243149",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 0,
      "id": 630322,
      "json_metadata": "{\"tags\":[\"witness-category\",\"security\",\"steem\",\"steemit\"],\"links\":[\"https://steemit.com/witness-category/@gtg/witness-gtg\"]}",
      "last_payout": "2016-08-17T20:13:00",
      "last_update": "2016-08-16T18:11:03",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "2016-08-31T20:14:30",
      "net_rshares": "920389243926",
      "net_votes": 177,
      "parent_author": "",
      "parent_permlink": "witness-category",
      "percent_steem_dollars": 10000,
      "permlink": "heavy-duty-witness-node-infrastructure",
      "reward_weight": 10000,
      "root_author": "gtg",
      "root_permlink": "heavy-duty-witness-node-infrastructure",
      "title": "Heavy duty witness node infrastructure",
      "total_payout_value": {
        "amount": "745053",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": "920389243926"
    },
    {
      "abs_rshares": 0,
      "active": "2016-07-10T12:39:42",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 1135218,
      "beneficiaries": [],
      "body": "I'm Gandalf.\nThat's not my real name, but even my mom saved my number as ***Gandalf*** in her phone contact list.\nThat counts, right?\nI'm an IT Wizard, system admin, happily married, <strike>owner of a cat</strike>.\nOwned by a cat.\n\n![Nyunya](https://grey.house/img/niunia.jpg)\n\n**Nyunya** *(The Cat)* wants to watch everything I do, that's just her way of lending a helping paw. I\u2019m not sure if she is so fascinated by what I do or she wants to make sure I do it right.\n\nWhy am I here? What is my motivation?\nNot much different from that guiding my cat:\nCuriosity and to be a witness (node?) of what is emerging here.\n\nMay the STEEM be with you!",
      "cashout_time": "1969-12-31T23:59:59",
      "category": "introduceyourself",
      "children": 3,
      "children_abs_rshares": 0,
      "created": "2016-07-03T16:35:03",
      "curator_payout_value": {
        "amount": "16244",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 0,
      "id": 36906,
      "json_metadata": "{\"tags\":[\"introduceyourself\",\"cats\"],\"image\":[\"https://grey.house/img/niunia.jpg\"]}",
      "last_payout": "2016-08-13T21:04:45",
      "last_update": "2016-07-10T12:39:42",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "1969-12-31T23:59:59",
      "net_rshares": 0,
      "net_votes": 44,
      "parent_author": "",
      "parent_permlink": "introduceyourself",
      "percent_steem_dollars": 10000,
      "permlink": "hello-world",
      "reward_weight": 10000,
      "root_author": "gtg",
      "root_permlink": "hello-world",
      "title": "Hello, World!",
      "total_payout_value": {
        "amount": "254288",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": 0
    },
    {
      "abs_rshares": 0,
      "active": "2016-08-27T18:39:45",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 241,
      "beneficiaries": [],
      "body": "Suppose your miner node found `pow2`, but your `total_missed` count increased, instead of generating a block.\n\nIf this happens, double check your keys used in the `config.ini` file.\n\n```\nwitness = \"minerwitness\"\n\nminer = [\"minerwitness\",\"WIF_ACTIVE_PRIVATE_KEY\"]\nminer = [\"miner1\",\"WIF_ACTIVE_PRIVATE_KEY\"]\nminer = [\"miner2\",\"WIF_ACTIVE_PRIVATE_KEY\"]\nminer = [\"miner3\",\"WIF_ACTIVE_PRIVATE_KEY\"]\n\nmining-threads = 4\n\nprivate-key = WIF_SIGNING_PRIVATE_KEY\n```\n\nUsing keys without paying attention to their roles is a common mistake. @artakan [found out](https://steemit.com/mining/@artakan/important-info-for-steem-miner-do-not-use-your-steemit-com-account \"@artakan - Do not use your steemit.com account for mining\")\nthat issues with missing blocks tend to happen when you are using an account that was created through [steemit.com](https://steemit.com/ \"Blogging is the new mining\") but seems to work for the mined account.\n\nSo erroneous configuration might work for your mined account by pure coincidence. In other words, the same key has been defined for all roles, so:  `WIF_ACTIVE_PRIVATE_KEY` is exactly the same as `WIF_SIGNING_PRIVATE_KEY`.\n\n![witness](https://grey.house/img/witness2.jpg)\n\nIf you believe this idea is of use and value to Steem, please vote for me as a [witness](https://steemit.com/witness-category/@gtg/witness-gtg \"witness-gtg\")\neither on [Steemit's Witnesses List](https://steemit.com/~witnesses \"Witnesses\") \nor by using your `cli_wallet` command:\n`vote_for_witness \"YOURACCOUNT\" \"gtg\" true true`",
      "cashout_time": "2016-09-21T13:01:45",
      "category": "mining",
      "children": 6,
      "children_abs_rshares": 0,
      "created": "2016-08-21T12:29:18",
      "curator_payout_value": {
        "amount": "79",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 0,
      "id": 693873,
      "json_metadata": "{\"tags\":[\"mining\",\"steem\",\"steem-mining\"],\"users\":[\"artakan\"],\"links\":[\"https://steemit.com/mining/@artakan/important-info-for-steem-miner-do-not-use-your-steemit-com-account\"]}",
      "last_payout": "2016-08-22T13:01:45",
      "last_update": "2016-08-21T13:02:30",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "1969-12-31T23:59:59",
      "net_rshares": 0,
      "net_votes": 26,
      "parent_author": "",
      "parent_permlink": "mining",
      "percent_steem_dollars": 10000,
      "permlink": "missing-rewards-while-mining",
      "reward_weight": 10000,
      "root_author": "gtg",
      "root_permlink": "missing-rewards-while-mining",
      "title": "Missing rewards while mining - common mistake with keys",
      "total_payout_value": {
        "amount": "353",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": 0
    },
    {
      "abs_rshares": 0,
      "active": "2016-08-31T20:57:24",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 0,
      "beneficiaries": [],
      "body": "Hello Alex, welcome to steemit! :-)",
      "cashout_time": "1969-12-31T23:59:59",
      "category": "introduceyourself",
      "children": 0,
      "children_abs_rshares": 0,
      "created": "2016-08-31T20:57:24",
      "curator_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 1,
      "id": 817048,
      "json_metadata": "{\"tags\":[\"introduceyourself\"]}",
      "last_payout": "2016-09-01T19:22:30",
      "last_update": "2016-08-31T20:57:24",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "1969-12-31T23:59:59",
      "net_rshares": 0,
      "net_votes": 0,
      "parent_author": "amcq",
      "parent_permlink": "hello-steemit-i-m-alex-a-new-member-of-the-steemit-team",
      "percent_steem_dollars": 10000,
      "permlink": "re-amcq-hello-steemit-i-m-alex-a-new-member-of-the-steemit-team-20160831t205719836z",
      "reward_weight": 10000,
      "root_author": "amcq",
      "root_permlink": "hello-steemit-i-m-alex-a-new-member-of-the-steemit-team",
      "title": "",
      "total_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": 0
    },
    {
      "abs_rshares": 1067633479,
      "active": "2016-08-26T21:16:45",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 0,
      "beneficiaries": [],
      "body": "Hello Ania, welcome to steemit! :-)",
      "cashout_time": "1969-12-31T23:59:59",
      "category": "introduceyourself",
      "children": 1,
      "children_abs_rshares": 0,
      "created": "2016-08-26T18:53:09",
      "curator_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 1,
      "id": 758424,
      "json_metadata": "{\"tags\":[\"introduceyourself\"]}",
      "last_payout": "2016-08-27T21:18:18",
      "last_update": "2016-08-26T18:53:09",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "1969-12-31T23:59:59",
      "net_rshares": 1067633479,
      "net_votes": 2,
      "parent_author": "ania",
      "parent_permlink": "hello-world",
      "percent_steem_dollars": 10000,
      "permlink": "re-ania-hello-world-20160826t185305711z",
      "reward_weight": 10000,
      "root_author": "ania",
      "root_permlink": "hello-world",
      "title": "",
      "total_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": 1067633479
    },
    {
      "abs_rshares": 0,
      "active": "2016-09-15T14:11:09",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 0,
      "beneficiaries": [],
      "body": "True, as well as encouraging others to try to do the same :-)",
      "cashout_time": "1969-12-31T23:59:59",
      "category": "stats",
      "children": 0,
      "children_abs_rshares": 0,
      "created": "2016-09-15T14:11:09",
      "curator_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 5,
      "id": 958255,
      "json_metadata": "{\"tags\":[\"stats\"]}",
      "last_payout": "1970-01-01T00:00:00",
      "last_update": "2016-09-15T14:11:09",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "1969-12-31T23:59:59",
      "net_rshares": 0,
      "net_votes": 0,
      "parent_author": "arcange",
      "parent_permlink": "re-gtg-re-arcange-re-gtg-re-arcange-steemsql-com-a-deep-analysis-of-steemians-gratefulness-20160915t132416244z",
      "percent_steem_dollars": 10000,
      "permlink": "re-arcange-re-gtg-re-arcange-re-gtg-re-arcange-steemsql-com-a-deep-analysis-of-steemians-gratefulness-20160915t141107191z",
      "reward_weight": 10000,
      "root_author": "arcange",
      "root_permlink": "steemsql-com-a-deep-analysis-of-steemians-gratefulness",
      "title": "",
      "total_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": 0
    },
    {
      "abs_rshares": 0,
      "active": "2016-09-15T14:11:09",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 0,
      "beneficiaries": [],
      "body": "I noticed that just after writing a comment (when went back to continue reading ... ) ___Thank you___ for pointing out. :-)",
      "cashout_time": "1969-12-31T23:59:59",
      "category": "stats",
      "children": 2,
      "children_abs_rshares": 0,
      "created": "2016-09-15T13:19:24",
      "curator_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 3,
      "id": 957804,
      "json_metadata": "{\"tags\":[\"stats\"]}",
      "last_payout": "1970-01-01T00:00:00",
      "last_update": "2016-09-15T13:19:24",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "1969-12-31T23:59:59",
      "net_rshares": 0,
      "net_votes": 0,
      "parent_author": "arcange",
      "parent_permlink": "re-gtg-re-arcange-steemsql-com-a-deep-analysis-of-steemians-gratefulness-20160915t130619700z",
      "percent_steem_dollars": 10000,
      "permlink": "re-arcange-re-gtg-re-arcange-steemsql-com-a-deep-analysis-of-steemians-gratefulness-20160915t131924290z",
      "reward_weight": 10000,
      "root_author": "arcange",
      "root_permlink": "steemsql-com-a-deep-analysis-of-steemians-gratefulness",
      "title": "",
      "total_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": 0
    },
    {
      "abs_rshares": 0,
      "active": "2016-09-15T14:11:09",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 0,
      "beneficiaries": [],
      "body": "@arcange, please do not underestimate ___\"Thank you\"___ while searching for ___\"Thanks\"___ ;-)\n\nThank you,\n[Gandalf](https://steemit.com/@gtg) (\"gtg\")",
      "cashout_time": "1969-12-31T23:59:59",
      "category": "stats",
      "children": 4,
      "children_abs_rshares": 0,
      "created": "2016-09-15T13:04:12",
      "curator_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 1,
      "id": 957696,
      "json_metadata": "{\"tags\":[\"stats\"],\"users\":[\"arcange\"],\"links\":[\"https://steemit.com/@gtg\"]}",
      "last_payout": "1970-01-01T00:00:00",
      "last_update": "2016-09-15T13:08:12",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "1969-12-31T23:59:59",
      "net_rshares": 0,
      "net_votes": 0,
      "parent_author": "arcange",
      "parent_permlink": "steemsql-com-a-deep-analysis-of-steemians-gratefulness",
      "percent_steem_dollars": 10000,
      "permlink": "re-arcange-steemsql-com-a-deep-analysis-of-steemians-gratefulness-20160915t130410195z",
      "reward_weight": 10000,
      "root_author": "arcange",
      "root_permlink": "steemsql-com-a-deep-analysis-of-steemians-gratefulness",
      "title": "",
      "total_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": 0
    },
    {
      "abs_rshares": 0,
      "active": "2016-08-21T12:33:57",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 27,
      "beneficiaries": [],
      "body": "There's nothing wrong with mining using your _\"steemit.com account\"_. It's **all about your keys** and using **proper miner configuration**. I tried to explain common mistake https://steemit.com/mining/@gtg/missing-rewards-while-mining",
      "cashout_time": "1969-12-31T23:59:59",
      "category": "mining",
      "children": 0,
      "children_abs_rshares": 0,
      "created": "2016-08-21T12:33:57",
      "curator_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 1,
      "id": 693917,
      "json_metadata": "{\"tags\":[\"mining\"],\"links\":[\"https://steemit.com/mining/@gtg/missing-rewards-while-mining\"]}",
      "last_payout": "2016-08-22T10:51:00",
      "last_update": "2016-08-21T12:33:57",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "1969-12-31T23:59:59",
      "net_rshares": 0,
      "net_votes": 3,
      "parent_author": "artakan",
      "parent_permlink": "important-info-for-steem-miner-do-not-use-your-steemit-com-account",
      "percent_steem_dollars": 10000,
      "permlink": "re-artakan-important-info-for-steem-miner-do-not-use-your-steemit-com-account-20160821t123356072z",
      "reward_weight": 10000,
      "root_author": "artakan",
      "root_permlink": "important-info-for-steem-miner-do-not-use-your-steemit-com-account",
      "title": "",
      "total_payout_value": {
        "amount": "39",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": 0
    },
    {
      "abs_rshares": 0,
      "active": "2016-08-29T19:19:18",
      "allow_curation_rewards": true,
      "allow_replies": true,
      "allow_votes": true,
      "author": "gtg",
      "author_rewards": 0,
      "beneficiaries": [],
      "body": "Hello @artywah, welcome to steemit! :-)\nHint: Adding a picture to your post could make it more appealing.\n( I used my cat for that ;-) )",
      "cashout_time": "1969-12-31T23:59:59",
      "category": "introduceyourself",
      "children": 0,
      "children_abs_rshares": 0,
      "created": "2016-08-29T19:19:18",
      "curator_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "depth": 1,
      "id": 792758,
      "json_metadata": "{\"tags\":[\"introduceyourself\"],\"users\":[\"artywah\"]}",
      "last_payout": "2016-08-30T18:28:06",
      "last_update": "2016-08-29T19:19:18",
      "max_accepted_payout": {
        "amount": "1000000000",
        "nai": "@@000000013",
        "precision": 3
      },
      "max_cashout_time": "1969-12-31T23:59:59",
      "net_rshares": 0,
      "net_votes": 0,
      "parent_author": "artywah",
      "parent_permlink": "self-proclaimed-geek-and-digital-ancient-in-melbourne-australia",
      "percent_steem_dollars": 10000,
      "permlink": "re-artywah-self-proclaimed-geek-and-digital-ancient-in-melbourne-australia-20160829t191915549z",
      "reward_weight": 10000,
      "root_author": "artywah",
      "root_permlink": "self-proclaimed-geek-and-digital-ancient-in-melbourne-australia",
      "title": "",
      "total_payout_value": {
        "amount": "0",
        "nai": "@@000000013",
        "precision": 3
      },
      "total_vote_weight": 0,
      "vote_rshares": 0
    }
  ]
}
