VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS57.42%
Net Worth
1.237USD
STEEM
0.001STEEM
SBD
0.939SBD
Own SP
14.308SP
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 | 14.308SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 0.000SP | SP |
| Effective Power | 14.308SP | SP |
| Reward SP (pending) | 0.000SP | SP |
| SBD | ||
| sbd_balance | 0.939SBD | 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": "23299.849507 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "0.000000 VESTS",
"sbd_balance": "0.939 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "0.000 SBD",
"conversions": []
}Account Info
| name | prodicode |
| id | 633180 |
| rank | 100,883 |
| reputation | 322289636598 |
| created | 2018-01-20T17:49:30 |
| recovery_account | steem |
| proxy | None |
| post_count | 17 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 1 |
| last_post | 2018-10-04T16:45:24 |
| last_root_post | 2018-10-04T16:45:24 |
| last_vote_time | 2018-01-30T18:19:54 |
| 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.939 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 23299.849507 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 0.000000 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-01-20T19:19:09 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 2018-06-30T00:46:48 |
| savings_sbd_last_interest_payment | 1970-01-01T00:00:00 |
{
"active": {
"account_auths": [],
"key_auths": [
[
"STM8XcSkVHG1Tf1UcyTgktBpj3jZctSrqR3KJvuLuHCbct83DBnTc",
1
]
],
"weight_threshold": 1
},
"balance": "0.001 STEEM",
"can_vote": true,
"comment_count": 0,
"created": "2018-01-20T17:49:30",
"curation_rewards": 14,
"delegated_vesting_shares": "0.000000 VESTS",
"downvote_manabar": {
"current_mana": "5824962377",
"last_update_time": 1588948041
},
"guest_bloggers": [],
"id": 633180,
"json_metadata": "{\"profile\":{\"profile_image\":\"https://scontent.fsbz1-2.fna.fbcdn.net/v/t1.0-1/p200x200/19510660_428578474193665_5591012056856314643_n.jpg?oh=73c2e8f14ae4af6d09c85d84a41c617b&oe=5AE89C97\",\"cover_image\":\"https://stockx-assets.imgix.net/logo/stockx-header-logo-white.svg\",\"name\":\"Tudor Gheorghiu\",\"website\":\"https://prodicode.com\"}}",
"last_account_recovery": "1970-01-01T00:00:00",
"last_account_update": "2018-01-20T19:19:09",
"last_owner_update": "1970-01-01T00:00:00",
"last_post": "2018-10-04T16:45:24",
"last_root_post": "2018-10-04T16:45:24",
"last_vote_time": "2018-01-30T18:19:54",
"lifetime_vote_count": 0,
"market_history": [],
"memo_key": "STM8aXDoav3Zgjs5CHdK5xfnb8fmsyM8DiJmqbBvGrbCHda8aL5we",
"mined": false,
"name": "prodicode",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"other_history": [],
"owner": {
"account_auths": [],
"key_auths": [
[
"STM7Jp9Bn1GT4nPzwza2H9FTTqY9WWqVqTe14wJ22dKu35idPWnq3",
1
]
],
"weight_threshold": 1
},
"pending_claimed_accounts": 0,
"post_bandwidth": 0,
"post_count": 17,
"post_history": [],
"posting": {
"account_auths": [
[
"dtube.app",
1
],
[
"utopian.app",
1
]
],
"key_auths": [
[
"STM5SPb1xJHJkEBkBaHvaSChSX6gF3ka9Ro8JwBCHDEHHb75MJDcN",
1
]
],
"weight_threshold": 1
},
"posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://scontent.fsbz1-2.fna.fbcdn.net/v/t1.0-1/p200x200/19510660_428578474193665_5591012056856314643_n.jpg?oh=73c2e8f14ae4af6d09c85d84a41c617b&oe=5AE89C97\",\"cover_image\":\"https://stockx-assets.imgix.net/logo/stockx-header-logo-white.svg\",\"name\":\"Tudor Gheorghiu\",\"website\":\"https://prodicode.com\"}}",
"posting_rewards": 21741,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"proxy": "",
"received_vesting_shares": "0.000000 VESTS",
"recovery_account": "steem",
"reputation": "322289636598",
"reset_account": "null",
"reward_sbd_balance": "0.000 SBD",
"reward_steem_balance": "0.000 STEEM",
"reward_vesting_balance": "0.000000 VESTS",
"reward_vesting_steem": "0.000 STEEM",
"savings_balance": "0.000 STEEM",
"savings_sbd_balance": "0.000 SBD",
"savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_sbd_seconds": "0",
"savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
"savings_withdraw_requests": 0,
"sbd_balance": "0.939 SBD",
"sbd_last_interest_payment": "2018-06-30T00:46:48",
"sbd_seconds": "0",
"sbd_seconds_last_update": "2018-06-30T00:46:48",
"tags_usage": [],
"to_withdraw": 0,
"transfer_history": [],
"vesting_balance": "0.000 STEEM",
"vesting_shares": "23299.849507 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"vote_history": [],
"voting_manabar": {
"current_mana": "23299849507",
"last_update_time": 1588948041
},
"voting_power": 0,
"withdraw_routes": 0,
"withdrawn": 0,
"witness_votes": [
"utopian-io"
],
"witnesses_voted_for": 1,
"rank": 100883
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
steemdelegated 0.000 SP to @prodicode2020/05/08 14:27:21
steemdelegated 0.000 SP to @prodicode
2020/05/08 14:27:21
| delegator | steem |
| delegatee | prodicode |
| vesting shares | 0.000000 VESTS |
| Transaction Info | Block #43199125/Trx a021bfe2515c3037fedf76da04f502a100891459 |
View Raw JSON Data
{
"trx_id": "a021bfe2515c3037fedf76da04f502a100891459",
"block": 43199125,
"trx_in_block": 10,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-05-08T14:27:21",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "prodicode",
"vesting_shares": "0.000000 VESTS"
}
]
}2020/01/20 19:19:18
2020/01/20 19:19:18
| parent author | prodicode |
| parent permlink | purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612 |
| author | steemitboard |
| permlink | steemitboard-notify-prodicode-20200120t191918000z |
| title | |
| body | Congratulations @prodicode! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@prodicode/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@prodicode) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=prodicode)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| Transaction Info | Block #40101618/Trx 900891a23354ed637e4ba3ab78e709608600bab0 |
View Raw JSON Data
{
"trx_id": "900891a23354ed637e4ba3ab78e709608600bab0",
"block": 40101618,
"trx_in_block": 15,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-01-20T19:19:18",
"op": [
"comment",
{
"parent_author": "prodicode",
"parent_permlink": "purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612",
"author": "steemitboard",
"permlink": "steemitboard-notify-prodicode-20200120t191918000z",
"title": "",
"body": "Congratulations @prodicode! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@prodicode/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@prodicode) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=prodicode)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
}
]
}todowebupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2019/09/30 01:47:39
todowebupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2019/09/30 01:47:39
| voter | todoweb |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #36861209/Trx a950fc91f1a90fd82f629512c4fe17e4f8e9bfcb |
View Raw JSON Data
{
"trx_id": "a950fc91f1a90fd82f629512c4fe17e4f8e9bfcb",
"block": 36861209,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-09-30T01:47:39",
"op": [
"vote",
{
"voter": "todoweb",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}dtubesent 0.001 STEEM to @prodicode- "Time is running out, claim your DTube account now before anyone else can! Login at https://d.tube"2019/08/22 18:01:15
dtubesent 0.001 STEEM to @prodicode- "Time is running out, claim your DTube account now before anyone else can! Login at https://d.tube"
2019/08/22 18:01:15
| from | dtube |
| to | prodicode |
| amount | 0.001 STEEM |
| memo | Time is running out, claim your DTube account now before anyone else can! Login at https://d.tube |
| Transaction Info | Block #35781633/Trx b943d91f393fddf5578185295943c47d8c6faa36 |
View Raw JSON Data
{
"trx_id": "b943d91f393fddf5578185295943c47d8c6faa36",
"block": 35781633,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-08-22T18:01:15",
"op": [
"transfer",
{
"from": "dtube",
"to": "prodicode",
"amount": "0.001 STEEM",
"memo": "Time is running out, claim your DTube account now before anyone else can! Login at https://d.tube"
}
]
}2019/01/20 18:55:51
2019/01/20 18:55:51
| parent author | prodicode |
| parent permlink | purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612 |
| author | steemitboard |
| permlink | steemitboard-notify-prodicode-20190120t185551000z |
| title | |
| body | Congratulations @prodicode! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@prodicode/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_[Click here to view your Board](https://steemitboard.com/@prodicode)_</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 #29628561/Trx 0d3b6d043ed0a90c145df6e11c1f22676529b7f3 |
View Raw JSON Data
{
"trx_id": "0d3b6d043ed0a90c145df6e11c1f22676529b7f3",
"block": 29628561,
"trx_in_block": 9,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-01-20T18:55:51",
"op": [
"comment",
{
"parent_author": "prodicode",
"parent_permlink": "purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612",
"author": "steemitboard",
"permlink": "steemitboard-notify-prodicode-20190120t185551000z",
"title": "",
"body": "Congratulations @prodicode! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@prodicode/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_[Click here to view your Board](https://steemitboard.com/@prodicode)_</sub>\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\"]}"
}
]
}steemdelegated 1.234 SP to @prodicode2019/01/03 23:01:09
steemdelegated 1.234 SP to @prodicode
2019/01/03 23:01:09
| delegator | steem |
| delegatee | prodicode |
| vesting shares | 2009.699801 VESTS |
| Transaction Info | Block #29144283/Trx 2fbcea6055190a99f0c94ac32910fa1b0a3104ad |
View Raw JSON Data
{
"trx_id": "2fbcea6055190a99f0c94ac32910fa1b0a3104ad",
"block": 29144283,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-01-03T23:01:09",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "prodicode",
"vesting_shares": "2009.699801 VESTS"
}
]
}steemdelegated 4.243 SP to @prodicode2018/11/26 19:05:00
steemdelegated 4.243 SP to @prodicode
2018/11/26 19:05:00
| delegator | steem |
| delegatee | prodicode |
| vesting shares | 6909.912621 VESTS |
| Transaction Info | Block #28045841/Trx 2e99361c18162df52db3e88f611bd1e9ef286992 |
View Raw JSON Data
{
"trx_id": "2e99361c18162df52db3e88f611bd1e9ef286992",
"block": 28045841,
"trx_in_block": 25,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-11-26T19:05:00",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "prodicode",
"vesting_shares": "6909.912621 VESTS"
}
]
}2018/10/04 17:01:39
2018/10/04 17:01:39
| parent author | prodicode |
| parent permlink | purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612 |
| author | pinoy |
| permlink | re-prodicode-purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612-20181004t170137994z |
| title | fossbot voter comment |
| body | I upvoted your post. Cheers to you. @Pinoy Posted using https://Steeming.com condenser site. |
| json metadata | {} |
| Transaction Info | Block #26518037/Trx b90a3f37729e5beed2dedebe00d82af4e3126b65 |
View Raw JSON Data
{
"trx_id": "b90a3f37729e5beed2dedebe00d82af4e3126b65",
"block": 26518037,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-10-04T17:01:39",
"op": [
"comment",
{
"parent_author": "prodicode",
"parent_permlink": "purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612",
"author": "pinoy",
"permlink": "re-prodicode-purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612-20181004t170137994z",
"title": "fossbot voter comment",
"body": "I upvoted your post.\r\n\r\nCheers to you.\r\n@Pinoy\r\n\r\nPosted using https://Steeming.com condenser site.",
"json_metadata": "{}"
}
]
}2018/10/04 17:01:30
2018/10/04 17:01:30
| voter | pinoy |
| author | prodicode |
| permlink | purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #26518034/Trx ce6069cdf76705ec83d6e5b87a44ad2e7058dd0a |
View Raw JSON Data
{
"trx_id": "ce6069cdf76705ec83d6e5b87a44ad2e7058dd0a",
"block": 26518034,
"trx_in_block": 32,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-10-04T17:01:30",
"op": [
"vote",
{
"voter": "pinoy",
"author": "prodicode",
"permlink": "purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612",
"weight": 10000
}
]
}2018/10/04 16:45:33
2018/10/04 16:45:33
| voter | fastresteem |
| author | prodicode |
| permlink | purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612 |
| weight | 100 (1.00%) |
| Transaction Info | Block #26517715/Trx 0cd8c190488efee76e1f487bdb7dbb14cc08b6e5 |
View Raw JSON Data
{
"trx_id": "0cd8c190488efee76e1f487bdb7dbb14cc08b6e5",
"block": 26517715,
"trx_in_block": 22,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-10-04T16:45:33",
"op": [
"vote",
{
"voter": "fastresteem",
"author": "prodicode",
"permlink": "purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612",
"weight": 100
}
]
}prodicodeupdated options for purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da86122018/10/04 16:45:24
prodicodeupdated options for purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612
2018/10/04 16:45:24
| author | prodicode |
| permlink | purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612 |
| max accepted payout | 1000000.000 SBD |
| percent steem dollars | 10000 |
| allow votes | true |
| allow curation rewards | true |
| extensions | [[0,{"beneficiaries":[{"account":"esteemapp","weight":1000}]}]] |
| Transaction Info | Block #26517712/Trx 0a9b8c5bf3d26932cd84196bc55bcd2e6c69ce09 |
View Raw JSON Data
{
"trx_id": "0a9b8c5bf3d26932cd84196bc55bcd2e6c69ce09",
"block": 26517712,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-10-04T16:45:24",
"op": [
"comment_options",
{
"author": "prodicode",
"permlink": "purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612",
"max_accepted_payout": "1000000.000 SBD",
"percent_steem_dollars": 10000,
"allow_votes": true,
"allow_curation_rewards": true,
"extensions": [
[
0,
{
"beneficiaries": [
{
"account": "esteemapp",
"weight": 1000
}
]
}
]
]
}
]
}prodicodepublished a new post: purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da86122018/10/04 16:45:24
prodicodepublished a new post: purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612
2018/10/04 16:45:24
| parent author | |
| parent permlink | crypto |
| author | prodicode |
| permlink | purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612 |
| title | Purple - Fast, Programmable, Multi-Asset Blockchain Ecosystem |
| body | https://i.imgur.com/R62A4w6.png **What is Purple?** Purple is an incredibly fast, multi-asset protocol that can be programmed using Turing Complete programming languages. It is been built from scratch without any bias towards existing or emerging technologies and has started out as both a curiosity and frustration with existing blockchain technology. It's mission is to achieve the following: * Provide a completely decentralized multi-asset ecosystem. * Achieve the highest scalability level possible on a public blockchain protocol. * Be easy to use and to understand for both technical and non-technical persons. **How fast is Purple?** With the current architecture, Purple can process more than a million transactions per second assuming there are more than a hundred active miners. This is made possible by dividing the ledger into shards each of which has it's own consensus algorithm and set of participating nodes. With the current unoptimized code, the consensus algorithm can process ~13000 transactions per second. What sharding does is enable the parallel processing of transactions. In Purple there will be 256 such shards, each represented by a single byte. This means that maximum throughput is equal to tps x num_of_shards which is 13000 x 256 = 3.4 million transactions per second. Future optimizations should increase this number even further. **What consensus algorithm does Purple use?** Purple uses a stateful asynchronous algorithm for achieving consensus on which transactions are to be written to the ledger. Being stateful means that there are a number of designated nodes that are actively participating in the consensus algorithm in the same way as in Proof of Stake. However, that is it's only similarity since the algorithm employed by the participants relies on tracking the causality of network events that are broadcasted by the participants and then assembling a partial causal graph that is then reduced to a total ordering of events. The rules for assembling this causal graph make it so that all participating nodes deterministically choose the same events that are to be applied to the state, as long as up to a third of participants are either byzantine (malicious) or crashed. In order to prevent this, nodes wanting to participate in the consensus algorithm must solve a computational puzzle of deterministic complexity and to provide a valid Proof of Work. This entry phase represents the synchronous part of the system. It can be said then that Purple is a semi-synchronous system with the synchronous part serving as an adjustable bottleneck for the asynchronous part. **Mining** From a miner's standpoint, it can be said that mining on the Purple network feels quite similar to mining on the Bitcoin or Ethereum networks. But this is only on the surface level, the mining process in Purple is actually completely different from any other protocol. In Bitcoin, miners approve transactions by providing a valid Proof of Work and by choosing a number of pending transactions to be written in the ledger. While this works, it also means that the main bottleneck is the Proof of Work algorithm. In Purple, miners who provide a valid Proof of Work are eligible to approve transactions in a designated period. During that period they broadcast network events that include the transactions that they wish to approve. After the period has ended they will be required to issue a leave event which transfers all of the fees of the transactions to the address chosen by the miner. If a miner crashes or behaves maliciously during it's designated period, it will be removed by the other participants and will lose all of it's collected fees. **Multi-asset support** In Purple, multiple currencies/assets are handled at the protocol level. This increases the richness of the economic properties of the protocol. For example, transaction and smart contract fees can be paid in any listed currency if the miners accept it. This also means that a decentralized exchange between all listed currencies can exist at the protocol layer, simplifying the life of users immensely. At the same time, if say the main token of the protocol goes somehow loses it's value or is compromised in some way, the protocol can still function and support the other listed currencies. **Supported programming languages** The PurpleVM supports the execution of webassembly bytecode which means that any programming language that can compile to WASM can be used to write smart contracts and decentralized applications. The languages that are supported include: * C/C++ * C# * Golang * Java * Rust * Haskell * Python * Typescript * Lua * Kotlin * Scheme **What is the story behind Purple?** It started out as a mere curiosity in the technology powering Bitcoin and Ethereum and has since evolved into a thing of it's own. The main motivation behind building such a platform was the lack of tooling and ease of use for developing decentralized applications which along with the issue of scalability are the main impediments of mass-adoption. To this day there is no platform that offers all required properties which are: complete decentralization, scalability and ease of use. Most provide only one or two of the three. Purple strives to achieve all of the three. **What is the current status of the project?** Purple is in heavy development but will soon enter the testnet phase. **When will the mainnet be launched?** We plan to launch Purple on the 1st of February 2019. **Will there be a crowdsale?** Yes, we wish to host a crowdsale in late 2018. More info about this is coming soon. **Links** * Whitepaper - https://purpleprotocol.org/whitepaper/ * Website - https://purpleprotocol.org/ * Github - https://github.com/purpleprotocol * Twitter - https://twitter.com/purple_protocol * Facebook - https://www.facebook.com/purpleprotocol/ * Medium - https://medium.com/purple-protocol * Discord - https://discord.gg/C5CGZsM * Telegram - https://t.me/purple_protocol |
| json metadata | {"links":["https://purpleprotocol.org/whitepaper/","https://purpleprotocol.org/","https://github.com/purpleprotocol","https://twitter.com/purple_protocol","https://www.facebook.com/purpleprotocol/","https://medium.com/purple-protocol","https://discord.gg/C5CGZsM","https://t.me/purple_protocol"],"image":["https://i.imgur.com/R62A4w6.png"],"tags":["crypto"],"app":"esteem/1.6.0","format":"markdown+html","community":"esteem"} |
| Transaction Info | Block #26517712/Trx 0a9b8c5bf3d26932cd84196bc55bcd2e6c69ce09 |
View Raw JSON Data
{
"trx_id": "0a9b8c5bf3d26932cd84196bc55bcd2e6c69ce09",
"block": 26517712,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-10-04T16:45:24",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "crypto",
"author": "prodicode",
"permlink": "purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612",
"title": "Purple - Fast, Programmable, Multi-Asset Blockchain Ecosystem",
"body": "https://i.imgur.com/R62A4w6.png\n\n**What is Purple?**\nPurple is an incredibly fast, multi-asset protocol that can be programmed using Turing Complete programming languages. It is been built from scratch without any bias towards existing or emerging technologies and has started out as both a curiosity and frustration with existing blockchain technology. It's mission is to achieve the following:\n\n* Provide a completely decentralized multi-asset ecosystem.\n* Achieve the highest scalability level possible on a public blockchain protocol.\n* Be easy to use and to understand for both technical and non-technical persons.\n\n\n**How fast is Purple?**\nWith the current architecture, Purple can process more than a million transactions per second assuming there are more than a hundred active miners. This is made possible by dividing the ledger into shards each of which has it's own consensus algorithm and set of participating nodes. With the current unoptimized code, the consensus algorithm can process ~13000 transactions per second. What sharding does is enable the parallel processing of transactions. In Purple there will be 256 such shards, each represented by a single byte. This means that maximum throughput is equal to tps x num_of_shards which is 13000 x 256 = 3.4 million transactions per second. Future optimizations should increase this number even further.\n\n**What consensus algorithm does Purple use?**\nPurple uses a stateful asynchronous algorithm for achieving consensus on which transactions are to be written to the ledger. Being stateful means that there are a number of designated nodes that are actively participating in the consensus algorithm in the same way as in Proof of Stake. However, that is it's only similarity since the algorithm employed by the participants relies on tracking the causality of network events that are broadcasted by the participants and then assembling a partial causal graph that is then reduced to a total ordering of events.\n\nThe rules for assembling this causal graph make it so that all participating nodes deterministically choose the same events that are to be applied to the state, as long as up to a third of participants are either byzantine (malicious) or crashed. In order to prevent this, nodes wanting to participate in the consensus algorithm must solve a computational puzzle of deterministic complexity and to provide a valid Proof of Work. This entry phase represents the synchronous part of the system.\n\nIt can be said then that Purple is a semi-synchronous system with the synchronous part serving as an adjustable bottleneck for the asynchronous part.\n\n**Mining**\nFrom a miner's standpoint, it can be said that mining on the Purple network feels quite similar to mining on the Bitcoin or Ethereum networks. But this is only on the surface level, the mining process in Purple is actually completely different from any other protocol. In Bitcoin, miners approve transactions by providing a valid Proof of Work and by choosing a number of pending transactions to be written in the ledger. While this works, it also means that the main bottleneck is the Proof of Work algorithm. In Purple, miners who provide a valid Proof of Work are eligible to approve transactions in a designated period. During that period they broadcast network events that include the transactions that they wish to approve. After the period has ended they will be required to issue a leave event which transfers all of the fees of the transactions to the address chosen by the miner. If a miner crashes or behaves maliciously during it's designated period, it will be removed by the other participants and will lose all of it's collected fees.\n\n**Multi-asset support**\nIn Purple, multiple currencies/assets are handled at the protocol level. This increases the richness of the economic properties of the protocol. For example, transaction and smart contract fees can be paid in any listed currency if the miners accept it. This also means that a decentralized exchange between all listed currencies can exist at the protocol layer, simplifying the life of users immensely. At the same time, if say the main token of the protocol goes somehow loses it's value or is compromised in some way, the protocol can still function and support the other listed currencies.\n\n**Supported programming languages**\nThe PurpleVM supports the execution of webassembly bytecode which means that any programming language that can compile to WASM can be used to write smart contracts and decentralized applications. The languages that are supported include:\n\n* C/C++\n* C#\n* Golang\n* Java\n* Rust\n* Haskell\n* Python\n* Typescript\n* Lua\n* Kotlin\n* Scheme\n\n\n**What is the story behind Purple?**\nIt started out as a mere curiosity in the technology powering Bitcoin and Ethereum and has since evolved into a thing of it's own. The main motivation behind building such a platform was the lack of tooling and ease of use for developing decentralized applications which along with the issue of scalability are the main impediments of mass-adoption. To this day there is no platform that offers all required properties which are: complete decentralization, scalability and ease of use. Most provide only one or two of the three. Purple strives to achieve all of the three.\n\n**What is the current status of the project?**\nPurple is in heavy development but will soon enter the testnet phase.\n\n**When will the mainnet be launched?**\nWe plan to launch Purple on the 1st of February 2019.\n\n**Will there be a crowdsale?**\nYes, we wish to host a crowdsale in late 2018. More info about this is coming soon.\n\n**Links**\n* Whitepaper - https://purpleprotocol.org/whitepaper/\n* Website - https://purpleprotocol.org/\n* Github - https://github.com/purpleprotocol\n* Twitter - https://twitter.com/purple_protocol\n* Facebook - https://www.facebook.com/purpleprotocol/\n* Medium - https://medium.com/purple-protocol\n* Discord - https://discord.gg/C5CGZsM\n* Telegram - https://t.me/purple_protocol",
"json_metadata": "{\"links\":[\"https://purpleprotocol.org/whitepaper/\",\"https://purpleprotocol.org/\",\"https://github.com/purpleprotocol\",\"https://twitter.com/purple_protocol\",\"https://www.facebook.com/purpleprotocol/\",\"https://medium.com/purple-protocol\",\"https://discord.gg/C5CGZsM\",\"https://t.me/purple_protocol\"],\"image\":[\"https://i.imgur.com/R62A4w6.png\"],\"tags\":[\"crypto\"],\"app\":\"esteem/1.6.0\",\"format\":\"markdown+html\",\"community\":\"esteem\"}"
}
]
}steemdelegated 4.392 SP to @prodicode2018/06/30 01:04:21
steemdelegated 4.392 SP to @prodicode
2018/06/30 01:04:21
| delegator | steem |
| delegatee | prodicode |
| vesting shares | 7152.144523 VESTS |
| Transaction Info | Block #23761508/Trx 2761959f9fe52a435efe7a7c09ad7a0851ada8e6 |
View Raw JSON Data
{
"trx_id": "2761959f9fe52a435efe7a7c09ad7a0851ada8e6",
"block": 23761508,
"trx_in_block": 22,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T01:04:21",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "prodicode",
"vesting_shares": "7152.144523 VESTS"
}
]
}prodicodesent 22.000 SBD to @blocktrades- "850bf9e4-a272-40ff-905d-333e3b6c0478"2018/06/30 00:46:48
prodicodesent 22.000 SBD to @blocktrades- "850bf9e4-a272-40ff-905d-333e3b6c0478"
2018/06/30 00:46:48
| from | prodicode |
| to | blocktrades |
| amount | 22.000 SBD |
| memo | 850bf9e4-a272-40ff-905d-333e3b6c0478 |
| Transaction Info | Block #23761157/Trx b8e386a141058da11f5031a9e866c792c0a46f33 |
View Raw JSON Data
{
"trx_id": "b8e386a141058da11f5031a9e866c792c0a46f33",
"block": 23761157,
"trx_in_block": 21,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T00:46:48",
"op": [
"transfer",
{
"from": "prodicode",
"to": "blocktrades",
"amount": "22.000 SBD",
"memo": "850bf9e4-a272-40ff-905d-333e3b6c0478"
}
]
}2018/05/22 09:08:57
2018/05/22 09:08:57
| parent author | prodicode |
| parent permlink | stack-overflow-steemit |
| author | aley |
| permlink | re-prodicode-stack-overflow-steemit-20180522t090855918z |
| title | |
| body | Great idea. I've made something like this. You may read the intro post [A discussion board build on top of the Steem blockchain](https://steemit.com/steemdev/@aley/steemstack-net-a-discussion-board-build-on-top-of-the-steem-blockchain) |
| json metadata | {"tags":["steemit"],"links":["https://steemit.com/steemdev/@aley/steemstack-net-a-discussion-board-build-on-top-of-the-steem-blockchain"],"app":"steemit/0.1"} |
| Transaction Info | Block #22649255/Trx eccc1b2da0d8a14de39c536011378bdfc6e155c4 |
View Raw JSON Data
{
"trx_id": "eccc1b2da0d8a14de39c536011378bdfc6e155c4",
"block": 22649255,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-22T09:08:57",
"op": [
"comment",
{
"parent_author": "prodicode",
"parent_permlink": "stack-overflow-steemit",
"author": "aley",
"permlink": "re-prodicode-stack-overflow-steemit-20180522t090855918z",
"title": "",
"body": "Great idea. I've made something like this. You may read the intro post [A discussion board build on top of the Steem blockchain](https://steemit.com/steemdev/@aley/steemstack-net-a-discussion-board-build-on-top-of-the-steem-blockchain)",
"json_metadata": "{\"tags\":[\"steemit\"],\"links\":[\"https://steemit.com/steemdev/@aley/steemstack-net-a-discussion-board-build-on-top-of-the-steem-blockchain\"],\"app\":\"steemit/0.1\"}"
}
]
}steemdelegated 1.250 SP to @prodicode2018/05/16 23:46:09
steemdelegated 1.250 SP to @prodicode
2018/05/16 23:46:09
| delegator | steem |
| delegatee | prodicode |
| vesting shares | 2034.832276 VESTS |
| Transaction Info | Block #22494024/Trx cc8fd36839c6dfb4205bcfe50d45d515a54536b2 |
View Raw JSON Data
{
"trx_id": "cc8fd36839c6dfb4205bcfe50d45d515a54536b2",
"block": 22494024,
"trx_in_block": 42,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-16T23:46:09",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "prodicode",
"vesting_shares": "2034.832276 VESTS"
}
]
}m41277deupvoted (100.00%) @prodicode / b5p5iw7i2018/04/03 13:54:30
m41277deupvoted (100.00%) @prodicode / b5p5iw7i
2018/04/03 13:54:30
| voter | m41277de |
| author | prodicode |
| permlink | b5p5iw7i |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21244654/Trx faabb2bfb9e63e89ea30babc3d9d5c2fca660094 |
View Raw JSON Data
{
"trx_id": "faabb2bfb9e63e89ea30babc3d9d5c2fca660094",
"block": 21244654,
"trx_in_block": 20,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-03T13:54:30",
"op": [
"vote",
{
"voter": "m41277de",
"author": "prodicode",
"permlink": "b5p5iw7i",
"weight": 10000
}
]
}leninamlupvoted (100.00%) @prodicode / b5p5iw7i2018/02/23 20:27:24
leninamlupvoted (100.00%) @prodicode / b5p5iw7i
2018/02/23 20:27:24
| voter | leninaml |
| author | prodicode |
| permlink | b5p5iw7i |
| weight | 10000 (100.00%) |
| Transaction Info | Block #20130971/Trx 7cb08440c34387e070db0aa5016cd9d9a1e8c558 |
View Raw JSON Data
{
"trx_id": "7cb08440c34387e070db0aa5016cd9d9a1e8c558",
"block": 20130971,
"trx_in_block": 44,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-02-23T20:27:24",
"op": [
"vote",
{
"voter": "leninaml",
"author": "prodicode",
"permlink": "b5p5iw7i",
"weight": 10000
}
]
}steemdelegated 4.532 SP to @prodicode2018/02/07 09:09:33
steemdelegated 4.532 SP to @prodicode
2018/02/07 09:09:33
| delegator | steem |
| delegatee | prodicode |
| vesting shares | 7380.571001 VESTS |
| Transaction Info | Block #19657105/Trx 577375787ce415dcb53dc1808e78142fb9720b26 |
View Raw JSON Data
{
"trx_id": "577375787ce415dcb53dc1808e78142fb9720b26",
"block": 19657105,
"trx_in_block": 18,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-02-07T09:09:33",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "prodicode",
"vesting_shares": "7380.571001 VESTS"
}
]
}prodicodeclaimed reward balance: 6.790 SBD, 1.907 SP2018/02/07 07:54:12
prodicodeclaimed reward balance: 6.790 SBD, 1.907 SP
2018/02/07 07:54:12
| account | prodicode |
| reward steem | 0.000 STEEM |
| reward sbd | 6.790 SBD |
| reward vests | 3105.294411 VESTS |
| Transaction Info | Block #19655601/Trx 2d8e9b06fe832c692f76154224844ae0be685c0e |
View Raw JSON Data
{
"trx_id": "2d8e9b06fe832c692f76154224844ae0be685c0e",
"block": 19655601,
"trx_in_block": 18,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-02-07T07:54:12",
"op": [
"claim_reward_balance",
{
"account": "prodicode",
"reward_steem": "0.000 STEEM",
"reward_sbd": "6.790 SBD",
"reward_vests": "3105.294411 VESTS"
}
]
}prodicodereceived 6.790 SBD, 1.906 SP author reward for @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/02/04 16:34:12
prodicodereceived 6.790 SBD, 1.906 SP author reward for @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/02/04 16:34:12
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| sbd payout | 6.790 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 3103.248763 VESTS |
| Transaction Info | Block #19579643/Virtual Operation #46 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19579643,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 46,
"timestamp": "2018-02-04T16:34:12",
"op": [
"author_reward",
{
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"sbd_payout": "6.790 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "3103.248763 VESTS"
}
]
}utopian.payreceived 1.269 SP benefactor reward from @prodicode2018/02/04 16:34:12
utopian.payreceived 1.269 SP benefactor reward from @prodicode
2018/02/04 16:34:12
| benefactor | utopian.pay |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| sbd payout | 0.000 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 2066.104977 VESTS |
| Transaction Info | Block #19579643/Virtual Operation #45 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19579643,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 45,
"timestamp": "2018-02-04T16:34:12",
"op": [
"comment_benefactor_reward",
{
"benefactor": "utopian.pay",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"sbd_payout": "0.000 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "2066.104977 VESTS"
}
]
}prodicodereceived 0.001 SP curation reward for @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/02/04 16:34:12
prodicodereceived 0.001 SP curation reward for @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/02/04 16:34:12
| curator | prodicode |
| reward | 2.045648 VESTS |
| comment author | prodicode |
| comment permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| Transaction Info | Block #19579643/Virtual Operation #40 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19579643,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 40,
"timestamp": "2018-02-04T16:34:12",
"op": [
"curation_reward",
{
"curator": "prodicode",
"reward": "2.045648 VESTS",
"comment_author": "prodicode",
"comment_permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html"
}
]
}2018/01/30 18:19:54
2018/01/30 18:19:54
| voter | prodicode |
| author | utopian-io |
| permlink | re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180129t234333755z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19438014/Trx 3a70adf11f42cc7826618e534ad0cd86d5cc4ea4 |
View Raw JSON Data
{
"trx_id": "3a70adf11f42cc7826618e534ad0cd86d5cc4ea4",
"block": 19438014,
"trx_in_block": 31,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-30T18:19:54",
"op": [
"vote",
{
"voter": "prodicode",
"author": "utopian-io",
"permlink": "re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180129t234333755z",
"weight": 10000
}
]
}blocktradessent 8.818 SBD to @prodicode2018/01/30 17:44:45
blocktradessent 8.818 SBD to @prodicode
2018/01/30 17:44:45
| from | blocktrades |
| to | prodicode |
| amount | 8.818 SBD |
| memo | |
| Transaction Info | Block #19437311/Trx b293994ea7ff362e342c79fd15e33abc1192adaa |
View Raw JSON Data
{
"trx_id": "b293994ea7ff362e342c79fd15e33abc1192adaa",
"block": 19437311,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-30T17:44:45",
"op": [
"transfer",
{
"from": "blocktrades",
"to": "prodicode",
"amount": "8.818 SBD",
"memo": ""
}
]
}steemdelegated 6.447 SP to @prodicode2018/01/30 12:42:39
steemdelegated 6.447 SP to @prodicode
2018/01/30 12:42:39
| delegator | steem |
| delegatee | prodicode |
| vesting shares | 10498.119219 VESTS |
| Transaction Info | Block #19431275/Trx a4a1d32cd368592d8bd0db328bbb09462b84ff4d |
View Raw JSON Data
{
"trx_id": "a4a1d32cd368592d8bd0db328bbb09462b84ff4d",
"block": 19431275,
"trx_in_block": 17,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-30T12:42:39",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "prodicode",
"vesting_shares": "10498.119219 VESTS"
}
]
}prodicodeclaimed reward balance: 7.314 SBD, 1.542 SP2018/01/30 09:24:54
prodicodeclaimed reward balance: 7.314 SBD, 1.542 SP
2018/01/30 09:24:54
| account | prodicode |
| reward steem | 0.000 STEEM |
| reward sbd | 7.314 SBD |
| reward vests | 2510.735586 VESTS |
| Transaction Info | Block #19427329/Trx 6e16572db1f67d5a6df75de7f5b7828f2b436c8f |
View Raw JSON Data
{
"trx_id": "6e16572db1f67d5a6df75de7f5b7828f2b436c8f",
"block": 19427329,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-30T09:24:54",
"op": [
"claim_reward_balance",
{
"account": "prodicode",
"reward_steem": "0.000 STEEM",
"reward_sbd": "7.314 SBD",
"reward_vests": "2510.735586 VESTS"
}
]
}prodicodereceived 7.290 SBD, 1.525 SP author reward for @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm2018/01/30 00:48:24
prodicodereceived 7.290 SBD, 1.525 SP author reward for @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm
2018/01/30 00:48:24
| author | prodicode |
| permlink | npm-explained-how-to-upload-your-own-javascript-module-to-npm |
| sbd payout | 7.290 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 2484.133646 VESTS |
| Transaction Info | Block #19417013/Virtual Operation #15 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19417013,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 15,
"timestamp": "2018-01-30T00:48:24",
"op": [
"author_reward",
{
"author": "prodicode",
"permlink": "npm-explained-how-to-upload-your-own-javascript-module-to-npm",
"sbd_payout": "7.290 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "2484.133646 VESTS"
}
]
}utopian.payreceived 1.017 SP benefactor reward from @prodicode2018/01/30 00:48:24
utopian.payreceived 1.017 SP benefactor reward from @prodicode
2018/01/30 00:48:24
| benefactor | utopian.pay |
| author | prodicode |
| permlink | npm-explained-how-to-upload-your-own-javascript-module-to-npm |
| sbd payout | 0.000 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 1655.407018 VESTS |
| Transaction Info | Block #19417013/Virtual Operation #14 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19417013,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 14,
"timestamp": "2018-01-30T00:48:24",
"op": [
"comment_benefactor_reward",
{
"benefactor": "utopian.pay",
"author": "prodicode",
"permlink": "npm-explained-how-to-upload-your-own-javascript-module-to-npm",
"sbd_payout": "0.000 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "1655.407018 VESTS"
}
]
}prodicodereceived 0.010 SP curation reward for @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm2018/01/30 00:48:24
prodicodereceived 0.010 SP curation reward for @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm
2018/01/30 00:48:24
| curator | prodicode |
| reward | 16.369908 VESTS |
| comment author | prodicode |
| comment permlink | npm-explained-how-to-upload-your-own-javascript-module-to-npm |
| Transaction Info | Block #19417013/Virtual Operation #10 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19417013,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 10,
"timestamp": "2018-01-30T00:48:24",
"op": [
"curation_reward",
{
"curator": "prodicode",
"reward": "16.369908 VESTS",
"comment_author": "prodicode",
"comment_permlink": "npm-explained-how-to-upload-your-own-javascript-module-to-npm"
}
]
}2018/01/29 23:43:33
2018/01/29 23:43:33
| parent author | prodicode |
| parent permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| author | utopian-io |
| permlink | re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180129t234333755z |
| title | |
| body | ### Hey @prodicode I am @utopian-io. I have just upvoted you! #### Achievements - You have less than 500 followers. Just gave you a gift to help you succeed! - Seems like you contribute quite often. AMAZING! #### Suggestions - Contribute more often to get higher and higher rewards. I wish to see you often! - Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck! #### Get Noticed! - Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions! #### Community-Driven Witness! I am the first and only Steem Community-Driven Witness. <a href="https://discord.gg/zTrEMqB">Participate on Discord</a>. Lets GROW TOGETHER! - <a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1">Vote for my Witness With SteemConnect</a> - <a href="https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1">Proxy vote to Utopian Witness with SteemConnect</a> - Or vote/proxy on <a href="https://steemit.com/~witnesses">Steemit Witnesses</a> [](https://steemit.com/~witnesses) **Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x** |
| json metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} |
| Transaction Info | Block #19415718/Trx 882012bd5fdbd8fd4036b42718adad39725af05c |
View Raw JSON Data
{
"trx_id": "882012bd5fdbd8fd4036b42718adad39725af05c",
"block": 19415718,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-29T23:43:33",
"op": [
"comment",
{
"parent_author": "prodicode",
"parent_permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"author": "utopian-io",
"permlink": "re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180129t234333755z",
"title": "",
"body": "### Hey @prodicode I am @utopian-io. I have just upvoted you!\n#### Achievements\n- You have less than 500 followers. Just gave you a gift to help you succeed!\n- Seems like you contribute quite often. AMAZING!\n#### Suggestions\n- Contribute more often to get higher and higher rewards. I wish to see you often!\n- Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!\n#### Get Noticed!\n- Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!\n#### Community-Driven Witness!\nI am the first and only Steem Community-Driven Witness. <a href=\"https://discord.gg/zTrEMqB\">Participate on Discord</a>. Lets GROW TOGETHER!\n- <a href=\"https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1\">Vote for my Witness With SteemConnect</a>\n- <a href=\"https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1\">Proxy vote to Utopian Witness with SteemConnect</a>\n- Or vote/proxy on <a href=\"https://steemit.com/~witnesses\">Steemit Witnesses</a>\n\n[](https://steemit.com/~witnesses)\n\n**Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x**",
"json_metadata": "{\"tags\":[\"utopian-io\"],\"community\":\"utopian\",\"app\":\"utopian/1.0.0\"}"
}
]
}utopian-ioupvoted (2.10%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/29 23:43:30
utopian-ioupvoted (2.10%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/29 23:43:30
| voter | utopian-io |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 210 (2.10%) |
| Transaction Info | Block #19415717/Trx 1b1399c774d00459b61eaa10d19bf5f1acf8c950 |
View Raw JSON Data
{
"trx_id": "1b1399c774d00459b61eaa10d19bf5f1acf8c950",
"block": 19415717,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-29T23:43:30",
"op": [
"vote",
{
"voter": "utopian-io",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 210
}
]
}mr-andersonupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/29 09:04:00
mr-andersonupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/29 09:04:00
| voter | mr-anderson |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19398137/Trx d9ec829c850b55d98eccf5e5cf043d44e1085de2 |
View Raw JSON Data
{
"trx_id": "d9ec829c850b55d98eccf5e5cf043d44e1085de2",
"block": 19398137,
"trx_in_block": 29,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-29T09:04:00",
"op": [
"vote",
{
"voter": "mr-anderson",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}casberpupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 22:17:33
casberpupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 22:17:33
| voter | casberp |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19385213/Trx 24aa48c2af2a5f63b1257b049daeaf5768722175 |
View Raw JSON Data
{
"trx_id": "24aa48c2af2a5f63b1257b049daeaf5768722175",
"block": 19385213,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T22:17:33",
"op": [
"vote",
{
"voter": "casberp",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}prodicodeupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:17:51
prodicodeupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:17:51
| voter | prodicode |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19384020/Trx 6c54464ef0c744aceda5e57f976f79a3cebaf8cf |
View Raw JSON Data
{
"trx_id": "6c54464ef0c744aceda5e57f976f79a3cebaf8cf",
"block": 19384020,
"trx_in_block": 40,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:17:51",
"op": [
"vote",
{
"voter": "prodicode",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}2018/01/28 21:17:45
2018/01/28 21:17:45
| voter | prodicode |
| author | amosbastian |
| permlink | re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180128t205058652z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19384018/Trx 012f2940663a6a918abc23dde082b14ad2d45dcf |
View Raw JSON Data
{
"trx_id": "012f2940663a6a918abc23dde082b14ad2d45dcf",
"block": 19384018,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:17:45",
"op": [
"vote",
{
"voter": "prodicode",
"author": "amosbastian",
"permlink": "re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180128t205058652z",
"weight": 10000
}
]
}prodicodeupdated options for re-amosbastian-2018128t231717414z2018/01/28 21:17:18
prodicodeupdated options for re-amosbastian-2018128t231717414z
2018/01/28 21:17:18
| author | prodicode |
| permlink | re-amosbastian-2018128t231717414z |
| max accepted payout | 1000000.000 SBD |
| percent steem dollars | 10000 |
| allow votes | true |
| allow curation rewards | true |
| extensions | [[0,{"beneficiaries":[{"account":"esteemapp","weight":500}]}]] |
| Transaction Info | Block #19384009/Trx ad127f60481f2259a18151ff778a1fe32e57d6ba |
View Raw JSON Data
{
"trx_id": "ad127f60481f2259a18151ff778a1fe32e57d6ba",
"block": 19384009,
"trx_in_block": 26,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:17:18",
"op": [
"comment_options",
{
"author": "prodicode",
"permlink": "re-amosbastian-2018128t231717414z",
"max_accepted_payout": "1000000.000 SBD",
"percent_steem_dollars": 10000,
"allow_votes": true,
"allow_curation_rewards": true,
"extensions": [
[
0,
{
"beneficiaries": [
{
"account": "esteemapp",
"weight": 500
}
]
}
]
]
}
]
}prodicodereplied to @amosbastian / re-amosbastian-2018128t231717414z2018/01/28 21:17:18
prodicodereplied to @amosbastian / re-amosbastian-2018128t231717414z
2018/01/28 21:17:18
| parent author | amosbastian |
| parent permlink | re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180128t205058652z |
| author | prodicode |
| permlink | re-amosbastian-2018128t231717414z |
| title | |
| body | Thanks! |
| json metadata | {"tags":"utopian-io","app":"esteem/1.5.0","format":"markdown+html","community":"esteem"} |
| Transaction Info | Block #19384009/Trx ad127f60481f2259a18151ff778a1fe32e57d6ba |
View Raw JSON Data
{
"trx_id": "ad127f60481f2259a18151ff778a1fe32e57d6ba",
"block": 19384009,
"trx_in_block": 26,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:17:18",
"op": [
"comment",
{
"parent_author": "amosbastian",
"parent_permlink": "re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180128t205058652z",
"author": "prodicode",
"permlink": "re-amosbastian-2018128t231717414z",
"title": "",
"body": "Thanks!",
"json_metadata": "{\"tags\":\"utopian-io\",\"app\":\"esteem/1.5.0\",\"format\":\"markdown+html\",\"community\":\"esteem\"}"
}
]
}the-reaperupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:11:03
the-reaperupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:11:03
| voter | the-reaper |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383884/Trx 3aaf82e2f89f9e9e4812a70e035d82adfd9623d9 |
View Raw JSON Data
{
"trx_id": "3aaf82e2f89f9e9e4812a70e035d82adfd9623d9",
"block": 19383884,
"trx_in_block": 17,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:11:03",
"op": [
"vote",
{
"voter": "the-reaper",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}retrocausalityupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:11:03
retrocausalityupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:11:03
| voter | retrocausality |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383884/Trx 2b38ee85a42fe6e85a025eed478953c13ee6777d |
View Raw JSON Data
{
"trx_id": "2b38ee85a42fe6e85a025eed478953c13ee6777d",
"block": 19383884,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:11:03",
"op": [
"vote",
{
"voter": "retrocausality",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}thegrandestineupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:11:03
thegrandestineupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:11:03
| voter | thegrandestine |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383884/Trx 3859eec1934c60b64fca844f4b955259d38f16ba |
View Raw JSON Data
{
"trx_id": "3859eec1934c60b64fca844f4b955259d38f16ba",
"block": 19383884,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:11:03",
"op": [
"vote",
{
"voter": "thegrandestine",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}audiosirenupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:11:03
audiosirenupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:11:03
| voter | audiosiren |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383884/Trx aa05fac3fb33b7c1ce2170b0268530bd1ee252c1 |
View Raw JSON Data
{
"trx_id": "aa05fac3fb33b7c1ce2170b0268530bd1ee252c1",
"block": 19383884,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:11:03",
"op": [
"vote",
{
"voter": "audiosiren",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}omegacoreupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
omegacoreupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | omegacore |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx 716edecd8aeccc18b1e25d1821991cad0ea03ca4 |
View Raw JSON Data
{
"trx_id": "716edecd8aeccc18b1e25d1821991cad0ea03ca4",
"block": 19383855,
"trx_in_block": 64,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "omegacore",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}mysticalwordupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
mysticalwordupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | mysticalword |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx c4ee5dd9e4db9a5ce9d39dbb49cb785227b307e2 |
View Raw JSON Data
{
"trx_id": "c4ee5dd9e4db9a5ce9d39dbb49cb785227b307e2",
"block": 19383855,
"trx_in_block": 63,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "mysticalword",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}paradoxofchoiceupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
paradoxofchoiceupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | paradoxofchoice |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx 074bd235b4d8ed8d7cdb24e8e21175f14cbde6e8 |
View Raw JSON Data
{
"trx_id": "074bd235b4d8ed8d7cdb24e8e21175f14cbde6e8",
"block": 19383855,
"trx_in_block": 62,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "paradoxofchoice",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}mirrorforceupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
mirrorforceupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | mirrorforce |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx 22631c2eeb177a09783005941fab796a6b3dac34 |
View Raw JSON Data
{
"trx_id": "22631c2eeb177a09783005941fab796a6b3dac34",
"block": 19383855,
"trx_in_block": 58,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "mirrorforce",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}betacoreupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
betacoreupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | betacore |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx 6a3a348ae84499cc86d988296cd88c1e777e50a1 |
View Raw JSON Data
{
"trx_id": "6a3a348ae84499cc86d988296cd88c1e777e50a1",
"block": 19383855,
"trx_in_block": 57,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "betacore",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}love-meupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
love-meupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | love-me |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx fb0b2ae39894f41d559c32569c76972ba18898c6 |
View Raw JSON Data
{
"trx_id": "fb0b2ae39894f41d559c32569c76972ba18898c6",
"block": 19383855,
"trx_in_block": 56,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "love-me",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}lilithupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
lilithupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | lilith |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx b21ad1708f2186df60108f49369ab2c971a7833e |
View Raw JSON Data
{
"trx_id": "b21ad1708f2186df60108f49369ab2c971a7833e",
"block": 19383855,
"trx_in_block": 55,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "lilith",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}butterfly-effectupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
butterfly-effectupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | butterfly-effect |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx 8ec37f57c6822b28f1e01e7b860d21ae25ff983f |
View Raw JSON Data
{
"trx_id": "8ec37f57c6822b28f1e01e7b860d21ae25ff983f",
"block": 19383855,
"trx_in_block": 24,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "butterfly-effect",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}chaostheoryupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
chaostheoryupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | chaostheory |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx dcb7dd8902ae43af9e087b1fef1d3edf1ade76b7 |
View Raw JSON Data
{
"trx_id": "dcb7dd8902ae43af9e087b1fef1d3edf1ade76b7",
"block": 19383855,
"trx_in_block": 21,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "chaostheory",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}alphacoreupvoted (20.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
alphacoreupvoted (20.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | alphacore |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 2000 (20.00%) |
| Transaction Info | Block #19383855/Trx 4cba4d78833a2ac05897e2034c8f97a41aae4f41 |
View Raw JSON Data
{
"trx_id": "4cba4d78833a2ac05897e2034c8f97a41aae4f41",
"block": 19383855,
"trx_in_block": 20,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "alphacore",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 2000
}
]
}skybreakerupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:36
skybreakerupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:36
| voter | skybreaker |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383855/Trx 8be67f991e6c3146a83e8cbf0103b70e3214ece8 |
View Raw JSON Data
{
"trx_id": "8be67f991e6c3146a83e8cbf0103b70e3214ece8",
"block": 19383855,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:36",
"op": [
"vote",
{
"voter": "skybreaker",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}supreme-verdictupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 21:09:30
supreme-verdictupvoted (100.00%) @prodicode / how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 21:09:30
| voter | supreme-verdict |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19383853/Trx 39a5ff64559423c6d3dfbea9e039e0233bacf6ca |
View Raw JSON Data
{
"trx_id": "39a5ff64559423c6d3dfbea9e039e0233bacf6ca",
"block": 19383853,
"trx_in_block": 33,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T21:09:30",
"op": [
"vote",
{
"voter": "supreme-verdict",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"weight": 10000
}
]
}2018/01/28 20:50:57
2018/01/28 20:50:57
| parent author | prodicode |
| parent permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| author | amosbastian |
| permlink | re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180128t205058652z |
| title | |
| body | Thank you for the contribution. It has been approved. You can contact us on [Discord](https://discord.gg/uTyJkNm). **[[utopian-moderator]](https://utopian.io/moderators)** |
| json metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} |
| Transaction Info | Block #19383482/Trx 8ddf1b8d95a3eba37f34b5bf5e3acb8c1db107e0 |
View Raw JSON Data
{
"trx_id": "8ddf1b8d95a3eba37f34b5bf5e3acb8c1db107e0",
"block": 19383482,
"trx_in_block": 51,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T20:50:57",
"op": [
"comment",
{
"parent_author": "prodicode",
"parent_permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"author": "amosbastian",
"permlink": "re-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180128t205058652z",
"title": "",
"body": "Thank you for the contribution. It has been approved.\n\nYou can contact us on [Discord](https://discord.gg/uTyJkNm).\n**[[utopian-moderator]](https://utopian.io/moderators)**",
"json_metadata": "{\"tags\":[\"utopian-io\"],\"community\":\"utopian\",\"app\":\"utopian/1.0.0\"}"
}
]
}prodicodepublished a new post: how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 20:50:54
prodicodepublished a new post: how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 20:50:54
| parent author | |
| parent permlink | utopian-io |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| title | How to use EJS - Displaying data from NodeJS in HTML |
| body | #### What Will I Learn? - How to use EJS in NodeJS - How to display Node variables in the frontend with EJS - How to setup EJS with ExpressJS and Body Parser #### Difficulty : Basic ------------------------ ## Basic Node and Express setup Before we start writing code, we will need to have all our required npm packages installed. We will need the following packages: - express - body-parser - ejs To install them just use the following command: <pre><code>npm install express body-parser ejs mongodb --save</code></pre> Now, let's write our basic Node and Express code that will display *Hello World*. **app.js** <pre><code> var app = require('express')(); app.get("/", (req, res) => { res.send("Hello World"); }); app.listen(8080, () => { console.log("Server online on http://localhost:8080"); }); </code></pre> Now, if we visit <code>http://localhost:8080</code>, we should see the following:  ## Configuring EJS with Express Our basic express route is now working. Let's start working with EJS. The first thing we need to do is to create a <code>index.ejs</code> file that will hold our EJS code. In the same directory as the <code>app.js</code>, create another directory named **views**. Inside the **views** directory, create a new file called <code>index.ejs</code> (*ejs* stands for EJS). Your file hierarcy should look like this: <pre><code>|--app.js |+--views | |--index.ejs</code></pre> Inside <code>index.ejs</code>, let's write this simple HTML code: ``` <html> <h1>This is an EJS page</h1> </html> ``` Now we have our <code>index.ejs</code>, but Express will just render *Hello World*. How can we get Express to render our <code>index.ejs</code> file? We will use Express's view engine, so the code inside <code>app.js</code> will now look like this: **app.js** <pre><code> var app = require("express")(); var bodyParser = require("body-parser"); <br> //Set view engine to ejs app.set("view engine", "ejs"); <br> //Tell Express where we keep our index.ejs app.set("views", __dirname + "/views"); <br> //Use body-parser app.use(bodyParser.urlencoded({ extended: false })); <br> //Instead of sending Hello World, we render index.ejs app.get("/", (req, res) => { res.render("index") }); <br> app.listen(8080, () => { console.log("Server online on http://localhost:8080"); }); </code></pre> Now, when we visit <code>http://localhost:8080</code>, it should display this:  ## Rendering variables from the backend ( Node.JS ) For example, you have a variable <code>user</code> in Node that is equal to the current user's name: <pre><code>var user = "Prodicode";</code></pre> We want to display the <code>user</code> variable in HTML so it will look like this: <pre><code><h1>Hello, Prodicode</h1></code></pre> <br> <br> To do so, we will need to pass the <code>user</code> variable to the index.ejs file when we render it. So when we render <code>index.ejs</code>, we will use this line instead: <pre><code>app.get("/", (req, res) => { res.render("index", { username: user }); });</code></pre> You will notice that we will pass the value of the <code>user</code> variable into another <code>username</code> variable that now exists in the <code>index.ejs</code> file. All that's left to do is to display the <code>username</code> variable inside <code>index.ejs</code>. So, let's write this inside <code>index.ejs</code>: ``` <html> <h1>Hello, <%= username %></h1> </html> ``` You will notice some strange HTML syntax: <code><%= username %></code>. Well, that is not HTML, it's EJS. The <code>username</code> variable already exists when we render <code>index.ejs</code>, and that is the EJS syntax for dumping a variable's value, a.k.a displaying it. Navigating to <code>http://localhost:8080</code>, we will see:  ## Displaying an array We now know how to display an variable, but what if we want to display a list of variables inside an array. Inside <code>app.js</code>, we will also have the following array: <pre><code> var shopping_cart = ["shampoo", "snacks", "fruits"]; </code></pre> And we want to display them like so: <pre><code><h1>Hello, Prodicode</h1><br><h3>Shopping Cart: </h3><br><ul><li>shampoo</li><li>snacks</li><li>fruits</li></ul></code></pre> Inside <code>app.js</code>, when we render <code>index.ejs</code>, instead of only sending the <code>user</code> variable, we will send both the <code>user</code> variable and the <code>shopping_cart</code> array. The code that renders the page will look like this: <pre><code>app.get("/", (req, res) => { res.render("index", { username: user, cart: shopping_cart }); });</code></pre> Now, after rendering <code>index.ejs</code> we will have 2 variables available that we can use the EJS syntax to render: <code>username</code> with the value of "Prodicode" and <code>cart</code> that is an array containing the following elements: "shampoo", "snacks" and "fruits". EJS does not only support displaying variables with <code><%= variable_name %></code>, it also supports javascript code. For example, this code will check if the variable <code>loggedIn</code> is true, and if it is, will display Welcome! : ``` <html> <% if(loggedIn){ %> <span>Welcome!</span> <% } %> </html> ``` Just take a second to analyze the code above. To display the array, use the following code: ``` <html> <h1>Hello, <%= username %></h1> <br> <h3>Shopping Cart: </h3> <br> <ul> <% for(var item in cart) { %> <li><%= item %></li> <% } %> </ul> </html> ``` Now, navigating to <code>http://localhost:8080</code> should render this:  ## Conclusion EJS is a great alternative to plain HTML to use with Node and Express. The best part about it is its simplicity. The EJS syntax is very easy to integrate in HTML and it's not hard to understand. You can check out EJS's official website [here](http://ejs.co/) where you can find more documentation and examples. If you have any other questions or are confused about certain aspects of EJS, drop them in the comments below and I will try to answer them as fast as possible! <br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@prodicode/how-to-use-ejs-displaying-data-from-nodejs-in-html">Utopian.io - Rewarding Open Source Contributors</a></em><hr/> |
| json metadata | {"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":28671602,"name":"ejs","full_name":"mde/ejs","html_url":"https://github.com/mde/ejs","fork":false,"owner":{"login":"mde"}},"pullRequests":[],"platform":"github","type":"tutorials","tags":["utopian-io","javascript","node","ejs"],"links":["https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png","http://ejs.co/"],"image":["https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png"],"moderator":{"account":"amosbastian","time":"2018-01-28T20:50:55.341Z","reviewed":true,"pending":false,"flagged":false}} |
| Transaction Info | Block #19383481/Trx c28d33b939fd930fdb5793d012110f67a78d5bd3 |
View Raw JSON Data
{
"trx_id": "c28d33b939fd930fdb5793d012110f67a78d5bd3",
"block": 19383481,
"trx_in_block": 34,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T20:50:54",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "utopian-io",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"title": "How to use EJS - Displaying data from NodeJS in HTML",
"body": "\n#### What Will I Learn?\n\n- How to use EJS in NodeJS\n- How to display Node variables in the frontend with EJS\n- How to setup EJS with ExpressJS and Body Parser\n\n#### Difficulty : Basic\n\n------------------------\n\n## Basic Node and Express setup\n\nBefore we start writing code, we will need to have all our required npm packages installed. We will need the following packages:\n- express\n- body-parser\n- ejs\n\n\nTo install them just use the following command:\n<pre><code>npm install express body-parser ejs mongodb --save</code></pre>\n \nNow, let's write our basic Node and Express code that will display *Hello World*.\n\n **app.js**\n<pre><code>\nvar app = require('express')();\napp.get(\"/\", (req, res) => { res.send(\"Hello World\"); });\napp.listen(8080, () => { console.log(\"Server online on http://localhost:8080\"); }); \n</code></pre>\n\nNow, if we visit <code>http://localhost:8080</code>, we should see the following:\n\n\n\n\n## Configuring EJS with Express\n\nOur basic express route is now working. Let's start working with EJS. The first thing we need to do is to create a <code>index.ejs</code> file that will hold our EJS code. In the same directory as the <code>app.js</code>, create another directory named **views**. Inside the **views** directory, create a new file called <code>index.ejs</code> (*ejs* stands for EJS).\nYour file hierarcy should look like this:\n<pre><code>|--app.js\n|+--views\n| |--index.ejs</code></pre>\n\n\nInside <code>index.ejs</code>, let's write this simple HTML code:\n\n```\n<html>\n<h1>This is an EJS page</h1>\n</html>\n```\n\nNow we have our <code>index.ejs</code>, but Express will just render *Hello World*. How can we get Express to render our <code>index.ejs</code> file? We will use Express's view engine, so the code inside <code>app.js</code> will now look like this:\n\n**app.js**\n<pre><code>\nvar app = require(\"express\")(); \nvar bodyParser = require(\"body-parser\"); <br>\n//Set view engine to ejs\napp.set(\"view engine\", \"ejs\"); <br>\n//Tell Express where we keep our index.ejs\napp.set(\"views\", __dirname + \"/views\"); <br>\n//Use body-parser\napp.use(bodyParser.urlencoded({ extended: false })); <br>\n//Instead of sending Hello World, we render index.ejs\napp.get(\"/\", (req, res) => { res.render(\"index\") }); <br>\napp.listen(8080, () => { console.log(\"Server online on http://localhost:8080\"); });\n</code></pre>\n\nNow, when we visit <code>http://localhost:8080</code>, it should display this:\n\n\n\n## Rendering variables from the backend ( Node.JS )\nFor example, you have a variable <code>user</code> in Node that is equal to the current user's name:\n\n<pre><code>var user = \"Prodicode\";</code></pre>\n\nWe want to display the <code>user</code> variable in HTML so it will look like this:\n<pre><code><h1>Hello, Prodicode</h1></code></pre>\n<br>\n<br>\nTo do so, we will need to pass the <code>user</code> variable to the index.ejs file when we render it. So when we render <code>index.ejs</code>, we will use this line instead:\n<pre><code>app.get(\"/\", (req, res) => { res.render(\"index\", { username: user }); });</code></pre>\nYou will notice that we will pass the value of the <code>user</code> variable into another <code>username</code> variable that now exists in the <code>index.ejs</code> file.\n\nAll that's left to do is to display the <code>username</code> variable inside <code>index.ejs</code>. So, let's write this inside <code>index.ejs</code>:\n\n```\n<html>\n<h1>Hello, <%= username %></h1>\n</html>\n```\n\nYou will notice some strange HTML syntax: <code><%= username %></code>. Well, that is not HTML, it's EJS. The <code>username</code> variable already exists when we render <code>index.ejs</code>, and that is the EJS syntax for dumping a variable's value, a.k.a displaying it.\n\nNavigating to <code>http://localhost:8080</code>, we will see:\n\n\n\n\n## Displaying an array\n\nWe now know how to display an variable, but what if we want to display a list of variables inside an array. Inside <code>app.js</code>, we will also have the following array:\n\n<pre><code>\nvar shopping_cart = [\"shampoo\", \"snacks\", \"fruits\"];\n</code></pre>\n\nAnd we want to display them like so:\n<pre><code><h1>Hello, Prodicode</h1><br><h3>Shopping Cart: </h3><br><ul><li>shampoo</li><li>snacks</li><li>fruits</li></ul></code></pre>\n\nInside <code>app.js</code>, when we render <code>index.ejs</code>, instead of only sending the <code>user</code> variable, we will send both the <code>user</code> variable and the <code>shopping_cart</code> array. The code that renders the page will look like this:\n<pre><code>app.get(\"/\", (req, res) => { res.render(\"index\", { username: user, cart: shopping_cart }); });</code></pre>\nNow, after rendering <code>index.ejs</code> we will have 2 variables available that we can use the EJS syntax to render: <code>username</code> with the value of \"Prodicode\" and <code>cart</code> that is an array containing the following elements: \"shampoo\", \"snacks\" and \"fruits\". EJS does not only support displaying variables with <code><%= variable_name %></code>, it also supports javascript code. For example, this code will check if the variable <code>loggedIn</code> is true, and if it is, will display Welcome! :\n\n```\n<html>\n<% if(loggedIn){ %>\n<span>Welcome!</span>\n<% } %>\n</html>\n```\n\nJust take a second to analyze the code above.\n\nTo display the array, use the following code:\n\n```\n<html>\n<h1>Hello, <%= username %></h1>\n<br>\n<h3>Shopping Cart: </h3>\n<br>\n<ul>\n<% for(var item in cart) { %>\n<li><%= item %></li>\n<% } %>\n</ul>\n</html>\n```\nNow, navigating to <code>http://localhost:8080</code> should render this:\n\n\n\n\n## Conclusion\nEJS is a great alternative to plain HTML to use with Node and Express. The best part about it is its simplicity. The EJS syntax is very easy to integrate in HTML and it's not hard to understand. You can check out EJS's official website [here](http://ejs.co/) where you can find more documentation and examples. If you have any other questions or are confused about certain aspects of EJS, drop them in the comments below and I will try to answer them as fast as possible!\n\n<br /><hr/><em>Posted on <a href=\"https://utopian.io/utopian-io/@prodicode/how-to-use-ejs-displaying-data-from-nodejs-in-html\">Utopian.io - Rewarding Open Source Contributors</a></em><hr/>",
"json_metadata": "{\"community\":\"utopian\",\"app\":\"utopian/1.0.0\",\"format\":\"markdown\",\"repository\":{\"id\":28671602,\"name\":\"ejs\",\"full_name\":\"mde/ejs\",\"html_url\":\"https://github.com/mde/ejs\",\"fork\":false,\"owner\":{\"login\":\"mde\"}},\"pullRequests\":[],\"platform\":\"github\",\"type\":\"tutorials\",\"tags\":[\"utopian-io\",\"javascript\",\"node\",\"ejs\"],\"links\":[\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png\",\"http://ejs.co/\"],\"image\":[\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png\"],\"moderator\":{\"account\":\"amosbastian\",\"time\":\"2018-01-28T20:50:55.341Z\",\"reviewed\":true,\"pending\":false,\"flagged\":false}}"
}
]
}prodicodeupvoted (100.00%) @eastmael / utopian-dev-add-the-wallet-page2018/01/28 16:39:15
prodicodeupvoted (100.00%) @eastmael / utopian-dev-add-the-wallet-page
2018/01/28 16:39:15
| voter | prodicode |
| author | eastmael |
| permlink | utopian-dev-add-the-wallet-page |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19378449/Trx 1d5bb3c81d53431c2a567c5ddcfe157ec685c109 |
View Raw JSON Data
{
"trx_id": "1d5bb3c81d53431c2a567c5ddcfe157ec685c109",
"block": 19378449,
"trx_in_block": 39,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T16:39:15",
"op": [
"vote",
{
"voter": "prodicode",
"author": "eastmael",
"permlink": "utopian-dev-add-the-wallet-page",
"weight": 10000
}
]
}prodicodeupdated options for how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 16:34:12
prodicodeupdated options for how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 16:34:12
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| max accepted payout | 1000000.000 SBD |
| percent steem dollars | 10000 |
| allow votes | true |
| allow curation rewards | true |
| extensions | [[0,{"beneficiaries":[{"account":"utopian.pay","weight":2500}]}]] |
| Transaction Info | Block #19378348/Trx 14c9187d5681a3ef9b82eccb0766d6b2beb55990 |
View Raw JSON Data
{
"trx_id": "14c9187d5681a3ef9b82eccb0766d6b2beb55990",
"block": 19378348,
"trx_in_block": 36,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T16:34:12",
"op": [
"comment_options",
{
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"max_accepted_payout": "1000000.000 SBD",
"percent_steem_dollars": 10000,
"allow_votes": true,
"allow_curation_rewards": true,
"extensions": [
[
0,
{
"beneficiaries": [
{
"account": "utopian.pay",
"weight": 2500
}
]
}
]
]
}
]
}prodicodepublished a new post: how-to-use-ejs-displaying-data-from-nodejs-in-html2018/01/28 16:34:12
prodicodepublished a new post: how-to-use-ejs-displaying-data-from-nodejs-in-html
2018/01/28 16:34:12
| parent author | |
| parent permlink | utopian-io |
| author | prodicode |
| permlink | how-to-use-ejs-displaying-data-from-nodejs-in-html |
| title | How to use EJS - Displaying data from NodeJS in HTML |
| body | #### What Will I Learn? - How to use EJS in NodeJS - How to display Node variables in the frontend with EJS - How to setup EJS with ExpressJS and Body Parser #### Difficulty : Basic ------------------------ ## Basic Node and Express setup Before we start writing code, we will need to have all our required npm packages installed. We will need the following packages: - express - body-parser - ejs To install them just use the following command: <pre><code>npm install express body-parser ejs mongodb --save</code></pre> Now, let's write our basic Node and Express code that will display *Hello World*. **app.js** <pre><code> var app = require('express')(); app.get("/", (req, res) => { res.send("Hello World"); }); app.listen(8080, () => { console.log("Server online on http://localhost:8080"); }); </code></pre> Now, if we visit <code>http://localhost:8080</code>, we should see the following:  ## Configuring EJS with Express Our basic express route is now working. Let's start working with EJS. The first thing we need to do is to create a <code>index.ejs</code> file that will hold our EJS code. In the same directory as the <code>app.js</code>, create another directory named **views**. Inside the **views** directory, create a new file called <code>index.ejs</code> (*ejs* stands for EJS). Your file hierarcy should look like this: <pre><code>|--app.js |+--views | |--index.ejs</code></pre> Inside <code>index.ejs</code>, let's write this simple HTML code: ``` <html> <h1>This is an EJS page</h1> </html> ``` Now we have our <code>index.ejs</code>, but Express will just render *Hello World*. How can we get Express to render our <code>index.ejs</code> file? We will use Express's view engine, so the code inside <code>app.js</code> will now look like this: **app.js** <pre><code> var app = require("express")(); var bodyParser = require("body-parser"); <br> //Set view engine to ejs app.set("view engine", "ejs"); <br> //Tell Express where we keep our index.ejs app.set("views", __dirname + "/views"); <br> //Use body-parser app.use(bodyParser.urlencoded({ extended: false })); <br> //Instead of sending Hello World, we render index.ejs app.get("/", (req, res) => { res.render("index") }); <br> app.listen(8080, () => { console.log("Server online on http://localhost:8080"); }); </code></pre> Now, when we visit <code>http://localhost:8080</code>, it should display this:  ## Rendering variables from the backend ( Node.JS ) For example, you have a variable <code>user</code> in Node that is equal to the current user's name: <pre><code>var user = "Prodicode";</code></pre> We want to display the <code>user</code> variable in HTML so it will look like this: <pre><code><h1>Hello, Prodicode</h1></code></pre> <br> <br> To do so, we will need to pass the <code>user</code> variable to the index.ejs file when we render it. So when we render <code>index.ejs</code>, we will use this line instead: <pre><code>app.get("/", (req, res) => { res.render("index", { username: user }); });</code></pre> You will notice that we will pass the value of the <code>user</code> variable into another <code>username</code> variable that now exists in the <code>index.ejs</code> file. All that's left to do is to display the <code>username</code> variable inside <code>index.ejs</code>. So, let's write this inside <code>index.ejs</code>: ``` <html> <h1>Hello, <%= username %></h1> </html> ``` You will notice some strange HTML syntax: <code><%= username %></code>. Well, that is not HTML, it's EJS. The <code>username</code> variable already exists when we render <code>index.ejs</code>, and that is the EJS syntax for dumping a variable's value, a.k.a displaying it. Navigating to <code>http://localhost:8080</code>, we will see:  ## Displaying an array We now know how to display an variable, but what if we want to display a list of variables inside an array. Inside <code>app.js</code>, we will also have the following array: <pre><code> var shopping_cart = ["shampoo", "snacks", "fruits"]; </code></pre> And we want to display them like so: <pre><code><h1>Hello, Prodicode</h1><br><h3>Shopping Cart: </h3><br><ul><li>shampoo</li><li>snacks</li><li>fruits</li></ul></code></pre> Inside <code>app.js</code>, when we render <code>index.ejs</code>, instead of only sending the <code>user</code> variable, we will send both the <code>user</code> variable and the <code>shopping_cart</code> array. The code that renders the page will look like this: <pre><code>app.get("/", (req, res) => { res.render("index", { username: user, cart: shopping_cart }); });</code></pre> Now, after rendering <code>index.ejs</code> we will have 2 variables available that we can use the EJS syntax to render: <code>username</code> with the value of "Prodicode" and <code>cart</code> that is an array containing the following elements: "shampoo", "snacks" and "fruits". EJS does not only support displaying variables with <code><%= variable_name %></code>, it also supports javascript code. For example, this code will check if the variable <code>loggedIn</code> is true, and if it is, will display Welcome! : ``` <html> <% if(loggedIn){ %> <span>Welcome!</span> <% } %> </html> ``` Just take a second to analyze the code above. To display the array, use the following code: ``` <html> <h1>Hello, <%= username %></h1> <br> <h3>Shopping Cart: </h3> <br> <ul> <% for(var item in cart) { %> <li><%= item %></li> <% } %> </ul> </html> ``` Now, navigating to <code>http://localhost:8080</code> should render this:  ## Conclusion EJS is a great alternative to plain HTML to use with Node and Express. The best part about it is its simplicity. The EJS syntax is very easy to integrate in HTML and it's not hard to understand. You can check out EJS's official website [here](http://ejs.co/) where you can find more documentation and examples. If you have any other questions or are confused about certain aspects of EJS, drop them in the comments below and I will try to answer them as fast as possible! <br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@prodicode/how-to-use-ejs-displaying-data-from-nodejs-in-html">Utopian.io - Rewarding Open Source Contributors</a></em><hr/> |
| json metadata | {"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":28671602,"name":"ejs","full_name":"mde/ejs","html_url":"https://github.com/mde/ejs","fork":false,"owner":{"login":"mde"}},"pullRequests":[],"platform":"github","type":"tutorials","tags":["utopian-io","javascript","node","ejs"],"links":["https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png","http://ejs.co/"],"image":["https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png","https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png"]} |
| Transaction Info | Block #19378348/Trx 14c9187d5681a3ef9b82eccb0766d6b2beb55990 |
View Raw JSON Data
{
"trx_id": "14c9187d5681a3ef9b82eccb0766d6b2beb55990",
"block": 19378348,
"trx_in_block": 36,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T16:34:12",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "utopian-io",
"author": "prodicode",
"permlink": "how-to-use-ejs-displaying-data-from-nodejs-in-html",
"title": "How to use EJS - Displaying data from NodeJS in HTML",
"body": "\n#### What Will I Learn?\n\n- How to use EJS in NodeJS\n- How to display Node variables in the frontend with EJS\n- How to setup EJS with ExpressJS and Body Parser\n\n#### Difficulty : Basic\n\n------------------------\n\n## Basic Node and Express setup\n\nBefore we start writing code, we will need to have all our required npm packages installed. We will need the following packages:\n- express\n- body-parser\n- ejs\n\n\nTo install them just use the following command:\n<pre><code>npm install express body-parser ejs mongodb --save</code></pre>\n \nNow, let's write our basic Node and Express code that will display *Hello World*.\n\n **app.js**\n<pre><code>\nvar app = require('express')();\napp.get(\"/\", (req, res) => { res.send(\"Hello World\"); });\napp.listen(8080, () => { console.log(\"Server online on http://localhost:8080\"); }); \n</code></pre>\n\nNow, if we visit <code>http://localhost:8080</code>, we should see the following:\n\n\n\n\n## Configuring EJS with Express\n\nOur basic express route is now working. Let's start working with EJS. The first thing we need to do is to create a <code>index.ejs</code> file that will hold our EJS code. In the same directory as the <code>app.js</code>, create another directory named **views**. Inside the **views** directory, create a new file called <code>index.ejs</code> (*ejs* stands for EJS).\nYour file hierarcy should look like this:\n<pre><code>|--app.js\n|+--views\n| |--index.ejs</code></pre>\n\n\nInside <code>index.ejs</code>, let's write this simple HTML code:\n\n```\n<html>\n<h1>This is an EJS page</h1>\n</html>\n```\n\nNow we have our <code>index.ejs</code>, but Express will just render *Hello World*. How can we get Express to render our <code>index.ejs</code> file? We will use Express's view engine, so the code inside <code>app.js</code> will now look like this:\n\n**app.js**\n<pre><code>\nvar app = require(\"express\")(); \nvar bodyParser = require(\"body-parser\"); <br>\n//Set view engine to ejs\napp.set(\"view engine\", \"ejs\"); <br>\n//Tell Express where we keep our index.ejs\napp.set(\"views\", __dirname + \"/views\"); <br>\n//Use body-parser\napp.use(bodyParser.urlencoded({ extended: false })); <br>\n//Instead of sending Hello World, we render index.ejs\napp.get(\"/\", (req, res) => { res.render(\"index\") }); <br>\napp.listen(8080, () => { console.log(\"Server online on http://localhost:8080\"); });\n</code></pre>\n\nNow, when we visit <code>http://localhost:8080</code>, it should display this:\n\n\n\n## Rendering variables from the backend ( Node.JS )\nFor example, you have a variable <code>user</code> in Node that is equal to the current user's name:\n\n<pre><code>var user = \"Prodicode\";</code></pre>\n\nWe want to display the <code>user</code> variable in HTML so it will look like this:\n<pre><code><h1>Hello, Prodicode</h1></code></pre>\n<br>\n<br>\nTo do so, we will need to pass the <code>user</code> variable to the index.ejs file when we render it. So when we render <code>index.ejs</code>, we will use this line instead:\n<pre><code>app.get(\"/\", (req, res) => { res.render(\"index\", { username: user }); });</code></pre>\nYou will notice that we will pass the value of the <code>user</code> variable into another <code>username</code> variable that now exists in the <code>index.ejs</code> file.\n\nAll that's left to do is to display the <code>username</code> variable inside <code>index.ejs</code>. So, let's write this inside <code>index.ejs</code>:\n\n```\n<html>\n<h1>Hello, <%= username %></h1>\n</html>\n```\n\nYou will notice some strange HTML syntax: <code><%= username %></code>. Well, that is not HTML, it's EJS. The <code>username</code> variable already exists when we render <code>index.ejs</code>, and that is the EJS syntax for dumping a variable's value, a.k.a displaying it.\n\nNavigating to <code>http://localhost:8080</code>, we will see:\n\n\n\n\n## Displaying an array\n\nWe now know how to display an variable, but what if we want to display a list of variables inside an array. Inside <code>app.js</code>, we will also have the following array:\n\n<pre><code>\nvar shopping_cart = [\"shampoo\", \"snacks\", \"fruits\"];\n</code></pre>\n\nAnd we want to display them like so:\n<pre><code><h1>Hello, Prodicode</h1><br><h3>Shopping Cart: </h3><br><ul><li>shampoo</li><li>snacks</li><li>fruits</li></ul></code></pre>\n\nInside <code>app.js</code>, when we render <code>index.ejs</code>, instead of only sending the <code>user</code> variable, we will send both the <code>user</code> variable and the <code>shopping_cart</code> array. The code that renders the page will look like this:\n<pre><code>app.get(\"/\", (req, res) => { res.render(\"index\", { username: user, cart: shopping_cart }); });</code></pre>\nNow, after rendering <code>index.ejs</code> we will have 2 variables available that we can use the EJS syntax to render: <code>username</code> with the value of \"Prodicode\" and <code>cart</code> that is an array containing the following elements: \"shampoo\", \"snacks\" and \"fruits\". EJS does not only support displaying variables with <code><%= variable_name %></code>, it also supports javascript code. For example, this code will check if the variable <code>loggedIn</code> is true, and if it is, will display Welcome! :\n\n```\n<html>\n<% if(loggedIn){ %>\n<span>Welcome!</span>\n<% } %>\n</html>\n```\n\nJust take a second to analyze the code above.\n\nTo display the array, use the following code:\n\n```\n<html>\n<h1>Hello, <%= username %></h1>\n<br>\n<h3>Shopping Cart: </h3>\n<br>\n<ul>\n<% for(var item in cart) { %>\n<li><%= item %></li>\n<% } %>\n</ul>\n</html>\n```\nNow, navigating to <code>http://localhost:8080</code> should render this:\n\n\n\n\n## Conclusion\nEJS is a great alternative to plain HTML to use with Node and Express. The best part about it is its simplicity. The EJS syntax is very easy to integrate in HTML and it's not hard to understand. You can check out EJS's official website [here](http://ejs.co/) where you can find more documentation and examples. If you have any other questions or are confused about certain aspects of EJS, drop them in the comments below and I will try to answer them as fast as possible!\n\n<br /><hr/><em>Posted on <a href=\"https://utopian.io/utopian-io/@prodicode/how-to-use-ejs-displaying-data-from-nodejs-in-html\">Utopian.io - Rewarding Open Source Contributors</a></em><hr/>",
"json_metadata": "{\"community\":\"utopian\",\"app\":\"utopian/1.0.0\",\"format\":\"markdown\",\"repository\":{\"id\":28671602,\"name\":\"ejs\",\"full_name\":\"mde/ejs\",\"html_url\":\"https://github.com/mde/ejs\",\"fork\":false,\"owner\":{\"login\":\"mde\"}},\"pullRequests\":[],\"platform\":\"github\",\"type\":\"tutorials\",\"tags\":[\"utopian-io\",\"javascript\",\"node\",\"ejs\"],\"links\":[\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png\",\"http://ejs.co/\"],\"image\":[\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png\",\"https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png\"]}"
}
]
}prodicodeupvoted (100.00%) @roj / getting-started-with-linux-or-from-zero-to-linux-expert2018/01/28 10:18:21
prodicodeupvoted (100.00%) @roj / getting-started-with-linux-or-from-zero-to-linux-expert
2018/01/28 10:18:21
| voter | prodicode |
| author | roj |
| permlink | getting-started-with-linux-or-from-zero-to-linux-expert |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19370834/Trx d9f9165dee47403cfc677dcf75e986df0d0587c8 |
View Raw JSON Data
{
"trx_id": "d9f9165dee47403cfc677dcf75e986df0d0587c8",
"block": 19370834,
"trx_in_block": 30,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-28T10:18:21",
"op": [
"vote",
{
"voter": "prodicode",
"author": "roj",
"permlink": "getting-started-with-linux-or-from-zero-to-linux-expert",
"weight": 10000
}
]
}prodicodereceived 0.024 SBD, 0.006 SP author reward for @prodicode / re-firedream-steembotanalysis-20180121t100417691z2018/01/28 10:01:06
prodicodereceived 0.024 SBD, 0.006 SP author reward for @prodicode / re-firedream-steembotanalysis-20180121t100417691z
2018/01/28 10:01:06
| author | prodicode |
| permlink | re-firedream-steembotanalysis-20180121t100417691z |
| sbd payout | 0.024 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 10.232032 VESTS |
| Transaction Info | Block #19370488/Virtual Operation #11 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19370488,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 11,
"timestamp": "2018-01-28T10:01:06",
"op": [
"author_reward",
{
"author": "prodicode",
"permlink": "re-firedream-steembotanalysis-20180121t100417691z",
"sbd_payout": "0.024 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "10.232032 VESTS"
}
]
}steemdelegated 7.991 SP to @prodicode2018/01/27 22:45:30
steemdelegated 7.991 SP to @prodicode
2018/01/27 22:45:30
| delegator | steem |
| delegatee | prodicode |
| vesting shares | 13012.891661 VESTS |
| Transaction Info | Block #19356980/Trx 3ed928f1e9d8e6735df74690141cda79c4640436 |
View Raw JSON Data
{
"trx_id": "3ed928f1e9d8e6735df74690141cda79c4640436",
"block": 19356980,
"trx_in_block": 46,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-27T22:45:30",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "prodicode",
"vesting_shares": "13012.891661 VESTS"
}
]
}prodicodesent 49.100 SBD to @blocktrades- "8df39e8c-c486-4656-9fac-849c5b5174b6"2018/01/27 22:28:21
prodicodesent 49.100 SBD to @blocktrades- "8df39e8c-c486-4656-9fac-849c5b5174b6"
2018/01/27 22:28:21
| from | prodicode |
| to | blocktrades |
| amount | 49.100 SBD |
| memo | 8df39e8c-c486-4656-9fac-849c5b5174b6 |
| Transaction Info | Block #19356637/Trx efab466bc03a4b3158daa47458a5f90291effa85 |
View Raw JSON Data
{
"trx_id": "efab466bc03a4b3158daa47458a5f90291effa85",
"block": 19356637,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-27T22:28:21",
"op": [
"transfer",
{
"from": "prodicode",
"to": "blocktrades",
"amount": "49.100 SBD",
"memo": "8df39e8c-c486-4656-9fac-849c5b5174b6"
}
]
}prodicodeclaimed reward balance: 49.117 SBD, 10.231 SP2018/01/27 22:24:42
prodicodeclaimed reward balance: 49.117 SBD, 10.231 SP
2018/01/27 22:24:42
| account | prodicode |
| reward steem | 0.000 STEEM |
| reward sbd | 49.117 SBD |
| reward vests | 16660.224755 VESTS |
| Transaction Info | Block #19356564/Trx e35c6cea2546c6c15fde6e129d73ab039da20bcb |
View Raw JSON Data
{
"trx_id": "e35c6cea2546c6c15fde6e129d73ab039da20bcb",
"block": 19356564,
"trx_in_block": 53,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-27T22:24:42",
"op": [
"claim_reward_balance",
{
"account": "prodicode",
"reward_steem": "0.000 STEEM",
"reward_sbd": "49.117 SBD",
"reward_vests": "16660.224755 VESTS"
}
]
}prodicodereceived 49.117 SBD, 10.225 SP author reward for @prodicode / implemented-web-panel-to-view-bot-activity2018/01/27 21:48:15
prodicodereceived 49.117 SBD, 10.225 SP author reward for @prodicode / implemented-web-panel-to-view-bot-activity
2018/01/27 21:48:15
| author | prodicode |
| permlink | implemented-web-panel-to-view-bot-activity |
| sbd payout | 49.117 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 16649.992459 VESTS |
| Transaction Info | Block #19355834/Virtual Operation #13 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19355834,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 13,
"timestamp": "2018-01-27T21:48:15",
"op": [
"author_reward",
{
"author": "prodicode",
"permlink": "implemented-web-panel-to-view-bot-activity",
"sbd_payout": "49.117 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "16649.992459 VESTS"
}
]
}utopian.payreceived 6.815 SP benefactor reward from @prodicode2018/01/27 21:48:15
utopian.payreceived 6.815 SP benefactor reward from @prodicode
2018/01/27 21:48:15
| benefactor | utopian.pay |
| author | prodicode |
| permlink | implemented-web-panel-to-view-bot-activity |
| sbd payout | 0.000 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 11097.948513 VESTS |
| Transaction Info | Block #19355834/Virtual Operation #12 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19355834,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 12,
"timestamp": "2018-01-27T21:48:15",
"op": [
"comment_benefactor_reward",
{
"benefactor": "utopian.pay",
"author": "prodicode",
"permlink": "implemented-web-panel-to-view-bot-activity",
"sbd_payout": "0.000 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "11097.948513 VESTS"
}
]
}prodicodereceived 0.006 SP curation reward for @prodicode / implemented-web-panel-to-view-bot-activity2018/01/27 21:48:15
prodicodereceived 0.006 SP curation reward for @prodicode / implemented-web-panel-to-view-bot-activity
2018/01/27 21:48:15
| curator | prodicode |
| reward | 10.232296 VESTS |
| comment author | prodicode |
| comment permlink | implemented-web-panel-to-view-bot-activity |
| Transaction Info | Block #19355834/Virtual Operation #11 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 19355834,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 11,
"timestamp": "2018-01-27T21:48:15",
"op": [
"curation_reward",
{
"curator": "prodicode",
"reward": "10.232296 VESTS",
"comment_author": "prodicode",
"comment_permlink": "implemented-web-panel-to-view-bot-activity"
}
]
}randow87upvoted (100.00%) @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm2018/01/26 02:33:48
randow87upvoted (100.00%) @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm
2018/01/26 02:33:48
| voter | randow87 |
| author | prodicode |
| permlink | npm-explained-how-to-upload-your-own-javascript-module-to-npm |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19303990/Trx 56611ed001df87c7557ffa421b812d6173526b82 |
View Raw JSON Data
{
"trx_id": "56611ed001df87c7557ffa421b812d6173526b82",
"block": 19303990,
"trx_in_block": 22,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-26T02:33:48",
"op": [
"vote",
{
"voter": "randow87",
"author": "prodicode",
"permlink": "npm-explained-how-to-upload-your-own-javascript-module-to-npm",
"weight": 10000
}
]
}2018/01/25 08:41:42
2018/01/25 08:41:42
| voter | prodicode |
| author | cloh76 |
| permlink | k0mr7lyc |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19282555/Trx c313e3722d027c6a316597e5511c9decd8f4fd99 |
View Raw JSON Data
{
"trx_id": "c313e3722d027c6a316597e5511c9decd8f4fd99",
"block": 19282555,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-25T08:41:42",
"op": [
"vote",
{
"voter": "prodicode",
"author": "cloh76",
"permlink": "k0mr7lyc",
"weight": 10000
}
]
}zshupvoted (93.00%) @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm2018/01/25 08:06:45
zshupvoted (93.00%) @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm
2018/01/25 08:06:45
| voter | zsh |
| author | prodicode |
| permlink | npm-explained-how-to-upload-your-own-javascript-module-to-npm |
| weight | 9300 (93.00%) |
| Transaction Info | Block #19281856/Trx 89d8e528f1d6b85a2c9b8ce1d2a884fe0946525b |
View Raw JSON Data
{
"trx_id": "89d8e528f1d6b85a2c9b8ce1d2a884fe0946525b",
"block": 19281856,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-25T08:06:45",
"op": [
"vote",
{
"voter": "zsh",
"author": "prodicode",
"permlink": "npm-explained-how-to-upload-your-own-javascript-module-to-npm",
"weight": 9300
}
]
}2018/01/25 07:14:33
2018/01/25 07:14:33
| voter | prodicode |
| author | utopian-io |
| permlink | re-prodicode-npm-explained-how-to-upload-your-own-javascript-module-to-npm-20180125t012930464z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19280812/Trx cc1c12fc7594246e59234c9b4d8f7628c63d0b3a |
View Raw JSON Data
{
"trx_id": "cc1c12fc7594246e59234c9b4d8f7628c63d0b3a",
"block": 19280812,
"trx_in_block": 24,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-25T07:14:33",
"op": [
"vote",
{
"voter": "prodicode",
"author": "utopian-io",
"permlink": "re-prodicode-npm-explained-how-to-upload-your-own-javascript-module-to-npm-20180125t012930464z",
"weight": 10000
}
]
}2018/01/25 01:29:30
2018/01/25 01:29:30
| parent author | prodicode |
| parent permlink | npm-explained-how-to-upload-your-own-javascript-module-to-npm |
| author | utopian-io |
| permlink | re-prodicode-npm-explained-how-to-upload-your-own-javascript-module-to-npm-20180125t012930464z |
| title | |
| body | ### Hey @prodicode I am @utopian-io. I have just upvoted you! #### Achievements - You have less than 500 followers. Just gave you a gift to help you succeed! - Seems like you contribute quite often. AMAZING! #### Suggestions - Contribute more often to get higher and higher rewards. I wish to see you often! - Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck! #### Get Noticed! - Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions! #### Community-Driven Witness! I am the first and only Steem Community-Driven Witness. <a href="https://discord.gg/zTrEMqB">Participate on Discord</a>. Lets GROW TOGETHER! - <a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1">Vote for my Witness With SteemConnect</a> - <a href="https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1">Proxy vote to Utopian Witness with SteemConnect</a> - Or vote/proxy on <a href="https://steemit.com/~witnesses">Steemit Witnesses</a> [](https://steemit.com/~witnesses) **Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x** |
| json metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} |
| Transaction Info | Block #19273915/Trx 9ffada6e924ba8e96084c6588e200960068b33c3 |
View Raw JSON Data
{
"trx_id": "9ffada6e924ba8e96084c6588e200960068b33c3",
"block": 19273915,
"trx_in_block": 17,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-25T01:29:30",
"op": [
"comment",
{
"parent_author": "prodicode",
"parent_permlink": "npm-explained-how-to-upload-your-own-javascript-module-to-npm",
"author": "utopian-io",
"permlink": "re-prodicode-npm-explained-how-to-upload-your-own-javascript-module-to-npm-20180125t012930464z",
"title": "",
"body": "### Hey @prodicode I am @utopian-io. I have just upvoted you!\n#### Achievements\n- You have less than 500 followers. Just gave you a gift to help you succeed!\n- Seems like you contribute quite often. AMAZING!\n#### Suggestions\n- Contribute more often to get higher and higher rewards. I wish to see you often!\n- Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!\n#### Get Noticed!\n- Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!\n#### Community-Driven Witness!\nI am the first and only Steem Community-Driven Witness. <a href=\"https://discord.gg/zTrEMqB\">Participate on Discord</a>. Lets GROW TOGETHER!\n- <a href=\"https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1\">Vote for my Witness With SteemConnect</a>\n- <a href=\"https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1\">Proxy vote to Utopian Witness with SteemConnect</a>\n- Or vote/proxy on <a href=\"https://steemit.com/~witnesses\">Steemit Witnesses</a>\n\n[](https://steemit.com/~witnesses)\n\n**Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x**",
"json_metadata": "{\"tags\":[\"utopian-io\"],\"community\":\"utopian\",\"app\":\"utopian/1.0.0\"}"
}
]
}2018/01/25 01:29:27
2018/01/25 01:29:27
| voter | utopian-io |
| author | prodicode |
| permlink | npm-explained-how-to-upload-your-own-javascript-module-to-npm |
| weight | 161 (1.61%) |
| Transaction Info | Block #19273914/Trx 8f632da41b6e0f7d7c0879d5403fb9199d5e5411 |
View Raw JSON Data
{
"trx_id": "8f632da41b6e0f7d7c0879d5403fb9199d5e5411",
"block": 19273914,
"trx_in_block": 43,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-25T01:29:27",
"op": [
"vote",
{
"voter": "utopian-io",
"author": "prodicode",
"permlink": "npm-explained-how-to-upload-your-own-javascript-module-to-npm",
"weight": 161
}
]
}denisewardupvoted (100.00%) @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm2018/01/24 12:56:24
denisewardupvoted (100.00%) @prodicode / npm-explained-how-to-upload-your-own-javascript-module-to-npm
2018/01/24 12:56:24
| voter | deniseward |
| author | prodicode |
| permlink | npm-explained-how-to-upload-your-own-javascript-module-to-npm |
| weight | 10000 (100.00%) |
| Transaction Info | Block #19258856/Trx 2288296e663b0a0b4755c0189f301b3ea6364030 |
View Raw JSON Data
{
"trx_id": "2288296e663b0a0b4755c0189f301b3ea6364030",
"block": 19258856,
"trx_in_block": 44,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-24T12:56:24",
"op": [
"vote",
{
"voter": "deniseward",
"author": "prodicode",
"permlink": "npm-explained-how-to-upload-your-own-javascript-module-to-npm",
"weight": 10000
}
]
}2018/01/24 12:16:54
2018/01/24 12:16:54
| required auths | [] |
| required posting auths | ["prodicode"] |
| id | follow |
| json | ["follow",{"follower":"prodicode","following":"chuqui","what":["blog"]}] |
| Transaction Info | Block #19258066/Trx 6799996b33630e26798e834916a830209cce3d18 |
View Raw JSON Data
{
"trx_id": "6799996b33630e26798e834916a830209cce3d18",
"block": 19258066,
"trx_in_block": 17,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-01-24T12:16:54",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"prodicode"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"prodicode\",\"following\":\"chuqui\",\"what\":[\"blog\"]}]"
}
]
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress57.42%
{
"voting_manabar": {
"current_mana": "23299849507",
"last_update_time": 1588948041
},
"downvote_manabar": {
"current_mana": "5824962377",
"last_update_time": 1588948041
},
"rc_account": {
"account": "prodicode",
"rc_manabar": {
"current_mana": "27330298281",
"last_update_time": 1588948041
},
"max_rc_creation_adjustment": {
"amount": "2020748973",
"precision": 6,
"nai": "@@000000037"
},
"max_rc": "25320598480"
}
}Account Metadata
| POSTING JSON METADATA | |
| profile | {"profile_image":"https://scontent.fsbz1-2.fna.fbcdn.net/v/t1.0-1/p200x200/19510660_428578474193665_5591012056856314643_n.jpg?oh=73c2e8f14ae4af6d09c85d84a41c617b&oe=5AE89C97","cover_image":"https://stockx-assets.imgix.net/logo/stockx-header-logo-white.svg","name":"Tudor Gheorghiu","website":"https://prodicode.com"} |
| JSON METADATA | |
| profile | {"profile_image":"https://scontent.fsbz1-2.fna.fbcdn.net/v/t1.0-1/p200x200/19510660_428578474193665_5591012056856314643_n.jpg?oh=73c2e8f14ae4af6d09c85d84a41c617b&oe=5AE89C97","cover_image":"https://stockx-assets.imgix.net/logo/stockx-header-logo-white.svg","name":"Tudor Gheorghiu","website":"https://prodicode.com"} |
{
"posting_json_metadata": {
"profile": {
"profile_image": "https://scontent.fsbz1-2.fna.fbcdn.net/v/t1.0-1/p200x200/19510660_428578474193665_5591012056856314643_n.jpg?oh=73c2e8f14ae4af6d09c85d84a41c617b&oe=5AE89C97",
"cover_image": "https://stockx-assets.imgix.net/logo/stockx-header-logo-white.svg",
"name": "Tudor Gheorghiu",
"website": "https://prodicode.com"
}
},
"json_metadata": {
"profile": {
"profile_image": "https://scontent.fsbz1-2.fna.fbcdn.net/v/t1.0-1/p200x200/19510660_428578474193665_5591012056856314643_n.jpg?oh=73c2e8f14ae4af6d09c85d84a41c617b&oe=5AE89C97",
"cover_image": "https://stockx-assets.imgix.net/logo/stockx-header-logo-white.svg",
"name": "Tudor Gheorghiu",
"website": "https://prodicode.com"
}
}
}Auth Keys
Owner
Single Signature
Public Keys
STM7Jp9Bn1GT4nPzwza2H9FTTqY9WWqVqTe14wJ22dKu35idPWnq31/1
Active
Single Signature
Public Keys
STM8XcSkVHG1Tf1UcyTgktBpj3jZctSrqR3KJvuLuHCbct83DBnTc1/1
Posting
Single Signature
Public Keys
STM5SPb1xJHJkEBkBaHvaSChSX6gF3ka9Ro8JwBCHDEHHb75MJDcN1/1
Memo
STM8aXDoav3Zgjs5CHdK5xfnb8fmsyM8DiJmqbBvGrbCHda8aL5we
{
"owner": {
"account_auths": [],
"key_auths": [
[
"STM7Jp9Bn1GT4nPzwza2H9FTTqY9WWqVqTe14wJ22dKu35idPWnq3",
1
]
],
"weight_threshold": 1
},
"active": {
"account_auths": [],
"key_auths": [
[
"STM8XcSkVHG1Tf1UcyTgktBpj3jZctSrqR3KJvuLuHCbct83DBnTc",
1
]
],
"weight_threshold": 1
},
"posting": {
"account_auths": [
[
"dtube.app",
1
],
[
"utopian.app",
1
]
],
"key_auths": [
[
"STM5SPb1xJHJkEBkBaHvaSChSX6gF3ka9Ro8JwBCHDEHHb75MJDcN",
1
]
],
"weight_threshold": 1
},
"memo": "STM8aXDoav3Zgjs5CHdK5xfnb8fmsyM8DiJmqbBvGrbCHda8aL5we"
}Witness Votes
1 / 30
01.utopian-io |
[ "utopian-io" ]