Ecoer Logo
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS35.61%
Net Worth
0.030USD
STEEM
0.002STEEM
SBD
0.038SBD
Effective Power
5.008SP
├── Own SP
0.196SP
└── Incoming Deleg
+4.812SP

Detailed Balance

STEEM
balance
0.002STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.196SP
Delegated Out
0.000SP
Delegation In
4.812SP
Effective Power
5.008SP
Reward SP (pending)
0.058SP
SBD
sbd_balance
0.019SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.019SBD
{
  "balance": "0.002 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "318.925652 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7824.734154 VESTS",
  "sbd_balance": "0.019 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.019 SBD",
  "conversions": []
}

Account Info

nameazok
id1091321
rank1,379,336
reputation3936595906
created2018-07-28T05:13:48
recovery_accountsteem
proxyNone
post_count19
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2019-03-16T15:09:54
last_root_post2019-03-16T15:09:54
last_vote_time2019-03-17T07:12:09
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.002 STEEM
savings_balance0.000 STEEM
sbd_balance0.019 SBD
savings_sbd_balance0.000 SBD
vesting_shares318.925652 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7824.734154 VESTS
reward_vesting_balance116.196194 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2019-02-26T14:03:21
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM7nNVivNcHteMQKk87kCMzmrMvBvTw4S8FVs8Jmu1fEv1yyGNW4",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "0.002 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2018-07-28T05:13:48",
  "curation_rewards": 2,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779054504
  },
  "guest_bloggers": [],
  "id": 1091321,
  "json_metadata": "{\"profile\":{\"cover_image\":\"http://www.webdesigntrends.us/wp-content/uploads/2018/07/After-Free-Basics-Facebook-Tests-express-Wi-fi-in-India.jpg\",\"profile_image\":\"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRzyGm4_xCynYWJiYGlitgWsakeKN1gCe_qui6WCLaRo3tWPCbDOck6\",\"name\":\"AZOK\"}}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2019-02-26T14:03:21",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_post": "2019-03-16T15:09:54",
  "last_root_post": "2019-03-16T15:09:54",
  "last_vote_time": "2019-03-17T07:12:09",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM5qJTfMW3fQWCa56RbyPmWvYkVJiV2jRSksTmv74qkgTb5WYHZy",
  "mined": false,
  "name": "azok",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM4y5eQutbX1Sm8J2Nqs9qoDbVwBwtwAJFo9ZEaBMeYfacEEMoHn",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 19,
  "post_history": [],
  "posting": {
    "account_auths": [
      [
        "drugwars.app",
        1
      ]
    ],
    "key_auths": [
      [
        "STM7Qe24g1gQWuPCtQUfWWFjj2kuqHLbokChQDHXrTS42hd3u9Wek",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"cover_image\":\"http://www.webdesigntrends.us/wp-content/uploads/2018/07/After-Free-Basics-Facebook-Tests-express-Wi-fi-in-India.jpg\",\"profile_image\":\"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRzyGm4_xCynYWJiYGlitgWsakeKN1gCe_qui6WCLaRo3tWPCbDOck6\",\"name\":\"AZOK\"}}",
  "posting_rewards": 228,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "7824.734154 VESTS",
  "recovery_account": "steem",
  "reputation": 3936595906,
  "reset_account": "null",
  "reward_sbd_balance": "0.019 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "116.196194 VESTS",
  "reward_vesting_steem": "0.058 STEEM",
  "savings_balance": "0.000 STEEM",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "sbd_balance": "0.019 SBD",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "2019-02-26T13:29:39",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "318.925652 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779054504
  },
  "voting_power": 0,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 1379336
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.812 SP to @azok
2026/05/17 21:48:24
delegateeazok
delegatorsteem
vesting shares7824.734154 VESTS
Transaction InfoBlock #106140523/Trx b2ab9b0cde39b908c22e9edea3a0343340665bc1
View Raw JSON Data
{
  "block": 106140523,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "7824.734154 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-17T21:48:24",
  "trx_id": "b2ab9b0cde39b908c22e9edea3a0343340665bc1",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 3.144 SP to @azok
2026/05/11 18:48:24
delegateeazok
delegatorsteem
vesting shares5112.523749 VESTS
Transaction InfoBlock #105964903/Trx dcd401f87d6173adaa48e70c4b1eabc38455fc0f
View Raw JSON Data
{
  "block": 105964903,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "5112.523749 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-11T18:48:24",
  "trx_id": "dcd401f87d6173adaa48e70c4b1eabc38455fc0f",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 4.820 SP to @azok
2026/04/25 21:13:09
delegateeazok
delegatorsteem
vesting shares7837.249910 VESTS
Transaction InfoBlock #105508247/Trx 5dcfa8e06b378ac899f489dd41cabe051273c30e
View Raw JSON Data
{
  "block": 105508247,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "7837.249910 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-04-25T21:13:09",
  "trx_id": "5dcfa8e06b378ac899f489dd41cabe051273c30e",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 3.169 SP to @azok
2026/01/23 01:21:12
delegateeazok
delegatorsteem
vesting shares5154.070568 VESTS
Transaction InfoBlock #102844093/Trx 0f67761eb8a71da83a97d3a485af835e2dfa2dc7
View Raw JSON Data
{
  "block": 102844093,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "5154.070568 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-01-23T01:21:12",
  "trx_id": "0f67761eb8a71da83a97d3a485af835e2dfa2dc7",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 3.270 SP to @azok
2024/12/16 20:41:00
delegateeazok
delegatorsteem
vesting shares5318.289765 VESTS
Transaction InfoBlock #91290508/Trx d32a6ec146cd264ea2d8d1891a54acc1c158d8fb
View Raw JSON Data
{
  "block": 91290508,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "5318.289765 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2024-12-16T20:41:00",
  "trx_id": "d32a6ec146cd264ea2d8d1891a54acc1c158d8fb",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 3.374 SP to @azok
2023/11/13 12:26:51
delegateeazok
delegatorsteem
vesting shares5487.423297 VESTS
Transaction InfoBlock #79844786/Trx 3cd9054eb9ae9c8f314fb634d247b91a5ea1fe8c
View Raw JSON Data
{
  "block": 79844786,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "5487.423297 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-11-13T12:26:51",
  "trx_id": "3cd9054eb9ae9c8f314fb634d247b91a5ea1fe8c",
  "trx_in_block": 7,
  "virtual_op": 0
}
steemdelegated 5.181 SP to @azok
2023/09/21 18:59:18
delegateeazok
delegatorsteem
vesting shares8424.702083 VESTS
Transaction InfoBlock #78344434/Trx 5d4bcd7bd1f27d4338db7c38e529b384c4f9dd58
View Raw JSON Data
{
  "block": 78344434,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "8424.702083 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-09-21T18:59:18",
  "trx_id": "5d4bcd7bd1f27d4338db7c38e529b384c4f9dd58",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 5.317 SP to @azok
2022/11/03 09:05:57
delegateeazok
delegatorsteem
vesting shares8646.383521 VESTS
Transaction InfoBlock #69110149/Trx 05122c487427598b5bf490d450b8a1e8c73a76a8
View Raw JSON Data
{
  "block": 69110149,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "8646.383521 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-11-03T09:05:57",
  "trx_id": "05122c487427598b5bf490d450b8a1e8c73a76a8",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 5.453 SP to @azok
2022/01/17 08:34:45
delegateeazok
delegatorsteem
vesting shares8866.916752 VESTS
Transaction InfoBlock #60806580/Trx 2c613b29fbabba25a8806dc7352e190b9ced1a30
View Raw JSON Data
{
  "block": 60806580,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "8866.916752 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-01-17T08:34:45",
  "trx_id": "2c613b29fbabba25a8806dc7352e190b9ced1a30",
  "trx_in_block": 25,
  "virtual_op": 0
}
steemdelegated 5.566 SP to @azok
2021/06/13 22:35:54
delegateeazok
delegatorsteem
vesting shares9050.685410 VESTS
Transaction InfoBlock #54605086/Trx 31d5cdbbcfe873d76931d1a4af6b950c4bdc178b
View Raw JSON Data
{
  "block": 54605086,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "9050.685410 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-06-13T22:35:54",
  "trx_id": "31d5cdbbcfe873d76931d1a4af6b950c4bdc178b",
  "trx_in_block": 3,
  "virtual_op": 0
}
steemdelegated 5.681 SP to @azok
2020/12/11 08:57:51
delegateeazok
delegatorsteem
vesting shares9238.107384 VESTS
Transaction InfoBlock #49352635/Trx 9aad14795955e8efcc9ec26584b03133a2234339
View Raw JSON Data
{
  "block": 49352635,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "9238.107384 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-11T08:57:51",
  "trx_id": "9aad14795955e8efcc9ec26584b03133a2234339",
  "trx_in_block": 4,
  "virtual_op": 0
}
steemdelegated 1.176 SP to @azok
2020/12/06 02:35:27
delegateeazok
delegatorsteem
vesting shares1912.543513 VESTS
Transaction InfoBlock #49204206/Trx ebcba486449f6035e05e983d7842f61bd914d274
View Raw JSON Data
{
  "block": 49204206,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "1912.543513 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-06T02:35:27",
  "trx_id": "ebcba486449f6035e05e983d7842f61bd914d274",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 5.691 SP to @azok
2020/11/25 16:39:00
delegateeazok
delegatorsteem
vesting shares9255.234001 VESTS
Transaction InfoBlock #48908693/Trx d994662cac6625d65a00369499931120cf5e7543
View Raw JSON Data
{
  "block": 48908693,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "9255.234001 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-11-25T16:39:00",
  "trx_id": "d994662cac6625d65a00369499931120cf5e7543",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 5.809 SP to @azok
2020/05/09 03:30:15
delegateeazok
delegatorsteem
vesting shares9447.120597 VESTS
Transaction InfoBlock #43214416/Trx e80f167315da3888fb029b8add2e59dc771bd758
View Raw JSON Data
{
  "block": 43214416,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "9447.120597 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-09T03:30:15",
  "trx_id": "e80f167315da3888fb029b8add2e59dc771bd758",
  "trx_in_block": 21,
  "virtual_op": 0
}
steemdelegated 1.201 SP to @azok
2020/05/08 06:46:36
delegateeazok
delegatorsteem
vesting shares1953.311140 VESTS
Transaction InfoBlock #43190126/Trx 8b130e729f733d9adedaf3db3a2fe4f906e2e948
View Raw JSON Data
{
  "block": 43190126,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "1953.311140 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-08T06:46:36",
  "trx_id": "8b130e729f733d9adedaf3db3a2fe4f906e2e948",
  "trx_in_block": 13,
  "virtual_op": 0
}
2019/07/28 06:31:21
authorsteemitboard
bodyCongratulations @azok! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@azok/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@azok) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=azok)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorazok
parent permlinkterrorist-attack-of-new-zealand
permlinksteemitboard-notify-azok-20190728t063121000z
title
Transaction InfoBlock #35050025/Trx 01237cbe31f262c6875b827e43a3d7b9b7a03507
View Raw JSON Data
{
  "block": 35050025,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @azok! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@azok/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@azok) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=azok)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "azok",
      "parent_permlink": "terrorist-attack-of-new-zealand",
      "permlink": "steemitboard-notify-azok-20190728t063121000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-07-28T06:31:21",
  "trx_id": "01237cbe31f262c6875b827e43a3d7b9b7a03507",
  "trx_in_block": 9,
  "virtual_op": 0
}
steemdelegated 5.925 SP to @azok
2019/06/16 08:56:39
delegateeazok
delegatorsteem
vesting shares9635.511162 VESTS
Transaction InfoBlock #33845363/Trx 42182e07c3bce1241af1eb0cdc325db1f8fcf835
View Raw JSON Data
{
  "block": 33845363,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "9635.511162 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-16T08:56:39",
  "trx_id": "42182e07c3bce1241af1eb0cdc325db1f8fcf835",
  "trx_in_block": 12,
  "virtual_op": 0
}
steemdelegated 18.253 SP to @azok
2019/03/29 05:09:48
delegateeazok
delegatorsteem
vesting shares29682.059223 VESTS
Transaction InfoBlock #31568924/Trx cfd0122aba6f620a1b92d01ac3c2c96adb794a65
View Raw JSON Data
{
  "block": 31568924,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "azok",
      "delegator": "steem",
      "vesting_shares": "29682.059223 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-29T05:09:48",
  "trx_id": "cfd0122aba6f620a1b92d01ac3c2c96adb794a65",
  "trx_in_block": 31,
  "virtual_op": 0
}
2019/03/17 07:12:09
authorazok
permlinkterrorist-attack-of-new-zealand
voterazok
weight10000 (100.00%)
Transaction InfoBlock #31225954/Trx c98106140954541a3a3c65f8323adea062b42a5f
View Raw JSON Data
{
  "block": 31225954,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "terrorist-attack-of-new-zealand",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-17T07:12:09",
  "trx_id": "c98106140954541a3a3c65f8323adea062b42a5f",
  "trx_in_block": 16,
  "virtual_op": 0
}
2019/03/16 15:16:48
authorazok
body@@ -1,43 +1,165 @@ -https://vk.com/video294486868_456239109 +!%5B%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.png%5D(https://cdn.steemitimages.com/DQmX56aWrcE1hEZGKP7jjAeGQG9kA2bQJVeqL4XqwZMjbFP/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B9.png) %0A%0ATh @@ -6952,16 +6952,57 @@ n their country. +%0A%0Ahttps://vk.com/video294486868_456239109
json metadata{"tags":["new","zealand","terrorist","attack","news"],"links":["https://vk.com/video294486868_456239109"],"app":"steemit/0.1","format":"markdown","image":["https://cdn.steemitimages.com/DQmX56aWrcE1hEZGKP7jjAeGQG9kA2bQJVeqL4XqwZMjbFP/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.png"]}
parent author
parent permlinknew
permlinkterrorist-attack-of-new-zealand
titleTerrorist Attack Of New Zealand
Transaction InfoBlock #31206860/Trx 9993232a56f64c12bda32c1b8fe2bb1c26eae5bd
View Raw JSON Data
{
  "block": 31206860,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "@@ -1,43 +1,165 @@\n-https://vk.com/video294486868_456239109\n+!%5B%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.png%5D(https://cdn.steemitimages.com/DQmX56aWrcE1hEZGKP7jjAeGQG9kA2bQJVeqL4XqwZMjbFP/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B9.png)\n %0A%0ATh\n@@ -6952,16 +6952,57 @@\n n their country.\n+%0A%0Ahttps://vk.com/video294486868_456239109\n",
      "json_metadata": "{\"tags\":[\"new\",\"zealand\",\"terrorist\",\"attack\",\"news\"],\"links\":[\"https://vk.com/video294486868_456239109\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://cdn.steemitimages.com/DQmX56aWrcE1hEZGKP7jjAeGQG9kA2bQJVeqL4XqwZMjbFP/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.png\"]}",
      "parent_author": "",
      "parent_permlink": "new",
      "permlink": "terrorist-attack-of-new-zealand",
      "title": "Terrorist Attack Of New Zealand"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-16T15:16:48",
  "trx_id": "9993232a56f64c12bda32c1b8fe2bb1c26eae5bd",
  "trx_in_block": 28,
  "virtual_op": 0
}
2019/03/16 15:09:54
authorazok
bodyhttps://vk.com/video294486868_456239109 The attacks on the mosques in Christchurch were not tied to terrorism until recently. Even after the Internet was flooded with horrific scenes of reprisals against defenseless people and a manifesto of the shooter was published, where he himself called his act a terrorist act. It was as if the New Zealanders tried not to think that they too could be defenseless against the threat, and now the country seemed to freeze in grief, unable to believe what had happened. In the afternoon of March 15, a young man in camouflage and a motorcycle helmet entered the Al-Nur mosque. He walked without hiding, carried automatic weapons and additional clips to them, but no one tried to block his way, call the police, or even ask what was going on. He entered the mosque, closed the doors and opened fire on the believers sitting on the floor. After, according to the police, he drove to another mosque in Longwood by car and went back inside quietly, closed the door and opened fire. 26 minutes after the start of the shooting, the mosques were surrounded by armed policemen, but there was not even talk of an assault. There were dozens of dead and wounded in social networks and the media, and what was happening was still considered a "firearm incident." After another 10 minutes, Brenton Harris Tarrant got out of the mosque and got into his car, parked nearby. There he was detained by the police. The name Tarrant (a man accused of attacks on mosques in New Zealand) was not named by the police. He was first identified by journalists and users of social networks. On the eve of the attack, which he himself called a terrorist act, Tarrant posted on his Twitter page (which is already blocked) a multipage manifesto calling for the killing of world leaders. The same manifesto at one time was published by Anders Breivik, who committed the terrorist attack in Norway in 2011, as a result of which 77 people were killed and another 240 were injured. Brenton Harris Tarrant, a 28-year-old Australian citizen, worked as a trainer in one of the gyms of Grafton in the north of New South Wales until 2011, and then went traveling around Europe. According to his colleagues, he was an ordinary person interested in his work, willingly helped children, participated in free, charity programs. Tarrant himself described himself as an "ordinary white man" who was born in Australia into a "working-class family." New Zealand’s Prime Minister, Jasinda Ardern, described the incident as a terrorist act several hours after Tarrant’s arrest and three other people (their involvement in the matter is now in question), after the meeting of the country's Security Council. From now on, New Zealand seemed to be living in a new reality. In the one where it is difficult for special services to prevent terrorist attacks and people die in them. # Church of Christ The name of the city of Christchurch is translated into Russian as the Church of Christ. This is a fairly large, by New Zealand standards, settlement: about 400 thousand people live here permanently, and the local community is almost closed to migrants. Over the past three years, the city received only 18 people, and metropolitan Wellington, almost equal in population, for example, for the same period - 967 people. So the Christchurch population is a fairly cohesive community, and this is exactly the case when the neighbors know each other and are often friends of families. It is difficult to enmity and hate. However, it was here in February 2018 that the police detained a young man practicing Islam, who intended to commit an “act of intimidation”. He wanted to send the car to the crowd and finish off the victims with a knife. After this incident, Christchurch once again plunged into its usual calm and safe life, where the biggest events were small car accidents. Before the attack on the mosque remained a little over a year. # Darkest day "I never thought that this could happen here" - this phrase today can be considered the main one in New Zealand. She, like a spell, is repeated by all kiwis, regardless of religion or ethnicity. “We knew, we were convinced that we were safe. The New Zealand version of extremism was a fight at the Fully Black game (New Zealand rugby team). But it was until yesterday, but now everything is different,” the head of the New Zealand news service writes. Bay of Plenty Times newspaper Sonya Bateson, and her words very accurately reflect today's mood in society. Now it's really different: New Zealanders know that their country is no longer a safe haven. But still there is in their statements and comments on television and in social networks something other than fear. Now it became clear to them how long their country had lived a little apart from the rest of the world, as if, without paying much attention to what was happening around, without plunging. It was as if they didn’t care about the troubles that disturb the others while their own harbor is safe. Or while she seems so. “Now we all feel guilty for just shaking our heads, hearing about mass executions in the United States or about terrorist attacks in European cities. We have long been convinced of our own safety, believing that our laws are strong enough to protect us, and culture Kiwi is too isolated, different from others and there is no xenophobia in it. We were cruelly mistaken in thinking that we live in another reality and now it seems the time has come to pay for this mistake, "continues Sonya Bateson of the Bay of Plenty Times. Incidentally, she was one of the first journalists who entered the Al-Nur mosque before they brought out all the injured and wounded from there. In the next few weeks, New Zealand will of course have a number of changes: the law on weapons circulation will be revised (tightened), the complex approach to protocols and security requirements will change, the presence of police will become more tangible, as will the rigidity of migration requirements, but this is hardly whether the new Zealander can return to the old serenity and sense of self, the last island of peace in the world. The era of innocence for New Zealand is over. Now on the quiet streets of Christchurch there are almost no cars - the traffic in the center of the city is still blocked by the police, but there are amazingly many stunned people here. They bring white lilies and candles to the fences of mosques, stand silently, and then leave to return to the scene of the tragedy a few hours later - hundreds of thousands of bouquets at mosques not only of Christchurch, but also of the whole country. On self-made posters that New Zealanders carry along with flowers, it says “This is not us, this is not New Zealand,” as if people still cannot believe that this has happened to them and in their country.
json metadata{"tags":["new","zealand","terrorist","attack","news"],"links":["https://vk.com/video294486868_456239109"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinknew
permlinkterrorist-attack-of-new-zealand
titleTerrorist Attack Of New Zealand
Transaction InfoBlock #31206722/Trx beb81fb4981a78568a1febf7908fde2f8b065ca4
View Raw JSON Data
{
  "block": 31206722,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "https://vk.com/video294486868_456239109\n\nThe attacks on the mosques in Christchurch were not tied to terrorism until recently. Even after the Internet was flooded with horrific scenes of reprisals against defenseless people and a manifesto of the shooter was published, where he himself called his act a terrorist act. It was as if the New Zealanders tried not to think that they too could be defenseless against the threat, and now the country seemed to freeze in grief, unable to believe what had happened.\n\nIn the afternoon of March 15, a young man in camouflage and a motorcycle helmet entered the Al-Nur mosque. He walked without hiding, carried automatic weapons and additional clips to them, but no one tried to block his way, call the police, or even ask what was going on. He entered the mosque, closed the doors and opened fire on the believers sitting on the floor. After, according to the police, he drove to another mosque in Longwood by car and went back inside quietly, closed the door and opened fire.\n\n26 minutes after the start of the shooting, the mosques were surrounded by armed policemen, but there was not even talk of an assault. There were dozens of dead and wounded in social networks and the media, and what was happening was still considered a \"firearm incident.\" After another 10 minutes, Brenton Harris Tarrant got out of the mosque and got into his car, parked nearby. There he was detained by the police.\n\nThe name Tarrant (a man accused of attacks on mosques in New Zealand) was not named by the police. He was first identified by journalists and users of social networks. On the eve of the attack, which he himself called a terrorist act, Tarrant posted on his Twitter page (which is already blocked) a multipage manifesto calling for the killing of world leaders. The same manifesto at one time was published by Anders Breivik, who committed the terrorist attack in Norway in 2011, as a result of which 77 people were killed and another 240 were injured.\n\nBrenton Harris Tarrant, a 28-year-old Australian citizen, worked as a trainer in one of the gyms of Grafton in the north of New South Wales until 2011, and then went traveling around Europe. According to his colleagues, he was an ordinary person interested in his work, willingly helped children, participated in free, charity programs. Tarrant himself described himself as an \"ordinary white man\" who was born in Australia into a \"working-class family.\" \n\nNew Zealand’s Prime Minister, Jasinda Ardern, described the incident as a terrorist act several hours after Tarrant’s arrest and three other people (their involvement in the matter is now in question), after the meeting of the country's Security Council. From now on, New Zealand seemed to be living in a new reality. In the one where it is difficult for special services to prevent terrorist attacks and people die in them.\n\n# Church of Christ\n\nThe name of the city of Christchurch is translated into Russian as the Church of Christ. This is a fairly large, by New Zealand standards, settlement: about 400 thousand people live here permanently, and the local community is almost closed to migrants. Over the past three years, the city received only 18 people, and metropolitan Wellington, almost equal in population, for example, for the same period - 967 people. So the Christchurch population is a fairly cohesive community, and this is exactly the case when the neighbors know each other and are often friends of families. It is difficult to enmity and hate.\n\nHowever, it was here in February 2018 that the police detained a young man practicing Islam, who intended to commit an “act of intimidation”. He wanted to send the car to the crowd and finish off the victims with a knife. After this incident, Christchurch once again plunged into its usual calm and safe life, where the biggest events were small car accidents. Before the attack on the mosque remained a little over a year.\n\n# Darkest day\n\n\"I never thought that this could happen here\" - this phrase today can be considered the main one in New Zealand. She, like a spell, is repeated by all kiwis, regardless of religion or ethnicity. “We knew, we were convinced that we were safe. The New Zealand version of extremism was a fight at the Fully Black game (New Zealand rugby team). But it was until yesterday, but now everything is different,” the head of the New Zealand news service writes. Bay of Plenty Times newspaper Sonya Bateson, and her words very accurately reflect today's mood in society.\n\nNow it's really different: New Zealanders know that their country is no longer a safe haven. But still there is in their statements and comments on television and in social networks something other than fear. Now it became clear to them how long their country had lived a little apart from the rest of the world, as if, without paying much attention to what was happening around, without plunging. It was as if they didn’t care about the troubles that disturb the others while their own harbor is safe. Or while she seems so.\n\n“Now we all feel guilty for just shaking our heads, hearing about mass executions in the United States or about terrorist attacks in European cities. We have long been convinced of our own safety, believing that our laws are strong enough to protect us, and culture Kiwi is too isolated, different from others and there is no xenophobia in it. We were cruelly mistaken in thinking that we live in another reality and now it seems the time has come to pay for this mistake, \"continues Sonya Bateson of the Bay of Plenty Times. Incidentally, she was one of the first journalists who entered the Al-Nur mosque before they brought out all the injured and wounded from there.\n\nIn the next few weeks, New Zealand will of course have a number of changes: the law on weapons circulation will be revised (tightened), the complex approach to protocols and security requirements will change, the presence of police will become more tangible, as will the rigidity of migration requirements, but this is hardly whether the new Zealander can return to the old serenity and sense of self, the last island of peace in the world. The era of innocence for New Zealand is over.\n\nNow on the quiet streets of Christchurch there are almost no cars - the traffic in the center of the city is still blocked by the police, but there are amazingly many stunned people here. They bring white lilies and candles to the fences of mosques, stand silently, and then leave to return to the scene of the tragedy a few hours later - hundreds of thousands of bouquets at mosques not only of Christchurch, but also of the whole country. On self-made posters that New Zealanders carry along with flowers, it says “This is not us, this is not New Zealand,” as if people still cannot believe that this has happened to them and in their country.",
      "json_metadata": "{\"tags\":[\"new\",\"zealand\",\"terrorist\",\"attack\",\"news\"],\"links\":[\"https://vk.com/video294486868_456239109\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "new",
      "permlink": "terrorist-attack-of-new-zealand",
      "title": "Terrorist Attack Of New Zealand"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-16T15:09:54",
  "trx_id": "beb81fb4981a78568a1febf7908fde2f8b065ca4",
  "trx_in_block": 7,
  "virtual_op": 0
}
dleasesent 0.001 STEEM to @azok- "BuildTeam is proud to announce the release of DLease.io - our flagship P2P leasing marketplace app, aimed at assisting Steemians in leasing and delegating STEEM POWER for daily passive returns, with r..."
2019/03/12 12:34:36
amount0.001 STEEM
fromdlease
memoBuildTeam is proud to announce the release of DLease.io - our flagship P2P leasing marketplace app, aimed at assisting Steemians in leasing and delegating STEEM POWER for daily passive returns, with recent yields as high as 20% APR. DLease.io is a professional grade app , designed to replace the current MinnowBooster.net leasing market which has to date facilitated nearly 20 Million STEEM POWER in lease value to happy BuildTeam customers. View the new app at https://dlease.io/ or read the announcement post on https://steemit.com/@dlease.
toazok
Transaction InfoBlock #31088531/Trx 3bc28ed50a1089128e642fdd606f8f09dcb2fd3f
View Raw JSON Data
{
  "block": 31088531,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "dlease",
      "memo": "BuildTeam is proud to announce the release of DLease.io - our flagship P2P leasing marketplace app, aimed at assisting Steemians in leasing and delegating STEEM POWER for daily passive returns, with recent yields as high as 20% APR. DLease.io is a professional grade app , designed to replace the current MinnowBooster.net leasing market which has to date facilitated nearly 20 Million STEEM POWER in lease value to happy BuildTeam customers. View the new app at https://dlease.io/ or read the announcement post on https://steemit.com/@dlease.",
      "to": "azok"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-12T12:34:36",
  "trx_id": "3bc28ed50a1089128e642fdd606f8f09dcb2fd3f",
  "trx_in_block": 12,
  "virtual_op": 0
}
azokpublished a new post: how-does-ethereum-work
2019/03/04 15:57:45
authorazok
body@@ -59741,17 +59741,16 @@ urces:%0A%0A -%5B github.c @@ -59776,13 +59776,9 @@ aper -%5D %0A%5B +%0A medi @@ -59848,6 +59848,4 @@ 6369 - %5D
json metadata{"tags":["ethereum","blokchain","technology","pow","mining"],"image":["https://hsto.org/getpro/habr/post_images/174/b46/982/174b46982b2649de521e81510f464db2.png","https://hsto.org/getpro/habr/post_images/699/f5d/f42/699f5df4291b4e0fe218ced727a48162.png","https://hsto.org/getpro/habr/post_images/300/f9b/d24/300f9bd24f321692582aa5723cc558e8.png","https://hsto.org/getpro/habr/post_images/39f/c73/d7d/39fc73d7dcb5982f6d0510c2b5fc95ba.png","https://hsto.org/getpro/habr/post_images/0a9/a60/c20/0a9a60c205c85aaf002cb88bde9b3e21.png","https://hsto.org/getpro/habr/post_images/c35/b84/edd/c35b84eddefd020b743faeb642598a35.png","https://hsto.org/getpro/habr/post_images/698/ede/44b/698ede44b970953f04f36bc46288f92c.png","https://hsto.org/getpro/habr/post_images/60d/f87/6dc/60df876dc65a9336edc6e08b7aa84c90.png","https://hsto.org/getpro/habr/post_images/f61/632/05a/f6163205aa7816274ec0963876650794.png","https://hsto.org/getpro/habr/post_images/792/310/b80/792310b808aea5e0071349bb4fec4c40.png","https://hsto.org/getpro/habr/post_images/f37/406/26a/f3740626a6de50c5783dfcd1be181846.png","https://hsto.org/getpro/habr/post_images/6c9/415/78b/6c941578b41c532239bcac828c1492db.png","https://hsto.org/getpro/habr/post_images/0d7/ce3/27c/0d7ce327c6614e81effb59d8740aaa59.png","https://hsto.org/getpro/habr/post_images/a2e/5be/360/a2e5be3606ee7f6d8cdb265fce9ed386.png","https://hsto.org/getpro/habr/post_images/a98/c18/99f/a98c1899f8a005237e74ba058f0226f5.png","https://hsto.org/getpro/habr/post_images/e69/840/c50/e69840c506bda92db427c2eae6a52141.png","https://hsto.org/getpro/habr/post_images/7a9/0ad/a3c/7a90ada3cbc71381f2487870e695273b.png","https://hsto.org/getpro/habr/post_images/e62/07c/be2/e6207cbe2731d1ff37617aa9f18402f9.png","https://hsto.org/getpro/habr/post_images/d74/821/50d/d7482150d3ae6464c70548c616ba32ed.png","https://hsto.org/getpro/habr/post_images/afb/8e0/79c/afb8e079c91120bcf834a8cdb6fe20b8.png","https://hsto.org/getpro/habr/post_images/0a7/180/00b/0a718000b8aba14735eaed0dc2a14673.png","https://hsto.org/getpro/habr/post_images/d4d/519/69b/d4d51969b2ea3783ccf574a880a1f1be.png","https://hsto.org/getpro/habr/post_images/6a8/599/925/6a85999250c78464489b96c98815eae1.png","https://hsto.org/getpro/habr/post_images/98f/d7b/c81/98fd7bc81f3c1297846dbf855071e521.png","https://hsto.org/getpro/habr/post_images/3b3/1de/2d1/3b31de2d147fcd268c421524397d6ae2.png","https://hsto.org/getpro/habr/post_images/14d/638/fe9/14d638fe92c4c504d76406ff3de69313.png","https://hsto.org/getpro/habr/post_images/875/26f/3fe/87526f3fe5b7963aa8c9fea26fb2b2c1.png","https://hsto.org/getpro/habr/post_images/b5f/f37/fb6/b5ff37fb63e2cde8276b47d574b6ec38.png","https://hsto.org/getpro/habr/post_images/edc/3d9/a67/edc3d9a672c1c5f4894c558afbdbdcf8.png"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkethereum
permlinkhow-does-ethereum-work
titleHOW DOES ETHEREUM WORK ?
Transaction InfoBlock #30862349/Trx f1a6feb29f3221f7cb87ebcb14e98411f9594a37
View Raw JSON Data
{
  "block": 30862349,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "@@ -59741,17 +59741,16 @@\n urces:%0A%0A\n-%5B\n github.c\n@@ -59776,13 +59776,9 @@\n aper\n-%5D %0A%5B \n+%0A\n medi\n@@ -59848,6 +59848,4 @@\n 6369\n- %5D\n",
      "json_metadata": "{\"tags\":[\"ethereum\",\"blokchain\",\"technology\",\"pow\",\"mining\"],\"image\":[\"https://hsto.org/getpro/habr/post_images/174/b46/982/174b46982b2649de521e81510f464db2.png\",\"https://hsto.org/getpro/habr/post_images/699/f5d/f42/699f5df4291b4e0fe218ced727a48162.png\",\"https://hsto.org/getpro/habr/post_images/300/f9b/d24/300f9bd24f321692582aa5723cc558e8.png\",\"https://hsto.org/getpro/habr/post_images/39f/c73/d7d/39fc73d7dcb5982f6d0510c2b5fc95ba.png\",\"https://hsto.org/getpro/habr/post_images/0a9/a60/c20/0a9a60c205c85aaf002cb88bde9b3e21.png\",\"https://hsto.org/getpro/habr/post_images/c35/b84/edd/c35b84eddefd020b743faeb642598a35.png\",\"https://hsto.org/getpro/habr/post_images/698/ede/44b/698ede44b970953f04f36bc46288f92c.png\",\"https://hsto.org/getpro/habr/post_images/60d/f87/6dc/60df876dc65a9336edc6e08b7aa84c90.png\",\"https://hsto.org/getpro/habr/post_images/f61/632/05a/f6163205aa7816274ec0963876650794.png\",\"https://hsto.org/getpro/habr/post_images/792/310/b80/792310b808aea5e0071349bb4fec4c40.png\",\"https://hsto.org/getpro/habr/post_images/f37/406/26a/f3740626a6de50c5783dfcd1be181846.png\",\"https://hsto.org/getpro/habr/post_images/6c9/415/78b/6c941578b41c532239bcac828c1492db.png\",\"https://hsto.org/getpro/habr/post_images/0d7/ce3/27c/0d7ce327c6614e81effb59d8740aaa59.png\",\"https://hsto.org/getpro/habr/post_images/a2e/5be/360/a2e5be3606ee7f6d8cdb265fce9ed386.png\",\"https://hsto.org/getpro/habr/post_images/a98/c18/99f/a98c1899f8a005237e74ba058f0226f5.png\",\"https://hsto.org/getpro/habr/post_images/e69/840/c50/e69840c506bda92db427c2eae6a52141.png\",\"https://hsto.org/getpro/habr/post_images/7a9/0ad/a3c/7a90ada3cbc71381f2487870e695273b.png\",\"https://hsto.org/getpro/habr/post_images/e62/07c/be2/e6207cbe2731d1ff37617aa9f18402f9.png\",\"https://hsto.org/getpro/habr/post_images/d74/821/50d/d7482150d3ae6464c70548c616ba32ed.png\",\"https://hsto.org/getpro/habr/post_images/afb/8e0/79c/afb8e079c91120bcf834a8cdb6fe20b8.png\",\"https://hsto.org/getpro/habr/post_images/0a7/180/00b/0a718000b8aba14735eaed0dc2a14673.png\",\"https://hsto.org/getpro/habr/post_images/d4d/519/69b/d4d51969b2ea3783ccf574a880a1f1be.png\",\"https://hsto.org/getpro/habr/post_images/6a8/599/925/6a85999250c78464489b96c98815eae1.png\",\"https://hsto.org/getpro/habr/post_images/98f/d7b/c81/98fd7bc81f3c1297846dbf855071e521.png\",\"https://hsto.org/getpro/habr/post_images/3b3/1de/2d1/3b31de2d147fcd268c421524397d6ae2.png\",\"https://hsto.org/getpro/habr/post_images/14d/638/fe9/14d638fe92c4c504d76406ff3de69313.png\",\"https://hsto.org/getpro/habr/post_images/875/26f/3fe/87526f3fe5b7963aa8c9fea26fb2b2c1.png\",\"https://hsto.org/getpro/habr/post_images/b5f/f37/fb6/b5ff37fb63e2cde8276b47d574b6ec38.png\",\"https://hsto.org/getpro/habr/post_images/edc/3d9/a67/edc3d9a672c1c5f4894c558afbdbdcf8.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "ethereum",
      "permlink": "how-does-ethereum-work",
      "title": "HOW DOES ETHEREUM WORK ?"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-04T15:57:45",
  "trx_id": "f1a6feb29f3221f7cb87ebcb14e98411f9594a37",
  "trx_in_block": 30,
  "virtual_op": 0
}
azokupvoted (100.00%) @azok / how-does-ethereum-work
2019/03/02 09:14:57
authorazok
permlinkhow-does-ethereum-work
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30796734/Trx 35cd163839820fd86fc2efc2b046df831e9b8689
View Raw JSON Data
{
  "block": 30796734,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "how-does-ethereum-work",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T09:14:57",
  "trx_id": "35cd163839820fd86fc2efc2b046df831e9b8689",
  "trx_in_block": 12,
  "virtual_op": 0
}
2019/03/02 08:26:39
authorazok
permlinkhow-does-ethereum-work
votersteemitboard
weight100 (1.00%)
Transaction InfoBlock #30795769/Trx dbc15835e74550341a8fca29e03d828cb0b0a9e0
View Raw JSON Data
{
  "block": 30795769,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "how-does-ethereum-work",
      "voter": "steemitboard",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T08:26:39",
  "trx_id": "dbc15835e74550341a8fca29e03d828cb0b0a9e0",
  "trx_in_block": 3,
  "virtual_op": 0
}
2019/03/02 08:26:36
authorsteemitboard
bodyCongratulations @azok! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) : <table><tr><td>https://steemitimages.com/60x70/http://steemitboard.com/@azok/posts.png?201903020709</td><td>You published more than 10 posts. Your next target is to reach 20 posts.</td></tr> </table> <sub>_[Click here to view your Board](https://steemitboard.com/@azok)_</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> To support your work, I also upvoted your post! **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/carnival/@steemitboard/carnival-2019"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/rltzHT.png"></a></td><td><a href="https://steemit.com/carnival/@steemitboard/carnival-2019">Carnival Challenge - Collect badge and win 5 STEEM</a></td></tr></table> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) and get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorazok
parent permlinkhow-does-ethereum-work
permlinksteemitboard-notify-azok-20190302t082637000z
title
Transaction InfoBlock #30795768/Trx b9fca034f97640afa49b1584ac02b00425c63727
View Raw JSON Data
{
  "block": 30795768,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @azok! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :\n\n<table><tr><td>https://steemitimages.com/60x70/http://steemitboard.com/@azok/posts.png?201903020709</td><td>You published more than 10 posts. Your next target is to reach 20 posts.</td></tr>\n</table>\n\n<sub>_[Click here to view your Board](https://steemitboard.com/@azok)_</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\nTo support your work, I also upvoted your post!\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/carnival/@steemitboard/carnival-2019\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/rltzHT.png\"></a></td><td><a href=\"https://steemit.com/carnival/@steemitboard/carnival-2019\">Carnival Challenge - Collect badge and win 5 STEEM</a></td></tr></table>\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) and get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "azok",
      "parent_permlink": "how-does-ethereum-work",
      "permlink": "steemitboard-notify-azok-20190302t082637000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T08:26:36",
  "trx_id": "b9fca034f97640afa49b1584ac02b00425c63727",
  "trx_in_block": 14,
  "virtual_op": 0
}
2019/03/02 04:39:27
authorazok
permlinkhow-does-ethereum-work
voterthetroublenotes
weight100 (1.00%)
Transaction InfoBlock #30791229/Trx 64c8c7d1b43a9c626b6808403c1efaf15f26a78d
View Raw JSON Data
{
  "block": 30791229,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "how-does-ethereum-work",
      "voter": "thetroublenotes",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:39:27",
  "trx_id": "64c8c7d1b43a9c626b6808403c1efaf15f26a78d",
  "trx_in_block": 8,
  "virtual_op": 0
}
2019/03/02 04:24:00
authorcreativecrypto
permlinkartmusicacreativecollaboration-8ru93lbr89
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30790921/Trx abe3c014b0a43ec9ccf7f28f865c1821ec54633d
View Raw JSON Data
{
  "block": 30790921,
  "op": [
    "vote",
    {
      "author": "creativecrypto",
      "permlink": "artmusicacreativecollaboration-8ru93lbr89",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:24:00",
  "trx_id": "abe3c014b0a43ec9ccf7f28f865c1821ec54633d",
  "trx_in_block": 21,
  "virtual_op": 0
}
azokupvoted (100.00%) @parkname / tasteem-c83294
2019/03/02 04:23:54
authorparkname
permlinktasteem-c83294
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30790919/Trx a4cea895f01b6a836f0aa2fd3d173e3f8d3b38e0
View Raw JSON Data
{
  "block": 30790919,
  "op": [
    "vote",
    {
      "author": "parkname",
      "permlink": "tasteem-c83294",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:23:54",
  "trx_id": "a4cea895f01b6a836f0aa2fd3d173e3f8d3b38e0",
  "trx_in_block": 34,
  "virtual_op": 0
}
2019/03/02 04:23:48
authorhoneybee
permlinkjustin-trudeau-the-lesser-of-two-evils
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30790917/Trx 6c15d3fceb9c0cec62435b268158c0484b0123c1
View Raw JSON Data
{
  "block": 30790917,
  "op": [
    "vote",
    {
      "author": "honeybee",
      "permlink": "justin-trudeau-the-lesser-of-two-evils",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:23:48",
  "trx_id": "6c15d3fceb9c0cec62435b268158c0484b0123c1",
  "trx_in_block": 8,
  "virtual_op": 0
}
azokupvoted (100.00%) @deanliu / --1551497125656
2019/03/02 04:23:42
authordeanliu
permlink--1551497125656
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30790915/Trx 2f113b09e98c253ecf7e694319950243ea58f18d
View Raw JSON Data
{
  "block": 30790915,
  "op": [
    "vote",
    {
      "author": "deanliu",
      "permlink": "--1551497125656",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:23:42",
  "trx_id": "2f113b09e98c253ecf7e694319950243ea58f18d",
  "trx_in_block": 14,
  "virtual_op": 0
}
2019/03/02 04:23:36
authorchinadaily
permlinkactive-authors-and-posts-under-the-cn-category-2019-02-28
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30790913/Trx 9b1532250a1ed9cfbbe6e1c7e02e7539f48146e5
View Raw JSON Data
{
  "block": 30790913,
  "op": [
    "vote",
    {
      "author": "chinadaily",
      "permlink": "active-authors-and-posts-under-the-cn-category-2019-02-28",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:23:36",
  "trx_id": "9b1532250a1ed9cfbbe6e1c7e02e7539f48146e5",
  "trx_in_block": 19,
  "virtual_op": 0
}
azokupvoted (100.00%) @msooi / ubud
2019/03/02 04:23:30
authormsooi
permlinkubud
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30790911/Trx 032985416ebb383a4484cd92dcd51e6f28eb6b19
View Raw JSON Data
{
  "block": 30790911,
  "op": [
    "vote",
    {
      "author": "msooi",
      "permlink": "ubud",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:23:30",
  "trx_id": "032985416ebb383a4484cd92dcd51e6f28eb6b19",
  "trx_in_block": 17,
  "virtual_op": 0
}
azokupvoted (100.00%) @goodhello / tasteem-a00f43
2019/03/02 04:23:24
authorgoodhello
permlinktasteem-a00f43
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30790909/Trx 91105bda49ee21bf490d86a64189b2b15b0dab91
View Raw JSON Data
{
  "block": 30790909,
  "op": [
    "vote",
    {
      "author": "goodhello",
      "permlink": "tasteem-a00f43",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:23:24",
  "trx_id": "91105bda49ee21bf490d86a64189b2b15b0dab91",
  "trx_in_block": 11,
  "virtual_op": 0
}
2019/03/02 04:23:18
authortrevonjb
permlinktrevonjb-1551497630960-black-pearl-roadmap
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30790907/Trx 89e3cf0fe8d5499d8f7c946a946a752acbce8800
View Raw JSON Data
{
  "block": 30790907,
  "op": [
    "vote",
    {
      "author": "trevonjb",
      "permlink": "trevonjb-1551497630960-black-pearl-roadmap",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:23:18",
  "trx_id": "89e3cf0fe8d5499d8f7c946a946a752acbce8800",
  "trx_in_block": 19,
  "virtual_op": 0
}
2019/03/02 04:23:15
authorsteembasicincome
permlinkoutgoing-votes-report-1-march-2019
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30790906/Trx f2e2899c1728991decdb2e0b121ab54247a1f369
View Raw JSON Data
{
  "block": 30790906,
  "op": [
    "vote",
    {
      "author": "steembasicincome",
      "permlink": "outgoing-votes-report-1-march-2019",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:23:15",
  "trx_id": "f2e2899c1728991decdb2e0b121ab54247a1f369",
  "trx_in_block": 1,
  "virtual_op": 0
}
azokpublished a new post: how-does-ethereum-work
2019/03/02 04:13:27
authorazok
body# Introduction Surely some of you know what the Ethereum blockchain (from the English Ethereum) is, others, on the contrary, do not have even the slightest idea about it. One way or another, the first and second have heard something about this platform. Recently, many articles in various major journals have been devoted to this topic, but for those people who have heard little about Ethereum, all the articles on this topic seem to be something mystical and completely incomprehensible. Then, what is this platform? In short: Ethereum is a publicly accessible database with the ability to store digital transactions for an unlimited time. It is also important to note that the maintenance and protection of such a database does not require any key management systems. Instead, this platform works as a “defenseless” transactional system — a framework in which individuals can perform peer-to-peer transactions, with neither party bearing any obligations to the other or third parties. I would not be surprised if you understood little. Actually, the purpose of this article is to explain how the ethereum blockchain functions at the technical level, without resorting to this for complex mathematical calculations or formulas that are terrifying in their magnitude. Even if you are not a programmer, I have full confidence that this article will help you understand the principles of Ethereum technology. And even if some parts of this article are crammed with technical definitions that may seem too difficult for you to understand, you should not despair, because its goal is to convey to you an understanding of this platform as a whole, without going into technical and mathematical subtleties. Many of the topics covered in this article are chewing those basic concepts that you have probably come across more than once, reading yellow paper (from the English paper “yellow paper” is the official specification for Ethereum). I have added my own explanations and diagrams so that you understand the technology as quickly as possible. Well, for the most brave and technically savvy, I can advise reading the Ethereum yellow paper. Let's get started! # What is blockchain Blockchain is a cryptographically secure single-element transactional system with a common state. Not the easiest definition, is it? Let's break down each component of this definition into separate parts. - "**Cryptographically secure**" means that the security of a cryptocurrency is provided by sophisticated mathematical algorithms that are almost impossible to circumvent. Protection built using these algorithms is a kind of firewall: thanks to the algorithms used, bypassing the security system is practically impossible (for example, creating fake transactions, deleting transactions, etc.). - "**Transactional single-element system**" means that there is only one specified system state, due to which all transactions created in this system occur. In other words, only one state is provided for this system, which is the only true one. - "**With shared state**" means that the state specified in the system is common and open to all. Thus, the Ethereum platform implements the above blockchain paradigm. # Paradigm blockchain platform Ethereum Blockchain Ethereum is, in fact, a **system of transaction status** . In computer science, such a thing as “state system” or “state machine” is a system that processes the input information and, on the basis of the latter, is transformed into a new state. https://hsto.org/getpro/habr/post_images/174/b46/982/174b46982b2649de521e81510f464db2.png In the state machine of Ethereum, all processes begin with the "initial state". Such a state is an analogue of the zero state in which the machine is located until any operations related to transactions begin to occur in its network. When such actions begin to occur, the original state is replaced with the final one, and at any time the final state displays the current state of Ethereum. https://hsto.org/getpro/habr/post_images/699/f5d/f42/699f5df4291b4e0fe218ced727a48162.png Ethereum state has millions of transactions. These transactions are grouped into “blocks.” The block contains a number of transactions, with each subsequent block connected to the previous one, thereby providing a kind of block chain. https://hsto.org/getpro/habr/post_images/300/f9b/d24/300f9bd24f321692582aa5723cc558e8.png The transaction must be correct in order to trigger its transition from one state to another. **A transaction is considered correct only when it has passed the verification process - the so-called “mining**” . Mining is when a group of nodes (computers) expend their computational resources to create a block of correct transactions. Any node on the network that declares itself a miner may try to create and test a block of transactions. A common experience is the attempt by many miners to simultaneously create and verify a block of transactions. Each miner provides his mathematical “proof” when sending a block to the blockchain, and this proof acts as a kind of guarantee: if the proof exists, the transactions in the block are considered correct. The miner must provide his mathematical proof faster than any other competitor does in order for his block to be added to the main blockchain. The process of checking each block, which is the miner’s presentation of his mathematical proof, is called “work proof”. The miner who justifies the new unit receives a certain reward for doing this work. What kind of reward are we talking about? In the ethereum blockchain, a built-in digital token is used, which is called "ether" (from English ether - "ether"). Every time when a miner justifies his block of transactions, a new token or a new air is created, and the miner receives a reward for creating it. Then, you may have a completely logical question: where is the guarantee that each miner will stick to only one chain of blocks? How can I make sure that the other team of miners do not decide to create their own block chain? At the very beginning of this article, we have already cited such a thing as "a single-element transactional system with a common state." Based on this definition, we can conclude that there are no two or more correct current states - it is unique. Thus, everyone who takes part in the process of justifying new blocks should take this statement as true. The presence of several states (or chains) would destroy the entire system, because it would be impossible to agree on which of the states is correct. For example, imagine that there would be several chains of blocks. Then, in theory, you could collect 10 coins on one chain, 20 coins on the other, 40 coins on the third, etc. In this case, it would be impossible to determine which chain is the most "correct". Whenever multiple paths are generated, a “fork” occurs. Often, ramifications are very undesirable because they violate the integrity of the system, and users have to choose one of the possible chains. https://hsto.org/getpro/habr/post_images/39f/c73/d7d/39fc73d7dcb5982f6d0510c2b5fc95ba.png To determine which of the possible paths is correct and to prevent the formation of multiple chains, a method called “**GHOST protocol**” is used in Ethereum. # GHOST - Greedy Heaviest Observed Subtree - Greedy-and-Most-Grounded-Daughter-Trees I will try to explain in simple terms: **the GHOST protocol declares that we must choose only the path on which the largest number of calculations was performed**. To determine this path, you can use the number of the block that was defined last (“leaf block”). Thanks to this approach, you can determine the total number of blocks that are in the current path (without taking into account the initial state block). The higher the block, the longer the path and the more justifications the miners must provide. Based on such considerations, the only correct version is accepted for the current state. Now that you already have an idea of ​​what a blockchain is, I propose to deal with the main components that make up the Ethereum system: * Accounts * state * fuel reward * transactions * blocks * performing transactions * mining * justification A small digression before we begin: at the mention of the X hash, it means the KECCAK-256 hash used in Ethereum. # Accounts The global general state of the Ethereum platform consists of a set of small objects - accounts that interact with each other through the messaging paradigm. Each account has a specific status and a 20-byte address. The address in Ethereum is a 160-bit identifier used to identify any of the accounts. In total there are two types of accounts: * External accounts are controlled using private keys. However, such entries have no code associated with them. * Contract accounts are controlled by a special code specified in the terms of the contract, and having a code associated with them. https://hsto.org/getpro/habr/post_images/0a9/a60/c20/0a9a60c205c85aaf002cb88bde9b3e21.png # External and contract accounts Let's look at the main differences between external and contract accounts. **For an external account, it is possible to send messages to other external accounts, as well as other contract accounts**. For this purpose, you must create and register a new transaction using the private key. A message between two external accounts is only a value to send. On the other hand, a message sent from an external account to a contract account implies activation of the contract account code, and it is possible to perform certain actions (for example, you can transfer tokens with this message, write values ​​to the built-in memory, create tokens, perform some calculations, create new contracts, etc.). **With the help of contract accounts, as opposed to external ones, it is impossible to independently initiate new transactions**. Instead, using contract accounts, you can only start transactions in response to other received transactions (for example, those received from an external account or from another contract account). For more information about calls between contract accounts, we’ll stop in the “Transactions and Messages” section. https://hsto.org/getpro/habr/post_images/c35/b84/edd/c35b84eddefd020b743faeb642598a35.png # Each action in the Ethereum blockchain takes place due to transactions initiated by externally controlled accounts. https://hsto.org/getpro/habr/post_images/698/ede/44b/698ede44b970953f04f36bc46288f92c.png # Account Status The state of each of the accounts, regardless of their type, can take one of four values: * **nonce** : If this account matches an external account, then the resulting number is the number of transactions that were sent from the account address. If the account is a contract account, then the nonce element is the number of contracts created in the account. * **balance** : the total number of wei purchased by this account. For example, each ether that is the Ethereum exchange unit contains 10 ^ 18 wei - fractional parts of the ether. * **storageRoot** : a hash of the root node of the prefix Merkle tree (which is the Merkle tree we will look at a little later). The Merkle tree encodes the hash of the contents of this account, while by default it is empty. * **codeHash** : EVM-code hash (from the English Ethereum Virtual Machine; what it is, I'll tell you a little later) of the account. For contract accounts, this field is a code that is hashed and stored as codeHash. https://hsto.org/getpro/habr/post_images/60d/f87/6dc/60df876dc65a9336edc6e08b7aa84c90.png # General system condition So, we figured out that the global state of Ethereum is a comparison of the account state of the account. This mapping is stored in a data structure - the **Merkle prefix tree** . A Merkle tree (or “Merkle trie”) is a type of binary file consisting of a set of nodes, which include: * a certain number of leaf nodes, which are located at the bottom of the tree containing basic data; * a set of intermediate nodes, each node being a hash of its two child nodes * one root node, also formed from a hash of two child nodes, which represents the top of the tree https://hsto.org/getpro/habr/post_images/f61/632/05a/f6163205aa7816274ec0963876650794.png The data at the bottom of the tree is created by dividing the data we want to store into separate fragments. Further, such fragments are placed in data storage baskets, after which they are hashed and a similar process is repeated until the total number of hashes is equal to one or the root hash. https://hsto.org/getpro/habr/post_images/792/310/b80/792310b808aea5e0071349bb4fec4c40.png For each value stored inside this tree, you will need to enter a specific key. To get the corresponding value stored in leaf nodes, you must receive a key command: which child node chains should be followed. As for Ethereum, the display of the key / value required for the state tree is between the addresses and associated accounts, including balance, nonce, codeHash, and storageRoot for each of the accounts, with the storageRoot being a tree. https://hsto.org/getpro/habr/post_images/f37/406/26a/f3740626a6de50c5783dfcd1be181846.png Such a structure of the prefix tree can also be used to store both transactions and the payment acceptance page. If we dwell on this in more detail, then each block has a so-called “header” or header file that stores the hash of the root node of three different structures of the Merkle tree, including: * Prefix Tree State * Prefix Tree Transactions * Payment acceptance pages for prefix tree https://hsto.org/getpro/habr/post_images/6c9/415/78b/6c941578b41c532239bcac828c1492db.png The ability to efficiently store this information in the prefix tree of the Mercle Ethereum is an incredibly practical solution for so-called thin clients or thin nodes. It should also be noted that the blockchain is supported by a set of nodes. In simple words: there are only two types of nodes: full and thin. **The complete archive node synchronizes the blockchain by loading the entire chain from the initial state block to the current block containing the header file, and all the transactions in it are executed**. As a rule, miners keep a complete archive site, because without the latter they will not have the opportunity to participate in the mining process. In addition, you can also download the complete node, and there is no need to complete each individual transaction. It is also worth noting that each complete node always contains a complete chain. In the event that the node does not need to perform every single transaction or request accumulated data, then storing the complete chain may be redundant. In this case, we are faced with such a concept as a thin knot. In the **place of loading and storing the complete chain, as well as performing all transactions, the thin nodes load only the chain of header files from the initial state block into the current header, without performing any transactions**. Since thin nodes have access to block headers containing the hash of three prefix trees, they can easily create and retrieve the appropriate responses for transactions, events, balances, etc. The hash in the Merkle tree extends from the lower branches to the upper ones, and if the attacker attempts to replace the original transaction with a fake one in the lower part of the Merkle tree, this will change the hash of the top node, and this in turn will change the hash of the node above it and so on until, ultimately, it causes a change in the root. https://hsto.org/getpro/habr/post_images/0d7/ce3/27c/0d7ce327c6614e81effb59d8740aaa59.png Any node for which verification of any part of the data is required uses the so-called “Merkle proof”. The latter consists of: * The piece of data that needs to be verified * Tree root hash * The so-called "branches" - all hashes, from the checked data fragment to the root. https://hsto.org/getpro/habr/post_images/a2e/5be/360/a2e5be3606ee7f6d8cdb265fce9ed386.png Each user who reads such evidence can check whether the hash for a particular branch is appropriate for the entire tree section, and whether the fragment occupies a corresponding position in that tree. Thus, we can conclude that the advantage of using the Merkle prefix tree is that the root node of this structure is cryptographically dependent on the data stored in the tree. Therefore, the hash of the root node can be used as a secure identifier for this data. Due to the fact that the root hash of trees, as well as their status, transactions, and payment receipt information are included in the block header, any of the nodes can check one or another part of the state of Ethereum without having to store all the states that can be potentially unlimited in size. # Fuel and reward One of the important points in the Ethereum system is the payment process. **For any calculation resulting from transactions with transactions within the Ethereum network, a certain fee is taken**. The nominal value of this payment is called "fuel" (from the English. Gas). **Fuel** is a unit of measure that is used to determine the amount of payment for a particular calculation. The price of fuel is the amount of "ether" that you are able to spend on each unit of fuel. The price of fuel in gwei is measured. Wei is the smallest unit of ether, where 1018 Wei is just 1 ether. One gwei is equal to 1 000 000 000 Wei. For any transaction, the sender must set **the fuel limit**, as well as the **price of fuel**. The price of fuel and fuel limit is the maximum amount in Wei that the sender is willing to pay to complete the transaction. Let's imagine that the sender sets the fuel limit to 50,000 gwei and the fuel price to 20 gwei. This means that the sender is ready to spend no more than 50,000 x 20 gwei = 1,000,000,000,000 Wei or 0.001 air to complete this transaction. https://hsto.org/getpro/habr/post_images/a98/c18/99f/a98c1899f8a005237e74ba058f0226f5.png Thus, the fuel limit is the maximum amount of fuel that the sender is willing to pay. In the event that there is enough air on the balance of his account to cover this maximum, then the sender can conduct transactions. In addition, the sender is reimbursed for any losses incurred due to the incomplete use of fuel at the conclusion of the transaction, and the fuel will be exchanged at the original rate. https://hsto.org/getpro/habr/post_images/e69/840/c50/e69840c506bda92db427c2eae6a52141.png In the event that the sender did not provide the necessary amount of fuel for the transaction, the latter will be carried out "without fuel" and will be considered invalid. Thus, the transaction is interrupted, and any state changes are canceled, as a result of which the Ethereum system returns the transaction participants to their original state. It is worth noting that information about such a failed transaction is recorded in the system, so that you can track which transactions were performed and at what stage the failure occurred. And what is also important: since before the moment the sender ran out of fuel, the car had already spent some effort to make calculations, it would be logical to assume that the losses associated with the expenditure of fuel **will not be refunded to the sender**. https://hsto.org/getpro/habr/post_images/7a9/0ad/a3c/7a90ada3cbc71381f2487870e695273b.png “Where exactly am I sending fuel ?” You ask. So, **all the money that was spent on the purchase by the sender of the fuel is sent to the address of the beneficiary, which in most cases is the address of the miner**. Since the miners perform calculations and verification of transactions, they are the ones who receive payment for fuel as a reward. https://hsto.org/getpro/habr/post_images/e62/07c/be2/e6207cbe2731d1ff37617aa9f18402f9.png As a rule, the higher the cost of fuel that the sender wishes to pay, the higher the payment received by the miner as a result of the transaction and, moreover, the more likely that the miner will make his choice in its favor. Thus, miners are free to choose which transaction they want to validate and which transactions they should ignore. Often, miners inform senders what price they should ask for fuel in order to be first prepared to carry out transactions. # Payment for the use of storage **Fuel is used not only to pay for certain calculations, but also to pay for the use of storage**. The total fee for using the storage is 32 used bytes. The issue of payment, charged for the use of storage, has some nuances. For example, since the increase in space used in the storage implies an increase in the size of the Ethereum state database, and this applies to all nodes, you have an incentive to store only a relatively small amount of data. Thus, if any of the stages of a transaction involves deleting an entry in the repository, then payment for this operation will not be charged, and in view of the release of space in the repository, losses will also be reimbursed. # What is the payment for? An important aspect of Ethereum's work is that **any operation that is performed by the network is also simultaneously performed by each complete node**. However, all the steps involved in computing an Ethereum virtual machine are very expensive. Thus, for solving simple tasks (for example, launching simple business logic, checking signatures, as well as other operations related to cryptocurrency), Ethereum’s smart contracts can be quite suitable, in contrast to those cases when other, more complex, Tasks: storing files or e-mail, as well as performing tasks from the field of machine learning, which can cause excessive network load. **Introduction of payment prevents user actions aimed at excessive network load**. Ethereum uses Turing language. In short: a Turing machine is a machine that mimics any computer algorithm. For those who first hear about the Turing machine, I suggest reading this and this one.articles. Thanks to this feature, it is possible to use cycles in Ethereum, and this makes it susceptible to the problem of stopping - a problem, in case of which you cannot determine whether the program will run indefinitely or not. For example, in the event that Ethereum would not have provided for a payment system, then attackers could try to disrupt the network by performing an infinite loop inside the transaction, without incurring any losses. Thus, the payment system was introduced precisely to protect it from deliberate attacks. It is likely that you will think: “And where am I?” Why should I pay for the use of storage? ”Well, what can I say, the entire network of Ethereum takes on itself the fee for both the calculations and the use of storage ... something like that. # Transactions and Messages Earlier, I already wrote that Ethereum is **a transaction state system**. In other words, thanks to the transactions that take place between different accounts, the global state of Ethereum changes or moves from one state to another. **Simply put, a transaction is a cryptographically signed part of the instruction, which is first defined by the external account, and then ordered and transmitted to the blockchain**. In total, there are two types of transactions: **sending messages** and **creating a contract** (in other words, such transactions create new contracts in the Ethereum network). All transactions contain the following elements, regardless of the type of the first: * **nonce** - the number of transactions that were sent by the sender. * **gasPrice** - the amount of Wei, which the sender is willing to give per unit of fuel required to complete the transaction. * **gasLimit** - the maximum amount of fuel that the sender is willing to pay for carrying out this transaction. This amount is set and paid in advance before any calculations are made. * **to** - the address of the recipient. At the time of the transaction associated with the creation of the contract, the account address of the contract does not yet exist, so an empty value is used instead. * **value** - the number of Wei to be transferred from the sender to the recipient. In transactions related to the creation of contracts, this value is the starting balance for the newly created account. * **v, r, s** - these symbols used to create a signature that identifies the sender of the transaction. * **init** - intended only for transactions related to the creation of contracts. An EVM code fragment used to initialize a newly created contract account. init is started only once and is not used later. When init is started for the first time, this element returns the body of the account code, which is the part of the code that is permanently associated with the contract account. * **data** is the input data (parameters) for a message call (data is an optional element that is intended only for message calls). For example, if a smart contract plays the role of a domain registration service, then a call to this contract may wait for input fields (for example, domain and IP address). https://hsto.org/getpro/habr/post_images/d74/821/50d/d7482150d3ae6464c70548c616ba32ed.png From the information provided in the “Accounts” section, we found out that transactions — both for message calls and for creating contracts — are initiated by external accounts, and then redirected to the blockchain. In other words, transactions are a kind of bridge connecting the outside world and the internal state of the Ethereum platform. https://hsto.org/getpro/habr/post_images/afb/8e0/79c/afb8e079c91120bcf834a8cdb6fe20b8.png But this does not mean that some contracts can not interact with others: **contracts that are in the global context of the state of Ethereum can interact with each other within this context. Their interaction or communication takes place by sending messages or internal transactions**. The only difference between internal and ordinary transactions is that the first ones are not created by external accounts - but as a result of the creation of contracts. They are virtual objects which, unlike transactions, are not ordered and can exist only in the Ethereum execution environment. # When one of the contracts sends an internal transaction to another contract, a specific code is executed that exists in the recipient's contract account. https://hsto.org/getpro/habr/post_images/0a7/180/00b/0a718000b8aba14735eaed0dc2a14673.png It is also worth noting that **gasLimit is** not provided for internal transactions or messages , since the fuel limit is set by the initiator of the initial transaction (for example, in an account). The fuel limit set by the external account must be high enough to complete the transaction, including any additional actions that are taken as a result of the transaction, such as sending a message from one contract to another. In the event that there is not enough fuel in the chain of transactions and messages to execute one of the latter, then its execution, as well as the execution of all subsequent messages caused by the initial execution, will be returned. # Blocks All transactions are somehow grouped into “blocks”. The blockchain contains several such blocks interconnected. Such blocks consist of: * block header * information about the series of transactions included in this block * a series of other block headers for current summers # What is ommer? Let's understand what is ommer (from the English. «Ommer»). Ommer is a block whose parent is the parent element of the current block. In this chapter I will briefly describe what the ommerers are generally for, and also for what reasons the block contains block headers for ommeres. Their presence, first of all, is justified by the fact that the blocking time in Ethereum is much lower (approximately 15 seconds) than for other blockchains, for example, for bitcoins (approximately 10 minutes). Thanks to this feature, the rate of conducting transactions increases. On the other hand, one of the negative sides of a shorter blocking time is that the mayner struggle for the next block solution is only intensifying. Such competing blocks are also called “blocks without a parent” (i.e., such blocks are not included in the main block chain). Hommers were created so that miners could get a well-deserved reward for including blocks without parents in the main chain. Ommer, included by miners in the main chain, must be "valid": they, ommer, must be descendants in the sixth or earlier generation of the current block. For example, after the sixth generation, such descendants cannot be included in the main chain as blocks without a parent: later transactions may adversely affect the operation of the system as a whole. For ommeres, you will receive a reward less than the inclusion of a full block. However, this should not detract from the miners' attempts to include such blocks without a parent and receive their well-deserved reward. # Block headers I already mentioned earlier that each block has a title, but we didn’t understand what it is? The block header is the part of the block that consists of: * **parentHash** - is a hash of the parent block header (so that, in fact, the block falls into the block chain) * **ommersHash** - hash of the current list of ommer blocks * **beneficiary** - the address of the account to which the payment is received for the inclusion of this unit * **stateRoot** - hash of the root node of the state of the prefix tree (I wrote earlier that the state of the prefix tree is stored in the header, thereby simplifying the state approval process for thin clients) * **transactionsRoot** - a hash of the root node of the prefix tree, containing all transactions that are listed in this block * **receiptsRoot** - hash of the root node of the prefix tree, which contains payment information for all transactions listed in this block * **logsBloom** - Bloom filter (data structure) consisting of information contained in logs * **difficulty** - the difficulty level of the current block * **number** - the current block number (the initial block has a number equal to zero; the block number is incremented by one for each subsequent block) * **gasLimit** - current fuel limit for current unit * **gasUsed** - the total amount of fuel used for transactions in the current block * **timestamp** - the timestamp intended to create the current block * **extraData** - additional data related to the current block * **mixHash** - a hash that, in combination with the nonce element, states that enough calculations are performed for the current block * **nonce** - a hash that, in combination with the mixHash element, states that enough calculations are performed for the current block https://hsto.org/getpro/habr/post_images/6c9/415/78b/6c941578b41c532239bcac828c1492db.png It is worth noting that each block header contains three prefix tree structures for: * state ( **stateRoot** ) * conducting transactions ( **transactionsRoot** ) * getting information about payment ( **receiptsRoot** ) Such structures of the prefix tree are nothing but the prefix tree of Merkle, which we have already considered above. In addition, for such a definition, there are several terms that you should probably find interesting. # Magazines The Ethereum platform provides the ability to keep logs, the purpose of which is to record information about various transactions and messages. In addition, for the contract, it is also possible to openly create an entry in such a journal by declaring the “event” to be recorded. The journal entry includes: * registrar's account address * a series of tasks that display various events performed for the current transaction * any data that are relevant to these events Log entries are stored in Bloom Filter , which makes it possible to efficiently store an infinite amount of data. # Receiving payment information Entries stored in the header come from information contained in the journal that relates to the transaction payment data (or check). Just as you receive a check when buying goods in a store, Ethereum creates a similar check for each of the transactions. And as you probably already guessed, each check contains information about the current transaction. The check includes: * block number * block hash * transaction hash * amount of fuel used for the current transaction * the total amount of fuel that was used to conduct the current transaction for a specific unit * log entries created by transaction * other information # Block complexity Block complexity is a concept used to ensure the consistency of time that is needed to validate blocks. For the initial block, the difficulty is 131,072 units. A special formula is used to calculate the complexity of any of the blocks. In the event that the validation of one of the blocks occurred more quickly than, for example, the subsequent validation, then the protocol used in Ethereum increases the complexity of the latter. The complexity of the block also affects the nonce hash, the execution of which is necessary during the display of the block, and the security check algorithms are used for this purpose. The dependence of one parameter, block complexity, on the other, nonce, is represented in this formula: https://hsto.org/getpro/habr/post_images/d4d/519/69b/d4d51969b2ea3783ccf574a880a1f1be.png *where* **Hd** *is the block complexity*. The only way to determine the nonce parameter that will meet the condition presented by the formula is to use the health check algorithm to search for all of its possible values. The expected search time for all values ​​that meet this condition is the complexity of the block. Then we can conclude: the greater the block complexity value, the more difficult it is to find the nonce parameter, and thus the more difficult it is to validate the block, as a result of which, in turn, the time required for the validation of subsequent blocks increases. This means that, **based on the value obtained during the block complexity determination, the protocol used determines how long it takes to validate the current block**. In that case, if the time required to validate a block is less than expected, then the protocol underestimates the complexity of the current block. Thus, the time required to validate a block is automatically set to continuously match the current parameters (on average, this time is 15 seconds). # Conducting transactions Well, well, here we come to, perhaps, the most difficult part of the protocols used in Ethereum - conducting transactions. Let's imagine that you have set up a transaction on the Ethereum network. And what do you think will happen to the state of Ethereum during your transaction ? https://hsto.org/getpro/habr/post_images/6a8/599/925/6a85999250c78464489b96c98815eae1.png First, any transaction must meet certain requirements in order for its execution not to be canceled, namely: * Transactions must meet RLP requirements. RLP is a recursive prefix length (from the English. Recursive Length Prefix), which is a data format that is used to encode nested arrays of binary data. The RLP format is used in Ethereum to organize objects. * The presence of a valid transaction signature. * Presence of valid nonce. Let me remind you that nonce is the number of transactions sent from the current account. In order for such a value to be valid, it must match the nonce value for the sender's account. * The fuel limit for a transaction must be equal to or greater than the specified amount of fuel. The specified amount of fuel includes: 1. a predetermined cost of 21,000 units of fuel required to complete a transaction 2. Fuel charge used to send transaction data (4 fuel units for each data byte or a code equal to zero and 68 for each non-zero data byte or non-zero code) 3. Additional 32,000 units of fuel if the transaction is related to the conclusion of a contract https://hsto.org/getpro/habr/post_images/98f/d7b/c81/98fd7bc81f3c1297846dbf855071e521.png * The balance of the current account of the sender must contain a sufficient amount of air to cover the "advance" cost of fuel, which the sender undertakes to pay. The advance cost of fuel is calculated as follows: the fuel cost limit is multiplied by the cost of fuel for the current transaction, with the result that we find the maximum cost of fuel. Further, the total amount of fuel transported from the sender to the recipient is added to the maximum cost. https://hsto.org/getpro/habr/post_images/3b3/1de/2d1/3b31de2d147fcd268c421524397d6ae2.png In the event that you have fulfilled all the above requirements, you proceed to the next step. First of all, the advance cost of fuel is deducted from the sender’s account, and the sender’s nonce increases by 1. Then we can calculate the remaining amount of fuel using the following formula: we take **away the specified amount of fuel from the total amount of fuel required for the transaction**. https://hsto.org/getpro/habr/post_images/14d/638/fe9/14d638fe92c4c504d76406ff3de69313.png After that, the transaction starts. During the current transaction in the Ethereum is tracking "substate". A substate is required to record the information that was collected during the current transaction. Such information will be required immediately upon completion of the transaction and contains: * **Self-destruct set** : a set of accounts that will be deleted upon completion of the transaction * **Log series** : archived and indexed checkpoints needed to execute virtual machine code. * **Refund balance** : the amount to be returned to the sender upon completion of the transaction. I already mentioned earlier that using the storage provided by Ethereum costs a certain amount of money, and this money is returned to the sender after he stops using such storage. The Ethereum system stores information on the use of storage and return of funds for its use to the sender. After this, the various calculations required for the transaction are performed. After all the steps necessary to complete the transaction have been completed (assuming that all the above requirements have also been fulfilled), the status of the transaction is completed, and the amount of unused fuel to be returned to the sender is counted. After the (successful) transaction is completed and the fuel is returned to the sender, the following occurs: * a certain amount of air used to purchase fuel is sent to the miner; * The fuel used to complete the transaction is recorded in a block for counting fuel (this block is used to store information about the total amount of fuel that was used to conduct all transactions in this block; in addition, this block is used during validation; * all account information contained in the self-destruct set section is deleted. Here we are at the end of this chapter: we learned what a new state is and why we need a log for conducting transactions. In the next chapter, we will take a closer look at the difference between the transactions related to creating contracts and sending messages. # Creating contracts You probably remember that in Ethereum there are only two types of accounts: contract accounts and external ones. When you meet the term “contract related transactions”, you should be aware that the purpose of such a transaction is to create a new contract account. To create a new contract account, we must first declare the address of the account being created using a special formula. After this, a new account is created. To perform such an operation, you must perform a series of actions: * set zero to nonce * adjust the balance of your account, equal to the payment for the transaction (in the event that the sender is ready to send a certain amount of air as payment for the transaction) * calculate the amount of payment that goes into the balance of the account created from the sender's account * indicate that the storage is no longer in use * configure contract hash code as empty string hash At the moment when we started creating a new account, we, in fact, have already created it with the help of the **init code** , which is automatically sent at the beginning of the transaction (we forgot what the init code is - see the section “Transactions and Messages”). There are several scenarios during the execution of the init code (for example, it can happen: updating the storage for the account, creating another account for the current contract, sending a message, etc.). After the system executes the code intended to create a new contract, fuel comes into play. You will not be able to conduct a transaction if it requires a greater amount of fuel than the one stored on your balance sheet. In the event that, despite such a restriction, you try to conduct a transaction, then you will receive a message about the lack of fuel, after which the system will automatically close. Moreover, if the completion of the transaction was caused due to a shortage of fuel, then you will be transferred to the stage prior to the transaction. And most importantly: the --recipient will not be refunded the amount of fuel that was spent before the discovery of its shortage--. That's it… However, if the sender has allocated a certain amount of air to conduct the current transaction, then this amount will be returned even if the creation of the contract is unsuccessful. If the initialization code was successfully completed, the funds required to create the contract must be contributed by the creator. This amount also includes the cost of using storage, which is directly proportional to the increase in the size of the code created for the contract. In the event that the creator does not have enough funds to carry out this operation, then the transaction is terminated due to a shortage of fuel and the consequences will be the same as those listed above. If everything went smoothly, and we did not receive a message about the lack of fuel, then all the unused fuel for this transaction is returned to the sender. Victory! # Messages The operation of sending a message, in general, is quite similar to the creation of a contract, not taking into account some small differences. To perform this operation, the application of the init code is completely unnecessary, since as a result of its execution, a new account is not created. However, for such an operation you may need input data, but only if such data were transmitted by the recipient as a result of the transaction. After performing the operation on sending a message, a new block becomes available, containing output information, which is used when the operation is repeated. Also, as in the case of creating a contract, if the sending operation was interrupted due to a shortage of fuel or an invalid transaction (for example, due to a stack overflow error, invalid transition address, incorrect command), the amount of fuel used for this operation is not returned call On the contrary, all unused fuel is also deducted from its balance, and the state of the system returns to the point preceding the balance transfer operation. Until recently, Ethereum did not have the ability to interrupt or suspend transactions without losing the fuel you provided for such a purpose. For example, you can imagine a situation where you are the initiator of creating a contract, during the creation of which an error occurred, because the initiator of the call did not have the right to perform any of the transactions. So, in the previous version of Ethereum, before the platform was updated, in such a situation all the fuel remaining on your account would have been removed, and the sender would not have received his fuel back either. But with the **release of the update - Byzantium - you have the opportunity to suspend the execution of operations to create contracts and return the system to its original state without losing the fuel remaining on your account**. Thus, if the exit from the transaction occurred as a result of the suspension of its execution, the unused fuel is returned back to the sender. # Execution model In the previous sections, I told you about how transactions are performed. Now, I suggest you deal with what is happening in the VM (from the English. Virtual Machine - virtual machine) at the time of the transaction. **The part of the protocol that performs transaction processing in the Ethereum operating system is called Ethereum Virtual Machine (VME)** . VME is a Turing machine, as mentioned in this article earlier. The only difference between a VME and a typical Turing machine is that the first one requires a virtual “fuel”. Thus, all calculations that can be performed in VME are somehow limited by the amount of fuel that is circulating in it, the virtual machine. https://hsto.org/getpro/habr/post_images/875/26f/3fe/87526f3fe5b7963aa8c9fea26fb2b2c1.png Source: CMU In addition, VME has all the features of a stack architecture. A stack machine is a computer that uses the LIFO algorithm. The size of any stack element in the VME is 256 bits, and the maximum stack size is 1024 bits. For VME, a certain amount of memory is provided, which is not constant. Elements are stored in it as arrays of bytes with reference to words. For VMEs, a specific storage area is also provided. Unlike the amount of memory, this storage (or storage area) does not change and is part of the system state. In VME, the program code is stored in a separate virtual ROM., access to which can be obtained only with the help of certain instructions. From this point of view, such a VME differs from the typical von Neumann architecture , in which the program code is stored in the computer's memory. https://hsto.org/getpro/habr/post_images/b5f/f37/fb6/b5ff37fb63e2cde8276b47d574b6ec38.png For VME also has its own special language - byte code VME. When a programmer, such as you or, for example, I, writes a smart contract that will be executed in the Ethereum system, this usually happens with the help of a high-level language, such as Solidity. After writing such a code, we compile it into the VME bytecode so that the VME can understand the command we wrote. We proceed directly to the execution of operations. Before you perform a specific calculation, the processor must verify that the following information is valid and accessible: * State of the system * Information about the amount of fuel required to perform the required operation * Address of the account that owns the executable code * Address of the sender of the transaction - the initiator of the current operation * Address of the account - the initiator of the executable code (may differ from the address of the sender-initiator) * Information on the amount of fuel required to complete a transaction * Input data for the operation * The number of Wei that should be sent to the account of this account as a result of the current operation * Information about running machine code * Block header information for the current block * Depth of the current message or contract creation Immediately before the program starts, the system memory is absolutely empty, and the command counter is zero. PC: 0 STACK: [] MEM: [], STORAGE: {} After that, a recursive transaction begins in the VME: calculating the state of the system and the state of the machine for each cycle. The state of the system is the global state of Ethereum. Machine condition includes: * available amount of fuel; * command counter; * memory contents; * active word count in memory; * content stack Elements of the stack are added or removed from the left edge of the code fragment. For each cycle, a certain part of it is taken out of the remaining amount of fuel, and the command counter increases. In total there are three possible options for the end of the cycle: 1. The operations performed by the machine reach an exceptional state (for example, due to the lack of virtual fuel, incorrect instructions, insufficient number of stack elements, stack element values ​​exceeding 1024 bits, incorrect JUMP / JUMPI assignment) and, thus, the operation is suspended. 2. The sequence of actions proceeds to the next cycle. 3. The operations performed by the machine reach a logical conclusion (completion of the process) If the calculations performed by the machine reach a logical conclusion, rather than an exceptional state, then as a result, the machine will issue the resulting state, as well as information about the remaining fuel and the resulting output data. That's it. We have just learned the most complex and confusing part of Ethereum. Do not worry if you have not fully understood something: you do not need to delve into every detail and understand all the processes occurring in this system, well, if only you are not going to really fully study it and work at a sufficiently deep level. # The final design of the blocks Let's finally figure out what happens to the blocks of transactions during their final clearance. “Final design” can occur in two ways, depending on whether we are creating a block or it has already been created. In that case, if we only create a block, then the final design means the process of mining the current block. On the other hand, if a block has already been created, such a definition means the process of validating the current block. In both of the cases presented above, four conditions must be met for the final completion of the block. 1) Validation (or, in the case of mining, the definition of) ommers: each block of ommers that is in the block header must have a valid block header and be the sixth descendant of the current block. 2) Validation of transactions: the value of gasUsed for the current block should be equal to the value of the total amount of fuel used to carry out all the transactions listed in this block. 3) Payment purpose (only in the case of mining): 5 units of ether are assigned to the beneficiary for mining each block (in accordance with the EIP-649 proposal, this payment will be reduced to 3 units of ether). Moreover, for each ommer, the beneficiary of the current block is charged as an additional 1/32 of the total payment for the current block. And the last thing: the beneficiary of the ommer block is also assigned a payment in the form of a certain amount, for the determination of which there is a special figure. 4) Verification of the state and values ​​of nonce: To carry out this procedure, you need to ensure that all transactions are completed, as well as a change in the resulting states. After that, you will also need to set a new block after the payment for this block has been sent. The verification process occurs by comparing the trailing state with the state of the prefix tree stored in the header. # Mining, aimed at the proof of work In the "Blocks" section, we briefly familiarized ourselves with such a concept as the complexity of the blocks. The algorithm by which the concept of block complexity has arisen is called Proof of Work (PoW). The PoW algorithm used in the Ethereum system is called Ethash (previously, but called Dagger-Hashimoto). This algorithm has the following form: https://hsto.org/getpro/habr/post_images/edc/3d9/a67/edc3d9a672c1c5f4894c558afbdbdcf8.png *where m is mixHash; n is nonce; Hn is the header of the new block (nonce and mixHash are not included here, since these values ​​must be calculated); Hn - nonce for block header; d - DAG data set*. In the "Blocks" section, we also reviewed the various values ​​provided for the block header. These, as you remember, include values ​​such as mixHash and nonce. Once again I will remind: * **mixHash** is a hash that, together with the value of nonce, confirms that a sufficient number of calculations have been performed for the current block. * **nonce is** also a hash, which, together with the mixHash value, confirms that a sufficient number of calculations were performed for the current block. **Therefore, PoW is necessary to calculate the above values**. It is quite a difficult task to explain exactly how mixHash and nonce are calculated using the PoW function, and, in fact, a whole article can be devoted to this moment. But if in brief, the following happens: The value of the "seed" is calculated for each of the blocks. To count each seed, there is its own "interval", with each interval being equal to 30,000 blocks. For each interval, the seed is a hash equal to a series of 32-byte zeros. For each subsequent interval, a specific hash hash is provided for the previous seed. Using this seed, the node finds the value of a pseudo-random hash. Such a hash plays a very important role, since with its help we can better understand what the “thin nodes”, referred to in the previous articles, are. The goal of thin nodes is to provide an opportunity for some of the nodes to effectively check certain transactions without having to store the entire data set of the blockchain. A thin node can validate a transaction using only the given hash. This is due to the fact that this hash can re-create the block it needs for verification. Using this hash, a node can create a DAG data packet in which each element depends on a small number of randomized pseudo-elements of the hash. Each novice miner must first create his full data packet. The system for each of the miners is stored a separate data packet, while the volume of such data is constantly growing. For example, a miner can take any random parts from a data packet and use them in a mathematical function to hash such parts for mixHash. Such a miner will be able to constantly set the value for mixHash until the initial data is received as a nonce value. When this condition is fulfilled, such nonce value will be considered valid, and the block can be added to the circuit. # Mining as a defense mechanism In general, the goal of PoW is to cryptographically prove that certain calculations were aimed at obtaining a certain result (nonce values). It just so happened that **there is no other way to find a nonce, the value of which does not exceed a certain limit, except by using the enumeration of all possible options, including finding the required one**. The distribution of output data for a constantly used function hash is evenly distributed. Thus, we know for sure that the time **required to find a nonce value clearly depends on the complexity threshold** : the higher the complexity threshold, the longer the search for the required nonce value will take place. The PoW algorithm represents the concept of complexity used in the blockchain under consideration. What does safe blockchain mean? The answer is quite simple: a secure blockchain is a blockchain that ALL USERS will trust. As I wrote above, if there are more than two chains in the blockchain, then it is quite logical to assume that users will not feel confident while working with the blockchain, since no one will be able to say with accuracy which of the presented chains is valid. **The PoW algorithm is used** precisely **for this purpose: it ensures the unity of the chain in the blockchain, preventing the creation of other chains of blocks that may affect the transaction execution history**(for example, creating fake transactions or deleting or modifying existing ones). Thus, in order for an attacker to be the first to validate his blocks, he will have to constantly determine the value of nonce, and do it faster than all other network users (I hope you remember the GHOST protocol, which I described earlier). Of course, for an attacker, such a method will not be feasible, unless it has at its disposal most of the mining resources of the network - such a scenario is known as a 51% attack . # Mining as a means of distributing finance Apart from the fact that the PoW algorithm ensures the safe operation of the blockchain, it also distributes the remuneration to those users whose calculations were used to ensure security. I already wrote above that miners receive remuneration for the mining of a block, and also: * reward of 5 units of air for the "winning" block (soon this figure should drop to 3 units) * the cost of fuel consumed as a result of the transaction in the unit * additional remuneration for the inclusion of ommerov in the unit In order to ensure the consistency of the PoW method - which is necessary to guarantee safety - and the distribution of remuneration Ethereum constantly adheres to the two principles below: * First, attract as many users as possible to use the platform. In other words, the use of this platform should not cause any difficulties for the user: he should not use any super-complex algorithms or use unknown hardware. In addition, the process of distribution of remuneration should also be clear and simple for everyone who is willing to expend some energy used by his computer for the sake of receiving several cherished units of ether. * Secondly, not to allow disproportionate distribution of rewards and other resources for any particular node: any such node for which an inappropriate distribution of resources is carried out will have a huge impact on the definition of the canonical blockchain, which negatively affects the security of the system as a whole. For example, in the Bitcoin system there is a problem with the implementation of the above two principles: its PoW algorithm uses the SHA256 hash function. The problem of the latter is that its solution may be much easier if you use special hardware - ASICs. In order to prevent such punctures in Ethereum, a special PoW algorithm with sequential memory is used ( Ethhash). the structure of the algorithm is constructed in such a way that a large amount of memory and a high throughput of the connection are required to calculate the nonce value. Requirements related to the presence of a large amount of memory imply that it will be very difficult for a computer with a standard memory size to perform a parallel calculation of several nonce values ​​simultaneously. As for high bandwidth requirements, even for a super-fast computer, detecting multiple nonce values ​​at the same time will be a daunting task. Thus, due to such features of this system, the probability of risk centralization is reduced and, moreover, more uniform conditions are created for the operation of various nodes performing verification. By the way, not so long ago, I learned that Ethereum was going to switch from the PoW algorithm to a certain method called the “Proof of ownership” (from the English Proof-of-stake). Such a method in itself is worth a separate article for review and discussion. # Conclusion Well, here we come to the logical conclusion of our article. In fact, this article gives a lot of food for thought. You absolutely should not worry about it, if you have mastered this article from the second or third time. I personally re-read yellow paper and white paper for Ethereum many times before I began to delve into the essence of the matter. I very much hope that this article was still useful for you. If you find any errors, I will be very grateful to you if you tell me about them. Sources: [github.com/ethereum/yellowpaper] [ medium.com/@preethikasireddy/how-does-ethereum-work-anyway-22d1df506369 ]
json metadata{"tags":["ethereum","blokchain","technology","pow","mining"],"image":["https://hsto.org/getpro/habr/post_images/174/b46/982/174b46982b2649de521e81510f464db2.png","https://hsto.org/getpro/habr/post_images/699/f5d/f42/699f5df4291b4e0fe218ced727a48162.png","https://hsto.org/getpro/habr/post_images/300/f9b/d24/300f9bd24f321692582aa5723cc558e8.png","https://hsto.org/getpro/habr/post_images/39f/c73/d7d/39fc73d7dcb5982f6d0510c2b5fc95ba.png","https://hsto.org/getpro/habr/post_images/0a9/a60/c20/0a9a60c205c85aaf002cb88bde9b3e21.png","https://hsto.org/getpro/habr/post_images/c35/b84/edd/c35b84eddefd020b743faeb642598a35.png","https://hsto.org/getpro/habr/post_images/698/ede/44b/698ede44b970953f04f36bc46288f92c.png","https://hsto.org/getpro/habr/post_images/60d/f87/6dc/60df876dc65a9336edc6e08b7aa84c90.png","https://hsto.org/getpro/habr/post_images/f61/632/05a/f6163205aa7816274ec0963876650794.png","https://hsto.org/getpro/habr/post_images/792/310/b80/792310b808aea5e0071349bb4fec4c40.png","https://hsto.org/getpro/habr/post_images/f37/406/26a/f3740626a6de50c5783dfcd1be181846.png","https://hsto.org/getpro/habr/post_images/6c9/415/78b/6c941578b41c532239bcac828c1492db.png","https://hsto.org/getpro/habr/post_images/0d7/ce3/27c/0d7ce327c6614e81effb59d8740aaa59.png","https://hsto.org/getpro/habr/post_images/a2e/5be/360/a2e5be3606ee7f6d8cdb265fce9ed386.png","https://hsto.org/getpro/habr/post_images/a98/c18/99f/a98c1899f8a005237e74ba058f0226f5.png","https://hsto.org/getpro/habr/post_images/e69/840/c50/e69840c506bda92db427c2eae6a52141.png","https://hsto.org/getpro/habr/post_images/7a9/0ad/a3c/7a90ada3cbc71381f2487870e695273b.png","https://hsto.org/getpro/habr/post_images/e62/07c/be2/e6207cbe2731d1ff37617aa9f18402f9.png","https://hsto.org/getpro/habr/post_images/d74/821/50d/d7482150d3ae6464c70548c616ba32ed.png","https://hsto.org/getpro/habr/post_images/afb/8e0/79c/afb8e079c91120bcf834a8cdb6fe20b8.png","https://hsto.org/getpro/habr/post_images/0a7/180/00b/0a718000b8aba14735eaed0dc2a14673.png","https://hsto.org/getpro/habr/post_images/d4d/519/69b/d4d51969b2ea3783ccf574a880a1f1be.png","https://hsto.org/getpro/habr/post_images/6a8/599/925/6a85999250c78464489b96c98815eae1.png","https://hsto.org/getpro/habr/post_images/98f/d7b/c81/98fd7bc81f3c1297846dbf855071e521.png","https://hsto.org/getpro/habr/post_images/3b3/1de/2d1/3b31de2d147fcd268c421524397d6ae2.png","https://hsto.org/getpro/habr/post_images/14d/638/fe9/14d638fe92c4c504d76406ff3de69313.png","https://hsto.org/getpro/habr/post_images/875/26f/3fe/87526f3fe5b7963aa8c9fea26fb2b2c1.png","https://hsto.org/getpro/habr/post_images/b5f/f37/fb6/b5ff37fb63e2cde8276b47d574b6ec38.png","https://hsto.org/getpro/habr/post_images/edc/3d9/a67/edc3d9a672c1c5f4894c558afbdbdcf8.png"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkethereum
permlinkhow-does-ethereum-work
titleHOW DOES ETHEREUM WORK ?
Transaction InfoBlock #30790710/Trx 5531ded82f463a42c6cf61b1555ffc25ce61045b
View Raw JSON Data
{
  "block": 30790710,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "# Introduction\n\nSurely some of you know what the Ethereum blockchain (from the English Ethereum) is, others, on the contrary, do not have even the slightest idea about it. One way or another, the first and second have heard something about this platform. Recently, many articles in various major journals have been devoted to this topic, but for those people who have heard little about Ethereum, all the articles on this topic seem to be something mystical and completely incomprehensible. Then, what is this platform? In short: Ethereum is a publicly accessible database with the ability to store digital transactions for an unlimited time. It is also important to note that the maintenance and protection of such a database does not require any key management systems. Instead, this platform works as a “defenseless” transactional system — a framework in which individuals can perform peer-to-peer transactions, with neither party bearing any obligations to the other or third parties.\n\nI would not be surprised if you understood little. Actually, the purpose of this article is to explain how the ethereum blockchain functions at the technical level, without resorting to this for complex mathematical calculations or formulas that are terrifying in their magnitude. Even if you are not a programmer, I have full confidence that this article will help you understand the principles of Ethereum technology. And even if some parts of this article are crammed with technical definitions that may seem too difficult for you to understand, you should not despair, because its goal is to convey to you an understanding of this platform as a whole, without going into technical and mathematical subtleties.\n\nMany of the topics covered in this article are chewing those basic concepts that you have probably come across more than once, reading yellow paper (from the English paper “yellow paper” is the official specification for Ethereum). I have added my own explanations and diagrams so that you understand the technology as quickly as possible. Well, for the most brave and technically savvy, I can advise reading the Ethereum yellow paper.\n\nLet's get started!\n\n# What is blockchain\n\nBlockchain is a cryptographically secure single-element transactional system with a common state. Not the easiest definition, is it? Let's break down each component of this definition into separate parts.\n\n - \"**Cryptographically secure**\"  means that the security of a cryptocurrency is provided by sophisticated mathematical algorithms that are almost impossible to circumvent. Protection built using these algorithms is a kind of firewall: thanks to the algorithms used, bypassing the security system is practically impossible (for example, creating fake transactions, deleting transactions, etc.).\n    \n- \"**Transactional single-element system**\" means that there is only one specified system state, due to which all transactions created in this system occur. In other words, only one state is provided for this system, which is the only true one.\n    \n- \"**With shared state**\"  means that the state specified in the system is common and open to all. \n\n\nThus, the Ethereum platform implements the above blockchain paradigm.\n\n# Paradigm blockchain platform Ethereum\n\nBlockchain Ethereum is, in fact, a **system of transaction status** . In computer science, such a thing as “state system” or “state machine” is a system that processes the input information and, on the basis of the latter, is transformed into a new state.\nhttps://hsto.org/getpro/habr/post_images/174/b46/982/174b46982b2649de521e81510f464db2.png\nIn the state machine of Ethereum, all processes begin with the \"initial state\". Such a state is an analogue of the zero state in which the machine is located until any operations related to transactions begin to occur in its network. When such actions begin to occur, the original state is replaced with the final one, and at any time the final state displays the current state of Ethereum.\nhttps://hsto.org/getpro/habr/post_images/699/f5d/f42/699f5df4291b4e0fe218ced727a48162.png\nEthereum state has millions of transactions. These transactions are grouped into “blocks.” The block contains a number of transactions, with each subsequent block connected to the previous one, thereby providing a kind of block chain.\nhttps://hsto.org/getpro/habr/post_images/300/f9b/d24/300f9bd24f321692582aa5723cc558e8.png\nThe transaction must be correct in order to trigger its transition from one state to another. **A transaction is considered correct only when it has passed the verification process - the so-called “mining**” . Mining is when a group of nodes (computers) expend their computational resources to create a block of correct transactions.\n\nAny node on the network that declares itself a miner may try to create and test a block of transactions. A common experience is the attempt by many miners to simultaneously create and verify a block of transactions. Each miner provides his mathematical “proof” when sending a block to the blockchain, and this proof acts as a kind of guarantee: if the proof exists, the transactions in the block are considered correct.\n\nThe miner must provide his mathematical proof faster than any other competitor does in order for his block to be added to the main blockchain. The process of checking each block, which is the miner’s presentation of his mathematical proof, is called “work proof”.\n\nThe miner who justifies the new unit receives a certain reward for doing this work. What kind of reward are we talking about? In the ethereum blockchain, a built-in digital token is used, which is called \"ether\" (from English ether - \"ether\"). Every time when a miner justifies his block of transactions, a new token or a new air is created, and the miner receives a reward for creating it.\n\nThen, you may have a completely logical question: where is the guarantee that each miner will stick to only one chain of blocks? How can I make sure that the other team of miners do not decide to create their own block chain?\n\nAt the very beginning of this article, we have already cited such a thing as \"a single-element transactional system with a common state.\" Based on this definition, we can conclude that there are no two or more correct current states - it is unique. Thus, everyone who takes part in the process of justifying new blocks should take this statement as true. The presence of several states (or chains) would destroy the entire system, because it would be impossible to agree on which of the states is correct. For example, imagine that there would be several chains of blocks. Then, in theory, you could collect 10 coins on one chain, 20 coins on the other, 40 coins on the third, etc. In this case, it would be impossible to determine which chain is the most \"correct\".\n\nWhenever multiple paths are generated, a “fork” occurs. Often, ramifications are very undesirable because they violate the integrity of the system, and users have to choose one of the possible chains.\nhttps://hsto.org/getpro/habr/post_images/39f/c73/d7d/39fc73d7dcb5982f6d0510c2b5fc95ba.png\nTo determine which of the possible paths is correct and to prevent the formation of multiple chains, a method called “**GHOST protocol**” is used in Ethereum.\n\n# GHOST - Greedy Heaviest Observed Subtree - Greedy-and-Most-Grounded-Daughter-Trees\n\nI will try to explain in simple terms: **the GHOST protocol declares that we must choose only the path on which the largest number of calculations was performed**. To determine this path, you can use the number of the block that was defined last (“leaf block”). Thanks to this approach, you can determine the total number of blocks that are in the current path (without taking into account the initial state block). The higher the block, the longer the path and the more justifications the miners must provide. Based on such considerations, the only correct version is accepted for the current state.\n\nNow that you already have an idea of ​​what a blockchain is, I propose to deal with the main components that make up the Ethereum system:\n\n*  Accounts\n\n*  state\n\n*  fuel reward\n\n*  transactions\n\n*  blocks\n\n*  performing transactions\n\n*  mining\n\n*  justification \n\nA small digression before we begin: at the mention of the X hash, it means the KECCAK-256 hash used in Ethereum.\n\n# Accounts\n\nThe global general state of the Ethereum platform consists of a set of small objects - accounts that interact with each other through the messaging paradigm. Each account has a specific status and a 20-byte address. The address in Ethereum is a 160-bit identifier used to identify any of the accounts.\n\nIn total there are two types of accounts:\n\n*  External accounts are controlled using private keys. However, such entries have no code associated with them.\n    \n*  Contract accounts are controlled by a special code specified in the terms of the contract, and having a code associated  with them. \nhttps://hsto.org/getpro/habr/post_images/0a9/a60/c20/0a9a60c205c85aaf002cb88bde9b3e21.png\n\n# External and contract accounts\n\nLet's look at the main differences between external and contract accounts. **For an external account, it is possible to send messages to other external accounts, as well as other contract accounts**. For this purpose, you must create and register a new transaction using the private key. A message between two external accounts is only a value to send. On the other hand, a message sent from an external account to a contract account implies activation of the contract account code, and it is possible to perform certain actions (for example, you can transfer tokens with this message, write values ​​to the built-in memory, create tokens, perform some calculations, create new contracts, etc.).\n\n**With the help of contract accounts, as opposed to external ones, it is impossible to independently initiate new transactions**. Instead, using contract accounts, you can only start transactions in response to other received transactions (for example, those received from an external account or from another contract account). For more information about calls between contract accounts, we’ll stop in the “Transactions and Messages” section.\nhttps://hsto.org/getpro/habr/post_images/c35/b84/edd/c35b84eddefd020b743faeb642598a35.png\n# Each action in the Ethereum blockchain takes place due to transactions initiated by externally controlled accounts.\nhttps://hsto.org/getpro/habr/post_images/698/ede/44b/698ede44b970953f04f36bc46288f92c.png\n\n# Account Status\n\nThe state of each of the accounts, regardless of their type, can take one of four values:\n\n*   **nonce** : If this account matches an external account, then the resulting number is the number of transactions that were sent from the account address. If the account is a contract account, then the nonce element is the number of contracts created in the account.\n   \n*   **balance** : the total number of wei purchased by this account. For example, each ether that is the Ethereum exchange unit contains 10 ^ 18 wei - fractional parts of the ether.\n    \n*   **storageRoot** : a hash of the root node of the prefix Merkle tree (which is the Merkle tree we will look at a little later). The Merkle tree encodes the hash of the contents of this account, while by default it is empty.\n    \n*   **codeHash** : EVM-code hash (from the English Ethereum Virtual Machine; what it is, I'll tell you a little later) of the account. For contract accounts, this field is a code that is hashed and stored as codeHash. \nhttps://hsto.org/getpro/habr/post_images/60d/f87/6dc/60df876dc65a9336edc6e08b7aa84c90.png\n# General system condition\n\nSo, we figured out that the global state of Ethereum is a comparison of the account state of the account. This mapping is stored in a data structure - the **Merkle prefix tree** .\n\nA Merkle tree (or “Merkle trie”) is a type of binary file consisting of a set of nodes, which include:\n\n *   a certain number of leaf nodes, which are located at the bottom of the tree containing basic data;\n    \n *   a set of intermediate nodes, each node being a hash of its two child nodes\n    \n *   one root node, also formed from a hash of two child nodes, which represents the top of the tree \nhttps://hsto.org/getpro/habr/post_images/f61/632/05a/f6163205aa7816274ec0963876650794.png\nThe data at the bottom of the tree is created by dividing the data we want to store into separate fragments. Further, such fragments are placed in data storage baskets, after which they are hashed and a similar process is repeated until the total number of hashes is equal to one or the root hash.\nhttps://hsto.org/getpro/habr/post_images/792/310/b80/792310b808aea5e0071349bb4fec4c40.png\nFor each value stored inside this tree, you will need to enter a specific key. To get the corresponding value stored in leaf nodes, you must receive a key command: which child node chains should be followed. As for Ethereum, the display of the key / value required for the state tree is between the addresses and associated accounts, including balance, nonce, codeHash, and storageRoot for each of the accounts, with the storageRoot being a tree.\nhttps://hsto.org/getpro/habr/post_images/f37/406/26a/f3740626a6de50c5783dfcd1be181846.png\nSuch a structure of the prefix tree can also be used to store both transactions and the payment acceptance page. If we dwell on this in more detail, then each block has a so-called “header” or header file that stores the hash of the root node of three different structures of the Merkle tree, including:\n\n   *   Prefix Tree State\n    \n   *   Prefix Tree Transactions\n    \n   *   Payment acceptance pages for prefix tree \nhttps://hsto.org/getpro/habr/post_images/6c9/415/78b/6c941578b41c532239bcac828c1492db.png\nThe ability to efficiently store this information in the prefix tree of the Mercle Ethereum is an incredibly practical solution for so-called thin clients or thin nodes. It should also be noted that the blockchain is supported by a set of nodes. In simple words: there are only two types of nodes: full and thin.\n\n**The complete archive node synchronizes the blockchain by loading the entire chain from the initial state block to the current block containing the header file, and all the transactions in it are executed**. As a rule, miners keep a complete archive site, because without the latter they will not have the opportunity to participate in the mining process. In addition, you can also download the complete node, and there is no need to complete each individual transaction. It is also worth noting that each complete node always contains a complete chain.\n\nIn the event that the node does not need to perform every single transaction or request accumulated data, then storing the complete chain may be redundant. In this case, we are faced with such a concept as a thin knot. In the **place of loading and storing the complete chain, as well as performing all transactions, the thin nodes load only the chain of header files from the initial state block into the current header, without performing any transactions**. Since thin nodes have access to block headers containing the hash of three prefix trees, they can easily create and retrieve the appropriate responses for transactions, events, balances, etc.\n\nThe hash in the Merkle tree extends from the lower branches to the upper ones, and if the attacker attempts to replace the original transaction with a fake one in the lower part of the Merkle tree, this will change the hash of the top node, and this in turn will change the hash of the node above it and so on until, ultimately, it causes a change in the root.\nhttps://hsto.org/getpro/habr/post_images/0d7/ce3/27c/0d7ce327c6614e81effb59d8740aaa59.png\nAny node for which verification of any part of the data is required uses the so-called “Merkle proof”. The latter consists of:\n\n  *  The piece of data that needs to be verified\n    \n  *  Tree root hash\n    \n  *  The so-called \"branches\" - all hashes, from the checked data fragment to the root. \nhttps://hsto.org/getpro/habr/post_images/a2e/5be/360/a2e5be3606ee7f6d8cdb265fce9ed386.png\nEach user who reads such evidence can check whether the hash for a particular branch is appropriate for the entire tree section, and whether the fragment occupies a corresponding position in that tree.\n\nThus, we can conclude that the advantage of using the Merkle prefix tree is that the root node of this structure is cryptographically dependent on the data stored in the tree. Therefore, the hash of the root node can be used as a secure identifier for this data. Due to the fact that the root hash of trees, as well as their status, transactions, and payment receipt information are included in the block header, any of the nodes can check one or another part of the state of Ethereum without having to store all the states that can be potentially unlimited in size.\n\n# Fuel and reward\n\nOne of the important points in the Ethereum system is the payment process. **For any calculation resulting from transactions with transactions within the Ethereum network, a certain fee is taken**. The nominal value of this payment is called \"fuel\" (from the English. Gas).\n\n**Fuel** is a unit of measure that is used to determine the amount of payment for a particular calculation. The price of fuel is the amount of \"ether\" that you are able to spend on each unit of fuel. The price of fuel in gwei is measured. Wei is the smallest unit of ether, where 1018 Wei is just 1 ether. One gwei is equal to 1 000 000 000 Wei.\n\nFor any transaction, the sender must set **the fuel limit**, as well as the **price of fuel**. The price of fuel and fuel limit is the maximum amount in Wei that the sender is willing to pay to complete the transaction.\n\nLet's imagine that the sender sets the fuel limit to 50,000 gwei and the fuel price to 20 gwei. This means that the sender is ready to spend no more than 50,000 x 20 gwei = 1,000,000,000,000 Wei or 0.001 air to complete this transaction. \nhttps://hsto.org/getpro/habr/post_images/a98/c18/99f/a98c1899f8a005237e74ba058f0226f5.png\nThus, the fuel limit is the maximum amount of fuel that the sender is willing to pay. In the event that there is enough air on the balance of his account to cover this maximum, then the sender can conduct transactions. In addition, the sender is reimbursed for any losses incurred due to the incomplete use of fuel at the conclusion of the transaction, and the fuel will be exchanged at the original rate.\nhttps://hsto.org/getpro/habr/post_images/e69/840/c50/e69840c506bda92db427c2eae6a52141.png\nIn the event that the sender did not provide the necessary amount of fuel for the transaction, the latter will be carried out \"without fuel\" and will be considered invalid. Thus, the transaction is interrupted, and any state changes are canceled, as a result of which the Ethereum system returns the transaction participants to their original state. It is worth noting that information about such a failed transaction is recorded in the system, so that you can track which transactions were performed and at what stage the failure occurred. And what is also important: since before the moment the sender ran out of fuel, the car had already spent some effort to make calculations, it would be logical to assume that the losses associated with the expenditure of fuel **will not be refunded to the sender**.\nhttps://hsto.org/getpro/habr/post_images/7a9/0ad/a3c/7a90ada3cbc71381f2487870e695273b.png\n“Where exactly am I sending fuel ?” You ask. So, **all the money that was spent on the purchase by the sender of the fuel is sent to the address of the beneficiary, which in most cases is the address of the miner**. Since the miners perform calculations and verification of transactions, they are the ones who receive payment for fuel as a reward.\nhttps://hsto.org/getpro/habr/post_images/e62/07c/be2/e6207cbe2731d1ff37617aa9f18402f9.png\nAs a rule, the higher the cost of fuel that the sender wishes to pay, the higher the payment received by the miner as a result of the transaction and, moreover, the more likely that the miner will make his choice in its favor. Thus, miners are free to choose which transaction they want to validate and which transactions they should ignore. Often, miners inform senders what price they should ask for fuel in order to be first prepared to carry out transactions.\n\n# Payment for the use of storage\n\n**Fuel is used not only to pay for certain calculations, but also to pay for the use of storage**. The total fee for using the storage is 32 used bytes.\n\nThe issue of payment, charged for the use of storage, has some nuances. For example, since the increase in space used in the storage implies an increase in the size of the Ethereum state database, and this applies to all nodes, you have an incentive to store only a relatively small amount of data. Thus, if any of the stages of a transaction involves deleting an entry in the repository, then payment for this operation will not be charged, and in view of the release of space in the repository, losses will also be reimbursed.\n\n# What is the payment for?\n\nAn important aspect of Ethereum's work is that **any operation that is performed by the network is also simultaneously performed by each complete node**. However, all the steps involved in computing an Ethereum virtual machine are very expensive. Thus, for solving simple tasks (for example, launching simple business logic, checking signatures, as well as other operations related to cryptocurrency), Ethereum’s smart contracts can be quite suitable, in contrast to those cases when other, more complex, Tasks: storing files or e-mail, as well as performing tasks from the field of machine learning, which can cause excessive network load. **Introduction of payment prevents user actions aimed at excessive network load**.\n\nEthereum uses Turing language. In short: a Turing machine is a machine that mimics any computer algorithm. For those who first hear about the Turing machine, I suggest reading this and this one.articles. Thanks to this feature, it is possible to use cycles in Ethereum, and this makes it susceptible to the problem of stopping - a problem, in case of which you cannot determine whether the program will run indefinitely or not. For example, in the event that Ethereum would not have provided for a payment system, then attackers could try to disrupt the network by performing an infinite loop inside the transaction, without incurring any losses. Thus, the payment system was introduced precisely to protect it from deliberate attacks.\n\nIt is likely that you will think: “And where am I?” Why should I pay for the use of storage? ”Well, what can I say, the entire network of Ethereum takes on itself the fee for both the calculations and the use of storage ... something like that.\n\n# Transactions and Messages\n\nEarlier, I already wrote that Ethereum is **a transaction state system**. In other words, thanks to the transactions that take place between different accounts, the global state of Ethereum changes or moves from one state to another.\n\n**Simply put, a transaction is a cryptographically signed part of the instruction, which is first defined by the external account, and then ordered and transmitted to the blockchain**.\n\nIn total, there are two types of transactions: **sending messages** and **creating a contract** (in other words, such transactions create new contracts in the Ethereum network).\n\nAll transactions contain the following elements, regardless of the type of the first:\n\n*  **nonce** - the number of transactions that were sent by the sender.\n    \n*   **gasPrice** - the amount of Wei, which the sender is willing to give per unit of fuel required to complete the transaction.\n    \n*   **gasLimit** - the maximum amount of fuel that the sender is willing to pay for carrying out this transaction. This amount is set and paid in advance before any calculations are made.\n    \n*   **to** - the address of the recipient. At the time of the transaction associated with the creation of the contract, the account address of the contract does not yet exist, so an empty value is used instead.\n    \n*   **value** - the number of Wei to be transferred from the sender to the recipient. In transactions related to the creation of contracts, this value is the starting balance for the newly created account.\n   \n*   **v, r, s** - these symbols used to create a signature that identifies the sender of the transaction.\n   \n*   **init** - intended only for transactions related to the creation of contracts. An EVM code fragment used to initialize a newly created contract account. init is started only once and is not used later. When init is started for the first time, this element returns the body of the account code, which is the part of the code that is permanently associated with the contract account.\n    \n*   **data** is the input data (parameters) for a message call (data is an optional element that is intended only for message calls). For example, if a smart contract plays the role of a domain registration service, then a call to this contract may wait for input fields (for example, domain and IP address).\nhttps://hsto.org/getpro/habr/post_images/d74/821/50d/d7482150d3ae6464c70548c616ba32ed.png\nFrom the information provided in the “Accounts” section, we found out that transactions — both for message calls and for creating contracts — are initiated by external accounts, and then redirected to the blockchain. In other words, transactions are a kind of bridge connecting the outside world and the internal state of the Ethereum platform.\nhttps://hsto.org/getpro/habr/post_images/afb/8e0/79c/afb8e079c91120bcf834a8cdb6fe20b8.png\nBut this does not mean that some contracts can not interact with others: **contracts that are in the global context of the state of Ethereum can interact with each other within this context. Their interaction or communication takes place by sending messages or internal transactions**. The only difference between internal and ordinary transactions is that the first ones are not created by external accounts - but as a result of the creation of contracts. They are virtual objects which, unlike transactions, are not ordered and can exist only in the Ethereum execution environment.\n\n# When one of the contracts sends an internal transaction to another contract, a specific code is executed that exists in the recipient's contract account.\nhttps://hsto.org/getpro/habr/post_images/0a7/180/00b/0a718000b8aba14735eaed0dc2a14673.png\nIt is also worth noting that **gasLimit is** not provided for internal transactions or messages , since the fuel limit is set by the initiator of the initial transaction (for example, in an account). The fuel limit set by the external account must be high enough to complete the transaction, including any additional actions that are taken as a result of the transaction, such as sending a message from one contract to another. In the event that there is not enough fuel in the chain of transactions and messages to execute one of the latter, then its execution, as well as the execution of all subsequent messages caused by the initial execution, will be returned.\n\n# Blocks\n\nAll transactions are somehow grouped into “blocks”. The blockchain contains several such blocks interconnected.\n\nSuch blocks consist of:\n\n*   block header\n    \n*   information about the series of transactions included in this block\n    \n*   a series of other block headers for current summers \n\n\n# What is ommer?\n\nLet's understand what is ommer (from the English. «Ommer»). Ommer is a block whose parent is the parent element of the current block. In this chapter I will briefly describe what the ommerers are generally for, and also for what reasons the block contains block headers for ommeres.\n\nTheir presence, first of all, is justified by the fact that the blocking time in Ethereum is much lower (approximately 15 seconds) than for other blockchains, for example, for bitcoins (approximately 10 minutes). Thanks to this feature, the rate of conducting transactions increases. On the other hand, one of the negative sides of a shorter blocking time is that the mayner struggle for the next block solution is only intensifying. Such competing blocks are also called “blocks without a parent” (i.e., such blocks are not included in the main block chain).\n\nHommers were created so that miners could get a well-deserved reward for including blocks without parents in the main chain. Ommer, included by miners in the main chain, must be \"valid\": they, ommer, must be descendants in the sixth or earlier generation of the current block. For example, after the sixth generation, such descendants cannot be included in the main chain as blocks without a parent: later transactions may adversely affect the operation of the system as a whole.\n\nFor ommeres, you will receive a reward less than the inclusion of a full block. However, this should not detract from the miners' attempts to include such blocks without a parent and receive their well-deserved reward.\n\n# Block headers\n\nI already mentioned earlier that each block has a title, but we didn’t understand what it is?\n\nThe block header is the part of the block that consists of:\n\n*   **parentHash** - is a hash of the parent block header (so that, in fact, the block falls into the block chain)\n    \n*   **ommersHash** - hash of the current list of ommer blocks\n    \n*   **beneficiary** - the address of the account to which the payment is received for the inclusion of this unit\n    \n*   **stateRoot** - hash of the root node of the state of the prefix tree (I wrote earlier that the state of the prefix tree is stored in the header, thereby simplifying the state approval process for thin clients)\n    \n*   **transactionsRoot** - a hash of the root node of the prefix tree, containing all transactions that are listed in this block\n    \n*   **receiptsRoot** - hash of the root node of the prefix tree, which contains payment information for all transactions listed in this block\n    \n*   **logsBloom** - Bloom filter (data structure) consisting of information contained in logs\n    \n*   **difficulty** - the difficulty level of the current block\n    \n*   **number** - the current block number (the initial block has a number equal to zero; the block number is incremented by one for each subsequent block)\n    \n*   **gasLimit** - current fuel limit for current unit\n    \n*   **gasUsed** - the total amount of fuel used for transactions in the current block\n    \n*   **timestamp** - the timestamp intended to create the current block\n    \n*   **extraData** - additional data related to the current block\n    \n*   **mixHash** - a hash that, in combination with the nonce element, states that enough calculations are performed for the current block\n    \n*   **nonce** - a hash that, in combination with the mixHash element, states that enough calculations are performed for the current block\nhttps://hsto.org/getpro/habr/post_images/6c9/415/78b/6c941578b41c532239bcac828c1492db.png\nIt is worth noting that each block header contains three prefix tree structures for:\n\n    \n*   state ( **stateRoot** )\n    \n*   conducting transactions ( **transactionsRoot** )\n    \n*   getting information about payment ( **receiptsRoot** )\n\n\nSuch structures of the prefix tree are nothing but the prefix tree of Merkle, which we have already considered above.\n\nIn addition, for such a definition, there are several terms that you should probably find interesting.\n\n# Magazines\n\nThe Ethereum platform provides the ability to keep logs, the purpose of which is to record information about various transactions and messages. In addition, for the contract, it is also possible to openly create an entry in such a journal by declaring the “event” to be recorded.\n\nThe journal entry includes:\n\n    \n*   registrar's account address\n    \n*   a series of tasks that display various events performed for the current transaction\n    \n*   any data that are relevant to these events \n\n\nLog entries are stored in Bloom Filter , which makes it possible to efficiently store an infinite amount of data.\n\n# Receiving payment information\n\nEntries stored in the header come from information contained in the journal that relates to the transaction payment data (or check). Just as you receive a check when buying goods in a store, Ethereum creates a similar check for each of the transactions. And as you probably already guessed, each check contains information about the current transaction. The check includes:\n\n    \n*   block number\n    \n*   block hash\n    \n*   transaction hash\n    \n*   amount of fuel used for the current transaction\n    \n*   the total amount of fuel that was used to conduct the current transaction for a specific unit\n    \n*   log entries created by transaction\n    \n*   other information \n\n\n# Block complexity\n\nBlock complexity is a concept used to ensure the consistency of time that is needed to validate blocks. For the initial block, the difficulty is 131,072 units. A special formula is used to calculate the complexity of any of the blocks. In the event that the validation of one of the blocks occurred more quickly than, for example, the subsequent validation, then the protocol used in Ethereum increases the complexity of the latter.\n\nThe complexity of the block also affects the nonce hash, the execution of which is necessary during the display of the block, and the security check algorithms are used for this purpose.\n\nThe dependence of one parameter, block complexity, on the other, nonce, is represented in this formula:\nhttps://hsto.org/getpro/habr/post_images/d4d/519/69b/d4d51969b2ea3783ccf574a880a1f1be.png\n*where* **Hd** *is the block complexity*.\n\nThe only way to determine the nonce parameter that will meet the condition presented by the formula is to use the health check algorithm to search for all of its possible values. The expected search time for all values ​​that meet this condition is the complexity of the block. Then we can conclude: the greater the block complexity value, the more difficult it is to find the nonce parameter, and thus the more difficult it is to validate the block, as a result of which, in turn, the time required for the validation of subsequent blocks increases. This means that, **based on the value obtained during the block complexity determination, the protocol used determines how long it takes to validate the current block**.\n\nIn that case, if the time required to validate a block is less than expected, then the protocol underestimates the complexity of the current block. Thus, the time required to validate a block is automatically set to continuously match the current parameters (on average, this time is 15 seconds).\n\n# Conducting transactions\n\nWell, well, here we come to, perhaps, the most difficult part of the protocols used in Ethereum - conducting transactions. Let's imagine that you have set up a transaction on the Ethereum network. And what do you think will happen to the state of Ethereum during your transaction ?\nhttps://hsto.org/getpro/habr/post_images/6a8/599/925/6a85999250c78464489b96c98815eae1.png\nFirst, any transaction must meet certain requirements in order for its execution not to be canceled, namely:\n    \n*   Transactions must meet RLP requirements. RLP is a recursive prefix length (from the English. Recursive Length Prefix), which is a data format that is used to encode nested arrays of binary data. The RLP format is used in Ethereum to organize objects.\n    \n*   The presence of a valid transaction signature.\n    \n*   Presence of valid nonce. Let me remind you that nonce is the number of transactions sent from the current account. In order for such a value to be valid, it must match the nonce value for the sender's account.\n    \n*   The fuel limit for a transaction must be equal to or greater than the specified amount of fuel. The specified amount of fuel includes:\n\n   \n1. a predetermined cost of 21,000 units of fuel required to complete a transaction\n    \n2. Fuel charge used to send transaction data (4 fuel units for each data byte or a code equal to zero and 68 for each non-zero data byte or non-zero code)\n    \n3. Additional 32,000 units of fuel if the transaction is related to the conclusion of a contract\nhttps://hsto.org/getpro/habr/post_images/98f/d7b/c81/98fd7bc81f3c1297846dbf855071e521.png\n*    The balance of the current account of the sender must contain a sufficient amount of air to cover the \"advance\" cost of fuel, which the sender undertakes to pay. The advance cost of fuel is calculated as follows: the fuel cost limit is multiplied by the cost of fuel for the current transaction, with the result that we find the maximum cost of fuel. Further, the total amount of fuel transported from the sender to the recipient is added to the maximum cost. \nhttps://hsto.org/getpro/habr/post_images/3b3/1de/2d1/3b31de2d147fcd268c421524397d6ae2.png\nIn the event that you have fulfilled all the above requirements, you proceed to the next step.\n\nFirst of all, the advance cost of fuel is deducted from the sender’s account, and the sender’s nonce increases by 1. Then we can calculate the remaining amount of fuel using the following formula: we take **away the specified amount of fuel from the total amount of fuel required for the transaction**.\nhttps://hsto.org/getpro/habr/post_images/14d/638/fe9/14d638fe92c4c504d76406ff3de69313.png\nAfter that, the transaction starts. During the current transaction in the Ethereum is tracking \"substate\". A substate is required to record the information that was collected during the current transaction. Such information will be required immediately upon completion of the transaction and contains:\n\n*   **Self-destruct set** : a set of accounts that will be deleted upon completion of the transaction\n   \n*   **Log series** : archived and indexed checkpoints needed to execute virtual machine code.\n    \n*   **Refund balance** : the amount to be returned to the sender upon completion of the transaction. I already mentioned earlier that using the storage provided by Ethereum costs a certain amount of money, and this money is returned to the sender after he stops using such storage. The Ethereum system stores information on the use of storage and return of funds for its use to the sender.\n\n\nAfter this, the various calculations required for the transaction are performed.\n\nAfter all the steps necessary to complete the transaction have been completed (assuming that all the above requirements have also been fulfilled), the status of the transaction is completed, and the amount of unused fuel to be returned to the sender is counted.\n\nAfter the (successful) transaction is completed and the fuel is returned to the sender, the following occurs:\n\n*   a certain amount of air used to purchase fuel is sent to the miner;\n    \n*   The fuel used to complete the transaction is recorded in a block for counting fuel (this block is used to store information about the total amount of fuel that was used to conduct all transactions in this block; in addition, this block is used during validation;\n    \n*   all account information contained in the self-destruct set section is deleted. \n\n\nHere we are at the end of this chapter: we learned what a new state is and why we need a log for conducting transactions.\n\nIn the next chapter, we will take a closer look at the difference between the transactions related to creating contracts and sending messages.\n\n# Creating contracts\n\nYou probably remember that in Ethereum there are only two types of accounts: contract accounts and external ones. When you meet the term “contract related transactions”, you should be aware that the purpose of such a transaction is to create a new contract account.\n\nTo create a new contract account, we must first declare the address of the account being created using a special formula. After this, a new account is created. To perform such an operation, you must perform a series of actions:\n\n*   set zero to nonce\n     \n*   adjust the balance of your account, equal to the payment for the transaction (in the event that the sender is ready to send a certain amount of air as payment for the transaction)\n    \n*   calculate the amount of payment that goes into the balance of the account created from the sender's account\n    \n*   indicate that the storage is no longer in use\n    \n*   configure contract hash code as empty string hash \n\n\nAt the moment when we started creating a new account, we, in fact, have already created it with the help of the **init code** , which is automatically sent at the beginning of the transaction (we forgot what the init code is - see the section “Transactions and Messages”). There are several scenarios during the execution of the init code (for example, it can happen: updating the storage for the account, creating another account for the current contract, sending a message, etc.).\n\nAfter the system executes the code intended to create a new contract, fuel comes into play. You will not be able to conduct a transaction if it requires a greater amount of fuel than the one stored on your balance sheet. In the event that, despite such a restriction, you try to conduct a transaction, then you will receive a message about the lack of fuel, after which the system will automatically close. Moreover, if the completion of the transaction was caused due to a shortage of fuel, then you will be transferred to the stage prior to the transaction. And most importantly: the --recipient will not be refunded the amount of fuel that was spent before the discovery of its shortage--.\n\nThat's it…\n\nHowever, if the sender has allocated a certain amount of air to conduct the current transaction, then this amount will be returned even if the creation of the contract is unsuccessful.\n\nIf the initialization code was successfully completed, the funds required to create the contract must be contributed by the creator. This amount also includes the cost of using storage, which is directly proportional to the increase in the size of the code created for the contract. In the event that the creator does not have enough funds to carry out this operation, then the transaction is terminated due to a shortage of fuel and the consequences will be the same as those listed above.\n\nIf everything went smoothly, and we did not receive a message about the lack of fuel, then all the unused fuel for this transaction is returned to the sender.\n\nVictory!\n\n# Messages\n\nThe operation of sending a message, in general, is quite similar to the creation of a contract, not taking into account some small differences.\n\nTo perform this operation, the application of the init code is completely unnecessary, since as a result of its execution, a new account is not created. However, for such an operation you may need input data, but only if such data were transmitted by the recipient as a result of the transaction. After performing the operation on sending a message, a new block becomes available, containing output information, which is used when the operation is repeated.\n\nAlso, as in the case of creating a contract, if the sending operation was interrupted due to a shortage of fuel or an invalid transaction (for example, due to a stack overflow error, invalid transition address, incorrect command), the amount of fuel used for this operation is not returned call On the contrary, all unused fuel is also deducted from its balance, and the state of the system returns to the point preceding the balance transfer operation.\n\nUntil recently, Ethereum did not have the ability to interrupt or suspend transactions without losing the fuel you provided for such a purpose. For example, you can imagine a situation where you are the initiator of creating a contract, during the creation of which an error occurred, because the initiator of the call did not have the right to perform any of the transactions. So, in the previous version of Ethereum, before the platform was updated, in such a situation all the fuel remaining on your account would have been removed, and the sender would not have received his fuel back either. But with the **release of the update - Byzantium - you have the opportunity to suspend the execution of operations to create contracts and return the system to its original state without losing the fuel remaining on your account**. Thus, if the exit from the transaction occurred as a result of the suspension of its execution, the unused fuel is returned back to the sender.\n\n# Execution model\n\nIn the previous sections, I told you about how transactions are performed. Now, I suggest you deal with what is happening in the VM (from the English. Virtual Machine - virtual machine) at the time of the transaction.\n\n**The part of the protocol that performs transaction processing in the Ethereum operating system is called Ethereum Virtual Machine (VME)** .\n\nVME is a Turing machine, as mentioned in this article earlier. The only difference between a VME and a typical Turing machine is that the first one requires a virtual “fuel”. Thus, all calculations that can be performed in VME are somehow limited by the amount of fuel that is circulating in it, the virtual machine.\nhttps://hsto.org/getpro/habr/post_images/875/26f/3fe/87526f3fe5b7963aa8c9fea26fb2b2c1.png\nSource: CMU\n\nIn addition, VME has all the features of a stack architecture. A stack machine is a computer that uses the LIFO algorithm.\n\nThe size of any stack element in the VME is 256 bits, and the maximum stack size is 1024 bits.\n\nFor VME, a certain amount of memory is provided, which is not constant. Elements are stored in it as arrays of bytes with reference to words.\n\nFor VMEs, a specific storage area is also provided. Unlike the amount of memory, this storage (or storage area) does not change and is part of the system state. In VME, the program code is stored in a separate virtual ROM., access to which can be obtained only with the help of certain instructions. From this point of view, such a VME differs from the typical von Neumann architecture , in which the program code is stored in the computer's memory.\nhttps://hsto.org/getpro/habr/post_images/b5f/f37/fb6/b5ff37fb63e2cde8276b47d574b6ec38.png\nFor VME also has its own special language - byte code VME. When a programmer, such as you or, for example, I, writes a smart contract that will be executed in the Ethereum system, this usually happens with the help of a high-level language, such as Solidity. After writing such a code, we compile it into the VME bytecode so that the VME can understand the command we wrote.\n\n We proceed directly to the execution of operations.\n\nBefore you perform a specific calculation, the processor must verify that the following information is valid and accessible:\n\n*   State of the system\n     \n*   Information about the amount of fuel required to perform the required operation\n    \n*   Address of the account that owns the executable code\n    \n*   Address of the sender of the transaction - the initiator of the current operation\n    \n*   Address of the account - the initiator of the executable code (may differ from the address of the sender-initiator)\n    \n*   Information on the amount of fuel required to complete a transaction\n    \n*   Input data for the operation\n    \n*   The number of Wei that should be sent to the account of this account as a result of the current operation\n    \n*   Information about running machine code\n    \n*   Block header information for the current block\n    \n*   Depth of the current message or contract creation \n\n\nImmediately before the program starts, the system memory is absolutely empty, and the command counter is zero. \n\nPC: 0 STACK: [] MEM: [], STORAGE: {}\n\nAfter that, a recursive transaction begins in the VME: calculating the state of the system and the state of the machine for each cycle. The state of the system is the global state of Ethereum. Machine condition includes:\n\n*   available amount of fuel;\n    \n*   command counter;\n    \n*   memory contents;\n    \n*   active word count in memory;\n    \n*   content stack \n\n\nElements of the stack are added or removed from the left edge of the code fragment.\n\nFor each cycle, a certain part of it is taken out of the remaining amount of fuel, and the command counter increases.\n\nIn total there are three possible options for the end of the cycle:\n\n1.   The operations performed by the machine reach an exceptional state (for example, due to the lack of virtual fuel, incorrect instructions, insufficient number of stack elements, stack element values ​​exceeding 1024 bits, incorrect JUMP / JUMPI assignment) and, thus, the operation is suspended.\n    \n2.   The sequence of actions proceeds to the next cycle.\n    \n3.   The operations performed by the machine reach a logical conclusion (completion of the process) \n\n\nIf the calculations performed by the machine reach a logical conclusion, rather than an exceptional state, then as a result, the machine will issue the resulting state, as well as information about the remaining fuel and the resulting output data.\n\nThat's it. We have just learned the most complex and confusing part of Ethereum. Do not worry if you have not fully understood something: you do not need to delve into every detail and understand all the processes occurring in this system, well, if only you are not going to really fully study it and work at a sufficiently deep level.\n\n# The final design of the blocks\n\nLet's finally figure out what happens to the blocks of transactions during their final clearance.\n\n“Final design” can occur in two ways, depending on whether we are creating a block or it has already been created. In that case, if we only create a block, then the final design means the process of mining the current block. On the other hand, if a block has already been created, such a definition means the process of validating the current block. In both of the cases presented above, four conditions must be met for the final completion of the block.\n\n1) Validation (or, in the case of mining, the definition of) ommers: each block of ommers that is in the block header must have a valid block header and be the sixth descendant of the current block.\n\n2) Validation of transactions: the value of gasUsed for the current block should be equal to the value of the total amount of fuel used to carry out all the transactions listed in this block.\n\n3) Payment purpose (only in the case of mining): 5 units of ether are assigned to the beneficiary for mining each block (in accordance with the EIP-649 proposal, this payment will be reduced to 3 units of ether). Moreover, for each ommer, the beneficiary of the current block is charged as an additional 1/32 of the total payment for the current block. And the last thing: the beneficiary of the ommer block is also assigned a payment in the form of a certain amount, for the determination of which there is a special figure.\n\n4) Verification of the state and values ​​of nonce: To carry out this procedure, you need to ensure that all transactions are completed, as well as a change in the resulting states. After that, you will also need to set a new block after the payment for this block has been sent. The verification process occurs by comparing the trailing state with the state of the prefix tree stored in the header.\n\n# Mining, aimed at the proof of work\n\nIn the \"Blocks\" section, we briefly familiarized ourselves with such a concept as the complexity of the blocks. The algorithm by which the concept of block complexity has arisen is called Proof of Work (PoW).\n\nThe PoW algorithm used in the Ethereum system is called Ethash (previously, but called Dagger-Hashimoto).\n\nThis algorithm has the following form:\nhttps://hsto.org/getpro/habr/post_images/edc/3d9/a67/edc3d9a672c1c5f4894c558afbdbdcf8.png\n*where m is mixHash; n is nonce; Hn is the header of the new block (nonce and mixHash are not included here, since these values ​​must be calculated); Hn - nonce for block header; d - DAG data set*.\n\nIn the \"Blocks\" section, we also reviewed the various values ​​provided for the block header. These, as you remember, include values ​​such as mixHash and nonce. Once again I will remind:\n\n*   **mixHash** is a hash that, together with the value of nonce, confirms that a sufficient number of calculations have been performed for the current block.\n     \n*   **nonce is** also a hash, which, together with the mixHash value, confirms that a sufficient number of calculations were performed for the current block.\n\n\n**Therefore, PoW is necessary to calculate the above values**.\n\nIt is quite a difficult task to explain exactly how mixHash and nonce are calculated using the PoW function, and, in fact, a whole article can be devoted to this moment. But if in brief, the following happens:\n\nThe value of the \"seed\" is calculated for each of the blocks. To count each seed, there is its own \"interval\", with each interval being equal to 30,000 blocks. For each interval, the seed is a hash equal to a series of 32-byte zeros. For each subsequent interval, a specific hash hash is provided for the previous seed. Using this seed, the node finds the value of a pseudo-random hash.\n\nSuch a hash plays a very important role, since with its help we can better understand what the “thin nodes”, referred to in the previous articles, are. The goal of thin nodes is to provide an opportunity for some of the nodes to effectively check certain transactions without having to store the entire data set of the blockchain. A thin node can validate a transaction using only the given hash. This is due to the fact that this hash can re-create the block it needs for verification.\n\nUsing this hash, a node can create a DAG data packet in which each element depends on a small number of randomized pseudo-elements of the hash. Each novice miner must first create his full data packet. The system for each of the miners is stored a separate data packet, while the volume of such data is constantly growing.\n\nFor example, a miner can take any random parts from a data packet and use them in a mathematical function to hash such parts for mixHash. Such a miner will be able to constantly set the value for mixHash until the initial data is received as a nonce value. When this condition is fulfilled, such nonce value will be considered valid, and the block can be added to the circuit.\n\n# Mining as a defense mechanism\n\nIn general, the goal of PoW is to cryptographically prove that certain calculations were aimed at obtaining a certain result (nonce values). It just so happened that **there is no other way to find a nonce, the value of which does not exceed a certain limit, except by using the enumeration of all possible options, including finding the required one**. The distribution of output data for a constantly used function hash is evenly distributed. Thus, we know for sure that the time **required to find a nonce value clearly depends on the complexity threshold** : the higher the complexity threshold, the longer the search for the required nonce value will take place. The PoW algorithm represents the concept of complexity used in the blockchain under consideration.\n\nWhat does safe blockchain mean? The answer is quite simple: a secure blockchain is a blockchain that ALL USERS will trust. As I wrote above, if there are more than two chains in the blockchain, then it is quite logical to assume that users will not feel confident while working with the blockchain, since no one will be able to say with accuracy which of the presented chains is valid.\n\n**The PoW algorithm is used** precisely **for this purpose: it ensures the unity of the chain in the blockchain, preventing the creation of other chains of blocks that may affect the transaction execution history**(for example, creating fake transactions or deleting or modifying existing ones). Thus, in order for an attacker to be the first to validate his blocks, he will have to constantly determine the value of nonce, and do it faster than all other network users (I hope you remember the GHOST protocol, which I described earlier). Of course, for an attacker, such a method will not be feasible, unless it has at its disposal most of the mining resources of the network - such a scenario is known as a 51% attack .\n\n# Mining as a means of distributing finance\n\nApart from the fact that the PoW algorithm ensures the safe operation of the blockchain, it also distributes the remuneration to those users whose calculations were used to ensure security. I already wrote above that miners receive remuneration for the mining of a block, and also:\n\n*   reward of 5 units of air for the \"winning\" block (soon this figure should drop to 3 units)\n   \n*   the cost of fuel consumed as a result of the transaction in the unit\n    \n*   additional remuneration for the inclusion of ommerov in the unit \n\n\nIn order to ensure the consistency of the PoW method - which is necessary to guarantee safety - and the distribution of remuneration Ethereum constantly adheres to the two principles below:\n\n*   First, attract as many users as possible to use the platform. In other words, the use of this platform should not cause any difficulties for the user: he should not use any super-complex algorithms or use unknown hardware. In addition, the process of distribution of remuneration should also be clear and simple for everyone who is willing to expend some energy used by his computer for the sake of receiving several cherished units of ether.\n\n*   Secondly, not to allow disproportionate distribution of rewards and other resources for any particular node: any such node for which an inappropriate distribution of resources is carried out will have a huge impact on the definition of the canonical blockchain, which negatively affects the security of the system as a whole. \n\n\nFor example, in the Bitcoin system there is a problem with the implementation of the above two principles: its PoW algorithm uses the SHA256 hash function. The problem of the latter is that its solution may be much easier if you use special hardware - ASICs.\n\nIn order to prevent such punctures in Ethereum, a special PoW algorithm with sequential memory is used ( Ethhash). the structure of the algorithm is constructed in such a way that a large amount of memory and a high throughput of the connection are required to calculate the nonce value. Requirements related to the presence of a large amount of memory imply that it will be very difficult for a computer with a standard memory size to perform a parallel calculation of several nonce values ​​simultaneously. As for high bandwidth requirements, even for a super-fast computer, detecting multiple nonce values ​​at the same time will be a daunting task. Thus, due to such features of this system, the probability of risk centralization is reduced and, moreover, more uniform conditions are created for the operation of various nodes performing verification.\n\nBy the way, not so long ago, I learned that Ethereum was going to switch from the PoW algorithm to a certain method called the “Proof of ownership” (from the English Proof-of-stake). Such a method in itself is worth a separate article for review and discussion.\n\n# Conclusion\n\nWell, here we come to the logical conclusion of our article.\n\nIn fact, this article gives a lot of food for thought. You absolutely should not worry about it, if you have mastered this article from the second or third time. I personally re-read yellow paper and white paper for Ethereum many times before I began to delve into the essence of the matter.\n\nI very much hope that this article was still useful for you. If you find any errors, I will be very grateful to you if you tell me about them.\n\nSources:\n\n[github.com/ethereum/yellowpaper] \n[ medium.com/@preethikasireddy/how-does-ethereum-work-anyway-22d1df506369 ]",
      "json_metadata": "{\"tags\":[\"ethereum\",\"blokchain\",\"technology\",\"pow\",\"mining\"],\"image\":[\"https://hsto.org/getpro/habr/post_images/174/b46/982/174b46982b2649de521e81510f464db2.png\",\"https://hsto.org/getpro/habr/post_images/699/f5d/f42/699f5df4291b4e0fe218ced727a48162.png\",\"https://hsto.org/getpro/habr/post_images/300/f9b/d24/300f9bd24f321692582aa5723cc558e8.png\",\"https://hsto.org/getpro/habr/post_images/39f/c73/d7d/39fc73d7dcb5982f6d0510c2b5fc95ba.png\",\"https://hsto.org/getpro/habr/post_images/0a9/a60/c20/0a9a60c205c85aaf002cb88bde9b3e21.png\",\"https://hsto.org/getpro/habr/post_images/c35/b84/edd/c35b84eddefd020b743faeb642598a35.png\",\"https://hsto.org/getpro/habr/post_images/698/ede/44b/698ede44b970953f04f36bc46288f92c.png\",\"https://hsto.org/getpro/habr/post_images/60d/f87/6dc/60df876dc65a9336edc6e08b7aa84c90.png\",\"https://hsto.org/getpro/habr/post_images/f61/632/05a/f6163205aa7816274ec0963876650794.png\",\"https://hsto.org/getpro/habr/post_images/792/310/b80/792310b808aea5e0071349bb4fec4c40.png\",\"https://hsto.org/getpro/habr/post_images/f37/406/26a/f3740626a6de50c5783dfcd1be181846.png\",\"https://hsto.org/getpro/habr/post_images/6c9/415/78b/6c941578b41c532239bcac828c1492db.png\",\"https://hsto.org/getpro/habr/post_images/0d7/ce3/27c/0d7ce327c6614e81effb59d8740aaa59.png\",\"https://hsto.org/getpro/habr/post_images/a2e/5be/360/a2e5be3606ee7f6d8cdb265fce9ed386.png\",\"https://hsto.org/getpro/habr/post_images/a98/c18/99f/a98c1899f8a005237e74ba058f0226f5.png\",\"https://hsto.org/getpro/habr/post_images/e69/840/c50/e69840c506bda92db427c2eae6a52141.png\",\"https://hsto.org/getpro/habr/post_images/7a9/0ad/a3c/7a90ada3cbc71381f2487870e695273b.png\",\"https://hsto.org/getpro/habr/post_images/e62/07c/be2/e6207cbe2731d1ff37617aa9f18402f9.png\",\"https://hsto.org/getpro/habr/post_images/d74/821/50d/d7482150d3ae6464c70548c616ba32ed.png\",\"https://hsto.org/getpro/habr/post_images/afb/8e0/79c/afb8e079c91120bcf834a8cdb6fe20b8.png\",\"https://hsto.org/getpro/habr/post_images/0a7/180/00b/0a718000b8aba14735eaed0dc2a14673.png\",\"https://hsto.org/getpro/habr/post_images/d4d/519/69b/d4d51969b2ea3783ccf574a880a1f1be.png\",\"https://hsto.org/getpro/habr/post_images/6a8/599/925/6a85999250c78464489b96c98815eae1.png\",\"https://hsto.org/getpro/habr/post_images/98f/d7b/c81/98fd7bc81f3c1297846dbf855071e521.png\",\"https://hsto.org/getpro/habr/post_images/3b3/1de/2d1/3b31de2d147fcd268c421524397d6ae2.png\",\"https://hsto.org/getpro/habr/post_images/14d/638/fe9/14d638fe92c4c504d76406ff3de69313.png\",\"https://hsto.org/getpro/habr/post_images/875/26f/3fe/87526f3fe5b7963aa8c9fea26fb2b2c1.png\",\"https://hsto.org/getpro/habr/post_images/b5f/f37/fb6/b5ff37fb63e2cde8276b47d574b6ec38.png\",\"https://hsto.org/getpro/habr/post_images/edc/3d9/a67/edc3d9a672c1c5f4894c558afbdbdcf8.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "ethereum",
      "permlink": "how-does-ethereum-work",
      "title": "HOW DOES ETHEREUM WORK ?"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-02T04:13:27",
  "trx_id": "5531ded82f463a42c6cf61b1555ffc25ce61045b",
  "trx_in_block": 0,
  "virtual_op": 0
}
azokreceived 0.019 SBD, 0.070 SP author reward for @azok / internet-in-russia-are-planning-to-turn-off-before-april-1-2019
2019/02/28 11:15:48
authorazok
permlinkinternet-in-russia-are-planning-to-turn-off-before-april-1-2019
sbd payout0.019 SBD
steem payout0.000 STEEM
vesting payout114.192812 VESTS
Transaction InfoBlock #30741586/Virtual Operation #6
View Raw JSON Data
{
  "block": 30741586,
  "op": [
    "author_reward",
    {
      "author": "azok",
      "permlink": "internet-in-russia-are-planning-to-turn-off-before-april-1-2019",
      "sbd_payout": "0.019 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "114.192812 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-28T11:15:48",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 6
}
2019/02/28 11:15:48
comment authorazok
comment permlinkinternet-in-russia-are-planning-to-turn-off-before-april-1-2019
curatorazok
reward2.003382 VESTS
Transaction InfoBlock #30741586/Virtual Operation #3
View Raw JSON Data
{
  "block": 30741586,
  "op": [
    "curation_reward",
    {
      "comment_author": "azok",
      "comment_permlink": "internet-in-russia-are-planning-to-turn-off-before-april-1-2019",
      "curator": "azok",
      "reward": "2.003382 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-28T11:15:48",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 3
}
2019/02/28 09:04:51
authorcryptno
body:D
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
parent authorazok
parent permlinkre-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190225t050942089z
permlinkre-azok-re-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190228t090452052z
title
Transaction InfoBlock #30738970/Trx bf0347ed0c7228d3b95a109cdd908a14375029a3
View Raw JSON Data
{
  "block": 30738970,
  "op": [
    "comment",
    {
      "author": "cryptno",
      "body": ":D",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "azok",
      "parent_permlink": "re-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190225t050942089z",
      "permlink": "re-azok-re-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190228t090452052z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-28T09:04:51",
  "trx_id": "bf0347ed0c7228d3b95a109cdd908a14375029a3",
  "trx_in_block": 13,
  "virtual_op": 0
}
azokcustom json: sm_start_quest
2019/02/26 14:06:57
idsm_start_quest
json{"type":"daily","app":"steemmonsters/0.5.0.2"}
required auths[]
required posting auths["azok"]
Transaction InfoBlock #30687452/Trx dc1b9fb7c2488dd8910aa08969b5325333ecc6ef
View Raw JSON Data
{
  "block": 30687452,
  "op": [
    "custom_json",
    {
      "id": "sm_start_quest",
      "json": "{\"type\":\"daily\",\"app\":\"steemmonsters/0.5.0.2\"}",
      "required_auths": [],
      "required_posting_auths": [
        "azok"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-26T14:06:57",
  "trx_id": "dc1b9fb7c2488dd8910aa08969b5325333ecc6ef",
  "trx_in_block": 26,
  "virtual_op": 0
}
azokupdated their account properties
2019/02/26 14:03:21
accountazok
json metadata{"profile":{"cover_image":"http://www.webdesigntrends.us/wp-content/uploads/2018/07/After-Free-Basics-Facebook-Tests-express-Wi-fi-in-India.jpg","profile_image":"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRzyGm4_xCynYWJiYGlitgWsakeKN1gCe_qui6WCLaRo3tWPCbDOck6","name":"AZOK"}}
memo keySTM5qJTfMW3fQWCa56RbyPmWvYkVJiV2jRSksTmv74qkgTb5WYHZy
posting{"account_auths":[["drugwars.app",1]],"key_auths":[["STM7Qe24g1gQWuPCtQUfWWFjj2kuqHLbokChQDHXrTS42hd3u9Wek",1]],"weight_threshold":1}
Transaction InfoBlock #30687380/Trx cd7fc3231f3844f28265c55620580550e981ecef
View Raw JSON Data
{
  "block": 30687380,
  "op": [
    "account_update",
    {
      "account": "azok",
      "json_metadata": "{\"profile\":{\"cover_image\":\"http://www.webdesigntrends.us/wp-content/uploads/2018/07/After-Free-Basics-Facebook-Tests-express-Wi-fi-in-India.jpg\",\"profile_image\":\"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRzyGm4_xCynYWJiYGlitgWsakeKN1gCe_qui6WCLaRo3tWPCbDOck6\",\"name\":\"AZOK\"}}",
      "memo_key": "STM5qJTfMW3fQWCa56RbyPmWvYkVJiV2jRSksTmv74qkgTb5WYHZy",
      "posting": {
        "account_auths": [
          [
            "drugwars.app",
            1
          ]
        ],
        "key_auths": [
          [
            "STM7Qe24g1gQWuPCtQUfWWFjj2kuqHLbokChQDHXrTS42hd3u9Wek",
            1
          ]
        ],
        "weight_threshold": 1
      }
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-26T14:03:21",
  "trx_id": "cd7fc3231f3844f28265c55620580550e981ecef",
  "trx_in_block": 14,
  "virtual_op": 0
}
azokclaimed reward balance: 0.019 SBD, 0.071 SP
2019/02/26 13:29:39
accountazok
reward sbd0.019 SBD
reward steem0.000 STEEM
reward vests116.211334 VESTS
Transaction InfoBlock #30686706/Trx bc5384d7789523de59378b3501365ee85f77aaa7
View Raw JSON Data
{
  "block": 30686706,
  "op": [
    "claim_reward_balance",
    {
      "account": "azok",
      "reward_sbd": "0.019 SBD",
      "reward_steem": "0.000 STEEM",
      "reward_vests": "116.211334 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-26T13:29:39",
  "trx_id": "bc5384d7789523de59378b3501365ee85f77aaa7",
  "trx_in_block": 46,
  "virtual_op": 0
}
2019/02/26 07:09:57
authorpartiko
bodyHello @azok! This is a friendly reminder that you have 3000 Partiko Points unclaimed in your Partiko account! Partiko is a fast and beautiful mobile app for Steem, and it’s the most popular Steem mobile app out there! Download Partiko using the link below and login using SteemConnect to claim your 3000 Partiko points! You can easily convert them into Steem token! https://partiko.app/referral/partiko
json metadata{"app":"partiko"}
parent authorazok
parent permlinkmeme-ricardo-milos
permlinkpartiko-re-azok-meme-ricardo-milos-20190226t070957217z
title
Transaction InfoBlock #30679118/Trx 25c7e1f8f2c9ca13141181b6bf64a73c72f4471a
View Raw JSON Data
{
  "block": 30679118,
  "op": [
    "comment",
    {
      "author": "partiko",
      "body": "Hello @azok! This is a friendly reminder that you have 3000 Partiko Points unclaimed in your Partiko account!\n\nPartiko is a fast and beautiful mobile app for Steem, and it’s the most popular Steem mobile app out there! Download Partiko using the link below and login using SteemConnect to claim your 3000 Partiko points! You can easily convert them into Steem token!\n\nhttps://partiko.app/referral/partiko",
      "json_metadata": "{\"app\":\"partiko\"}",
      "parent_author": "azok",
      "parent_permlink": "meme-ricardo-milos",
      "permlink": "partiko-re-azok-meme-ricardo-milos-20190226t070957217z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-26T07:09:57",
  "trx_id": "25c7e1f8f2c9ca13141181b6bf64a73c72f4471a",
  "trx_in_block": 36,
  "virtual_op": 0
}
2019/02/26 06:49:00
authorgghite
body감사합니다.
json metadata{"tags":["tasteem"],"app":"steemit/0.1"}
parent authorazok
parent permlinkre-gghite-tasteem-1d7015-20190225t053648382z
permlinkre-azok-re-gghite-tasteem-1d7015-20190226t064901270z
title
Transaction InfoBlock #30678699/Trx fda9170c7cdd3ec71f351c1c7655d91448c0faae
View Raw JSON Data
{
  "block": 30678699,
  "op": [
    "comment",
    {
      "author": "gghite",
      "body": "감사합니다.",
      "json_metadata": "{\"tags\":[\"tasteem\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "azok",
      "parent_permlink": "re-gghite-tasteem-1d7015-20190225t053648382z",
      "permlink": "re-azok-re-gghite-tasteem-1d7015-20190226t064901270z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-26T06:49:00",
  "trx_id": "fda9170c7cdd3ec71f351c1c7655d91448c0faae",
  "trx_in_block": 30,
  "virtual_op": 0
}
azokreceived 0.019 SBD, 0.070 SP author reward for @azok / what-kind-of-memes-and-reposts-you-can-put-in-russia
2019/02/26 05:11:18
authorazok
permlinkwhat-kind-of-memes-and-reposts-you-can-put-in-russia
sbd payout0.019 SBD
steem payout0.000 STEEM
vesting payout114.207689 VESTS
Transaction InfoBlock #30676745/Virtual Operation #4
View Raw JSON Data
{
  "block": 30676745,
  "op": [
    "author_reward",
    {
      "author": "azok",
      "permlink": "what-kind-of-memes-and-reposts-you-can-put-in-russia",
      "sbd_payout": "0.019 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "114.207689 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-26T05:11:18",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 4
}
azokreceived 0.001 SP curation reward for @thatindianlady / abstract-patterns-set-2
2019/02/26 04:46:51
comment authorthatindianlady
comment permlinkabstract-patterns-set-2
curatorazok
reward2.003645 VESTS
Transaction InfoBlock #30676256/Virtual Operation #48
View Raw JSON Data
{
  "block": 30676256,
  "op": [
    "curation_reward",
    {
      "comment_author": "thatindianlady",
      "comment_permlink": "abstract-patterns-set-2",
      "curator": "azok",
      "reward": "2.003645 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-26T04:46:51",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 48
}
2019/02/25 23:27:42
authorazok
permlinkre-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190225t050942089z
voterforcen
weight10000 (100.00%)
Transaction InfoBlock #30669876/Trx 4a9eb3ff1f7a5456a87b3ab7cbc3d71511220a1a
View Raw JSON Data
{
  "block": 30669876,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "re-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190225t050942089z",
      "voter": "forcen",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T23:27:42",
  "trx_id": "4a9eb3ff1f7a5456a87b3ab7cbc3d71511220a1a",
  "trx_in_block": 0,
  "virtual_op": 0
}
2019/02/25 06:06:27
authorazok
permlinkre-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190225t050942089z
votercryptno
weight10000 (100.00%)
Transaction InfoBlock #30649077/Trx 570503af06f5a82fd59d47da147bff6c7ee842c1
View Raw JSON Data
{
  "block": 30649077,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "re-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190225t050942089z",
      "voter": "cryptno",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T06:06:27",
  "trx_id": "570503af06f5a82fd59d47da147bff6c7ee842c1",
  "trx_in_block": 57,
  "virtual_op": 0
}
2019/02/25 05:56:54
authorazok
permlinkwhat-kind-of-memes-and-reposts-you-can-put-in-russia
voterkggymlife
weight1500 (15.00%)
Transaction InfoBlock #30648886/Trx 26c2b7f495500e376114158de23717606964648f
View Raw JSON Data
{
  "block": 30648886,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "what-kind-of-memes-and-reposts-you-can-put-in-russia",
      "voter": "kggymlife",
      "weight": 1500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:56:54",
  "trx_id": "26c2b7f495500e376114158de23717606964648f",
  "trx_in_block": 31,
  "virtual_op": 0
}
2019/02/25 05:56:36
authorazok
permlinkinternet-in-russia-are-planning-to-turn-off-before-april-1-2019
voterkggymlife
weight1500 (15.00%)
Transaction InfoBlock #30648881/Trx a427eddab3e2c25098c3cc376fdb1f39f45d47c2
View Raw JSON Data
{
  "block": 30648881,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "internet-in-russia-are-planning-to-turn-off-before-april-1-2019",
      "voter": "kggymlife",
      "weight": 1500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:56:36",
  "trx_id": "a427eddab3e2c25098c3cc376fdb1f39f45d47c2",
  "trx_in_block": 17,
  "virtual_op": 0
}
2019/02/25 05:55:54
authorazok
permlinkwhat-kind-of-memes-and-reposts-you-can-put-in-russia
voteroldtimer
weight500 (5.00%)
Transaction InfoBlock #30648867/Trx 82752498bad5e17254a2b802b78a5795babdcc6d
View Raw JSON Data
{
  "block": 30648867,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "what-kind-of-memes-and-reposts-you-can-put-in-russia",
      "voter": "oldtimer",
      "weight": 500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:55:54",
  "trx_id": "82752498bad5e17254a2b802b78a5795babdcc6d",
  "trx_in_block": 5,
  "virtual_op": 0
}
2019/02/25 05:55:39
authorazok
permlinkinternet-in-russia-are-planning-to-turn-off-before-april-1-2019
voteroldtimer
weight500 (5.00%)
Transaction InfoBlock #30648862/Trx be2676b216edbc44a613cd2d6bb98d4438b7591d
View Raw JSON Data
{
  "block": 30648862,
  "op": [
    "vote",
    {
      "author": "azok",
      "permlink": "internet-in-russia-are-planning-to-turn-off-before-april-1-2019",
      "voter": "oldtimer",
      "weight": 500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:55:39",
  "trx_id": "be2676b216edbc44a613cd2d6bb98d4438b7591d",
  "trx_in_block": 24,
  "virtual_op": 0
}
2019/02/25 05:40:39
authorcryptno
permlinkproof-of-what-mining-incentives-matter-but-so-does-fairness
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30648562/Trx 8d3a438b4e2071809f2d2c3e2f6acf37d1c13f73
View Raw JSON Data
{
  "block": 30648562,
  "op": [
    "vote",
    {
      "author": "cryptno",
      "permlink": "proof-of-what-mining-incentives-matter-but-so-does-fairness",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:40:39",
  "trx_id": "8d3a438b4e2071809f2d2c3e2f6acf37d1c13f73",
  "trx_in_block": 15,
  "virtual_op": 0
}
2019/02/25 05:39:51
authorazok
bodyExcellent
json metadata{"tags":["tasteem"],"app":"steemit/0.1"}
parent authortasteem
parent permlinktasteem-event-30df98
permlinkre-tasteem-tasteem-event-30df98-20190225t053948041z
title
Transaction InfoBlock #30648546/Trx 17a480f24688dcb00f118f88ed7c3c48a7f83f19
View Raw JSON Data
{
  "block": 30648546,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "Excellent",
      "json_metadata": "{\"tags\":[\"tasteem\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "tasteem",
      "parent_permlink": "tasteem-event-30df98",
      "permlink": "re-tasteem-tasteem-event-30df98-20190225t053948041z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:39:51",
  "trx_id": "17a480f24688dcb00f118f88ed7c3c48a7f83f19",
  "trx_in_block": 5,
  "virtual_op": 0
}
2019/02/25 05:39:30
authorazok
bodyExcellent
json metadata{"tags":["photography"],"app":"steemit/0.1"}
parent authoroldtimer
parent permlinkspring-in-slovenia-2018
permlinkre-oldtimer-spring-in-slovenia-2018-20190225t053926532z
title
Transaction InfoBlock #30648539/Trx f2e5bc8e188782423113d12b8ac7027f0fc15183
View Raw JSON Data
{
  "block": 30648539,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "Excellent",
      "json_metadata": "{\"tags\":[\"photography\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "oldtimer",
      "parent_permlink": "spring-in-slovenia-2018",
      "permlink": "re-oldtimer-spring-in-slovenia-2018-20190225t053926532z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:39:30",
  "trx_id": "f2e5bc8e188782423113d12b8ac7027f0fc15183",
  "trx_in_block": 2,
  "virtual_op": 0
}
2019/02/25 05:39:03
authorazok
bodyExcellent
json metadata{"tags":["films"],"app":"steemit/0.1"}
parent authorgooddream
parent permlinka-bittersweet-life-korean-film-wonderfully-shot-action-film
permlinkre-gooddream-a-bittersweet-life-korean-film-wonderfully-shot-action-film-20190225t053901444z
title
Transaction InfoBlock #30648530/Trx 21069dd776b15b20cb93460769546c9ecf5e2f08
View Raw JSON Data
{
  "block": 30648530,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "Excellent",
      "json_metadata": "{\"tags\":[\"films\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "gooddream",
      "parent_permlink": "a-bittersweet-life-korean-film-wonderfully-shot-action-film",
      "permlink": "re-gooddream-a-bittersweet-life-korean-film-wonderfully-shot-action-film-20190225t053901444z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:39:03",
  "trx_id": "21069dd776b15b20cb93460769546c9ecf5e2f08",
  "trx_in_block": 14,
  "virtual_op": 0
}
2019/02/25 05:37:15
authorazok
bodyExcellent
json metadata{"tags":["recipes"],"app":"steemit/0.1"}
parent authorpinkspectre
parent permlink2br4yn-mediterranean-quinoa
permlinkre-pinkspectre-2br4yn-mediterranean-quinoa-20190225t053712339z
title
Transaction InfoBlock #30648494/Trx 56ba324340995abe12946f8cec3e6ef907282873
View Raw JSON Data
{
  "block": 30648494,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "Excellent",
      "json_metadata": "{\"tags\":[\"recipes\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "pinkspectre",
      "parent_permlink": "2br4yn-mediterranean-quinoa",
      "permlink": "re-pinkspectre-2br4yn-mediterranean-quinoa-20190225t053712339z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:37:15",
  "trx_id": "56ba324340995abe12946f8cec3e6ef907282873",
  "trx_in_block": 11,
  "virtual_op": 0
}
2019/02/25 05:36:51
authorazok
bodyExcellent
json metadata{"tags":["tasteem"],"app":"steemit/0.1"}
parent authorgghite
parent permlinktasteem-1d7015
permlinkre-gghite-tasteem-1d7015-20190225t053648382z
title
Transaction InfoBlock #30648486/Trx e130140150309b25a2a6ce5b41472734b9d19e02
View Raw JSON Data
{
  "block": 30648486,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "Excellent",
      "json_metadata": "{\"tags\":[\"tasteem\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "gghite",
      "parent_permlink": "tasteem-1d7015",
      "permlink": "re-gghite-tasteem-1d7015-20190225t053648382z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:36:51",
  "trx_id": "e130140150309b25a2a6ce5b41472734b9d19e02",
  "trx_in_block": 4,
  "virtual_op": 0
}
azokdeleted a comment or post
2019/02/25 05:36:21
authorazok
permlinkre-gghite-tasteem-1d7015-20190225t053607963z
Transaction InfoBlock #30648476/Trx 8ffdbfdc0d9685c3c504d8c2fd6944105ce212a9
View Raw JSON Data
{
  "block": 30648476,
  "op": [
    "delete_comment",
    {
      "author": "azok",
      "permlink": "re-gghite-tasteem-1d7015-20190225t053607963z"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:36:21",
  "trx_id": "8ffdbfdc0d9685c3c504d8c2fd6944105ce212a9",
  "trx_in_block": 6,
  "virtual_op": 0
}
2019/02/25 05:36:09
authorazok
bodyWhy did I fail the test?
json metadata{"tags":["tasteem"],"app":"steemit/0.1"}
parent authorgghite
parent permlinktasteem-1d7015
permlinkre-gghite-tasteem-1d7015-20190225t053607963z
title
Transaction InfoBlock #30648472/Trx 26f0b9482296b0cfd1e8b005e85f0b79d83cb103
View Raw JSON Data
{
  "block": 30648472,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "Why did I fail the test?",
      "json_metadata": "{\"tags\":[\"tasteem\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "gghite",
      "parent_permlink": "tasteem-1d7015",
      "permlink": "re-gghite-tasteem-1d7015-20190225t053607963z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:36:09",
  "trx_id": "26f0b9482296b0cfd1e8b005e85f0b79d83cb103",
  "trx_in_block": 16,
  "virtual_op": 0
}
2019/02/25 05:10:12
authorazok
bodyExcellent
json metadata{"tags":["music"],"app":"steemit/0.1"}
parent authormajes.tytyty
parent permlinksteemitcentral-lyrics-challenge-day-49-60-wild-is-the-wind-by-dimitri-tiomkin-david-bowie
permlinkre-majestytyty-steemitcentral-lyrics-challenge-day-49-60-wild-is-the-wind-by-dimitri-tiomkin-david-bowie-20190225t051011155z
title
Transaction InfoBlock #30647954/Trx 3e1e33e4cbd55de2d81501287f8a71d29165fe0f
View Raw JSON Data
{
  "block": 30647954,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "Excellent",
      "json_metadata": "{\"tags\":[\"music\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "majes.tytyty",
      "parent_permlink": "steemitcentral-lyrics-challenge-day-49-60-wild-is-the-wind-by-dimitri-tiomkin-david-bowie",
      "permlink": "re-majestytyty-steemitcentral-lyrics-challenge-day-49-60-wild-is-the-wind-by-dimitri-tiomkin-david-bowie-20190225t051011155z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:10:12",
  "trx_id": "3e1e33e4cbd55de2d81501287f8a71d29165fe0f",
  "trx_in_block": 9,
  "virtual_op": 0
}
2019/02/25 05:09:45
authorazok
bodyExcellent
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
parent authorcryptno
parent permlinkproof-of-what-mining-incentives-matter-but-so-does-fairness
permlinkre-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190225t050942089z
title
Transaction InfoBlock #30647945/Trx f32140b6d8d1d1d40a3e7869386f0af3ac603df2
View Raw JSON Data
{
  "block": 30647945,
  "op": [
    "comment",
    {
      "author": "azok",
      "body": "Excellent",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "cryptno",
      "parent_permlink": "proof-of-what-mining-incentives-matter-but-so-does-fairness",
      "permlink": "re-cryptno-proof-of-what-mining-incentives-matter-but-so-does-fairness-20190225t050942089z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-25T05:09:45",
  "trx_id": "f32140b6d8d1d1d40a3e7869386f0af3ac603df2",
  "trx_in_block": 5,
  "virtual_op": 0
}
2019/02/22 17:02:33
authormuratkbesiroglu
permlinksci-fi-novel-the-dream-artist-part-25
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575850/Trx b6f5a2c81821c28259b9dffdacf2cdf406b52a56
View Raw JSON Data
{
  "block": 30575850,
  "op": [
    "vote",
    {
      "author": "muratkbesiroglu",
      "permlink": "sci-fi-novel-the-dream-artist-part-25",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:02:33",
  "trx_id": "b6f5a2c81821c28259b9dffdacf2cdf406b52a56",
  "trx_in_block": 24,
  "virtual_op": 0
}
2019/02/22 17:02:27
authorchbartist
permlinkthe-infantry-man-slogan-and-our-mindset-towards-disaster
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575848/Trx 26811d55a03a2a5df645779d219839e7bf7045e9
View Raw JSON Data
{
  "block": 30575848,
  "op": [
    "vote",
    {
      "author": "chbartist",
      "permlink": "the-infantry-man-slogan-and-our-mindset-towards-disaster",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:02:27",
  "trx_id": "26811d55a03a2a5df645779d219839e7bf7045e9",
  "trx_in_block": 22,
  "virtual_op": 0
}
2019/02/22 17:02:21
authoroendertuerk
permlinkthe-human-brain-can-create-structures-in-up-to-11-dimensions
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575846/Trx 9acac02e8f410d2183f46a5911f3a999c49d45be
View Raw JSON Data
{
  "block": 30575846,
  "op": [
    "vote",
    {
      "author": "oendertuerk",
      "permlink": "the-human-brain-can-create-structures-in-up-to-11-dimensions",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:02:21",
  "trx_id": "9acac02e8f410d2183f46a5911f3a999c49d45be",
  "trx_in_block": 13,
  "virtual_op": 0
}
2019/02/22 17:02:06
authorsteeminfobot
permlinkfour-things-about-case-studies-thing-3-your-hero-may-need-help
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575841/Trx fbd07ca3e1855edf4f1043cabffcc3eb5623817e
View Raw JSON Data
{
  "block": 30575841,
  "op": [
    "vote",
    {
      "author": "steeminfobot",
      "permlink": "four-things-about-case-studies-thing-3-your-hero-may-need-help",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:02:06",
  "trx_id": "fbd07ca3e1855edf4f1043cabffcc3eb5623817e",
  "trx_in_block": 25,
  "virtual_op": 0
}
2019/02/22 17:01:27
authorstewsak
permlinkthese-kids-are-out-of-control
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575828/Trx bd20591379c49056491e8edff9920b090227f88d
View Raw JSON Data
{
  "block": 30575828,
  "op": [
    "vote",
    {
      "author": "stewsak",
      "permlink": "these-kids-are-out-of-control",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:01:27",
  "trx_id": "bd20591379c49056491e8edff9920b090227f88d",
  "trx_in_block": 10,
  "virtual_op": 0
}
azokupvoted (100.00%) @trevonjb / 8ysk72zo
2019/02/22 17:01:24
authortrevonjb
permlink8ysk72zo
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575827/Trx 4195f690be0be11252f1415991161e3d4f84e1f1
View Raw JSON Data
{
  "block": 30575827,
  "op": [
    "vote",
    {
      "author": "trevonjb",
      "permlink": "8ysk72zo",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:01:24",
  "trx_id": "4195f690be0be11252f1415991161e3d4f84e1f1",
  "trx_in_block": 1,
  "virtual_op": 0
}
2019/02/22 17:01:06
authorchbartist
permlinkare-you-giving-your-dreams-the-best-that-you-have-to-offer
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575821/Trx 8ca270333e82dabc9014e7cd48fa2474ed6f5e3d
View Raw JSON Data
{
  "block": 30575821,
  "op": [
    "vote",
    {
      "author": "chbartist",
      "permlink": "are-you-giving-your-dreams-the-best-that-you-have-to-offer",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:01:06",
  "trx_id": "8ca270333e82dabc9014e7cd48fa2474ed6f5e3d",
  "trx_in_block": 20,
  "virtual_op": 0
}
2019/02/22 17:00:57
authorluppers
permlinktranscend-your-limiting-beleifs-thought-for-the-day-47
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575818/Trx 838e4f559523a7f45ea8f6d3fe86adac7e2606c8
View Raw JSON Data
{
  "block": 30575818,
  "op": [
    "vote",
    {
      "author": "luppers",
      "permlink": "transcend-your-limiting-beleifs-thought-for-the-day-47",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:00:57",
  "trx_id": "838e4f559523a7f45ea8f6d3fe86adac7e2606c8",
  "trx_in_block": 40,
  "virtual_op": 0
}
2019/02/22 17:00:51
authorcaptainquenta
permlinkeos-up-over-160-since-december-2018-lows-looking-to-move-up-higher
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575816/Trx 991b5d40674b4e00ec99f949ab5ee308ef7876b8
View Raw JSON Data
{
  "block": 30575816,
  "op": [
    "vote",
    {
      "author": "captainquenta",
      "permlink": "eos-up-over-160-since-december-2018-lows-looking-to-move-up-higher",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:00:51",
  "trx_id": "991b5d40674b4e00ec99f949ab5ee308ef7876b8",
  "trx_in_block": 21,
  "virtual_op": 0
}
2019/02/22 17:00:42
authormiti
permlinki-vantaggi-offerti-dalle-blockchain-parte-5-gestione-delle-risorse-umane
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575813/Trx c3a758cd95139285467a16641ebd95b34573280a
View Raw JSON Data
{
  "block": 30575813,
  "op": [
    "vote",
    {
      "author": "miti",
      "permlink": "i-vantaggi-offerti-dalle-blockchain-parte-5-gestione-delle-risorse-umane",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:00:42",
  "trx_id": "c3a758cd95139285467a16641ebd95b34573280a",
  "trx_in_block": 25,
  "virtual_op": 0
}
2019/02/22 17:00:33
authorchbartist
permlinkwhat-is-the-relation-between-obsession-and-revelation-a-key-to-success
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575810/Trx f29ef9cb547d0ef2d7e4a40a14cdb02750194ad8
View Raw JSON Data
{
  "block": 30575810,
  "op": [
    "vote",
    {
      "author": "chbartist",
      "permlink": "what-is-the-relation-between-obsession-and-revelation-a-key-to-success",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:00:33",
  "trx_id": "f29ef9cb547d0ef2d7e4a40a14cdb02750194ad8",
  "trx_in_block": 33,
  "virtual_op": 0
}
azokupvoted (100.00%) @sbsparts / music-and-fire
2019/02/22 17:00:27
authorsbsparts
permlinkmusic-and-fire
voterazok
weight10000 (100.00%)
Transaction InfoBlock #30575808/Trx a9c28a4c16d49aa3cf6571dd44ae6b62e45e8ee4
View Raw JSON Data
{
  "block": 30575808,
  "op": [
    "vote",
    {
      "author": "sbsparts",
      "permlink": "music-and-fire",
      "voter": "azok",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-22T17:00:27",
  "trx_id": "a9c28a4c16d49aa3cf6571dd44ae6b62e45e8ee4",
  "trx_in_block": 28,
  "virtual_op": 0
}

Account Metadata

POSTING JSON METADATA
profile{"cover_image":"http://www.webdesigntrends.us/wp-content/uploads/2018/07/After-Free-Basics-Facebook-Tests-express-Wi-fi-in-India.jpg","profile_image":"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRzyGm4_xCynYWJiYGlitgWsakeKN1gCe_qui6WCLaRo3tWPCbDOck6","name":"AZOK"}
JSON METADATA
profile{"cover_image":"http://www.webdesigntrends.us/wp-content/uploads/2018/07/After-Free-Basics-Facebook-Tests-express-Wi-fi-in-India.jpg","profile_image":"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRzyGm4_xCynYWJiYGlitgWsakeKN1gCe_qui6WCLaRo3tWPCbDOck6","name":"AZOK"}
{
  "posting_json_metadata": {
    "profile": {
      "cover_image": "http://www.webdesigntrends.us/wp-content/uploads/2018/07/After-Free-Basics-Facebook-Tests-express-Wi-fi-in-India.jpg",
      "profile_image": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRzyGm4_xCynYWJiYGlitgWsakeKN1gCe_qui6WCLaRo3tWPCbDOck6",
      "name": "AZOK"
    }
  },
  "json_metadata": {
    "profile": {
      "cover_image": "http://www.webdesigntrends.us/wp-content/uploads/2018/07/After-Free-Basics-Facebook-Tests-express-Wi-fi-in-India.jpg",
      "profile_image": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRzyGm4_xCynYWJiYGlitgWsakeKN1gCe_qui6WCLaRo3tWPCbDOck6",
      "name": "AZOK"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM4y5eQutbX1Sm8J2Nqs9qoDbVwBwtwAJFo9ZEaBMeYfacEEMoHn1/1
Active
Single Signature
Public Keys
STM7nNVivNcHteMQKk87kCMzmrMvBvTw4S8FVs8Jmu1fEv1yyGNW41/1
Posting
Single Signature
Public Keys
STM7Qe24g1gQWuPCtQUfWWFjj2kuqHLbokChQDHXrTS42hd3u9Wek1/1
App Permissions
Memo
STM5qJTfMW3fQWCa56RbyPmWvYkVJiV2jRSksTmv74qkgTb5WYHZy
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM4y5eQutbX1Sm8J2Nqs9qoDbVwBwtwAJFo9ZEaBMeYfacEEMoHn",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM7nNVivNcHteMQKk87kCMzmrMvBvTw4S8FVs8Jmu1fEv1yyGNW4",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [
      [
        "drugwars.app",
        1
      ]
    ],
    "key_auths": [
      [
        "STM7Qe24g1gQWuPCtQUfWWFjj2kuqHLbokChQDHXrTS42hd3u9Wek",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM5qJTfMW3fQWCa56RbyPmWvYkVJiV2jRSksTmv74qkgTb5WYHZy"
}

Witness Votes

0 / 30
No active witness votes.
[]