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 DelegationsDeleg
+1.897SP
Detailed Balance
| STEEM | ||
| balance | 0.001STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 3.110SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 1.897SP | SP |
| Effective Power | 5.007SP | SP |
| Reward SP (pending) | 0.000SP | SP |
| SBD | ||
| sbd_balance | 0.014SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.000SBD | SBD |
{
"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
| name | stricker |
| id | 1152264 |
| rank | 629,619 |
| reputation | 34668534344 |
| created | 2018-10-11T20:28:33 |
| recovery_account | steem |
| proxy | None |
| post_count | 8 |
| comment_count | 0 |
| lifetime_vote_count | 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 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.001 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.014 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 5058.043308 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 3085.616498 VESTS |
| reward_vesting_balance | 0.000000 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 1970-01-01T00:00:00 |
| last_account_update | 2018-10-12T14:54:39 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 2019-02-17T08:08:33 |
| savings_sbd_last_interest_payment | 1970-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
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
2026/05/18 06:58:24
2026/05/18 06:58:24
| delegator | steem |
| delegatee | stricker |
| vesting shares | 3085.616498 VESTS |
| Transaction Info | Block #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"
}
]
}2026/05/13 07:09:09
2026/05/13 07:09:09
| delegator | steem |
| delegatee | stricker |
| vesting shares | 1629.434820 VESTS |
| Transaction Info | Block #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"
}
]
}2026/04/26 06:09:09
2026/04/26 06:09:09
| delegator | steem |
| delegatee | stricker |
| vesting shares | 3098.132254 VESTS |
| Transaction Info | Block #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"
}
]
}2023/11/14 12:42:18
2023/11/14 12:42:18
| delegator | steem |
| delegatee | stricker |
| vesting shares | 1741.904685 VESTS |
| Transaction Info | Block #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"
}
]
}2023/09/22 11:12:09
2023/09/22 11:12:09
| delegator | steem |
| delegatee | stricker |
| vesting shares | 3685.214427 VESTS |
| Transaction Info | Block #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"
}
]
}2022/11/03 18:34:06
2022/11/03 18:34:06
| delegator | steem |
| delegatee | stricker |
| vesting shares | 3907.265865 VESTS |
| Transaction Info | Block #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"
}
]
}2022/01/17 23:41:51
2022/01/17 23:41:51
| delegator | steem |
| delegatee | stricker |
| vesting shares | 4127.373466 VESTS |
| Transaction Info | Block #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"
}
]
}2021/06/14 06:51:00
2021/06/14 06:51:00
| delegator | steem |
| delegatee | stricker |
| vesting shares | 4311.567754 VESTS |
| Transaction Info | Block #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"
}
]
}2020/12/11 17:02:45
2020/12/11 17:02:45
| delegator | steem |
| delegatee | stricker |
| vesting shares | 4498.989728 VESTS |
| Transaction Info | Block #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"
}
]
}2020/12/06 10:38:03
2020/12/06 10:38:03
| delegator | steem |
| delegatee | stricker |
| vesting shares | 1912.543513 VESTS |
| Transaction Info | Block #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"
}
]
}2020/12/05 20:40:33
2020/12/05 20:40:33
| delegator | steem |
| delegatee | stricker |
| vesting shares | 4505.197582 VESTS |
| Transaction Info | Block #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"
}
]
}2020/11/03 03:58:30
2020/11/03 03:58:30
| delegator | steem |
| delegatee | stricker |
| vesting shares | 1920.017158 VESTS |
| Transaction Info | Block #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"
}
]
}2020/05/09 11:41:57
2020/05/09 11:41:57
| delegator | steem |
| delegatee | stricker |
| vesting shares | 4708.002941 VESTS |
| Transaction Info | Block #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"
}
]
}2020/05/08 16:11:21
2020/05/08 16:11:21
| delegator | steem |
| delegatee | stricker |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #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"
}
]
}2020/02/09 02:05:39
2020/02/09 02:05:39
| delegator | steem |
| delegatee | stricker |
| vesting shares | 4755.740761 VESTS |
| Transaction Info | Block #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
2019/10/11 20:50:12
| 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! <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 Info | Block #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\"]}"
}
]
}2019/03/12 01:40:24
2019/03/12 01:40:24
| delegator | steem |
| delegatee | stricker |
| vesting shares | 4952.054034 VESTS |
| Transaction Info | Block #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
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
| 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 |
| Transaction Info | Block #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"
}
]
}2019/02/05 14:36:12
2019/02/05 14:36:12
| 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 |
| Transaction Info | Block #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"
}
]
}strickerupvoted (100.00%) @elianaahc / patron-a-new-digital-marketing-alternative2018/12/11 01:17:15
strickerupvoted (100.00%) @elianaahc / patron-a-new-digital-marketing-alternative
2018/12/11 01:17:15
| voter | stricker |
| author | elianaahc |
| permlink | patron-a-new-digital-marketing-alternative |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2018/12/11 01:16:45
| voter | stricker |
| author | hatu |
| permlink | eos-gaming-for-the-community-dividends-pvp-auctions-and-more-free-steem-and-eos |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @aggroed / minnow-mayor-town-hall-starts-in-15-min2018/12/11 01:14:06
strickerupvoted (100.00%) @aggroed / minnow-mayor-town-hall-starts-in-15-min
2018/12/11 01:14:06
| voter | stricker |
| author | aggroed |
| permlink | minnow-mayor-town-hall-starts-in-15-min |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2018/12/11 01:13:42
| 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 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @partiko / partiko-weekly-report-12--from-airbnb-to-partiko-6xkvfnkj2018/12/11 01:13:00
strickerupvoted (100.00%) @partiko / partiko-weekly-report-12--from-airbnb-to-partiko-6xkvfnkj
2018/12/11 01:13:00
| voter | stricker |
| author | partiko |
| permlink | partiko-weekly-report-12--from-airbnb-to-partiko-6xkvfnkj |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerfollowed @steemitdev2018/12/10 02:52:30
strickerfollowed @steemitdev
2018/12/10 02:52:30
| required auths | [] |
| required posting auths | ["stricker"] |
| id | follow |
| json | ["follow",{"follower":"stricker","following":"steemitdev","what":["blog"]}] |
| Transaction Info | Block #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\"]}]"
}
]
}strickerupvoted (100.00%) @steemitdev / upcoming-changes-to-api-steemit-com2018/12/10 02:51:42
strickerupvoted (100.00%) @steemitdev / upcoming-changes-to-api-steemit-com
2018/12/10 02:51:42
| voter | stricker |
| author | steemitdev |
| permlink | upcoming-changes-to-api-steemit-com |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @stellabelle / partiko-ios-update-is-live-7cx7yqdb2018/11/30 01:03:57
strickerupvoted (100.00%) @stellabelle / partiko-ios-update-is-live-7cx7yqdb
2018/11/30 01:03:57
| voter | stricker |
| author | stellabelle |
| permlink | partiko-ios-update-is-live-7cx7yqdb |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}2018/11/26 19:37:21
2018/11/26 19:37:21
| delegator | steem |
| delegatee | stricker |
| vesting shares | 25151.718820 VESTS |
| Transaction Info | Block #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-7f65222018/11/26 01:05:06
strickerupvoted (100.00%) @baiboua / tasteem-7f6522
2018/11/26 01:05:06
| voter | stricker |
| author | baiboua |
| permlink | tasteem-7f6522 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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-0ab4a12018/11/25 02:21:09
strickerupvoted (100.00%) @baiboua / tasteem-0ab4a1
2018/11/25 02:21:09
| voter | stricker |
| author | baiboua |
| permlink | tasteem-0ab4a1 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}2018/11/25 02:20:57
2018/11/25 02:20:57
| voter | stricker |
| author | baiboua |
| permlink | 9mqndych |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}2018/11/25 02:17:21
2018/11/25 02:17:21
| voter | stricker |
| author | baiboua |
| permlink | xbkywd47 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @partiko / announcing-the-partiko-delegation-plan-dp3ywzww2018/11/25 02:15:57
strickerupvoted (100.00%) @partiko / announcing-the-partiko-delegation-plan-dp3ywzww
2018/11/25 02:15:57
| voter | stricker |
| author | partiko |
| permlink | announcing-the-partiko-delegation-plan-dp3ywzww |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}shredz7upvoted (100.00%) @stricker / how-to-create-a-blockchain-with-javascript2018/11/19 00:56:21
shredz7upvoted (100.00%) @stricker / how-to-create-a-blockchain-with-javascript
2018/11/19 00:56:21
| voter | shredz7 |
| author | stricker |
| permlink | how-to-create-a-blockchain-with-javascript |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @jrvacation / steemfest3keytakeaways-05gqa4qhbo2018/11/11 00:41:54
strickerupvoted (100.00%) @jrvacation / steemfest3keytakeaways-05gqa4qhbo
2018/11/11 00:41:54
| voter | stricker |
| author | jrvacation |
| permlink | steemfest3keytakeaways-05gqa4qhbo |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}2018/10/30 13:41:33
2018/10/30 13:41:33
| voter | stricker |
| author | baiboua |
| permlink | 0nhtfw8u |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @baiboua / steemit-fqwputpy2018/10/26 15:31:06
strickerupvoted (100.00%) @baiboua / steemit-fqwputpy
2018/10/26 15:31:06
| voter | stricker |
| author | baiboua |
| permlink | steemit-fqwputpy |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2018/10/26 02:40:42
| 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) : <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 Info | Block #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\"]}"
}
]
}strickerupvoted (100.00%) @stricker / how-to-create-a-blockchain-with-javascript2018/10/25 14:34:09
strickerupvoted (100.00%) @stricker / how-to-create-a-blockchain-with-javascript
2018/10/25 14:34:09
| voter | stricker |
| author | stricker |
| permlink | how-to-create-a-blockchain-with-javascript |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @baiboua / green-photography-contest-3-697244912d97eest2018/10/25 14:06:30
strickerupvoted (100.00%) @baiboua / green-photography-contest-3-697244912d97eest
2018/10/25 14:06:30
| voter | stricker |
| author | baiboua |
| permlink | green-photography-contest-3-697244912d97eest |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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 SP2018/10/25 14:04:51
strickerclaimed reward balance: 3.089 SP
2018/10/25 14:04:51
| account | stricker |
| reward steem | 0.000 STEEM |
| reward sbd | 0.000 SBD |
| reward vests | 5023.733116 VESTS |
| Transaction Info | Block #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"
}
]
}strickerreceived 3.089 SP author reward for @stricker / como-crear-un-blockchain-con-javascript-y-nodejs2018/10/25 04:18:24
strickerreceived 3.089 SP author reward for @stricker / como-crear-un-blockchain-con-javascript-y-nodejs
2018/10/25 04:18:24
| 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 |
| Transaction Info | Block #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"
}
]
}strickerupvoted (100.00%) @steemanchor / stellarx-lists-steem-and-sbd2018/10/24 19:23:27
strickerupvoted (100.00%) @steemanchor / stellarx-lists-steem-and-sbd
2018/10/24 19:23:27
| voter | stricker |
| author | steemanchor |
| permlink | stellarx-lists-steem-and-sbd |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @baiboua / green-photography-contest-1-xxbq89hp2018/10/23 12:26:03
strickerupvoted (100.00%) @baiboua / green-photography-contest-1-xxbq89hp
2018/10/23 12:26:03
| voter | stricker |
| author | baiboua |
| permlink | green-photography-contest-1-xxbq89hp |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @therealwolf / 7-hours-left2018/10/22 00:09:45
strickerupvoted (100.00%) @therealwolf / 7-hours-left
2018/10/22 00:09:45
| voter | stricker |
| author | therealwolf |
| permlink | 7-hours-left |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}strickerupvoted (100.00%) @baiboua / portrait-photography-contest-day-4-d43531a3eecf4est2018/10/20 19:23:30
strickerupvoted (100.00%) @baiboua / portrait-photography-contest-day-4-d43531a3eecf4est
2018/10/20 19:23:30
| voter | stricker |
| author | baiboua |
| permlink | portrait-photography-contest-day-4-d43531a3eecf4est |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2018/10/20 19:23:06
| parent author | rtranslator |
| parent permlink | what-really-annoys-you |
| author | stricker |
| permlink | stricker-re-rtranslator-what-really-annoys-you-20181020t192304928z |
| title | |
| body | Posted using [Partiko Android](https://steemit.com/@partiko-android) |
| json metadata | {"app":"partiko"} |
| Transaction Info | Block #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\"}"
}
]
}strickerupvoted (100.00%) @rtranslator / what-really-annoys-you2018/10/20 19:22:42
strickerupvoted (100.00%) @rtranslator / what-really-annoys-you
2018/10/20 19:22:42
| voter | stricker |
| author | rtranslator |
| permlink | what-really-annoys-you |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2018/10/20 04:41:45
| 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. [](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 Info | Block #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[](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 @steemitboard2018/10/19 13:30:18
strickervoted for witness @steemitboard
2018/10/19 13:30:18
| account | stricker |
| witness | steemitboard |
| approve | true |
| Transaction Info | Block #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
}
]
}strickerfollowed @steemitboard2018/10/19 13:28:48
strickerfollowed @steemitboard
2018/10/19 13:28:48
| required auths | [] |
| required posting auths | ["stricker"] |
| id | follow |
| json | ["follow",{"follower":"stricker","following":"steemitboard","what":["blog"]}] |
| Transaction Info | Block #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
2018/10/19 06:37:39
| 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) : [](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 Info | Block #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[](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\"]}"
}
]
}smartcoinsupvoted (10.00%) @stricker / how-to-create-a-blockchain-with-javascript2018/10/19 01:03:39
smartcoinsupvoted (10.00%) @stricker / how-to-create-a-blockchain-with-javascript
2018/10/19 01:03:39
| voter | smartcoins |
| author | stricker |
| permlink | how-to-create-a-blockchain-with-javascript |
| weight | 1000 (10.00%) |
| Transaction Info | Block #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
}
]
}sensationupvoted (100.00%) @stricker / how-to-create-a-blockchain-with-javascript2018/10/19 00:55:18
sensationupvoted (100.00%) @stricker / how-to-create-a-blockchain-with-javascript
2018/10/19 00:55:18
| voter | sensation |
| author | stricker |
| permlink | how-to-create-a-blockchain-with-javascript |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}councilupvoted (10.00%) @stricker / how-to-create-a-blockchain-with-javascript2018/10/19 00:31:45
councilupvoted (10.00%) @stricker / how-to-create-a-blockchain-with-javascript
2018/10/19 00:31:45
| voter | council |
| author | stricker |
| permlink | how-to-create-a-blockchain-with-javascript |
| weight | 1000 (10.00%) |
| Transaction Info | Block #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
}
]
}strickerpublished a new post: how-to-create-a-blockchain-with-javascript2018/10/19 00:12:06
strickerpublished a new post: how-to-create-a-blockchain-with-javascript
2018/10/19 00:12:06
| 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 @@ 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 Info | Block #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\"]}"
}
]
}strickerupdated options for how-to-create-a-blockchain-with-javascript2018/10/19 00:06:36
strickerupdated options for how-to-create-a-blockchain-with-javascript
2018/10/19 00:06:36
| 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 | [] |
| Transaction Info | Block #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": []
}
]
}strickerpublished a new post: how-to-create-a-blockchain-with-javascript2018/10/19 00:06:36
strickerpublished a new post: how-to-create-a-blockchain-with-javascript
2018/10/19 00:06:36
| 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. 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 Info | Block #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\"}"
}
]
}strickerupvoted (100.00%) @partiko / help-steem-to-the-moon-earn-free-partiko-points-axaovyrn2018/10/18 22:57:24
strickerupvoted (100.00%) @partiko / help-steem-to-the-moon-earn-free-partiko-points-axaovyrn
2018/10/18 22:57:24
| voter | stricker |
| author | partiko |
| permlink | help-steem-to-the-moon-earn-free-partiko-points-axaovyrn |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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 SP2018/10/18 22:47:15
strickerclaimed reward balance: 0.013 SBD, 0.021 SP
2018/10/18 22:47:15
| account | stricker |
| reward steem | 0.000 STEEM |
| reward sbd | 0.013 SBD |
| reward vests | 34.310192 VESTS |
| Transaction Info | Block #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-blog2018/10/18 21:18:51
strickerreceived 0.013 SBD, 0.021 SP author reward for @stricker / bienvenido-a-mi-blog
2018/10/18 21:18:51
| author | stricker |
| permlink | bienvenido-a-mi-blog |
| sbd payout | 0.013 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 34.310192 VESTS |
| Transaction Info | Block #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 / -0a64b0a488b712018/10/18 14:01:33
strickerupvoted (100.00%) @baiboua / -0a64b0a488b71
2018/10/18 14:01:33
| voter | stricker |
| author | baiboua |
| permlink | -0a64b0a488b71 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}darkdanzaupvoted (100.00%) @stricker / como-crear-un-blockchain-con-javascript-y-nodejs2018/10/18 05:21:51
darkdanzaupvoted (100.00%) @stricker / como-crear-un-blockchain-con-javascript-y-nodejs
2018/10/18 05:21:51
| voter | darkdanza |
| author | stricker |
| permlink | como-crear-un-blockchain-con-javascript-y-nodejs |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}smartcoinsupvoted (10.00%) @stricker / como-crear-un-blockchain-con-javascript-y-nodejs2018/10/18 05:13:00
smartcoinsupvoted (10.00%) @stricker / como-crear-un-blockchain-con-javascript-y-nodejs
2018/10/18 05:13:00
| voter | smartcoins |
| author | stricker |
| permlink | como-crear-un-blockchain-con-javascript-y-nodejs |
| weight | 1000 (10.00%) |
| Transaction Info | Block #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
}
]
}tomask-deupvoted (100.00%) @stricker / como-crear-un-blockchain-con-javascript-y-nodejs2018/10/18 04:40:45
tomask-deupvoted (100.00%) @stricker / como-crear-un-blockchain-con-javascript-y-nodejs
2018/10/18 04:40:45
| voter | tomask-de |
| author | stricker |
| permlink | como-crear-un-blockchain-con-javascript-y-nodejs |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}glitterfartupvoted (10.00%) @stricker / como-crear-un-blockchain-con-javascript-y-nodejs2018/10/18 04:36:06
glitterfartupvoted (10.00%) @stricker / como-crear-un-blockchain-con-javascript-y-nodejs
2018/10/18 04:36:06
| voter | glitterfart |
| author | stricker |
| permlink | como-crear-un-blockchain-con-javascript-y-nodejs |
| weight | 1000 (10.00%) |
| Transaction Info | Block #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
}
]
}strickerupdated options for como-crear-un-blockchain-con-javascript-y-nodejs2018/10/18 04:18:24
strickerupdated options for como-crear-un-blockchain-con-javascript-y-nodejs
2018/10/18 04:18:24
| 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 | [] |
| Transaction Info | Block #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": []
}
]
}strickerpublished a new post: como-crear-un-blockchain-con-javascript-y-nodejs2018/10/18 04:18:24
strickerpublished a new post: como-crear-un-blockchain-con-javascript-y-nodejs
2018/10/18 04:18:24
| 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.  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 Info | Block #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\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\"}"
}
]
}strickerupvoted (100.00%) @baiboua / portrait-photography-contest-day-2-uybymtc22018/10/18 04:14:54
strickerupvoted (100.00%) @baiboua / portrait-photography-contest-day-2-uybymtc2
2018/10/18 04:14:54
| voter | stricker |
| author | baiboua |
| permlink | portrait-photography-contest-day-2-uybymtc2 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2018/10/16 17:49:00
| voter | stricker |
| author | najoh |
| permlink | bounty-to-create-smart-contracts-on-nuls-bounty-to-write-an-article-about-nuls |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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-2147832018/10/16 17:47:33
strickerupvoted (100.00%) @baiboua / tasteem-214783
2018/10/16 17:47:33
| voter | stricker |
| author | baiboua |
| permlink | tasteem-214783 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2018/10/16 14:26:54
| voter | stricker |
| author | partiko |
| permlink | easter-egg-giveaway-5-winner-announcement--two-easter-eggs-unclaimed-sqio9hig |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2018/10/16 03:10:54
| voter | stricker |
| author | therealwolf |
| permlink | witness-essentials-pricefeed-update-docker-support-usdt-usd-calculation |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2018/10/15 23:15:54
| 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 (100.00%) |
| Transaction Info | Block #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-8782a92018/10/15 13:10:12
strickerupvoted (100.00%) @baiboua / tasteem-8782a9
2018/10/15 13:10:12
| voter | stricker |
| author | baiboua |
| permlink | tasteem-8782a9 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress85.94%
{
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779087504
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779087504
},
"rc_account": {
"account": "stricker",
"max_rc": "14200622342",
"max_rc_creation_adjustment": {
"amount": "6056962536",
"nai": "@@000000037",
"precision": 6
},
"rc_manabar": {
"current_mana": "14200622342",
"last_update_time": 1779087504
}
}
}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
01.steemitboard |
[ "steemitboard" ]