Ecoer Logo
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS85.94%
Net Worth
0.187USD
STEEM
0.001STEEM
SBD
0.014SBD
Effective Power
5.007SP
├── Own SP
3.110SP
└── Incoming Deleg
+1.897SP

Detailed Balance

STEEM
balance
0.001STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
3.110SP
Delegated Out
0.000SP
Delegation In
1.897SP
Effective Power
5.007SP
Reward SP (pending)
0.000SP
SBD
sbd_balance
0.014SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.000SBD
{
  "balance": "0.001 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "5058.043308 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "3085.616498 VESTS",
  "sbd_balance": "0.014 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.000 SBD",
  "conversions": []
}

Account Info

namestricker
id1152264
rank629,619
reputation34668534344
created2018-10-11T20:28:33
recovery_accountsteem
proxyNone
post_count8
comment_count0
lifetime_vote_count0
witnesses_voted_for1
last_post2018-10-20T19:23:06
last_root_post2018-10-19T00:06:36
last_vote_time2018-12-11T01:17:15
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.001 STEEM
savings_balance0.000 STEEM
sbd_balance0.014 SBD
savings_sbd_balance0.000 SBD
vesting_shares5058.043308 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares3085.616498 VESTS
reward_vesting_balance0.000000 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_update2018-10-12T14:54:39
minedNo
sbd_seconds0
sbd_last_interest_payment2019-02-17T08:08:33
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "id": 1152264,
  "name": "stricker",
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7Dn3VYh2HQkb2t1Z24RJufjgch2N43vtJZQfHuMECQWHkEVM65",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6RwjDJ5yK1FqV2asuD9Z5rRToFm29wrRq2QcV42YCMH5N75psJ",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [
      [
        "partiko-steemcon",
        1
      ]
    ],
    "key_auths": [
      [
        "STM5XosSp2fzRffNYArWdcbNAVgQkaADTjVPVApbt5ZXVUzdd2NWZ",
        1
      ]
    ]
  },
  "memo_key": "STM7PqXMjPTXSQCJD5F9U94PfMmuYjF3XHLk1RbMR85xLHPn4SDT6",
  "json_metadata": "{\"profile\":{\"cover_image\":\"https://cdn.steemitimages.com/DQme33eyhKUpKFV3tYdUF4DpxS12ChSgTMqDymBdJG8Ffb8/steve-halama-698056-unsplash.jpg\",\"profile_image\":\"https://cdn.steemitimages.com/DQme9hW7eCNxDfSFnrm17ReMfhTUa9hwb9gda4Dju7zMnuR/avatar.jpg\",\"name\":\"Stricker\",\"location\":\"Ciudad de Mexico, Mexico\"}}",
  "posting_json_metadata": "{\"profile\":{\"cover_image\":\"https://cdn.steemitimages.com/DQme33eyhKUpKFV3tYdUF4DpxS12ChSgTMqDymBdJG8Ffb8/steve-halama-698056-unsplash.jpg\",\"profile_image\":\"https://cdn.steemitimages.com/DQme9hW7eCNxDfSFnrm17ReMfhTUa9hwb9gda4Dju7zMnuR/avatar.jpg\",\"name\":\"Stricker\",\"location\":\"Ciudad de Mexico, Mexico\"}}",
  "proxy": "",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_account_update": "2018-10-12T14:54:39",
  "created": "2018-10-11T20:28:33",
  "mined": false,
  "recovery_account": "steem",
  "last_account_recovery": "1970-01-01T00:00:00",
  "reset_account": "null",
  "comment_count": 0,
  "lifetime_vote_count": 0,
  "post_count": 8,
  "can_vote": true,
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779087504
  },
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779087504
  },
  "voting_power": 0,
  "balance": "0.001 STEEM",
  "savings_balance": "0.000 STEEM",
  "sbd_balance": "0.014 SBD",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "2019-02-17T08:08:33",
  "sbd_last_interest_payment": "2019-02-17T08:08:33",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "reward_sbd_balance": "0.000 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "0.000000 VESTS",
  "reward_vesting_steem": "0.000 STEEM",
  "vesting_shares": "5058.043308 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "3085.616498 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "withdrawn": 0,
  "to_withdraw": 0,
  "withdraw_routes": 0,
  "curation_rewards": 0,
  "posting_rewards": 2523,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "witnesses_voted_for": 1,
  "last_post": "2018-10-20T19:23:06",
  "last_root_post": "2018-10-19T00:06:36",
  "last_vote_time": "2018-12-11T01:17:15",
  "post_bandwidth": 0,
  "pending_claimed_accounts": 0,
  "vesting_balance": "0.000 STEEM",
  "reputation": "34668534344",
  "transfer_history": [],
  "market_history": [],
  "post_history": [],
  "vote_history": [],
  "other_history": [],
  "witness_votes": [
    "steemitboard"
  ],
  "tags_usage": [],
  "guest_bloggers": [],
  "rank": 629619
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 1.897 SP to @stricker
2026/05/18 06:58:24
delegatorsteem
delegateestricker
vesting shares3085.616498 VESTS
Transaction InfoBlock #106151478/Trx c2e980e229b4aeafb70733b70ad63df0abcbcdcd
View Raw JSON Data
{
  "trx_id": "c2e980e229b4aeafb70733b70ad63df0abcbcdcd",
  "block": 106151478,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-18T06:58:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "3085.616498 VESTS"
    }
  ]
}
steemdelegated 1.002 SP to @stricker
2026/05/13 07:09:09
delegatorsteem
delegateestricker
vesting shares1629.434820 VESTS
Transaction InfoBlock #106008409/Trx 3420438b868f0382d9302aaf8016763fd11e3675
View Raw JSON Data
{
  "trx_id": "3420438b868f0382d9302aaf8016763fd11e3675",
  "block": 106008409,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-13T07:09:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "1629.434820 VESTS"
    }
  ]
}
steemdelegated 1.905 SP to @stricker
2026/04/26 06:09:09
delegatorsteem
delegateestricker
vesting shares3098.132254 VESTS
Transaction InfoBlock #105518943/Trx a7aaf660197914f83cb1ba04cedfe6b1089cff0e
View Raw JSON Data
{
  "trx_id": "a7aaf660197914f83cb1ba04cedfe6b1089cff0e",
  "block": 105518943,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-04-26T06:09:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "3098.132254 VESTS"
    }
  ]
}
steemdelegated 1.071 SP to @stricker
2023/11/14 12:42:18
delegatorsteem
delegateestricker
vesting shares1741.904685 VESTS
Transaction InfoBlock #79873790/Trx 0434b8bc612a24e7570c4c67f2e2c157f264df75
View Raw JSON Data
{
  "trx_id": "0434b8bc612a24e7570c4c67f2e2c157f264df75",
  "block": 79873790,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-11-14T12:42:18",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "1741.904685 VESTS"
    }
  ]
}
steemdelegated 2.266 SP to @stricker
2023/09/22 11:12:09
delegatorsteem
delegateestricker
vesting shares3685.214427 VESTS
Transaction InfoBlock #78363834/Trx be49f96bc5fd981534cdf03e077d2cba4506b6ad
View Raw JSON Data
{
  "trx_id": "be49f96bc5fd981534cdf03e077d2cba4506b6ad",
  "block": 78363834,
  "trx_in_block": 14,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-09-22T11:12:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "3685.214427 VESTS"
    }
  ]
}
steemdelegated 2.402 SP to @stricker
2022/11/03 18:34:06
delegatorsteem
delegateestricker
vesting shares3907.265865 VESTS
Transaction InfoBlock #69121459/Trx 9ffa1860447db7608e8f7443df5451a952286e0c
View Raw JSON Data
{
  "trx_id": "9ffa1860447db7608e8f7443df5451a952286e0c",
  "block": 69121459,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-11-03T18:34:06",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "3907.265865 VESTS"
    }
  ]
}
steemdelegated 2.538 SP to @stricker
2022/01/17 23:41:51
delegatorsteem
delegateestricker
vesting shares4127.373466 VESTS
Transaction InfoBlock #60824628/Trx cee86361148f4567b2ad596befa9b6aeef0e5c0b
View Raw JSON Data
{
  "trx_id": "cee86361148f4567b2ad596befa9b6aeef0e5c0b",
  "block": 60824628,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-01-17T23:41:51",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "4127.373466 VESTS"
    }
  ]
}
steemdelegated 2.651 SP to @stricker
2021/06/14 06:51:00
delegatorsteem
delegateestricker
vesting shares4311.567754 VESTS
Transaction InfoBlock #54614913/Trx 872463fd10bdd7fe7483b6355473aa80e9ec62fd
View Raw JSON Data
{
  "trx_id": "872463fd10bdd7fe7483b6355473aa80e9ec62fd",
  "block": 54614913,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2021-06-14T06:51:00",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "4311.567754 VESTS"
    }
  ]
}
steemdelegated 2.766 SP to @stricker
2020/12/11 17:02:45
delegatorsteem
delegateestricker
vesting shares4498.989728 VESTS
Transaction InfoBlock #49362158/Trx b7b5418940558e36549408e5b3c53a4f7d65d59b
View Raw JSON Data
{
  "trx_id": "b7b5418940558e36549408e5b3c53a4f7d65d59b",
  "block": 49362158,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-11T17:02:45",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "4498.989728 VESTS"
    }
  ]
}
steemdelegated 1.176 SP to @stricker
2020/12/06 10:38:03
delegatorsteem
delegateestricker
vesting shares1912.543513 VESTS
Transaction InfoBlock #49213670/Trx 1da749c033aaf042a2b53fa235e450cc445c6349
View Raw JSON Data
{
  "trx_id": "1da749c033aaf042a2b53fa235e450cc445c6349",
  "block": 49213670,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-06T10:38:03",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "1912.543513 VESTS"
    }
  ]
}
steemdelegated 2.770 SP to @stricker
2020/12/05 20:40:33
delegatorsteem
delegateestricker
vesting shares4505.197582 VESTS
Transaction InfoBlock #49197244/Trx dfe0b3fe5c69e796f0fece8de7ec88b90708c61d
View Raw JSON Data
{
  "trx_id": "dfe0b3fe5c69e796f0fece8de7ec88b90708c61d",
  "block": 49197244,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-05T20:40:33",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "4505.197582 VESTS"
    }
  ]
}
steemdelegated 1.181 SP to @stricker
2020/11/03 03:58:30
delegatorsteem
delegateestricker
vesting shares1920.017158 VESTS
Transaction InfoBlock #48272327/Trx 1e5eaae5171354a145a51713f2e5f6a8e868033d
View Raw JSON Data
{
  "trx_id": "1e5eaae5171354a145a51713f2e5f6a8e868033d",
  "block": 48272327,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-11-03T03:58:30",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "1920.017158 VESTS"
    }
  ]
}
steemdelegated 2.895 SP to @stricker
2020/05/09 11:41:57
delegatorsteem
delegateestricker
vesting shares4708.002941 VESTS
Transaction InfoBlock #43224014/Trx df8a227a62e3550ec660385a49ce86670de6bec1
View Raw JSON Data
{
  "trx_id": "df8a227a62e3550ec660385a49ce86670de6bec1",
  "block": 43224014,
  "trx_in_block": 27,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-09T11:41:57",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "4708.002941 VESTS"
    }
  ]
}
steemdelegated 1.201 SP to @stricker
2020/05/08 16:11:21
delegatorsteem
delegateestricker
vesting shares1953.311140 VESTS
Transaction InfoBlock #43201159/Trx 66b5a4afdd770220da4022e26383292555fddb26
View Raw JSON Data
{
  "trx_id": "66b5a4afdd770220da4022e26383292555fddb26",
  "block": 43201159,
  "trx_in_block": 28,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-08T16:11:21",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "1953.311140 VESTS"
    }
  ]
}
steemdelegated 2.924 SP to @stricker
2020/02/09 02:05:39
delegatorsteem
delegateestricker
vesting shares4755.740761 VESTS
Transaction InfoBlock #40655794/Trx b1b4b7406e05351d522f18b39005f6365f9785ec
View Raw JSON Data
{
  "trx_id": "b1b4b7406e05351d522f18b39005f6365f9785ec",
  "block": 40655794,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-02-09T02:05:39",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "4755.740761 VESTS"
    }
  ]
}
2019/10/11 20:50:12
parent authorstricker
parent permlinkhow-to-create-a-blockchain-with-javascript
authorsteemitboard
permlinksteemitboard-notify-stricker-20191011t205011000z
title
bodyCongratulations @stricker! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@stricker/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/@stricker) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=stricker)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemfest/@steemitboard/the-new-steemfest-badge-is-ready"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmRUkELn2Fd13pWFkmWU2wBMMx39EBX5V3cHBEZ2d7f3Ve/image.png"></a></td><td><a href="https://steemit.com/steemfest/@steemitboard/the-new-steemfest-badge-is-ready">The new SteemFest⁴ badge is ready</a></td></tr></table> > You can upvote this notification to help all Steem users. Learn how [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #37200165/Trx 6067cd7db1c2f9ea11ee11c737c2c6f97087136b
View Raw JSON Data
{
  "trx_id": "6067cd7db1c2f9ea11ee11c737c2c6f97087136b",
  "block": 37200165,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-10-11T20:50:12",
  "op": [
    "comment",
    {
      "parent_author": "stricker",
      "parent_permlink": "how-to-create-a-blockchain-with-javascript",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-stricker-20191011t205011000z",
      "title": "",
      "body": "Congratulations @stricker! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@stricker/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/@stricker) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=stricker)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemfest/@steemitboard/the-new-steemfest-badge-is-ready\"><img src=\"https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmRUkELn2Fd13pWFkmWU2wBMMx39EBX5V3cHBEZ2d7f3Ve/image.png\"></a></td><td><a href=\"https://steemit.com/steemfest/@steemitboard/the-new-steemfest-badge-is-ready\">The new SteemFest⁴  badge is ready</a></td></tr></table>\n\n> You can upvote this notification to help all Steem users. Learn how [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
steemdelegated 3.045 SP to @stricker
2019/03/12 01:40:24
delegatorsteem
delegateestricker
vesting shares4952.054034 VESTS
Transaction InfoBlock #31075456/Trx 905b83c59532fae322ac6738392bc04ccf37b416
View Raw JSON Data
{
  "trx_id": "905b83c59532fae322ac6738392bc04ccf37b416",
  "block": 31075456,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-03-12T01:40:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "4952.054034 VESTS"
    }
  ]
}
crypto-n-custardsent 0.001 SBD to @stricker- "Get a 0.1-0.5 SBD upvote and resteem - Send 0.25 SBD or STEEM to @crypto-n-custard, put your post's url in the memo - Upvote covers your costs - Have a great day and follow us for more promotional spe..."
2019/02/17 08:08:33
fromcrypto-n-custard
tostricker
amount0.001 SBD
memoGet a 0.1-0.5 SBD upvote and resteem - Send 0.25 SBD or STEEM to @crypto-n-custard, put your post's url in the memo - Upvote covers your costs - Have a great day and follow us for more promotional specials
Transaction InfoBlock #30421279/Trx 35639969aca1e7b09f6907581b7885acd481a98f
View Raw JSON Data
{
  "trx_id": "35639969aca1e7b09f6907581b7885acd481a98f",
  "block": 30421279,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-02-17T08:08:33",
  "op": [
    "transfer",
    {
      "from": "crypto-n-custard",
      "to": "stricker",
      "amount": "0.001 SBD",
      "memo": "Get a 0.1-0.5 SBD upvote and resteem - Send 0.25 SBD or STEEM to @crypto-n-custard, put your post's url in the memo - Upvote covers your costs - Have a great day and follow us for more promotional specials"
    }
  ]
}
aro.steemsent 0.001 STEEM to @stricker- "💧 1 ETH award Ethereum Smart Contract Lottery, Support Me and Join,, Thank u! https://www.etherdrop.app"
2019/02/05 14:36:12
fromaro.steem
tostricker
amount0.001 STEEM
memo💧 1 ETH award Ethereum Smart Contract Lottery, Support Me and Join,, Thank u! https://www.etherdrop.app
Transaction InfoBlock #30083694/Trx 58ad4ab3debcf7407fee8e990e4dfe01c61348c7
View Raw JSON Data
{
  "trx_id": "58ad4ab3debcf7407fee8e990e4dfe01c61348c7",
  "block": 30083694,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-02-05T14:36:12",
  "op": [
    "transfer",
    {
      "from": "aro.steem",
      "to": "stricker",
      "amount": "0.001 STEEM",
      "memo": "💧 1 ETH award Ethereum Smart Contract Lottery, Support Me and Join,, Thank u! https://www.etherdrop.app"
    }
  ]
}
2018/12/11 01:17:15
voterstricker
authorelianaahc
permlinkpatron-a-new-digital-marketing-alternative
weight10000 (100.00%)
Transaction InfoBlock #28456300/Trx 208822c08634379e00a4a6c1753ed2b6294b4994
View Raw JSON Data
{
  "trx_id": "208822c08634379e00a4a6c1753ed2b6294b4994",
  "block": 28456300,
  "trx_in_block": 25,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-11T01:17:15",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "elianaahc",
      "permlink": "patron-a-new-digital-marketing-alternative",
      "weight": 10000
    }
  ]
}
2018/12/11 01:16:45
voterstricker
authorhatu
permlinkeos-gaming-for-the-community-dividends-pvp-auctions-and-more-free-steem-and-eos
weight10000 (100.00%)
Transaction InfoBlock #28456290/Trx a7259571e2963bbbc5de22b1660b7c3192a51347
View Raw JSON Data
{
  "trx_id": "a7259571e2963bbbc5de22b1660b7c3192a51347",
  "block": 28456290,
  "trx_in_block": 26,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-11T01:16:45",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "hatu",
      "permlink": "eos-gaming-for-the-community-dividends-pvp-auctions-and-more-free-steem-and-eos",
      "weight": 10000
    }
  ]
}
2018/12/11 01:14:06
voterstricker
authoraggroed
permlinkminnow-mayor-town-hall-starts-in-15-min
weight10000 (100.00%)
Transaction InfoBlock #28456237/Trx fd33d8f4e2f46bef71ab183e20be9a17a5611e08
View Raw JSON Data
{
  "trx_id": "fd33d8f4e2f46bef71ab183e20be9a17a5611e08",
  "block": 28456237,
  "trx_in_block": 25,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-11T01:14:06",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "aggroed",
      "permlink": "minnow-mayor-town-hall-starts-in-15-min",
      "weight": 10000
    }
  ]
}
2018/12/11 01:13:42
voterstricker
authorgeekpowered
permlinkif-we-want-to-succeed-we-need-leadership-to-help-us-all-work-together-on-developing-steem-and-the-open-source-projects-running
weight10000 (100.00%)
Transaction InfoBlock #28456229/Trx ba1cc696536a6625e9f1629914f2afc2746c6700
View Raw JSON Data
{
  "trx_id": "ba1cc696536a6625e9f1629914f2afc2746c6700",
  "block": 28456229,
  "trx_in_block": 39,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-11T01:13:42",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "geekpowered",
      "permlink": "if-we-want-to-succeed-we-need-leadership-to-help-us-all-work-together-on-developing-steem-and-the-open-source-projects-running",
      "weight": 10000
    }
  ]
}
2018/12/11 01:13:00
voterstricker
authorpartiko
permlinkpartiko-weekly-report-12--from-airbnb-to-partiko-6xkvfnkj
weight10000 (100.00%)
Transaction InfoBlock #28456215/Trx d9d89c8cf073d74f119bff04bee18458dfd2b56b
View Raw JSON Data
{
  "trx_id": "d9d89c8cf073d74f119bff04bee18458dfd2b56b",
  "block": 28456215,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-11T01:13:00",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "partiko",
      "permlink": "partiko-weekly-report-12--from-airbnb-to-partiko-6xkvfnkj",
      "weight": 10000
    }
  ]
}
2018/12/10 02:52:30
required auths[]
required posting auths["stricker"]
idfollow
json["follow",{"follower":"stricker","following":"steemitdev","what":["blog"]}]
Transaction InfoBlock #28429421/Trx 5b96646b5538f7ec98b5173dba608886c9935fb1
View Raw JSON Data
{
  "trx_id": "5b96646b5538f7ec98b5173dba608886c9935fb1",
  "block": 28429421,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-10T02:52:30",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "stricker"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"stricker\",\"following\":\"steemitdev\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/12/10 02:51:42
voterstricker
authorsteemitdev
permlinkupcoming-changes-to-api-steemit-com
weight10000 (100.00%)
Transaction InfoBlock #28429405/Trx fa5c21fda69905d6042f81360f0fde153212bf4d
View Raw JSON Data
{
  "trx_id": "fa5c21fda69905d6042f81360f0fde153212bf4d",
  "block": 28429405,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-10T02:51:42",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "steemitdev",
      "permlink": "upcoming-changes-to-api-steemit-com",
      "weight": 10000
    }
  ]
}
2018/11/30 01:03:57
voterstricker
authorstellabelle
permlinkpartiko-ios-update-is-live-7cx7yqdb
weight10000 (100.00%)
Transaction InfoBlock #28139386/Trx fd25a5861d562398e3869144f10a9ccb79bb4d0f
View Raw JSON Data
{
  "trx_id": "fd25a5861d562398e3869144f10a9ccb79bb4d0f",
  "block": 28139386,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-11-30T01:03:57",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "stellabelle",
      "permlink": "partiko-ios-update-is-live-7cx7yqdb",
      "weight": 10000
    }
  ]
}
steemdelegated 15.465 SP to @stricker
2018/11/26 19:37:21
delegatorsteem
delegateestricker
vesting shares25151.718820 VESTS
Transaction InfoBlock #28046488/Trx 26fa6608956769796a9995c0a44963d5bf6e50f2
View Raw JSON Data
{
  "trx_id": "26fa6608956769796a9995c0a44963d5bf6e50f2",
  "block": 28046488,
  "trx_in_block": 23,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-11-26T19:37:21",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "stricker",
      "vesting_shares": "25151.718820 VESTS"
    }
  ]
}
strickerupvoted (100.00%) @baiboua / tasteem-7f6522
2018/11/26 01:05:06
voterstricker
authorbaiboua
permlinktasteem-7f6522
weight10000 (100.00%)
Transaction InfoBlock #28024251/Trx b8321a74d610918a8333e117d870bd19e7cd82a4
View Raw JSON Data
{
  "trx_id": "b8321a74d610918a8333e117d870bd19e7cd82a4",
  "block": 28024251,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-11-26T01:05:06",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "tasteem-7f6522",
      "weight": 10000
    }
  ]
}
strickerupvoted (100.00%) @baiboua / tasteem-0ab4a1
2018/11/25 02:21:09
voterstricker
authorbaiboua
permlinktasteem-0ab4a1
weight10000 (100.00%)
Transaction InfoBlock #27996985/Trx 5185aa3148216e7b6cb7557158b4f866c3053e0e
View Raw JSON Data
{
  "trx_id": "5185aa3148216e7b6cb7557158b4f866c3053e0e",
  "block": 27996985,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-11-25T02:21:09",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "tasteem-0ab4a1",
      "weight": 10000
    }
  ]
}
strickerupvoted (100.00%) @baiboua / 9mqndych
2018/11/25 02:20:57
voterstricker
authorbaiboua
permlink9mqndych
weight10000 (100.00%)
Transaction InfoBlock #27996981/Trx 4ca4809c05a80874673bd8626a7de31cd637384d
View Raw JSON Data
{
  "trx_id": "4ca4809c05a80874673bd8626a7de31cd637384d",
  "block": 27996981,
  "trx_in_block": 13,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-11-25T02:20:57",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "9mqndych",
      "weight": 10000
    }
  ]
}
strickerupvoted (100.00%) @baiboua / xbkywd47
2018/11/25 02:17:21
voterstricker
authorbaiboua
permlinkxbkywd47
weight10000 (100.00%)
Transaction InfoBlock #27996909/Trx 9645dc187a8ac921be5045126a4d72762e4549d2
View Raw JSON Data
{
  "trx_id": "9645dc187a8ac921be5045126a4d72762e4549d2",
  "block": 27996909,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-11-25T02:17:21",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "xbkywd47",
      "weight": 10000
    }
  ]
}
2018/11/25 02:15:57
voterstricker
authorpartiko
permlinkannouncing-the-partiko-delegation-plan-dp3ywzww
weight10000 (100.00%)
Transaction InfoBlock #27996881/Trx 161cfdbe8ce7b81b64cfea5f9179fafcc6fdabe2
View Raw JSON Data
{
  "trx_id": "161cfdbe8ce7b81b64cfea5f9179fafcc6fdabe2",
  "block": 27996881,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-11-25T02:15:57",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "partiko",
      "permlink": "announcing-the-partiko-delegation-plan-dp3ywzww",
      "weight": 10000
    }
  ]
}
2018/11/19 00:56:21
votershredz7
authorstricker
permlinkhow-to-create-a-blockchain-with-javascript
weight10000 (100.00%)
Transaction InfoBlock #27822575/Trx fac8ac73d01529fb9e44602748966a1ea36c618a
View Raw JSON Data
{
  "trx_id": "fac8ac73d01529fb9e44602748966a1ea36c618a",
  "block": 27822575,
  "trx_in_block": 41,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-11-19T00:56:21",
  "op": [
    "vote",
    {
      "voter": "shredz7",
      "author": "stricker",
      "permlink": "how-to-create-a-blockchain-with-javascript",
      "weight": 10000
    }
  ]
}
2018/11/11 00:41:54
voterstricker
authorjrvacation
permlinksteemfest3keytakeaways-05gqa4qhbo
weight10000 (100.00%)
Transaction InfoBlock #27592054/Trx cbd112b72078670b6879589b2db91be8dd72d63c
View Raw JSON Data
{
  "trx_id": "cbd112b72078670b6879589b2db91be8dd72d63c",
  "block": 27592054,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-11-11T00:41:54",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "jrvacation",
      "permlink": "steemfest3keytakeaways-05gqa4qhbo",
      "weight": 10000
    }
  ]
}
strickerupvoted (100.00%) @baiboua / 0nhtfw8u
2018/10/30 13:41:33
voterstricker
authorbaiboua
permlink0nhtfw8u
weight10000 (100.00%)
Transaction InfoBlock #27262282/Trx 8517d01024866644ad71d1b0b0a7bd9c5dae55ef
View Raw JSON Data
{
  "trx_id": "8517d01024866644ad71d1b0b0a7bd9c5dae55ef",
  "block": 27262282,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-30T13:41:33",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "0nhtfw8u",
      "weight": 10000
    }
  ]
}
2018/10/26 15:31:06
voterstricker
authorbaiboua
permlinksteemit-fqwputpy
weight10000 (100.00%)
Transaction InfoBlock #27149356/Trx dc13ffb552db11a96893ae4b685796eb8bc7775a
View Raw JSON Data
{
  "trx_id": "dc13ffb552db11a96893ae4b685796eb8bc7775a",
  "block": 27149356,
  "trx_in_block": 29,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-26T15:31:06",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "steemit-fqwputpy",
      "weight": 10000
    }
  ]
}
2018/10/26 02:40:42
parent authorstricker
parent permlinkhow-to-create-a-blockchain-with-javascript
authorsteemitboard
permlinksteemitboard-notify-stricker-20181026t024044000z
title
bodyCongratulations @stricker! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) : <table><tr><td>https://steemitimages.com/60x60/http://steemitboard.com/notifications/firstpayout.png</td><td>You got your First payout</td></tr> </table> <sub>_[Click here to view your Board of Honor](https://steemitboard.com/@stricker)_</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemitboard/@steemitboard/steemitboard-notifications-improved"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/NgygYH.png"></a></td><td><a href="https://steemit.com/steemitboard/@steemitboard/steemitboard-notifications-improved">SteemitBoard notifications improved</a></td></tr></table> > You can upvote this notification to help all Steemit users. Learn why [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #27133958/Trx 7062119ffe23de8eb232e5c5750e2736134cf03d
View Raw JSON Data
{
  "trx_id": "7062119ffe23de8eb232e5c5750e2736134cf03d",
  "block": 27133958,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-26T02:40:42",
  "op": [
    "comment",
    {
      "parent_author": "stricker",
      "parent_permlink": "how-to-create-a-blockchain-with-javascript",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-stricker-20181026t024044000z",
      "title": "",
      "body": "Congratulations @stricker! 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/60x60/http://steemitboard.com/notifications/firstpayout.png</td><td>You got your First payout</td></tr>\n</table>\n\n<sub>_[Click here to view your Board of Honor](https://steemitboard.com/@stricker)_</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemitboard/@steemitboard/steemitboard-notifications-improved\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/NgygYH.png\"></a></td><td><a href=\"https://steemit.com/steemitboard/@steemitboard/steemitboard-notifications-improved\">SteemitBoard notifications improved</a></td></tr></table>\n\n> You can upvote this notification to help all Steemit users. Learn why [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
2018/10/25 14:34:09
voterstricker
authorstricker
permlinkhow-to-create-a-blockchain-with-javascript
weight10000 (100.00%)
Transaction InfoBlock #27119437/Trx bd249291714cab7f8a3f9a3928c717cea43bfdae
View Raw JSON Data
{
  "trx_id": "bd249291714cab7f8a3f9a3928c717cea43bfdae",
  "block": 27119437,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-25T14:34:09",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "stricker",
      "permlink": "how-to-create-a-blockchain-with-javascript",
      "weight": 10000
    }
  ]
}
2018/10/25 14:06:30
voterstricker
authorbaiboua
permlinkgreen-photography-contest-3-697244912d97eest
weight10000 (100.00%)
Transaction InfoBlock #27118884/Trx 3cae4bfa7980e61a1d551f5b531e2d94ec4f94e4
View Raw JSON Data
{
  "trx_id": "3cae4bfa7980e61a1d551f5b531e2d94ec4f94e4",
  "block": 27118884,
  "trx_in_block": 13,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-25T14:06:30",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "green-photography-contest-3-697244912d97eest",
      "weight": 10000
    }
  ]
}
strickerclaimed reward balance: 3.089 SP
2018/10/25 14:04:51
accountstricker
reward steem0.000 STEEM
reward sbd0.000 SBD
reward vests5023.733116 VESTS
Transaction InfoBlock #27118851/Trx 891a193a890e9d2e67fa4bc3d7ffb511c7c03480
View Raw JSON Data
{
  "trx_id": "891a193a890e9d2e67fa4bc3d7ffb511c7c03480",
  "block": 27118851,
  "trx_in_block": 11,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-25T14:04:51",
  "op": [
    "claim_reward_balance",
    {
      "account": "stricker",
      "reward_steem": "0.000 STEEM",
      "reward_sbd": "0.000 SBD",
      "reward_vests": "5023.733116 VESTS"
    }
  ]
}
2018/10/25 04:18:24
authorstricker
permlinkcomo-crear-un-blockchain-con-javascript-y-nodejs
sbd payout0.000 SBD
steem payout0.000 STEEM
vesting payout5023.733116 VESTS
Transaction InfoBlock #27107135/Virtual Operation #4
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 27107135,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 4,
  "timestamp": "2018-10-25T04:18:24",
  "op": [
    "author_reward",
    {
      "author": "stricker",
      "permlink": "como-crear-un-blockchain-con-javascript-y-nodejs",
      "sbd_payout": "0.000 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "5023.733116 VESTS"
    }
  ]
}
2018/10/24 19:23:27
voterstricker
authorsteemanchor
permlinkstellarx-lists-steem-and-sbd
weight10000 (100.00%)
Transaction InfoBlock #27096449/Trx d37e6325a9fb87c80c64b168a58c1177a3e6c9f2
View Raw JSON Data
{
  "trx_id": "d37e6325a9fb87c80c64b168a58c1177a3e6c9f2",
  "block": 27096449,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-24T19:23:27",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "steemanchor",
      "permlink": "stellarx-lists-steem-and-sbd",
      "weight": 10000
    }
  ]
}
2018/10/23 12:26:03
voterstricker
authorbaiboua
permlinkgreen-photography-contest-1-xxbq89hp
weight10000 (100.00%)
Transaction InfoBlock #27059335/Trx 3a1650186f704abb54fa8124a0ec340fdc4fc431
View Raw JSON Data
{
  "trx_id": "3a1650186f704abb54fa8124a0ec340fdc4fc431",
  "block": 27059335,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-23T12:26:03",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "green-photography-contest-1-xxbq89hp",
      "weight": 10000
    }
  ]
}
2018/10/22 00:09:45
voterstricker
authortherealwolf
permlink7-hours-left
weight10000 (100.00%)
Transaction InfoBlock #27015830/Trx c090abf39be041f3d0133a245e09a50809a0b005
View Raw JSON Data
{
  "trx_id": "c090abf39be041f3d0133a245e09a50809a0b005",
  "block": 27015830,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-22T00:09:45",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "therealwolf",
      "permlink": "7-hours-left",
      "weight": 10000
    }
  ]
}
2018/10/20 19:23:30
voterstricker
authorbaiboua
permlinkportrait-photography-contest-day-4-d43531a3eecf4est
weight10000 (100.00%)
Transaction InfoBlock #26981336/Trx 3248ea7a421eeacd8c544ce52e00a54fd645610f
View Raw JSON Data
{
  "trx_id": "3248ea7a421eeacd8c544ce52e00a54fd645610f",
  "block": 26981336,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-20T19:23:30",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "portrait-photography-contest-day-4-d43531a3eecf4est",
      "weight": 10000
    }
  ]
}
2018/10/20 19:23:06
parent authorrtranslator
parent permlinkwhat-really-annoys-you
authorstricker
permlinkstricker-re-rtranslator-what-really-annoys-you-20181020t192304928z
title
body Posted using [Partiko Android](https://steemit.com/@partiko-android)
json metadata{"app":"partiko"}
Transaction InfoBlock #26981328/Trx c761c725dac84764b19ed32b49c951988adec05a
View Raw JSON Data
{
  "trx_id": "c761c725dac84764b19ed32b49c951988adec05a",
  "block": 26981328,
  "trx_in_block": 15,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-20T19:23:06",
  "op": [
    "comment",
    {
      "parent_author": "rtranslator",
      "parent_permlink": "what-really-annoys-you",
      "author": "stricker",
      "permlink": "stricker-re-rtranslator-what-really-annoys-you-20181020t192304928z",
      "title": "",
      "body": "\n\nPosted using [Partiko Android](https://steemit.com/@partiko-android)",
      "json_metadata": "{\"app\":\"partiko\"}"
    }
  ]
}
2018/10/20 19:22:42
voterstricker
authorrtranslator
permlinkwhat-really-annoys-you
weight10000 (100.00%)
Transaction InfoBlock #26981320/Trx 1ba30b3aaffdd38574e6df250653594e5d29d8fc
View Raw JSON Data
{
  "trx_id": "1ba30b3aaffdd38574e6df250653594e5d29d8fc",
  "block": 26981320,
  "trx_in_block": 26,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-20T19:22:42",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "rtranslator",
      "permlink": "what-really-annoys-you",
      "weight": 10000
    }
  ]
}
2018/10/20 04:41:45
parent authorstricker
parent permlinkhow-to-create-a-blockchain-with-javascript
authorsteemitboard
permlinksteemitboard-notify-stricker-20181020t044146000z
title
body@stricker, thank you for supporting @steemitboard as a witness. [![](https://steemitimages.com/70x70/http://steemitboard.com/notifications/supportboard.png)](http://steemitboard.com/@stricker) Here is a small present to show our gratitude <sub>_Click on the badge to view your Board of Honor._</sub> Once again, thanks for your support! **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemitboard/@steemitboard/steemitboard-ranking-update-resteem-and-resteemed-added"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmfRVpHQhLDhnjDtqck8GPv9NPvNKPfMsDaAFDE1D9Er2Z/header_ranking.png"></a></td><td><a href="https://steemit.com/steemitboard/@steemitboard/steemitboard-ranking-update-resteem-and-resteemed-added">SteemitBoard Ranking update - Resteem and Resteemed added</a></td></tr></table>
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #26963713/Trx f7643db34f93590e4e579176d7131d8c4c91587c
View Raw JSON Data
{
  "trx_id": "f7643db34f93590e4e579176d7131d8c4c91587c",
  "block": 26963713,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-20T04:41:45",
  "op": [
    "comment",
    {
      "parent_author": "stricker",
      "parent_permlink": "how-to-create-a-blockchain-with-javascript",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-stricker-20181020t044146000z",
      "title": "",
      "body": "@stricker, thank you for supporting @steemitboard as a witness.\n\n[![](https://steemitimages.com/70x70/http://steemitboard.com/notifications/supportboard.png)](http://steemitboard.com/@stricker) Here is a small present to show our gratitude\n<sub>_Click on the badge to view your Board of Honor._</sub>\n\nOnce again, thanks for your support!\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemitboard/@steemitboard/steemitboard-ranking-update-resteem-and-resteemed-added\"><img src=\"https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmfRVpHQhLDhnjDtqck8GPv9NPvNKPfMsDaAFDE1D9Er2Z/header_ranking.png\"></a></td><td><a href=\"https://steemit.com/steemitboard/@steemitboard/steemitboard-ranking-update-resteem-and-resteemed-added\">SteemitBoard Ranking update - Resteem and Resteemed added</a></td></tr></table>",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
strickervoted for witness @steemitboard
2018/10/19 13:30:18
accountstricker
witnesssteemitboard
approvetrue
Transaction InfoBlock #26945492/Trx 1dbd90a68e7a30621db23a81cbfc2f52b1c6e9a7
View Raw JSON Data
{
  "trx_id": "1dbd90a68e7a30621db23a81cbfc2f52b1c6e9a7",
  "block": 26945492,
  "trx_in_block": 16,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-19T13:30:18",
  "op": [
    "account_witness_vote",
    {
      "account": "stricker",
      "witness": "steemitboard",
      "approve": true
    }
  ]
}
2018/10/19 13:28:48
required auths[]
required posting auths["stricker"]
idfollow
json["follow",{"follower":"stricker","following":"steemitboard","what":["blog"]}]
Transaction InfoBlock #26945462/Trx 50a2353c37110adb273ed889170347972fed4bf6
View Raw JSON Data
{
  "trx_id": "50a2353c37110adb273ed889170347972fed4bf6",
  "block": 26945462,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-19T13:28:48",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "stricker"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"stricker\",\"following\":\"steemitboard\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/10/19 06:37:39
parent authorstricker
parent permlinkhow-to-create-a-blockchain-with-javascript
authorsteemitboard
permlinksteemitboard-notify-stricker-20181019t063741000z
title
bodyCongratulations @stricker! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) : [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/voted.png)](http://steemitboard.com/@stricker) Award for the number of upvotes received <sub>_Click on the badge to view your Board of Honor._</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> > Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #26937244/Trx 90fd635445a9a2ced0b6a2fe8ca96a6758b37401
View Raw JSON Data
{
  "trx_id": "90fd635445a9a2ced0b6a2fe8ca96a6758b37401",
  "block": 26937244,
  "trx_in_block": 32,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-19T06:37:39",
  "op": [
    "comment",
    {
      "parent_author": "stricker",
      "parent_permlink": "how-to-create-a-blockchain-with-javascript",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-stricker-20181019t063741000z",
      "title": "",
      "body": "Congratulations @stricker! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :\n\n[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/voted.png)](http://steemitboard.com/@stricker) Award for the number of upvotes received\n\n<sub>_Click on the badge to view your Board of Honor._</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\n\n> Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
2018/10/19 01:03:39
votersmartcoins
authorstricker
permlinkhow-to-create-a-blockchain-with-javascript
weight1000 (10.00%)
Transaction InfoBlock #26930568/Trx 6a5912fd58b7f5dd5aed11da12a47567fedfba94
View Raw JSON Data
{
  "trx_id": "6a5912fd58b7f5dd5aed11da12a47567fedfba94",
  "block": 26930568,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-19T01:03:39",
  "op": [
    "vote",
    {
      "voter": "smartcoins",
      "author": "stricker",
      "permlink": "how-to-create-a-blockchain-with-javascript",
      "weight": 1000
    }
  ]
}
2018/10/19 00:55:18
votersensation
authorstricker
permlinkhow-to-create-a-blockchain-with-javascript
weight10000 (100.00%)
Transaction InfoBlock #26930401/Trx 21961889a4ab2f45d03bb8cff14ac67e00cb3d29
View Raw JSON Data
{
  "trx_id": "21961889a4ab2f45d03bb8cff14ac67e00cb3d29",
  "block": 26930401,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-19T00:55:18",
  "op": [
    "vote",
    {
      "voter": "sensation",
      "author": "stricker",
      "permlink": "how-to-create-a-blockchain-with-javascript",
      "weight": 10000
    }
  ]
}
2018/10/19 00:31:45
votercouncil
authorstricker
permlinkhow-to-create-a-blockchain-with-javascript
weight1000 (10.00%)
Transaction InfoBlock #26929930/Trx 53cf4f2dd142049fd2d23cef9b8f29b6aa316c0d
View Raw JSON Data
{
  "trx_id": "53cf4f2dd142049fd2d23cef9b8f29b6aa316c0d",
  "block": 26929930,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-19T00:31:45",
  "op": [
    "vote",
    {
      "voter": "council",
      "author": "stricker",
      "permlink": "how-to-create-a-blockchain-with-javascript",
      "weight": 1000
    }
  ]
}
2018/10/19 00:12:06
parent author
parent permlinkblockchain
authorstricker
permlinkhow-to-create-a-blockchain-with-javascript
titleHow to create a blockchain with javascript.
body@@ -40,16 +40,220 @@ cript.%0A%0A +!%5BBlockchain%5D(https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=dc483803225649c63ce880b4ccab2a27&dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb)%0A%0A A chain
json metadata{"tags":["blockchain","bitcoin","cryptocurrency","crypto","steemit"],"links":["https://github.com/Stricker66/My-Blockchain"],"app":"steemit/0.1","format":"markdown","image":["https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=dc483803225649c63ce880b4ccab2a27&dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb"]}
Transaction InfoBlock #26929537/Trx 8c38df6a9dc35eb2538480c60d1e31fb10be56da
View Raw JSON Data
{
  "trx_id": "8c38df6a9dc35eb2538480c60d1e31fb10be56da",
  "block": 26929537,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-19T00:12:06",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "blockchain",
      "author": "stricker",
      "permlink": "how-to-create-a-blockchain-with-javascript",
      "title": "How to create a blockchain with javascript.",
      "body": "@@ -40,16 +40,220 @@\n cript.%0A%0A\n+!%5BBlockchain%5D(https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=dc483803225649c63ce880b4ccab2a27&dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb)%0A%0A\n A chain \n",
      "json_metadata": "{\"tags\":[\"blockchain\",\"bitcoin\",\"cryptocurrency\",\"crypto\",\"steemit\"],\"links\":[\"https://github.com/Stricker66/My-Blockchain\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://images.unsplash.com/photo-1526628953301-3e589a6a8b74?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=dc483803225649c63ce880b4ccab2a27&dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb\"]}"
    }
  ]
}
2018/10/19 00:06:36
authorstricker
permlinkhow-to-create-a-blockchain-with-javascript
max accepted payout1000000.000 SBD
percent steem dollars0
allow votestrue
allow curation rewardstrue
extensions[]
Transaction InfoBlock #26929427/Trx b3ed7cb688fdb73f94d3cd9d087f7cb13e915b8f
View Raw JSON Data
{
  "trx_id": "b3ed7cb688fdb73f94d3cd9d087f7cb13e915b8f",
  "block": 26929427,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-19T00:06:36",
  "op": [
    "comment_options",
    {
      "author": "stricker",
      "permlink": "how-to-create-a-blockchain-with-javascript",
      "max_accepted_payout": "1000000.000 SBD",
      "percent_steem_dollars": 0,
      "allow_votes": true,
      "allow_curation_rewards": true,
      "extensions": []
    }
  ]
}
2018/10/19 00:06:36
parent author
parent permlinkblockchain
authorstricker
permlinkhow-to-create-a-blockchain-with-javascript
titleHow to create a blockchain with javascript.
body# How to create a blockchain with javascript. A chain of blocks or also known as blockchain is a data structure in which the information is stored in sets (blocks), to which meta information is added relative to another block of the previous chain in a time line, which means that its content can only be edited by modifying all the previous blocks. > In this post we will learn how to create a blockchain with javascript and nodejs. 1.- We will create a folder with the name of our choice in this case we will call it "blockchain", inside it we will create a file that will be called main.js. 2.- Now we will open this folder with the code editor of our preference. ## Well now let's start with the code !! 1.- First we will create a class called Block which will contain a constructor function, we will also create the functions calculateHash, mineBlock, the constructor function will create the instances of the objects of the block and will provide them with their properties. ```javascript class Block { constructor(data) { this.index = 0; this.date = new Date(); this.data = data; this.previousHash = "0"; this.hash = this.calculateHash(); this.nonce = 0; } calculateHash() { } mineBlock(difficulty) { } ``` 2.- We start npm, open the terminal and we are located in our project, now we will only execute the following command and it only remains to configure the project to our liking. ``` $ npm init ``` 3.- Now we are using a npm module called crypto-js, this can be installed with the following command. ``` $ npm install –save crypto-js ``` 4.- Now that the library is installed we will create a constant called SHA265 that requires crypto-js / sha265, this we will use to create the calculation function. ```javascript const SHA256 = require('crypto-js/sha256'); class Block { constructor(data) { this.index = 0; this.date = new Date(); this.data = data; this.previousHash = "0"; this.hash = this.calculateHash(); this.nonce = 0; } calculateHash() { return SHA256(this.index + this.previousHash + this.date + this.data + this.nonce).toString(); } mineBlock(difficulty) { while(!this.hash.startsWith(difficulty)) { this.nonce++; this.hash = this.calculateHash(); } } } ``` - The function calculateHash we will use to give each block its own hash, it takes each piece of the Block object, throws it in a SHA256 function and converts it to a string. - The second mineBlock function will be used to safely process transactions in blockchain networks adding difficulty to the process of generating the hash, in this case the difficulty will be the number of zeros with which the hash will begin. 5.- Now that we create the structure of our individual block, we need to create a structure an object of class Blockchain this will have the following functions, constructor, createGenesis, latestBlock, addBlock, checkValid. - Our Blockchain class needs to have the capacity to create instances, to initiate, access the most recent information of the block and expand by adding a new block. ```javascript class Blockchain { constructor(difficulty = '00') { this.chain = [this.createGenesis()]; this.difficulty = difficulty; } createGenesis() { return new Block(0, {amount: 100}); } latestBlock() { return this.chain[this.chain.length - 1]; } addBlock(newBlock) { newBlock.index = this.latestBlock().index + 1; newBlock.previousHash = this.latestBlock().hash; newBlock.hash = newBlock.calculateHash(); newBlock.mineBlock(this.difficulty); console.log('Mined! '+ newBlock.hash+' with nonce'+ newBlock.nonce); this.chain.push(newBlock); } checkValid() { for (let i = 1; i < this.chain.length; i++) { const currentBlock = this.chain[i]; const previousBlock = this.chain[i - 1]; if (currentBlock.hash !== currentBlock.calculateHash()) { return false; } if (currentBlock.previousHash !== previousBlock.hash) { return false; } } return true; } } ``` 6.- Well let's explain what we did in this code. ### Constructor function. This function creates an instance in our chain of blocks with a property in a list structure, that is why our Block object has indexes this property is used to find its position in our list of chains, it also defines the difficulty of initial mining. ### CreateGenesis function. Our block chain needs the createGenesis function since it creates the first block of our chain. Usually in blockchain the first block of any is known as "Genesis block", that is why the name of createGenesis, normally the information of the genesis block is entered manually. Since it is the first block of the chain, its index will be 0, the date and time will be the current ones, as far as the previous hash will be 0 since there is no other hash that does it. ### LatestBlock function. This function obtains the information of the most recent block and will also be necessary in the following function. ### AddBlock function. In order for our block to have the capacity to extend continuously, it needs this function, the block chains have this functionality, the best known is Bitcoin (BTC), which is responsible for creating new blocks every 10 minutes with the information of the transactions made in It is time frame. Its implementation of the addBlock function is simple, it takes the Block object as an input which has a timestamp and data. Then, our addBlock function will use the latestBlock function to give it an index and a hash before our new block, after that we give it its own hash using the function calculateHash, we will also pass the difficulty of mining defined in the property difficulty, and finally we push this block in our chain, now we have a new block. ### CheckValid function. This function verifies the integrity of the block chain and detects if something has been tampered with. You should know that the hashes are critical to detect changes in our chain since even the smallest change in an object will result in a completely different hash, so this function uses a for loop to traverse the string and try to match its hashes to detect changes. There are 2 parts in our loop the first is to match currentBlock.hash with currentBlock.calculateHash and the second is to match currentBlock.previousHash with previousBlock.hash, the first one is used to check if the currentBlock information has been manipulated without updating currentBlock. hash The second is used to verify if a previous block has been modified. 7.- Finally we will add these lines at the end of our code that add two blocks with data, validate them and show them in the console. - Note: Blockchain class receives the difficulty of mining in this case the difficulty is 3 zeros, the more zeros more difficult will be the mining of the blocks. **Be careful not to add many zeros or your equipment could stop!** ```javascript let myCoin = new Blockchain('000'); myCoin.addBlock(new Block({amount: 50})); myCoin.addBlock(new Block({amount: 25})); console.log("The block chain is valid?", myCoin.checkValid()); ``` 8.- Now our final code will look like this. ```javascript const SHA256 = require('crypto-js/sha256'); class Block { constructor(data) { this.index = 0; this.date = new Date(); this.data = data; this.previousHash = "0"; this.hash = this.calculateHash(); this.nonce = 0; } calculateHash() { return SHA256(this.index + this.previousHash + this.date + this.data + this.nonce).toString(); } mineBlock(difficulty) { while(!this.hash.startsWith(difficulty)) { this.nonce++; this.hash = this.calculateHash(); } } } class Blockchain { constructor(difficulty = '00') { this.chain = [this.createGenesis()]; this.difficulty = difficulty; } createGenesis() { return new Block(0, {amount: 100}); } latestBlock() { return this.chain[this.chain.length - 1]; } addBlock(newBlock) { newBlock.index = this.latestBlock().index + 1; newBlock.previousHash = this.latestBlock().hash; newBlock.hash = newBlock.calculateHash(); newBlock.mineBlock(this.difficulty); console.log('Mined! '+ newBlock.hash+' with nonce '+ newBlock.nonce); this.chain.push(newBlock); } checkValid() { for (let i = 1; i < this.chain.length; i++) { const currentBlock = this.chain[i]; const previousBlock = this.chain[i - 1]; if (currentBlock.hash !== currentBlock.calculateHash()) { return false; } if (currentBlock.previousHash !== previousBlock.hash) { return false; } } return true; } } let myCoin = new Blockchain('0000'); myCoin.addBlock(new Block({amount: 50})); myCoin.addBlock(new Block({amount: 25})); console.log("The block chain is valid?", myCoin.checkValid()); ``` 9.- Now we just have to try our blockchain open the terminal, locate yourself at the root of your project and execute the following command. ``` $ node main.js ``` 10.- You will see something like this. ``` Mined! 00000e0d4ead0b3bf31acc6af0b09ead1924442ae26b0ba7e7d6900176eec17e with nonce 24943 Mined! 0000d038ac586662b838055f1b6687b6d213fa1dd78fee947be5184b6853920e with nonce 44157 The block chain is valid? True ``` 11.- To see the information contained in each block, add the following line of code at the end. ```javascript console.log(JSON.stringify(myCoin, null, 4)); ``` 12.- Now you should see something like this. ``` Mined! 0000f66f662e39a11b318ba7cf2667615a19fed11384c6a09c7d52a44f47a07d with nonce 89368 Mined! 0000be061e6026fff3471a18627d033cdd969c1f16e99f59ac6957e616d1905f with nonce 159427 The block chain is valid? true { "chain": [ { "index": 0, "date": "2018-10-18T23:26:40.639Z", "data": 0, "previousHash": "0", "hash": "660ea1d34ab625219001fcc5c698acf9d1208f73d1dba7272e89ec8ebcf3e019", "nonce": 0 }, { "index": 1, "date": "2018-10-18T23:26:40.643Z", "data": { "amount": 50 }, "previousHash": "660ea1d34ab625219001fcc5c698acf9d1208f73d1dba7272e89ec8ebcf3e019", "hash": "0000f66f662e39a11b318ba7cf2667615a19fed11384c6a09c7d52a44f47a07d", "nonce": 89368 }, { "index": 2, "date": "2018-10-18T23:26:49.377Z", "data": { "amount": 25 }, "previousHash": "0000f66f662e39a11b318ba7cf2667615a19fed11384c6a09c7d52a44f47a07d", "hash": "0000be061e6026fff3471a18627d033cdd969c1f16e99f59ac6957e616d1905f", "nonce": 159427 } ], "difficulty": "0000" } ``` Ready now you have already created a chain of blocks (Blockchain) in javascript and nodejs, in future post we will learn more about blockchain and javascript. The code repository: [GitHub](https://github.com/Stricker66/My-Blockchain)
json metadata{"tags":["blockchain","bitcoin","cryptocurrency","crypto","steemit"],"links":["https://github.com/Stricker66/My-Blockchain"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #26929427/Trx b3ed7cb688fdb73f94d3cd9d087f7cb13e915b8f
View Raw JSON Data
{
  "trx_id": "b3ed7cb688fdb73f94d3cd9d087f7cb13e915b8f",
  "block": 26929427,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-19T00:06:36",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "blockchain",
      "author": "stricker",
      "permlink": "how-to-create-a-blockchain-with-javascript",
      "title": "How to create a blockchain with javascript.",
      "body": "# How to create a blockchain with javascript.\n\nA chain of blocks or also known as blockchain is a data structure in which the information is stored in sets (blocks), to which meta information is added relative to another block of the previous chain in a time line, which means that its content can only be edited by modifying all the previous blocks.\n\n> In this post we will learn how to create a blockchain with javascript and nodejs.\n\n1.- We will create a folder with the name of our choice in this case we will call it \"blockchain\", inside it we will create a file that will be called main.js.\n\n2.- Now we will open this folder with the code editor of our preference.\n\n## Well now let's start with the code !!\n\n1.- First we will create a class called Block which will contain a constructor function, we will also create the functions calculateHash, mineBlock, the constructor function will create the instances of the objects of the block and will provide them with their properties.\n\n```javascript\nclass Block {\n    constructor(data) {\n        this.index = 0;\n        this.date = new Date();\n        this.data = data;\n        this.previousHash = \"0\";\n        this.hash = this.calculateHash();\n        this.nonce = 0;\n    }\n\n    calculateHash() {\n\t\n    }\n\n    mineBlock(difficulty) {\n\t\n}\n```\n\n2.- We start npm, open the terminal and we are located in our project, now we will only execute the following command and it only remains to configure the project to our liking.\n\n```\n$ npm init\n```\n\n3.- Now we are using a npm module called crypto-js, this can be installed with the following command.\n\n```\n$ npm install –save crypto-js\n```\n\n4.- Now that the library is installed we will create a constant called SHA265 that requires crypto-js / sha265, this we will use to create the calculation function.\n\n```javascript\nconst SHA256 = require('crypto-js/sha256');\n\nclass Block {\n    constructor(data) {\n        this.index = 0;\n        this.date = new Date();\n        this.data = data;\n        this.previousHash = \"0\";\n        this.hash = this.calculateHash();\n        this.nonce = 0;\n    }\n\n    calculateHash() {\n        return SHA256(this.index + this.previousHash + this.date + this.data + this.nonce).toString();\n    }\n\n    mineBlock(difficulty) {\n    \twhile(!this.hash.startsWith(difficulty)) {\n    \t\tthis.nonce++;\n    \t\tthis.hash = this.calculateHash();\n    \t}\n    }\n}\n```\n\n  - The function calculateHash we will use to give each block its own hash, it takes each piece of the Block object, throws it in a SHA256 function and converts it to a string.\n\n  - The second mineBlock function will be used to safely process transactions in blockchain networks adding difficulty to the process of generating the hash, in this case the difficulty will be the number of zeros with which the hash will begin.\n\n5.- Now that we create the structure of our individual block, we need to create a structure an object of class Blockchain this will have the following functions, constructor, createGenesis, latestBlock, addBlock, checkValid.\n\n  - Our Blockchain class needs to have the capacity to create instances, to initiate, access the most recent information of the block and expand by adding a new block.\n\n```javascript\nclass Blockchain {\n\tconstructor(difficulty = '00') {\n\t\tthis.chain = [this.createGenesis()];\n\t\tthis.difficulty = difficulty;\n\t}\n\n\tcreateGenesis() {\n\t\treturn new Block(0, {amount: 100});\n\t}\n\n\tlatestBlock() {\n\t\treturn this.chain[this.chain.length - 1];\n\t}\n\n\taddBlock(newBlock) {\n\t\tnewBlock.index = this.latestBlock().index + 1;\n\t\tnewBlock.previousHash = this.latestBlock().hash;\n\t\tnewBlock.hash = newBlock.calculateHash();\n\t\tnewBlock.mineBlock(this.difficulty);\n\t\tconsole.log('Mined! '+ newBlock.hash+' with nonce'+ newBlock.nonce);\n\t\tthis.chain.push(newBlock);\n\t}\n\n\tcheckValid() {\n\t\tfor (let i = 1; i < this.chain.length; i++) {\n\t\t\tconst currentBlock = this.chain[i];\n\t\t\tconst previousBlock = this.chain[i - 1];\n\n\t\t\tif (currentBlock.hash !== currentBlock.calculateHash()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (currentBlock.previousHash !== previousBlock.hash) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n}\n```\n\n6.- Well let's explain what we did in this code.\n\n### Constructor function.\n\nThis function creates an instance in our chain of blocks with a property in a list structure, that is why our Block object has indexes this property is used to find its position in our list of chains, it also defines the difficulty of initial mining.\n\n### CreateGenesis function.\n\nOur block chain needs the createGenesis function since it creates the first block of our chain. Usually in blockchain the first block of any is known as \"Genesis block\", that is why the name of createGenesis, normally the information of the genesis block is entered manually. Since it is the first block of the chain, its index will be 0, the date and time will be the current ones, as far as the previous hash will be 0 since there is no other hash that does it.\n\n### LatestBlock function.\n\nThis function obtains the information of the most recent block and will also be necessary in the following function.\n\n### AddBlock function.\n\nIn order for our block to have the capacity to extend continuously, it needs this function, the block chains have this functionality, the best known is Bitcoin (BTC), which is responsible for creating new blocks every 10 minutes with the information of the transactions made in It is time frame.\nIts implementation of the addBlock function is simple, it takes the Block object as an input which has a timestamp and data. Then, our addBlock function will use the latestBlock function to give it an index and a hash before our new block, after that we give it its own hash using the function calculateHash, we will also pass the difficulty of mining defined in the property difficulty, and finally we push this block in our chain, now we have a new block.\n\n### CheckValid function.\n\nThis function verifies the integrity of the block chain and detects if something has been tampered with.\nYou should know that the hashes are critical to detect changes in our chain since even the smallest change in an object will result in a completely different hash, so this function uses a for loop to traverse the string and try to match its hashes to detect changes.\nThere are 2 parts in our loop the first is to match currentBlock.hash with currentBlock.calculateHash and the second is to match currentBlock.previousHash with previousBlock.hash, the first one is used to check if the currentBlock information has been manipulated without updating currentBlock. hash The second is used to verify if a previous block has been modified.\n\n7.- Finally we will add these lines at the end of our code that add two blocks with data, validate them and show them in the console.\n\n  - Note: Blockchain class receives the difficulty of mining in this case the difficulty is 3 zeros, the more zeros more difficult will be the mining of the blocks.\n\n**Be careful not to add many zeros or your equipment could stop!**\n\n```javascript\nlet myCoin = new Blockchain('000');\nmyCoin.addBlock(new Block({amount: 50}));\nmyCoin.addBlock(new Block({amount: 25}));\n\nconsole.log(\"The block chain is valid?\", myCoin.checkValid());\n```\n\n8.- Now our final code will look like this.\n\n```javascript\nconst SHA256 = require('crypto-js/sha256');\n\nclass Block {\n    constructor(data) {\n        this.index = 0;\n        this.date = new Date();\n        this.data = data;\n        this.previousHash = \"0\";\n        this.hash = this.calculateHash();\n        this.nonce = 0;\n    }\n\n    calculateHash() {\n        return SHA256(this.index + this.previousHash + this.date + this.data + this.nonce).toString();\n    }\n\n    mineBlock(difficulty) {\n    \twhile(!this.hash.startsWith(difficulty)) {\n    \t\tthis.nonce++;\n    \t\tthis.hash = this.calculateHash();\n    \t}\n    }\n}\n\nclass Blockchain {\n\tconstructor(difficulty = '00') {\n\t\tthis.chain = [this.createGenesis()];\n\t\tthis.difficulty = difficulty;\n\t}\n\n\tcreateGenesis() {\n\t\treturn new Block(0, {amount: 100});\n\t}\n\n\tlatestBlock() {\n\t\treturn this.chain[this.chain.length - 1];\n\t}\n\n\taddBlock(newBlock) {\n\t\tnewBlock.index = this.latestBlock().index + 1;\n\t\tnewBlock.previousHash = this.latestBlock().hash;\n\t\tnewBlock.hash = newBlock.calculateHash();\n\t\tnewBlock.mineBlock(this.difficulty);\n\t\tconsole.log('Mined! '+ newBlock.hash+' with nonce '+ newBlock.nonce);\n\t\tthis.chain.push(newBlock);\n\t}\n\n\tcheckValid() {\n\t\tfor (let i = 1; i < this.chain.length; i++) {\n\t\t\tconst currentBlock = this.chain[i];\n\t\t\tconst previousBlock = this.chain[i - 1];\n\n\t\t\tif (currentBlock.hash !== currentBlock.calculateHash()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (currentBlock.previousHash !== previousBlock.hash) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n}\n\nlet myCoin = new Blockchain('0000');\nmyCoin.addBlock(new Block({amount: 50}));\nmyCoin.addBlock(new Block({amount: 25}));\n\nconsole.log(\"The block chain is valid?\", myCoin.checkValid());\n```\n\n9.- Now we just have to try our blockchain open the terminal, locate yourself at the root of your project and execute the following command.\n\n```\n$ node main.js\n```\n\n10.- You will see something like this.\n\n```\nMined! 00000e0d4ead0b3bf31acc6af0b09ead1924442ae26b0ba7e7d6900176eec17e with nonce 24943\nMined! 0000d038ac586662b838055f1b6687b6d213fa1dd78fee947be5184b6853920e with nonce 44157\nThe block chain is valid? True\n```\n\n11.- To see the information contained in each block, add the following line of code at the end.\n\n```javascript\nconsole.log(JSON.stringify(myCoin, null, 4));\n```\n\n12.- Now you should see something like this.\n\n```\nMined! 0000f66f662e39a11b318ba7cf2667615a19fed11384c6a09c7d52a44f47a07d with nonce 89368\nMined! 0000be061e6026fff3471a18627d033cdd969c1f16e99f59ac6957e616d1905f with nonce 159427\nThe block chain is valid? true\n{\n    \"chain\": [\n        {\n            \"index\": 0,\n            \"date\": \"2018-10-18T23:26:40.639Z\",\n            \"data\": 0,\n            \"previousHash\": \"0\",\n            \"hash\": \"660ea1d34ab625219001fcc5c698acf9d1208f73d1dba7272e89ec8ebcf3e019\",\n            \"nonce\": 0\n        },\n        {\n            \"index\": 1,\n            \"date\": \"2018-10-18T23:26:40.643Z\",\n            \"data\": {\n                \"amount\": 50\n            },\n            \"previousHash\": \"660ea1d34ab625219001fcc5c698acf9d1208f73d1dba7272e89ec8ebcf3e019\",\n            \"hash\": \"0000f66f662e39a11b318ba7cf2667615a19fed11384c6a09c7d52a44f47a07d\",\n            \"nonce\": 89368\n        },\n        {\n            \"index\": 2,\n            \"date\": \"2018-10-18T23:26:49.377Z\",\n            \"data\": {\n                \"amount\": 25\n            },\n            \"previousHash\": \"0000f66f662e39a11b318ba7cf2667615a19fed11384c6a09c7d52a44f47a07d\",\n            \"hash\": \"0000be061e6026fff3471a18627d033cdd969c1f16e99f59ac6957e616d1905f\",\n            \"nonce\": 159427\n        }\n    ],\n    \"difficulty\": \"0000\"\n}\n```\n\nReady now you have already created a chain of blocks (Blockchain) in javascript and nodejs, in future post we will learn more about blockchain and javascript.\n\nThe code repository: [GitHub](https://github.com/Stricker66/My-Blockchain)",
      "json_metadata": "{\"tags\":[\"blockchain\",\"bitcoin\",\"cryptocurrency\",\"crypto\",\"steemit\"],\"links\":[\"https://github.com/Stricker66/My-Blockchain\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/10/18 22:57:24
voterstricker
authorpartiko
permlinkhelp-steem-to-the-moon-earn-free-partiko-points-axaovyrn
weight10000 (100.00%)
Transaction InfoBlock #26928044/Trx 40783ebe9b98bbf342fdf4c3f3cb42e78bcad37d
View Raw JSON Data
{
  "trx_id": "40783ebe9b98bbf342fdf4c3f3cb42e78bcad37d",
  "block": 26928044,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T22:57:24",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "partiko",
      "permlink": "help-steem-to-the-moon-earn-free-partiko-points-axaovyrn",
      "weight": 10000
    }
  ]
}
strickerclaimed reward balance: 0.013 SBD, 0.021 SP
2018/10/18 22:47:15
accountstricker
reward steem0.000 STEEM
reward sbd0.013 SBD
reward vests34.310192 VESTS
Transaction InfoBlock #26927841/Trx 2fa4696a4f94464f061476d6c4b486df23625fc6
View Raw JSON Data
{
  "trx_id": "2fa4696a4f94464f061476d6c4b486df23625fc6",
  "block": 26927841,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T22:47:15",
  "op": [
    "claim_reward_balance",
    {
      "account": "stricker",
      "reward_steem": "0.000 STEEM",
      "reward_sbd": "0.013 SBD",
      "reward_vests": "34.310192 VESTS"
    }
  ]
}
strickerreceived 0.013 SBD, 0.021 SP author reward for @stricker / bienvenido-a-mi-blog
2018/10/18 21:18:51
authorstricker
permlinkbienvenido-a-mi-blog
sbd payout0.013 SBD
steem payout0.000 STEEM
vesting payout34.310192 VESTS
Transaction InfoBlock #26926072/Virtual Operation #7
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 26926072,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 7,
  "timestamp": "2018-10-18T21:18:51",
  "op": [
    "author_reward",
    {
      "author": "stricker",
      "permlink": "bienvenido-a-mi-blog",
      "sbd_payout": "0.013 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "34.310192 VESTS"
    }
  ]
}
strickerupvoted (100.00%) @baiboua / -0a64b0a488b71
2018/10/18 14:01:33
voterstricker
authorbaiboua
permlink-0a64b0a488b71
weight10000 (100.00%)
Transaction InfoBlock #26917330/Trx 557b507d20fd242e405c6615a3c48e91e9519005
View Raw JSON Data
{
  "trx_id": "557b507d20fd242e405c6615a3c48e91e9519005",
  "block": 26917330,
  "trx_in_block": 47,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T14:01:33",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "-0a64b0a488b71",
      "weight": 10000
    }
  ]
}
2018/10/18 05:21:51
voterdarkdanza
authorstricker
permlinkcomo-crear-un-blockchain-con-javascript-y-nodejs
weight10000 (100.00%)
Transaction InfoBlock #26906940/Trx 17d086dc7427e284d582f256aa72a3bdfe777d89
View Raw JSON Data
{
  "trx_id": "17d086dc7427e284d582f256aa72a3bdfe777d89",
  "block": 26906940,
  "trx_in_block": 55,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T05:21:51",
  "op": [
    "vote",
    {
      "voter": "darkdanza",
      "author": "stricker",
      "permlink": "como-crear-un-blockchain-con-javascript-y-nodejs",
      "weight": 10000
    }
  ]
}
2018/10/18 05:13:00
votersmartcoins
authorstricker
permlinkcomo-crear-un-blockchain-con-javascript-y-nodejs
weight1000 (10.00%)
Transaction InfoBlock #26906763/Trx 961ae9c51fa662a1310ac4b0238abf60dc79eb12
View Raw JSON Data
{
  "trx_id": "961ae9c51fa662a1310ac4b0238abf60dc79eb12",
  "block": 26906763,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T05:13:00",
  "op": [
    "vote",
    {
      "voter": "smartcoins",
      "author": "stricker",
      "permlink": "como-crear-un-blockchain-con-javascript-y-nodejs",
      "weight": 1000
    }
  ]
}
2018/10/18 04:40:45
votertomask-de
authorstricker
permlinkcomo-crear-un-blockchain-con-javascript-y-nodejs
weight10000 (100.00%)
Transaction InfoBlock #26906118/Trx 335591ebaaaa1261677a8ea63666a97df9321dab
View Raw JSON Data
{
  "trx_id": "335591ebaaaa1261677a8ea63666a97df9321dab",
  "block": 26906118,
  "trx_in_block": 21,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T04:40:45",
  "op": [
    "vote",
    {
      "voter": "tomask-de",
      "author": "stricker",
      "permlink": "como-crear-un-blockchain-con-javascript-y-nodejs",
      "weight": 10000
    }
  ]
}
2018/10/18 04:36:06
voterglitterfart
authorstricker
permlinkcomo-crear-un-blockchain-con-javascript-y-nodejs
weight1000 (10.00%)
Transaction InfoBlock #26906025/Trx cc9e8414b47b4d1e1f208d82a2c3eef42458d5f4
View Raw JSON Data
{
  "trx_id": "cc9e8414b47b4d1e1f208d82a2c3eef42458d5f4",
  "block": 26906025,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T04:36:06",
  "op": [
    "vote",
    {
      "voter": "glitterfart",
      "author": "stricker",
      "permlink": "como-crear-un-blockchain-con-javascript-y-nodejs",
      "weight": 1000
    }
  ]
}
2018/10/18 04:18:24
authorstricker
permlinkcomo-crear-un-blockchain-con-javascript-y-nodejs
max accepted payout1000000.000 SBD
percent steem dollars0
allow votestrue
allow curation rewardstrue
extensions[]
Transaction InfoBlock #26905671/Trx 25eb750f44364fe2357378be996fa36ec329516a
View Raw JSON Data
{
  "trx_id": "25eb750f44364fe2357378be996fa36ec329516a",
  "block": 26905671,
  "trx_in_block": 18,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T04:18:24",
  "op": [
    "comment_options",
    {
      "author": "stricker",
      "permlink": "como-crear-un-blockchain-con-javascript-y-nodejs",
      "max_accepted_payout": "1000000.000 SBD",
      "percent_steem_dollars": 0,
      "allow_votes": true,
      "allow_curation_rewards": true,
      "extensions": []
    }
  ]
}
2018/10/18 04:18:24
parent author
parent permlinkbitcoin
authorstricker
permlinkcomo-crear-un-blockchain-con-javascript-y-nodejs
titleComo crear un Blockchain con JavaScript y NodeJS.
body# Como crear un Blockchain con JavaScript y NodeJS. ![Bitcoin](https://images.unsplash.com/photo-1518546305927-5a555bb7020d?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=20505ab3ec40e93846c7f4340f92ab99&dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb) Una cadena de bloques o también conocida como blockchain es una estructura de datos en la que la información se guarda en conjuntos (bloques), a los que se ánade meta informaciones relativas a otro bloque de la cadena anterior en una linea temporal, lo que significa que su contenido solo puede ser editado modificando todos los bloques anteriores. > En este post aprenderemos como crear un blockchain con javascript y nodejs. 1. Crearemos una carpeta con el nombre de nuestra elección en este caso la llamaremos “blockchain” , dentro de ella crearemos un archivo que se llamara main.js. 2. Ahora abriremos esta carpeta con el editor de código de nuestra preferencia. ### Bien ahora empecemos con el código!! <br> 1.- Primero crearemos una clase llamada Block el cual contendrá una función constructor, también crearemos las funciones calculateHash, mineBlock, la función constructor creara las instancias de los objetos del bloque y les proporcionara sus propiedades. ``` javascript class Block { constructor(data) { this.index = 0; this.date = new Date(); this.data = data; this.previousHash = "0"; this.hash = this.calculateHash(); this.nonce = 0; } calculateHash() { } mineBlock(difficulty) { } ``` <br> 2.- Iniciaremos npm, abriremos el terminal y nos ubicamos en nuestro proyecto ahora solo ejecutaremos en siguiente comando y solo resta configurar el proyecto a nuestro gusto. `npm init` 3.- Ahora aremos uso de un modulo de npm llamado crypto-js, este puede ser instalado con el siguiente comando. `npm install –save crypto-js` 4.- Ahora que la biblioteca esta instalada crearemos una constante llamada SHA265 que requiere de crypto-js/sha265, esto lo usaremos para crear la función de calculo. ```javascript const SHA256 = require('crypto-js/sha256'); class Block { constructor(data) { this.index = 0; this.date = new Date(); this.data = data; this.previousHash = "0"; this.hash = this.calculateHash(); this.nonce = 0; } calculateHash() { return SHA256(this.index + this.previousHash + this.date + this.data + this.nonce).toString(); } mineBlock(difficulty) { while(!this.hash.startsWith(difficulty)) { this.nonce++; this.hash = this.calculateHash(); } } } ``` <br> - La función calculateHash la usaremos para dar a cada bloque su propio hash, este toma cada pieza del objeto Block, lo lanza en una función SHA256 y lo convierte a una cadena. - La segunda función mineBlock sera usada para procesar con seguridad las transacciones en redes blockchain agregando dificultad al proceso de generado del hash, en este caso la dificulta sera el numero de ceros con el cual comenzara el hash. 5.- Ahora que creamos la estructura de nuestro bloque individual, necesitamos crear una estructura un objeto de clase Blockchain esta tendrá las siguientes funciones, constructor, createGenesis, latestBlock, addBlock, checkValid. - Nuestra clase Blockchain necesita tener la capacidad de crear instancias, de iniciar, acceder a la información mas reciente del bloque y ampliarse agregando un nuevo bloque. ```javascript class Blockchain { constructor(difficulty = '00') { this.chain = [this.createGenesis()]; this.difficulty = difficulty; } createGenesis() { return new Block(0, {amount: 100}); } latestBlock() { return this.chain[this.chain.length - 1]; } addBlock(newBlock) { newBlock.index = this.latestBlock().index + 1; newBlock.previousHash = this.latestBlock().hash; newBlock.hash = newBlock.calculateHash(); newBlock.mineBlock(this.difficulty); console.log('Minado!! '+ newBlock.hash+' con nonce '+ newBlock.nonce); this.chain.push(newBlock); } checkValid() { for (let i = 1; i < this.chain.length; i++) { const currentBlock = this.chain[i]; const previousBlock = this.chain[i - 1]; if (currentBlock.hash !== currentBlock.calculateHash()) { return false; } if (currentBlock.previousHash !== previousBlock.hash) { return false; } } return true; } } ``` <br> **Bien expliquemos que hicimos en este código.** - Función Constructor. - Esta función crea una instancia en nuestra cadena de bloques con una propiedad en una estructura de lista, por eso nuestro objeto Block tiene índices esta propiedad se utiliza para encontrar su posición en nuestra lista de cadenas, además define la dificultad de minado inicial. <br> - Función createGenesis. - Nuestra cadena de bloques necesita la función createGenesis ya que esta crea el primer bloque de nuestra cadena. Por lo general en blockchain el primer bloque de cualquier se conoce como “Bloque de Génesis” , por eso el nombre de createGenesis, normalmente la información del bloque génesis es introducido manualmente. Como es el primer bloque de la cadena su índice sera 0, la fecha y hora serán los actuales, en cuanto al hash anterior sera 0 ya que no hay otro hash que lo proceda. <br> - Función latestBlock. - Esta función obtiene la información del bloque mas reciente y también sera necesaria en la siguiente función. <br> - Función addBlock. - Para que nuestro bloque tenga la capacidad de extenderse continuamente necesita esta función, las cadenas de bloque tienen esta funcionalidad, la mas conocida es la del Bitcoin (BTC) esta se encarga de crear bloques nuevos cada 10 minutos con la información de las transacciones realizadas en se marco de tiempo. Su implementación de la función addBlock es sencilla esta toma el objeto Block como una entrada la cual posee una marca de tiempo y datos. Luego, nuestra función addBlock usara la función latestBlock para darla un índice y un hash anterior a nuestro nuevo bloque, después de eso le damos su propio hash usando la función calculateHash, también pasaremos la dificulta de minado definida en la propiedad difficulty, y finalmente empujamos este bloque en nuestra cadena, ahora tenemos un nuevo bloque. <br> - Función checkValid. - Esta función verifica la integridad de la cadena de bloques y detecta si algo ha sido manipulado. Debes saber que los hashes son críticos para detectar cambios en nuestra cadena ya que incluso el cambio mas pequeño en un objeto resultara en un hash completamente diferente, por lo tanto esta función usa un bucle for para recorrer la cadena e intentar coincidir sus hashes para detectar cambios. Hay 2 partes en nuestro bucle la primera es hacer coincidir currentBlock.hash con currentBlock.calculateHash y la segundo es hacer coincidir currentBlock.previousHash con previousBlock.hash, el primero se usa para verificar si la información de currentBlock ha sido manipulada sin actualizar currentBlock.hash. El segundo se usa para verificar si un bloque anterior ha sido modificado. 6.- Finalmente agregaremos esta lineas al final de nuestro código que añaden dos bloques con datos, los validara y mostraran en consola. ```javascript let myCoin = new Blockchain('000'); myCoin.addBlock(new Block({amount: 50})); myCoin.addBlock(new Block({amount: 25})); console.log("La cadena de bloques es valida?", myCoin.checkValid()); ``` <br> **Nota: La clase Blockchain recibe la dificulta de minado en este caso la dificulta son 3 ceros, entre mas ceros mas difícil sera el minado de los bloques.** 7.- Ahora nuestro código final se vera así. ```javascript const SHA256 = require('crypto-js/sha256'); class Block { constructor(data) { this.index = 0; this.date = new Date(); this.data = data; this.previousHash = "0"; this.hash = this.calculateHash(); this.nonce = 0; } calculateHash() { return SHA256(this.index + this.previousHash + this.date + this.data + this.nonce).toString(); } mineBlock(difficulty) { while(!this.hash.startsWith(difficulty)) { this.nonce++; this.hash = this.calculateHash(); } } } class Blockchain { constructor(difficulty = '00') { this.chain = [this.createGenesis()]; this.difficulty = difficulty; } createGenesis() { return new Block(0, {amount: 100}); } latestBlock() { return this.chain[this.chain.length - 1]; } addBlock(newBlock) { newBlock.index = this.latestBlock().index + 1; newBlock.previousHash = this.latestBlock().hash; newBlock.hash = newBlock.calculateHash(); newBlock.mineBlock(this.difficulty); console.log('Minado!! '+ newBlock.hash+' con nonce '+ newBlock.nonce); this.chain.push(newBlock); } checkValid() { for (let i = 1; i < this.chain.length; i++) { const currentBlock = this.chain[i]; const previousBlock = this.chain[i - 1]; if (currentBlock.hash !== currentBlock.calculateHash()) { return false; } if (currentBlock.previousHash !== previousBlock.hash) { return false; } } return true; } } let myCoin = new Blockchain('0000'); myCoin.addBlock(new Block({amount: 50})); myCoin.addBlock(new Block({amount: 25})); console.log("La cadena de bloques es valida?", myCoin.checkValid()); ``` <br> 8.- Ahora solo queda probar nuestro blockchain abre el terminal, ubícate en la raíz de tu proyecto y ejecuta el siguiente comando. ```node main.js``` <br> 9.- Veras algo como esto. ``` Minado!! 000020f23e31c8f28fb54adb6754edd4319cb74065663acce78981630077028e con nonce 130611 Minado!! 000052c92a3c0533f6379bbca7f3096a4aa5cba6b7280761f983284a5680ca8f con nonce 23024 La cadena de bloques es valida? true ``` <br> 10.- Para ver la informacion que contiene cada bloque agrega al final la siguiente linea de código. ```javascript console.log(JSON.stringify(myCoin, null, 4)); ``` <br> - Ahora deberías ver algo como esto. ```javascript Minado!! 000004d09ad97f858e05c4b101fce77ae3670f908f820dca5fa5d882f3e284d7 con nonce 63331 Minado!! 0000b78e1ea385c3d39f83b4d4bf22f53fd675e8b21a4a33afb4ba0d799d34af con nonce 9669 La cadena de bloques es valida? true { "chain": [ { "index": 0, "date": "2018-10-16T23:41:01.033Z", "data": 0, "previousHash": "0", "hash": "3b2403dfac8d26ae556adb59f97b6f925d41687e3c436b0d70e09d99d31bf733", "nonce": 0 }, { "index": 1, "date": "2018-10-16T23:41:01.038Z", "data": { "amount": 50 }, "previousHash": "3b2403dfac8d26ae556adb59f97b6f925d41687e3c436b0d70e09d99d31bf733", "hash": "000004d09ad97f858e05c4b101fce77ae3670f908f820dca5fa5d882f3e284d7", "nonce": 63331 }, { "index": 2, "date": "2018-10-16T23:41:07.385Z", "data": { "amount": 25 }, "previousHash": "000004d09ad97f858e05c4b101fce77ae3670f908f820dca5fa5d882f3e284d7", "hash": "0000b78e1ea385c3d39f83b4d4bf22f53fd675e8b21a4a33afb4ba0d799d34af", "nonce": 9669 } ], "difficulty": "0000" } ``` <br> **Listo ahora ya has creado una cadena de bloques (Blockchain) en javascript y nodejs, en futuros post aprenderemos mas sobre blockchain y javascript.** El repositorio de todo el código: [GitHub](https://github.com/Stricker66/My-Blockchain)
json metadata{"tags":["bitcoin","cryptocurrency","crypto","blockchain","spanish"],"image":["https://images.unsplash.com/photo-1518546305927-5a555bb7020d?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=20505ab3ec40e93846c7f4340f92ab99&dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb"],"links":["https://github.com/Stricker66/My-Blockchain"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #26905671/Trx 25eb750f44364fe2357378be996fa36ec329516a
View Raw JSON Data
{
  "trx_id": "25eb750f44364fe2357378be996fa36ec329516a",
  "block": 26905671,
  "trx_in_block": 18,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T04:18:24",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "bitcoin",
      "author": "stricker",
      "permlink": "como-crear-un-blockchain-con-javascript-y-nodejs",
      "title": "Como crear un Blockchain con JavaScript y NodeJS.",
      "body": "# Como crear un Blockchain con JavaScript y NodeJS.\n\n![Bitcoin](https://images.unsplash.com/photo-1518546305927-5a555bb7020d?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=20505ab3ec40e93846c7f4340f92ab99&dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb)\n\nUna cadena de bloques o también conocida como blockchain es una estructura de datos en la que la información se guarda en conjuntos (bloques), a los que se ánade meta informaciones relativas a otro bloque de la cadena anterior en una linea temporal, lo que significa que su contenido solo puede ser editado modificando todos los bloques anteriores.\n\n> En este post aprenderemos como crear un blockchain con javascript y nodejs.\n\n1. Crearemos una carpeta con el nombre de nuestra elección en este caso la llamaremos “blockchain” , dentro de ella crearemos un archivo que se llamara main.js.\n\n2. Ahora abriremos esta carpeta con el editor de código de nuestra preferencia.\n\n### Bien ahora empecemos con el código!!\n<br>\n\n1.- Primero crearemos una clase llamada Block el cual contendrá una función constructor, también crearemos las funciones calculateHash, mineBlock, la función constructor creara las instancias de los objetos del bloque y les proporcionara sus propiedades.\n\n``` javascript\nclass Block {\n    constructor(data) {\n        this.index = 0;\n        this.date = new Date();\n        this.data = data;\n        this.previousHash = \"0\";\n        this.hash = this.calculateHash();\n        this.nonce = 0;\n    }\n\n    calculateHash() {\n\t\n    }\n\n    mineBlock(difficulty) {\n\t\n}\n```\n<br>\n\n2.- Iniciaremos npm, abriremos el terminal y nos ubicamos en nuestro proyecto ahora solo ejecutaremos en siguiente comando y solo resta configurar el proyecto a nuestro gusto.\n\n`npm init`\n\n3.-  Ahora aremos uso de un modulo de npm llamado crypto-js, este puede ser instalado con el siguiente comando.\n\n`npm install –save crypto-js`\n\n4.-  Ahora que la biblioteca esta instalada crearemos una constante llamada SHA265 que requiere de crypto-js/sha265, esto lo usaremos para crear la función de calculo.\n\n```javascript\nconst SHA256 = require('crypto-js/sha256');\n\nclass Block {\n    constructor(data) {\n        this.index = 0;\n        this.date = new Date();\n        this.data = data;\n        this.previousHash = \"0\";\n        this.hash = this.calculateHash();\n        this.nonce = 0;\n    }\n\n    calculateHash() {\n        return SHA256(this.index + this.previousHash + this.date + this.data + this.nonce).toString();\n    }\n\n    mineBlock(difficulty) {\n    \twhile(!this.hash.startsWith(difficulty)) {\n    \t\tthis.nonce++;\n    \t\tthis.hash = this.calculateHash();\n    \t}\n    }\n}\n```\n<br>\n\n  - La función calculateHash la usaremos para dar a cada bloque su propio hash, este toma cada pieza del objeto Block, lo lanza en una función SHA256 y lo convierte a una cadena.\n\n  - La segunda función mineBlock sera usada para procesar con seguridad las transacciones en redes blockchain agregando dificultad al proceso de generado del hash, en este caso la dificulta sera el numero de ceros con el cual comenzara el hash.\n\n5.- Ahora que creamos la estructura de nuestro bloque individual, necesitamos crear una estructura un objeto de clase Blockchain esta tendrá las siguientes funciones, constructor, createGenesis, latestBlock, addBlock, checkValid.\n\n  - Nuestra clase Blockchain necesita tener la capacidad de crear instancias, de iniciar, acceder a la información mas reciente del bloque y ampliarse agregando un nuevo bloque.\n\n```javascript\nclass Blockchain {\n\tconstructor(difficulty = '00') {\n\t\tthis.chain = [this.createGenesis()];\n\t\tthis.difficulty = difficulty;\n\t}\n\n\tcreateGenesis() {\n\t\treturn new Block(0, {amount: 100});\n\t}\n\n\tlatestBlock() {\n\t\treturn this.chain[this.chain.length - 1];\n\t}\n\n\taddBlock(newBlock) {\n\t\tnewBlock.index = this.latestBlock().index + 1;\n\t\tnewBlock.previousHash = this.latestBlock().hash;\n\t\tnewBlock.hash = newBlock.calculateHash();\n\t\tnewBlock.mineBlock(this.difficulty);\n\t\tconsole.log('Minado!! '+ newBlock.hash+' con nonce '+ newBlock.nonce);\n\t\tthis.chain.push(newBlock);\n\t}\n\n\tcheckValid() {\n\t\tfor (let i = 1; i < this.chain.length; i++) {\n\t\t\tconst currentBlock = this.chain[i];\n\t\t\tconst previousBlock = this.chain[i - 1];\n\n\t\t\tif (currentBlock.hash !== currentBlock.calculateHash()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (currentBlock.previousHash !== previousBlock.hash) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n}\n```\n<br>\n**Bien expliquemos que hicimos en este código.**\n\n- Función Constructor.\n\n  - Esta función crea una instancia en nuestra cadena de bloques con una propiedad en una estructura de lista, por eso nuestro objeto Block tiene índices esta propiedad se utiliza para encontrar su posición en nuestra lista de cadenas, además define la dificultad de minado inicial.\n<br>\n- Función createGenesis.\n\n  - Nuestra cadena de bloques necesita la función createGenesis ya que esta crea el primer bloque de nuestra cadena. Por lo general en blockchain el primer bloque de cualquier se conoce como “Bloque de Génesis” , por eso el nombre de createGenesis, normalmente la información del bloque génesis es introducido manualmente. Como es el primer bloque de la cadena su índice sera 0, la fecha y hora serán los actuales, en cuanto al hash anterior sera 0 ya que no hay otro hash que lo proceda.\n<br>\n- Función  latestBlock.\n\n  - Esta función obtiene la información del bloque mas reciente y también sera necesaria en la siguiente función.\n<br>\n- Función addBlock. \n\n  - Para que nuestro bloque tenga la capacidad de extenderse continuamente necesita esta función, las cadenas de bloque tienen esta funcionalidad, la mas conocida es la del Bitcoin (BTC) esta se encarga de  crear bloques nuevos cada 10 minutos con la información de las transacciones realizadas en se marco de tiempo.\nSu implementación de la función addBlock es sencilla esta toma el objeto Block como una entrada la cual posee una marca de tiempo y datos. Luego, nuestra función addBlock usara la función latestBlock para darla un índice y un hash anterior a nuestro nuevo bloque, después de eso le damos su propio hash usando la función calculateHash, también pasaremos la dificulta de minado definida en la propiedad difficulty, y finalmente empujamos este bloque en nuestra cadena, ahora tenemos un nuevo bloque.\n<br>\n- Función  checkValid.\n\n  - Esta función verifica la integridad de la cadena de bloques y detecta si algo ha sido manipulado.\nDebes saber que los hashes son críticos para detectar cambios en nuestra cadena ya que incluso el cambio mas pequeño en un objeto resultara en un hash completamente diferente, por lo tanto esta función usa un bucle for para recorrer la cadena e intentar coincidir sus hashes para detectar cambios.\nHay 2 partes en nuestro bucle la primera es hacer coincidir currentBlock.hash con currentBlock.calculateHash y la segundo es hacer coincidir currentBlock.previousHash con previousBlock.hash, el primero se usa para verificar si la información de currentBlock ha sido manipulada sin actualizar currentBlock.hash. El segundo se usa para verificar si un bloque anterior ha sido modificado.\n\n6.- Finalmente agregaremos esta lineas al final de nuestro código que añaden dos bloques con datos, los validara y mostraran en consola.\n\n```javascript\nlet myCoin = new Blockchain('000');\nmyCoin.addBlock(new Block({amount: 50}));\nmyCoin.addBlock(new Block({amount: 25}));\n\nconsole.log(\"La cadena de bloques es valida?\", myCoin.checkValid());\n```\n<br>\n**Nota: La clase Blockchain recibe la dificulta de minado en este caso la dificulta son 3 ceros, entre mas ceros mas difícil sera el minado de los bloques.**\n\n7.- Ahora nuestro código final se vera así.\n\n```javascript\nconst SHA256 = require('crypto-js/sha256');\n\nclass Block {\n    constructor(data) {\n        this.index = 0;\n        this.date = new Date();\n        this.data = data;\n        this.previousHash = \"0\";\n        this.hash = this.calculateHash();\n        this.nonce = 0;\n    }\n\n    calculateHash() {\n        return SHA256(this.index + this.previousHash + this.date + this.data + this.nonce).toString();\n    }\n\n    mineBlock(difficulty) {\n    \twhile(!this.hash.startsWith(difficulty)) {\n    \t\tthis.nonce++;\n    \t\tthis.hash = this.calculateHash();\n    \t}\n    }\n}\n\nclass Blockchain {\n\tconstructor(difficulty = '00') {\n\t\tthis.chain = [this.createGenesis()];\n\t\tthis.difficulty = difficulty;\n\t}\n\n\tcreateGenesis() {\n\t\treturn new Block(0, {amount: 100});\n\t}\n\n\tlatestBlock() {\n\t\treturn this.chain[this.chain.length - 1];\n\t}\n\n\taddBlock(newBlock) {\n\t\tnewBlock.index = this.latestBlock().index + 1;\n\t\tnewBlock.previousHash = this.latestBlock().hash;\n\t\tnewBlock.hash = newBlock.calculateHash();\n\t\tnewBlock.mineBlock(this.difficulty);\n\t\tconsole.log('Minado!! '+ newBlock.hash+' con nonce '+ newBlock.nonce);\n\t\tthis.chain.push(newBlock);\n\t}\n\n\tcheckValid() {\n\t\tfor (let i = 1; i < this.chain.length; i++) {\n\t\t\tconst currentBlock = this.chain[i];\n\t\t\tconst previousBlock = this.chain[i - 1];\n\n\t\t\tif (currentBlock.hash !== currentBlock.calculateHash()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (currentBlock.previousHash !== previousBlock.hash) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n}\n\nlet myCoin = new Blockchain('0000');\nmyCoin.addBlock(new Block({amount: 50}));\nmyCoin.addBlock(new Block({amount: 25}));\n\nconsole.log(\"La cadena de bloques es valida?\", myCoin.checkValid());\n```\n<br>\n8.- Ahora solo queda probar nuestro blockchain abre el terminal, ubícate en la raíz de tu proyecto y ejecuta el siguiente comando.\n\n```node main.js```\n<br>\n9.- Veras algo como esto.\n\n```\nMinado!! 000020f23e31c8f28fb54adb6754edd4319cb74065663acce78981630077028e con nonce 130611\nMinado!! 000052c92a3c0533f6379bbca7f3096a4aa5cba6b7280761f983284a5680ca8f con nonce 23024\nLa cadena de bloques es valida? true \n```\n<br>\n10.- Para ver la informacion que contiene cada bloque agrega al final la siguiente linea de código.\n\n```javascript\nconsole.log(JSON.stringify(myCoin, null, 4));\n```\n<br>\n- Ahora deberías ver algo como esto.\n\n```javascript\nMinado!! 000004d09ad97f858e05c4b101fce77ae3670f908f820dca5fa5d882f3e284d7 con nonce 63331\nMinado!! 0000b78e1ea385c3d39f83b4d4bf22f53fd675e8b21a4a33afb4ba0d799d34af con nonce 9669\nLa cadena de bloques es valida? true\n{\n    \"chain\": [\n        {\n            \"index\": 0,\n            \"date\": \"2018-10-16T23:41:01.033Z\",\n            \"data\": 0,\n            \"previousHash\": \"0\",\n            \"hash\": \"3b2403dfac8d26ae556adb59f97b6f925d41687e3c436b0d70e09d99d31bf733\",\n            \"nonce\": 0\n        },\n        {\n            \"index\": 1,\n            \"date\": \"2018-10-16T23:41:01.038Z\",\n            \"data\": {\n                \"amount\": 50\n            },\n            \"previousHash\": \"3b2403dfac8d26ae556adb59f97b6f925d41687e3c436b0d70e09d99d31bf733\",\n            \"hash\": \"000004d09ad97f858e05c4b101fce77ae3670f908f820dca5fa5d882f3e284d7\",\n            \"nonce\": 63331\n        },\n        {\n            \"index\": 2,\n            \"date\": \"2018-10-16T23:41:07.385Z\",\n            \"data\": {\n                \"amount\": 25\n            },\n            \"previousHash\": \"000004d09ad97f858e05c4b101fce77ae3670f908f820dca5fa5d882f3e284d7\",\n            \"hash\": \"0000b78e1ea385c3d39f83b4d4bf22f53fd675e8b21a4a33afb4ba0d799d34af\",\n            \"nonce\": 9669\n        }\n    ],\n    \"difficulty\": \"0000\"\n}\n```\n<br>\n**Listo ahora ya has creado una cadena de bloques (Blockchain) en javascript y nodejs, en futuros post aprenderemos mas sobre blockchain y javascript.**\n\nEl repositorio de todo el código: [GitHub](https://github.com/Stricker66/My-Blockchain)",
      "json_metadata": "{\"tags\":[\"bitcoin\",\"cryptocurrency\",\"crypto\",\"blockchain\",\"spanish\"],\"image\":[\"https://images.unsplash.com/photo-1518546305927-5a555bb7020d?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=20505ab3ec40e93846c7f4340f92ab99&dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb\"],\"links\":[\"https://github.com/Stricker66/My-Blockchain\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/10/18 04:14:54
voterstricker
authorbaiboua
permlinkportrait-photography-contest-day-2-uybymtc2
weight10000 (100.00%)
Transaction InfoBlock #26905601/Trx eef47c41b19c511a1119d3c623ffe4d913fda499
View Raw JSON Data
{
  "trx_id": "eef47c41b19c511a1119d3c623ffe4d913fda499",
  "block": 26905601,
  "trx_in_block": 11,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-18T04:14:54",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "portrait-photography-contest-day-2-uybymtc2",
      "weight": 10000
    }
  ]
}
2018/10/16 17:49:00
voterstricker
authornajoh
permlinkbounty-to-create-smart-contracts-on-nuls-bounty-to-write-an-article-about-nuls
weight10000 (100.00%)
Transaction InfoBlock #26864329/Trx 47f325b8134efa24227a5e1622744837b12c2a2d
View Raw JSON Data
{
  "trx_id": "47f325b8134efa24227a5e1622744837b12c2a2d",
  "block": 26864329,
  "trx_in_block": 29,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-16T17:49:00",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "najoh",
      "permlink": "bounty-to-create-smart-contracts-on-nuls-bounty-to-write-an-article-about-nuls",
      "weight": 10000
    }
  ]
}
strickerupvoted (100.00%) @baiboua / tasteem-214783
2018/10/16 17:47:33
voterstricker
authorbaiboua
permlinktasteem-214783
weight10000 (100.00%)
Transaction InfoBlock #26864300/Trx b05ac048a327e0f001e7d1021ae5cbc50088ab28
View Raw JSON Data
{
  "trx_id": "b05ac048a327e0f001e7d1021ae5cbc50088ab28",
  "block": 26864300,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-16T17:47:33",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "tasteem-214783",
      "weight": 10000
    }
  ]
}
2018/10/16 14:26:54
voterstricker
authorpartiko
permlinkeaster-egg-giveaway-5-winner-announcement--two-easter-eggs-unclaimed-sqio9hig
weight10000 (100.00%)
Transaction InfoBlock #26860287/Trx b477f121fe07c1168b829c43ecb19ff75eaa722f
View Raw JSON Data
{
  "trx_id": "b477f121fe07c1168b829c43ecb19ff75eaa722f",
  "block": 26860287,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-16T14:26:54",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "partiko",
      "permlink": "easter-egg-giveaway-5-winner-announcement--two-easter-eggs-unclaimed-sqio9hig",
      "weight": 10000
    }
  ]
}
2018/10/16 03:10:54
voterstricker
authortherealwolf
permlinkwitness-essentials-pricefeed-update-docker-support-usdt-usd-calculation
weight10000 (100.00%)
Transaction InfoBlock #26846776/Trx 033915b6eeaa79ea0732890c279b6a6713d1d8e9
View Raw JSON Data
{
  "trx_id": "033915b6eeaa79ea0732890c279b6a6713d1d8e9",
  "block": 26846776,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-16T03:10:54",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "therealwolf",
      "permlink": "witness-essentials-pricefeed-update-docker-support-usdt-usd-calculation",
      "weight": 10000
    }
  ]
}
2018/10/15 23:15:54
voterstricker
authormarcocasario
permlinkfree-resteem-0-03usd-upvote-comment-for-a-chance-to-win-a-usd0-20-upvote-fastest-3-get-a-usd0-15-upvote-bot-on-oct-15-quote-of
weight10000 (100.00%)
Transaction InfoBlock #26842078/Trx 5da595ee2ee6315f3b807feb1dcc022d4d79f865
View Raw JSON Data
{
  "trx_id": "5da595ee2ee6315f3b807feb1dcc022d4d79f865",
  "block": 26842078,
  "trx_in_block": 30,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-15T23:15:54",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "marcocasario",
      "permlink": "free-resteem-0-03usd-upvote-comment-for-a-chance-to-win-a-usd0-20-upvote-fastest-3-get-a-usd0-15-upvote-bot-on-oct-15-quote-of",
      "weight": 10000
    }
  ]
}
strickerupvoted (100.00%) @baiboua / tasteem-8782a9
2018/10/15 13:10:12
voterstricker
authorbaiboua
permlinktasteem-8782a9
weight10000 (100.00%)
Transaction InfoBlock #26829994/Trx 87dc4c70064ee401af8b00f7cb93985fb0ea49a6
View Raw JSON Data
{
  "trx_id": "87dc4c70064ee401af8b00f7cb93985fb0ea49a6",
  "block": 26829994,
  "trx_in_block": 96,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-10-15T13:10:12",
  "op": [
    "vote",
    {
      "voter": "stricker",
      "author": "baiboua",
      "permlink": "tasteem-8782a9",
      "weight": 10000
    }
  ]
}

Account Metadata

POSTING JSON METADATA
profile{"cover_image":"https://cdn.steemitimages.com/DQme33eyhKUpKFV3tYdUF4DpxS12ChSgTMqDymBdJG8Ffb8/steve-halama-698056-unsplash.jpg","profile_image":"https://cdn.steemitimages.com/DQme9hW7eCNxDfSFnrm17ReMfhTUa9hwb9gda4Dju7zMnuR/avatar.jpg","name":"Stricker","location":"Ciudad de Mexico, Mexico"}
JSON METADATA
profile{"cover_image":"https://cdn.steemitimages.com/DQme33eyhKUpKFV3tYdUF4DpxS12ChSgTMqDymBdJG8Ffb8/steve-halama-698056-unsplash.jpg","profile_image":"https://cdn.steemitimages.com/DQme9hW7eCNxDfSFnrm17ReMfhTUa9hwb9gda4Dju7zMnuR/avatar.jpg","name":"Stricker","location":"Ciudad de Mexico, Mexico"}
{
  "posting_json_metadata": {
    "profile": {
      "cover_image": "https://cdn.steemitimages.com/DQme33eyhKUpKFV3tYdUF4DpxS12ChSgTMqDymBdJG8Ffb8/steve-halama-698056-unsplash.jpg",
      "profile_image": "https://cdn.steemitimages.com/DQme9hW7eCNxDfSFnrm17ReMfhTUa9hwb9gda4Dju7zMnuR/avatar.jpg",
      "name": "Stricker",
      "location": "Ciudad de Mexico, Mexico"
    }
  },
  "json_metadata": {
    "profile": {
      "cover_image": "https://cdn.steemitimages.com/DQme33eyhKUpKFV3tYdUF4DpxS12ChSgTMqDymBdJG8Ffb8/steve-halama-698056-unsplash.jpg",
      "profile_image": "https://cdn.steemitimages.com/DQme9hW7eCNxDfSFnrm17ReMfhTUa9hwb9gda4Dju7zMnuR/avatar.jpg",
      "name": "Stricker",
      "location": "Ciudad de Mexico, Mexico"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM7Dn3VYh2HQkb2t1Z24RJufjgch2N43vtJZQfHuMECQWHkEVM651/1
Active
Single Signature
Public Keys
STM6RwjDJ5yK1FqV2asuD9Z5rRToFm29wrRq2QcV42YCMH5N75psJ1/1
Posting
Single Signature
Public Keys
STM5XosSp2fzRffNYArWdcbNAVgQkaADTjVPVApbt5ZXVUzdd2NWZ1/1
App Permissions
Memo
STM7PqXMjPTXSQCJD5F9U94PfMmuYjF3XHLk1RbMR85xLHPn4SDT6
{
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7Dn3VYh2HQkb2t1Z24RJufjgch2N43vtJZQfHuMECQWHkEVM65",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6RwjDJ5yK1FqV2asuD9Z5rRToFm29wrRq2QcV42YCMH5N75psJ",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [
      [
        "partiko-steemcon",
        1
      ]
    ],
    "key_auths": [
      [
        "STM5XosSp2fzRffNYArWdcbNAVgQkaADTjVPVApbt5ZXVUzdd2NWZ",
        1
      ]
    ]
  },
  "memo": "STM7PqXMjPTXSQCJD5F9U94PfMmuYjF3XHLk1RbMR85xLHPn4SDT6"
}

Witness Votes

1 / 30
[
  "steemitboard"
]