Ecoer Logo
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
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
14.308SP
Delegated Out
0.000SP
Delegation In
0.000SP
Effective Power
14.308SP
Reward SP (pending)
0.000SP
SBD
sbd_balance
0.939SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.000SBD
{
  "balance": "0.001 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "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

nameprodicode
id633180
rank100,883
reputation322289636598
created2018-01-20T17:49:30
recovery_accountsteem
proxyNone
post_count17
comment_count0
lifetime_vote_count0
witnesses_voted_for1
last_post2018-10-04T16:45:24
last_root_post2018-10-04T16:45:24
last_vote_time2018-01-30T18:19:54
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.001 STEEM
savings_balance0.000 STEEM
sbd_balance0.939 SBD
savings_sbd_balance0.000 SBD
vesting_shares23299.849507 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares0.000000 VESTS
reward_vesting_balance0.000000 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2018-01-20T19:19:09
minedNo
sbd_seconds0
sbd_last_interest_payment2018-06-30T00:46:48
savings_sbd_last_interest_payment1970-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

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 0.000 SP to @prodicode
2020/05/08 14:27:21
delegatorsteem
delegateeprodicode
vesting shares0.000000 VESTS
Transaction InfoBlock #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
parent authorprodicode
parent permlinkpurple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612
authorsteemitboard
permlinksteemitboard-notify-prodicode-20200120t191918000z
title
bodyCongratulations @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 InfoBlock #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\"]}"
    }
  ]
}
2019/09/30 01:47:39
votertodoweb
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
fromdtube
toprodicode
amount0.001 STEEM
memoTime is running out, claim your DTube account now before anyone else can! Login at https://d.tube
Transaction InfoBlock #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
parent authorprodicode
parent permlinkpurple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612
authorsteemitboard
permlinksteemitboard-notify-prodicode-20190120t185551000z
title
bodyCongratulations @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 InfoBlock #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 @prodicode
2019/01/03 23:01:09
delegatorsteem
delegateeprodicode
vesting shares2009.699801 VESTS
Transaction InfoBlock #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 @prodicode
2018/11/26 19:05:00
delegatorsteem
delegateeprodicode
vesting shares6909.912621 VESTS
Transaction InfoBlock #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
parent authorprodicode
parent permlinkpurple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612
authorpinoy
permlinkre-prodicode-purple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612-20181004t170137994z
titlefossbot voter comment
bodyI upvoted your post. Cheers to you. @Pinoy Posted using https://Steeming.com condenser site.
json metadata{}
Transaction InfoBlock #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
voterpinoy
authorprodicode
permlinkpurple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612
weight10000 (100.00%)
Transaction InfoBlock #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
voterfastresteem
authorprodicode
permlinkpurple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612
weight100 (1.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/10/04 16:45:24
authorprodicode
permlinkpurple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612
max accepted payout1000000.000 SBD
percent steem dollars10000
allow votestrue
allow curation rewardstrue
extensions[[0,{"beneficiaries":[{"account":"esteemapp","weight":1000}]}]]
Transaction InfoBlock #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
              }
            ]
          }
        ]
      ]
    }
  ]
}
2018/10/04 16:45:24
parent author
parent permlinkcrypto
authorprodicode
permlinkpurple-fast-programmable-multi-asset-blockchain-ecosystem-0bc12c4da8612
titlePurple - Fast, Programmable, Multi-Asset Blockchain Ecosystem
bodyhttps://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 InfoBlock #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 @prodicode
2018/06/30 01:04:21
delegatorsteem
delegateeprodicode
vesting shares7152.144523 VESTS
Transaction InfoBlock #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
fromprodicode
toblocktrades
amount22.000 SBD
memo850bf9e4-a272-40ff-905d-333e3b6c0478
Transaction InfoBlock #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
parent authorprodicode
parent permlinkstack-overflow-steemit
authoraley
permlinkre-prodicode-stack-overflow-steemit-20180522t090855918z
title
bodyGreat 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 InfoBlock #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 @prodicode
2018/05/16 23:46:09
delegatorsteem
delegateeprodicode
vesting shares2034.832276 VESTS
Transaction InfoBlock #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 / b5p5iw7i
2018/04/03 13:54:30
voterm41277de
authorprodicode
permlinkb5p5iw7i
weight10000 (100.00%)
Transaction InfoBlock #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 / b5p5iw7i
2018/02/23 20:27:24
voterleninaml
authorprodicode
permlinkb5p5iw7i
weight10000 (100.00%)
Transaction InfoBlock #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 @prodicode
2018/02/07 09:09:33
delegatorsteem
delegateeprodicode
vesting shares7380.571001 VESTS
Transaction InfoBlock #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 SP
2018/02/07 07:54:12
accountprodicode
reward steem0.000 STEEM
reward sbd6.790 SBD
reward vests3105.294411 VESTS
Transaction InfoBlock #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-html
2018/02/04 16:34:12
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
sbd payout6.790 SBD
steem payout0.000 STEEM
vesting payout3103.248763 VESTS
Transaction InfoBlock #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 @prodicode
2018/02/04 16:34:12
benefactorutopian.pay
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
sbd payout0.000 SBD
steem payout0.000 STEEM
vesting payout2066.104977 VESTS
Transaction InfoBlock #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"
    }
  ]
}
2018/02/04 16:34:12
curatorprodicode
reward2.045648 VESTS
comment authorprodicode
comment permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
Transaction InfoBlock #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
voterprodicode
authorutopian-io
permlinkre-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180129t234333755z
weight10000 (100.00%)
Transaction InfoBlock #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 @prodicode
2018/01/30 17:44:45
fromblocktrades
toprodicode
amount8.818 SBD
memo
Transaction InfoBlock #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 @prodicode
2018/01/30 12:42:39
delegatorsteem
delegateeprodicode
vesting shares10498.119219 VESTS
Transaction InfoBlock #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 SP
2018/01/30 09:24:54
accountprodicode
reward steem0.000 STEEM
reward sbd7.314 SBD
reward vests2510.735586 VESTS
Transaction InfoBlock #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"
    }
  ]
}
2018/01/30 00:48:24
authorprodicode
permlinknpm-explained-how-to-upload-your-own-javascript-module-to-npm
sbd payout7.290 SBD
steem payout0.000 STEEM
vesting payout2484.133646 VESTS
Transaction InfoBlock #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 @prodicode
2018/01/30 00:48:24
benefactorutopian.pay
authorprodicode
permlinknpm-explained-how-to-upload-your-own-javascript-module-to-npm
sbd payout0.000 SBD
steem payout0.000 STEEM
vesting payout1655.407018 VESTS
Transaction InfoBlock #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"
    }
  ]
}
2018/01/30 00:48:24
curatorprodicode
reward16.369908 VESTS
comment authorprodicode
comment permlinknpm-explained-how-to-upload-your-own-javascript-module-to-npm
Transaction InfoBlock #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
parent authorprodicode
parent permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
authorutopian-io
permlinkre-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> [![mooncryption-utopian-witness-gif](https://steemitimages.com/DQmYPUuQRptAqNBCQRwQjKWAqWU3zJkL3RXVUtEKVury8up/mooncryption-s-utopian-io-witness-gif.gif)](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 InfoBlock #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[![mooncryption-utopian-witness-gif](https://steemitimages.com/DQmYPUuQRptAqNBCQRwQjKWAqWU3zJkL3RXVUtEKVury8up/mooncryption-s-utopian-io-witness-gif.gif)](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/29 23:43:30
voterutopian-io
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight210 (2.10%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/29 09:04:00
votermr-anderson
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 22:17:33
votercasberp
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:17:51
voterprodicode
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
voterprodicode
authoramosbastian
permlinkre-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180128t205058652z
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:17:18
authorprodicode
permlinkre-amosbastian-2018128t231717414z
max accepted payout1000000.000 SBD
percent steem dollars10000
allow votestrue
allow curation rewardstrue
extensions[[0,{"beneficiaries":[{"account":"esteemapp","weight":500}]}]]
Transaction InfoBlock #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
              }
            ]
          }
        ]
      ]
    }
  ]
}
2018/01/28 21:17:18
parent authoramosbastian
parent permlinkre-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180128t205058652z
authorprodicode
permlinkre-amosbastian-2018128t231717414z
title
bodyThanks!
json metadata{"tags":"utopian-io","app":"esteem/1.5.0","format":"markdown+html","community":"esteem"}
Transaction InfoBlock #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\"}"
    }
  ]
}
2018/01/28 21:11:03
voterthe-reaper
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:11:03
voterretrocausality
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:11:03
voterthegrandestine
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:11:03
voteraudiosiren
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
voteromegacore
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
votermysticalword
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
voterparadoxofchoice
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
votermirrorforce
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
voterbetacore
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
voterlove-me
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
voterlilith
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
voterbutterfly-effect
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
voterchaostheory
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
voteralphacore
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight2000 (20.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:36
voterskybreaker
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 21:09:30
votersupreme-verdict
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
weight10000 (100.00%)
Transaction InfoBlock #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
parent authorprodicode
parent permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
authoramosbastian
permlinkre-prodicode-how-to-use-ejs-displaying-data-from-nodejs-in-html-20180128t205058652z
title
bodyThank 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 InfoBlock #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\"}"
    }
  ]
}
2018/01/28 20:50:54
parent author
parent permlinkutopian-io
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
titleHow 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: ![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png) ## 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: ![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png) ## 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: ![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png) ## 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: ![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png) ## 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 InfoBlock #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![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png)\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![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png)\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![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png)\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![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png)\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}}"
    }
  ]
}
2018/01/28 16:39:15
voterprodicode
authoreastmael
permlinkutopian-dev-add-the-wallet-page
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/28 16:34:12
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
max accepted payout1000000.000 SBD
percent steem dollars10000
allow votestrue
allow curation rewardstrue
extensions[[0,{"beneficiaries":[{"account":"utopian.pay","weight":2500}]}]]
Transaction InfoBlock #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
              }
            ]
          }
        ]
      ]
    }
  ]
}
2018/01/28 16:34:12
parent author
parent permlinkutopian-io
authorprodicode
permlinkhow-to-use-ejs-displaying-data-from-nodejs-in-html
titleHow 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: ![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png) ## 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: ![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png) ## 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: ![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png) ## 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: ![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png) ## 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 InfoBlock #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![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517151327/n8slshtmvuvun952zgri.png)\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![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517153940/l3rifrliobw5njczxst2.png)\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![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517155644/inelnsszvcfmilcocrji.png)\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![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1517157121/wolmrhtyzyjvwf784nxz.png)\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\"]}"
    }
  ]
}
2018/01/28 10:18:21
voterprodicode
authorroj
permlinkgetting-started-with-linux-or-from-zero-to-linux-expert
weight10000 (100.00%)
Transaction InfoBlock #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-20180121t100417691z
2018/01/28 10:01:06
authorprodicode
permlinkre-firedream-steembotanalysis-20180121t100417691z
sbd payout0.024 SBD
steem payout0.000 STEEM
vesting payout10.232032 VESTS
Transaction InfoBlock #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 @prodicode
2018/01/27 22:45:30
delegatorsteem
delegateeprodicode
vesting shares13012.891661 VESTS
Transaction InfoBlock #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
fromprodicode
toblocktrades
amount49.100 SBD
memo8df39e8c-c486-4656-9fac-849c5b5174b6
Transaction InfoBlock #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 SP
2018/01/27 22:24:42
accountprodicode
reward steem0.000 STEEM
reward sbd49.117 SBD
reward vests16660.224755 VESTS
Transaction InfoBlock #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-activity
2018/01/27 21:48:15
authorprodicode
permlinkimplemented-web-panel-to-view-bot-activity
sbd payout49.117 SBD
steem payout0.000 STEEM
vesting payout16649.992459 VESTS
Transaction InfoBlock #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 @prodicode
2018/01/27 21:48:15
benefactorutopian.pay
authorprodicode
permlinkimplemented-web-panel-to-view-bot-activity
sbd payout0.000 SBD
steem payout0.000 STEEM
vesting payout11097.948513 VESTS
Transaction InfoBlock #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-activity
2018/01/27 21:48:15
curatorprodicode
reward10.232296 VESTS
comment authorprodicode
comment permlinkimplemented-web-panel-to-view-bot-activity
Transaction InfoBlock #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"
    }
  ]
}
2018/01/26 02:33:48
voterrandow87
authorprodicode
permlinknpm-explained-how-to-upload-your-own-javascript-module-to-npm
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
prodicodeupvoted (100.00%) @cloh76 / k0mr7lyc
2018/01/25 08:41:42
voterprodicode
authorcloh76
permlinkk0mr7lyc
weight10000 (100.00%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/25 08:06:45
voterzsh
authorprodicode
permlinknpm-explained-how-to-upload-your-own-javascript-module-to-npm
weight9300 (93.00%)
Transaction InfoBlock #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
voterprodicode
authorutopian-io
permlinkre-prodicode-npm-explained-how-to-upload-your-own-javascript-module-to-npm-20180125t012930464z
weight10000 (100.00%)
Transaction InfoBlock #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
parent authorprodicode
parent permlinknpm-explained-how-to-upload-your-own-javascript-module-to-npm
authorutopian-io
permlinkre-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> [![mooncryption-utopian-witness-gif](https://steemitimages.com/DQmYPUuQRptAqNBCQRwQjKWAqWU3zJkL3RXVUtEKVury8up/mooncryption-s-utopian-io-witness-gif.gif)](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 InfoBlock #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[![mooncryption-utopian-witness-gif](https://steemitimages.com/DQmYPUuQRptAqNBCQRwQjKWAqWU3zJkL3RXVUtEKVury8up/mooncryption-s-utopian-io-witness-gif.gif)](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
voterutopian-io
authorprodicode
permlinknpm-explained-how-to-upload-your-own-javascript-module-to-npm
weight161 (1.61%)
Transaction InfoBlock #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
    }
  ]
}
2018/01/24 12:56:24
voterdeniseward
authorprodicode
permlinknpm-explained-how-to-upload-your-own-javascript-module-to-npm
weight10000 (100.00%)
Transaction InfoBlock #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
required auths[]
required posting auths["prodicode"]
idfollow
json["follow",{"follower":"prodicode","following":"chuqui","what":["blog"]}]
Transaction InfoBlock #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\"]}]"
    }
  ]
}

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
App Permissions
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
[
  "utopian-io"
]