@leordev
46Fullstack developer that loves to learn new stuff and code - felt in love with functional programming and blockchain!
steemit.com/@leordevVOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS3.46%
Net Worth
3.593USD
STEEM
4.791STEEM
SBD
5.529SBD
Own SP
11.166SP
Detailed Balance
| STEEM | ||
| balance | 4.791STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 11.166SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 0.000SP | SP |
| Effective Power | 11.166SP | SP |
| Reward SP (pending) | 0.000SP | SP |
| SBD | ||
| sbd_balance | 5.529SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.000SBD | SBD |
{
"balance": "4.791 STEEM",
"savings_balance": "0.000 STEEM",
"reward_steem_balance": "0.000 STEEM",
"vesting_shares": "18183.813033 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "0.000000 VESTS",
"sbd_balance": "5.529 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "0.000 SBD",
"conversions": []
}Account Info
| name | leordev |
| id | 524521 |
| rank | 124,173 |
| reputation | 217358042738 |
| created | 2017-12-24T12:38:24 |
| recovery_account | steem |
| proxy | None |
| post_count | 25 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2018-08-18T15:09:18 |
| last_root_post | 2018-07-07T12:26:39 |
| last_vote_time | 2018-07-19T20:14:18 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 4.791 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 5.529 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 18183.813033 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 0.000000 VESTS |
| reward_vesting_balance | 0.000000 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 2018-06-19T16:54:39 |
| last_account_update | 2018-07-11T20:18:45 |
| mined | No |
| sbd_seconds | 10,009,360,251 |
| sbd_last_interest_payment | 2018-07-07T09:16:24 |
| savings_sbd_last_interest_payment | 1970-01-01T00:00:00 |
{
"id": 524521,
"name": "leordev",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5XZkQwa6kNaHa2cSPCm1Ydi67EwWnUC3nWRnyUDEiYh5pBt7yE",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7H2cEPZCiQ6PTL5xJr33Tc8f749MS2XY6moYxaFPeiTjPL2139",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [
[
"busy.app",
1
]
],
"key_auths": [
[
"STM8NYeHMANZcNutqhHdKDjgHn4BU67WhWYYz61gSWiQ9t7hth7Aw",
1
]
]
},
"memo_key": "STM7beLUTtcgzBcNDUGLhbHWvTz4bhGthHW3i4SXdoxn2fUBk3BkS",
"json_metadata": "{\"profile\":{\"profile_image\":\"https://leordev.github.io/assets/img/leo.jpg\",\"cover_image\":\"https://nofilmschool.com/sites/default/files/styles/article_wide/public/ideas_0.jpg\",\"name\":\"Leo\",\"about\":\"Fullstack developer that loves to learn new stuff and code - felt in love with functional programming and blockchain!\",\"location\":\"Fort Lauderdale, FL\",\"website\":\"https://leordev.github.io/\"}}",
"posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://leordev.github.io/assets/img/leo.jpg\",\"cover_image\":\"https://nofilmschool.com/sites/default/files/styles/article_wide/public/ideas_0.jpg\",\"name\":\"Leo\",\"about\":\"Fullstack developer that loves to learn new stuff and code - felt in love with functional programming and blockchain!\",\"location\":\"Fort Lauderdale, FL\",\"website\":\"https://leordev.github.io/\"}}",
"proxy": "",
"last_owner_update": "2018-06-19T16:54:39",
"last_account_update": "2018-07-11T20:18:45",
"created": "2017-12-24T12:38:24",
"mined": false,
"recovery_account": "steem",
"last_account_recovery": "1970-01-01T00:00:00",
"reset_account": "null",
"comment_count": 0,
"lifetime_vote_count": 0,
"post_count": 25,
"can_vote": true,
"voting_manabar": {
"current_mana": "18183813033",
"last_update_time": 1588939299
},
"downvote_manabar": {
"current_mana": "4545953258",
"last_update_time": 1588939299
},
"voting_power": 0,
"balance": "4.791 STEEM",
"savings_balance": "0.000 STEEM",
"sbd_balance": "5.529 SBD",
"sbd_seconds": "10009360251",
"sbd_seconds_last_update": "2018-08-02T01:05:00",
"sbd_last_interest_payment": "2018-07-07T09:16:24",
"savings_sbd_balance": "0.000 SBD",
"savings_sbd_seconds": "0",
"savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
"savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_withdraw_requests": 0,
"reward_sbd_balance": "0.000 SBD",
"reward_steem_balance": "0.000 STEEM",
"reward_vesting_balance": "0.000000 VESTS",
"reward_vesting_steem": "0.000 STEEM",
"vesting_shares": "18183.813033 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "0.000000 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"withdrawn": 0,
"to_withdraw": 0,
"withdraw_routes": 0,
"curation_rewards": 33,
"posting_rewards": 16836,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"witnesses_voted_for": 0,
"last_post": "2018-08-18T15:09:18",
"last_root_post": "2018-07-07T12:26:39",
"last_vote_time": "2018-07-19T20:14:18",
"post_bandwidth": 0,
"pending_claimed_accounts": 0,
"vesting_balance": "0.000 STEEM",
"reputation": "217358042738",
"transfer_history": [],
"market_history": [],
"post_history": [],
"vote_history": [],
"other_history": [],
"witness_votes": [],
"tags_usage": [],
"guest_bloggers": [],
"rank": 124173
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
2020/05/08 12:01:39
2020/05/08 12:01:39
| delegator | steem |
| delegatee | leordev |
| vesting shares | 0.000000 VESTS |
| Transaction Info | Block #43196280/Trx 409f44fba7848e70e58e6992906e5b9bd0504988 |
View Raw JSON Data
{
"trx_id": "409f44fba7848e70e58e6992906e5b9bd0504988",
"block": 43196280,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-05-08T12:01:39",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "leordev",
"vesting_shares": "0.000000 VESTS"
}
]
}2019/12/24 13:56:48
2019/12/24 13:56:48
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | steemitboard |
| permlink | steemitboard-notify-leordev-20191224t135647000z |
| title | |
| body | Congratulations @leordev! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@leordev/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/@leordev) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=leordev)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| Transaction Info | Block #39319041/Trx bdf402c5976125d1c1ed68c7f60fae5c63fb463a |
View Raw JSON Data
{
"trx_id": "bdf402c5976125d1c1ed68c7f60fae5c63fb463a",
"block": 39319041,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-12-24T13:56:48",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "steemitboard",
"permlink": "steemitboard-notify-leordev-20191224t135647000z",
"title": "",
"body": "Congratulations @leordev! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@leordev/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/@leordev) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=leordev)_</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\"]}"
}
]
}gaboesquivelupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32019/01/16 06:15:45
gaboesquivelupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2019/01/16 06:15:45
| voter | gaboesquivel |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #29498275/Trx 021e3bad58b4cb5c8470a65dd593724a789b519a |
View Raw JSON Data
{
"trx_id": "021e3bad58b4cb5c8470a65dd593724a789b519a",
"block": 29498275,
"trx_in_block": 10,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-01-16T06:15:45",
"op": [
"vote",
{
"voter": "gaboesquivel",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/12/24 16:08:12
2018/12/24 16:08:12
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | steemitboard |
| permlink | steemitboard-notify-leordev-20181224t160811000z |
| title | |
| body | Congratulations @leordev! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@leordev/birthday1.png</td><td>1 Year on Steemit</td></tr></table> <sub>_[Click here to view your Board](https://steemitboard.com/@leordev)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png"></a></td><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends">Christmas Challenge - Send a gift to to your friends</a></td></tr></table> > Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| Transaction Info | Block #28848256/Trx fbbd26a9506225fd5da2c83b0e9b87300b5308f4 |
View Raw JSON Data
{
"trx_id": "fbbd26a9506225fd5da2c83b0e9b87300b5308f4",
"block": 28848256,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-12-24T16:08:12",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "steemitboard",
"permlink": "steemitboard-notify-leordev-20181224t160811000z",
"title": "",
"body": "Congratulations @leordev! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@leordev/birthday1.png</td><td>1 Year on Steemit</td></tr></table>\n\n<sub>_[Click here to view your Board](https://steemitboard.com/@leordev)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png\"></a></td><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends\">Christmas Challenge - Send a gift to to your friends</a></td></tr></table>\n\n> Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
}
]
}2018/11/26 18:19:54
2018/11/26 18:19:54
| delegator | steem |
| delegatee | leordev |
| vesting shares | 2013.984142 VESTS |
| Transaction Info | Block #28044939/Trx fe52bcb6eb8a0444042ffe4662c083742e626e59 |
View Raw JSON Data
{
"trx_id": "fe52bcb6eb8a0444042ffe4662c083742e626e59",
"block": 28044939,
"trx_in_block": 40,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-11-26T18:19:54",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "leordev",
"vesting_shares": "2013.984142 VESTS"
}
]
}2018/10/25 06:46:06
2018/10/25 06:46:06
| voter | sivachaitanya |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-2-tokens-claiming-and-achieving-zero-cost-airdrop |
| weight | 10000 (100.00%) |
| Transaction Info | Block #27110084/Trx 2dc3cd23711d3e6d92da3327ec55fa5e8a3ba60c |
View Raw JSON Data
{
"trx_id": "2dc3cd23711d3e6d92da3327ec55fa5e8a3ba60c",
"block": 27110084,
"trx_in_block": 18,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-10-25T06:46:06",
"op": [
"vote",
{
"voter": "sivachaitanya",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-2-tokens-claiming-and-achieving-zero-cost-airdrop",
"weight": 10000
}
]
}sivachaitanyaupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet2018/10/25 06:19:03
sivachaitanyaupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet
2018/10/25 06:19:03
| voter | sivachaitanya |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet |
| weight | 10000 (100.00%) |
| Transaction Info | Block #27109544/Trx a3c612f4f242ab1346bcca2672552740d750aebf |
View Raw JSON Data
{
"trx_id": "a3c612f4f242ab1346bcca2672552740d750aebf",
"block": 27109544,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-10-25T06:19:03",
"op": [
"vote",
{
"voter": "sivachaitanya",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet",
"weight": 10000
}
]
}2018/08/28 14:21:09
2018/08/28 14:21:09
| required auths | [] |
| required posting auths | ["leordev"] |
| id | follow |
| json | ["follow",{"follower":"leordev","following":"friedger","what":["blog"]}] |
| Transaction Info | Block #25465571/Trx 57886178fe968a857c1a110bbeaf705522e60311 |
View Raw JSON Data
{
"trx_id": "57886178fe968a857c1a110bbeaf705522e60311",
"block": 25465571,
"trx_in_block": 33,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-28T14:21:09",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"leordev"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"leordev\",\"following\":\"friedger\",\"what\":[\"blog\"]}]"
}
]
}2018/08/19 14:30:30
2018/08/19 14:30:30
| voter | neogenesis |
| author | leordev |
| permlink | re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t010256895z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25206676/Trx b440d10f83a9cc9631a4fe23f194f7cb13754756 |
View Raw JSON Data
{
"trx_id": "b440d10f83a9cc9631a4fe23f194f7cb13754756",
"block": 25206676,
"trx_in_block": 26,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-19T14:30:30",
"op": [
"vote",
{
"voter": "neogenesis",
"author": "leordev",
"permlink": "re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t010256895z",
"weight": 10000
}
]
}neogenesisupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/08/19 05:03:27
neogenesisupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/08/19 05:03:27
| voter | neogenesis |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25195341/Trx f2ebff6f03aa8df1ac8c9f8b2e7d4ccfb9985b59 |
View Raw JSON Data
{
"trx_id": "f2ebff6f03aa8df1ac8c9f8b2e7d4ccfb9985b59",
"block": 25195341,
"trx_in_block": 22,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-19T05:03:27",
"op": [
"vote",
{
"voter": "neogenesis",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/08/18 19:57:36
2018/08/18 19:57:36
| voter | cryptolions |
| author | leordev |
| permlink | re-friedger-auto-feed-monsters-or-the-value-of-nfts-20180818t150915871z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25184428/Trx b98c00ca1395fb495668ac1cda98403c3d143bc6 |
View Raw JSON Data
{
"trx_id": "b98c00ca1395fb495668ac1cda98403c3d143bc6",
"block": 25184428,
"trx_in_block": 45,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T19:57:36",
"op": [
"vote",
{
"voter": "cryptolions",
"author": "leordev",
"permlink": "re-friedger-auto-feed-monsters-or-the-value-of-nfts-20180818t150915871z",
"weight": 10000
}
]
}leordevcustom json: follow2018/08/18 15:09:33
leordevcustom json: follow
2018/08/18 15:09:33
| required auths | [] |
| required posting auths | ["leordev"] |
| id | follow |
| json | ["reblog",{"account":"leordev","author":"friedger","permlink":"auto-feed-monsters-or-the-value-of-nfts"}] |
| Transaction Info | Block #25178667/Trx e75eb03b0491ffd54de39fd526c09879025fcb63 |
View Raw JSON Data
{
"trx_id": "e75eb03b0491ffd54de39fd526c09879025fcb63",
"block": 25178667,
"trx_in_block": 39,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T15:09:33",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"leordev"
],
"id": "follow",
"json": "[\"reblog\",{\"account\":\"leordev\",\"author\":\"friedger\",\"permlink\":\"auto-feed-monsters-or-the-value-of-nfts\"}]"
}
]
}2018/08/18 15:09:18
2018/08/18 15:09:18
| parent author | friedger |
| parent permlink | auto-feed-monsters-or-the-value-of-nfts |
| author | leordev |
| permlink | re-friedger-auto-feed-monsters-or-the-value-of-nfts-20180818t150915871z |
| title | |
| body | I loved it, my challenge to you or the community is to create a bot that auto battle lol! |
| json metadata | {"community":"busy","app":"busy/2.5.6","format":"markdown","tags":["eos"],"users":[],"links":[],"image":[]} |
| Transaction Info | Block #25178662/Trx fc45e32e9bc8c0c5c5e1f3fb7b1847350902a218 |
View Raw JSON Data
{
"trx_id": "fc45e32e9bc8c0c5c5e1f3fb7b1847350902a218",
"block": 25178662,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T15:09:18",
"op": [
"comment",
{
"parent_author": "friedger",
"parent_permlink": "auto-feed-monsters-or-the-value-of-nfts",
"author": "leordev",
"permlink": "re-friedger-auto-feed-monsters-or-the-value-of-nfts-20180818t150915871z",
"title": "",
"body": "I loved it, my challenge to you or the community is to create a bot that auto battle lol!",
"json_metadata": "{\"community\":\"busy\",\"app\":\"busy/2.5.6\",\"format\":\"markdown\",\"tags\":[\"eos\"],\"users\":[],\"links\":[],\"image\":[]}"
}
]
}leordevupvoted (100.00%) @friedger / auto-feed-monsters-or-the-value-of-nfts2018/08/18 15:08:30
leordevupvoted (100.00%) @friedger / auto-feed-monsters-or-the-value-of-nfts
2018/08/18 15:08:30
| voter | leordev |
| author | friedger |
| permlink | auto-feed-monsters-or-the-value-of-nfts |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25178646/Trx 29c59d69a48f7edf9899535ed39f25789744df92 |
View Raw JSON Data
{
"trx_id": "29c59d69a48f7edf9899535ed39f25789744df92",
"block": 25178646,
"trx_in_block": 21,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T15:08:30",
"op": [
"vote",
{
"voter": "leordev",
"author": "friedger",
"permlink": "auto-feed-monsters-or-the-value-of-nfts",
"weight": 10000
}
]
}2018/08/18 15:04:54
2018/08/18 15:04:54
| voter | leordev |
| author | friedger |
| permlink | exchange-monsters-or-how-to-implement-transfers-of-nfts-between-contract |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25178574/Trx edca3b9b703892edcc0da408c4476544e68951df |
View Raw JSON Data
{
"trx_id": "edca3b9b703892edcc0da408c4476544e68951df",
"block": 25178574,
"trx_in_block": 25,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T15:04:54",
"op": [
"vote",
{
"voter": "leordev",
"author": "friedger",
"permlink": "exchange-monsters-or-how-to-implement-transfers-of-nfts-between-contract",
"weight": 10000
}
]
}leordevupvoted (100.00%) @friedger / collect-monsters-or-how-to-implement-non-fungible-tokens-on-eos2018/08/18 14:45:15
leordevupvoted (100.00%) @friedger / collect-monsters-or-how-to-implement-non-fungible-tokens-on-eos
2018/08/18 14:45:15
| voter | leordev |
| author | friedger |
| permlink | collect-monsters-or-how-to-implement-non-fungible-tokens-on-eos |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25178181/Trx 7b4aba53898638896956b8b6ff0bdf1cdf24bc86 |
View Raw JSON Data
{
"trx_id": "7b4aba53898638896956b8b6ff0bdf1cdf24bc86",
"block": 25178181,
"trx_in_block": 21,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T14:45:15",
"op": [
"vote",
{
"voter": "leordev",
"author": "friedger",
"permlink": "collect-monsters-or-how-to-implement-non-fungible-tokens-on-eos",
"weight": 10000
}
]
}iscottupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet2018/08/10 22:25:27
iscottupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet
2018/08/10 22:25:27
| voter | iscott |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24957061/Trx b0e05214a1457d5797f7b3c4f5f6724bd5b497ad |
View Raw JSON Data
{
"trx_id": "b0e05214a1457d5797f7b3c4f5f6724bd5b497ad",
"block": 24957061,
"trx_in_block": 11,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-10T22:25:27",
"op": [
"vote",
{
"voter": "iscott",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet",
"weight": 10000
}
]
}2018/08/10 22:25:06
2018/08/10 22:25:06
| voter | iscott |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-2-tokens-claiming-and-achieving-zero-cost-airdrop |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24957054/Trx e585892d6af6466baee42d31d6da867cd5bce67a |
View Raw JSON Data
{
"trx_id": "e585892d6af6466baee42d31d6da867cd5bce67a",
"block": 24957054,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-10T22:25:06",
"op": [
"vote",
{
"voter": "iscott",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-2-tokens-claiming-and-achieving-zero-cost-airdrop",
"weight": 10000
}
]
}reyhaynesupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet2018/08/03 17:47:24
reyhaynesupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet
2018/08/03 17:47:24
| voter | reyhaynes |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24749981/Trx cb9157a98334f401639f6df471bb8a42e9ea145b |
View Raw JSON Data
{
"trx_id": "cb9157a98334f401639f6df471bb8a42e9ea145b",
"block": 24749981,
"trx_in_block": 24,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-03T17:47:24",
"op": [
"vote",
{
"voter": "reyhaynes",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet",
"weight": 10000
}
]
}2018/08/02 21:04:06
2018/08/02 21:04:06
| parent author | leordev |
| parent permlink | re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t010256895z |
| author | javierjmc |
| permlink | javierjmc-re-leordev-re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t210407157z |
| title | |
| body | Oh yes it makes sense to put it on the backend, didn't think about that.. and yes, I remembered this post when I read about Demux few days ago :)) maybe you can write an article about it as an upgrade of this one? Cheers! :) Posted using [Partiko Android](https://play.google.com/store/apps/details?id=io.partiko.android) |
| json metadata | {"app":"partiko"} |
| Transaction Info | Block #24725123/Trx a70e1e086dd02f9c16fc1e7399cb1cfaf5cef834 |
View Raw JSON Data
{
"trx_id": "a70e1e086dd02f9c16fc1e7399cb1cfaf5cef834",
"block": 24725123,
"trx_in_block": 18,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-02T21:04:06",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t010256895z",
"author": "javierjmc",
"permlink": "javierjmc-re-leordev-re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t210407157z",
"title": "",
"body": "Oh yes it makes sense to put it on the backend, didn't think about that.. and yes, I remembered this post when I read about Demux few days ago :)) maybe you can write an article about it as an upgrade of this one? Cheers! :)\n\nPosted using [Partiko Android](https://play.google.com/store/apps/details?id=io.partiko.android)",
"json_metadata": "{\"app\":\"partiko\"}"
}
]
}2018/08/02 21:03:00
2018/08/02 21:03:00
| voter | javierjmc |
| author | leordev |
| permlink | re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t010256895z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24725101/Trx 6432d75ef328c5878d1684e1c0521fc19b6f8b98 |
View Raw JSON Data
{
"trx_id": "6432d75ef328c5878d1684e1c0521fc19b6f8b98",
"block": 24725101,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-02T21:03:00",
"op": [
"vote",
{
"voter": "javierjmc",
"author": "leordev",
"permlink": "re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t010256895z",
"weight": 10000
}
]
}2018/08/02 02:27:45
2018/08/02 02:27:45
| delegator | steem |
| delegatee | leordev |
| vesting shares | 12215.503976 VESTS |
| Transaction Info | Block #24702803/Trx b4f5133f062b7c62eac513556280a5488c571277 |
View Raw JSON Data
{
"trx_id": "b4f5133f062b7c62eac513556280a5488c571277",
"block": 24702803,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-02T02:27:45",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "leordev",
"vesting_shares": "12215.503976 VESTS"
}
]
}leordevclaimed reward balance: 1.992 STEEM, 1.014 SBD, 3.457 SP2018/08/02 01:05:00
leordevclaimed reward balance: 1.992 STEEM, 1.014 SBD, 3.457 SP
2018/08/02 01:05:00
| account | leordev |
| reward steem | 1.992 STEEM |
| reward sbd | 1.014 SBD |
| reward vests | 5629.446589 VESTS |
| Transaction Info | Block #24701148/Trx df21e8ea1ace2b55ba399a1e6ca05770096b0350 |
View Raw JSON Data
{
"trx_id": "df21e8ea1ace2b55ba399a1e6ca05770096b0350",
"block": 24701148,
"trx_in_block": 20,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-02T01:05:00",
"op": [
"claim_reward_balance",
{
"account": "leordev",
"reward_steem": "1.992 STEEM",
"reward_sbd": "1.014 SBD",
"reward_vests": "5629.446589 VESTS"
}
]
}2018/08/02 01:02:57
2018/08/02 01:02:57
| parent author | javierjmc |
| parent permlink | re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180727t190333219z |
| author | leordev |
| permlink | re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t010256895z |
| title | |
| body | So in my example redux is on the backend with nodejs. You should handle this in the backend always before serve to your frontend, then you will have no problems regarding filters on the front! But now we should go for Demux, this is the juice: https://medium.com/eosio/introducing-demux-deterministic-databases-off-chain-verified-by-the-eosio-blockchain-bd860c49b017?source=linkShare-d63a4db2f83e-1532996516 |
| json metadata | {"community":"busy","app":"busy/2.5.4","format":"markdown","tags":["eos"],"users":[],"links":["https://medium.com/eosio/introducing-demux-deterministic-databases-off-chain-verified-by-the-eosio-blockchain-bd860c49b017?source=linkShare-d63a4db2f83e-1532996516"],"image":[]} |
| Transaction Info | Block #24701107/Trx c3f014441c0c7a8130c30452c2107917c763d28e |
View Raw JSON Data
{
"trx_id": "c3f014441c0c7a8130c30452c2107917c763d28e",
"block": 24701107,
"trx_in_block": 48,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-02T01:02:57",
"op": [
"comment",
{
"parent_author": "javierjmc",
"parent_permlink": "re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180727t190333219z",
"author": "leordev",
"permlink": "re-javierjmc-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180802t010256895z",
"title": "",
"body": "So in my example redux is on the backend with nodejs. You should handle this in the backend always before serve to your frontend, then you will have no problems regarding filters on the front! But now we should go for Demux, this is the juice: https://medium.com/eosio/introducing-demux-deterministic-databases-off-chain-verified-by-the-eosio-blockchain-bd860c49b017?source=linkShare-d63a4db2f83e-1532996516",
"json_metadata": "{\"community\":\"busy\",\"app\":\"busy/2.5.4\",\"format\":\"markdown\",\"tags\":[\"eos\"],\"users\":[],\"links\":[\"https://medium.com/eosio/introducing-demux-deterministic-databases-off-chain-verified-by-the-eosio-blockchain-bd860c49b017?source=linkShare-d63a4db2f83e-1532996516\"],\"image\":[]}"
}
]
}fschoellupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/08/01 03:10:42
fschoellupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/08/01 03:10:42
| voter | fschoell |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24674885/Trx ebca8d5b171f22bb7574739bd1887d7ae250bc8c |
View Raw JSON Data
{
"trx_id": "ebca8d5b171f22bb7574739bd1887d7ae250bc8c",
"block": 24674885,
"trx_in_block": 20,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-01T03:10:42",
"op": [
"vote",
{
"voter": "fschoell",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/07/27 19:03:33
2018/07/27 19:03:33
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | javierjmc |
| permlink | re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180727t190333219z |
| title | |
| body | This is brilliant indeed!! Immutable states is the way to go, beautiful way to handle it. I wonder though how well it will perform when the dapp scales since a lot of filtering is done in the frontend, am I correct or I understood it wrong? |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #24550415/Trx 568e3583a3a42a0aee84a430dcfbb0071a9415d5 |
View Raw JSON Data
{
"trx_id": "568e3583a3a42a0aee84a430dcfbb0071a9415d5",
"block": 24550415,
"trx_in_block": 33,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T19:03:33",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "javierjmc",
"permlink": "re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180727t190333219z",
"title": "",
"body": "This is brilliant indeed!! Immutable states is the way to go, beautiful way to handle it. I wonder though how well it will perform when the dapp scales since a lot of filtering is done in the frontend, am I correct or I understood it wrong?",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/07/27 02:45:30
2018/07/27 02:45:30
| voter | sunburntcat17 |
| author | leordev |
| permlink | re-eosdac-temporary-public-node-outage-eu2-eosdac-io-technical-story-and-improvements-20180719t200255408z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24530863/Trx 30993249ce1843f45f6e87ca3377bb063873160b |
View Raw JSON Data
{
"trx_id": "30993249ce1843f45f6e87ca3377bb063873160b",
"block": 24530863,
"trx_in_block": 26,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T02:45:30",
"op": [
"vote",
{
"voter": "sunburntcat17",
"author": "leordev",
"permlink": "re-eosdac-temporary-public-node-outage-eu2-eosdac-io-technical-story-and-improvements-20180719t200255408z",
"weight": 10000
}
]
}dabbleupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/27 01:41:06
dabbleupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/27 01:41:06
| voter | dabble |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24529578/Trx 902481e7cad47aa6bac8064f80f8938c0fb9ecb7 |
View Raw JSON Data
{
"trx_id": "902481e7cad47aa6bac8064f80f8938c0fb9ecb7",
"block": 24529578,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T01:41:06",
"op": [
"vote",
{
"voter": "dabble",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/07/27 01:41:00
2018/07/27 01:41:00
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | dabble |
| permlink | re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180727t014059608z |
| title | |
| body | Great! I learned many things from this article. |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #24529576/Trx 56b87baf93a681f146923aa8492c175bb08e1341 |
View Raw JSON Data
{
"trx_id": "56b87baf93a681f146923aa8492c175bb08e1341",
"block": 24529576,
"trx_in_block": 60,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T01:41:00",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "dabble",
"permlink": "re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180727t014059608z",
"title": "",
"body": "Great! I learned many things from this article.",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}leordevreceived 0.001 SP curation reward for @cypherglass / under-the-hood-of-cypherglass-windshield2018/07/26 20:00:48
leordevreceived 0.001 SP curation reward for @cypherglass / under-the-hood-of-cypherglass-windshield
2018/07/26 20:00:48
| curator | leordev |
| reward | 2.027309 VESTS |
| comment author | cypherglass |
| comment permlink | under-the-hood-of-cypherglass-windshield |
| Transaction Info | Block #24522785/Virtual Operation #24 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 24522785,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 24,
"timestamp": "2018-07-26T20:00:48",
"op": [
"curation_reward",
{
"curator": "leordev",
"reward": "2.027309 VESTS",
"comment_author": "cypherglass",
"comment_permlink": "under-the-hood-of-cypherglass-windshield"
}
]
}leordevupvoted (100.00%) @lukestokes / 2859d6d2-88ff-11e8-98cd-0242ac1100032018/07/19 20:14:18
leordevupvoted (100.00%) @lukestokes / 2859d6d2-88ff-11e8-98cd-0242ac110003
2018/07/19 20:14:18
| voter | leordev |
| author | lukestokes |
| permlink | 2859d6d2-88ff-11e8-98cd-0242ac110003 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24321619/Trx 2eaf62c803de068b8c4ec78b63f4131a93032303 |
View Raw JSON Data
{
"trx_id": "2eaf62c803de068b8c4ec78b63f4131a93032303",
"block": 24321619,
"trx_in_block": 36,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-19T20:14:18",
"op": [
"vote",
{
"voter": "leordev",
"author": "lukestokes",
"permlink": "2859d6d2-88ff-11e8-98cd-0242ac110003",
"weight": 10000
}
]
}leordevupvoted (100.00%) @cypherglass / under-the-hood-of-cypherglass-windshield2018/07/19 20:12:54
leordevupvoted (100.00%) @cypherglass / under-the-hood-of-cypherglass-windshield
2018/07/19 20:12:54
| voter | leordev |
| author | cypherglass |
| permlink | under-the-hood-of-cypherglass-windshield |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24321591/Trx e5e1dcf11da5eda3b4f7e8d9e5418db06c564b77 |
View Raw JSON Data
{
"trx_id": "e5e1dcf11da5eda3b4f7e8d9e5418db06c564b77",
"block": 24321591,
"trx_in_block": 34,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-19T20:12:54",
"op": [
"vote",
{
"voter": "leordev",
"author": "cypherglass",
"permlink": "under-the-hood-of-cypherglass-windshield",
"weight": 10000
}
]
}2018/07/19 20:02:54
2018/07/19 20:02:54
| parent author | eosdac |
| parent permlink | temporary-public-node-outage-eu2-eosdac-io-technical-story-and-improvements |
| author | leordev |
| permlink | re-eosdac-temporary-public-node-outage-eu2-eosdac-io-technical-story-and-improvements-20180719t200255408z |
| title | |
| body | Nice and quick response to fix the issue! Congrats! Also, I appreciate the shout out to MonstersEOS! :D Actually we need to thank the players, they were desperate because they could not feed their monsters! hehehe |
| json metadata | {"tags":["eosdac"],"app":"steemit/0.1"} |
| Transaction Info | Block #24321391/Trx a82b55eea791828f1267edf2d33432dc64b2e522 |
View Raw JSON Data
{
"trx_id": "a82b55eea791828f1267edf2d33432dc64b2e522",
"block": 24321391,
"trx_in_block": 25,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-19T20:02:54",
"op": [
"comment",
{
"parent_author": "eosdac",
"parent_permlink": "temporary-public-node-outage-eu2-eosdac-io-technical-story-and-improvements",
"author": "leordev",
"permlink": "re-eosdac-temporary-public-node-outage-eu2-eosdac-io-technical-story-and-improvements-20180719t200255408z",
"title": "",
"body": "Nice and quick response to fix the issue! Congrats! Also, I appreciate the shout out to MonstersEOS! :D Actually we need to thank the players, they were desperate because they could not feed their monsters! hehehe",
"json_metadata": "{\"tags\":[\"eosdac\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/07/19 19:58:48
2018/07/19 19:58:48
| voter | leordev |
| author | eosdac |
| permlink | temporary-public-node-outage-eu2-eosdac-io-technical-story-and-improvements |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24321309/Trx 32a97a48dfbd22a511cc69f4dbd1b6b8314a380b |
View Raw JSON Data
{
"trx_id": "32a97a48dfbd22a511cc69f4dbd1b6b8314a380b",
"block": 24321309,
"trx_in_block": 18,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-19T19:58:48",
"op": [
"vote",
{
"voter": "leordev",
"author": "eosdac",
"permlink": "temporary-public-node-outage-eu2-eosdac-io-technical-story-and-improvements",
"weight": 10000
}
]
}leordevreceived 0.010 SP curation reward for @jdisalvatore / how-much-an-eos-airdrop-costs-or-horus-airdrop-update2018/07/19 01:02:57
leordevreceived 0.010 SP curation reward for @jdisalvatore / how-much-an-eos-airdrop-costs-or-horus-airdrop-update
2018/07/19 01:02:57
| curator | leordev |
| reward | 16.225155 VESTS |
| comment author | jdisalvatore |
| comment permlink | how-much-an-eos-airdrop-costs-or-horus-airdrop-update |
| Transaction Info | Block #24298608/Virtual Operation #4 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 24298608,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 4,
"timestamp": "2018-07-19T01:02:57",
"op": [
"curation_reward",
{
"curator": "leordev",
"reward": "16.225155 VESTS",
"comment_author": "jdisalvatore",
"comment_permlink": "how-much-an-eos-airdrop-costs-or-horus-airdrop-update"
}
]
}willparkupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet2018/07/17 04:33:51
willparkupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet
2018/07/17 04:33:51
| voter | willpark |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24245296/Trx 227d66a75da766f14cb0abcf136c34103f27668a |
View Raw JSON Data
{
"trx_id": "227d66a75da766f14cb0abcf136c34103f27668a",
"block": 24245296,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-17T04:33:51",
"op": [
"vote",
{
"voter": "willpark",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet",
"weight": 10000
}
]
}djjaronupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet2018/07/14 23:37:57
djjaronupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet
2018/07/14 23:37:57
| voter | djjaron |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24181789/Trx a7fec2bd76efd8f34d8776aa141c1da45c118779 |
View Raw JSON Data
{
"trx_id": "a7fec2bd76efd8f34d8776aa141c1da45c118779",
"block": 24181789,
"trx_in_block": 20,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-14T23:37:57",
"op": [
"vote",
{
"voter": "djjaron",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet",
"weight": 10000
}
]
}leordevreceived 1.992 STEEM, 1.014 SBD, 3.446 SP author reward for @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/14 12:26:39
leordevreceived 1.992 STEEM, 1.014 SBD, 3.446 SP author reward for @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/14 12:26:39
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| sbd payout | 1.014 SBD |
| steem payout | 1.992 STEEM |
| vesting payout | 5611.194125 VESTS |
| Transaction Info | Block #24168363/Virtual Operation #17 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 24168363,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 17,
"timestamp": "2018-07-14T12:26:39",
"op": [
"author_reward",
{
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"sbd_payout": "1.014 SBD",
"steem_payout": "1.992 STEEM",
"vesting_payout": "5611.194125 VESTS"
}
]
}leordevupvoted (100.00%) @jdisalvatore / how-much-an-eos-airdrop-costs-or-horus-airdrop-update2018/07/12 01:23:33
leordevupvoted (100.00%) @jdisalvatore / how-much-an-eos-airdrop-costs-or-horus-airdrop-update
2018/07/12 01:23:33
| voter | leordev |
| author | jdisalvatore |
| permlink | how-much-an-eos-airdrop-costs-or-horus-airdrop-update |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24097531/Trx 92bbf37938b2f11761872043a382732838a6a459 |
View Raw JSON Data
{
"trx_id": "92bbf37938b2f11761872043a382732838a6a459",
"block": 24097531,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-12T01:23:33",
"op": [
"vote",
{
"voter": "leordev",
"author": "jdisalvatore",
"permlink": "how-much-an-eos-airdrop-costs-or-horus-airdrop-update",
"weight": 10000
}
]
}leordevfollowed @johnwilliamson2018/07/11 20:26:33
leordevfollowed @johnwilliamson
2018/07/11 20:26:33
| required auths | [] |
| required posting auths | ["leordev"] |
| id | follow |
| json | ["follow",{"follower":"leordev","following":"johnwilliamson","what":["blog"]}] |
| Transaction Info | Block #24091593/Trx f00f6a3e8ffbab47d77cdfa02fa73a0cbe32a720 |
View Raw JSON Data
{
"trx_id": "f00f6a3e8ffbab47d77cdfa02fa73a0cbe32a720",
"block": 24091593,
"trx_in_block": 33,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-11T20:26:33",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"leordev"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"leordev\",\"following\":\"johnwilliamson\",\"what\":[\"blog\"]}]"
}
]
}2018/07/11 20:24:06
2018/07/11 20:24:06
| voter | leordev |
| author | sublimate |
| permlink | re-cetos-we-have-lost-the-first-battle-but-never-failed-the-war-20180628t020101171z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24091544/Trx 1ddd7abaef80398a90c730e67d03a27a060ef418 |
View Raw JSON Data
{
"trx_id": "1ddd7abaef80398a90c730e67d03a27a060ef418",
"block": 24091544,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-11T20:24:06",
"op": [
"vote",
{
"voter": "leordev",
"author": "sublimate",
"permlink": "re-cetos-we-have-lost-the-first-battle-but-never-failed-the-war-20180628t020101171z",
"weight": 10000
}
]
}leordevupdated their account properties2018/07/11 20:18:45
leordevupdated their account properties
2018/07/11 20:18:45
| account | leordev |
| posting | {"weight_threshold":1,"account_auths":[["busy.app",1]],"key_auths":[["STM8NYeHMANZcNutqhHdKDjgHn4BU67WhWYYz61gSWiQ9t7hth7Aw",1]]} |
| memo key | STM7beLUTtcgzBcNDUGLhbHWvTz4bhGthHW3i4SXdoxn2fUBk3BkS |
| json metadata | {"profile":{"profile_image":"https://leordev.github.io/assets/img/leo.jpg","cover_image":"https://nofilmschool.com/sites/default/files/styles/article_wide/public/ideas_0.jpg","name":"Leo","about":"Fullstack developer that loves to learn new stuff and code - felt in love with functional programming and blockchain!","location":"Fort Lauderdale, FL","website":"https://leordev.github.io/"}} |
| Transaction Info | Block #24091437/Trx 7eb17fee2716e97b6f6150f43b2d2413bed0d424 |
View Raw JSON Data
{
"trx_id": "7eb17fee2716e97b6f6150f43b2d2413bed0d424",
"block": 24091437,
"trx_in_block": 17,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-11T20:18:45",
"op": [
"account_update",
{
"account": "leordev",
"posting": {
"weight_threshold": 1,
"account_auths": [
[
"busy.app",
1
]
],
"key_auths": [
[
"STM8NYeHMANZcNutqhHdKDjgHn4BU67WhWYYz61gSWiQ9t7hth7Aw",
1
]
]
},
"memo_key": "STM7beLUTtcgzBcNDUGLhbHWvTz4bhGthHW3i4SXdoxn2fUBk3BkS",
"json_metadata": "{\"profile\":{\"profile_image\":\"https://leordev.github.io/assets/img/leo.jpg\",\"cover_image\":\"https://nofilmschool.com/sites/default/files/styles/article_wide/public/ideas_0.jpg\",\"name\":\"Leo\",\"about\":\"Fullstack developer that loves to learn new stuff and code - felt in love with functional programming and blockchain!\",\"location\":\"Fort Lauderdale, FL\",\"website\":\"https://leordev.github.io/\"}}"
}
]
}leordevfollowed @lukestokes2018/07/11 20:16:18
leordevfollowed @lukestokes
2018/07/11 20:16:18
| required auths | [] |
| required posting auths | ["leordev"] |
| id | follow |
| json | ["follow",{"follower":"leordev","following":"lukestokes","what":["blog"]}] |
| Transaction Info | Block #24091388/Trx 5489e90c383d163d78758e34a3e3ff359cf226d9 |
View Raw JSON Data
{
"trx_id": "5489e90c383d163d78758e34a3e3ff359cf226d9",
"block": 24091388,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-11T20:16:18",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"leordev"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"leordev\",\"following\":\"lukestokes\",\"what\":[\"blog\"]}]"
}
]
}2018/07/11 20:09:51
2018/07/11 20:09:51
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | lukestokes |
| permlink | re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180711t200950835z |
| title | |
| body | Fantastic post! I love that you educated while also giving all the details in a tutorial style. Very nicely done. Following for more. |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #24091259/Trx 2a1bcbcdd165b5622f73caa410a6d6eb97101252 |
View Raw JSON Data
{
"trx_id": "2a1bcbcdd165b5622f73caa410a6d6eb97101252",
"block": 24091259,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-11T20:09:51",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "lukestokes",
"permlink": "re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180711t200950835z",
"title": "",
"body": "Fantastic post! I love that you educated while also giving all the details in a tutorial style. Very nicely done. Following for more.",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}lukestokesupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/11 20:09:18
lukestokesupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/11 20:09:18
| voter | lukestokes |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24091248/Trx e582b73399266943d846ff527580c390476294d9 |
View Raw JSON Data
{
"trx_id": "e582b73399266943d846ff527580c390476294d9",
"block": 24091248,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-11T20:09:18",
"op": [
"vote",
{
"voter": "lukestokes",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/07/11 14:37:27
2018/07/11 14:37:27
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | steemitboard |
| permlink | steemitboard-notify-leordev-20180711t143726000z |
| title | |
| body | Congratulations @leordev! You have completed the following achievement on Steemit and have been rewarded with new badge(s) : [](http://steemitboard.com/@leordev) Award for the number of upvotes received <sub>_Click on the badge to view your Board of Honor._</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> **Do not miss the last post from @steemitboard:** [SteemitBoard World Cup Contest - Croatia vs England](https://steemit.com/steemitboard/@steemitboard/steemitboard-world-cup-contest-croatia-vs-england) --- **Participate in the [SteemitBoard World Cup Contest](https://steemit.com/steemitboard/@steemitboard/steemitboard-world-cup-contest-collect-badges-and-win-free-sbd)!** Collect World Cup badges and win free SBD Support the Gold Sponsors of the contest: [@good-karma](https://v2.steemconnect.com/sign/account-witness-vote?witness=good-karma&approve=1) and [@lukestokes](https://v2.steemconnect.com/sign/account-witness-vote?witness=lukestokes.mhth&approve=1) --- > Do you like [SteemitBoard's project](https://steemit.com/@steemitboard)? Then **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| Transaction Info | Block #24084614/Trx f004dbc3ff501a3db6be9a6ca3bbcd759571e008 |
View Raw JSON Data
{
"trx_id": "f004dbc3ff501a3db6be9a6ca3bbcd759571e008",
"block": 24084614,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-11T14:37:27",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "steemitboard",
"permlink": "steemitboard-notify-leordev-20180711t143726000z",
"title": "",
"body": "Congratulations @leordev! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :\n\n[](http://steemitboard.com/@leordev) Award for the number of upvotes received\n\n<sub>_Click on the badge to view your Board of Honor._</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\n\n**Do not miss the last post from @steemitboard:**\n[SteemitBoard World Cup Contest - Croatia vs England](https://steemit.com/steemitboard/@steemitboard/steemitboard-world-cup-contest-croatia-vs-england)\n\n---\n**Participate in the [SteemitBoard World Cup Contest](https://steemit.com/steemitboard/@steemitboard/steemitboard-world-cup-contest-collect-badges-and-win-free-sbd)!**\nCollect World Cup badges and win free SBD\nSupport the Gold Sponsors of the contest: [@good-karma](https://v2.steemconnect.com/sign/account-witness-vote?witness=good-karma&approve=1) and [@lukestokes](https://v2.steemconnect.com/sign/account-witness-vote?witness=lukestokes.mhth&approve=1)\n\n---\n\n> Do you like [SteemitBoard's project](https://steemit.com/@steemitboard)? Then **[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\"]}"
}
]
}kirill-yurkovupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/10 04:03:03
kirill-yurkovupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/10 04:03:03
| voter | kirill-yurkov |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24043135/Trx f402b9af2a6b55d049e54e3a30992658c70a57c2 |
View Raw JSON Data
{
"trx_id": "f402b9af2a6b55d049e54e3a30992658c70a57c2",
"block": 24043135,
"trx_in_block": 42,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-10T04:03:03",
"op": [
"vote",
{
"voter": "kirill-yurkov",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/07/09 21:55:48
2018/07/09 21:55:48
| parent author | mobicfly |
| parent permlink | re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180708t165159657z |
| author | leordev |
| permlink | re-mobicfly-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180709t215547103z |
| title | |
| body | I don't think you will have access to `eosio` account in jungle. change `-p eosio` for `-p youraccount` |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #24035793/Trx 3f819e53229fa95fd2bbde172adcb0b03d198974 |
View Raw JSON Data
{
"trx_id": "3f819e53229fa95fd2bbde172adcb0b03d198974",
"block": 24035793,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T21:55:48",
"op": [
"comment",
{
"parent_author": "mobicfly",
"parent_permlink": "re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180708t165159657z",
"author": "leordev",
"permlink": "re-mobicfly-re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180709t215547103z",
"title": "",
"body": "I don't think you will have access to `eosio` account in jungle. change `-p eosio` for `-p youraccount`",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}safirinupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/09 18:38:18
safirinupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/09 18:38:18
| voter | safirin |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24031845/Trx c8ab92713fd982a702e2e62a4059e053f149ad86 |
View Raw JSON Data
{
"trx_id": "c8ab92713fd982a702e2e62a4059e053f149ad86",
"block": 24031845,
"trx_in_block": 11,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T18:38:18",
"op": [
"vote",
{
"voter": "safirin",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/07/09 12:26:00
2018/07/09 12:26:00
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | johnwilliamson |
| permlink | re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180709t122559667z |
| title | |
| body | Bloody genius, it feels so obvious now! Makes so much sense. |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #24024404/Trx eb5ada2a82a81bcbaa28a93daa164159ab650479 |
View Raw JSON Data
{
"trx_id": "eb5ada2a82a81bcbaa28a93daa164159ab650479",
"block": 24024404,
"trx_in_block": 44,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T12:26:00",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "johnwilliamson",
"permlink": "re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180709t122559667z",
"title": "",
"body": "Bloody genius, it feels so obvious now! Makes so much sense.",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}johnwilliamsonupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/09 12:25:39
johnwilliamsonupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/09 12:25:39
| voter | johnwilliamson |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24024397/Trx e373c446954725a55c812f8681db88c095d114aa |
View Raw JSON Data
{
"trx_id": "e373c446954725a55c812f8681db88c095d114aa",
"block": 24024397,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T12:25:39",
"op": [
"vote",
{
"voter": "johnwilliamson",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}cmichelupvoted (56.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/09 10:49:27
cmichelupvoted (56.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/09 10:49:27
| voter | cmichel |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 5600 (56.00%) |
| Transaction Info | Block #24022474/Trx 2389305aa98db041c44deb7bad62b88cd6fe6948 |
View Raw JSON Data
{
"trx_id": "2389305aa98db041c44deb7bad62b88cd6fe6948",
"block": 24022474,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T10:49:27",
"op": [
"vote",
{
"voter": "cmichel",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 5600
}
]
}2018/07/09 01:47:06
2018/07/09 01:47:06
| parent author | leordev |
| parent permlink | eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet |
| author | joehitt |
| permlink | re-leordev-eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet-20180709t014706600z |
| title | |
| body | Thanks Leo! I had assumed that the token owner always owned the RAM so this caused me to go back and look at eosio.token.cpp. So it looks like in the standard eosio.token, when you get an airdrop, the token contract (party 1) owns the RAM. But if the holder (party 2) then does any other transfer, say to party 3, party 2 is now owns the row of RAM in party 1's multi-index. This is really interesting becuase I did not realize that multi-index had row-level ram ownership. However this party 2 ownership appears to take place only if party 3 did not previously have an entry for that token. If party 3 did own some of ABC token already, then to_acnts.modify is called, in which case the existing RAM owner is maintained. Does this all sound correct? |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #24011629/Trx 802035c66a8134e2a469976248941b9152a277f6 |
View Raw JSON Data
{
"trx_id": "802035c66a8134e2a469976248941b9152a277f6",
"block": 24011629,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T01:47:06",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet",
"author": "joehitt",
"permlink": "re-leordev-eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet-20180709t014706600z",
"title": "",
"body": "Thanks Leo! I had assumed that the token owner always owned the RAM so this caused me to go back and look at eosio.token.cpp. So it looks like in the standard eosio.token, when you get an airdrop, the token contract (party 1) owns the RAM. But if the holder (party 2) then does any other transfer, say to party 3, party 2 is now owns the row of RAM in party 1's multi-index. This is really interesting becuase I did not realize that multi-index had row-level ram ownership. However this party 2 ownership appears to take place only if party 3 did not previously have an entry for that token. If party 3 did own some of ABC token already, then to_acnts.modify is called, in which case the existing RAM owner is maintained. Does this all sound correct?",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}joehittupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet2018/07/09 01:46:48
joehittupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet
2018/07/09 01:46:48
| voter | joehitt |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24011623/Trx 560b9fea7b937b78806600138841eda6dd30a272 |
View Raw JSON Data
{
"trx_id": "560b9fea7b937b78806600138841eda6dd30a272",
"block": 24011623,
"trx_in_block": 24,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T01:46:48",
"op": [
"vote",
{
"voter": "joehitt",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet",
"weight": 10000
}
]
}2018/07/08 16:52:03
2018/07/08 16:52:03
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | mobicfly |
| permlink | re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180708t165159657z |
| title | |
| body | thanks for the tutorial, after deploy the contract, I encountered an error: cleos push action todo addtodo '[1, "estset"]' -p eosio Error 3050000: action exception but no further details about it. I am running this on jungle testnet. is there any possible reason for this? thanks! |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #24000929/Trx 43f7e208ddef6f7de473836d96d5adcb5a9946c6 |
View Raw JSON Data
{
"trx_id": "43f7e208ddef6f7de473836d96d5adcb5a9946c6",
"block": 24000929,
"trx_in_block": 15,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-08T16:52:03",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "mobicfly",
"permlink": "re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180708t165159657z",
"title": "",
"body": "thanks for the tutorial, after deploy the contract, I encountered an error:\ncleos push action todo addtodo '[1, \"estset\"]' -p eosio\nError 3050000: action exception\n\nbut no further details about it. I am running this on jungle testnet. is there any possible reason for this? thanks!",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}javierjmcupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/08 14:00:42
javierjmcupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/08 14:00:42
| voter | javierjmc |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23997502/Trx e9e82f8b0fead753f63d133b42504370b589db54 |
View Raw JSON Data
{
"trx_id": "e9e82f8b0fead753f63d133b42504370b589db54",
"block": 23997502,
"trx_in_block": 29,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-08T14:00:42",
"op": [
"vote",
{
"voter": "javierjmc",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}kwonjs77upvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/08 02:12:27
kwonjs77upvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/08 02:12:27
| voter | kwonjs77 |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23983340/Trx 873c5029f896a114b116e3ec1b7a171c1268590e |
View Raw JSON Data
{
"trx_id": "873c5029f896a114b116e3ec1b7a171c1268590e",
"block": 23983340,
"trx_in_block": 35,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-08T02:12:27",
"op": [
"vote",
{
"voter": "kwonjs77",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/07/07 21:38:36
2018/07/07 21:38:36
| voter | cptnsolo |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-2-tokens-claiming-and-achieving-zero-cost-airdrop |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23977866/Trx f634c473a5ebea0525743701f198d68c547e56f0 |
View Raw JSON Data
{
"trx_id": "f634c473a5ebea0525743701f198d68c547e56f0",
"block": 23977866,
"trx_in_block": 20,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T21:38:36",
"op": [
"vote",
{
"voter": "cptnsolo",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-2-tokens-claiming-and-achieving-zero-cost-airdrop",
"weight": 10000
}
]
}twitteringupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/07 14:27:24
twitteringupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/07 14:27:24
| voter | twittering |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23969245/Trx 7d98a91f81cd630aa47b10ba6dc7c288f526cf69 |
View Raw JSON Data
{
"trx_id": "7d98a91f81cd630aa47b10ba6dc7c288f526cf69",
"block": 23969245,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T14:27:24",
"op": [
"vote",
{
"voter": "twittering",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}eosrioupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/07 14:23:18
eosrioupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/07 14:23:18
| voter | eosrio |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23969163/Trx f6deabf5bf47e8c399a3c3ba663f7140f7697dd8 |
View Raw JSON Data
{
"trx_id": "f6deabf5bf47e8c399a3c3ba663f7140f7697dd8",
"block": 23969163,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T14:23:18",
"op": [
"vote",
{
"voter": "eosrio",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}igorlsupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/07 14:22:45
igorlsupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/07 14:22:45
| voter | igorls |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23969152/Trx 27060e1e4c3c3bf9e79123a3ab251ae9708bd384 |
View Raw JSON Data
{
"trx_id": "27060e1e4c3c3bf9e79123a3ab251ae9708bd384",
"block": 23969152,
"trx_in_block": 16,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T14:22:45",
"op": [
"vote",
{
"voter": "igorls",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}promotedpostsent 0.001 SBD to @leordev- "Hello, our user. We have created a system to deliver the article to more people. Resteem to 14.500+ Followers | @promotedpost Upvote ⏩(3500SP) | Upvote with min +200 Different account | Our post will ..."2018/07/07 13:34:33
promotedpostsent 0.001 SBD to @leordev- "Hello, our user. We have created a system to deliver the article to more people. Resteem to 14.500+ Followers | @promotedpost Upvote ⏩(3500SP) | Upvote with min +200 Different account | Our post will ..."
2018/07/07 13:34:33
| from | promotedpost |
| to | leordev |
| amount | 0.001 SBD |
| memo | Hello, our user. We have created a system to deliver the article to more people. Resteem to 14.500+ Followers | @promotedpost Upvote ⏩(3500SP) | Upvote with min +200 Different account | Our post will be more popular and you will find new friends | Send 1 SBD or 1 STEEM to @promotedpost (URL as memo) Service Active |
| Transaction Info | Block #23968189/Trx 5702d4f8b8f25e1d4cafe5d41f41efe14339330c |
View Raw JSON Data
{
"trx_id": "5702d4f8b8f25e1d4cafe5d41f41efe14339330c",
"block": 23968189,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T13:34:33",
"op": [
"transfer",
{
"from": "promotedpost",
"to": "leordev",
"amount": "0.001 SBD",
"memo": "Hello, our user. We have created a system to deliver the article to more people. Resteem to 14.500+ Followers | @promotedpost Upvote ⏩(3500SP) | Upvote with min +200 Different account | Our post will be more popular and you will find new friends | Send 1 SBD or 1 STEEM to @promotedpost (URL as memo) Service Active"
}
]
}natpupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/07 13:28:45
natpupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/07 13:28:45
| voter | natp |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23968073/Trx 0d1131fd3a2a033f026855e0c139ea2a8f608932 |
View Raw JSON Data
{
"trx_id": "0d1131fd3a2a033f026855e0c139ea2a8f608932",
"block": 23968073,
"trx_in_block": 24,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T13:28:45",
"op": [
"vote",
{
"voter": "natp",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}iftttupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/07 12:53:48
iftttupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/07 12:53:48
| voter | ifttt |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23967374/Trx cb47667a10389b09286b8fdc028c0461fc697297 |
View Raw JSON Data
{
"trx_id": "cb47667a10389b09286b8fdc028c0461fc697297",
"block": 23967374,
"trx_in_block": 44,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T12:53:48",
"op": [
"vote",
{
"voter": "ifttt",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/07/07 12:46:57
2018/07/07 12:46:57
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | natp |
| permlink | re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180707t124352830z |
| title | |
| body | Thank you for this article. I think it will help developers understand that RAM is not the end all be all and there are ways around it. |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #23967237/Trx b5da95f32b34cb7f3f7dff15bc4fa7e9e5ec5ba1 |
View Raw JSON Data
{
"trx_id": "b5da95f32b34cb7f3f7dff15bc4fa7e9e5ec5ba1",
"block": 23967237,
"trx_in_block": 28,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T12:46:57",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "natp",
"permlink": "re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180707t124352830z",
"title": "",
"body": "Thank you for this article. I think it will help developers understand that RAM is not the end all be all and there are ways around it.",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/07/07 12:46:27
2018/07/07 12:46:27
| parent author | leordev |
| parent permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| author | natp |
| permlink | re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180707t124625748z |
| title | |
| body | Thank you for this article. I think it will help developers understand that RAM is not the end all be all and there are ways around it. |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #23967227/Trx 5222e362301e9651534916681591f27c31cdd4c9 |
View Raw JSON Data
{
"trx_id": "5222e362301e9651534916681591f27c31cdd4c9",
"block": 23967227,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T12:46:27",
"op": [
"comment",
{
"parent_author": "leordev",
"parent_permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"author": "natp",
"permlink": "re-leordev-eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3-20180707t124625748z",
"title": "",
"body": "Thank you for this article. I think it will help developers understand that RAM is not the end all be all and there are ways around it.",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}danupvoted (93.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/07 12:46:00
danupvoted (93.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/07 12:46:00
| voter | dan |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 9300 (93.00%) |
| Transaction Info | Block #23967218/Trx 4bc9c6f2da504fda663bdc0b3a24379c968045cc |
View Raw JSON Data
{
"trx_id": "4bc9c6f2da504fda663bdc0b3a24379c968045cc",
"block": 23967218,
"trx_in_block": 20,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T12:46:00",
"op": [
"vote",
{
"voter": "dan",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 9300
}
]
}kesaritoupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/07 12:42:30
kesaritoupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/07 12:42:30
| voter | kesarito |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23967148/Trx 6541378ad30f3373696a94a33da1f54a67f31aa1 |
View Raw JSON Data
{
"trx_id": "6541378ad30f3373696a94a33da1f54a67f31aa1",
"block": 23967148,
"trx_in_block": 32,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T12:42:30",
"op": [
"vote",
{
"voter": "kesarito",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}cmadhupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/07 12:36:36
cmadhupvoted (100.00%) @leordev / eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/07 12:36:36
| voter | cmadh |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23967030/Trx db7cd756c7821eab52ec9a855780fe4648783785 |
View Raw JSON Data
{
"trx_id": "db7cd756c7821eab52ec9a855780fe4648783785",
"block": 23967030,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T12:36:36",
"op": [
"vote",
{
"voter": "cmadh",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 10000
}
]
}2018/07/07 12:33:21
2018/07/07 12:33:21
| voter | luigi-tecnologo |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| weight | 1300 (13.00%) |
| Transaction Info | Block #23966966/Trx 2c3491396d1522788a9f9fff73033bd2929be42b |
View Raw JSON Data
{
"trx_id": "2c3491396d1522788a9f9fff73033bd2929be42b",
"block": 23966966,
"trx_in_block": 35,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T12:33:21",
"op": [
"vote",
{
"voter": "luigi-tecnologo",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"weight": 1300
}
]
}leordevpublished a new post: eos-todo-dapp-free-ram-model-and-state-management-eos-redux-32018/07/07 12:26:39
leordevpublished a new post: eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3
2018/07/07 12:26:39
| parent author | |
| parent permlink | eos |
| author | leordev |
| permlink | eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3 |
| title | EOS Todo Dapp - Free RAM Model and State Management - EOS + Redux = <3 |
| body |  You probably heard about the benefits of working with immutable states. That's the whole base of the blockchain, in ugly words, a big immutable database (decentralized of course). I'm not entering in details of the advantages of immutability, it's already changing the world and you can see it in our lovely EOS blockchain. Now, inspired by the amazing [DecentTwitter FREE RAM Dapp](http://decentwitter.com/) built by @kesarito and also by our outrageous EOS RAM price, I was studying and playing with Free RAM models and what should go inside EOS `multi_index` tables and what does not. ## Functional Programming FTW Working a lot in the last years with functional languages like Elixir and Elm, you have something in common: Immutability. The state is immutable and you actually use functions to update the state. You are not really updating a state, you are always creating a new one as it's immutable. I would like to pick [The Elm Architecture](https://guide.elm-lang.org/architecture/) in this example, as it is the perfect fit for browsers (which I think is the best use case in how to handle a million things running in parallel - and that's what EOS will achieve soon). So this is the Elm Model-View-Update Architecture:  Does it not look like the **EOS Blockchain**?  *My dirty analogy of The Elm Architecture to EOS Blockchain Action/State update flow* Explaining my flow: 1. Actions: an user (or oracle) sign and push an action 2. Update State: this is our smart contract validating and updating the tables **(OPTIONAL!)** 3. Transaction: if your smart contract ran fine a new transaction is generated and added to the next block 4. Everything above on top of EOS Blockchain which is generating blocks (with or without new transactions) Yeah ok, maybe I'm just forcing something here but you will understand what I want to get if you follow me along. ## Optional RAM usage and introducing Redux to handle Data In the above EOS Blockchain actions flow step 2 I said that update table is optional. And indeed it is, check `DecentTwitter` contract actions now: ``` void tweet(std::string msg) {} void reply(std::string id, std::string msg) {} void avatar(std::string msg) {} ``` Fantastic! It just has empty body actions. It does not update any contract table, actually this contract has no table at all. You know what it means? There's no RAM cost. Free RAM Dapp! The question here is: how to extract/generate state and handle the action data for more complex cases like an edit action? That's where I came up with Redux idea to handle the state. Redux was heavily inspired on Elm Architecture and that's why I introduced the whole Elm story above. So what we want to do to have a safe and well-managed immutable state application from the blockchain is: 1. Listen to EOS blockchain actions relevant to our dapp, usually our contract actions only 2. Every time this new action arrives we dispatch a Redux action 3. Redux will handle the state update based on the action I think nothing like a real example to illustrate the case. Let's create a FREE RAM **TO-DO List** Dapp! (cliche...) ## EOS To-Do List Dapp This Dapp should allow us to handle our tasks in a to-do list fashion! ### EOS Smart Contract This is a *twenty-ish* lines contract, super simple: ``` #include <eosiolib/eosio.hpp> using namespace eosio; using std::string; class todo : public eosio::contract { public: todo(account_name self) :eosio::contract(self) {} void addtodo(uint64_t id, string text) {} void edittodo(uint64_t id, string text) {} void toggletodo(uint64_t id) {} }; EOSIO_ABI( todo, (addtodo)(edittodo)(toggletodo) ) ``` The contract has three simple empty body actions: 1. addtodo - allows you to create a new task on your todo list 2. edittodo - allows you to edit a task description on your todo list 3. toggletodo - allows you to mark a task as completed or unmark the completed flag ### Node.js Backend EOS Blockchain Listener with Redux store management Here I will explain how Redux will work and how I came up with this integration. If you can't understand it at all, please check https://redux.js.org/ - the Introduction and Basics chapter, real quick! First step: setup the actions we want to listen from EOS Blockchain, in my case I deployed the above todo contract in an account called `todo` in my single local node: ``` // actions mapping const ACTION_ADD_TODO = 'addtodo' const ACTION_EDIT_TODO = 'edittodo' const ACTION_TOGGLE_TODO = 'toggletodo' const CONTRACT_ACTIONS = [ { account: 'todo', actions: [ACTION_ADD_TODO, ACTION_EDIT_TODO, ACTION_TOGGLE_TODO] } ] ``` Second step: setup our initial state, how we want our store to look like. In our case it's just a simple `todo` list: ``` // state const initialState = { todos: [] } ``` From the above state we will listen the EOS Blockchain actions to decide how to store and manage the data. Third step: setup the application reducer. Reducer (what originates the Redux name) is just a function that takes state and action as arguments, and returns the **next state** of the app. (Note the next state here, it's very important. Remember we are immutable, we don't change anything.) This is the application reducer code: ``` // reducer const appReducer = (state = initialState, action) => { switch (action.type) { case ACTION_ADD_TODO: return addTodoReducer(state, action) case ACTION_EDIT_TODO: return editTodoReducer(state, action) case ACTION_TOGGLE_TODO: return toggleTodoReducer(state, action) default: // return the current state // if the action is unknown return state } } ``` So in the above code we check the action type (action name from EOS) to decide which reducer we will call to update our state, if it's an unknown/not-mapped action it just ignores and returns the same state. Add Todo reducer function - it checks if the id was never used and add to our todo list. Each todo has the fields `id`, `text`, `author` and `completed`: ``` const addTodoReducer = (state, action) => { // check and do not add new todo if this todo id // already exists if (state.todos.filter(todo => todo.id === action.data.id).length > 0) return state const newTodo = { id: action.data.id, text: action.data.text, author: action.authorization[0].actor, completed: false } const newTodos = [ ...state.todos, newTodo ] return { ...state, todos: newTodos } } ``` It's important to note above that we **NEVER** change the current state, we always create and return a new one. We do that because we are, again, immutable. It also allows us to have cool features like time-traveler debug, undo actions etc. Edit todo reducer - here we simply update the text of a todo, ONLY IF the actor for this action is the same as the one that created this todo task: ``` const editTodoReducer = (state, action) => { const updatedTodos = state.todos.map(todo => { if (todo.id === action.data.id && todo.author === action.authorization[0].actor) { return { ...todo, text: action.data.text // update text } } else { return todo } }) return { ...state, todos: updatedTodos } } ``` Toggle todo reducer - same as edit todo, it verifies if the actor is the same as the author of the task, this time it just toggles the `completed` boolean field: ``` const toggleTodoReducer = (state, action) => { const updatedTodos = state.todos.map(todo => { if (todo.id === action.data.id && todo.author === action.authorization[0].actor) { return { ...todo, completed: !todo.completed // toggle boolean } } else { return todo } }) return { ...state, todos: updatedTodos } } ``` Now the only thing left is to initialize the store! Here's the simple code: ``` // initialize redux store const store = createStore(appReducer) // Log the initial state console.log('>>> initial state: \n', store.getState(), '\n\n') // Every time the state changes, log it store.subscribe(() => console.log('>>> updated state: \n', store.getState(), '\n\n') ) ``` Actually only the first couple lines of the code is relevant. I'm just logging the initial state which prints this: ``` >>> initial state: { todos: [] } ``` And subscribing the state which prints the full state each time that we update the state. The cool thing about Redux subscription is that you could use it to serve websockets to dapp users or write to your database, and so on. The possibilities are endless. Finally the last step is to dispatch the Redux actions every time that we have a relevant action. The blockchain listener that I built is not relevant, because you probably have yours already done, but what I'm basically doing is listening to each new block in the chain, checking if it has any transaction inside this block, selecting all the actions of it and finally filtering and dispatching each one to our reducer: ``` const filterAndDispatchAction = (newAction, trxId, block) => { const action = { type: newAction.name, account: newAction.account, authorization: newAction.authorization, data: newAction.data } const subscribed = CONTRACT_ACTIONS.find(item => ( item.account === action.account && item.actions.indexOf(action.type) >= 0 )) if (subscribed) { console.log(`\nDispatching Action from Block ${block} - Trx ${trxId}:\n`, action, '\n\n') store.dispatch(action) } } ``` Remember the initial `CONTRACT_ACTIONS` we created in the beginning of this? Yes, it's finally being used to filter the relevant actions that you want. Also the `store` variable that contains the Redux state handler, is being used to dispatch the action received from the blockchain to our Redux store. This is how everything connects. If everything goes right you will see the following log in the console: ``` Dispatching Action from Block 81 - Trx a57a690978b78b18a3a5b2869d7734eb3da127147f256ff0ff74022f9adabd08: { type: 'addtodo', account: 'todo', authorization: [ { actor: 'eosio', permission: 'active' } ], data: { id: 1, text: 'I need to add a database' } } >>> updated state: { todos: [ { id: 1, text: 'I need to add a database', author: 'eosio', completed: false } ] } ``` ## Playing Todo Dapp using our backend Node.js Redux store application The whole code is in this repository: https://github.com/leordev/eos-redux-todo You can use the blockchain listener idea, it's super simple there and probably needs some polishing. Also I should refactor this code into different files, I just kept it simple with everything inside index.js ### Instructions to Deploy the Contract ``` cleos create account eosio todo OWNERPUBKEY ACTIVEPUBKEY cd eos-redux-todo/todo eosiocpp -o todo.wast todo.cpp eosiocpp -g todo.abi todo.cpp cleos set contract todo ../todo ``` ### Instructions to Init the Nodejs Redux Store Application ``` cd eos-redux-todo npm install node index.js ``` ### Demoing  ## Wrapping it Up That's it folks, that's the best way that I found to handle store management from EOS Blockchain Actions, using Redux which is a very popular and solid tool created by [Dan Abramov](https://twitter.com/dan_abramov) from Facebook team. This is a nice library and has a lot of functionalities out-of-the-box like the subscription, it's easy to implement undo and time-traveling states. It's very mature and you have nice tooling around it like [redux-logger](https://github.com/evgenyrodionov/redux-logger) and [redux-devtools](https://github.com/reduxjs/redux-devtools). The 100% free RAM model is an interesting approach but I think it has some flaws. E.g. the way I'm filtering the editing/toggling in the todo record by author, I think it should be blocked in the EOS chain not allowing the transaction to be created, but actually we don't have a table inside the contract to match the todo ids with the respective authors. So if we have other apps consuming this contract it could wrongly consider that the todo was edited by a bad actor if it does not take care of this very same filter rule that we did in our application. I would love to hear your feedbacks in how you are managing this and your thoughts in this approach. After we have solid progress in this Redux integration and some use cases with standardized actions I could wrap it up in a JS library and integrate with eosjs. That would be nice, just not sure if it makes sense yet. See you all! |
| json metadata | {"tags":["eos","blockchain","smartcontracts","freeram"],"users":["kesarito"],"image":["https://cdn.steemitimages.com/DQmcBeuKJS7Dx29mydRCjYiBYQ8CaC9dKqshseFs23im6BL/image.png","https://cdn.steemitimages.com/DQmd2fKtnS1jPEy7ADQenY5DTNjaKTetxBPnGqPwoL3ixsC/image.png","https://cdn.steemitimages.com/DQmNnAywJKEx34ueW9uPPF6SwGrGcVozEwQkaFMSX2qBrM6/eos-blockchain.png","https://cdn.steemitimages.com/DQmVCf9pvM6xggzMihcCCiMmHBPDhgo2sQki3HnhGrC9bds/eos-redux-demo.gif"],"links":["http://decentwitter.com/","https://guide.elm-lang.org/architecture/","https://redux.js.org/","https://github.com/leordev/eos-redux-todo","https://twitter.com/dan_abramov","https://github.com/evgenyrodionov/redux-logger","https://github.com/reduxjs/redux-devtools"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23966832/Trx f20c1339a03a0dc4a6a5ef82cce05b57331ea20a |
View Raw JSON Data
{
"trx_id": "f20c1339a03a0dc4a6a5ef82cce05b57331ea20a",
"block": 23966832,
"trx_in_block": 22,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T12:26:39",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "leordev",
"permlink": "eos-todo-dapp-free-ram-model-and-state-management-eos-redux-3",
"title": "EOS Todo Dapp - Free RAM Model and State Management - EOS + Redux = <3",
"body": "\n\nYou probably heard about the benefits of working with immutable states. That's the whole base of the blockchain, in ugly words, a big immutable database (decentralized of course). I'm not entering in details of the advantages of immutability, it's already changing the world and you can see it in our lovely EOS blockchain.\n\nNow, inspired by the amazing [DecentTwitter FREE RAM Dapp](http://decentwitter.com/) built by @kesarito and also by our outrageous EOS RAM price, I was studying and playing with Free RAM models and what should go inside EOS `multi_index` tables and what does not.\n\n## Functional Programming FTW\n\nWorking a lot in the last years with functional languages like Elixir and Elm, you have something in common: Immutability. The state is immutable and you actually use functions to update the state. You are not really updating a state, you are always creating a new one as it's immutable.\n\nI would like to pick [The Elm Architecture](https://guide.elm-lang.org/architecture/) in this example, as it is the perfect fit for browsers (which I think is the best use case in how to handle a million things running in parallel - and that's what EOS will achieve soon). So this is the Elm Model-View-Update Architecture:\n\n\n\nDoes it not look like the **EOS Blockchain**?\n\n\n*My dirty analogy of The Elm Architecture to EOS Blockchain Action/State update flow*\n\nExplaining my flow:\n\n1. Actions: an user (or oracle) sign and push an action\n2. Update State: this is our smart contract validating and updating the tables **(OPTIONAL!)**\n3. Transaction: if your smart contract ran fine a new transaction is generated and added to the next block\n4. Everything above on top of EOS Blockchain which is generating blocks (with or without new transactions)\n\nYeah ok, maybe I'm just forcing something here but you will understand what I want to get if you follow me along.\n\n## Optional RAM usage and introducing Redux to handle Data\n\nIn the above EOS Blockchain actions flow step 2 I said that update table is optional. And indeed it is, check `DecentTwitter` contract actions now:\n\n```\n void tweet(std::string msg) {}\n void reply(std::string id, std::string msg) {}\n void avatar(std::string msg) {}\n```\n\nFantastic! It just has empty body actions. It does not update any contract table, actually this contract has no table at all. You know what it means? There's no RAM cost. Free RAM Dapp!\n\nThe question here is: how to extract/generate state and handle the action data for more complex cases like an edit action? That's where I came up with Redux idea to handle the state. Redux was heavily inspired on Elm Architecture and that's why I introduced the whole Elm story above.\n\nSo what we want to do to have a safe and well-managed immutable state application from the blockchain is:\n\n1. Listen to EOS blockchain actions relevant to our dapp, usually our contract actions only\n2. Every time this new action arrives we dispatch a Redux action\n3. Redux will handle the state update based on the action\n\nI think nothing like a real example to illustrate the case. Let's create a FREE RAM **TO-DO List** Dapp! (cliche...)\n\n## EOS To-Do List Dapp\n\nThis Dapp should allow us to handle our tasks in a to-do list fashion!\n\n### EOS Smart Contract\n\nThis is a *twenty-ish* lines contract, super simple:\n\n```\n#include <eosiolib/eosio.hpp>\n\nusing namespace eosio;\nusing std::string;\n\nclass todo : public eosio::contract {\n public:\n todo(account_name self)\n :eosio::contract(self)\n {}\n\n void addtodo(uint64_t id, string text) {}\n void edittodo(uint64_t id, string text) {}\n void toggletodo(uint64_t id) {}\n\n};\n\nEOSIO_ABI( todo, (addtodo)(edittodo)(toggletodo) )\n```\n\nThe contract has three simple empty body actions:\n\n1. addtodo - allows you to create a new task on your todo list\n2. edittodo - allows you to edit a task description on your todo list\n3. toggletodo - allows you to mark a task as completed or unmark the completed flag\n\n### Node.js Backend EOS Blockchain Listener with Redux store management\n\nHere I will explain how Redux will work and how I came up with this integration. If you can't understand it at all, please check https://redux.js.org/ - the Introduction and Basics chapter, real quick!\n\nFirst step: setup the actions we want to listen from EOS Blockchain, in my case I deployed the above todo contract in an account called `todo` in my single local node:\n\n```\n// actions mapping\nconst ACTION_ADD_TODO = 'addtodo'\nconst ACTION_EDIT_TODO = 'edittodo'\nconst ACTION_TOGGLE_TODO = 'toggletodo'\n\nconst CONTRACT_ACTIONS = [\n {\n account: 'todo',\n actions: [ACTION_ADD_TODO, ACTION_EDIT_TODO, ACTION_TOGGLE_TODO]\n }\n]\n```\n\nSecond step: setup our initial state, how we want our store to look like. In our case it's just a simple `todo` list: \n\n```\n// state\nconst initialState = {\n todos: []\n}\n```\n\nFrom the above state we will listen the EOS Blockchain actions to decide how to store and manage the data.\n\nThird step: setup the application reducer. Reducer (what originates the Redux name) is just a function that takes state and action as arguments, and returns the **next state** of the app. (Note the next state here, it's very important. Remember we are immutable, we don't change anything.)\n\nThis is the application reducer code:\n\n```\n// reducer\nconst appReducer = (state = initialState, action) => {\n switch (action.type) {\n case ACTION_ADD_TODO:\n return addTodoReducer(state, action)\n case ACTION_EDIT_TODO:\n return editTodoReducer(state, action)\n case ACTION_TOGGLE_TODO:\n return toggleTodoReducer(state, action)\n default:\n // return the current state\n // if the action is unknown\n return state\n }\n}\n```\n\nSo in the above code we check the action type (action name from EOS) to decide which reducer we will call to update our state, if it's an unknown/not-mapped action it just ignores and returns the same state. \n\nAdd Todo reducer function - it checks if the id was never used and add to our todo list. Each todo has the fields `id`, `text`, `author` and `completed`:\n\n```\nconst addTodoReducer = (state, action) => {\n \n // check and do not add new todo if this todo id\n // already exists\n if (state.todos.filter(todo => todo.id === action.data.id).length > 0)\n return state\n \n const newTodo = {\n id: action.data.id,\n text: action.data.text,\n author: action.authorization[0].actor,\n completed: false\n }\n\n const newTodos = [ ...state.todos, newTodo ]\n\n return { ...state, todos: newTodos }\n}\n```\n\nIt's important to note above that we **NEVER** change the current state, we always create and return a new one. We do that because we are, again, immutable. It also allows us to have cool features like time-traveler debug, undo actions etc.\n\nEdit todo reducer - here we simply update the text of a todo, ONLY IF the actor for this action is the same as the one that created this todo task:\n\n```\nconst editTodoReducer = (state, action) => {\n const updatedTodos = state.todos.map(todo => {\n if (todo.id === action.data.id &&\n todo.author === action.authorization[0].actor) {\n return {\n ...todo,\n text: action.data.text // update text\n }\n } else {\n return todo\n }\n })\n\n return { ...state, todos: updatedTodos }\n}\n```\n\nToggle todo reducer - same as edit todo, it verifies if the actor is the same as the author of the task, this time it just toggles the `completed` boolean field:\n\n```\nconst toggleTodoReducer = (state, action) => {\n const updatedTodos = state.todos.map(todo => {\n if (todo.id === action.data.id &&\n todo.author === action.authorization[0].actor) {\n return {\n ...todo,\n completed: !todo.completed // toggle boolean\n }\n } else {\n return todo\n }\n })\n\n return { ...state, todos: updatedTodos }\n}\n```\n\nNow the only thing left is to initialize the store! Here's the simple code:\n\n```\n// initialize redux store\nconst store = createStore(appReducer)\n\n// Log the initial state\nconsole.log('>>> initial state: \\n', store.getState(), '\\n\\n')\n\n// Every time the state changes, log it\nstore.subscribe(() =>\n console.log('>>> updated state: \\n', store.getState(), '\\n\\n')\n)\n```\n\nActually only the first couple lines of the code is relevant. I'm just logging the initial state which prints this:\n\n```\n>>> initial state:\n { todos: [] }\n```\n\nAnd subscribing the state which prints the full state each time that we update the state. The cool thing about Redux subscription is that you could use it to serve websockets to dapp users or write to your database, and so on. The possibilities are endless.\n\nFinally the last step is to dispatch the Redux actions every time that we have a relevant action. The blockchain listener that I built is not relevant, because you probably have yours already done, but what I'm basically doing is listening to each new block in the chain, checking if it has any transaction inside this block, selecting all the actions of it and finally filtering and dispatching each one to our reducer:\n\n```\nconst filterAndDispatchAction = (newAction, trxId, block) => {\n const action = {\n type: newAction.name,\n account: newAction.account,\n authorization: newAction.authorization,\n data: newAction.data\n }\n\n const subscribed = CONTRACT_ACTIONS.find(item => (\n item.account === action.account &&\n item.actions.indexOf(action.type) >= 0\n ))\n\n if (subscribed) {\n console.log(`\\nDispatching Action from Block ${block} - Trx ${trxId}:\\n`,\n action, '\\n\\n')\n store.dispatch(action)\n }\n\n}\n```\n\nRemember the initial `CONTRACT_ACTIONS` we created in the beginning of this? Yes, it's finally being used to filter the relevant actions that you want.\n\nAlso the `store` variable that contains the Redux state handler, is being used to dispatch the action received from the blockchain to our Redux store. This is how everything connects. If everything goes right you will see the following log in the console:\n\n```\nDispatching Action from Block 81 - Trx a57a690978b78b18a3a5b2869d7734eb3da127147f256ff0ff74022f9adabd08:\n { type: 'addtodo',\n account: 'todo',\n authorization: [ { actor: 'eosio', permission: 'active' } ],\n data: { id: 1, text: 'I need to add a database' } }\n\n\n>>> updated state:\n { todos:\n [ { id: 1,\n text: 'I need to add a database',\n author: 'eosio',\n completed: false } ] }\n```\n\n## Playing Todo Dapp using our backend Node.js Redux store application\n\nThe whole code is in this repository: https://github.com/leordev/eos-redux-todo \n\nYou can use the blockchain listener idea, it's super simple there and probably needs some polishing. Also I should refactor this code into different files, I just kept it simple with everything inside index.js\n\n### Instructions to Deploy the Contract\n\n```\ncleos create account eosio todo OWNERPUBKEY ACTIVEPUBKEY\ncd eos-redux-todo/todo\neosiocpp -o todo.wast todo.cpp\neosiocpp -g todo.abi todo.cpp\ncleos set contract todo ../todo\n```\n\n### Instructions to Init the Nodejs Redux Store Application\n\n```\ncd eos-redux-todo\nnpm install\nnode index.js \n```\n\n### Demoing\n\n\n\n## Wrapping it Up\n\nThat's it folks, that's the best way that I found to handle store management from EOS Blockchain Actions, using Redux which is a very popular and solid tool created by [Dan Abramov](https://twitter.com/dan_abramov) from Facebook team. This is a nice library and has a lot of functionalities out-of-the-box like the subscription, it's easy to implement undo and time-traveling states. It's very mature and you have nice tooling around it like [redux-logger](https://github.com/evgenyrodionov/redux-logger) and [redux-devtools](https://github.com/reduxjs/redux-devtools).\n\nThe 100% free RAM model is an interesting approach but I think it has some flaws. E.g. the way I'm filtering the editing/toggling in the todo record by author, I think it should be blocked in the EOS chain not allowing the transaction to be created, but actually we don't have a table inside the contract to match the todo ids with the respective authors. So if we have other apps consuming this contract it could wrongly consider that the todo was edited by a bad actor if it does not take care of this very same filter rule that we did in our application.\n\nI would love to hear your feedbacks in how you are managing this and your thoughts in this approach. After we have solid progress in this Redux integration and some use cases with standardized actions I could wrap it up in a JS library and integrate with eosjs. That would be nice, just not sure if it makes sense yet. See you all!",
"json_metadata": "{\"tags\":[\"eos\",\"blockchain\",\"smartcontracts\",\"freeram\"],\"users\":[\"kesarito\"],\"image\":[\"https://cdn.steemitimages.com/DQmcBeuKJS7Dx29mydRCjYiBYQ8CaC9dKqshseFs23im6BL/image.png\",\"https://cdn.steemitimages.com/DQmd2fKtnS1jPEy7ADQenY5DTNjaKTetxBPnGqPwoL3ixsC/image.png\",\"https://cdn.steemitimages.com/DQmNnAywJKEx34ueW9uPPF6SwGrGcVozEwQkaFMSX2qBrM6/eos-blockchain.png\",\"https://cdn.steemitimages.com/DQmVCf9pvM6xggzMihcCCiMmHBPDhgo2sQki3HnhGrC9bds/eos-redux-demo.gif\"],\"links\":[\"http://decentwitter.com/\",\"https://guide.elm-lang.org/architecture/\",\"https://redux.js.org/\",\"https://github.com/leordev/eos-redux-todo\",\"https://twitter.com/dan_abramov\",\"https://github.com/evgenyrodionov/redux-logger\",\"https://github.com/reduxjs/redux-devtools\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/07/07 11:19:57
2018/07/07 11:19:57
| voter | drop-bear-beryl |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-2-tokens-claiming-and-achieving-zero-cost-airdrop |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23965498/Trx f31a2b45b7a7a6ece25eb1c291b2e6b2a638fc9a |
View Raw JSON Data
{
"trx_id": "f31a2b45b7a7a6ece25eb1c291b2e6b2a638fc9a",
"block": 23965498,
"trx_in_block": 29,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T11:19:57",
"op": [
"vote",
{
"voter": "drop-bear-beryl",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-2-tokens-claiming-and-achieving-zero-cost-airdrop",
"weight": 10000
}
]
}2018/07/07 10:50:09
2018/07/07 10:50:09
| delegator | steem |
| delegatee | leordev |
| vesting shares | 17886.254596 VESTS |
| Transaction Info | Block #23964902/Trx 9f6d9dc633936dadff89624ae59d706fa7f50e6f |
View Raw JSON Data
{
"trx_id": "9f6d9dc633936dadff89624ae59d706fa7f50e6f",
"block": 23964902,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T10:50:09",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "leordev",
"vesting_shares": "17886.254596 VESTS"
}
]
}leordevclaimed reward balance: 2.701 STEEM, 4.037 SBD, 6.620 SP2018/07/07 09:16:24
leordevclaimed reward balance: 2.701 STEEM, 4.037 SBD, 6.620 SP
2018/07/07 09:16:24
| account | leordev |
| reward steem | 2.701 STEEM |
| reward sbd | 4.037 SBD |
| reward vests | 10779.484162 VESTS |
| Transaction Info | Block #23963027/Trx a3bce3ca4965120f42ddd9d1898b023c2cba84e6 |
View Raw JSON Data
{
"trx_id": "a3bce3ca4965120f42ddd9d1898b023c2cba84e6",
"block": 23963027,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-07T09:16:24",
"op": [
"claim_reward_balance",
{
"account": "leordev",
"reward_steem": "2.701 STEEM",
"reward_sbd": "4.037 SBD",
"reward_vests": "10779.484162 VESTS"
}
]
}muguikaupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet2018/07/04 00:29:51
muguikaupvoted (100.00%) @leordev / eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet
2018/07/04 00:29:51
| voter | muguika |
| author | leordev |
| permlink | eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23866226/Trx 4c5177b5c11457d4ca47cca3777719efad8bec70 |
View Raw JSON Data
{
"trx_id": "4c5177b5c11457d4ca47cca3777719efad8bec70",
"block": 23866226,
"trx_in_block": 11,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-04T00:29:51",
"op": [
"vote",
{
"voter": "muguika",
"author": "leordev",
"permlink": "eos-ram-and-bandwith-analysis-airdropping-steps-on-junglenet",
"weight": 10000
}
]
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress3.46%
{
"voting_manabar": {
"current_mana": "18183813033",
"last_update_time": 1588939299
},
"downvote_manabar": {
"current_mana": "4545953258",
"last_update_time": 1588939299
},
"rc_account": {
"account": "leordev",
"rc_manabar": {
"current_mana": "22218546148",
"last_update_time": 1588939299
},
"max_rc_creation_adjustment": {
"amount": "2020748973",
"precision": 6,
"nai": "@@000000037"
},
"max_rc": "20204562006"
}
}Account Metadata
| POSTING JSON METADATA | |
| profile | {"profile_image":"https://leordev.github.io/assets/img/leo.jpg","cover_image":"https://nofilmschool.com/sites/default/files/styles/article_wide/public/ideas_0.jpg","name":"Leo","about":"Fullstack developer that loves to learn new stuff and code - felt in love with functional programming and blockchain!","location":"Fort Lauderdale, FL","website":"https://leordev.github.io/"} |
| JSON METADATA | |
| profile | {"profile_image":"https://leordev.github.io/assets/img/leo.jpg","cover_image":"https://nofilmschool.com/sites/default/files/styles/article_wide/public/ideas_0.jpg","name":"Leo","about":"Fullstack developer that loves to learn new stuff and code - felt in love with functional programming and blockchain!","location":"Fort Lauderdale, FL","website":"https://leordev.github.io/"} |
{
"posting_json_metadata": {
"profile": {
"profile_image": "https://leordev.github.io/assets/img/leo.jpg",
"cover_image": "https://nofilmschool.com/sites/default/files/styles/article_wide/public/ideas_0.jpg",
"name": "Leo",
"about": "Fullstack developer that loves to learn new stuff and code - felt in love with functional programming and blockchain!",
"location": "Fort Lauderdale, FL",
"website": "https://leordev.github.io/"
}
},
"json_metadata": {
"profile": {
"profile_image": "https://leordev.github.io/assets/img/leo.jpg",
"cover_image": "https://nofilmschool.com/sites/default/files/styles/article_wide/public/ideas_0.jpg",
"name": "Leo",
"about": "Fullstack developer that loves to learn new stuff and code - felt in love with functional programming and blockchain!",
"location": "Fort Lauderdale, FL",
"website": "https://leordev.github.io/"
}
}
}Auth Keys
Owner
Single Signature
Public Keys
STM5XZkQwa6kNaHa2cSPCm1Ydi67EwWnUC3nWRnyUDEiYh5pBt7yE1/1
Active
Single Signature
Public Keys
STM7H2cEPZCiQ6PTL5xJr33Tc8f749MS2XY6moYxaFPeiTjPL21391/1
Posting
Single Signature
Public Keys
STM8NYeHMANZcNutqhHdKDjgHn4BU67WhWYYz61gSWiQ9t7hth7Aw1/1
App Permissions
@busy.app1/1
Memo
STM7beLUTtcgzBcNDUGLhbHWvTz4bhGthHW3i4SXdoxn2fUBk3BkS
{
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5XZkQwa6kNaHa2cSPCm1Ydi67EwWnUC3nWRnyUDEiYh5pBt7yE",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7H2cEPZCiQ6PTL5xJr33Tc8f749MS2XY6moYxaFPeiTjPL2139",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [
[
"busy.app",
1
]
],
"key_auths": [
[
"STM8NYeHMANZcNutqhHdKDjgHn4BU67WhWYYz61gSWiQ9t7hth7Aw",
1
]
]
},
"memo": "STM7beLUTtcgzBcNDUGLhbHWvTz4bhGthHW3i4SXdoxn2fUBk3BkS"
}Witness Votes
0 / 30
No active witness votes.
[]